| 3901 | } |
| 3902 | |
| 3903 | void MI_Element(int i) |
| 3904 | { |
| 3905 | int mid, sd, dam, cx, cy, px, py, id; |
| 3906 | |
| 3907 | missile[i]._mirange--; |
| 3908 | dam = missile[i]._midam; |
| 3909 | id = missile[i]._misource; |
| 3910 | if (missile[i]._miAnimType == MFILE_BIGEXP) { |
| 3911 | cx = missile[i]._mix; |
| 3912 | cy = missile[i]._miy; |
| 3913 | px = plr[id].WorldX; |
| 3914 | py = plr[id].WorldY; |
| 3915 | ChangeLight(missile[i]._mlid, cx, cy, missile[i]._miAnimFrame); |
| 3916 | if (!CheckBlock(px, py, cx, cy)) |
| 3917 | CheckMissileCol(i, dam, dam, TRUE, cx, cy, TRUE); |
| 3918 | if (!CheckBlock(px, py, cx, cy + 1)) |
| 3919 | CheckMissileCol(i, dam, dam, TRUE, cx, cy + 1, TRUE); |
| 3920 | if (!CheckBlock(px, py, cx, cy - 1)) |
| 3921 | CheckMissileCol(i, dam, dam, TRUE, cx, cy - 1, TRUE); |
| 3922 | if (!CheckBlock(px, py, cx + 1, cy)) |
| 3923 | CheckMissileCol(i, dam, dam, TRUE, cx + 1, cy, TRUE); /* check x/y */ |
| 3924 | if (!CheckBlock(px, py, cx + 1, cy - 1)) |
| 3925 | CheckMissileCol(i, dam, dam, TRUE, cx + 1, cy - 1, TRUE); |
| 3926 | if (!CheckBlock(px, py, cx + 1, cy + 1)) |
| 3927 | CheckMissileCol(i, dam, dam, TRUE, cx + 1, cy + 1, TRUE); |
| 3928 | if (!CheckBlock(px, py, cx - 1, cy)) |
| 3929 | CheckMissileCol(i, dam, dam, TRUE, cx - 1, cy, TRUE); |
| 3930 | if (!CheckBlock(px, py, cx - 1, cy + 1)) |
| 3931 | CheckMissileCol(i, dam, dam, TRUE, cx - 1, cy + 1, TRUE); |
| 3932 | if (!CheckBlock(px, py, cx - 1, cy - 1)) |
| 3933 | CheckMissileCol(i, dam, dam, TRUE, cx - 1, cy - 1, TRUE); |
| 3934 | if (!missile[i]._mirange) { |
| 3935 | missile[i]._miDelFlag = TRUE; |
| 3936 | AddUnLight(missile[i]._mlid); |
| 3937 | } |
| 3938 | } else { |
| 3939 | missile[i]._mitxoff += missile[i]._mixvel; |
| 3940 | missile[i]._mityoff += missile[i]._miyvel; |
| 3941 | GetMissilePos(i); |
| 3942 | cx = missile[i]._mix; |
| 3943 | cy = missile[i]._miy; |
| 3944 | CheckMissileCol(i, dam, dam, FALSE, cx, cy, FALSE); |
| 3945 | if (!missile[i]._miVar3 && cx == missile[i]._miVar4 && cy == missile[i]._miVar5) |
| 3946 | missile[i]._miVar3 = 1; |
| 3947 | if (missile[i]._miVar3 == 1) { |
| 3948 | missile[i]._miVar3 = 2; |
| 3949 | missile[i]._mirange = 255; |
| 3950 | mid = FindClosest(cx, cy, 19); |
| 3951 | if (mid > 0) { |
| 3952 | sd = GetDirection8(cx, cy, monster[mid]._mx, monster[mid]._my); |
| 3953 | SetMissDir(i, sd); |
| 3954 | GetMissileVel(i, cx, cy, monster[mid]._mx, monster[mid]._my, 16); |
| 3955 | } else { |
| 3956 | sd = plr[id]._pdir; |
| 3957 | SetMissDir(i, sd); |
| 3958 | GetMissileVel(i, cx, cy, cx + XDirAdd[sd], cy + YDirAdd[sd], 16); |
| 3959 | } |
| 3960 | } |
nothing calls this directly
no test coverage detected