📄 itmunit.~pas
字号:
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]:=n14 * 2 + 18;
end;
end;
procedure TItemUnit.UnknowRing(UserItem: pTUserItem);//00495500 神秘戒指
var
nC,n10,n14:Integer;
begin
n10:={GetRandomRange(4,3) + GetRandomRange(4,8) + }GetRandomRange(g_Config.nUnknowRingACAddValueMaxLimit{6},g_Config.nUnknowRingACAddRate{20});
if n10 > 0 then UserItem.btValue[0]:=n10;
n14:=n10;
n10:={GetRandomRange(4,3) + GetRandomRange(4,8) + }GetRandomRange(g_Config.nUnknowRingMACAddValueMaxLimit{6},g_Config.nUnknowRingMACAddRate{20});
if n10 > 0 then UserItem.btValue[1]:=n10;
Inc(n14,n10);
// 以上二项为增加项,增加防,及魔防
n10:={GetRandomRange(4,3) + GetRandomRange(4,8) + }GetRandomRange(g_Config.nUnknowRingDCAddValueMaxLimit{6},g_Config.nUnknowRingDCAddRate{20});
if n10 > 0 then UserItem.btValue[2]:=n10;
Inc(n14,n10);
n10:={GetRandomRange(4,3) + GetRandomRange(4,8) + }GetRandomRange(g_Config.nUnknowRingMCAddValueMaxLimit{6},g_Config.nUnknowRingMCAddRate{20});
if n10 > 0 then UserItem.btValue[3]:=n10;
Inc(n14,n10);
n10:={GetRandomRange(4,3) + GetRandomRange(4,8) + }GetRandomRange(g_Config.nUnknowRingSCAddValueMaxLimit{6},g_Config.nUnknowRingSCAddRate{20});
if n10 > 0 then UserItem.btValue[4]:=n10;
Inc(n14,n10);
n10:=GetRandomRange(6,30);
if n10 > 0 then begin
nC:=(n10 + 1) * 1000;
UserItem.DuraMax:=_MIN(65000,UserItem.DuraMax + nC);
UserItem.Dura:=_MIN(65000,UserItem.Dura + nC);
end;
if Random(30) = 0 then UserItem.btValue[7]:=1;
UserItem.btValue[8]:=1;
if n14 >= 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]:=n14 * 2 + 18;
end;
end;
procedure TItemUnit.UnknowNecklace(UserItem: pTUserItem);//00495704 神秘腰带
var
nC,n10,n14:Integer;
begin
n10:={GetRandomRange(3,5) + }GetRandomRange(g_Config.nUnknowNecklaceACAddValueMaxLimit{5},g_Config.nUnknowNecklaceACAddRate{20});
if n10 > 0 then UserItem.btValue[0]:=n10;
n14:=n10;
n10:={GetRandomRange(3,5) + }GetRandomRange(g_Config.nUnknowNecklaceMACAddValueMaxLimit{5},g_Config.nUnknowNecklaceMACAddRate{20});
if n10 > 0 then UserItem.btValue[1]:=n10;
Inc(n14,n10);
n10:={GetRandomRange(3,15) + }GetRandomRange(g_Config.nUnknowNecklaceDCAddValueMaxLimit{5},g_Config.nUnknowNecklaceDCAddRate{30});
if n10 > 0 then UserItem.btValue[2]:=n10;
Inc(n14,n10);
n10:={GetRandomRange(3,15) + }GetRandomRange(g_Config.nUnknowNecklaceMCAddValueMaxLimit{5},g_Config.nUnknowNecklaceMCAddRate{30});
if n10 > 0 then UserItem.btValue[3]:=n10;
Inc(n14,n10);
n10:={GetRandomRange(3,15) + }GetRandomRange(g_Config.nUnknowNecklaceSCAddValueMaxLimit{5},g_Config.nUnknowNecklaceSCAddRate{30});
if n10 > 0 then UserItem.btValue[4]:=n10;
Inc(n14,n10);
n10:=GetRandomRange(6,30);
if n10 > 0 then begin
nC:=(n10 + 1) * 1000;
UserItem.DuraMax:=_MIN(65000,UserItem.DuraMax + nC);
UserItem.Dura:=_MIN(65000,UserItem.Dura + nC);
end;
if Random(30) = 0 then UserItem.btValue[7]:=1;
UserItem.btValue[8]:=1;
if n14 >= 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]:=n14 * 2 + 18;
end;
end;
procedure TItemUnit.GetItemAddValue(UserItem: pTUserItem;var StdItem:TStdItem);//00495974
begin
case StdItem.StdMode of
5,6: begin //004959D6
StdItem.DC:=MakeLong(LoWord(StdItem.DC),HiWord(StdItem.DC) + UserItem.btValue[0]);
StdItem.MC:=MakeLong(LoWord(StdItem.MC),HiWord(StdItem.MC) + UserItem.btValue[1]);
StdItem.SC:=MakeLong(LoWord(StdItem.SC),HiWord(StdItem.SC) + UserItem.btValue[2]);
StdItem.AC:=MakeLong(LoWord(StdItem.AC) + UserItem.btValue[3],HiWord(StdItem.AC) + UserItem.btValue[5]);
StdItem.MAC:=MakeLong(LoWord(StdItem.MAC) + UserItem.btValue[4],HiWord(StdItem.MAC) + UserItem.btValue[6]);
if Byte(UserItem.btValue[7] - 1) < 10 then begin //神圣
StdItem.Source:=UserItem.btValue[7];
end;
if UserItem.btValue[10] <> 0 then
StdItem.Reserved:=StdItem.Reserved or 1;
end;
10,11: begin
StdItem.AC:=MakeLong(LoWord(StdItem.AC),HiWord(StdItem.AC) + UserItem.btValue[0]);
StdItem.MAC:=MakeLong(LoWord(StdItem.MAC),HiWord(StdItem.MAC) + UserItem.btValue[1]);
StdItem.DC:=MakeLong(LoWord(StdItem.DC),HiWord(StdItem.DC) + UserItem.btValue[2]);
StdItem.MC:=MakeLong(LoWord(StdItem.MC),HiWord(StdItem.MC) + UserItem.btValue[3]);
StdItem.SC:=MakeLong(LoWord(StdItem.SC),HiWord(StdItem.SC) + UserItem.btValue[4]);
end;
15,19,20,21,22,23,24,26: begin
StdItem.AC:=MakeLong(LoWord(StdItem.AC),HiWord(StdItem.AC) + UserItem.btValue[0]);
StdItem.MAC:=MakeLong(LoWord(StdItem.MAC),HiWord(StdItem.MAC) + UserItem.btValue[1]);
StdItem.DC:=MakeLong(LoWord(StdItem.DC),HiWord(StdItem.DC) + UserItem.btValue[2]);
StdItem.MC:=MakeLong(LoWord(StdItem.MC),HiWord(StdItem.MC) + UserItem.btValue[3]);
StdItem.SC:=MakeLong(LoWord(StdItem.SC),HiWord(StdItem.SC) + UserItem.btValue[4]);
if UserItem.btValue[5] > 0 then begin
StdItem.Need:=UserItem.btValue[5];
end;
if UserItem.btValue[6] > 0 then begin
StdItem.NeedLevel:=UserItem.btValue[6];
end;
end;
end;
end;
function TItemUnit.GetCustomItemName(nMakeIndex,
nItemIndex: Integer): String;
var
I: Integer;
ItemName:pTItemName;
begin
Result:='';
m_ItemNameList.Lock;
try
for I := 0 to m_ItemNameList.Count - 1 do begin
ItemName:=m_ItemNameList.Items[I];
if (ItemName.nMakeIndex = nMakeIndex) and (ItemName.nItemIndex = nItemIndex) then begin
Result:=ItemName.sItemName;
break;
end;
end;
finally
m_ItemNameList.UnLock;
end;
end;
function TItemUnit.AddCustomItemName(nMakeIndex, nItemIndex: Integer;
sItemName: String): Boolean;
var
I: Integer;
ItemName:pTItemName;
begin
Result:=False;
m_ItemNameList.Lock;
try
for I := 0 to m_ItemNameList.Count - 1 do begin
ItemName:=m_ItemNameList.Items[I];
if (ItemName.nMakeIndex = nMakeIndex) and (ItemName.nItemIndex = nItemIndex) then begin
exit;
end;
end;
New(ItemName);
ItemName.nMakeIndex:=nMakeIndex;
ItemName.nItemIndex:=nItemIndex;
ItemName.sItemName:=sItemName;
m_ItemNameList.Add(ItemName);
Result:=True;
finally
m_ItemNameList.UnLock;
end;
end;
function TItemUnit.DelCustomItemName(nMakeIndex, nItemIndex: Integer): Boolean;
var
I: Integer;
ItemName:pTItemName;
begin
Result:=False;
m_ItemNameList.Lock;
try
for I := 0 to m_ItemNameList.Count - 1 do begin
ItemName:=m_ItemNameList.Items[I];
if (ItemName.nMakeIndex = nMakeIndex) and (ItemName.nItemIndex = nItemIndex) then begin
Dispose(ItemName);
m_ItemNameList.Delete(I);
Result:=True;
exit;
end;
end;
finally
m_ItemNameList.UnLock;
end;
end;
function TItemUnit.LoadCustomItemName: Boolean;
var
I:integer;
LoadList:TStringList;
sFileName:String;
sLineText:String;
sMakeIndex:String;
sItemIndex:String;
nMakeIndex:Integer;
nItemIndex:Integer;
sItemName:String;
ItemName:pTItemName;
begin
Result:=False;
sFileName:=g_Config.sEnvirDir + 'ItemNameList.txt';
LoadList:=TStringList.Create;
if FileExists(sFileName) then begin
m_ItemNameList.Lock;
try
m_ItemNameList.Clear;
LoadList.LoadFromFile(sFileName);
for I := 0 to LoadList.Count - 1 do begin
sLineText:=Trim(LoadList.Strings[I]);
sLineText:=GetValidStr3(sLineText, sMakeIndex, [' ',#9]);
sLineText:=GetValidStr3(sLineText, sItemIndex, [' ',#9]);
sLineText:=GetValidStr3(sLineText, sItemName, [' ',#9]);
nMakeIndex:=Str_ToInt(sMakeIndex,-1);
nItemIndex:=Str_ToInt(sItemIndex,-1);
if (nMakeIndex >= 0) and (nItemIndex >= 0) then begin
New(ItemName);
ItemName.nMakeIndex:=nMakeIndex;
ItemName.nItemIndex:=nItemIndex;
ItemName.sItemName:=sItemName;
m_ItemNameList.Add(ItemName);
end;
end;
Result:=True;
finally
m_ItemNameList.UnLock;
end;
end else begin
LoadList.SaveToFile(sFileName);
end;
LoadList.Free;
end;
function TItemUnit.SaveCustomItemName: Boolean;
var
I:integer;
SaveList:TStringList;
sFileName:String;
ItemName:pTItemName;
begin
sFileName:=g_Config.sEnvirDir + 'ItemNameList.txt';
SaveList:=TStringList.Create;
m_ItemNameList.Lock;
try
for I := 0 to m_ItemNameList.Count - 1 do begin
ItemName:=m_ItemNameList.Items[I];
SaveList.Add(IntToStr(ItemName.nMakeIndex) + #9 + IntToStr(ItemName.nItemIndex) + #9 + ItemName.sItemName);
end;
finally
m_ItemNameList.UnLock;
end;
SaveList.SaveToFile(sFileName);
SaveList.Free;
Result:=True;
end;
procedure TItemUnit.Lock;
begin
m_ItemNameList.Lock;
end;
procedure TItemUnit.UnLock;
begin
m_ItemNameList.UnLock;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -