Merge branch 'master' of github.com:diasurgical/devilution
This commit is contained in:
commit
cec9579186
10 changed files with 108 additions and 61 deletions
|
|
@ -338,9 +338,9 @@ void DrawSpell()
|
|||
st = RSPLTYPE_INVALID;
|
||||
SetSpellTrans(st);
|
||||
if (spl != SPL_INVALID)
|
||||
DrawSpellCel(PANEL_X + 565, PANEL_Y + 119, pSpellCels, SpellITbl[spl], 56);
|
||||
DrawSpellCel(PANEL_X + 565, PANEL_Y + 119, pSpellCels, SpellITbl[spl], SPLICONLENGTH);
|
||||
else
|
||||
DrawSpellCel(PANEL_X + 565, PANEL_Y + 119, pSpellCels, 27, 56);
|
||||
DrawSpellCel(PANEL_X + 565, PANEL_Y + 119, pSpellCels, 27, SPLICONLENGTH);
|
||||
}
|
||||
|
||||
void DrawSpellList()
|
||||
|
|
@ -357,22 +357,22 @@ void DrawSpellList()
|
|||
switch ((spell_type)i) {
|
||||
case RSPLTYPE_SKILL:
|
||||
SetSpellTrans(RSPLTYPE_SKILL);
|
||||
c = SPLICONLAST + 3;
|
||||
mask = plr[myplr]._pAblSpells;
|
||||
c = SPLICONLAST + 3;
|
||||
break;
|
||||
case RSPLTYPE_SPELL:
|
||||
c = SPLICONLAST + 4;
|
||||
mask = plr[myplr]._pMemSpells;
|
||||
c = SPLICONLAST + 4;
|
||||
break;
|
||||
case RSPLTYPE_SCROLL:
|
||||
SetSpellTrans(RSPLTYPE_SCROLL);
|
||||
c = SPLICONLAST + 1;
|
||||
mask = plr[myplr]._pScrlSpells;
|
||||
c = SPLICONLAST + 1;
|
||||
break;
|
||||
case RSPLTYPE_CHARGES:
|
||||
SetSpellTrans(RSPLTYPE_CHARGES);
|
||||
c = SPLICONLAST + 2;
|
||||
mask = plr[myplr]._pISpells;
|
||||
c = SPLICONLAST + 2;
|
||||
break;
|
||||
}
|
||||
for (spl = 1, j = 1; j < MAX_SPELLS; spl <<= 1, j++) {
|
||||
|
|
@ -398,10 +398,14 @@ void DrawSpellList()
|
|||
pSplType = i;
|
||||
#ifdef HELLFIRE
|
||||
if (plr[myplr]._pClass == PC_MONK && j == SPL_SEARCH)
|
||||
i = RSPLTYPE_SKILL;
|
||||
pSplType = RSPLTYPE_SKILL;
|
||||
#endif
|
||||
DrawSpellCel(x, y, pSpellCels, c, SPLICONLENGTH);
|
||||
#ifdef HELLFIRE
|
||||
switch (pSplType) {
|
||||
#else
|
||||
switch (i) {
|
||||
#endif
|
||||
case RSPLTYPE_SKILL:
|
||||
sprintf(infostr, "%s Skill", spelldata[pSpell].sSkillText);
|
||||
break;
|
||||
|
|
@ -1414,6 +1418,9 @@ void DrawChr()
|
|||
CelDraw(SCREEN_X, 351 + SCREEN_Y, pChrPanel, 1, SPANEL_WIDTH);
|
||||
ADD_PlrStringXY(20, 32, 151, plr[myplr]._pName, COL_WHITE);
|
||||
|
||||
#ifdef HELLFIRE
|
||||
ADD_PlrStringXY(168, 32, 299, ClassStrTbl[plr[myplr]._pClass], COL_WHITE);
|
||||
#else
|
||||
if (plr[myplr]._pClass == PC_WARRIOR) {
|
||||
ADD_PlrStringXY(168, 32, 299, "Warrior", COL_WHITE);
|
||||
#ifndef SPAWN
|
||||
|
|
@ -1423,6 +1430,7 @@ void DrawChr()
|
|||
ADD_PlrStringXY(168, 32, 299, "Sorceror", COL_WHITE);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
sprintf(chrstr, "%i", plr[myplr]._pLevel);
|
||||
ADD_PlrStringXY(66, 69, 109, chrstr, COL_WHITE);
|
||||
|
|
|
|||
|
|
@ -884,10 +884,14 @@ void RightMouseDown()
|
|||
} else if (stextflag == STORE_NONE) {
|
||||
if (spselflag) {
|
||||
SetSpell();
|
||||
#ifdef HELLFIRE
|
||||
} else if ((!sbookflag || MouseX <= RIGHT_PANEL) && (MouseY >= SPANEL_HEIGHT || (!TryIconCurs() && (pcursinvitem == -1 || !UseInvItem(myplr, pcursinvitem))))) {
|
||||
#else
|
||||
} else if (MouseY >= SPANEL_HEIGHT
|
||||
|| (!sbookflag || MouseX <= RIGHT_PANEL)
|
||||
&& !TryIconCurs()
|
||||
&& (pcursinvitem == -1 || !UseInvItem(myplr, pcursinvitem))) {
|
||||
#endif
|
||||
if (pcurs == CURSOR_HAND) {
|
||||
if (pcursinvitem == -1 || !UseInvItem(myplr, pcursinvitem))
|
||||
CheckPlrSpell();
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ void doom_draw()
|
|||
}
|
||||
#endif
|
||||
|
||||
CelDraw(PANEL_X, PANEL_Y - 1, pDoomCel, 1, SCREEN_WIDTH);
|
||||
CelDraw(PANEL_X, PANEL_Y - 1, pDoomCel, 1, 640);
|
||||
}
|
||||
|
||||
DEVILUTION_END_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -172,7 +172,11 @@ BOOL mainmenu_multi_player()
|
|||
void mainmenu_play_intro()
|
||||
{
|
||||
music_stop();
|
||||
#ifdef HELLFIRE
|
||||
play_movie("gendata\\Hellfire.smk", TRUE);
|
||||
#else
|
||||
play_movie("gendata\\diablo1.smk", TRUE);
|
||||
#endif
|
||||
mainmenu_refresh_music();
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -2279,13 +2279,15 @@ void AddFirewall(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy
|
|||
{
|
||||
int i;
|
||||
|
||||
missile[mi]._midam = 16 * (random_(53, 10) + random_(53, 10) + plr[id]._pLevel + 2) >> 1;
|
||||
missile[mi]._midam = (random_(53, 10) + random_(53, 10) + plr[id]._pLevel + 2) << 4;
|
||||
missile[mi]._midam >>= 1;
|
||||
GetMissileVel(mi, sx, sy, dx, dy, 16);
|
||||
missile[mi]._mirange = 10;
|
||||
i = missile[mi]._mispllvl;
|
||||
if (i > 0)
|
||||
missile[mi]._mirange = 10 * (i + 1);
|
||||
missile[mi]._mirange = ((missile[mi]._mirange * plr[id]._pISplDur >> 3) & 0xFFFFFFF0) + 16 * missile[mi]._mirange;
|
||||
missile[mi]._mirange += (plr[id]._pISplDur * missile[mi]._mirange) >> 7;
|
||||
missile[mi]._mirange <<= 4;
|
||||
missile[mi]._miVar1 = missile[mi]._mirange - missile[mi]._miAnimLen;
|
||||
missile[mi]._miVar2 = 0;
|
||||
}
|
||||
|
|
@ -2361,6 +2363,7 @@ void AddMisexp(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy,
|
|||
|
||||
if (mienemy && id > 0) {
|
||||
mon = monster[id].MType;
|
||||
#ifndef HELLFIRE
|
||||
if (mon->mtype == MT_SUCCUBUS)
|
||||
SetMissAnim(mi, MFILE_FLAREEXP);
|
||||
if (mon->mtype == MT_SNOWWICH)
|
||||
|
|
@ -2369,6 +2372,22 @@ void AddMisexp(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy,
|
|||
SetMissAnim(mi, MFILE_SCBSEXPD);
|
||||
if (mon->mtype == MT_SOLBRNR)
|
||||
SetMissAnim(mi, MFILE_SCBSEXPC);
|
||||
#else
|
||||
switch (mon->mtype) {
|
||||
case MT_SUCCUBUS:
|
||||
SetMissAnim(mi, MFILE_FLAREEXP);
|
||||
break;
|
||||
case MT_SNOWWICH:
|
||||
SetMissAnim(mi, MFILE_SCBSEXPB);
|
||||
break;
|
||||
case MT_HLSPWN:
|
||||
SetMissAnim(mi, MFILE_SCBSEXPD);
|
||||
break;
|
||||
case MT_SOLBRNR:
|
||||
SetMissAnim(mi, MFILE_SCBSEXPC);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
missile[mi]._mix = missile[dx]._mix;
|
||||
|
|
|
|||
|
|
@ -74,35 +74,35 @@ char shrinemax[NUM_SHRINETYPE] = {
|
|||
*/
|
||||
|
||||
BYTE shrineavail[NUM_SHRINETYPE] = {
|
||||
SHRINETYPE_ANY, // SHRINE_MYSTERIOUS
|
||||
SHRINETYPE_ANY, // SHRINE_HIDDEN
|
||||
SHRINETYPE_SINGLE, // SHRINE_GLOOMY
|
||||
SHRINETYPE_SINGLE, // SHRINE_WEIRD
|
||||
SHRINETYPE_ANY, // SHRINE_MAGICAL
|
||||
SHRINETYPE_ANY, // SHRINE_STONE
|
||||
SHRINETYPE_ANY, // SHRINE_RELIGIOUS
|
||||
SHRINETYPE_ANY, // SHRINE_ENCHANTED
|
||||
SHRINETYPE_SINGLE, // SHRINE_THAUMATURGIC
|
||||
SHRINETYPE_ANY, // SHRINE_FASCINATING
|
||||
SHRINETYPE_ANY, // SHRINE_CRYPTIC
|
||||
SHRINETYPE_ANY, // SHRINE_MAGICAL2
|
||||
SHRINETYPE_ANY, // SHRINE_ELDRITCH
|
||||
SHRINETYPE_ANY, // SHRINE_EERIE
|
||||
SHRINETYPE_ANY, // SHRINE_DIVINE
|
||||
SHRINETYPE_ANY, // SHRINE_HOLY
|
||||
SHRINETYPE_ANY, // SHRINE_SACRED
|
||||
SHRINETYPE_ANY, // SHRINE_SPIRITUAL
|
||||
SHRINETYPE_MULTI, // SHRINE_SPOOKY
|
||||
SHRINETYPE_ANY, // SHRINE_ABANDONED
|
||||
SHRINETYPE_ANY, // SHRINE_CREEPY
|
||||
SHRINETYPE_ANY, // SHRINE_QUIET
|
||||
SHRINETYPE_ANY, // SHRINE_SECLUDED
|
||||
SHRINETYPE_ANY, // SHRINE_ORNATE
|
||||
SHRINETYPE_ANY, // SHRINE_GLIMMERING
|
||||
SHRINETYPE_MULTI // SHRINE_TAINTED
|
||||
};
|
||||
SHRINETYPE_ANY, // SHRINE_MYSTERIOUS
|
||||
SHRINETYPE_ANY, // SHRINE_HIDDEN
|
||||
SHRINETYPE_SINGLE, // SHRINE_GLOOMY
|
||||
SHRINETYPE_SINGLE, // SHRINE_WEIRD
|
||||
SHRINETYPE_ANY, // SHRINE_MAGICAL
|
||||
SHRINETYPE_ANY, // SHRINE_STONE
|
||||
SHRINETYPE_ANY, // SHRINE_RELIGIOUS
|
||||
SHRINETYPE_ANY, // SHRINE_ENCHANTED
|
||||
SHRINETYPE_SINGLE, // SHRINE_THAUMATURGIC
|
||||
SHRINETYPE_ANY, // SHRINE_FASCINATING
|
||||
SHRINETYPE_ANY, // SHRINE_CRYPTIC
|
||||
SHRINETYPE_ANY, // SHRINE_MAGICAL2
|
||||
SHRINETYPE_ANY, // SHRINE_ELDRITCH
|
||||
SHRINETYPE_ANY, // SHRINE_EERIE
|
||||
SHRINETYPE_ANY, // SHRINE_DIVINE
|
||||
SHRINETYPE_ANY, // SHRINE_HOLY
|
||||
SHRINETYPE_ANY, // SHRINE_SACRED
|
||||
SHRINETYPE_ANY, // SHRINE_SPIRITUAL
|
||||
SHRINETYPE_MULTI, // SHRINE_SPOOKY
|
||||
SHRINETYPE_ANY, // SHRINE_ABANDONED
|
||||
SHRINETYPE_ANY, // SHRINE_CREEPY
|
||||
SHRINETYPE_ANY, // SHRINE_QUIET
|
||||
SHRINETYPE_ANY, // SHRINE_SECLUDED
|
||||
SHRINETYPE_ANY, // SHRINE_ORNATE
|
||||
SHRINETYPE_ANY, // SHRINE_GLIMMERING
|
||||
SHRINETYPE_MULTI // SHRINE_TAINTED
|
||||
};
|
||||
/** Maps from book_id to book name. */
|
||||
char *StoryBookName[9] = {
|
||||
char *StoryBookName[] = {
|
||||
"The Great Conflict",
|
||||
"The Wages of Sin are War",
|
||||
"The Tale of the Horadrim",
|
||||
|
|
@ -111,7 +111,16 @@ char *StoryBookName[9] = {
|
|||
"The Binding of the Three",
|
||||
"The Realms Beyond",
|
||||
"Tale of the Three",
|
||||
"The Black King"
|
||||
"The Black King",
|
||||
#ifdef HELLFIRE
|
||||
"Journal: The Ensorcellment",
|
||||
"Journal: The Meeting",
|
||||
"Journal: The Tirade",
|
||||
"Journal: His Power Grows",
|
||||
"Journal: NA-KRUL",
|
||||
"Journal: The End",
|
||||
"A Spellbook",
|
||||
#endif
|
||||
};
|
||||
/** Specifies the speech IDs of each dungeon type narrator book, for each player class. */
|
||||
int StoryText[3][3] = {
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@ extern char *shrinestrs[NUM_SHRINETYPE];
|
|||
extern char shrinemin[NUM_SHRINETYPE];
|
||||
extern char shrinemax[NUM_SHRINETYPE];
|
||||
extern BYTE shrineavail[NUM_SHRINETYPE];
|
||||
extern char *StoryBookName[9];
|
||||
extern char *StoryBookName[];
|
||||
extern int StoryText[3][3];
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@ void palette_update_crypt()
|
|||
|
||||
if (dword_6E2D58 > 1) {
|
||||
col = system_palette[15];
|
||||
for (i = 15; i > 0; i--) {
|
||||
for (i = 15; i > 1; i--) {
|
||||
system_palette[i].r = system_palette[i - 1].r;
|
||||
system_palette[i].g = system_palette[i - 1].g;
|
||||
system_palette[i].b = system_palette[i - 1].b;
|
||||
|
|
@ -283,7 +283,7 @@ void palette_update_hive()
|
|||
|
||||
if (dword_6E2D60 == 2) {
|
||||
col = system_palette[8];
|
||||
for (i = 8; i > 0; i--) {
|
||||
for (i = 8; i > 1; i--) {
|
||||
system_palette[i].r = system_palette[i - 1].r;
|
||||
system_palette[i].g = system_palette[i - 1].g;
|
||||
system_palette[i].b = system_palette[i - 1].b;
|
||||
|
|
|
|||
|
|
@ -271,9 +271,12 @@ BOOL path_parent_path(PATHNODE *pPath, int dx, int dy, int sx, int sy)
|
|||
PATHNODE *path_get_node1(int dx, int dy)
|
||||
{
|
||||
PATHNODE *result = path_2_nodes->NextNode;
|
||||
while (result != NULL && (result->x != dx || result->y != dy))
|
||||
while (result != NULL) {
|
||||
if (result->x == dx && result->y == dy)
|
||||
return result;
|
||||
result = result->NextNode;
|
||||
return result;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -282,9 +285,12 @@ PATHNODE *path_get_node1(int dx, int dy)
|
|||
PATHNODE *path_get_node2(int dx, int dy)
|
||||
{
|
||||
PATHNODE *result = pnode_ptr->NextNode;
|
||||
while (result != NULL && (result->x != dx || result->y != dy))
|
||||
while (result != NULL) {
|
||||
if (result->x == dx && result->y == dy)
|
||||
return result;
|
||||
result = result->NextNode;
|
||||
return result;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -584,21 +584,18 @@ void Theme_MonstPit(int t)
|
|||
r = random_(0, 100) + 1;
|
||||
ixp = 0;
|
||||
iyp = 0;
|
||||
if (r > 0) {
|
||||
while (TRUE) {
|
||||
if (dTransVal[ixp][iyp] == themes[t].ttval && !nSolidTable[dPiece[ixp][iyp]]) {
|
||||
--r;
|
||||
}
|
||||
if (r <= 0) {
|
||||
break;
|
||||
}
|
||||
ixp++;
|
||||
if (ixp == MAXDUNX) {
|
||||
ixp = 0;
|
||||
iyp++;
|
||||
if (iyp == MAXDUNY) {
|
||||
iyp = 0;
|
||||
}
|
||||
while (r > 0) {
|
||||
if (dTransVal[ixp][iyp] == themes[t].ttval && !nSolidTable[dPiece[ixp][iyp]]) {
|
||||
--r;
|
||||
}
|
||||
if (r <= 0)
|
||||
continue;
|
||||
ixp++;
|
||||
if (ixp == MAXDUNX) {
|
||||
ixp = 0;
|
||||
iyp++;
|
||||
if (iyp == MAXDUNY) {
|
||||
iyp = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue