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

📄 itmunit.pas

📁 翎风世界..传奇服务端..DELPHI源代码 包括DBServer,LogDataServer,LoginGate,LoginSrv,M2Server等..内容齐全.
💻 PAS
📖 第 1 页 / 共 3 页
字号:

          nUpgrade:=GetRandomRange(g_Config.nNeckLace19DCAddValueMaxLimit{6},g_Config.nNeckLace19DCAddValueRate{20});
          if Random(g_Config.nNeckLace19DCAddRate{30}) = 0 then UserItem.btValue[2]:=nUpgrade + 1;
          nUpgrade:=GetRandomRange(g_Config.nNeckLace19MCAddValueMaxLimit{6},g_Config.nNeckLace19MCAddValueRate{20});
          if Random(g_Config.nNeckLace19MCAddRate{30}) = 0 then UserItem.btValue[3]:=nUpgrade + 1;
          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);
          Inc(AddAbility.wMP,AC2);
          Inc(AddAbility.btUnLuck,MAC);
          Inc(AddAbility.btLuck,MAC2);
        end;
        20,24: begin //004C0FF0
          Inc(AddAbility.wHitPoint,AC2);

⌨️ 快捷键说明

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