Browse Source

Refactor AddObject to take Point instead of int x/y

pull/2334/head
ephphatha 5 years ago committed by Anders Jenbo
parent
commit
19ae61811f
  1. 164
      Source/objects.cpp
  2. 7
      Source/objects.h
  3. 4
      Source/quests.cpp
  4. 72
      Source/themes.cpp

164
Source/objects.cpp

@ -371,7 +371,7 @@ void InitRndLocObj(int min, int max, _object_id objtype)
&& RndLocOk(xp - 1, yp + 1)
&& RndLocOk(xp, yp + 1)
&& RndLocOk(xp + 1, yp + 1)) {
AddObject(objtype, xp, yp);
AddObject(objtype, { xp, yp });
break;
}
}
@ -397,7 +397,7 @@ void InitRndLocBigObj(int min, int max, _object_id objtype)
&& RndLocOk(xp - 1, yp + 1)
&& RndLocOk(xp, yp + 1)
&& RndLocOk(xp + 1, yp + 1)) {
AddObject(objtype, xp, yp);
AddObject(objtype, { xp, yp });
break;
}
}
@ -428,7 +428,7 @@ void InitRndLocObj5x5(int min, int max, _object_id objtype)
return;
}
}
AddObject(objtype, xp, yp);
AddObject(objtype, { xp, yp });
}
}
@ -450,18 +450,18 @@ void AddTortures()
for (int oy = 0; oy < MAXDUNY; oy++) {
for (int ox = 0; ox < MAXDUNX; ox++) {
if (dPiece[ox][oy] == 367) {
AddObject(OBJ_TORTURE1, ox, oy + 1);
AddObject(OBJ_TORTURE3, ox + 2, oy - 1);
AddObject(OBJ_TORTURE2, ox, oy + 3);
AddObject(OBJ_TORTURE4, ox + 4, oy - 1);
AddObject(OBJ_TORTURE5, ox, oy + 5);
AddObject(OBJ_TNUDEM1, ox + 1, oy + 3);
AddObject(OBJ_TNUDEM2, ox + 4, oy + 5);
AddObject(OBJ_TNUDEM3, ox + 2, oy);
AddObject(OBJ_TNUDEM4, ox + 3, oy + 2);
AddObject(OBJ_TNUDEW1, ox + 2, oy + 4);
AddObject(OBJ_TNUDEW2, ox + 2, oy + 1);
AddObject(OBJ_TNUDEW3, ox + 4, oy + 2);
AddObject(OBJ_TORTURE1, { ox, oy + 1 });
AddObject(OBJ_TORTURE3, { ox + 2, oy - 1 });
AddObject(OBJ_TORTURE2, { ox, oy + 3 });
AddObject(OBJ_TORTURE4, { ox + 4, oy - 1 });
AddObject(OBJ_TORTURE5, { ox, oy + 5 });
AddObject(OBJ_TNUDEM1, { ox + 1, oy + 3 });
AddObject(OBJ_TNUDEM2, { ox + 4, oy + 5 });
AddObject(OBJ_TNUDEM3, { ox + 2, oy });
AddObject(OBJ_TNUDEM4, { ox + 3, oy + 2 });
AddObject(OBJ_TNUDEW1, { ox + 2, oy + 4 });
AddObject(OBJ_TNUDEW2, { ox + 2, oy + 1 });
AddObject(OBJ_TNUDEW3, { ox + 4, oy + 2 });
}
}
}
@ -470,10 +470,10 @@ void AddCandles()
{
int tx = Quests[Q_PWATER].position.x;
int ty = Quests[Q_PWATER].position.y;
AddObject(OBJ_STORYCANDLE, tx - 2, ty + 1);
AddObject(OBJ_STORYCANDLE, tx + 3, ty + 1);
AddObject(OBJ_STORYCANDLE, tx - 1, ty + 2);
AddObject(OBJ_STORYCANDLE, tx + 2, ty + 2);
AddObject(OBJ_STORYCANDLE, { tx - 2, ty + 1 });
AddObject(OBJ_STORYCANDLE, { tx + 3, ty + 1 });
AddObject(OBJ_STORYCANDLE, { tx - 1, ty + 2 });
AddObject(OBJ_STORYCANDLE, { tx + 2, ty + 2 });
}
void AddBookLever(int x1, int y1, int x2, int y2, _speech_id msg)
@ -500,13 +500,13 @@ void AddBookLever(int x1, int y1, int x2, int y2, _speech_id msg)
}
if (QuestStatus(Q_BLIND))
AddObject(OBJ_BLINDBOOK, xp, yp);
AddObject(OBJ_BLINDBOOK, { xp, yp });
if (QuestStatus(Q_WARLORD))
AddObject(OBJ_STEELTOME, xp, yp);
AddObject(OBJ_STEELTOME, { xp, yp });
if (QuestStatus(Q_BLOOD)) {
xp = 2 * setpc_x + 25;
yp = 2 * setpc_y + 40;
AddObject(OBJ_BLOODBOOK, xp, yp);
AddObject(OBJ_BLOODBOOK, { xp, yp });
}
int ob = dObject[xp][yp] - 1;
SetObjMapRange(ob, x1, y1, x2, y2, leverid);
@ -527,7 +527,7 @@ void InitRndBarrels()
yp = GenerateRnd(80) + 16;
} while (!RndLocOk(xp, yp));
_object_id o = (GenerateRnd(4) != 0) ? OBJ_BARREL : OBJ_BARRELEX;
AddObject(o, xp, yp);
AddObject(o, { xp, yp });
bool found = true;
/** regulates chance to stop placing barrels in current group */
int p = 0;
@ -550,7 +550,7 @@ void InitRndBarrels()
}
if (found) {
o = (GenerateRnd(5) != 0) ? OBJ_BARREL : OBJ_BARRELEX;
AddObject(o, xp, yp);
AddObject(o, { xp, yp });
c++;
}
p = c / 2;
@ -564,11 +564,11 @@ void AddL1Objs(int x1, int y1, int x2, int y2)
for (int i = x1; i < x2; i++) {
int pn = dPiece[i][j];
if (pn == 270)
AddObject(OBJ_L1LIGHT, i, j);
AddObject(OBJ_L1LIGHT, { i, j });
if (pn == 44 || pn == 51 || pn == 214)
AddObject(OBJ_L1LDOOR, i, j);
AddObject(OBJ_L1LDOOR, { i, j });
if (pn == 46 || pn == 56)
AddObject(OBJ_L1RDOOR, i, j);
AddObject(OBJ_L1RDOOR, { i, j });
}
}
}
@ -579,9 +579,9 @@ void add_crypt_objs(int x1, int y1, int x2, int y2)
for (int i = x1; i < x2; i++) {
int pn = dPiece[i][j];
if (pn == 77)
AddObject(OBJ_L1LDOOR, i, j);
AddObject(OBJ_L1LDOOR, { i, j });
if (pn == 80)
AddObject(OBJ_L1RDOOR, i, j);
AddObject(OBJ_L1RDOOR, { i, j });
}
}
}
@ -592,9 +592,9 @@ void AddL2Objs(int x1, int y1, int x2, int y2)
for (int i = x1; i < x2; i++) {
int pn = dPiece[i][j];
if (pn == 13 || pn == 541)
AddObject(OBJ_L2LDOOR, i, j);
AddObject(OBJ_L2LDOOR, { i, j });
if (pn == 17 || pn == 542)
AddObject(OBJ_L2RDOOR, i, j);
AddObject(OBJ_L2RDOOR, { i, j });
}
}
}
@ -605,9 +605,9 @@ void AddL3Objs(int x1, int y1, int x2, int y2)
for (int i = x1; i < x2; i++) {
int pn = dPiece[i][j];
if (pn == 531)
AddObject(OBJ_L3LDOOR, i, j);
AddObject(OBJ_L3LDOOR, { i, j });
if (pn == 534)
AddObject(OBJ_L3RDOOR, i, j);
AddObject(OBJ_L3RDOOR, { i, j });
}
}
}
@ -626,16 +626,16 @@ void AddL2Torches()
int pn = dPiece[i][j];
if (pn == 1 && GenerateRnd(3) == 0)
AddObject(OBJ_TORCHL2, i, j);
AddObject(OBJ_TORCHL2, { i, j });
if (pn == 5 && GenerateRnd(3) == 0)
AddObject(OBJ_TORCHR2, i, j);
AddObject(OBJ_TORCHR2, { i, j });
if (pn == 37 && GenerateRnd(10) == 0 && dObject[i - 1][j] == 0)
AddObject(OBJ_TORCHL, i - 1, j);
AddObject(OBJ_TORCHL, { i - 1, j });
if (pn == 41 && GenerateRnd(10) == 0 && dObject[i][j - 1] == 0)
AddObject(OBJ_TORCHR, i, j - 1);
AddObject(OBJ_TORCHR, { i, j - 1 });
}
}
}
@ -668,7 +668,7 @@ void AddObjTraps()
if (!WallTrapLocOkK(xp, j) || i - xp <= 1)
continue;
AddObject(OBJ_TRAPL, xp, j);
AddObject(OBJ_TRAPL, { xp, j });
int8_t oiTrap = dObject[xp][j] - 1;
Objects[oiTrap]._oVar1 = i;
Objects[oiTrap]._oVar2 = j;
@ -681,7 +681,7 @@ void AddObjTraps()
if (!WallTrapLocOkK(i, yp) || j - yp <= 1)
continue;
AddObject(OBJ_TRAPR, i, yp);
AddObject(OBJ_TRAPR, { i, yp });
int8_t oiTrap = dObject[i][yp] - 1;
Objects[oiTrap]._oVar1 = i;
Objects[oiTrap]._oVar2 = j;
@ -745,7 +745,7 @@ void LoadMapObjects(const char *path, int startx, int starty, int x1, int y1, in
for (int i = 0; i < width; i++) {
uint8_t objectId = SDL_SwapLE16(objectLayer[j * width + i]);
if (objectId != 0) {
AddObject(ObjTypeConv[objectId], startx + 16 + i, starty + 16 + j);
AddObject(ObjTypeConv[objectId], { startx + 16 + i, starty + 16 + j });
int oi = ObjIndex(startx + 16 + i, starty + 16 + j);
SetObjMapRange(oi, x1, y1, x1 + w, y1 + h, leveridx);
}
@ -778,7 +778,7 @@ void LoadMapObjs(const char *path, int startx, int starty)
for (int i = 0; i < width; i++) {
uint8_t objectId = SDL_SwapLE16(objectLayer[j * width + i]);
if (objectId != 0) {
AddObject(ObjTypeConv[objectId], startx + 16 + i, starty + 16 + j);
AddObject(ObjTypeConv[objectId], { startx + 16 + i, starty + 16 + j });
}
}
}
@ -817,12 +817,12 @@ void AddCryptStoryBook(int s)
}
}
AddCryptBook(OBJ_STORYBOOK, s, xp, yp);
AddObject(OBJ_STORYCANDLE, xp - 2, yp + 1);
AddObject(OBJ_STORYCANDLE, xp - 2, yp);
AddObject(OBJ_STORYCANDLE, xp - 1, yp - 1);
AddObject(OBJ_STORYCANDLE, xp + 1, yp - 1);
AddObject(OBJ_STORYCANDLE, xp + 2, yp);
AddObject(OBJ_STORYCANDLE, xp + 2, yp + 1);
AddObject(OBJ_STORYCANDLE, { xp - 2, yp + 1 });
AddObject(OBJ_STORYCANDLE, { xp - 2, yp });
AddObject(OBJ_STORYCANDLE, { xp - 1, yp - 1 });
AddObject(OBJ_STORYCANDLE, { xp + 1, yp - 1 });
AddObject(OBJ_STORYCANDLE, { xp + 2, yp });
AddObject(OBJ_STORYCANDLE, { xp + 2, yp + 1 });
}
void AddNakrulGate()
@ -889,13 +889,13 @@ void AddStoryBooks()
return;
}
}
AddObject(OBJ_STORYBOOK, xp, yp);
AddObject(OBJ_STORYCANDLE, xp - 2, yp + 1);
AddObject(OBJ_STORYCANDLE, xp - 2, yp);
AddObject(OBJ_STORYCANDLE, xp - 1, yp - 1);
AddObject(OBJ_STORYCANDLE, xp + 1, yp - 1);
AddObject(OBJ_STORYCANDLE, xp + 2, yp);
AddObject(OBJ_STORYCANDLE, xp + 2, yp + 1);
AddObject(OBJ_STORYBOOK, { xp, yp });
AddObject(OBJ_STORYCANDLE, { xp - 2, yp + 1 });
AddObject(OBJ_STORYCANDLE, { xp - 2, yp });
AddObject(OBJ_STORYCANDLE, { xp - 1, yp - 1 });
AddObject(OBJ_STORYCANDLE, { xp + 1, yp - 1 });
AddObject(OBJ_STORYCANDLE, { xp + 2, yp });
AddObject(OBJ_STORYCANDLE, { xp + 2, yp + 1 });
}
void AddHookedBodies(int freq)
@ -913,13 +913,13 @@ void AddHookedBodies(int freq)
if (dungeon[i][j] == 1 && dungeon[i + 1][j] == 6) {
switch (GenerateRnd(3)) {
case 0:
AddObject(OBJ_TORTURE1, ii + 1, jj);
AddObject(OBJ_TORTURE1, { ii + 1, jj });
break;
case 1:
AddObject(OBJ_TORTURE2, ii + 1, jj);
AddObject(OBJ_TORTURE2, { ii + 1, jj });
break;
case 2:
AddObject(OBJ_TORTURE5, ii + 1, jj);
AddObject(OBJ_TORTURE5, { ii + 1, jj });
break;
}
continue;
@ -927,10 +927,10 @@ void AddHookedBodies(int freq)
if (dungeon[i][j] == 2 && dungeon[i][j + 1] == 6) {
switch (GenerateRnd(2)) {
case 0:
AddObject(OBJ_TORTURE3, ii, jj);
AddObject(OBJ_TORTURE3, { ii, jj });
break;
case 1:
AddObject(OBJ_TORTURE4, ii, jj);
AddObject(OBJ_TORTURE4, { ii, jj });
break;
}
}
@ -976,16 +976,16 @@ void AddLazStand()
}
}
}
AddObject(OBJ_LAZSTAND, xp, yp);
AddObject(OBJ_TNUDEM2, xp, yp + 2);
AddObject(OBJ_STORYCANDLE, xp + 1, yp + 2);
AddObject(OBJ_TNUDEM3, xp + 2, yp + 2);
AddObject(OBJ_TNUDEW1, xp, yp - 2);
AddObject(OBJ_STORYCANDLE, xp + 1, yp - 2);
AddObject(OBJ_TNUDEW2, xp + 2, yp - 2);
AddObject(OBJ_STORYCANDLE, xp - 1, yp - 1);
AddObject(OBJ_TNUDEW3, xp - 1, yp);
AddObject(OBJ_STORYCANDLE, xp - 1, yp + 1);
AddObject(OBJ_LAZSTAND, { xp, yp });
AddObject(OBJ_TNUDEM2, { xp, yp + 2 });
AddObject(OBJ_STORYCANDLE, { xp + 1, yp + 2 });
AddObject(OBJ_TNUDEM3, { xp + 2, yp + 2 });
AddObject(OBJ_TNUDEW1, { xp, yp - 2 });
AddObject(OBJ_STORYCANDLE, { xp + 1, yp - 2 });
AddObject(OBJ_TNUDEW2, { xp + 2, yp - 2 });
AddObject(OBJ_STORYCANDLE, { xp - 1, yp - 1 });
AddObject(OBJ_TNUDEW3, { xp - 1, yp });
AddObject(OBJ_STORYCANDLE, { xp - 1, yp + 1 });
}
void InitObjects()
@ -1022,7 +1022,7 @@ void InitObjects()
if (QuestStatus(Q_PWATER))
AddCandles();
if (QuestStatus(Q_LTBANNER))
AddObject(OBJ_SIGNCHEST, 2 * setpc_x + 26, 2 * setpc_y + 19);
AddObject(OBJ_SIGNCHEST, { 2 * setpc_x + 26, 2 * setpc_y + 19 });
InitRndLocBigObj(10, 15, OBJ_SARC);
if (currlevel >= 21)
add_crypt_objs(0, 0, MAXDUNX, MAXDUNY);
@ -1087,7 +1087,7 @@ void InitObjects()
}
Quests[Q_BLOOD]._qmsg = spId;
AddBookLever(setpc_x, setpc_y + 3, setpc_x + 2, setpc_y + 7, spId);
AddObject(OBJ_PEDISTAL, 2 * setpc_x + 25, 2 * setpc_y + 32);
AddObject(OBJ_PEDISTAL, { 2 * setpc_x + 25, 2 * setpc_y + 32 });
}
InitRndBarrels();
}
@ -1187,7 +1187,7 @@ void SetMapObjects(const uint16_t *dunData, int startx, int starty)
for (int i = 0; i < width; i++) {
uint8_t objectId = SDL_SwapLE16(objectLayer[j * width + i]);
if (objectId != 0) {
AddObject(ObjTypeConv[objectId], startx + 16 + i, starty + 16 + j);
AddObject(ObjTypeConv[objectId], { startx + 16 + i, starty + 16 + j });
}
}
}
@ -1591,7 +1591,7 @@ void AddMushPatch()
dObject[x + 1][y + 1] = -(i + 1);
dObject[x + 2][y + 1] = -(i + 1);
dObject[x + 1][y + 2] = -(i + 1);
AddObject(OBJ_MUSHPATCH, x + 2, y + 2);
AddObject(OBJ_MUSHPATCH, { x + 2, y + 2 });
}
}
@ -1601,7 +1601,7 @@ void AddSlainHero()
int y;
GetRndObjLoc(5, &x, &y);
AddObject(OBJ_SLAINHERO, x + 2, y + 2);
AddObject(OBJ_SLAINHERO, { x + 2, y + 2 });
}
void AddCryptBook(_object_id ot, int v2, int ox, int oy)
@ -1695,7 +1695,7 @@ void AddCryptObject(int i, int a2)
Objects[i]._oVar4 = Objects[i]._oAnimFrame + 1;
}
void AddObject(_object_id ot, int ox, int oy)
void AddObject(_object_id ot, Point objPos)
{
if (ActiveObjectCount >= MAXOBJECTS)
return;
@ -1703,8 +1703,8 @@ void AddObject(_object_id ot, int ox, int oy)
int oi = AvailableObjects[0];
AvailableObjects[0] = AvailableObjects[MAXOBJECTS - 1 - ActiveObjectCount];
ActiveObjects[ActiveObjectCount] = oi;
dObject[ox][oy] = oi + 1;
SetupObject(oi, { ox, oy }, ot);
dObject[objPos.x][objPos.y] = oi + 1;
SetupObject(oi, objPos, ot);
switch (ot) {
case OBJ_L1LIGHT:
case OBJ_SKFIRE:
@ -1724,15 +1724,15 @@ void AddObject(_object_id ot, int ox, int oy)
break;
case OBJ_L1LDOOR:
case OBJ_L1RDOOR:
AddL1Door(oi, { ox, oy }, ot);
AddL1Door(oi, objPos, ot);
break;
case OBJ_L2LDOOR:
case OBJ_L2RDOOR:
AddL2Door(oi, { ox, oy }, ot);
AddL2Door(oi, objPos, ot);
break;
case OBJ_L3LDOOR:
case OBJ_L3RDOOR:
AddL3Door(oi, { ox, oy }, ot);
AddL3Door(oi, objPos, ot);
break;
case OBJ_BOOK2R:
AddSCambBook(oi);
@ -2361,7 +2361,7 @@ void RedoPlayerVision()
*
* @param doorPos Map tile where the door is in its closed position
* @return true if the door is free to be closed, false if anything is blocking it
*/
*/
static inline bool IsDoorClear(const Point &doorPosition)
{
return dDead[doorPosition.x][doorPosition.y] == 0
@ -5493,7 +5493,7 @@ void AddNakrulLeaver()
break;
}
}
AddObject(OBJ_LEVER, UberRow + 3, UberCol - 1);
AddObject(OBJ_LEVER, { UberRow + 3, UberCol - 1 });
}
bool OperateNakrulBook(int s)

