|
|
|
|
@ -4129,6 +4129,33 @@ void mi_fire_ring(int i)
|
|
|
|
|
|
|
|
|
|
void mi_light_ring(int i) |
|
|
|
|
{ |
|
|
|
|
int src, tx, ty, dmg, k, j, dp, b; |
|
|
|
|
BYTE lvl; |
|
|
|
|
|
|
|
|
|
b = CrawlNum[3]; |
|
|
|
|
missile[i]._miDelFlag = 1; |
|
|
|
|
src = missile[i]._micaster; |
|
|
|
|
k = CrawlNum[3] + 1; |
|
|
|
|
if (src > 0) |
|
|
|
|
lvl = plr[src]._pLevel; |
|
|
|
|
else |
|
|
|
|
lvl = currlevel; |
|
|
|
|
dmg = 16 * (random_(53, 10) + random_(53, 10) + lvl + 2) >> 1; |
|
|
|
|
for (j = CrawlTable[b]; j > 0; j--, k += 2) { |
|
|
|
|
tx = missile[i]._miVar1 + CrawlTable[k - 1]; |
|
|
|
|
ty = missile[i]._miVar2 + CrawlTable[k]; |
|
|
|
|
if (tx > 0 && tx < MAXDUNX && ty > 0 && ty < MAXDUNY) { |
|
|
|
|
dp = dPiece[tx][ty]; |
|
|
|
|
if (!nSolidTable[dp] && !dObject[tx][ty]) { |
|
|
|
|
if (LineClear(missile[i]._mix, missile[i]._miy, tx, ty)) { |
|
|
|
|
if (nMissileTable[dp] || missile[i]._miVar8) |
|
|
|
|
missile[i]._miVar8 = 1; |
|
|
|
|
else |
|
|
|
|
AddMissile(tx, ty, tx, ty, 0, MIS_LIGHTWALL, 2, src, dmg, missile[i]._mispllvl); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void mi_search(int i) |
|
|
|
|
@ -4160,7 +4187,7 @@ void mi_lightning_wall(int i)
|
|
|
|
|
tx = missile[i]._miVar1 + XDirAdd[missile[i]._miVar3]; |
|
|
|
|
ty = missile[i]._miVar2 + YDirAdd[missile[i]._miVar3]; |
|
|
|
|
if (!nMissileTable[dp] && !missile[i]._miVar8 && tx > 0 && tx < MAXDUNX && ty > 0 && ty < MAXDUNY) { |
|
|
|
|
AddMissile(missile[i]._miVar1, missile[i]._miVar2, missile[i]._miVar1, missile[i]._miVar2, plr[src]._pdir, 70, 2, src, dmg, missile[i]._mispllvl); |
|
|
|
|
AddMissile(missile[i]._miVar1, missile[i]._miVar2, missile[i]._miVar1, missile[i]._miVar2, plr[src]._pdir, MIS_LIGHTWALL, 2, src, dmg, missile[i]._mispllvl); |
|
|
|
|
missile[i]._miVar1 = tx; |
|
|
|
|
missile[i]._miVar2 = ty; |
|
|
|
|
} else { |
|
|
|
|
@ -4174,7 +4201,7 @@ void mi_lightning_wall(int i)
|
|
|
|
|
tx = missile[i]._miVar5 + XDirAdd[missile[i]._miVar4]; |
|
|
|
|
ty = missile[i]._miVar6 + YDirAdd[missile[i]._miVar4]; |
|
|
|
|
if (!nMissileTable[dp] && !missile[i]._miVar7 && tx > 0 && tx < MAXDUNX && ty > 0 && ty < MAXDUNY) { |
|
|
|
|
AddMissile(missile[i]._miVar5, missile[i]._miVar6, missile[i]._miVar5, missile[i]._miVar6, plr[src]._pdir, 70, 2, src, dmg, missile[i]._mispllvl); |
|
|
|
|
AddMissile(missile[i]._miVar5, missile[i]._miVar6, missile[i]._miVar5, missile[i]._miVar6, plr[src]._pdir, MIS_LIGHTWALL, 2, src, dmg, missile[i]._mispllvl); |
|
|
|
|
missile[i]._miVar5 = tx; |
|
|
|
|
missile[i]._miVar6 = ty; |
|
|
|
|
} else { |
|
|
|
|
|