|
|
|
|
@ -601,49 +601,65 @@ void Theme_MonstPit(int t)
|
|
|
|
|
// - t: theme number (index into themes array).
|
|
|
|
|
void Theme_SkelRoom(int t) |
|
|
|
|
{ |
|
|
|
|
int xp, yp; |
|
|
|
|
int xp, yp, i; |
|
|
|
|
char monstrnd[4] = { 6, 7, 3, 9 }; |
|
|
|
|
|
|
|
|
|
TFit_SkelRoom(t); |
|
|
|
|
|
|
|
|
|
xp = themex; |
|
|
|
|
yp = themey; |
|
|
|
|
|
|
|
|
|
AddObject(OBJ_SKFIRE, xp, yp); |
|
|
|
|
if (random(0, monstrnd[leveltype - 1]) != 0) { |
|
|
|
|
SpawnSkeleton(PreSpawnSkeleton(), xp - 1, yp - 1); |
|
|
|
|
|
|
|
|
|
if(random(0, monstrnd[leveltype - 1]) != 0) { |
|
|
|
|
i = PreSpawnSkeleton(); |
|
|
|
|
SpawnSkeleton(i, xp - 1, yp - 1); |
|
|
|
|
} else { |
|
|
|
|
AddObject(OBJ_BANNERL, xp - 1, yp - 1); |
|
|
|
|
} |
|
|
|
|
SpawnSkeleton(PreSpawnSkeleton(), xp, yp - 1); |
|
|
|
|
if (random(0, monstrnd[leveltype - 1]) != 0) { |
|
|
|
|
SpawnSkeleton(PreSpawnSkeleton(), xp + 1, yp - 1); |
|
|
|
|
|
|
|
|
|
i = PreSpawnSkeleton(); |
|
|
|
|
SpawnSkeleton(i, xp, yp - 1); |
|
|
|
|
|
|
|
|
|
if(random(0, monstrnd[leveltype - 1]) != 0) { |
|
|
|
|
i = PreSpawnSkeleton(); |
|
|
|
|
SpawnSkeleton(i, xp + 1, yp - 1); |
|
|
|
|
} else { |
|
|
|
|
AddObject(OBJ_BANNERR, xp + 1, yp - 1); |
|
|
|
|
} |
|
|
|
|
if (random(0, monstrnd[leveltype - 1]) != 0) { |
|
|
|
|
SpawnSkeleton(PreSpawnSkeleton(), xp - 1, yp); |
|
|
|
|
if(random(0, monstrnd[leveltype - 1]) != 0) { |
|
|
|
|
i = PreSpawnSkeleton(); |
|
|
|
|
SpawnSkeleton(i, xp - 1, yp); |
|
|
|
|
} else { |
|
|
|
|
AddObject(OBJ_BANNERM, xp - 1, yp); |
|
|
|
|
} |
|
|
|
|
if (random(0, monstrnd[leveltype - 1]) != 0) { |
|
|
|
|
SpawnSkeleton(PreSpawnSkeleton(), xp + 1, yp); |
|
|
|
|
if(random(0, monstrnd[leveltype - 1]) != 0) { |
|
|
|
|
i = PreSpawnSkeleton(); |
|
|
|
|
SpawnSkeleton(i, xp + 1, yp); |
|
|
|
|
} else { |
|
|
|
|
AddObject(OBJ_BANNERM, xp + 1, yp); |
|
|
|
|
} |
|
|
|
|
if (random(0, monstrnd[leveltype - 1]) != 0) { |
|
|
|
|
SpawnSkeleton(PreSpawnSkeleton(), xp - 1, yp + 1); |
|
|
|
|
if(random(0, monstrnd[leveltype - 1]) != 0) { |
|
|
|
|
i = PreSpawnSkeleton(); |
|
|
|
|
SpawnSkeleton(i, xp - 1, yp + 1); |
|
|
|
|
} else { |
|
|
|
|
AddObject(OBJ_BANNERR, xp - 1, yp + 1); |
|
|
|
|
} |
|
|
|
|
SpawnSkeleton(PreSpawnSkeleton(), xp, yp + 1); |
|
|
|
|
if (random(0, monstrnd[leveltype - 1]) != 0) { |
|
|
|
|
SpawnSkeleton(PreSpawnSkeleton(), xp + 1, yp + 1); |
|
|
|
|
|
|
|
|
|
i = PreSpawnSkeleton(); |
|
|
|
|
SpawnSkeleton(i, xp, yp + 1); |
|
|
|
|
|
|
|
|
|
if(random(0, monstrnd[leveltype - 1]) != 0) { |
|
|
|
|
i = PreSpawnSkeleton(); |
|
|
|
|
SpawnSkeleton(i, xp + 1, yp + 1); |
|
|
|
|
} else { |
|
|
|
|
AddObject(OBJ_BANNERL, xp + 1, yp + 1); |
|
|
|
|
} |
|
|
|
|
if (dObject[xp][yp - 3] == 0) { |
|
|
|
|
|
|
|
|
|
if(dObject[xp][yp - 3] == 0) { |
|
|
|
|
AddObject(OBJ_SKELBOOK, xp, yp - 2); |
|
|
|
|
} |
|
|
|
|
if (dObject[xp][yp + 3] == 0) { |
|
|
|
|
if(dObject[xp][yp + 3] == 0) { |
|
|
|
|
AddObject(OBJ_SKELBOOK, xp, yp + 2); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -691,13 +707,13 @@ void Theme_Treasure(int t)
|
|
|
|
|
// - t: theme number (index into themes array).
|
|
|
|
|
void Theme_Library(int t) |
|
|
|
|
{ |
|
|
|
|
int xp, yp; |
|
|
|
|
int oi; |
|
|
|
|
int xp, yp, oi; |
|
|
|
|
char librnd[4] = { 1, 2, 2, 5 }; |
|
|
|
|
char monstrnd[4] = { 5, 7, 3, 9 }; |
|
|
|
|
|
|
|
|
|
TFit_Shrine(t); |
|
|
|
|
if (themeVar1 == 1) { |
|
|
|
|
|
|
|
|
|
if(themeVar1 == 1) { |
|
|
|
|
AddObject(OBJ_BOOKCANDLE, themex - 1, themey); |
|
|
|
|
AddObject(OBJ_BOOKCASER, themex, themey); |
|
|
|
|
AddObject(OBJ_BOOKCANDLE, themex + 1, themey); |
|
|
|
|
@ -707,25 +723,23 @@ void Theme_Library(int t)
|
|
|
|
|
AddObject(OBJ_BOOKCANDLE, themex, themey + 1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (yp = 1; yp < MAXDUNY - 1; yp++) { |
|
|
|
|
for (xp = 1; xp < MAXDUNX - 1; xp++) { |
|
|
|
|
if (CheckThemeObj3(xp, yp, t, -1)) { |
|
|
|
|
if (dMonster[xp][yp] == 0) { |
|
|
|
|
if (random(0, librnd[leveltype - 1]) == 0) { |
|
|
|
|
AddObject(OBJ_BOOKSTAND, xp, yp); |
|
|
|
|
if (random(0, 2 * librnd[leveltype - 1]) != 0) { |
|
|
|
|
oi = dObject[xp][yp] - 1; |
|
|
|
|
object[oi]._oSelFlag = 0; |
|
|
|
|
object[oi]._oAnimFrame += 2; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for(yp = 1; yp < MAXDUNY - 1; yp++) { |
|
|
|
|
for(xp = 1; xp < MAXDUNX - 1; xp++) { |
|
|
|
|
if(CheckThemeObj3(xp, yp, t, -1) && dMonster[xp][yp] == 0 && random(0, librnd[leveltype - 1]) == 0) { |
|
|
|
|
AddObject(OBJ_BOOKSTAND, xp, yp); |
|
|
|
|
if(random(0, 2 * librnd[leveltype - 1]) != 0) { |
|
|
|
|
oi = dObject[xp][yp] - 1; |
|
|
|
|
object[oi]._oSelFlag = 0; |
|
|
|
|
object[oi]._oAnimFrame += 2; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!QuestStatus(QTYPE_ZHAR) || t != zharlib) { |
|
|
|
|
PlaceThemeMonsts(t, monstrnd[leveltype - 1]); |
|
|
|
|
if(!QuestStatus(QTYPE_ZHAR)) { |
|
|
|
|
PlaceThemeMonsts(t, monstrnd[leveltype]); /// BUGFIX: `leveltype - 1`
|
|
|
|
|
} else if(t != zharlib) { |
|
|
|
|
PlaceThemeMonsts(t, monstrnd[leveltype]); /// BUGFIX: `leveltype - 1`
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|