⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 itmunit.pas

📁 原版翎风(LF)引擎(M2)源码(Delphi)
💻 PAS
📖 第 1 页 / 共 3 页
字号:
              nUpgrade := GetRandomRange(g_Config.nNeckLace19SCAddValueMaxLimit {6}, g_Config.nNeckLace19SCAddValueRate {20});
              if Random(g_Config.nNeckLace19SCAddRate {30}) = 0 then UserItem.btValue[4] := nUpgrade + 1;
              nUpgrade := GetRandomRange(6, 10);
              if Random(4) < 3 then
              begin
                nVal := (nUpgrade + 1) * 1000;
                UserItem.DuraMax := _MIN(65000, UserItem.DuraMax + nVal);
                UserItem.Dura := _MIN(65000, UserItem.Dura + nVal);
              end;
            end;
          22:
            begin
              nUpgrade := GetRandomRange(g_Config.nRing22DCAddValueMaxLimit {6}, g_Config.nRing22DCAddValueRate {20});
              if Random(g_Config.nRing22DCAddRate {30}) = 0 then UserItem.btValue[2] := nUpgrade + 1;
              nUpgrade := GetRandomRange(g_Config.nRing22MCAddValueMaxLimit {6}, g_Config.nRing22MCAddValueRate {20});
              if Random(g_Config.nRing22MCAddRate {30}) = 0 then UserItem.btValue[3] := nUpgrade + 1;
              nUpgrade := GetRandomRange(g_Config.nRing22SCAddValueMaxLimit {6}, g_Config.nRing22SCAddValueRate {20});
              if Random(g_Config.nRing22SCAddRate {30}) = 0 then UserItem.btValue[4] := nUpgrade + 1;
              nUpgrade := GetRandomRange(6, 12);
              if Random(4) < 3 then
              begin
                nVal := (nUpgrade + 1) * 1000;
                UserItem.DuraMax := _MIN(65000, UserItem.DuraMax + nVal);
                UserItem.Dura := _MIN(65000, UserItem.Dura + nVal);
              end;
            end;
          23:
            begin
              nUpgrade := GetRandomRange(6, 20);
              if Random(40) = 0 then UserItem.btValue[0] := nUpgrade + 1;
              nUpgrade := GetRandomRange(6, 20);
              if Random(40) = 0 then UserItem.btValue[1] := nUpgrade + 1;
              nUpgrade := GetRandomRange(g_Config.nRing23DCAddValueMaxLimit {6}, g_Config.nRing23DCAddValueRate {20});
              if Random(g_Config.nRing23DCAddRate {30}) = 0 then UserItem.btValue[2] := nUpgrade + 1;
              nUpgrade := GetRandomRange(g_Config.nRing23MCAddValueMaxLimit {6}, g_Config.nRing23MCAddValueRate {20});
              if Random(g_Config.nRing23MCAddRate {30}) = 0 then UserItem.btValue[3] := nUpgrade + 1;
              nUpgrade := GetRandomRange(g_Config.nRing23SCAddValueMaxLimit {6}, g_Config.nRing23SCAddValueRate {20});
              if Random(g_Config.nRing23SCAddRate {30}) = 0 then UserItem.btValue[4] := nUpgrade + 1;
              nUpgrade := GetRandomRange(6, 12);
              if Random(4) < 3 then
              begin
                nVal := (nUpgrade + 1) * 1000;
                UserItem.DuraMax := _MIN(65000, UserItem.DuraMax + nVal);
                UserItem.Dura := _MIN(65000, UserItem.Dura + nVal);
              end;
            end;
          15:
            begin
              nUpgrade := GetRandomRange(6, 20);
              if Random(40) = 0 then UserItem.btValue[0] := nUpgrade + 1;
              nUpgrade := GetRandomRange(6, 20);
              if Random(30) = 0 then UserItem.btValue[1] := nUpgrade + 1;
              nUpgrade := GetRandomRange(g_Config.nHelMetDCAddValueMaxLimit {6}, g_Config.nHelMetDCAddValueRate {20});
              if Random(g_Config.nHelMetDCAddRate {30}) = 0 then UserItem.btValue[2] := nUpgrade + 1;
              nUpgrade := GetRandomRange(g_Config.nHelMetMCAddValueMaxLimit {6}, g_Config.nHelMetMCAddValueRate {20});
              if Random(g_Config.nHelMetMCAddRate {30}) = 0 then UserItem.btValue[3] := nUpgrade + 1;
              nUpgrade := GetRandomRange(g_Config.nHelMetSCAddValueMaxLimit {6}, g_Config.nHelMetSCAddValueRate {20});
              if Random(g_Config.nHelMetSCAddRate {30}) = 0 then UserItem.btValue[4] := nUpgrade + 1;
              nUpgrade := GetRandomRange(6, 12);
              if Random(4) < 3 then
              begin
                nVal := (nUpgrade + 1) * 1000;
                UserItem.DuraMax := _MIN(65000, UserItem.DuraMax + nVal);
                UserItem.Dura := _MIN(65000, UserItem.Dura + nVal);
              end;
            end;
        end;
      end;
  end;