7
Source/objects.h

@ -72,7 +72,12 @@ void AddSlainHero();
void AddCryptBook(_object_id ot, int v2, int ox, int oy);
void AddCryptObject(int i, int a2);
void AddNakrulBook(int a1, int a2, int a3);
void AddObject(_object_id ot, int ox, int oy);
/**
* @brief Spawns an object of the given type at the map coordinates provided
* @param objType Type specifier
* @param objPos tile coordinates
*/
void AddObject(_object_id objType, Point objPos);
void Obj_Trap(int i);
void ProcessObjects();
void ObjSetMicro(Point position, int pn);

4
Source/quests.cpp

@ -197,7 +197,7 @@ void CheckQuests()
return;
if (QuestStatus(Q_BETRAYER) && gbIsMultiplayer && Quests[Q_BETRAYER]._qvar1 == 2) {
AddObject(OBJ_ALTBOY, 2 * setpc_x + 20, 2 * setpc_y + 22);
AddObject(OBJ_ALTBOY, { 2 * setpc_x + 20, 2 * setpc_y + 22 });
Quests[Q_BETRAYER]._qvar1 = 3;
NetSendCmdQuest(true, Q_BETRAYER);
}
@ -604,7 +604,7 @@ void ResyncMPQuests()
NetSendCmdQuest(true, Q_BETRAYER);
}
if (QuestStatus(Q_BETRAYER))
AddObject(OBJ_ALTBOY, 2 * setpc_x + 20, 2 * setpc_y + 22);
AddObject(OBJ_ALTBOY, { 2 * setpc_x + 20, 2 * setpc_y + 22 });
if (Quests[Q_GRAVE]._qactive == QUEST_INIT && currlevel == Quests[Q_GRAVE]._qlevel - 1) {
Quests[Q_GRAVE]._qactive = QUEST_ACTIVE;
NetSendCmdQuest(true, Q_GRAVE);

72
Source/themes.cpp

@ -516,7 +516,7 @@ void Theme_Barrel(int t)
if (GenerateRnd(barrnd[leveltype - 1]) != 0) {
r = OBJ_BARRELEX;
}
AddObject(r, xp, yp);
AddObject(r, { xp, yp });
}
}
}
@ -535,13 +535,13 @@ void Theme_Shrine(int t)
TFit_Shrine(t);
if (themeVar1 == 1) {
AddObject(OBJ_CANDLE2, themex - 1, themey);
AddObject(OBJ_SHRINER, themex, themey);
AddObject(OBJ_CANDLE2, themex + 1, themey);
AddObject(OBJ_CANDLE2, { themex - 1, themey });
AddObject(OBJ_SHRINER, { themex, themey });
AddObject(OBJ_CANDLE2, { themex + 1, themey });
} else {
AddObject(OBJ_CANDLE2, themex, themey - 1);
AddObject(OBJ_SHRINEL, themex, themey);
AddObject(OBJ_CANDLE2, themex, themey + 1);
AddObject(OBJ_CANDLE2, { themex, themey - 1 });
AddObject(OBJ_SHRINEL, { themex, themey });
AddObject(OBJ_CANDLE2, { themex, themey + 1 });
}
PlaceThemeMonsts(t, monstrnd[leveltype - 1]);
}
@ -592,13 +592,13 @@ void Theme_SkelRoom(int t)
int xp = themex;
int yp = themey;
AddObject(OBJ_SKFIRE, xp, yp);
AddObject(OBJ_SKFIRE, { xp, yp });
if (GenerateRnd(monstrnd[leveltype - 1]) != 0) {
int i = PreSpawnSkeleton();
SpawnSkeleton(i, { xp - 1, yp - 1 });
} else {
AddObject(OBJ_BANNERL, xp - 1, yp - 1);
AddObject(OBJ_BANNERL, { xp - 1, yp - 1 });
}
{
@ -610,25 +610,25 @@ void Theme_SkelRoom(int t)
int i = PreSpawnSkeleton();
SpawnSkeleton(i, { xp + 1, yp - 1 });
} else {
AddObject(OBJ_BANNERR, xp + 1, yp - 1);
AddObject(OBJ_BANNERR, { xp + 1, yp - 1 });
}
if (GenerateRnd(monstrnd[leveltype - 1]) != 0) {
int i = PreSpawnSkeleton();
SpawnSkeleton(i, { xp - 1, yp });
} else {
AddObject(OBJ_BANNERM, xp - 1, yp);
AddObject(OBJ_BANNERM, { xp - 1, yp });
}
if (GenerateRnd(monstrnd[leveltype - 1]) != 0) {
int i = PreSpawnSkeleton();
SpawnSkeleton(i, { xp + 1, yp });
} else {
AddObject(OBJ_BANNERM, xp + 1, yp);
AddObject(OBJ_BANNERM, { xp + 1, yp });
}
if (GenerateRnd(monstrnd[leveltype - 1]) != 0) {
int i = PreSpawnSkeleton();
SpawnSkeleton(i, { xp - 1, yp + 1 });
} else {
AddObject(OBJ_BANNERR, xp - 1, yp + 1);
AddObject(OBJ_BANNERR, { xp - 1, yp + 1 });
}
{
@ -640,14 +640,14 @@ void Theme_SkelRoom(int t)
int i = PreSpawnSkeleton();
SpawnSkeleton(i, { xp + 1, yp + 1 });
} else {
AddObject(OBJ_BANNERL, xp + 1, yp + 1);
AddObject(OBJ_BANNERL, { xp + 1, yp + 1 });
}
if (dObject[xp][yp - 3] == 0) {
AddObject(OBJ_SKELBOOK, xp, yp - 2);
AddObject(OBJ_SKELBOOK, { xp, yp - 2 });
}
if (dObject[xp][yp + 3] == 0) {
AddObject(OBJ_SKELBOOK, xp, yp + 2);
AddObject(OBJ_SKELBOOK, { xp, yp + 2 });
}
}
@ -700,19 +700,19 @@ void Theme_Library(int t)
TFit_Shrine(t);
if (themeVar1 == 1) {
AddObject(OBJ_BOOKCANDLE, themex - 1, themey);
AddObject(OBJ_BOOKCASER, themex, themey);
AddObject(OBJ_BOOKCANDLE, themex + 1, themey);
AddObject(OBJ_BOOKCANDLE, { themex - 1, themey });
AddObject(OBJ_BOOKCASER, { themex, themey });
AddObject(OBJ_BOOKCANDLE, { themex + 1, themey });
} else {
AddObject(OBJ_BOOKCANDLE, themex, themey - 1);
AddObject(OBJ_BOOKCASEL, themex, themey);
AddObject(OBJ_BOOKCANDLE, themex, themey + 1);
AddObject(OBJ_BOOKCANDLE, { themex, themey - 1 });
AddObject(OBJ_BOOKCASEL, { themex, themey });
AddObject(OBJ_BOOKCANDLE, { themex, themey + 1 });
}
for (int yp = 1; yp < MAXDUNY - 1; yp++) {
for (int xp = 1; xp < MAXDUNX - 1; xp++) {
if (CheckThemeObj3(xp, yp, t, -1) && dMonster[xp][yp] == 0 && GenerateRnd(librnd[leveltype - 1]) == 0) {
AddObject(OBJ_BOOKSTAND, xp, yp);
AddObject(OBJ_BOOKSTAND, { xp, yp });
if (GenerateRnd(2 * librnd[leveltype - 1]) != 0 && dObject[xp][yp] != 0) { /// BUGFIX: check dObject[xp][yp] was populated by AddObject (fixed)
int oi = dObject[xp][yp] - 1;
Objects[oi]._oSelFlag = 0;
@ -747,7 +747,7 @@ void Theme_Torture(int t)
if (dTransVal[xp][yp] == themes[t].ttval && !nSolidTable[dPiece[xp][yp]]) {
if (CheckThemeObj3(xp, yp, t, -1)) {
if (GenerateRnd(tortrnd[leveltype - 1]) == 0) {
AddObject(OBJ_TNUDEM2, xp, yp);
AddObject(OBJ_TNUDEM2, { xp, yp });
}
}
}
@ -765,7 +765,7 @@ void Theme_BloodFountain(int t)
char monstrnd[4] = { 6, 8, 3, 9 };
TFit_Obj5(t);
AddObject(OBJ_BLOODFTN, themex, themey);
AddObject(OBJ_BLOODFTN, { themex, themey });
PlaceThemeMonsts(t, monstrnd[leveltype - 1]);
}
@ -784,7 +784,7 @@ void Theme_Decap(int t)
if (dTransVal[xp][yp] == themes[t].ttval && !nSolidTable[dPiece[xp][yp]]) {
if (CheckThemeObj3(xp, yp, t, -1)) {
if (GenerateRnd(decaprnd[leveltype - 1]) == 0) {
AddObject(OBJ_DECAP, xp, yp);
AddObject(OBJ_DECAP, { xp, yp });
}
}
}
@ -803,7 +803,7 @@ void Theme_PurifyingFountain(int t)
char monstrnd[4] = { 6, 7, 3, 9 };
TFit_Obj5(t);
AddObject(OBJ_PURIFYINGFTN, themex, themey);
AddObject(OBJ_PURIFYINGFTN, { themex, themey });
PlaceThemeMonsts(t, monstrnd[leveltype - 1]);
}
@ -819,14 +819,14 @@ void Theme_ArmorStand(int t)
if (armorFlag) {
TFit_Obj3(t);
AddObject(OBJ_ARMORSTAND, themex, themey);
AddObject(OBJ_ARMORSTAND, { themex, themey });
}
for (int yp = 0; yp < MAXDUNY; yp++) {
for (int xp = 0; xp < MAXDUNX; xp++) {
if (dTransVal[xp][yp] == themes[t].ttval && !nSolidTable[dPiece[xp][yp]]) {
if (CheckThemeObj3(xp, yp, t, -1)) {
if (GenerateRnd(armorrnd[leveltype - 1]) == 0) {
AddObject(OBJ_ARMORSTANDN, xp, yp);
AddObject(OBJ_ARMORSTANDN, { xp, yp });
}
}
}
@ -844,7 +844,7 @@ void Theme_ArmorStand(int t)
void Theme_GoatShrine(int t)
{
TFit_GoatShrine(t);
AddObject(OBJ_GOATSHRINE, themex, themey);
AddObject(OBJ_GOATSHRINE, { themex, themey });
for (int yy = themey - 1; yy <= themey + 1; yy++) {
for (int xx = themex - 1; xx <= themex + 1; xx++) {
if (dTransVal[xx][yy] == themes[t].ttval && !nSolidTable[dPiece[xx][yy]] && (xx != themex || yy != themey)) {
@ -864,7 +864,7 @@ void Theme_Cauldron(int t)
char monstrnd[4] = { 6, 7, 3, 9 };
TFit_Obj5(t);
AddObject(OBJ_CAULDRON, themex, themey);
AddObject(OBJ_CAULDRON, { themex, themey });
PlaceThemeMonsts(t, monstrnd[leveltype - 1]);
}
@ -878,7 +878,7 @@ void Theme_MurkyFountain(int t)
char monstrnd[4] = { 6, 7, 3, 9 };
TFit_Obj5(t);
AddObject(OBJ_MURKYFTN, themex, themey);
AddObject(OBJ_MURKYFTN, { themex, themey });
PlaceThemeMonsts(t, monstrnd[leveltype - 1]);
}
@ -892,7 +892,7 @@ void Theme_TearFountain(int t)
char monstrnd[4] = { 6, 7, 3, 9 };
TFit_Obj5(t);
AddObject(OBJ_TEARFTN, themex, themey);
AddObject(OBJ_TEARFTN, { themex, themey });
PlaceThemeMonsts(t, monstrnd[leveltype - 1]);
}
@ -911,7 +911,7 @@ void Theme_BrnCross(int t)
if (dTransVal[xp][yp] == themes[t].ttval && !nSolidTable[dPiece[xp][yp]]) {
if (CheckThemeObj3(xp, yp, t, -1)) {
if (GenerateRnd(bcrossrnd[leveltype - 1]) == 0) {
AddObject(OBJ_TBCROSS, xp, yp);
AddObject(OBJ_TBCROSS, { xp, yp });
}
}
}
@ -932,14 +932,14 @@ void Theme_WeaponRack(int t)
if (weaponFlag) {
TFit_Obj3(t);
AddObject(OBJ_WEAPONRACK, themex, themey);
AddObject(OBJ_WEAPONRACK, { themex, themey });
}
for (int yp = 0; yp < MAXDUNY; yp++) {
for (int xp = 0; xp < MAXDUNX; xp++) {
if (dTransVal[xp][yp] == themes[t].ttval && !nSolidTable[dPiece[xp][yp]]) {
if (CheckThemeObj3(xp, yp, t, -1)) {
if (GenerateRnd(weaponrnd[leveltype - 1]) == 0) {
AddObject(OBJ_WEAPONRACKN, xp, yp);
AddObject(OBJ_WEAPONRACKN, { xp, yp });
}
}
}

Loading…
Cancel
Save