Browse Source

Merge branch 'master' of github.com:diasurgical/devilution

pull/292/head
Anders Jenbo 7 years ago
parent
commit
fae2be813a
  1. 2
      .travis.yml
  2. 5
      Source/automap.cpp
  3. 25
      Source/codec.cpp
  4. 7
      Source/control.cpp
  5. 4
      Source/dthread.cpp
  6. 76
      Source/engine.cpp
  7. 2
      Source/engine.h
  8. 3
      Source/gmenu.cpp
  9. 19
      Source/missiles.cpp
  10. 20
      Source/monster.cpp
  11. 2
      Source/multi.cpp
  12. 9
      Source/spells.cpp
  13. 20
      Source/stores.cpp
  14. 32
      Source/themes.cpp
  15. 6
      Source/towners.cpp
  16. 8
      Source/trigs.cpp
  17. 12
      defs.h

2
.travis.yml

@ -1,7 +1,7 @@
language: cpp
os: osx
osx_image: xcode10.3
addons:

5
Source/automap.cpp

@ -73,24 +73,21 @@ void InitAutomap()
switch (leveltype) {
case DTYPE_CATHEDRAL:
pAFile = LoadFileInMem("Levels\\L1Data\\L1.AMP", &dwTiles);
dwTiles >>= 1;
break;
case DTYPE_CATACOMBS:
pAFile = LoadFileInMem("Levels\\L2Data\\L2.AMP", &dwTiles);
dwTiles >>= 1;
break;
case DTYPE_CAVES:
pAFile = LoadFileInMem("Levels\\L3Data\\L3.AMP", &dwTiles);
dwTiles >>= 1;
break;
case DTYPE_HELL:
pAFile = LoadFileInMem("Levels\\L4Data\\L4.AMP", &dwTiles);
dwTiles >>= 1;
break;
default:
return;
}
dwTiles >>= 1;
pTmp = pAFile;
for (i = 1; i <= dwTiles; i++) {

25
Source/codec.cpp

@ -36,20 +36,21 @@ int codec_decode(BYTE *pbSrcDst, DWORD size, char *pszPassword)
memset(buf, 0, sizeof(buf));
sig = (CodecSignature *)pbSrcDst;
if (sig->error > 0) {
size = 0;
SHA1Clear();
} else {
SHA1Result(0, dst);
if (sig->checksum != *(DWORD *)dst) {
memset(dst, 0, sizeof(dst));
size = 0;
SHA1Clear();
} else {
size += sig->last_chunk_size - 64;
SHA1Clear();
}
goto error;
}
SHA1Result(0, dst);
if (sig->checksum != *(DWORD *)dst) {
memset(dst, 0, sizeof(dst));
goto error;
}
size += sig->last_chunk_size - 64;
SHA1Clear();
return size;
error:
SHA1Clear();
return 0;
}
void codec_init_key(int unused, char *pszPassword)

7
Source/control.cpp

@ -395,9 +395,9 @@ void SetSpell()
spselflag = 0;
if (pSpell != -1) {
ClearPanel();
drawpanflag = 255;
plr[myplr]._pRSpell = pSpell;
plr[myplr]._pRSplType = pSplType;
drawpanflag = 255;
}
}
@ -452,11 +452,8 @@ void CPrintString(int nOffset, int nCel, char col)
int i, nDataSize;
BYTE width, pix;
BYTE *src, *dst, *end;
DWORD *pFrameTable;
pFrameTable = (DWORD *)&pPanelText[4 * nCel];
src = &pPanelText[pFrameTable[0]];
nDataSize = pFrameTable[1] - pFrameTable[0];
src = CelGetFrame(pPanelText, nCel, &nDataSize);
end = &src[nDataSize];
dst = &gpBuffer[nOffset];

4
Source/dthread.cpp