end;

procedure TItem.RandomUpgradeUnknownItem(UserItem: pTUserItem);
var
  nUpgrade, nRandPoint, nVal: Integer;
begin
  case ItemType of
    ITEM_WEAPON:
      begin

      end;
    ITEM_ARMOR:
      begin

      end;
    ITEM_ACCESSORY:
      begin
        case StdMode of
          15:
            begin
              nRandPoint := {GetRandomRange(4,3) + GetRandomRange(4,8) + } GetRandomRange(g_Config.nUnknowHelMetACAddValueMaxLimit {4}, g_Config.nUnknowHelMetACAddRate {20});
              if nRandPoint > 0 then UserItem.btValue[0] := nRandPoint;
              nUpgrade := nRandPoint;
              nRandPoint := {GetRandomRange(4,3) + GetRandomRange(4,8) + } GetRandomRange(g_Config.nUnknowHelMetMACAddValueMaxLimit {4}, g_Config.nUnknowHelMetMACAddRate {20});
              if nRandPoint > 0 then UserItem.btValue[1] := nRandPoint;
              Inc(nUpgrade, nRandPoint);
              nRandPoint := {GetRandomRange(3,15) + } GetRandomRange(g_Config.nUnknowHelMetDCAddValueMaxLimit {3}, g_Config.nUnknowHelMetDCAddRate {30});
              if nRandPoint > 0 then UserItem.btValue[2] := nRandPoint;
              Inc(nUpgrade, nRandPoint);
              nRandPoint := {GetRandomRange(3,15) + } GetRandomRange(g_Config.nUnknowHelMetMCAddValueMaxLimit {3}, g_Config.nUnknowHelMetMCAddRate {30});
              if nRandPoint > 0 then UserItem.btValue[3] := nRandPoint;
              Inc(nUpgrade, nRandPoint);
              nRandPoint := {GetRandomRange(3,15) + } GetRandomRange(g_Config.nUnknowHelMetSCAddValueMaxLimit {3}, g_Config.nUnknowHelMetSCAddRate {30});
              if nRandPoint > 0 then UserItem.btValue[4] := nRandPoint;
              Inc(nUpgrade, nRandPoint);
              nRandPoint := GetRandomRange(6, 30);
              if nRandPoint > 0 then
              begin
                nVal := (nRandPoint + 1) * 1000;
                UserItem.DuraMax := _MIN(65000, UserItem.DuraMax + nVal);
                UserItem.Dura := _MIN(65000, UserItem.Dura + nVal);
              end;
              if Random(30) = 0 then UserItem.btValue[7] := 1;
              UserItem.btValue[8] := 1;
              if nUpgrade >= 3 then
              begin
                if UserItem.btValue[0] >= 5 then
                begin
                  UserItem.btValue[5] := 1;
                  UserItem.btValue[6] := UserItem.btValue[0] * 3 + 25;
                  Exit;
                end;
                if UserItem.btValue[2] >= 2 then
                begin
                  UserItem.btValue[5] := 1;
                  UserItem.btValue[6] := UserItem.btValue[2] * 4 + 35;
                  Exit;
                end;
                if UserItem.btValue[3] >= 2 then
                begin
                  UserItem.btValue[5] := 2;
                  UserItem.btValue[6] := UserItem.btValue[3] * 2 + 18;
                  Exit;
                end;
                if UserItem.btValue[4] >= 2 then
                begin
                  UserItem.btValue[5] := 3;
                  UserItem.btValue[6] := UserItem.btValue[4] * 2 + 18;
                  Exit;
                end;
                UserItem.btValue[6] := nUpgrade * 2 + 18;
              end;
            end;
          22, 23:
            begin
              nRandPoint := {GetRandomRange(4,3) + GetRandomRange(4,8) + } GetRandomRange(g_Config.nUnknowRingACAddValueMaxLimit {6}, g_Config.nUnknowRingACAddRate {20});
              if nRandPoint > 0 then UserItem.btValue[0] := nRandPoint;
              nUpgrade := nRandPoint;
              nRandPoint := {GetRandomRange(4,3) + GetRandomRange(4,8) + } GetRandomRange(g_Config.nUnknowRingMACAddValueMaxLimit {6}, g_Config.nUnknowRingMACAddRate {20});
              if nRandPoint > 0 then UserItem.btValue[1] := nRandPoint;
              Inc(nUpgrade, nRandPoint);
          // 以上二项为增加项,增加防,及魔防

              nRandPoint := {GetRandomRange(4,3) + GetRandomRange(4,8) + } GetRandomRange(g_Config.nUnknowRingDCAddValueMaxLimit {6}, g_Config.nUnknowRingDCAddRate {20});
              if nRandPoint > 0 then UserItem.btValue[2] := nRandPoint;
              Inc(nUpgrade, nRandPoint);
              nRandPoint := {GetRandomRange(4,3) + GetRandomRange(4,8) + } GetRandomRange(g_Config.nUnknowRingMCAddValueMaxLimit {6}, g_Config.nUnknowRingMCAddRate {20});
              if nRandPoint > 0 then UserItem.btValue[3] := nRandPoint;
              Inc(nUpgrade, nRandPoint);
              nRandPoint := {GetRandomRange(4,3) + GetRandomRange(4,8) + } GetRandomRange(g_Config.nUnknowRingSCAddValueMaxLimit {6}, g_Config.nUnknowRingSCAddRate {20});
              if nRandPoint > 0 then UserItem.btValue[4] := nRandPoint;
              Inc(nUpgrade, nRandPoint);
              nRandPoint := GetRandomRange(6, 30);
              if nRandPoint > 0 then
              begin
                nVal := (nRandPoint + 1) * 1000;
                UserItem.DuraMax := _MIN(65000, UserItem.DuraMax + nVal);
                UserItem.Dura := _MIN(65000, UserItem.Dura + nVal);
              end;
              if Random(30) = 0 then UserItem.btValue[7] := 1;
              UserItem.btValue[8] := 1;
              if nUpgrade >= 3 then
              begin
                if UserItem.btValue[2] >= 3 then
                begin
                  UserItem.btValue[5] := 1;
                  UserItem.btValue[6] := UserItem.btValue[2] * 3 + 25;
                  Exit;
                end;
                if UserItem.btValue[3] >= 3 then
                begin
                  UserItem.btValue[5] := 2;
                  UserItem.btValue[6] := UserItem.btValue[3] * 2 + 18;
                  Exit;
                end;
                if UserItem.btValue[4] >= 3 then
                begin
                  UserItem.btValue[5] := 3;
                  UserItem.btValue[6] := UserItem.btValue[4] * 2 + 18;
                  Exit;
                end;
                UserItem.btValue[6] := nUpgrade * 2 + 18;
              end;
            end;
          24, 26:
            begin
              nRandPoint := {GetRandomRange(3,5) + } GetRandomRange(g_Config.nUnknowNecklaceACAddValueMaxLimit {5}, g_Config.nUnknowNecklaceACAddRate {20});
              if nRandPoint > 0 then UserItem.btValue[0] := nRandPoint;
              nUpgrade := nRandPoint;
              nRandPoint := {GetRandomRange(3,5) + } GetRandomRange(g_Config.nUnknowNecklaceMACAddValueMaxLimit {5}, g_Config.nUnknowNecklaceMACAddRate {20});
              if nRandPoint > 0 then UserItem.btValue[1] := nRandPoint;
              Inc(nUpgrade, nRandPoint);
              nRandPoint := {GetRandomRange(3,15) + } GetRandomRange(g_Config.nUnknowNecklaceDCAddValueMaxLimit {5}, g_Config.nUnknowNecklaceDCAddRate {30});
              if nRandPoint > 0 then UserItem.btValue[2] := nRandPoint;
              Inc(nUpgrade, nRandPoint);
              nRandPoint := {GetRandomRange(3,15) + } GetRandomRange(g_Config.nUnknowNecklaceMCAddValueMaxLimit {5}, g_Config.nUnknowNecklaceMCAddRate {30});
              if nRandPoint > 0 then UserItem.btValue[3] := nRandPoint;
              Inc(nUpgrade, nRandPoint);
              nRandPoint := {GetRandomRange(3,15) + } GetRandomRange(g_Config.nUnknowNecklaceSCAddValueMaxLimit {5}, g_Config.nUnknowNecklaceSCAddRate {30});
              if nRandPoint > 0 then UserItem.btValue[4] := nRandPoint;
              Inc(nUpgrade, nRandPoint);
              nRandPoint := GetRandomRange(6, 30);
              if nRandPoint > 0 then
              begin
                nVal := (nRandPoint + 1) * 1000;
                UserItem.DuraMax := _MIN(65000, UserItem.DuraMax + nVal);
                UserItem.Dura := _MIN(65000, UserItem.Dura + nVal);
              end;
              if Random(30) = 0 then UserItem.btValue[7] := 1;
              UserItem.btValue[8] := 1;
              if nUpgrade >= 2 then
              begin
                if UserItem.btValue[0] >= 3 then
                begin
                  UserItem.btValue[5] := 1;
                  UserItem.btValue[6] := UserItem.btValue[0] * 3 + 25;
                  Exit;
                end;
                if UserItem.btValue[2] >= 2 then
                begin
                  UserItem.btValue[5] := 1;
                  UserItem.btValue[6] := UserItem.btValue[2] * 3 + 30;
                  Exit;
                end;
                if UserItem.btValue[3] >= 2 then
                begin
                  UserItem.btValue[5] := 2;
                  UserItem.btValue[6] := UserItem.btValue[3] * 2 + 20;
                  Exit;
                end;
                if UserItem.btValue[4] >= 2 then
                begin
                  UserItem.btValue[5] := 3;
                  UserItem.btValue[6] := UserItem.btValue[4] * 2 + 20;
                  Exit;
                end;
                UserItem.btValue[6] := nUpgrade * 2 + 18;
              end;
            end;
        end;
      end;
  end;
