Browse Source

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

pull/876/head
Anders Jenbo 7 years ago
parent
commit
c4c809af0c
  1. 6
      Source/items.cpp
  2. 40
      Source/missiles.cpp
  3. 9
      Source/mpqapi.cpp
  4. 4
      Source/objects.cpp
  5. 25
      Source/player.cpp
  6. 2
      Source/plrmsg.cpp
  7. 4
      Source/portal.cpp

6
Source/items.cpp

@ -4014,8 +4014,8 @@ void RecreateSmithItem(int ii, int idx, int lvl, int iseed)
itype = RndSmithItem(lvl) - 1; itype = RndSmithItem(lvl) - 1;
GetItemAttrs(ii, itype, lvl); GetItemAttrs(ii, itype, lvl);
item[ii]._iCreateInfo = lvl | 0x400;
item[ii]._iSeed = iseed; item[ii]._iSeed = iseed;
item[ii]._iCreateInfo = lvl | 0x400;
item[ii]._iIdentified = TRUE; item[ii]._iIdentified = TRUE;
} }
@ -4083,8 +4083,8 @@ void RecreateHealerItem(int ii, int idx, int lvl, int iseed)
GetItemAttrs(ii, itype, lvl); GetItemAttrs(ii, itype, lvl);
} }
item[ii]._iCreateInfo = lvl | 0x4000;
item[ii]._iSeed = iseed; item[ii]._iSeed = iseed;
item[ii]._iCreateInfo = lvl | 0x4000;
item[ii]._iIdentified = TRUE; item[ii]._iIdentified = TRUE;
} }
@ -4134,8 +4134,8 @@ int ItemNoFlippy()
int r; int r;
r = itemactive[numitems - 1]; r = itemactive[numitems - 1];
item[r]._iAnimFlag = FALSE;
item[r]._iAnimFrame = item[r]._iAnimLen; item[r]._iAnimFrame = item[r]._iAnimLen;
item[r]._iAnimFlag = FALSE;
item[r]._iSelFlag = 1; item[r]._iSelFlag = 1;
return r; return r;

40
Source/missiles.cpp