@ -19,7 +19,7 @@ void dthread_remove_player(int pnum)
sgMemCrit.Enter();
for (pkt = sgpInfoHead; pkt; pkt = pkt->pNext) {
if (pkt->dwSpaceLeft == pnum)
pkt->dwSpaceLeft = 4;
pkt->dwSpaceLeft = MAX_PLRS;
}
sgMemCrit.Leave();
}
@ -94,7 +94,7 @@ unsigned int __stdcall dthread_handler(void *)
sgMemCrit.Leave();
if (pkt) {
if (pkt->dwSpaceLeft != 4)
if (pkt->dwSpaceLeft != MAX_PLRS)
multi_send_zero_packet(pkt->dwSpaceLeft, pkt->data[0], &pkt->data[8], *(DWORD *)&pkt->data[4]);
dwMilliseconds = 1000 * *(DWORD *)&pkt->data[4] / gdwDeltaBytesSec;

76
Source/engine.cpp

@ -15,6 +15,27 @@ BOOL gbNotInView; // valid - if x/y are in bounds
const int RndInc = 1;
const int RndMult = 0x015A4E35;
inline BYTE *CelGetFrame(BYTE *pCelBuff, int nCel, int *nDataSize)
{
DWORD *pFrameTable;
DWORD nCellStart;
pFrameTable = (DWORD *)pCelBuff;
nCellStart = SwapLE32(pFrameTable[nCel]);
*nDataSize = SwapLE32(pFrameTable[nCel + 1]) - nCellStart;
return pCelBuff + nCellStart;
}
inline int CelGetFrameSize(BYTE *pCelBuff, int nCel)
{
DWORD *pFrameTable;
pFrameTable = (DWORD *)pCelBuff;
return SwapLE32(pFrameTable[nCel + 1]) - SwapLE32(pFrameTable[nCel]);
}
void CelDrawDatOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth)
{
int w;
@ -71,7 +92,8 @@ void CelDrawDatOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth)
void CelDecodeOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth)
{
DWORD *pFrameTable;
int nDataSize;
BYTE *pRLEBytes;
/// ASSERT: assert(gpBuffer);
if (!gpBuffer)
@ -80,18 +102,14 @@ void CelDecodeOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth)
if (!pCelBuff)
return;
pFrameTable = (DWORD *)pCelBuff;
CelDrawDatOnly(
&gpBuffer[sx + PitchTbl[sy]],
&pCelBuff[pFrameTable[nCel]],
pFrameTable[nCel + 1] - pFrameTable[nCel],
nWidth);
pRLEBytes = CelGetFrame(pCelBuff, nCel, &nDataSize);
CelDrawDatOnly(&gpBuffer[sx + PitchTbl[sy]], pRLEBytes, nDataSize, nWidth);
}
void CelDecDatOnly(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWidth)
{
DWORD *pFrameTable;
int nDataSize;
BYTE *pRLEBytes;
/// ASSERT: assert(pCelBuff != NULL);
if (!pCelBuff)
@ -100,13 +118,8 @@ void CelDecDatOnly(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWidth)
if (!pBuff)
return;
pFrameTable = (DWORD *)pCelBuff;
CelDrawDatOnly(
pBuff,
&pCelBuff[pFrameTable[nCel]],
pFrameTable[nCel + 1] - pFrameTable[nCel],
nWidth);
pRLEBytes = CelGetFrame(pCelBuff, nCel, &nDataSize);
CelDrawDatOnly(pBuff, pRLEBytes, nDataSize, nWidth);
}
/**
@ -115,9 +128,9 @@ void CelDecDatOnly(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWidth)
*/
void CelDrawHdrOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap)
{
int nDataStart, nDataSize, nDataCap;
BYTE *pRLEBytes;
DWORD *pFrameTable;
int nDataStart, nDataSize, nDataCap;
/// ASSERT: assert(gpBuffer);
if (!gpBuffer)
@ -156,9 +169,9 @@ void CelDrawHdrOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int Ce
*/
void CelDecodeHdrOnly(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap)
{
int nDataStart, nDataSize, nDataCap;
BYTE *pRLEBytes;
DWORD *pFrameTable;
int nDataStart, nDataSize, nDataCap;
/// ASSERT: assert(pCelBuff != NULL);
if (!pCelBuff)
@ -328,7 +341,6 @@ void CelDecodeLightOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth)
{
int nDataSize;
BYTE *pDecodeTo, *pRLEBytes;
DWORD *pFrameTable;
/// ASSERT: assert(gpBuffer);
if (!gpBuffer)
@ -337,10 +349,7 @@ void CelDecodeLightOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth)
if (!pCelBuff)
return;
pFrameTable = (DWORD *)pCelBuff;
nDataSize = pFrameTable[nCel + 1] - pFrameTable[nCel];
pRLEBytes = &pCelBuff[pFrameTable[nCel]];
pRLEBytes = CelGetFrame(pCelBuff, nCel, &nDataSize);
pDecodeTo = &gpBuffer[sx + PitchTbl[sy]];
if (light_table_index)
@ -573,9 +582,9 @@ void Cel2DecDatOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth)
*/
void Cel2DrawHdrOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap)
{
int nDataStart, nDataSize, nDataCap;
BYTE *pRLEBytes;
DWORD *pFrameTable;
int nDataStart, nDataSize, nDataCap;
/// ASSERT: assert(gpBuffer);
if (!gpBuffer)
@ -614,9 +623,9 @@ void Cel2DrawHdrOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int C
*/
void Cel2DecodeHdrOnly(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap)
{
int nDataStart, nDataSize, nDataCap;
BYTE *pRLEBytes;
DWORD *pFrameTable;
int nDataStart, nDataSize, nDataCap;
/// ASSERT: assert(pCelBuff != NULL);
if (!pCelBuff)
@ -967,13 +976,11 @@ void CelDecodeRect(BYTE *pBuff, int CelSkip, int hgt, int wdt, BYTE *pCelBuff, i
if (!pBuff)
return;
int i;
int i, nDataSize;
BYTE width;
DWORD *pFrameTable;
pFrameTable = (DWORD *)&pCelBuff[4 * nCel];
pRLEBytes = &pCelBuff[pFrameTable[0]];
end = &pRLEBytes[pFrameTable[1] - pFrameTable[0]];
pRLEBytes = CelGetFrame(pCelBuff, nCel, &nDataSize);
end = &pRLEBytes[nDataSize];
dst = &pBuff[hgt * wdt + CelSkip];
for (; pRLEBytes != end; dst -= wdt + nWidth) {
@ -1421,12 +1428,13 @@ int GetDirection(int x1, int y1, int x2, int y2)
if (2 * my < mx)
return DIR_SE;
} else {
ny = -mx;
if (my >= 0) {
ny = -mx;
md = DIR_W;
if (2 * ny < my)
md = DIR_SW;
} else {
ny = -mx;
my = -my;
md = DIR_N;
if (2 * ny < my)
@ -1560,7 +1568,7 @@ void Cl2ApplyTrans(BYTE *p, BYTE *ttbl, int nCel)
for (i = 1; i <= nCel; i++) {
pFrameTable = (DWORD *)&p[4 * i];
dst = &p[pFrameTable[0] + 10];
nDataSize = pFrameTable[1] - pFrameTable[0] - 10;
nDataSize = CelGetFrameSize(p, i) - 10;
while (nDataSize) {
width = *dst++;
nDataSize--;
@ -1592,9 +1600,9 @@ void Cl2ApplyTrans(BYTE *p, BYTE *ttbl, int nCel)
*/
void Cl2DecodeFrm1(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap)
{
int nDataStart, nDataSize;
BYTE *pRLEBytes;
DWORD *pFrameTable;
int nDataStart, nDataSize;
/// ASSERT: assert(gpBuffer != NULL);
if (!gpBuffer)
@ -1974,9 +1982,9 @@ void Cl2DecodeLightTbl(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int
*/
void Cl2DecodeFrm4(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap)
{
int nDataStart, nDataSize;
BYTE *pRLEBytes;
DWORD *pFrameTable;
int nDataStart, nDataSize;
/// ASSERT: assert(gpBuffer != NULL);
if (!gpBuffer)

2
Source/engine.h

@ -11,6 +11,8 @@ extern int orgseed;
extern int SeedCount;
extern BOOL gbNotInView; // valid - if x/y are in bounds
__FINLINE BYTE *CelGetFrame(BYTE *pCelBuff, int nCel, int *nDataSize);
void CelDrawDatOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth);
void CelDecodeOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth);
void CelDecDatOnly(BYTE *pBuff, BYTE *pCelBuff, int nCel, int nWidth);

3
Source/gmenu.cpp

@ -202,7 +202,8 @@ void gmenu_clear_buffer(int x, int y, int width, int height)
{
BYTE *i;
for (i = gpBuffer + PitchTbl[y] + x; height; height--) {
i = gpBuffer + PitchTbl[y] + x;
while (height--) {
memset(i, 205, width);
i -= BUFFER_WIDTH;
}

19
Source/missiles.cpp

@ -1374,12 +1374,12 @@ void AddTeleport(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy
tx = dx + CrawlTable[pn - 1];
ty = dy + CrawlTable[pn];
if (0 < tx && tx < MAXDUNX && 0 < ty && ty < MAXDUNY) {
if (!(dMonster[tx][ty] | dObject[tx][ty] | dPlayer[tx][ty] | nSolidTable[dPiece[tx][ty]])) {
missile[mi]._miDelFlag = FALSE;
if (!(nSolidTable[dPiece[tx][ty]] | dMonster[tx][ty] | dObject[tx][ty] | dPlayer[tx][ty])) {
missile[mi]._mix = tx;
missile[mi]._miy = ty;
missile[mi]._misx = tx;
missile[mi]._misy = ty;
missile[mi]._miDelFlag = FALSE;
i = 6;
break;
}
@ -1779,8 +1779,8 @@ void AddRhino(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, i
anim = &monster[id].MType->Anims[MA_SPECIAL];
}
GetMissileVel(mi, sx, sy, dx, dy, 18);
missile[mi]._miAnimFlags = 0;
missile[mi]._mimfnum = midir;
missile[mi]._miAnimFlags = 0;
missile[mi]._miAnimData = anim->Data[midir];
missile[mi]._miAnimDelay = anim->Rate;
missile[mi]._miAnimLen = anim->Frames;
@ -1926,10 +1926,9 @@ void AddStone(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, i
} else {
missile[mi]._mix = tx;
missile[mi]._miy = ty;
missile[mi]._misx = tx;
missile[mi]._misy = ty;
missile[mi]._mirange = 6;
missile[mi]._mirange += missile[mi]._mispllvl;
missile[mi]._misx = missile[mi]._mix;
missile[mi]._misy = missile[mi]._miy;
missile[mi]._mirange = missile[mi]._mispllvl + 6;
missile[mi]._mirange += (missile[mi]._mirange * plr[id]._pISplDur) >> 7;
if (missile[mi]._mirange > 15)
@ -2344,8 +2343,8 @@ void AddResurrectBeam(int mi, int sx, int sy, int dx, int dy, int midir, char mi
{
missile[mi]._mix = dx;
missile[mi]._miy = dy;
missile[mi]._misx = dx;
missile[mi]._misy = dy;
missile[mi]._misx = missile[mi]._mix;
missile[mi]._misy = missile[mi]._miy;
missile[mi]._mixvel = 0;
missile[mi]._miyvel = 0;
missile[mi]._mirange = misfiledata[36].mAnimLen[0];
@ -2802,8 +2801,8 @@ void MI_Firewall(int i)
}
if (missile[i]._mirange == missile[i]._miAnimLen - 1) {
SetMissDir(i, 0);
missile[i]._miAnimAdd = -1;
missile[i]._miAnimFrame = 13;
missile[i]._miAnimAdd = -1;
}
CheckMissileCol(i, missile[i]._midam, missile[i]._midam, 1, missile[i]._mix, missile[i]._miy, 1);
if (!missile[i]._mirange) {

20
Source/monster.cpp

@ -330,34 +330,22 @@ void InitMonsterGFX(int monst)
MissileFileFlag |= 2;
LoadMissileGFX(MFILE_THINLGHT);
}
if (mtype == MT_SUCCUBUS) {
if (MissileFileFlag & 4)
return;
if (mtype == MT_SUCCUBUS && !(MissileFileFlag & 4)) {
MissileFileFlag |= 4;
LoadMissileGFX(MFILE_FLARE);
LoadMissileGFX(MFILE_FLAREEXP);
}
if (mtype == MT_SNOWWICH) {
if (MissileFileFlag & 0x20)
return;
if (mtype == MT_SNOWWICH && !(MissileFileFlag & 0x20)) {
MissileFileFlag |= 0x20;
LoadMissileGFX(MFILE_SCUBMISB);
LoadMissileGFX(MFILE_SCBSEXPB);
}
if (mtype == MT_HLSPWN) {
if (MissileFileFlag & 0x40)
return;
if (mtype == MT_HLSPWN && !(MissileFileFlag & 0x40)) {
MissileFileFlag |= 0x40;
LoadMissileGFX(MFILE_SCUBMISD);
LoadMissileGFX(MFILE_SCBSEXPD);
}
if (mtype == MT_SOLBRNR) {
if (MissileFileFlag & 0x80)
return;
if (mtype == MT_SOLBRNR && !(MissileFileFlag & 0x80)) {
MissileFileFlag |= 0x80;
LoadMissileGFX(MFILE_SCUBMISC);
LoadMissileGFX(MFILE_SCBSEXPC);

2
Source/multi.cpp

@ -694,7 +694,7 @@ BOOL NetInit(BOOL bSinglePlayer, BOOL *pfExitProgram)
ProgramData.versionid = 42;
ProgramData.maxplayers = MAX_PLRS;
ProgramData.initdata = &sgGameInitInfo;
ProgramData.initdatabytes = 8;
ProgramData.initdatabytes = sizeof(sgGameInitInfo);
ProgramData.optcategorybits = 15;
ProgramData.lcid = 1033; /* LANG_ENGLISH */
memset(&plrdata, 0, sizeof(plrdata));

9
Source/spells.cpp

@ -4,7 +4,6 @@ DEVILUTION_BEGIN_NAMESPACE
int GetManaAmount(int id, int sn)
{
int i; // "raw" mana cost
int ma; // mana amount
// mana adjust
@ -28,12 +27,12 @@ int GetManaAmount(int id, int sn)
}
if (spelldata[sn].sManaCost == 255) {
i = (BYTE)plr[id]._pMaxManaBase;
ma = ((BYTE)plr[id]._pMaxManaBase - adj);
} else {
i = spelldata[sn].sManaCost;
ma = (spelldata[sn].sManaCost - adj);
}
ma = (i - adj) << 6;
ma <<= 6;
if (sn == SPL_HEAL) {
ma = (spelldata[SPL_HEAL].sManaCost + 2 * plr[id]._pLevel - adj) << 6;
@ -140,7 +139,7 @@ void CastSpell(int id, int spl, int sx, int sy, int dx, int dy, int caster, int
if (spelldata[spl].sMissiles[0] == MIS_CBOLT) {
UseMana(id, SPL_CBOLT);
for (i = 0; i < (spllvl >> 1) + 3; i++) {
for (i = (spllvl >> 1) + 3; i > 0; i--) {
AddMissile(sx, sy, dx, dy, dir, MIS_CBOLT, caster, id, 0, spllvl);
}
}

20
Source/stores.cpp

@ -197,16 +197,17 @@ void PrintSString(int x, int y, BOOL cjustflag, char *str, char col, int val)
void DrawSLine(int y)
{
int xy, yy, width, line;
int xy, yy, width, line, sy;
sy = SStringY[y];
if (stextsize == 1) {
xy = SCREENXY(26, 25);
yy = PitchTbl[SStringY[y] + 198] + 26 + 64;
yy = PitchTbl[sy + 198] + 26 + 64;
width = 586 / 4;
line = BUFFER_WIDTH - 586;
} else {
xy = SCREENXY(346, 25);
yy = PitchTbl[SStringY[y] + 198] + 346 + 64;
yy = PitchTbl[sy + 198] + 346 + 64;
width = 266 / 4;
line = BUFFER_WIDTH - 266;
}
@ -309,9 +310,9 @@ void StoreAutoPlace()
int i, w, h, idx;
SetICursor(plr[myplr].HoldItem._iCurs + CURSOR_FIRSTITEM);
done = FALSE;
w = icursW28;
h = icursH28;
done = FALSE;
if (w == 1 && h == 1) {
idx = plr[myplr].HoldItem.IDidx;
if (plr[myplr].HoldItem._iStatFlag && AllItemsList[idx].iUsable) {
@ -432,6 +433,8 @@ void S_ScrollSBuy(int idx)
void PrintStoreItem(ItemStruct *x, int l, char iclr)
{
char sstr[128];
char str, dex;
BYTE mag;
sstr[0] = '\0';
if (x->_iIdentified) {
@ -471,7 +474,10 @@ void PrintStoreItem(ItemStruct *x, int l, char iclr)
}
if (!x->_itype)
sstr[0] = '\0';
if (!(x->_iMinStr + x->_iMinMag + x->_iMinDex)) {
str = x->_iMinStr;
dex = x->_iMinDex;
mag = x->_iMinMag;
if (!(str + mag + dex)) {
strcat(sstr, "No required attributes");
} else {
strcpy(tempstr, "Required:");
@ -483,10 +489,10 @@ void PrintStoreItem(ItemStruct *x, int l, char iclr)
sprintf(tempstr, "%s %i Dex", tempstr, x->_iMinDex);
strcat(sstr, tempstr);
}
AddSText(40, l, 0, sstr, iclr, 0);
AddSText(40, l++, 0, sstr, iclr, 0);
if (x->_iMagical == ITEM_QUALITY_UNIQUE) {
if (x->_iIdentified)
AddSText(40, l + 1, 0, "Unique Item", iclr, 0);
AddSText(40, l, 0, "Unique Item", iclr, 0);
}
}

32
Source/themes.cpp

@ -285,41 +285,41 @@ BOOL SpecialThemeFit(int i, int t)
case THEME_BLOODFOUNTAIN:
if (rv) {
rv = TFit_Obj5(i);
if (rv) {
bFountainFlag = FALSE;
}
}
if (rv) {
bFountainFlag = FALSE;
}
break;
case THEME_PURIFYINGFOUNTAIN:
if (rv) {
rv = TFit_Obj5(i);
if (rv) {
pFountainFlag = FALSE;
}
}
if (rv) {
pFountainFlag = FALSE;
}
break;
case THEME_MURKYFOUNTAIN:
if (rv) {
rv = TFit_Obj5(i);
if (rv) {
mFountainFlag = FALSE;
}
}
if (rv) {
mFountainFlag = FALSE;
}
break;
case THEME_TEARFOUNTAIN:
if (rv) {
rv = TFit_Obj5(i);
if (rv) {
tFountainFlag = FALSE;
}
}
if (rv) {
tFountainFlag = FALSE;
}
break;
case THEME_CAULDRON:
if (rv) {
rv = TFit_Obj5(i);
if (rv) {
cauldronFlag = FALSE;
}
}
if (rv) {
cauldronFlag = FALSE;
}
break;
case THEME_GOATSHRINE:
@ -338,7 +338,7 @@ BOOL SpecialThemeFit(int i, int t)
break;
case THEME_TREASURE:
rv = treasureFlag;
if (treasureFlag) {
if (rv) {
treasureFlag = FALSE;
}
break;

6
Source/towners.cpp

@ -672,11 +672,11 @@ void TalkToTowner(int p, int t)
towner[t]._tVar1 = p;
quests[QTYPE_BUTCH]._qvar1 = 1;
#ifndef SPAWN
if (plr[p]._pClass == 0 && !effect_is_playing(PS_WARR8)) {
if (plr[p]._pClass == PC_WARRIOR && !effect_is_playing(PS_WARR8)) {
PlaySFX(PS_WARR8);
} else if (plr[p]._pClass == 1 && !effect_is_playing(PS_ROGUE8)) {
} else if (plr[p]._pClass == PC_ROGUE && !effect_is_playing(PS_ROGUE8)) {
PlaySFX(PS_ROGUE8);
} else if (plr[p]._pClass == 2 && !effect_is_playing(PS_MAGE8)) {
} else if (plr[p]._pClass == PC_SORCERER && !effect_is_playing(PS_MAGE8)) {
PlaySFX(PS_MAGE8);
}
#endif

8
Source/trigs.cpp

@ -592,15 +592,15 @@ BOOL ForceL4Trig()
void Freeupstairs()
{
int i, yy, xx, tx, ty;
int i, tx, ty, yy, xx;
for (i = 0; i < numtrigs; i++) {
tx = trigs[i]._tx;
ty = trigs[i]._ty;
for (yy = 0; yy < MAXTRIGGERS; yy++) {
for (xx = 0; xx < MAXTRIGGERS; xx++) {
dFlags[tx - 2 + xx][ty - 2 + yy] |= BFLAG_POPULATED;
for (yy = -2; yy <= 2; yy++) {
for (xx = -2; xx <= 2; xx++) {
dFlags[tx + xx][ty + yy] |= BFLAG_POPULATED;
}
}
}

12
defs.h

@ -182,3 +182,15 @@ typedef void (*_PVFV)(void);
#else
#define ALIGN_BY_1
#endif
#if (_MSC_VER == 1200)
#define __FINLINE __forceinline
#else
#define __FINLINE
#endif
#ifndef _BIG_ENDIAN_
#define SwapLE32
#else
#define SwapLE32(value) (value << 24 | (value & 0xFF00) << 8 | (value & 0xFF0000) >> 8 | value >> 24);
#endif

Loading…
Cancel
Save