end;

procedure TItem.ApplyItemParameters(var AddAbility: TAddAbility);
begin
  case ItemType of
    ITEM_WEAPON:
      begin
        Inc(AddAbility.wHitPoint, AC2);
        if MAC2 > 10 then
        begin
          Inc(AddAbility.nHitSpeed, MAC2 - 10);
        end else
        begin
          Dec(AddAbility.nHitSpeed, MAC2);
        end;
        Inc(AddAbility.btLuck, AC);
        Inc(AddAbility.btUnLuck, MAC);
      end;
    ITEM_ARMOR:
      begin
        AddAbility.wAC := MakeLong(LoWord(AddAbility.wAC) + AC, HiWord(AddAbility.wAC) + AC2);
        AddAbility.wMAC := MakeLong(LoWord(AddAbility.wMAC) + MAC, HiWord(AddAbility.wMAC) + MAC2);

        Inc(AddAbility.btLuck, LoByte(Source));
        Inc(AddAbility.btUnLuck, Hibyte(Source));
      end;
    ITEM_ACCESSORY:
      begin
        case StdMode of
          19:
            begin
              Inc(AddAbility.wAntiMagic, AC2);
              Inc(AddAbility.btUnLuck, MAC);
              Inc(AddAbility.btLuck, MAC2);
            end;
          53:
            begin //新加物品属性
              if g_Config.boAddUserItemNewValue then
              begin
                Inc(AddAbility.wAntiMagic, AC2);
                Inc(AddAbility.btUnLuck, MAC);
                Inc(AddAbility.btLuck, MAC2);
              end else
              begin
                AddAbility.wAC := MakeLong(LoWord(AddAbility.wAC) + AC, HiWord(AddAbility.wAC) + AC2);
                AddAbility.wMAC := MakeLong(LoWord(AddAbility.wMAC) + MAC, HiWord(AddAbility.wMAC) + MAC2);
              end;
            end;
          63:
            begin //Charm
              Inc(AddAbility.wHP, AC);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -