If cleanup + bugfixes (#2273)
This commit is contained in:
parent
51b71b01c9
commit
373f1db22e
7 changed files with 66 additions and 313 deletions
|
|
@ -881,50 +881,23 @@ static void DRLG_L1Shadows()
|
|||
for (int x = 1; x < DMAXX; x++) {
|
||||
if (dungeon[x - 1][y] == 139 && L5dflags[x - 1][y] == 0) {
|
||||
uint8_t tnv3 = 139;
|
||||
if (dungeon[x][y] == 29)
|
||||
tnv3 = 141;
|
||||
if (dungeon[x][y] == 32)
|
||||
tnv3 = 141;
|
||||
if (dungeon[x][y] == 35)
|
||||
tnv3 = 141;
|
||||
if (dungeon[x][y] == 37)
|
||||
tnv3 = 141;
|
||||
if (dungeon[x][y] == 38)
|
||||
tnv3 = 141;
|
||||
if (dungeon[x][y] == 39)
|
||||
if (IsAnyOf(dungeon[x][y], 29, 32, 35, 37, 38, 39)) {
|
||||
tnv3 = 141;
|
||||
}
|
||||
dungeon[x - 1][y] = tnv3;
|
||||
}
|
||||
if (dungeon[x - 1][y] == 149 && L5dflags[x - 1][y] == 0) {
|
||||
uint8_t tnv3 = 149;
|
||||
if (dungeon[x][y] == 29)
|
||||
tnv3 = 153;
|
||||
if (dungeon[x][y] == 32)
|
||||
tnv3 = 153;
|
||||
if (dungeon[x][y] == 35)
|
||||
tnv3 = 153;
|
||||
if (dungeon[x][y] == 37)
|
||||
tnv3 = 153;
|
||||
if (dungeon[x][y] == 38)
|
||||
tnv3 = 153;
|
||||
if (dungeon[x][y] == 39)
|
||||
if (IsAnyOf(dungeon[x][y], 29, 32, 35, 37, 38, 39)) {
|
||||
tnv3 = 153;
|
||||
}
|
||||
dungeon[x - 1][y] = tnv3;
|
||||
}
|
||||
if (dungeon[x - 1][y] == 148 && L5dflags[x - 1][y] == 0) {
|
||||
uint8_t tnv3 = 148;
|
||||
if (dungeon[x][y] == 29)
|
||||
tnv3 = 154;
|
||||
if (dungeon[x][y] == 32)
|
||||
tnv3 = 154;
|
||||
if (dungeon[x][y] == 35)
|
||||
tnv3 = 154;
|
||||
if (dungeon[x][y] == 37)
|
||||
tnv3 = 154;
|
||||
if (dungeon[x][y] == 38)
|
||||
tnv3 = 154;
|
||||
if (dungeon[x][y] == 39)
|
||||
if (IsAnyOf(dungeon[x][y], 29, 32, 35, 37, 38, 39)) {
|
||||
tnv3 = 154;
|
||||
}
|
||||
dungeon[x - 1][y] = tnv3;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1923,7 +1923,7 @@ static void CreateDoorType(int nX, int nY)
|
|||
if (predungeon[nX][nY + 1] == 68) {
|
||||
return;
|
||||
}
|
||||
if (predungeon[nX][nY] == 66 || predungeon[nX][nY] == 67 || predungeon[nX][nY] == 65 || predungeon[nX][nY] == 69) {
|
||||
if (IsAnyOf(predungeon[nX][nY], 65, 66, 67, 69)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -2717,43 +2717,23 @@ static bool CreateDungeon()
|
|||
|
||||
for (int j = 0; j < DMAXY; j++) { /// BUGFIX: change '<=' to '<' (fixed)
|
||||
for (int i = 0; i < DMAXX; i++) { /// BUGFIX: change '<=' to '<' (fixed)
|
||||
if (predungeon[i][j] == 67) {
|
||||
predungeon[i][j] = 35;
|
||||
}
|
||||
if (predungeon[i][j] == 66) {
|
||||
predungeon[i][j] = 35;
|
||||
}
|
||||
if (predungeon[i][j] == 69) {
|
||||
predungeon[i][j] = 35;
|
||||
}
|
||||
if (predungeon[i][j] == 65) {
|
||||
if (IsAnyOf(predungeon[i][j], 65, 66, 67, 69)) {
|
||||
predungeon[i][j] = 35;
|
||||
}
|
||||
if (predungeon[i][j] == 44) {
|
||||
predungeon[i][j] = 46;
|
||||
if (predungeon[i - 1][j - 1] == 32) {
|
||||
predungeon[i - 1][j - 1] = 35;
|
||||
}
|
||||
if (predungeon[i - 1][j] == 32) {
|
||||
predungeon[i - 1][j] = 35;
|
||||
}
|
||||
if (predungeon[i - 1][1 + j] == 32) {
|
||||
predungeon[i - 1][1 + j] = 35;
|
||||
}
|
||||
if (predungeon[i + 1][j - 1] == 32) {
|
||||
predungeon[i + 1][j - 1] = 35;
|
||||
}
|
||||
if (predungeon[i + 1][j] == 32) {
|
||||
predungeon[i + 1][j] = 35;
|
||||
}
|
||||
if (predungeon[i + 1][1 + j] == 32) {
|
||||
predungeon[i + 1][1 + j] = 35;
|
||||
}
|
||||
if (predungeon[i][j - 1] == 32) {
|
||||
predungeon[i][j - 1] = 35;
|
||||
}
|
||||
if (predungeon[i][j + 1] == 32) {
|
||||
predungeon[i][j + 1] = 35;
|
||||
for (int a = -1; a <= 1; a++) {
|
||||
for (int b = -1; b <= 1; b++) {
|
||||
if (a == 0 && b == 0)
|
||||
continue;
|
||||
if (i + a < 0 || j + b < 0)
|
||||
continue;
|
||||
if (i + a >= DMAXX || j + b >= DMAXY)
|
||||
continue;
|
||||
if (predungeon[i + a][j + b] == 32) {
|
||||
predungeon[i + a][j + b] = 35;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2846,7 +2826,7 @@ static void DRLG_L2TransFix()
|
|||
for (int j = 0; j < DMAXY; j++) {
|
||||
int xx = 16;
|
||||
for (int i = 0; i < DMAXX; i++) {
|
||||
if (dungeon[i][j] == 14 && dungeon[i][j - 1] == 10) {
|
||||
if (dungeon[i][j] == 14 && dungeon[i][j - 1] == 10) { // BUGFIX: check if j >= 1
|
||||
dTransVal[xx + 1][yy] = dTransVal[xx][yy];
|
||||
dTransVal[xx + 1][yy + 1] = dTransVal[xx][yy];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1788,22 +1788,7 @@ static bool WoodVertU(int i, int y)
|
|||
{
|
||||
if ((dungeon[i + 1][y] > 152 || dungeon[i + 1][y] < 130)
|
||||
&& (dungeon[i - 1][y] > 152 || dungeon[i - 1][y] < 130)) {
|
||||
if (dungeon[i][y] == 7) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[i][y] == 10) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[i][y] == 126) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[i][y] == 129) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[i][y] == 134) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[i][y] == 136) {
|
||||
if (IsAnyOf(dungeon[i][y], 7, 10, 126, 129, 134, 136)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -1815,16 +1800,7 @@ static bool WoodVertD(int i, int y)
|
|||
{
|
||||
if ((dungeon[i + 1][y] > 152 || dungeon[i + 1][y] < 130)
|
||||
&& (dungeon[i - 1][y] > 152 || dungeon[i - 1][y] < 130)) {
|
||||
if (dungeon[i][y] == 7) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[i][y] == 2) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[i][y] == 134) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[i][y] == 136) {
|
||||
if (IsAnyOf(dungeon[i][y], 2, 7, 134, 136)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -1836,22 +1812,7 @@ static bool WoodHorizL(int x, int j)
|
|||
{
|
||||
if ((dungeon[x][j + 1] > 152 || dungeon[x][j + 1] < 130)
|
||||
&& (dungeon[x][j - 1] > 152 || dungeon[x][j - 1] < 130)) {
|
||||
if (dungeon[x][j] == 7) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[x][j] == 9) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[x][j] == 121) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[x][j] == 124) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[x][j] == 135) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[x][j] == 137) {
|
||||
if (IsAnyOf(dungeon[x][j], 7, 9, 121, 124, 135, 137)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -1863,16 +1824,7 @@ static bool WoodHorizR(int x, int j)
|
|||
{
|
||||
if ((dungeon[x][j + 1] > 152 || dungeon[x][j + 1] < 130)
|
||||
&& (dungeon[x][j - 1] > 152 || dungeon[x][j - 1] < 130)) {
|
||||
if (dungeon[x][j] == 7) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[x][j] == 4) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[x][j] == 135) {
|
||||
return true;
|
||||
}
|
||||
if (dungeon[x][j] == 137) {
|
||||
if (IsAnyOf(dungeon[x][j], 4, 7, 135, 137)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -1914,13 +1866,7 @@ void FenceDoorFix()
|
|||
}
|
||||
}
|
||||
if (dungeon[i][j] == 146) {
|
||||
if (dungeon[i + 1][j] != 130 && dungeon[i - 1][j] != 130
|
||||
&& dungeon[i + 1][j] != 132 && dungeon[i - 1][j] != 132
|
||||
&& dungeon[i + 1][j] != 133 && dungeon[i - 1][j] != 133
|
||||
&& dungeon[i + 1][j] != 134 && dungeon[i - 1][j] != 134
|
||||
&& dungeon[i + 1][j] != 136 && dungeon[i - 1][j] != 136
|
||||
&& dungeon[i + 1][j] != 138 && dungeon[i - 1][j] != 138
|
||||
&& dungeon[i + 1][j] != 140 && dungeon[i - 1][j] != 140) {
|
||||
if (IsNoneOf(dungeon[i + 1][j], 130, 132, 133, 145, 136, 138, 140) && IsNoneOf(dungeon[i - 1][j], 130, 132, 133, 145, 136, 138, 140)) {
|
||||
dungeon[i][j] = 7;
|
||||
continue;
|
||||
}
|
||||
|
|
@ -1933,13 +1879,7 @@ void FenceDoorFix()
|
|||
}
|
||||
}
|
||||
if (dungeon[i][j] == 147) {
|
||||
if (dungeon[i][j + 1] != 131 && dungeon[i][j - 1] != 131
|
||||
&& dungeon[i][j + 1] != 132 && dungeon[i][j - 1] != 132
|
||||
&& dungeon[i][j + 1] != 133 && dungeon[i][j - 1] != 133
|
||||
&& dungeon[i][j + 1] != 135 && dungeon[i][j - 1] != 135
|
||||
&& dungeon[i][j + 1] != 137 && dungeon[i][j - 1] != 137
|
||||
&& dungeon[i][j + 1] != 138 && dungeon[i][j - 1] != 138
|
||||
&& dungeon[i][j + 1] != 139 && dungeon[i][j - 1] != 139) {
|
||||
if (IsNoneOf(dungeon[i][j + 1], 131, 132, 133, 135, 137, 138, 139) && IsNoneOf(dungeon[i][j - 1], 131, 132, 133, 135, 137, 138, 139)) {
|
||||
dungeon[i][j] = 7;
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -157,20 +157,7 @@ static void DRLG_L4Shadows()
|
|||
{
|
||||
for (int y = 1; y < DMAXY; y++) {
|
||||
for (int x = 1; x < DMAXY; x++) {
|
||||
bool okflag = false;
|
||||
if (dungeon[x][y] == 3) {
|
||||
okflag = true;
|
||||
}
|
||||
if (dungeon[x][y] == 4) {
|
||||
okflag = true;
|
||||
}
|
||||
if (dungeon[x][y] == 8) {
|
||||
okflag = true;
|
||||
}
|
||||
if (dungeon[x][y] == 15) {
|
||||
okflag = true;
|
||||
}
|
||||
if (!okflag) {
|
||||
if (IsNoneOf(dungeon[x][y], 3, 4, 8, 15)) {
|
||||
continue;
|
||||
}
|
||||
if (dungeon[x - 1][y] == 6) {
|
||||
|
|
@ -274,36 +261,9 @@ static int L4HWallOk(int i, int j)
|
|||
}
|
||||
}
|
||||
|
||||
bool wallok = false;
|
||||
|
||||
if (dungeon[i + x][j] == 10) {
|
||||
wallok = true;
|
||||
}
|
||||
if (dungeon[i + x][j] == 12) {
|
||||
wallok = true;
|
||||
}
|
||||
if (dungeon[i + x][j] == 13) {
|
||||
wallok = true;
|
||||
}
|
||||
if (dungeon[i + x][j] == 15) {
|
||||
wallok = true;
|
||||
}
|
||||
if (dungeon[i + x][j] == 16) {
|
||||
wallok = true;
|
||||
}
|
||||
if (dungeon[i + x][j] == 21) {
|
||||
wallok = true;
|
||||
}
|
||||
if (dungeon[i + x][j] == 22) {
|
||||
wallok = true;
|
||||
}
|
||||
if (x <= 3) {
|
||||
wallok = false;
|
||||
}
|
||||
|
||||
if (wallok) {
|
||||
if (IsAnyOf(dungeon[i + x][j], 10, 12, 13, 15, 16, 21, 22) && x > 3)
|
||||
return x;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -322,39 +282,9 @@ static int L4VWallOk(int i, int j)
|
|||
}
|
||||
}
|
||||
|
||||
bool wallok = false;
|
||||
|
||||
if (dungeon[i][j + y] == 8) {
|
||||
wallok = true;
|
||||
}
|
||||
if (dungeon[i][j + y] == 9) {
|
||||
wallok = true;
|
||||
}
|
||||
if (dungeon[i][j + y] == 11) {
|
||||
wallok = true;
|
||||
}
|
||||
if (dungeon[i][j + y] == 14) {
|
||||
wallok = true;
|
||||
}
|
||||
if (dungeon[i][j + y] == 15) {
|
||||
wallok = true;
|
||||
}
|
||||
if (dungeon[i][j + y] == 16) {
|
||||
wallok = true;
|
||||
}
|
||||
if (dungeon[i][j + y] == 21) {
|
||||
wallok = true;
|
||||
}
|
||||
if (dungeon[i][j + y] == 23) {
|
||||
wallok = true;
|
||||
}
|
||||
if (y <= 3) {
|
||||
wallok = false;
|
||||
}
|
||||
|
||||
if (wallok) {
|
||||
if (IsAnyOf(dungeon[i][j + y], 9, 11, 14, 15, 16, 21, 23) && y > 3)
|
||||
return y;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -452,91 +382,13 @@ static void L4AddWall()
|
|||
if (dflags[i][j] != 0) {
|
||||
continue;
|
||||
}
|
||||
if (dungeon[i][j] == 10 && GenerateRnd(100) < WALL_CHANCE) {
|
||||
if (IsAnyOf(dungeon[i][j], 10, 12, 13, 15, 16, 21, 22) && GenerateRnd(100) < WALL_CHANCE) {
|
||||
int x = L4HWallOk(i, j);
|
||||
if (x != -1) {
|
||||
L4HorizWall(i, j, x);
|
||||
}
|
||||
}
|
||||
if (dungeon[i][j] == 12 && GenerateRnd(100) < WALL_CHANCE) {
|
||||
int x = L4HWallOk(i, j);
|
||||
if (x != -1) {
|
||||
L4HorizWall(i, j, x);
|
||||
}
|
||||
}
|
||||
if (dungeon[i][j] == 13 && GenerateRnd(100) < WALL_CHANCE) {
|
||||
int x = L4HWallOk(i, j);
|
||||
if (x != -1) {
|
||||
L4HorizWall(i, j, x);
|
||||
}
|
||||
}
|
||||
if (dungeon[i][j] == 15 && GenerateRnd(100) < WALL_CHANCE) {
|
||||
int x = L4HWallOk(i, j);
|
||||
if (x != -1) {
|
||||
L4HorizWall(i, j, x);
|
||||
}
|
||||
}
|
||||
if (dungeon[i][j] == 16 && GenerateRnd(100) < WALL_CHANCE) {
|
||||
int x = L4HWallOk(i, j);
|
||||
if (x != -1) {
|
||||
L4HorizWall(i, j, x);
|
||||
}
|
||||
}
|
||||
if (dungeon[i][j] == 21 && GenerateRnd(100) < WALL_CHANCE) {
|
||||
int x = L4HWallOk(i, j);
|
||||
if (x != -1) {
|
||||
L4HorizWall(i, j, x);
|
||||
}
|
||||
}
|
||||
if (dungeon[i][j] == 22 && GenerateRnd(100) < WALL_CHANCE) {
|
||||
int x = L4HWallOk(i, j);
|
||||
if (x != -1) {
|
||||
L4HorizWall(i, j, x);
|
||||
}
|
||||
}
|
||||
if (dungeon[i][j] == 8 && GenerateRnd(100) < WALL_CHANCE) {
|
||||
int y = L4VWallOk(i, j);
|
||||
if (y != -1) {
|
||||
L4VertWall(i, j, y);
|
||||
}
|
||||
}
|
||||
if (dungeon[i][j] == 9 && GenerateRnd(100) < WALL_CHANCE) {
|
||||
int y = L4VWallOk(i, j);
|
||||
if (y != -1) {
|
||||
L4VertWall(i, j, y);
|
||||
}
|
||||
}
|
||||
if (dungeon[i][j] == 11 && GenerateRnd(100) < WALL_CHANCE) {
|
||||
int y = L4VWallOk(i, j);
|
||||
if (y != -1) {
|
||||
L4VertWall(i, j, y);
|
||||
}
|
||||
}
|
||||
if (dungeon[i][j] == 14 && GenerateRnd(100) < WALL_CHANCE) {
|
||||
int y = L4VWallOk(i, j);
|
||||
if (y != -1) {
|
||||
L4VertWall(i, j, y);
|
||||
}
|
||||
}
|
||||
if (dungeon[i][j] == 15 && GenerateRnd(100) < WALL_CHANCE) {
|
||||
int y = L4VWallOk(i, j);
|
||||
if (y != -1) {
|
||||
L4VertWall(i, j, y);
|
||||
}
|
||||
}
|
||||
if (dungeon[i][j] == 16 && GenerateRnd(100) < WALL_CHANCE) {
|
||||
int y = L4VWallOk(i, j);
|
||||
if (y != -1) {
|
||||
L4VertWall(i, j, y);
|
||||
}
|
||||
}
|
||||
if (dungeon[i][j] == 21 && GenerateRnd(100) < WALL_CHANCE) {
|
||||
int y = L4VWallOk(i, j);
|
||||
if (y != -1) {
|
||||
L4VertWall(i, j, y);
|
||||
}
|
||||
}
|
||||
if (dungeon[i][j] == 23 && GenerateRnd(100) < WALL_CHANCE) {
|
||||
if (IsAnyOf(dungeon[i][j], 8, 9, 11, 14, 15, 16, 21, 23) && GenerateRnd(100) < WALL_CHANCE) {
|
||||
int y = L4VWallOk(i, j);
|
||||
if (y != -1) {
|
||||
L4VertWall(i, j, y);
|
||||
|
|
@ -1436,7 +1288,7 @@ static void DRLG_L4TransFix()
|
|||
for (int j = 0; j < DMAXY; j++) {
|
||||
int xx = 16;
|
||||
for (int i = 0; i < DMAXX; i++) {
|
||||
if (IsDURWall(dungeon[i][j]) && dungeon[i][j - 1] == 18) {
|
||||
if (IsDURWall(dungeon[i][j]) && dungeon[i][j - 1] == 18) { // BUGFIX: check if j >= 1
|
||||
dTransVal[xx + 1][yy] = dTransVal[xx][yy];
|
||||
dTransVal[xx + 1][yy + 1] = dTransVal[xx][yy];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,6 +43,30 @@
|
|||
|
||||
namespace devilution {
|
||||
|
||||
template <typename V, typename X>
|
||||
bool IsAnyOf(const V &v, X x)
|
||||
{
|
||||
return v == x;
|
||||
}
|
||||
|
||||
template <typename V, typename X, typename... Xs>
|
||||
bool IsAnyOf(const V &v, X x, Xs... xs)
|
||||
{
|
||||
return IsAnyOf(v, x) || IsAnyOf(v, xs...);
|
||||
}
|
||||
|
||||
template <typename V, typename X>
|
||||
bool IsNoneOf(const V &v, X x)
|
||||
{
|
||||
return v != x;
|
||||
}
|
||||
|
||||
template <typename V, typename X, typename... Xs>
|
||||
bool IsNoneOf(const V &v, X x, Xs... xs)
|
||||
{
|
||||
return IsNoneOf(v, x) && IsNoneOf(v, xs...);
|
||||
}
|
||||
|
||||
struct CelOutputBuffer {
|
||||
// 8-bit palletized surface.
|
||||
SDL_Surface *surface;
|
||||
|
|
|
|||
|
|
@ -1276,20 +1276,12 @@ void NewMonsterAnim(int i, AnimStruct *anim, Direction md, AnimationDistribution
|
|||
|
||||
bool M_Ranged(int i)
|
||||
{
|
||||
char ai = monster[i]._mAi;
|
||||
return ai == AI_SKELBOW || ai == AI_GOATBOW || ai == AI_SUCC || ai == AI_LAZHELP;
|
||||
return IsAnyOf(monster[i]._mAi, AI_SKELBOW, AI_GOATBOW, AI_SUCC, AI_LAZHELP);
|
||||
}
|
||||
|
||||
bool M_Talker(int i)
|
||||
{
|
||||
char ai = monster[i]._mAi;
|
||||
return ai == AI_LAZURUS
|
||||
|| ai == AI_WARLORD
|
||||
|| ai == AI_GARBUD
|
||||
|| ai == AI_ZHAR
|
||||
|| ai == AI_SNOTSPIL
|
||||
|| ai == AI_LACHDAN
|
||||
|| ai == AI_LAZHELP;
|
||||
return IsAnyOf(monster[i]._mAi, AI_LAZURUS, AI_WARLORD, AI_GARBUD, AI_ZHAR, AI_SNOTSPIL, AI_LACHDAN, AI_LAZHELP);
|
||||
}
|
||||
|
||||
void M_Enemy(int i)
|
||||
|
|
@ -5152,9 +5144,7 @@ bool PosOkMonst3(int i, Point position)
|
|||
if (ret && dObject[position.x][position.y] != 0) {
|
||||
oi = dObject[position.x][position.y] > 0 ? dObject[position.x][position.y] - 1 : -(dObject[position.x][position.y] + 1);
|
||||
objtype = object[oi]._otype;
|
||||
isdoor = objtype == OBJ_L1LDOOR || objtype == OBJ_L1RDOOR
|
||||
|| objtype == OBJ_L2LDOOR || objtype == OBJ_L2RDOOR
|
||||
|| objtype == OBJ_L3LDOOR || objtype == OBJ_L3RDOOR;
|
||||
isdoor = IsAnyOf(objtype, OBJ_L1LDOOR, OBJ_L1RDOOR, OBJ_L2LDOOR, OBJ_L2RDOOR, OBJ_L3LDOOR, OBJ_L3RDOOR);
|
||||
if (object[oi]._oSolidFlag && !isdoor) {
|
||||
ret = false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -697,7 +697,7 @@ void AddObjTraps()
|
|||
|
||||
if (GenerateRnd(2) == 0) {
|
||||
xp = i - 1;
|
||||
while (!nSolidTable[dPiece[xp][j]])
|
||||
while (!nSolidTable[dPiece[xp][j]]) // BUGFIX: check if xp >= 0
|
||||
xp--;
|
||||
|
||||
if (!WallTrapLocOkK(xp, j) || i - xp <= 1)
|
||||
|
|
@ -710,7 +710,7 @@ void AddObjTraps()
|
|||
object[oi]._oTrapFlag = true;
|
||||
} else {
|
||||
yp = j - 1;
|
||||
while (!nSolidTable[dPiece[i][yp]])
|
||||
while (!nSolidTable[dPiece[i][yp]]) // BUGFIX: check if yp >= 0
|
||||
yp--;
|
||||
|
||||
if (!WallTrapLocOkK(i, yp) || j - yp <= 1)
|
||||
|
|
@ -3632,13 +3632,7 @@ bool OperateShrineThaumaturgic(int pnum)
|
|||
for (int j = 0; j < nobjects; j++) {
|
||||
int v1 = objectactive[j];
|
||||
assert((DWORD)v1 < MAXOBJECTS);
|
||||
if ((object[v1]._otype == OBJ_CHEST1
|
||||
|| object[v1]._otype == OBJ_CHEST2
|
||||
|| object[v1]._otype == OBJ_CHEST3
|
||||
|| object[v1]._otype == OBJ_TCHEST1
|
||||
|| object[v1]._otype == OBJ_TCHEST2
|
||||
|| object[v1]._otype == OBJ_TCHEST3)
|
||||
&& object[v1]._oSelFlag == 0) {
|
||||
if (IsAnyOf(object[v1]._otype, OBJ_CHEST1, OBJ_CHEST2, OBJ_CHEST3, OBJ_TCHEST1, OBJ_TCHEST2, OBJ_TCHEST3) && object[v1]._oSelFlag == 0) {
|
||||
object[v1]._oRndSeed = AdvanceRndSeed();
|
||||
object[v1]._oSelFlag = 1;
|
||||
object[v1]._oAnimFrame -= 2;
|
||||
|
|
@ -5262,7 +5256,7 @@ void SyncCrux(int i)
|
|||
for (j = 0; j < nobjects; j++) {
|
||||
oi = objectactive[j];
|
||||
type = object[oi]._otype;
|
||||
if (type != OBJ_CRUX1 && type != OBJ_CRUX2 && type != OBJ_CRUX3)
|
||||
if (IsNoneOf(type, OBJ_CRUX1, OBJ_CRUX2, OBJ_CRUX3))
|
||||
continue;
|
||||
if (object[i]._oVar8 != object[oi]._oVar8 || object[oi]._oBreak == -1)
|
||||
continue;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue