20 int XDirAdd[8] = { 1, 0, -1, -1, -1, 0, 1, 1 };
22 int YDirAdd[8] = { 1, 1, 1, 0, -1, -1, -1, 0 };
49 for (k = 0; k < sl; k++) {
67 for (k = 0; k < sl; k++) {
100 for (k = 0; k < sl; k++) {
104 for (k = 0; k < sl; k++) {
110 for (k = 0; k < sl; k++) {
114 for (k = 0; k < sl; k++) {
128 for (k = 0; k < sl; k++) {
133 for (k = 0; k < sl; k++) {
159 for (k = 0; k < sl; k++) {
164 for (k = 0; k < sl; k++) {
189 for (k = 0; k < sl; k++) {
214 while (fx != tx || fy != ty) {
227 int j, i, mid, tx, ty, cr;
228 int CrawlNum[19] = { 0, 3, 12, 45, 94, 159, 240, 337, 450, 579, 724, 885, 1062, 1255, 1464, 1689, 1930, 2187, 2460 };
233 for (i = 1; i < rad; i++) {
234 cr = CrawlNum[i] + 2;
235 for (j = (BYTE)
CrawlTable[CrawlNum[i]]; j > 0; j--) {
238 if (tx > 0 && tx < MAXDUNX && ty > 0 && ty <
MAXDUNY) {
266 BYTE Dirs[16][16] = {
267 { 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
268 { 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
269 { 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
270 { 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 },
271 { 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 },
272 { 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 },
273 { 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
274 { 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
275 { 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
276 { 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
277 { 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
278 { 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
279 { 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
280 { 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
281 { 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
282 { 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
286 ultolr[] = { 3, 2, 1 },
287 lrtoul[] = { 7, 6, 5 },
288 lltour[] = { 7, 0, 1 };
311 BYTE Dirs[16][16] = {
312 { 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
313 { 4, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
314 { 4, 3, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
315 { 4, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 },
316 { 4, 4, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
317 { 4, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
318 { 4, 4, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1 },
319 { 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1 },
320 { 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1 },
321 { 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1 },
322 { 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1 },
323 { 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1 },
324 { 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2 },
325 { 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2 },
326 { 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2 },
327 { 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2 }
329 BYTE urtoll[5] = { 6, 7, 8, 9, 10 };
330 BYTE ultolr[5] = { 6, 5, 4, 3, 2 };
331 BYTE lltour[5] = { 14, 13, 12, 11, 10 };
332 BYTE lrtoul[5] = { 14, 15, 0, 1, 2 };
347 }
else if (y1 > y2) {
375 if (dx != sx || dy != sy) {
376 dxp = (dx + sy - sx - dy) * (1 << 21);
377 dyp = (dy + dx - sx - sy) * (1 << 21);
378 dr = sqrt(dxp * dxp + dyp * dyp);
408 int mx, my, dx, dy, lx, ly;
483 BOOL
MonsterTrapHit(
int m,
int mindam,
int maxdam,
int dist,
int t, BOOLEAN shift)
485 int hit, hper, dam, mor, mir;
492 if (
monster[m]._mhitpoints >> 6 <= 0) {
515 hper = 90 - (BYTE)
monster[m].mArmorClass - dist;
524 else if (hit < hper || debug_mode_dollar_sign || debug_mode_key_inverted_v ||
monster[m]._mmode ==
MM_STONE) {
528 dam = mindam +
random_(68, maxdam - mindam + 1);
536 if (debug_mode_dollar_sign || debug_mode_key_inverted_v)
539 if (
monster[m]._mhitpoints >> 6 <= 0) {
564 BOOL
MonsterMHit(
int pnum,
int m,
int mindam,
int maxdam,
int dist,
int t, BOOLEAN shift)
566 int hit, hper, dam, mor, mir;
571 ||
monster[m]._mhitpoints >> 6 <= 0
621 if (hit >= hper && !debug_mode_key_inverted_v && !debug_mode_dollar_sign)
630 dam = mindam +
random_(70, maxdam - mindam + 1);
648 if (
monster[m]._mhitpoints >> 6 <= 0) {
679 BOOL
PlayerMHit(
int pnum,
int m,
int dist,
int mind,
int maxd,
int mtype, BOOLEAN shift,
int earflag)
681 int hit, hper, tac, dam, blk, blkper, resper;
683 if (
plr[pnum]._pHitPoints >> 6 <= 0) {
687 if (
plr[pnum]._pInvincible) {
697 if (debug_mode_dollar_sign || debug_mode_key_inverted_v)
708 hper = 100 - (tac >> 1) - (dist << 1);
769 if (shift == FALSE) {
771 dam = (mind << 6) +
random_(75, (maxd - mind + 1) << 6);
776 dam = mind +
random_(75, maxd - mind + 1);
787 dam = dam - dam * resper / 100;
792 if (
plr[pnum]._pHitPoints >
plr[pnum]._pMaxHP) {
797 if (
plr[pnum]._pHitPoints >> 6 <= 0) {
824 if (
plr[pnum]._pHitPoints >
plr[pnum]._pMaxHP) {
828 if (
plr[pnum]._pHitPoints >> 6 <= 0) {
840 BOOL
Plr2PlrMHit(
int pnum,
int p,
int mindam,
int maxdam,
int dist,
int mtype, BOOLEAN shift)
842 int tac, resper, dam, blk, blkper, hper, hit;
844 if (
plr[p]._pInvincible) {
876 -
plr[p]._pDexterity / 5
879 +
plr[pnum]._pDexterity + 50;
916 dam = mindam +
random_(70, maxdam - mindam + 1);
953 void CheckMissileCol(
int i,
int mindam,
int maxdam, BOOL shift,
int mx,
int my, BOOLEAN nodel)
1056 if (!
object[oi]._oMissFlag) {
1057 if (
object[oi]._oBreak == 1)
1107 sprintf(pszName,
"Missiles\\%s.CL2", mfd->
mName);
1112 sprintf(pszName,
"Missiles\\%s.CL2", mfd->
mName);
1117 sprintf(pszName,
"Missiles\\%s%i.CL2", mfd->
mName, i + 1);
1183 if (
plr[
myplr]._pInfraFlag == TRUE) {
1204 for (j = 0; j <
MAXDUNY; j++) {
1205 for (i = 0; i <
MAXDUNX; i++) {
1211 void AddLArrow(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1213 if (sx == dx && sy == dy) {
1234 void AddArrow(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1238 if (sx == dx && sy == dy) {
1261 int xx, yy, k, j, i;
1263 for (k = 1; k < 50; k++) {
1264 for (j = -k; j <= k; j++) {
1266 for (i = -k; i <= k; i++) {
1280 void AddRndTeleport(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1282 int pn, r1, r2, nTries;
1299 pn =
dPiece[r1 + sx][sy + r2];
1320 void AddFirebolt(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char micaster,
int id,
int dam)
1324 if (sx == dx && sy == dy) {
1354 void AddMagmaball(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1366 void miss_null_33(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1375 void AddTeleport(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1377 int i, pn, k, j, tx, ty;
1378 int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 };
1381 for (i = 0; i < 6; i++) {
1402 if (!
missile[mi]._miDelFlag) {
1408 void AddLightball(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1423 void AddFirewall(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1438 void AddFireball(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1442 if (sx == dx && sy == dy) {
1448 for (i =
missile[mi]._mispllvl; i > 0; i--) {
1469 void AddLightctrl(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1471 if (!dam && !mienemy)
1480 void AddLightning(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1492 if (midir < 0 || mienemy == 1 ||
id == -1) {
1493 if (midir < 0 ||
id == -1)
1503 void AddMisexp(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1507 if (mienemy &&
id > 0) {
1533 void AddWeapexp(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1556 if ((x ==
trigs[i]._tx && y ==
trigs[i]._ty) || (abs(
trigs[i]._tx - x) < 2 && abs(
trigs[i]._ty - y) < 2))
1562 void AddTown(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1564 int i, j, k, mx, tx, ty, dp;
1565 int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 };
1569 for (j = 0; j < 6; j++) {
1570 k = CrawlNum[j] + 2;
1571 for (i = (BYTE)
CrawlTable[CrawlNum[j]]; i > 0; i--) {
1574 if (tx > 0 && tx < MAXDUNX && ty > 0 && ty <
MAXDUNY) {
1618 void AddFlash(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1628 for (i =
missile[mi]._mispllvl; i > 0; i--) {
1642 void AddFlash2(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1652 for (i =
missile[mi]._mispllvl; i > 0; i--) {
1664 void AddManashield(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1677 void AddFiremove(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1689 void AddGuardian(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1691 int i, pn, k, j, tx, ty;
1692 int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 };
1695 for (i =
missile[mi]._mispllvl; i > 0; i--) {
1700 for (i = 0; i < 6; i++) {
1707 if (tx > 0 && tx < MAXDUNX && ty > 0 && ty <
MAXDUNY) {
1725 if (
missile[mi]._miDelFlag != TRUE) {
1731 if (
missile[mi]._mirange > 30)
1734 if (
missile[mi]._mirange < 30)
1743 void AddChain(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1751 void miss_null_11(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1759 void miss_null_12(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1769 void miss_null_13(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1779 void AddRhino(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1806 if (
monster[
id]._uniqtype != 0) {
1814 void miss_null_32(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1832 if (
monster[
id]._uniqtype != 0)
1840 void AddFlare(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1842 if (sx == dx && sy == dy) {
1856 if (
plr[
id]._pHitPoints <= 0)
1872 void AddAcid(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1883 void miss_null_1D(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1893 void AddAcidpud(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1907 void AddStone(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1909 int i, j, k, l, tx, ty, mid;
1910 int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 };
1913 for (i = 0; i < 6; i++) {
1919 if (tx > 0 && tx < MAXDUNX && ty > 0 && ty <
MAXDUNY) {
1921 mid = mid > 0 ? mid - 1 : -1 - mid;
1947 if (
missile[mi]._mirange > 15)
1954 void AddGolem(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1963 if (mx != mi &&
missile[mx]._misource ==
id) {
1978 void AddEtherealize(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1983 for (i =
missile[mi]._mispllvl; i > 0; i--) {
1993 void miss_null_1F(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
1998 void miss_null_23(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2014 void AddBoom(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2027 void AddHeal(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2032 HealAmount = (
random_(57, 10) + 1) << 6;
2034 HealAmount += (
random_(57, 4) + 1) << 6;
2037 HealAmount += (
random_(57, 6) + 1) << 6;
2044 HealAmount += HealAmount >> 1;
2047 if (
plr[
id]._pHitPoints >
plr[
id]._pMaxHP)
2051 if (
plr[
id]._pHPBase >
plr[
id]._pMaxHPBase)
2059 void AddHealOther(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2070 void AddElement(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2074 if (sx == dx && sy == dy) {
2079 for (i =
missile[mi]._mispllvl; i > 0; i--) {
2097 void AddIdentify(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2113 void AddFirewallC(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2115 int i, j, k, tx, ty, pn;
2116 int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 };
2119 for (i = 0; i < 6; i++) {
2143 if (
missile[mi]._miDelFlag != TRUE) {
2153 void AddInfra(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2158 for (i =
missile[mi]._mispllvl; i > 0; i--) {
2166 void AddWave(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2177 void AddNova(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2187 for (k =
missile[mi]._mispllvl; k > 0; k--) {
2198 void AddBlodboil(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2203 void AddRepair(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2219 void AddRecharge(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2235 void AddDisarm(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2250 void AddApoca(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2276 void AddFlame(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2281 for (i = dam; i > 0; i--) {
2300 void AddFlamec(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2302 if (sx == dx && sy == dy) {
2315 void AddCbolt(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char micaster,
int id,
int dam)
2319 if (micaster == 0) {
2332 if (sx == dx && sy == dy) {
2347 void AddHbolt(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char micaster,
int id,
int dam)
2351 if (sx == dx && sy == dy) {
2373 void AddResurrect(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2384 void AddResurrectBeam(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2395 void AddTelekinesis(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2403 void AddBoneSpirit(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2405 if (sx == dx && sy == dy) {
2424 if (
plr[
id]._pHitPoints <= 0)
2429 void AddRportal(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2441 void AddDiabApoca(
int mi,
int sx,
int sy,
int dx,
int dy,
int midir,
char mienemy,
int id,
int dam)
2446 if (
plr[pnum].plractive) {
2455 int AddMissile(
int sx,
int sy,
int dx,
int dy,
int midir,
int mitype,
char micaster,
int id,
int midam,
int spllvl)
2529 AddMissile(
missile[i]._mix,
missile[i]._miy, sx, sy, dir,
MIS_FIREBOLT, 0,
missile[i]._misource,
missile[i]._midam,
GetSpellLevel(
missile[i]._misource,
SPL_FIREBOLT));
2548 int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 };
2549 int tx, ty, dp, l, m, src, k, tid;
2554 for (l = 0; l < 6; l++) {
2585 int p, mind, maxd, rst;
2764 }
else if (!
missile[i]._mirange) {
2787 if (
missile[i]._miHitFlag == TRUE)
2837 int ExpLight[14] = { 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 12 };
2865 int dam, id, px, py, mx, my;
2871 if (
missile[i]._micaster == 0) {
2943 int pn, dam, p, mx, my;
2950 if (
missile[i]._micaster == 0) {
2970 if (
missile[i]._misource == -1) {
2979 if (
missile[i]._misource != -1) {
3037 if (
missile[i]._miHitFlag == TRUE)
3048 int ExpLight[17] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15 };
3082 if (
missile[i]._misource != -1)
3094 if (
missile[i]._micaster == 0) {
3095 if (
missile[i]._misource != -1)
3105 if (
missile[i]._misource != -1)
3114 if (
missile[i]._micaster == 0) {
3115 if (
missile[i]._misource != -1)
3149 if (
plr[
id]._pMana <= 0 || !
plr[
id].plractive)
3151 if (
plr[
id]._pHitPoints <
missile[i]._miVar1) {
3153 if (
missile[i]._mispllvl > 0) {
3162 if (
plr[
id]._pMana >= diff) {
3174 if (
plr[
id]._pHitPoints < 0)
3176 if (!(
plr[
id]._pHitPoints >> 6) &&
id ==
myplr) {
3189 if (
missile[i]._mirange == 0) {
3222 if (!
missile[i]._mirange ||
plr[src]._pHitPoints <= 0) {
3232 int ExpLight[14] = { 2, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 12 };
3247 if (
missile[i]._miHitFlag == TRUE)
3273 int j, k, sx, sy, sx1, sy1, ex;
3288 if (!(
missile[i]._mirange % 16)) {
3290 for (j = 0; j < 23 && ex != -1; j++) {
3325 if (
missile[i]._mirange == 14) {
3333 if (
missile[i]._miVar3 > 15) {
3335 }
else if (
missile[i]._miVar3 > 0) {
3339 if (
missile[i]._mirange == 0) {
3349 int sx, sy, id, l, n, m, k, rad, tx, ty, dir;
3350 int CrawlNum[19] = { 0, 3, 12, 45, 94, 159, 240, 337, 450, 579, 724, 885, 1062, 1255, 1464, 1689, 1930, 2187, 2460 };
3360 for (m = 1; m < rad; m++) {
3366 if (tx > 0 && tx < MAXDUNX && ty > 0 && ty <
MAXDUNY &&
dMonster[tx][ty] > 0) {
3391 int ExpLight[10] = { 9, 10, 11, 12, 11, 10, 8, 6, 4, 2 };
3395 if (
missile[i]._miVar2 == 1) {
3422 int ExpLight[10] = { 9, 10, 11, 12, 11, 10, 8, 6, 4, 2 };
3464 if (
missile[i]._mirange <= 0) {
3508 if (
monster[m]._mhitpoints > 0)
3522 if (
missile[i]._miHitFlag == TRUE)
3531 int mix, miy, mix2, miy2, omx, omy, monst;
3569 if (
monster[monst]._uniqtype != 0)
3577 int src, enemy, ax, ay, bx, by, cx, cy, j;
3596 if ((bx != ax || by != ay) && (
missile[i]._miVar1 & 1 && (abs(ax - cx) >= 4 || abs(ay - cy) >= 4) ||
missile[i]._miVar2 > 1) &&
PosOkMonst(
missile[i]._misource, ax, ay)) {
3623 if (
missile[i]._mirange == 0) {
3686 int sx, sy, sd, nxa, nxb, nya, nyb, dira, dirb;
3701 dira = (sd - 2) & 7;
3702 dirb = (sd + 2) & 7;
3741 int k, id, sx, sy, dir, en, sx1, sy1, dam;
3756 for (k = 0; k < 23; k++) {
3788 if (
missile[i]._miVar2 <= 0) {
3839 int bpath[16] = { -1, 0, 1, -1, 0, 1, -1, -1, 0, 0, 1, 1, 0, 1, -1, 0 };
3855 if (
missile[i]._miHitFlag == TRUE) {
3912 int mid, sd, dam, cx, cy, px, py, id;
3954 if (
missile[i]._miVar3 == 1) {
3984 int id, mid, sd, dam;
3990 if (
missile[i]._mimfnum == 8) {
4006 if (
missile[i]._miVar3 == 1) {
4043 int ExpLight[17] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15 };
4095 if (
missile[mi]._miAnimFrame < 1)