|
|
|
@ -4537,11 +4537,10 @@ void RecreateHealerItem(int ii, int idx, int lvl, int iseed) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
item[ii]._iCreateInfo = lvl | 0x4000; |
|
|
|
item[ii]._iCreateInfo = lvl | 0x4000; |
|
|
|
item[ii]._iSeed = iseed; |
|
|
|
item[ii]._iSeed = iseed; |
|
|
|
item[ii]._iIdentified = TRUE; |
|
|
|
item[ii]._iIdentified = TRUE; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void RecreateTownItem(int ii, int idx, unsigned short icreateinfo, int iseed, int ivalue) |
|
|
|
void RecreateTownItem(int ii, int idx, unsigned short icreateinfo, int iseed, int ivalue) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (icreateinfo & 0x400) |
|
|
|
if (icreateinfo & 0x400) |
|
|
|
@ -4598,52 +4597,50 @@ int ItemNoFlippy() |
|
|
|
return r; |
|
|
|
return r; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void CreateSpellBook(int x, int y, int ispell, BOOLEAN sendmsg, int delta) |
|
|
|
void CreateSpellBook(int x, int y, int ispell, BOOL sendmsg, int delta) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int ii; // edi
|
|
|
|
int ii, idx; |
|
|
|
int idx; // [esp+8h] [ebp-8h]
|
|
|
|
BOOL done; |
|
|
|
BOOLEAN done; // [esp+Ch] [ebp-4h]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
done = 0; |
|
|
|
done = FALSE; |
|
|
|
idx = RndTypeItems(0, 24); |
|
|
|
idx = RndTypeItems(0, 24); |
|
|
|
if (numitems < MAXITEMS) { |
|
|
|
if (numitems < MAXITEMS) { |
|
|
|
ii = itemavail[0]; |
|
|
|
ii = itemavail[0]; |
|
|
|
GetSuperItemSpace(x, y, itemavail[0]); |
|
|
|
GetSuperItemSpace(x, y, ii); |
|
|
|
itemactive[numitems] = ii; |
|
|
|
|
|
|
|
itemavail[0] = itemavail[MAXITEMS - numitems - 1]; |
|
|
|
itemavail[0] = itemavail[MAXITEMS - numitems - 1]; |
|
|
|
do { |
|
|
|
itemactive[numitems] = ii; |
|
|
|
|
|
|
|
while (!done) { |
|
|
|
SetupAllItems(ii, idx, GetRndSeed(), 2 * currlevel, 1, 1, 0, delta); |
|
|
|
SetupAllItems(ii, idx, GetRndSeed(), 2 * currlevel, 1, 1, 0, delta); |
|
|
|
if (item[ii]._iMiscId == IMISC_BOOK && item[ii]._iSpell == ispell) |
|
|
|
if (item[ii]._iMiscId == IMISC_BOOK && item[ii]._iSpell == ispell) |
|
|
|
done = 1; |
|
|
|
done = TRUE; |
|
|
|
} while (!done); |
|
|
|
} |
|
|
|
if (sendmsg) |
|
|
|
if (sendmsg) |
|
|
|
NetSendCmdDItem(FALSE, ii); |
|
|
|
NetSendCmdDItem(FALSE, ii); |
|
|
|
if (delta) |
|
|
|
if (delta) |
|
|
|
DeltaAddItem(ii); |
|
|
|
DeltaAddItem(ii); |
|
|
|
++numitems; |
|
|
|
numitems++; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void CreateMagicArmor(int x, int y, int imisc, int icurs, int sendmsg, int delta) |
|
|
|
void CreateMagicArmor(int x, int y, int imisc, int icurs, BOOL sendmsg, int delta) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int ii; // esi
|
|
|
|
int ii, idx; |
|
|
|
int idx; // ebx
|
|
|
|
BOOL done; |
|
|
|
BOOL done; // [esp+Ch] [ebp-4h]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
done = 0; |
|
|
|
done = FALSE; |
|
|
|
if (numitems < MAXITEMS) { |
|
|
|
if (numitems < MAXITEMS) { |
|
|
|
ii = itemavail[0]; |
|
|
|
ii = itemavail[0]; |
|
|
|
GetSuperItemSpace(x, y, ii); |
|
|
|
GetSuperItemSpace(x, y, ii); |
|
|
|
itemavail[0] = itemavail[MAXITEMS - numitems - 1]; |
|
|
|
itemavail[0] = itemavail[MAXITEMS - numitems - 1]; |
|
|
|
itemactive[numitems] = ii; |
|
|
|
itemactive[numitems] = ii; |
|
|
|
idx = RndTypeItems(imisc, 0); |
|
|
|
idx = RndTypeItems(imisc, 0); |
|
|
|
do { |
|
|
|
while (!done) { |
|
|
|
SetupAllItems(ii, idx, GetRndSeed(), 2 * currlevel, 1, 1, 0, delta); |
|
|
|
SetupAllItems(ii, idx, GetRndSeed(), 2 * currlevel, 1, 1, 0, delta); |
|
|
|
if (item[ii]._iCurs == icurs) |
|
|
|
if (item[ii]._iCurs == icurs) |
|
|
|
done = 1; |
|
|
|
done = TRUE; |
|
|
|
else |
|
|
|
else |
|
|
|
idx = RndTypeItems(imisc, 0); |
|
|
|
idx = RndTypeItems(imisc, 0); |
|
|
|
} while (!done); |
|
|
|
} |
|
|
|
if (sendmsg) |
|
|
|
if (sendmsg) |
|
|
|
NetSendCmdDItem(FALSE, ii); |
|
|
|
NetSendCmdDItem(FALSE, ii); |
|
|
|
if (delta) |
|
|
|
if (delta) |
|
|
|
@ -4652,26 +4649,25 @@ void CreateMagicArmor(int x, int y, int imisc, int icurs, int sendmsg, int delta |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void CreateMagicWeapon(int x, int y, int imisc, int icurs, int sendmsg, int delta) |
|
|
|
void CreateMagicWeapon(int x, int y, int imisc, int icurs, BOOL sendmsg, int delta) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int ii; // esi
|
|
|
|
int ii, idx; |
|
|
|
int idx; // ebx
|
|
|
|
BOOL done; |
|
|
|
BOOL done; // [esp+Ch] [ebp-4h]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
done = 0; |
|
|
|
done = FALSE; |
|
|
|
if (numitems < MAXITEMS) { |
|
|
|
if (numitems < MAXITEMS) { |
|
|
|
ii = itemavail[0]; |
|
|
|
ii = itemavail[0]; |
|
|
|
GetSuperItemSpace(x, y, ii); |
|
|
|
GetSuperItemSpace(x, y, ii); |
|
|
|
itemavail[0] = itemavail[MAXITEMS - numitems - 1]; |
|
|
|
itemavail[0] = itemavail[MAXITEMS - numitems - 1]; |
|
|
|
itemactive[numitems] = ii; |
|
|
|
itemactive[numitems] = ii; |
|
|
|
idx = RndTypeItems(imisc, 0); |
|
|
|
idx = RndTypeItems(imisc, 0); |
|
|
|
do { |
|
|
|
while (!done) { |
|
|
|
SetupAllItems(ii, idx, GetRndSeed(), 2 * currlevel, 1, 1, 0, delta); |
|
|
|
SetupAllItems(ii, idx, GetRndSeed(), 2 * currlevel, 1, 1, 0, delta); |
|
|
|
if (item[ii]._iCurs == icurs) |
|
|
|
if (item[ii]._iCurs == icurs) |
|
|
|
done = 1; |
|
|
|
done = TRUE; |
|
|
|
else |
|
|
|
else |
|
|
|
idx = RndTypeItems(imisc, 0); |
|
|
|
idx = RndTypeItems(imisc, 0); |
|
|
|
} while (!done); |
|
|
|
} |
|
|
|
if (sendmsg) |
|
|
|
if (sendmsg) |
|
|
|
NetSendCmdDItem(FALSE, ii); |
|
|
|
NetSendCmdDItem(FALSE, ii); |
|
|
|
if (delta) |
|
|
|
if (delta) |
|
|
|
|