|
|
|
|
@ -20,9 +20,7 @@ int numchains;
|
|
|
|
|
int XDirAdd[8] = { 1, 0, -1, -1, -1, 0, 1, 1 }; |
|
|
|
|
/** Maps from direction to Y-offset. */ |
|
|
|
|
int YDirAdd[8] = { 1, 1, 1, 0, -1, -1, -1, 0 }; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
int CrawlNum[19] = { 0, 3, 12, 45, 94, 159, 240, 337, 450, 579, 724, 885, 1062, 1255, 1464, 1689, 1930, 2187, 2460 }; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
void GetDamageAmt(int i, int *mind, int *maxd) |
|
|
|
|
{ |
|
|
|
|
@ -39,18 +37,9 @@ void GetDamageAmt(int i, int *mind, int *maxd)
|
|
|
|
|
break; |
|
|
|
|
case SPL_HEAL: /// BUGFIX: healing calculation is unused
|
|
|
|
|
*mind = plr[myplr]._pLevel + sl + 1; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
if (plr[myplr]._pClass == PC_WARRIOR || plr[myplr]._pClass == PC_MONK || plr[myplr]._pClass == PC_BARBARIAN) { |
|
|
|
|
#else |
|
|
|
|
if (plr[myplr]._pClass == PC_WARRIOR) { |
|
|
|
|
#endif |
|
|
|
|
*mind <<= 1; |
|
|
|
|
} |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
else if (plr[myplr]._pClass == PC_ROGUE || plr[myplr]._pClass == PC_BARD) { |
|
|
|
|
#else |
|
|
|
|
if (plr[myplr]._pClass == PC_ROGUE) { |
|
|
|
|
#endif |
|
|
|
|
} else if (plr[myplr]._pClass == PC_ROGUE || plr[myplr]._pClass == PC_BARD) { |
|
|
|
|
*mind += *mind >> 1; |
|
|
|
|
} |
|
|
|
|
*maxd = 10; |
|
|
|
|
@ -60,18 +49,9 @@ void GetDamageAmt(int i, int *mind, int *maxd)
|
|
|
|
|
for (k = 0; k < sl; k++) { |
|
|
|
|
*maxd += 6; |
|
|
|
|
} |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
if (plr[myplr]._pClass == PC_WARRIOR || plr[myplr]._pClass == PC_MONK || plr[myplr]._pClass == PC_BARBARIAN) { |
|
|
|
|
#else |
|
|
|
|
if (plr[myplr]._pClass == PC_WARRIOR) { |
|
|
|
|
#endif |
|
|
|
|
*maxd <<= 1; |
|
|
|
|
} |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
else if (plr[myplr]._pClass == PC_ROGUE || plr[myplr]._pClass == PC_BARD) { |
|
|
|
|
#else |
|
|
|
|
if (plr[myplr]._pClass == PC_ROGUE) { |
|
|
|
|
#endif |
|
|
|
|
} else if (plr[myplr]._pClass == PC_ROGUE || plr[myplr]._pClass == PC_BARD) { |
|
|
|
|
*maxd += *maxd >> 1; |
|
|
|
|
} |
|
|
|
|
*mind = -1; |
|
|
|
|
@ -107,13 +87,11 @@ void GetDamageAmt(int i, int *mind, int *maxd)
|
|
|
|
|
case SPL_RESURRECT: |
|
|
|
|
case SPL_TELEKINESIS: |
|
|
|
|
case SPL_BONESPIRIT: |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
case SPL_WARP: |
|
|
|
|
case SPL_REFLECT: |
|
|
|
|
case SPL_BERSERK: |
|
|
|
|
case SPL_SEARCH: |
|
|
|
|
case SPL_RUNESTONE: |
|
|
|
|
#endif |
|
|
|
|
*mind = -1; |
|
|
|
|
*maxd = -1; |
|
|
|
|
break; |
|
|
|
|
@ -202,18 +180,10 @@ void GetDamageAmt(int i, int *mind, int *maxd)
|
|
|
|
|
break; |
|
|
|
|
case SPL_HEALOTHER: /// BUGFIX: healing calculation is unused
|
|
|
|
|
*mind = plr[myplr]._pLevel + sl + 1; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
if (plr[myplr]._pClass == PC_WARRIOR || plr[myplr]._pClass == PC_MONK || plr[myplr]._pClass == PC_BARBARIAN) { |
|
|
|
|
#else |
|
|
|
|
if (plr[myplr]._pClass == PC_WARRIOR) { |
|
|
|
|
#endif |
|
|
|
|
*mind <<= 1; |
|
|
|
|
} |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
if (plr[myplr]._pClass == PC_ROGUE || plr[myplr]._pClass == PC_BARD) { |
|
|
|
|
#else |
|
|
|
|
if (plr[myplr]._pClass == PC_ROGUE) { |
|
|
|
|
#endif |
|
|
|
|
*mind += *mind >> 1; |
|
|
|
|
} |
|
|
|
|
*maxd = 10; |
|
|
|
|
@ -223,18 +193,10 @@ void GetDamageAmt(int i, int *mind, int *maxd)
|
|
|
|
|
for (k = 0; k < sl; k++) { |
|
|
|
|
*maxd += 6; |
|
|
|
|
} |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
if (plr[myplr]._pClass == PC_WARRIOR || plr[myplr]._pClass == PC_MONK || plr[myplr]._pClass == PC_BARBARIAN) { |
|
|
|
|
#else |
|
|
|
|
if (plr[myplr]._pClass == PC_WARRIOR) { |
|
|
|
|
#endif |
|
|
|
|
*maxd <<= 1; |
|
|
|
|
} |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
if (plr[myplr]._pClass == PC_ROGUE || plr[myplr]._pClass == PC_BARD) { |
|
|
|
|
#else |
|
|
|
|
if (plr[myplr]._pClass == PC_ROGUE) { |
|
|
|
|
#endif |
|
|
|
|
*maxd += *maxd >> 1; |
|
|
|
|
} |
|
|
|
|
*mind = -1; |
|
|
|
|
@ -267,20 +229,13 @@ BOOL CheckBlock(int fx, int fy, int tx, int ty)
|
|
|
|
|
int FindClosest(int sx, int sy, int rad) |
|
|
|
|
{ |
|
|
|
|
int j, i, mid, tx, ty, cr; |
|
|
|
|
#ifndef HELLFIRE |
|
|
|
|
int CrawlNum[19] = { 0, 3, 12, 45, 94, 159, 240, 337, 450, 579, 724, 885, 1062, 1255, 1464, 1689, 1930, 2187, 2460 }; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
if (rad > 19) |
|
|
|
|
rad = 19; |
|
|
|
|
|
|
|
|
|
for (i = 1; i < rad; i++) { |
|
|
|
|
cr = CrawlNum[i] + 2; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
for (j = CrawlTable[CrawlNum[i]]; j > 0; j--) { // BUGFIX: should cast to BYTE or CrawlTable header will be wrong
|
|
|
|
|
#else |
|
|
|
|
for (j = (BYTE)CrawlTable[CrawlNum[i]]; j > 0; j--) { |
|
|
|
|
#endif |
|
|
|
|
tx = sx + CrawlTable[cr - 1]; |
|
|
|
|
ty = sy + CrawlTable[cr]; |
|
|
|
|
if (tx > 0 && tx < MAXDUNX && ty > 0 && ty < MAXDUNY) { |
|
|
|
|
@ -422,20 +377,16 @@ void GetMissileVel(int i, int sx, int sy, int dx, int dy, int v)
|
|
|
|
|
{ |
|
|
|
|
double dxp, dyp, dr; |
|
|
|
|
|
|
|
|
|
#ifndef HELLFIRE |
|
|
|
|
if (dx != sx || dy != sy) { |
|
|
|
|
#endif |
|
|
|
|
dxp = (dx + sy - sx - dy) * (1 << 21); |
|
|
|
|
dyp = (dy + dx - sx - sy) * (1 << 21); |
|
|
|
|
dr = sqrt(dxp * dxp + dyp * dyp); |
|
|
|
|
missile[i]._mixvel = (dxp * (v << 16)) / dr; |
|
|
|
|
missile[i]._miyvel = (dyp * (v << 15)) / dr; |
|
|
|
|
#ifndef HELLFIRE |
|
|
|
|
} else { |
|
|
|
|
missile[i]._mixvel = 0; |
|
|
|
|
missile[i]._miyvel = 0; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void PutMissile(int i) |
|
|
|
|
@ -566,11 +517,7 @@ BOOL MonsterTrapHit(int m, int mindam, int maxdam, int dist, int t, BOOLEAN shif
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
hit = random_(68, 100); |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
hper = 90 - (char)monster[m].mArmorClass - dist; |
|
|
|
|
#else |
|
|
|
|
hper = 90 - (BYTE)monster[m].mArmorClass - dist; |
|
|
|
|
#endif |
|
|
|
|
if (hper < 5) |
|
|
|
|
hper = 5; |
|
|
|
|
if (hper > 95) |
|
|
|
|
@ -673,22 +620,14 @@ BOOL MonsterMHit(int pnum, int m, int mindam, int maxdam, int dist, int t, BOOLE
|
|
|
|
|
hper += 50; |
|
|
|
|
if (plr[pnum]._pClass == PC_ROGUE) |
|
|
|
|
hper += 20; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
if (plr[pnum]._pClass == PC_WARRIOR || plr[pnum]._pClass == PC_BARD) |
|
|
|
|
hper += 10; |
|
|
|
|
#endif |
|
|
|
|
#ifndef HELLFIRE |
|
|
|
|
if (plr[pnum]._pClass == PC_WARRIOR) |
|
|
|
|
hper += 10; |
|
|
|
|
#endif |
|
|
|
|
} else { |
|
|
|
|
hper = plr[pnum]._pMagic - (monster[m].mLevel << 1) - dist + 50; |
|
|
|
|
if (plr[pnum]._pClass == PC_SORCERER) |
|
|
|
|
hper += 20; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
else if (plr[pnum]._pClass == PC_BARD) |
|
|
|
|
hper += 10; |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
} else { |
|
|
|
|
@ -1000,11 +939,7 @@ BOOL Plr2PlrMHit(int pnum, int p, int mindam, int maxdam, int dist, int mtype, B
|
|
|
|
|
+ plr[pnum]._pDexterity + 50; |
|
|
|
|
if (plr[pnum]._pClass == PC_ROGUE) |
|
|
|
|
hit += 20; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
if (plr[pnum]._pClass == PC_WARRIOR || plr[pnum]._pClass == PC_BARD) |
|
|
|
|
#else |
|
|
|
|
if (plr[pnum]._pClass == PC_WARRIOR) |
|
|
|
|
#endif |
|
|
|
|
hit += 10; |
|
|
|
|
} else { |
|
|
|
|
hit = plr[pnum]._pMagic |
|
|
|
|
@ -1013,10 +948,8 @@ BOOL Plr2PlrMHit(int pnum, int p, int mindam, int maxdam, int dist, int mtype, B
|
|
|
|
|
+ 50; |
|
|
|
|
if (plr[pnum]._pClass == PC_SORCERER) |
|
|
|
|
hit += 20; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
else if (plr[pnum]._pClass == PC_BARD) |
|
|
|
|
hit += 10; |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
if (hit < 5) |
|
|
|
|
hit = 5; |
|
|
|
|
@ -1431,7 +1364,6 @@ void InitMissiles()
|
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
void missiles_hive_explosion(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, int id, int dam) |
|
|
|
|
{ |
|
|
|
|
AddMissile(80, 62, 80, 62, midir, MIS_HIVEEXP, mienemy, id, dam, 0); |
|
|
|
|
@ -2129,7 +2061,6 @@ void missiles_hbolt_arrow(int mi, int sx, int sy, int dx, int dy, int midir, cha
|
|
|
|
|
missile[mi]._miVar2 = sy; |
|
|
|
|
missile[mi]._mlid = AddLight(sx, sy, 8); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
void AddLArrow(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, int id, int dam) |
|
|
|
|
{ |
|
|
|
|
@ -2355,19 +2286,12 @@ void miss_null_33(int mi, int sx, int sy, int dx, int dy, int midir, char mienem
|
|
|
|
|
void AddTeleport(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, int id, int dam) |
|
|
|
|
{ |
|
|
|
|
int i, pn, k, j, tx, ty; |
|
|
|
|
#ifndef HELLFIRE |
|
|
|
|
int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 }; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
missile[mi]._miDelFlag = TRUE; |
|
|
|
|
for (i = 0; i < 6; i++) { |
|
|
|
|
k = CrawlNum[i]; |
|
|
|
|
pn = k + 2; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
for (j = CrawlTable[k]; j > 0; j--) { // BUGFIX: should cast to BYTE or CrawlTable header will be wrong
|
|
|
|
|
#else |
|
|
|
|
for (j = (BYTE)CrawlTable[k]; j > 0; j--) { |
|
|
|
|
#endif |
|
|
|
|
tx = dx + CrawlTable[pn - 1]; |
|
|
|
|
ty = dy + CrawlTable[pn]; |
|
|
|
|
if (0 < tx && tx < MAXDUNX && 0 < ty && ty < MAXDUNY) { |
|
|
|
|
@ -2579,19 +2503,12 @@ BOOL CheckIfTrig(int x, int y)
|
|
|
|
|
void AddTown(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, int id, int dam) |
|
|
|
|
{ |
|
|
|
|
int i, j, k, mx, tx, ty, dp; |
|
|
|
|
#ifndef HELLFIRE |
|
|
|
|
int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 }; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
if (currlevel != 0) { |
|
|
|
|
missile[mi]._miDelFlag = TRUE; |
|
|
|
|
for (j = 0; j < 6; j++) { |
|
|
|
|
k = CrawlNum[j] + 2; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
for (i = CrawlTable[CrawlNum[j]]; i > 0; i--) { // BUGFIX: should cast to BYTE or CrawlTable header will be wrong
|
|
|
|
|
#else |
|
|
|
|
for (i = (BYTE)CrawlTable[CrawlNum[j]]; i > 0; i--) { |
|
|
|
|
#endif |
|
|
|
|
tx = dx + CrawlTable[k - 1]; |
|
|
|
|
ty = dy + CrawlTable[k]; |
|
|
|
|
if (tx > 0 && tx < MAXDUNX && ty > 0 && ty < MAXDUNY) { |
|
|
|
|
@ -2712,9 +2629,6 @@ void AddFiremove(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy
|
|
|
|
|
void AddGuardian(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, int id, int dam) |
|
|
|
|
{ |
|
|
|
|
int i, pn, k, j, tx, ty; |
|
|
|
|
#ifndef HELLFIRE |
|
|
|
|
int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 }; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
missile[mi]._midam = random_(62, 10) + (plr[id]._pLevel >> 1) + 1; |
|
|
|
|
for (i = missile[mi]._mispllvl; i > 0; i--) { |
|
|
|
|
@ -2725,11 +2639,7 @@ void AddGuardian(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy
|
|
|
|
|
for (i = 0; i < 6; i++) { |
|
|
|
|
pn = CrawlNum[i]; |
|
|
|
|
k = pn + 2; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
for (j = CrawlTable[pn]; j > 0; j--) { // BUGFIX: should cast to BYTE or CrawlTable header will be wrong
|
|
|
|
|
#else |
|
|
|
|
for (j = (BYTE)CrawlTable[pn]; j > 0; j--) { |
|
|
|
|
#endif |
|
|
|
|
tx = dx + CrawlTable[k - 1]; |
|
|
|
|
ty = dy + CrawlTable[k]; |
|
|
|
|
pn = dPiece[tx][ty]; |
|
|
|
|
@ -2948,29 +2858,18 @@ void AddAcidpud(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy,
|
|
|
|
|
void AddStone(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, int id, int dam) |
|
|
|
|
{ |
|
|
|
|
int i, j, k, l, tx, ty, mid; |
|
|
|
|
#ifndef HELLFIRE |
|
|
|
|
int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 }; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
missile[mi]._misource = id; |
|
|
|
|
for (i = 0; i < 6; i++) { |
|
|
|
|
k = CrawlNum[i]; |
|
|
|
|
l = k + 2; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
for (j = CrawlTable[k]; j > 0; j--) { // BUGFIX: should cast to BYTE or CrawlTable header will be wrong
|
|
|
|
|
#else |
|
|
|
|
for (j = (BYTE)CrawlTable[k]; j > 0; j--) { |
|
|
|
|
#endif |
|
|
|
|
tx = dx + CrawlTable[l - 1]; |
|
|
|
|
ty = dy + CrawlTable[l]; |
|
|
|
|
if (tx > 0 && tx < MAXDUNX && ty > 0 && ty < MAXDUNY) { |
|
|
|
|
mid = dMonster[tx][ty]; |
|
|
|
|
mid = mid > 0 ? mid - 1 : -1 - mid; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
if (mid > MAX_PLRS - 1 && monster[mid]._mAi != AI_DIABLO && monster[mid].MType->mtype != MT_NAKRUL) { |
|
|
|
|
#else |
|
|
|
|
if (mid > MAX_PLRS - 1 && monster[mid]._mAi != AI_DIABLO) { |
|
|
|
|
#endif |
|
|
|
|
if (monster[mid]._mmode != MM_FADEIN && monster[mid]._mmode != MM_FADEOUT && monster[mid]._mmode != MM_CHARGE) { |
|
|
|
|
j = -99; |
|
|
|
|
i = 6; |
|
|
|
|
@ -3088,19 +2987,10 @@ void AddHeal(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, in
|
|
|
|
|
HealAmount += (random_(57, 6) + 1) << 6; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (plr[id]._pClass == PC_WARRIOR) |
|
|
|
|
HealAmount <<= 1; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
else if (plr[id]._pClass == PC_BARBARIAN || plr[id]._pClass == PC_MONK) |
|
|
|
|
if (plr[id]._pClass == PC_WARRIOR || plr[id]._pClass == PC_BARBARIAN || plr[id]._pClass == PC_MONK) |
|
|
|
|
HealAmount <<= 1; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
if (plr[id]._pClass == PC_ROGUE) |
|
|
|
|
HealAmount += HealAmount >> 1; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
else if (plr[id]._pClass == PC_BARD) |
|
|
|
|
else if (plr[id]._pClass == PC_ROGUE || plr[id]._pClass == PC_BARD) |
|
|
|
|
HealAmount += HealAmount >> 1; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
plr[id]._pHitPoints += HealAmount; |
|
|
|
|
if (plr[id]._pHitPoints > plr[id]._pMaxHP) |
|
|
|
|
@ -3172,19 +3062,12 @@ void AddIdentify(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy
|
|
|
|
|
void AddFirewallC(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, int id, int dam) |
|
|
|
|
{ |
|
|
|
|
int i, j, k, tx, ty, pn; |
|
|
|
|
#ifndef HELLFIRE |
|
|
|
|
int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 }; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
missile[mi]._miDelFlag = TRUE; |
|
|
|
|
for (i = 0; i < 6; i++) { |
|
|
|
|
k = CrawlNum[i]; |
|
|
|
|
pn = k + 2; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
for (j = CrawlTable[k]; j > 0; j--) { // BUGFIX: should cast to BYTE or CrawlTable header will be wrong
|
|
|
|
|
#else |
|
|
|
|
for (j = (BYTE)CrawlTable[k]; j > 0; j--) { |
|
|
|
|
#endif |
|
|
|
|
tx = dx + CrawlTable[pn - 1]; |
|
|
|
|
ty = dy + CrawlTable[pn]; |
|
|
|
|
if (0 < tx && tx < MAXDUNX && 0 < ty && ty < MAXDUNY) { |
|
|
|
|
@ -3645,9 +3528,6 @@ void MI_Dummy(int i)
|
|
|
|
|
|
|
|
|
|
void MI_Golem(int i) |
|
|
|
|
{ |
|
|
|
|
#ifndef HELLFIRE |
|
|
|
|
int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 }; |
|
|
|
|
#endif |
|
|
|
|
int tx, ty, dp, l, m, src, k, tid; |
|
|
|
|
char *ct; |
|
|
|
|
|
|
|
|
|
@ -3656,11 +3536,7 @@ void MI_Golem(int i)
|
|
|
|
|
for (l = 0; l < 6; l++) { |
|
|
|
|
k = CrawlNum[l]; |
|
|
|
|
tid = k + 2; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
for (m = CrawlTable[k]; m > 0; m--) { // BUGFIX: should cast to BYTE or CrawlTable header will be wrong
|
|
|
|
|
#else |
|
|
|
|
for (m = (BYTE)CrawlTable[k]; m > 0; m--) { |
|
|
|
|
#endif |
|
|
|
|
ct = &CrawlTable[tid]; |
|
|
|
|
tx = missile[i]._miVar4 + *(ct - 1); |
|
|
|
|
ty = missile[i]._miVar5 + *ct; |
|
|
|
|
@ -3854,7 +3730,6 @@ void MI_Firebolt(int i)
|
|
|
|
|
missile[i]._miDelFlag = FALSE; |
|
|
|
|
PutMissile(i); |
|
|
|
|
return; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
case MIS_LICH: |
|
|
|
|
AddMissile(missile[i]._mix, missile[i]._miy, i, 0, missile[i]._mimfnum, MIS_EXORA1, missile[i]._micaster, missile[i]._misource, 0, 0); |
|
|
|
|
break; |
|
|
|
|
@ -3870,7 +3745,6 @@ void MI_Firebolt(int i)
|
|
|
|
|
case MIS_BONEDEMON: |
|
|
|
|
AddMissile(missile[i]._mix, missile[i]._miy, i, 0, missile[i]._mimfnum, MIS_EXBL3, missile[i]._micaster, missile[i]._misource, 0, 0); |
|
|
|
|
break; |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
if (missile[i]._mlid >= 0) |
|
|
|
|
AddUnLight(missile[i]._mlid); |
|
|
|
|
@ -4061,7 +3935,6 @@ void MI_Fireball(int i)
|
|
|
|
|
PutMissile(i); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
void missiles_4359A0(int i) |
|
|
|
|
{ |
|
|
|
|
int t, j, k, tx, ty, dp; |
|
|
|
|
@ -4610,7 +4483,6 @@ void mi_spec_arrow(int i)
|
|
|
|
|
missile[i]._miDelFlag = TRUE; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#endif |
|
|
|
|
void MI_Lightctrl(int i) |
|
|
|
|
{ |
|
|
|
|
int pn, dam, p, mx, my; |
|
|
|
|
@ -5038,9 +4910,6 @@ void MI_Guardian(int i)
|
|
|
|
|
void MI_Chain(int i) |
|
|
|
|
{ |
|
|
|
|
int sx, sy, id, l, n, m, k, rad, tx, ty, dir; |
|
|
|
|
#ifndef HELLFIRE |
|
|
|
|
int CrawlNum[19] = { 0, 3, 12, 45, 94, 159, 240, 337, 450, 579, 724, 885, 1062, 1255, 1464, 1689, 1930, 2187, 2460 }; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
id = missile[i]._misource; |
|
|
|
|
sx = missile[i]._mix; |
|
|
|
|
@ -5053,11 +4922,7 @@ void MI_Chain(int i)
|
|
|
|
|
for (m = 1; m < rad; m++) { |
|
|
|
|
k = CrawlNum[m]; |
|
|
|
|
l = k + 2; |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
for (n = CrawlTable[k]; n > 0; n--) { // BUGFIX: should cast to BYTE or CrawlTable header will be wrong
|
|
|
|
|
#else |
|
|
|
|
for (n = (BYTE)CrawlTable[k]; n > 0; n--) { |
|
|
|
|
#endif |
|
|
|
|
tx = sx + CrawlTable[l - 1]; |
|
|
|
|
ty = sy + CrawlTable[l]; |
|
|
|
|
if (tx > 0 && tx < MAXDUNX && ty > 0 && ty < MAXDUNY && dMonster[tx][ty] > 0) { |
|
|
|
|
@ -5878,11 +5743,7 @@ void ProcessMissiles()
|
|
|
|
|
|
|
|
|
|
i = 0; |
|
|
|
|
while (i < nummissiles) { |
|
|
|
|
#ifdef HELLFIRE |
|
|
|
|
if (missile[missileactive[i]]._miDelFlag == TRUE) { |
|
|
|
|
#else |
|
|
|
|
if (missile[missileactive[i]]._miDelFlag) { |
|
|
|
|
#endif |
|
|
|
|
DeleteMissile(missileactive[i], i); |
|
|
|
|
i = 0; |
|
|
|
|
} else { |
|
|
|
|
|