Skip to content

Commit 0237753

Browse files
committed
improve the speed of CheckUnique
1 parent 6266c7b commit 0237753

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

Source/items.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1868,14 +1868,13 @@ static int CheckUnique(int ii, unsigned lvl, unsigned quality)
18681868
{
18691869
int i, ui;
18701870
BYTE uok[NUM_UITEM];
1871-
BYTE uid;
1872-
1873-
if (random_(28, 100) > (quality == CFDQ_UNIQUE ? 15 : 1))
1871+
const ItemData &item = AllItemList[items[ii]._iIdx];
1872+
const BYTE uid = item.iUniqType;
1873+
if (uid == UITYPE_NONE || (item.iRnd != 0 && random_(28, 100) > (quality == CFDQ_UNIQUE ? 15 : 1)))
18741874
return -1;
18751875

18761876
static_assert(NUM_UITEM <= UCHAR_MAX, "Unique index must fit to a BYTE in CheckUnique.");
18771877

1878-
uid = AllItemList[items[ii]._iIdx].iUniqType;
18791878
ui = 0;
18801879
for (i = 0; i < NUM_UITEM; i++) {
18811880
if (UniqueItemList[i].UIUniqType == uid
@@ -1968,7 +1967,8 @@ void SpawnUnique(int uid, int x, int y, int mode)
19681967
SetRndSeed(glSeedTbl[DLV_HELL3]);
19691968
do {
19701969
SetupItem(MAXITEMS, idx, NextRndSeed(), UniqueItemList[uid].UIMinLvl, CFDQ_UNIQUE);
1971-
} while (items[MAXITEMS]._iMagical != ITEM_QUALITY_UNIQUE || items[MAXITEMS]._iUid != uid);
1970+
} while (items[MAXITEMS]._iMagical != ITEM_QUALITY_UNIQUE);
1971+
assert(items[MAXITEMS]._iUid == uid);
19721972

19731973
GetSuperItemSpace(x, y, MAXITEMS);
19741974
static_assert((int)ICM_SEND + 1 == (int)ICM_SEND_FLIP, "SpawnUnique expects ordered ICM_ values.");

0 commit comments

Comments
 (0)