@ -1630,22 +1630,22 @@ void AddFlash(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, i
{ {
int i; int i;
if (!mienemy && id != -1) { if (!mienemy) {
missile[mi]._midam = 0; if (id != -1) {
for (i = 0; i <= plr[id]._pLevel; i++) { missile[mi]._midam = 0;
missile[mi]._midam += random(55, 20) + 1; for (i = 0; i <= plr[id]._pLevel; i++) {
} missile[mi]._midam += random(55, 20) + 1;
for (i = 0; i < missile[mi]._mispllvl; i++) { }
missile[mi]._midam += missile[mi]._midam >> 3; for (i = missile[mi]._mispllvl; i > 0; i--) {
} missile[mi]._midam += missile[mi]._midam >> 3;
missile[mi]._midam += missile[mi]._midam >> 1; }
UseMana(id, SPL_FLASH); missile[mi]._midam += missile[mi]._midam >> 1;
} else { UseMana(id, SPL_FLASH);
if (!mienemy) {
missile[mi]._midam = currlevel >> 1;
} else { } else {
missile[mi]._midam = monster[id].mLevel << 1; missile[mi]._midam = currlevel >> 1;
} }
} else {
missile[mi]._midam = monster[id].mLevel << 1;
} }
missile[mi]._mirange = 19; missile[mi]._mirange = 19;
} }
@ -2572,6 +2572,7 @@ void MI_Golem(int i)
{ {
int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 }; int CrawlNum[6] = { 0, 3, 12, 45, 94, 159 };
int tx, ty, dp, l, m, src, k, tid; int tx, ty, dp, l, m, src, k, tid;
char *ct;
src = missile[i]._misource; src = missile[i]._misource;
if (monster[src]._mx == 1 && !monster[src]._my) { if (monster[src]._mx == 1 && !monster[src]._my) {
@ -2579,8 +2580,9 @@ void MI_Golem(int i)
k = CrawlNum[l]; k = CrawlNum[l];
tid = k + 2; tid = k + 2;
for (m = (BYTE)CrawlTable[k]; m > 0; m--) { for (m = (BYTE)CrawlTable[k]; m > 0; m--) {
tx = missile[i]._miVar4 + CrawlTable[tid - 1]; ct = &CrawlTable[tid];
ty = missile[i]._miVar5 + CrawlTable[tid]; tx = missile[i]._miVar4 + *(ct - 1);
ty = missile[i]._miVar5 + *ct;
if (0 < tx && tx < MAXDUNX && 0 < ty && ty < MAXDUNY) { if (0 < tx && tx < MAXDUNX && 0 < ty && ty < MAXDUNY) {
dp = dPiece[tx][ty]; dp = dPiece[tx][ty];
if (LineClear(missile[i]._miVar1, missile[i]._miVar2, tx, ty)) { if (LineClear(missile[i]._miVar1, missile[i]._miVar2, tx, ty)) {
@ -2674,7 +2676,7 @@ void MI_LArrow(int i)
if (missile[i]._mix != missile[i]._miVar1 || missile[i]._miy != missile[i]._miVar2) { if (missile[i]._mix != missile[i]._miVar1 || missile[i]._miy != missile[i]._miVar2) {
missile[i]._miVar1 = missile[i]._mix; missile[i]._miVar1 = missile[i]._mix;
missile[i]._miVar2 = missile[i]._miy; missile[i]._miVar2 = missile[i]._miy;
ChangeLight(missile[i]._mlid, missile[i]._mix, missile[i]._miy, 5); ChangeLight(missile[i]._mlid, missile[i]._miVar1, missile[i]._miVar2, 5);
} }
} }
} }
@ -2887,8 +2889,8 @@ void MI_Fireball(int i)
{ {
int dam, id, px, py, mx, my; int dam, id, px, py, mx, my;
dam = missile[i]._midam;
id = missile[i]._misource; id = missile[i]._misource;
dam = missile[i]._midam;
missile[i]._mirange--; missile[i]._mirange--;
if (missile[i]._micaster == 0) { if (missile[i]._micaster == 0) {
@ -2954,7 +2956,7 @@ void MI_Fireball(int i)
} else if (missile[i]._mix != missile[i]._miVar1 || missile[i]._miy != missile[i]._miVar2) { } else if (missile[i]._mix != missile[i]._miVar1 || missile[i]._miy != missile[i]._miVar2) {
missile[i]._miVar1 = missile[i]._mix; missile[i]._miVar1 = missile[i]._mix;
missile[i]._miVar2 = missile[i]._miy; missile[i]._miVar2 = missile[i]._miy;
ChangeLight(missile[i]._mlid, missile[i]._mix, missile[i]._miy, 8); ChangeLight(missile[i]._mlid, missile[i]._miVar1, missile[i]._miVar2, 8);
} }
} }

9
Source/mpqapi.cpp

@ -266,17 +266,12 @@ _BLOCKENTRY *mpqapi_add_file(const char *pszName, _BLOCKENTRY *pBlk, int block_i
h3 = Hash(pszName, 2); h3 = Hash(pszName, 2);
if (mpqapi_get_hash_index(h1, h2, h3, 0) != -1) if (mpqapi_get_hash_index(h1, h2, h3, 0) != -1)
app_fatal("Hash collision between \"%s\" and existing file\n", pszName); app_fatal("Hash collision between \"%s\" and existing file\n", pszName);
i = 2048;
hIdx = h1 & 0x7FF; hIdx = h1 & 0x7FF;
while (1) { i = 2048;
i--; while (i--) {
if (sgpHashTbl[hIdx].block == -1 || sgpHashTbl[hIdx].block == -2) if (sgpHashTbl[hIdx].block == -1 || sgpHashTbl[hIdx].block == -2)
break; break;
hIdx = (hIdx + 1) & 0x7FF; hIdx = (hIdx + 1) & 0x7FF;
if (!i) {
i = -1;
break;
}
} }
if (i < 0) if (i < 0)
app_fatal("Out of hash space"); app_fatal("Out of hash space");

4
Source/objects.cpp

@ -4069,13 +4069,13 @@ void BreakCrux(int i)
int j, oi; int j, oi;
BOOL triggered; BOOL triggered;
object[i]._oBreak = -1;
object[i]._oSelFlag = 0;
object[i]._oAnimFlag = 1; object[i]._oAnimFlag = 1;
object[i]._oAnimFrame = 1; object[i]._oAnimFrame = 1;
object[i]._oAnimDelay = 1; object[i]._oAnimDelay = 1;
object[i]._oSolidFlag = TRUE; object[i]._oSolidFlag = TRUE;
object[i]._oMissFlag = TRUE; object[i]._oMissFlag = TRUE;
object[i]._oBreak = -1;
object[i]._oSelFlag = 0;
triggered = TRUE; triggered = TRUE;
for (j = 0; j < nobjects; j++) { for (j = 0; j < nobjects; j++) {
oi = objectactive[j]; oi = objectactive[j];

25
Source/player.cpp

@ -939,7 +939,7 @@ void AddPlrExperience(int pnum, int lvl, int exp)
void AddPlrMonstExper(int lvl, int exp, char pmask) void AddPlrMonstExper(int lvl, int exp, char pmask)
{ {
int totplrs, i; int totplrs, i, e;
totplrs = 0; totplrs = 0;
for (i = 0; i < MAX_PLRS; i++) { for (i = 0; i < MAX_PLRS; i++) {
@ -949,9 +949,9 @@ void AddPlrMonstExper(int lvl, int exp, char pmask)
} }
if (totplrs) { if (totplrs) {
exp = exp / totplrs; e = exp / totplrs;
if (pmask & (1 << myplr)) if (pmask & (1 << myplr))
AddPlrExperience(myplr, lvl, exp); AddPlrExperience(myplr, lvl, e);
} }
} }
@ -1294,7 +1294,6 @@ void PM_ChangeLightOff(int pnum)
} }
l = &LightList[plr[pnum]._plid]; l = &LightList[plr[pnum]._plid];
ymul = -1;
x = 2 * plr[pnum]._pyoff + plr[pnum]._pxoff; x = 2 * plr[pnum]._pyoff + plr[pnum]._pxoff;
y = 2 * plr[pnum]._pyoff - plr[pnum]._pxoff; y = 2 * plr[pnum]._pyoff - plr[pnum]._pxoff;
if (x < 0) { if (x < 0) {
@ -1304,6 +1303,7 @@ void PM_ChangeLightOff(int pnum)
xmul = 1; xmul = 1;
} }
if (y < 0) { if (y < 0) {
ymul = -1;
y = -y; y = -y;
} else { } else {
ymul = 1; ymul = 1;
@ -2099,28 +2099,31 @@ void SyncPlrKill(int pnum, int earflag)
void RemovePlrMissiles(int pnum) void RemovePlrMissiles(int pnum)
{ {
int mi, am; int i, am;
int mx, my;
if (currlevel != 0 && pnum == myplr && (monster[myplr]._mx != 1 || monster[myplr]._my != 0)) { if (currlevel != 0 && pnum == myplr && (monster[myplr]._mx != 1 || monster[myplr]._my != 0)) {
M_StartKill(myplr, myplr); M_StartKill(myplr, myplr);
AddDead(monster[myplr]._mx, monster[myplr]._my, monster[myplr].MType->mdeadval, (direction)monster[myplr]._mdir); AddDead(monster[myplr]._mx, monster[myplr]._my, (monster[myplr].MType)->mdeadval, monster[myplr]._mdir);
dMonster[monster[myplr]._mx][monster[myplr]._my] = 0; mx = monster[myplr]._mx;
my = monster[myplr]._my;
dMonster[mx][my] = 0;
monster[myplr]._mDelFlag = TRUE; monster[myplr]._mDelFlag = TRUE;
DeleteMonsterList(); DeleteMonsterList();
} }
for (mi = 0; mi < nummissiles; mi++) { for (i = 0; i < nummissiles; i++) {
am = missileactive[mi]; am = missileactive[i];
if (missile[am]._mitype == MIS_STONE && missile[am]._misource == pnum) { if (missile[am]._mitype == MIS_STONE && missile[am]._misource == pnum) {
monster[missile[am]._miVar2]._mmode = missile[am]._miVar1; monster[missile[am]._miVar2]._mmode = missile[am]._miVar1;
} }
if (missile[am]._mitype == MIS_MANASHIELD && missile[am]._misource == pnum) { if (missile[am]._mitype == MIS_MANASHIELD && missile[am]._misource == pnum) {
ClearMissileSpot(am); ClearMissileSpot(am);
DeleteMissile(am, mi); DeleteMissile(am, i);
} }
if (missile[am]._mitype == MIS_ETHEREALIZE && missile[am]._misource == pnum) { if (missile[am]._mitype == MIS_ETHEREALIZE && missile[am]._misource == pnum) {
ClearMissileSpot(am); ClearMissileSpot(am);
DeleteMissile(am, mi); DeleteMissile(am, i);
} }
} }
} }

2
Source/plrmsg.cpp

@ -110,8 +110,8 @@ void PrintPlrMsg(DWORD x, DWORD y, DWORD width, const char *str, BYTE col)
while (*str) { while (*str) {
BYTE c; BYTE c;
int screen = PitchTbl[y] + x; int screen = PitchTbl[y] + x;
const char *sstr = str;
DWORD len = 0; DWORD len = 0;
const char *sstr = str;
const char *endstr = sstr; const char *endstr = sstr;
while (1) { while (1) {

4
Source/portal.cpp

@ -18,12 +18,12 @@ void InitPortals()
void SetPortalStats(int i, BOOL o, int x, int y, int lvl, int lvltype) void SetPortalStats(int i, BOOL o, int x, int y, int lvl, int lvltype)
{ {
portal[i].setlvl = FALSE; portal[i].open = o;
portal[i].x = x; portal[i].x = x;
portal[i].y = y; portal[i].y = y;
portal[i].open = o;
portal[i].level = lvl; portal[i].level = lvl;
portal[i].ltype = lvltype; portal[i].ltype = lvltype;
portal[i].setlvl = FALSE;
} }
void AddWarpMissile(int i, int x, int y) void AddWarpMissile(int i, int x, int y)

Loading…
Cancel
Save