Browse Source

Merge more Hellfire code paths

pull/973/head
Anders Jenbo 5 years ago
parent
commit
c802cbdc4d
  1. 5
      Source/automap.cpp
  2. 35
      Source/control.cpp
  3. 5
      Source/cursor.cpp
  4. 29
      Source/diablo.cpp
  5. 2
      Source/doom.cpp
  6. 2
      Source/doom.h
  7. 16
      Source/gamemenu.cpp
  8. 7
      Source/mainmenu.cpp
  9. 52
      Source/monstdat.cpp
  10. 5
      Source/monstdat.h
  11. 2
      Source/monster.cpp
  12. 211
      Source/objects.cpp
  13. 2
      Source/objects.h
  14. 8
      SourceX/sound.cpp
  15. 25
      SourceX/storm/storm.cpp
  16. 8
      defs.h
  17. 7
      enums.h

5
Source/automap.cpp

@ -572,13 +572,8 @@ static WORD GetAutomapType(int x, int y, BOOL view)
rv = automaptype[(BYTE)dungeon[x][y]];
if (rv == 7) {
#ifdef HELLFIRE
if ((BYTE)(GetAutomapType(x - 1, y, FALSE) >> 8) & MAPFLAG_HORZARCH) {
if ((BYTE)(GetAutomapType(x, y - 1, FALSE) >> 8) & MAPFLAG_VERTARCH) {
#else
if ((GetAutomapType(x - 1, y, FALSE) >> 8) & MAPFLAG_HORZARCH) {
if ((GetAutomapType(x, y - 1, FALSE) >> 8) & MAPFLAG_VERTARCH) {
#endif
rv = 1;
}
}

35
Source/control.cpp

@ -401,11 +401,7 @@ void DrawSpellList()
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;
@ -813,11 +809,10 @@ void InitControlPan()
memset(pLifeBuff, 0, 88 * 88);
pPanelText = LoadFileInMem("CtrlPan\\SmalText.CEL", NULL);
pChrPanel = LoadFileInMem("Data\\Char.CEL", NULL);
#ifndef HELLFIRE
pSpellCels = LoadFileInMem("CtrlPan\\SpelIcon.CEL", NULL);
#else
pSpellCels = LoadFileInMem("Data\\SpelIcon.CEL", NULL);
#endif
if (!gbIsHellfire)
pSpellCels = LoadFileInMem("CtrlPan\\SpelIcon.CEL", NULL);
else
pSpellCels = LoadFileInMem("Data\\SpelIcon.CEL", NULL);
SetSpellTrans(RSPLTYPE_SKILL);
pStatusPanel = LoadFileInMem("CtrlPan\\Panel8.CEL", NULL);
CelBlitWidth(pBtmBuff, 0, (PANEL_HEIGHT + 16) - 1, PANEL_WIDTH, pStatusPanel, 1, PANEL_WIDTH);
@ -1362,11 +1357,7 @@ void DrawInfoBox()
infoclr = COL_GOLD;
strcpy(infostr, plr[pcursplr]._pName);
ClearPanel();
#ifdef HELLFIRE
sprintf(tempstr, "%s, Level : %i", ClassStrTbl[plr[pcursplr]._pClass], plr[pcursplr]._pLevel);
#else
sprintf(tempstr, "Level : %i", plr[pcursplr]._pLevel);
#endif
AddPanelString(tempstr, TRUE);
sprintf(tempstr, "Hit Points %i of %i", plr[pcursplr]._pHitPoints >> 6, plr[pcursplr]._pMaxHP >> 6);
AddPanelString(tempstr, TRUE);
@ -1442,17 +1433,7 @@ 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);
} else if (plr[myplr]._pClass == PC_ROGUE) {
ADD_PlrStringXY(168, 32, 299, "Rogue", COL_WHITE);
} else if (plr[myplr]._pClass == PC_SORCERER) {
ADD_PlrStringXY(168, 32, 299, "Sorceror", COL_WHITE);
}
#endif
sprintf(chrstr, "%i", plr[myplr]._pLevel);
ADD_PlrStringXY(66, 69, 109, chrstr, COL_WHITE);
@ -1996,11 +1977,7 @@ void CheckSBook()
}
}
if (MouseX >= RIGHT_PANEL + 7 && MouseX < RIGHT_PANEL + 311 && MouseY >= SPANEL_WIDTH && MouseY < 349) {
#ifdef HELLFIRE
sbooktab = (MouseX - (RIGHT_PANEL + 7)) / 61;
#else
sbooktab = (MouseX - (RIGHT_PANEL + 7)) / 76;
#endif
sbooktab = (MouseX - (RIGHT_PANEL + 7)) / (gbIsHellfire ? 61 : 76);
}
}
@ -2247,7 +2224,6 @@ void control_release_talk_btn()
}
}
#ifndef HELLFIRE
void control_reset_talk_msg(char *msg)
{
int i, pmask;
@ -2259,7 +2235,6 @@ void control_reset_talk_msg(char *msg)
}
NetSendCmdString(pmask, sgszTalkMsg);
}
#endif
void control_type_message()
{

5
Source/cursor.cpp

@ -111,9 +111,8 @@ void InitCursor()
{
assert(!pCursCels);
pCursCels = LoadFileInMem("Data\\Inv\\Objcurs.CEL", NULL);
#ifdef HELLFIRE
pCursCels2 = LoadFileInMem("Data\\Inv\\Objcurs2.CEL", NULL);
#endif
if (gbIsHellfire)
pCursCels2 = LoadFileInMem("Data\\Inv\\Objcurs2.CEL", NULL);
ClearCursor();
}

29
Source/diablo.cpp

@ -15,17 +15,10 @@ bool allquests;
SDL_Window *ghMainWnd;
DWORD glSeedTbl[NUMLEVELS];
int gnLevelTypeTbl[NUMLEVELS];
#ifndef HELLFIRE
int glEndSeed[NUMLEVELS];
int glMid1Seed[NUMLEVELS];
int glMid2Seed[NUMLEVELS];
int glMid3Seed[NUMLEVELS];
#else
int glEndSeed[NUMLEVELS + 1];
int glMid1Seed[NUMLEVELS + 1];
int glMid2Seed[NUMLEVELS + 1];
int glMid3Seed[NUMLEVELS + 1];
#endif
int MouseX;
int MouseY;
BOOL gbGameLoopStartup;
@ -1456,15 +1449,15 @@ void LoadLvlGFX()
switch (leveltype) {
case DTYPE_TOWN:
#ifdef HELLFIRE
pDungeonCels = LoadFileInMem("NLevels\\TownData\\Town.CEL", NULL);
pMegaTiles = LoadFileInMem("NLevels\\TownData\\Town.TIL", NULL);
pLevelPieces = LoadFileInMem("NLevels\\TownData\\Town.MIN", NULL);
#else
pDungeonCels = LoadFileInMem("Levels\\TownData\\Town.CEL", NULL);
pMegaTiles = LoadFileInMem("Levels\\TownData\\Town.TIL", NULL);
pLevelPieces = LoadFileInMem("Levels\\TownData\\Town.MIN", NULL);
#endif
if (gbIsHellfire) {
pDungeonCels = LoadFileInMem("NLevels\\TownData\\Town.CEL", NULL);
pMegaTiles = LoadFileInMem("NLevels\\TownData\\Town.TIL", NULL);
pLevelPieces = LoadFileInMem("NLevels\\TownData\\Town.MIN", NULL);
} else {
pDungeonCels = LoadFileInMem("Levels\\TownData\\Town.CEL", NULL);
pMegaTiles = LoadFileInMem("Levels\\TownData\\Town.TIL", NULL);
pLevelPieces = LoadFileInMem("Levels\\TownData\\Town.MIN", NULL);
}
pSpecialCels = LoadFileInMem("Levels\\TownData\\TownS.CEL", NULL);
break;
case DTYPE_CATHEDRAL:
@ -1793,14 +1786,10 @@ void LoadGameLevel(BOOL firstflag, int lvldir)
}
}
#ifdef HELLFIRE
if (currlevel >= 17)
music_start(currlevel > 20 ? TMUSIC_L5 : TMUSIC_L6);
else
music_start(leveltype);
#else
music_start(leveltype);
#endif
while (!IncProgress())
;

2
Source/doom.cpp

@ -10,7 +10,7 @@ DEVILUTION_BEGIN_NAMESPACE
int doom_quest_time;
int doom_stars_drawn;
BYTE *pDoomCel;
DIABOOL doomflag;
bool doomflag;
int DoomQuestState;
/*

2
Source/doom.h

@ -12,7 +12,7 @@ DEVILUTION_BEGIN_NAMESPACE
extern "C" {
#endif
extern DIABOOL doomflag;
extern bool doomflag;
extern int DoomQuestState;
int doom_get_frame_from_time();

16
Source/gamemenu.cpp

@ -306,19 +306,15 @@ void gamemenu_music_volume(BOOL bActivate)
} else {
gbMusicOn = TRUE;
sound_get_or_set_music_volume(VOLUME_MAX);
#ifdef HELLFIRE
int lt;
if (currlevel >= 17) {
if (currlevel > 20)
lt = DTYPE_NEST;
lt = TMUSIC_L5;
else
lt = DTYPE_CRYPT;
lt = TMUSIC_L6;
} else
lt = leveltype;
music_start(lt);
#else
music_start(leveltype);
#endif
}
} else {
volume = gamemenu_slider_music_sound(&sgOptionsMenu[0]);
@ -330,19 +326,15 @@ void gamemenu_music_volume(BOOL bActivate)
}
} else if (!gbMusicOn) {
gbMusicOn = TRUE;
#ifdef HELLFIRE
int lt;
if (currlevel >= 17) {
if (currlevel > 20)
lt = DTYPE_NEST;
lt = TMUSIC_L5;
else
lt = DTYPE_CRYPT;
lt = TMUSIC_L6;
} else
lt = leveltype;
music_start(lt);
#else
music_start(leveltype);
#endif
}
}
gamemenu_get_music();

7
Source/mainmenu.cpp

@ -20,12 +20,11 @@ void mainmenu_refresh_music()
{
music_start(menu_music_track_id);
if (gbIsSpawn)
return;
do {
menu_music_track_id++;
if (menu_music_track_id == NUM_MUSIC)
if (gbIsSpawn && menu_music_track_id > TMUSIC_L1)
menu_music_track_id = TMUSIC_L5;
if (menu_music_track_id == NUM_MUSIC || (!gbIsHellfire && menu_music_track_id > TMUSIC_L4))
menu_music_track_id = TMUSIC_TOWN;
} while (menu_music_track_id == TMUSIC_TOWN || menu_music_track_id == TMUSIC_L1);
}

52
Source/monstdat.cpp

@ -39,20 +39,12 @@ MonsterData monsterdata[] = {
{ 128, 575, "Monsters\\SkelSd\\SklSr%c.CL2", TRUE, "Monsters\\SkelSd\\SklSr%c%i.WAV", FALSE, TRUE, "Monsters\\SkelSd\\Skelt.TRN", { 13, 8, 12, 7, 15, 16 }, { 4, 0, 0, 0, 0, 0 }, "Corpse Captain", 2, 6, 4, 12, 20, AI_SKELSD, 0 , 1, 30, 8, 3, 9, 0, 0, 0, 0, 5, MC_UNDEAD, IMMUNE_MAGIC | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_NULL_40, 0, 3, 200 },
{ 128, 575, "Monsters\\SkelSd\\SklSr%c.CL2", TRUE, "Monsters\\SkelSd\\SklSr%c%i.WAV", FALSE, FALSE, NULL, { 13, 8, 12, 7, 15, 16 }, { 4, 0, 0, 0, 0, 0 }, "Burning Dead Captain", 4, 8, 6, 16, 30, AI_SKELSD, 0 , 2, 35, 8, 4, 10, 0, 0, 0, 0, 15, MC_UNDEAD, IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_NULL_40, 0, 3, 393 },
{ 128, 575, "Monsters\\SkelSd\\SklSr%c.CL2", TRUE, "Monsters\\SkelSd\\SklSr%c%i.WAV", FALSE, TRUE, "Monsters\\SkelSd\\Black.TRN", { 13, 8, 12, 7, 15, 16 }, { 4, 0, 0, 0, 0, 0 }, "Horror Captain", 6, 10, 8, 35, 50, AI_SKELSD, MFLAG_SEARCH , 3, 40, 8, 5, 14, 0, 0, 0, 0, 30, MC_UNDEAD, IMMUNE_MAGIC | RESIST_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 3, 604 },
#ifdef HELLFIRE
{ 128, 800, "Monsters\\TSneak\\TSneak%c.CL2", FALSE, "Monsters\\TSneak\\Sneakl%c%i.WAV", FALSE, FALSE, NULL, { 13, 13, 15, 11, 16, 0 }, { 2, 0, 0, 0, 0, 0 }, "Invisible Lord", 36, 39, 14, 278, 278, AI_SKELSD, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 65, 8, 16, 30, 0, 0, 0, 0, 60, MC_DEMON, RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 3, 2000 },
#else
{ 128, 2000, "Monsters\\TSneak\\TSneak%c.CL2", FALSE, "Monsters\\TSneak\\Sneakl%c%i.WAV", FALSE, FALSE, NULL, { 13, 13, 15, 11, 16, 0 }, { 2, 0, 0, 0, 0, 0 }, "Invisible Lord", 14, 14, 14, 278, 278, AI_SKELSD, MFLAG_SEARCH , 3, 65, 8, 16, 30, 0, 0, 0, 0, 60, MC_DEMON, RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 3, 2000 },
#endif
{ 128, 992, "Monsters\\Sneak\\Sneak%c.CL2", TRUE, "Monsters\\Sneak\\Sneak%c%i.WAV", FALSE, FALSE, NULL, { 16, 8, 12, 8, 24, 15 }, { 2, 0, 0, 0, 0, 0 }, "Hidden", 3, 8, 5, 8, 24, AI_SNEAK, MFLAG_HIDDEN , 0, 35, 8, 3, 6, 0, 0, 0, 0, 25, MC_DEMON, 0 , IMMUNE_NULL_40, 0, 3, 278 },
{ 128, 992, "Monsters\\Sneak\\Sneak%c.CL2", TRUE, "Monsters\\Sneak\\Sneak%c%i.WAV", FALSE, TRUE, "Monsters\\Sneak\\Sneakv2.TRN", { 16, 8, 12, 8, 24, 15 }, { 2, 0, 0, 0, 0, 0 }, "Stalker", 8, 12, 9, 30, 45, AI_SNEAK, MFLAG_HIDDEN | MFLAG_SEARCH , 1, 40, 8, 8, 16, 0, 0, 0, 0, 30, MC_DEMON, 0 , IMMUNE_NULL_40, 0, 3, 630 },
{ 128, 992, "Monsters\\Sneak\\Sneak%c.CL2", TRUE, "Monsters\\Sneak\\Sneak%c%i.WAV", FALSE, TRUE, "Monsters\\Sneak\\Sneakv3.TRN", { 16, 8, 12, 8, 24, 15 }, { 2, 0, 0, 0, 0, 0 }, "Unseen", 10, 14, 11, 35, 50, AI_SNEAK, MFLAG_HIDDEN | MFLAG_SEARCH , 2, 45, 8, 12, 20, 0, 0, 0, 0, 30, MC_DEMON, RESIST_MAGIC | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_NULL_40, 0, 3, 935 },
{ 128, 992, "Monsters\\Sneak\\Sneak%c.CL2", TRUE, "Monsters\\Sneak\\Sneak%c%i.WAV", FALSE, TRUE, "Monsters\\Sneak\\Sneakv1.TRN", { 16, 8, 12, 8, 24, 15 }, { 2, 0, 0, 0, 0, 0 }, "Illusion Weaver", 14, 18, 13, 40, 60, AI_SNEAK, MFLAG_HIDDEN | MFLAG_SEARCH , 3, 60, 8, 16, 24, 0, 0, 0, 0, 30, MC_DEMON, RESIST_MAGIC | RESIST_FIRE , IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_NULL_40, 0, 3, 1500 },
#ifdef HELLFIRE
{ 160, 800, "Monsters\\GoatLord\\GoatL%c.CL2", FALSE, "Monsters\\newsfx\\Satyr%c%i.WAV", FALSE, FALSE, NULL, { 13, 13, 14, 9, 16, 0 }, { 2, 0, 0, 0, 0, 0 }, "Satyr Lord", 40, 43, 28, 160, 200, AI_SKELSD, MFLAG_SEARCH , 3, 90, 8, 20, 30, 0, 0, 0, 0, 70, MC_ANIMAL, RESIST_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 0, 3, 2800 },
#else
{ 160, 2000, "Monsters\\GoatLord\\GoatL%c.CL2", FALSE, "Monsters\\GoatLord\\Goatl%c%i.WAV", FALSE, FALSE, NULL, { 13, 13, 14, 9, 16, 0 }, { 2, 0, 0, 0, 0, 0 }, "Lord Sayter", 13, 13, 12, 351, 351, AI_SKELSD, MFLAG_SEARCH , 3, 80, 8, 14, 24, 0, 0, 0, 0, 60, MC_DEMON, RESIST_MAGIC | RESIST_FIRE | IMMUNE_NULL_40, RESIST_MAGIC | RESIST_FIRE | IMMUNE_NULL_40, 0, 3, 1500 },
#endif
{ 128, 1030, "Monsters\\GoatMace\\Goat%c.CL2", TRUE, "Monsters\\GoatMace\\Goat%c%i.WAV", FALSE, FALSE, NULL, { 12, 8, 12, 6, 20, 12 }, { 2, 0, 0, 0, 1, 0 }, "Flesh Clan", 6, 10, 8, 30, 45, AI_GOATMC, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 0, 50, 8, 4, 10, 0, 0, 0, 0, 40, MC_DEMON, 0 , 0 , 0, 3, 460 },
{ 128, 1030, "Monsters\\GoatMace\\Goat%c.CL2", TRUE, "Monsters\\GoatMace\\Goat%c%i.WAV", FALSE, TRUE, "Monsters\\GoatMace\\Beige.TRN", { 12, 8, 12, 6, 20, 12 }, { 2, 0, 0, 0, 1, 0 }, "Stone Clan", 8, 12, 10, 40, 55, AI_GOATMC, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 1, 60, 8, 6, 12, 0, 0, 0, 0, 40, MC_DEMON, RESIST_MAGIC | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_NULL_40, 0, 3, 685 },
{ 128, 1030, "Monsters\\GoatMace\\Goat%c.CL2", TRUE, "Monsters\\GoatMace\\Goat%c%i.WAV", FALSE, TRUE, "Monsters\\GoatMace\\Red.TRN", { 12, 8, 12, 6, 20, 12 }, { 2, 0, 0, 0, 1, 0 }, "Fire Clan", 10, 14, 12, 50, 65, AI_GOATMC, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 70, 8, 8, 16, 0, 0, 0, 0, 45, MC_DEMON, RESIST_FIRE , IMMUNE_FIRE , 0, 3, 906 },
@ -87,34 +79,19 @@ MonsterData monsterdata[] = {
{ 160, 1630, "Monsters\\Rhino\\Rhino%c.CL2", TRUE, "Monsters\\Rhino\\Rhino%c%i.WAV", TRUE, TRUE, "Monsters\\Rhino\\Orange.TRN", { 8, 8, 14, 6, 16, 6 }, { 2, 0, 0, 0, 0, 0 }, "Mud Runner", 14, 18, 15, 50, 90, AI_RHINO, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 1, 70, 7, 6, 18, 100, 0, 12, 36, 45, MC_ANIMAL, 0 , RESIST_FIRE , 0, 7, 1404 },
{ 160, 1630, "Monsters\\Rhino\\Rhino%c.CL2", TRUE, "Monsters\\Rhino\\Rhino%c%i.WAV", TRUE, TRUE, "Monsters\\Rhino\\Blue.TRN", { 8, 8, 14, 6, 16, 6 }, { 2, 0, 0, 0, 0, 0 }, "Frost Charger", 16, 20, 17, 60, 100, AI_RHINO, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 80, 7, 8, 20, 100, 0, 20, 40, 50, MC_ANIMAL, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | RESIST_LIGHTNING , 0, 7, 1720 },
{ 160, 1630, "Monsters\\Rhino\\Rhino%c.CL2", TRUE, "Monsters\\Rhino\\Rhino%c%i.WAV", TRUE, TRUE, "Monsters\\Rhino\\RhinoB.TRN", { 8, 8, 14, 6, 16, 6 }, { 2, 0, 0, 0, 0, 0 }, "Obsidian Lord", 18, 22, 19, 70, 110, AI_RHINO, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 90, 7, 10, 22, 100, 0, 20, 50, 55, MC_ANIMAL, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 0, 7, 1809 },
#ifdef HELLFIRE
{ 128, 1740, "Monsters\\Demskel\\Demskl%c.CL2", TRUE, "Monsters\\Thin\\Thin%c%i.WAV", TRUE, FALSE, "Monsters\\Thin\\Thinv3.TRN", { 10, 8, 20, 6, 24, 16 }, { 3, 0, 0, 0, 0, 0 }, "oldboned", 46, 47, 12, 70, 70, AI_STORM, 0 , 0, 60, 8, 6, 14, 12, 0, 0, 0, 50, MC_DEMON, IMMUNE_MAGIC | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_NULL_40, 0, 7, 1344 },
#else
{ 128, 1740, "Monsters\\Demskel\\Demskl%c.CL2", TRUE, "Monsters\\Thin\\Thin%c%i.WAV", TRUE, FALSE, "Monsters\\Thin\\Thinv3.TRN", { 10, 8, 20, 6, 24, 16 }, { 3, 0, 0, 0, 0, 0 }, "Bone Demon", 10, 14, 12, 70, 70, AI_STORM, 0 , 0, 60, 8, 6, 14, 12, 0, 0, 0, 50, MC_DEMON, IMMUNE_MAGIC | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_NULL_40, 0, 7, 1344 },
#endif
{ 160, 1740, "Monsters\\Thin\\Thin%c.CL2", TRUE, "Monsters\\Thin\\Thin%c%i.WAV", TRUE, TRUE, "Monsters\\Thin\\Thinv3.TRN", { 8, 8, 18, 4, 17, 14 }, { 3, 0, 0, 0, 0, 0 }, "Red Death", 14, 18, 16, 96, 96, AI_STORM, 0 , 1, 75, 5, 10, 20, 0, 0, 0, 0, 60, MC_DEMON, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 0, 7, 2168 },
{ 160, 1740, "Monsters\\Thin\\Thin%c.CL2", TRUE, "Monsters\\Thin\\Thin%c%i.WAV", TRUE, TRUE, "Monsters\\Thin\\Thinv3.TRN", { 8, 8, 18, 4, 17, 14 }, { 3, 0, 0, 0, 0, 0 }, "Litch Demon", 16, 20, 18, 110, 110, AI_STORM, 0 , 2, 80, 5, 10, 24, 0, 0, 0, 0, 45, MC_DEMON, IMMUNE_MAGIC | IMMUNE_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_LIGHTNING | IMMUNE_NULL_40, 0, 7, 2736 },
{ 160, 1740, "Monsters\\Thin\\Thin%c.CL2", TRUE, "Monsters\\Thin\\Thin%c%i.WAV", TRUE, TRUE, "Monsters\\Thin\\Thinv3.TRN", { 8, 8, 18, 4, 17, 14 }, { 3, 0, 0, 0, 0, 0 }, "Undead Balrog", 20, 24, 22, 130, 130, AI_STORM, 0 , 3, 85, 5, 12, 30, 0, 0, 0, 0, 65, MC_DEMON, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 7, 3575 },
#ifdef HELLFIRE
{ 128, 1460, "Monsters\\Fireman\\FireM%c.CL2", TRUE, "Monsters\\Acid\\Acid%c%i.WAV", FALSE, FALSE, NULL, { 14, 19, 20, 8, 14, 23 }, { 0, 0, 0, 0, 0, 0 }, "Incinerator", 40, 43, 16, 30, 45, AI_FIREMAN, 0 , 0, 75, 8, 8, 16, 0, 0, 0, 0, 25, MC_DEMON, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 0, 3, 1888 },
{ 128, 1460, "Monsters\\Fireman\\FireM%c.CL2", TRUE, "Monsters\\Acid\\Acid%c%i.WAV", FALSE, FALSE, NULL, { 14, 19, 20, 8, 14, 23 }, { 0, 0, 0, 0, 0, 0 }, "Flame Lord", 42, 45, 18, 40, 55, AI_FIREMAN, 0 , 1, 75, 8, 10, 20, 0, 0, 0, 0, 25, MC_DEMON, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 0, 3, 2250 },
{ 128, 1460, "Monsters\\Fireman\\FireM%c.CL2", TRUE, "Monsters\\Acid\\Acid%c%i.WAV", FALSE, FALSE, NULL, { 14, 19, 20, 8, 14, 23 }, { 0, 0, 0, 0, 0, 0 }, "Doom Fire", 44, 47, 20, 50, 65, AI_FIREMAN, 0 , 2, 80, 8, 12, 24, 0, 0, 0, 0, 30, MC_DEMON, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 0, 3, 2740 },
{ 128, 1460, "Monsters\\Fireman\\FireM%c.CL2", TRUE, "Monsters\\Acid\\Acid%c%i.WAV", FALSE, FALSE, NULL, { 14, 19, 20, 8, 14, 23 }, { 0, 0, 0, 0, 0, 0 }, "Hell Burner", 46, 47, 22, 60, 80, AI_FIREMAN, 0 , 3, 85, 8, 15, 30, 0, 0, 0, 0, 30, MC_DEMON, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 0, 3, 3355 },
#else
{ 128, 1460, "Monsters\\Fireman\\FireM%c.CL2", TRUE, "Monsters\\Acid\\Acid%c%i.WAV", FALSE, FALSE, NULL, { 14, 19, 20, 8, 14, 23 }, { 0, 0, 0, 0, 0, 0 }, "Incinerator", 14, 18, 16, 30, 45, AI_FIREMAN, 0 , 0, 75, 8, 8, 16, 0, 0, 0, 0, 25, MC_DEMON, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 0, 3, 1888 },
{ 128, 1460, "Monsters\\Fireman\\FireM%c.CL2", TRUE, "Monsters\\Acid\\Acid%c%i.WAV", FALSE, FALSE, NULL, { 14, 19, 20, 8, 14, 23 }, { 0, 0, 0, 0, 0, 0 }, "Flame Lord", 16, 20, 18, 40, 55, AI_FIREMAN, 0 , 1, 75, 8, 10, 20, 0, 0, 0, 0, 25, MC_DEMON, IMMUNE_MAGIC | IMMUNE_FIRE , IMMUNE_MAGIC | IMMUNE_FIRE , 0, 3, 2250 },
{ 128, 1460, "Monsters\\Fireman\\FireM%c.CL2", TRUE, "Monsters\\Acid\\Acid%c%i.WAV", FALSE, FALSE, NULL, { 14, 19, 20, 8, 14, 23 }, { 0, 0, 0, 0, 0, 0 }, "Doom Fire", 18, 22, 20, 50, 65, AI_FIREMAN, 0 , 2, 80, 8, 12, 24, 0, 0, 0, 0, 30, MC_DEMON, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 0, 3, 2740 },
{ 128, 1460, "Monsters\\Fireman\\FireM%c.CL2", TRUE, "Monsters\\Acid\\Acid%c%i.WAV", FALSE, FALSE, NULL, { 14, 19, 20, 8, 14, 23 }, { 0, 0, 0, 0, 0, 0 }, "Hell Burner", 20, 24, 22, 60, 80, AI_FIREMAN, 0 , 3, 85, 8, 15, 30, 0, 0, 0, 0, 30, MC_DEMON, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , 0, 3, 3355 },
#endif
{ 160, 1740, "Monsters\\Thin\\Thin%c.CL2", TRUE, "Monsters\\Thin\\Thin%c%i.WAV", TRUE, TRUE, "Monsters\\Thin\\Thinv3.TRN", { 8, 8, 18, 4, 17, 14 }, { 3, 0, 0, 0, 0, 0 }, "Red Storm", 17, 21, 18, 55, 110, AI_STORM, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 0, 80, 5, 8, 18, 75, 8, 4, 16, 30, MC_DEMON, IMMUNE_MAGIC | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_LIGHTNING , 0, 7, 2160 },
{ 160, 1740, "Monsters\\Thin\\Thin%c.CL2", TRUE, "Monsters\\Thin\\Thin%c%i.WAV", TRUE, FALSE, NULL, { 8, 8, 18, 4, 17, 14 }, { 3, 0, 0, 0, 0, 0 }, "Storm Rider", 19, 23, 20, 60, 120, AI_STORM, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 1, 80, 5, 8, 18, 80, 8, 4, 16, 30, MC_DEMON, RESIST_MAGIC | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_LIGHTNING , 0, 7, 2391 },
{ 160, 1740, "Monsters\\Thin\\Thin%c.CL2", TRUE, "Monsters\\Thin\\Thin%c%i.WAV", TRUE, TRUE, "Monsters\\Thin\\Thinv2.TRN", { 8, 8, 18, 4, 17, 14 }, { 3, 0, 0, 0, 0, 0 }, "Storm Lord", 21, 25, 22, 75, 135, AI_STORM, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 2, 85, 5, 12, 24, 75, 8, 4, 16, 35, MC_DEMON, RESIST_MAGIC | IMMUNE_LIGHTNING , IMMUNE_MAGIC | IMMUNE_LIGHTNING , 0, 7, 2775 },
{ 160, 1740, "Monsters\\Thin\\Thin%c.CL2", TRUE, "Monsters\\Thin\\Thin%c%i.WAV", TRUE, TRUE, "Monsters\\Thin\\Thinv1.TRN", { 8, 8, 18, 4, 17, 14 }, { 3, 0, 0, 0, 0, 0 }, "Maelstorm", 23, 27, 24, 90, 150, AI_STORM, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 90, 5, 12, 28, 75, 8, 4, 16, 40, MC_DEMON, RESIST_MAGIC | IMMUNE_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_LIGHTNING | IMMUNE_NULL_40, 0, 7, 3177 },
#ifdef HELLFIRE
{ 128, 800, "Monsters\\BigFall\\Fallg%c.CL2", TRUE, "Monsters\\newsfx\\KBrute%c%i.WAV", FALSE, FALSE, NULL, { 10, 8, 11, 8, 17, 0 }, { 0, 0, 0, 0, 2, 2 }, "Devil Kin Brute", 40, 43, 27, 120, 160, AI_SKELSD, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 100, 6, 18, 24, 0, 0, 0, 0, 70, MC_ANIMAL, RESIST_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , 0, 3, 2400 },
#else
{ 128, 1650, "Monsters\\BigFall\\Fallg%c.CL2", TRUE, "Monsters\\BigFall\\Bfal%c%i.WAV", FALSE, FALSE, NULL, { 10, 8, 11, 8, 17, 0 }, { 0, 0, 0, 0, 2, 2 }, "Devil Kin Brute", 20, 20, 24, 160, 220, AI_SKELSD, MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 100, 6, 18, 24, 0, 0, 0, 0, 75, MC_ANIMAL, 0 , 0 , 0, 6, 2000 },
#endif
{ 160, 1650, "Monsters\\Gargoyle\\Gargo%c.CL2", TRUE, "Monsters\\Gargoyle\\Gargo%c%i.WAV", FALSE, FALSE, NULL, { 14, 14, 14, 10, 18, 14 }, { 0, 0, 0, 0, 0, 2 }, "Winged-Demon", 8, 12, 9, 45, 60, AI_GARG, MFLAG_CAN_OPEN_DOOR, 0, 50, 7, 10, 16, 0, 0, 0, 0, 45, MC_DEMON, IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_NULL_40, 0, 6, 662 },
{ 160, 1650, "Monsters\\Gargoyle\\Gargo%c.CL2", TRUE, "Monsters\\Gargoyle\\Gargo%c%i.WAV", FALSE, TRUE, "Monsters\\Gargoyle\\GarE.TRN", { 14, 14, 14, 10, 18, 14 }, { 0, 0, 0, 0, 0, 2 }, "Gargoyle", 12, 16, 13, 60, 90, AI_GARG, MFLAG_CAN_OPEN_DOOR, 1, 65, 7, 10, 16, 0, 0, 0, 0, 45, MC_DEMON, IMMUNE_MAGIC | RESIST_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_LIGHTNING | IMMUNE_NULL_40, 0, 6, 1205 },
{ 160, 1650, "Monsters\\Gargoyle\\Gargo%c.CL2", TRUE, "Monsters\\Gargoyle\\Gargo%c%i.WAV", FALSE, TRUE, "Monsters\\Gargoyle\\GargBr.TRN", { 14, 14, 14, 10, 18, 14 }, { 0, 0, 0, 0, 0, 0 }, "Blood Claw", 16, 20, 19, 75, 125, AI_GARG, MFLAG_CAN_OPEN_DOOR, 2, 80, 7, 14, 22, 0, 0, 0, 0, 50, MC_DEMON, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 6, 1873 },
@ -131,17 +108,10 @@ MonsterData monsterdata[] = {
{ 160, 2120, "Monsters\\Black\\Black%c.CL2", FALSE, "Monsters\\Black\\Black%c%i.WAV", FALSE, TRUE, "Monsters\\Black\\BlkKntRT.TRN", { 8, 8, 16, 4, 24, 0 }, { 2, 0, 0, 0, 0, 0 }, "Doom Guard", 25, 29, 26, 165, 165, AI_SKELSD, MFLAG_SEARCH , 0, 130, 8, 18, 25, 0, 0, 0, 0, 75, MC_DEMON, RESIST_MAGIC | RESIST_FIRE | IMMUNE_NULL_40, RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_NULL_40, 0, 7, 3650 },
{ 160, 2120, "Monsters\\Black\\Black%c.CL2", FALSE, "Monsters\\Black\\Black%c%i.WAV", FALSE, TRUE, "Monsters\\Black\\BlkKntBT.TRN", { 8, 8, 16, 4, 24, 0 }, { 2, 0, 0, 0, 0, 0 }, "Steel Lord", 27, 30, 28, 180, 180, AI_SKELSD, MFLAG_SEARCH , 1, 120, 8, 20, 30, 0, 0, 0, 0, 80, MC_DEMON, RESIST_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 7, 4252 },
{ 160, 2120, "Monsters\\Black\\Black%c.CL2", FALSE, "Monsters\\Black\\Black%c%i.WAV", FALSE, TRUE, "Monsters\\Black\\BlkKntBe.TRN", { 8, 8, 16, 4, 24, 0 }, { 2, 0, 0, 0, 0, 0 }, "Blood Knight", 24, 26, 30, 200, 200, AI_SKELSD, MFLAG_SEARCH , 1, 130, 8, 25, 35, 0, 0, 0, 0, 85, MC_DEMON, IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40, 0, 7, 5130 },
#ifdef HELLFIRE
{ 96, 484, "Monsters\\Unrav\\Unrav%c.CL2", FALSE, "Monsters\\newsfx\\Shred%c%i.WAV", FALSE, FALSE, NULL, { 10, 10, 12, 5, 16, 0 }, { 0, 0, 0, 0, 0, 0 }, "The Shredded", 32, 35, 23, 70, 90, AI_SKELSD, 0 , 0, 75, 7, 4, 12, 0, 0, 0, 0, 65, MC_UNDEAD, RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 3, 900 },
{ 96, 484, "Monsters\\Unrav\\Unrav%c.CL2", FALSE, "Monsters\\Acid\\Acid%c%i.WAV", FALSE, FALSE, NULL, { 10, 10, 12, 5, 16, 0 }, { 0, 0, 0, 0, 0, 0 }, "Hollow One", 34, 37, 27, 135, 240, AI_SKELSD, 0 , 1, 75, 7, 12, 24, 0, 0, 0, 0, 75, MC_UNDEAD, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 3, 4374 },
{ 96, 484, "Monsters\\Unrav\\Unrav%c.CL2", FALSE, "Monsters\\Acid\\Acid%c%i.WAV", FALSE, FALSE, NULL, { 10, 10, 12, 5, 16, 0 }, { 0, 0, 0, 0, 0, 0 }, "Pain Master", 36, 39, 29, 110, 200, AI_SKELSD, 0 , 2, 80, 7, 16, 30, 0, 0, 0, 0, 80, MC_UNDEAD, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 3, 5147 },
{ 96, 484, "Monsters\\Unrav\\Unrav%c.CL2", FALSE, "Monsters\\Acid\\Acid%c%i.WAV", FALSE, FALSE, NULL, { 10, 10, 12, 5, 16, 0 }, { 0, 0, 0, 0, 0, 0 }, "Reality Weaver", 38, 39, 30, 135, 240, AI_SKELSD, 0 , 3, 85, 7, 20, 35, 0, 0, 0, 0, 85, MC_UNDEAD, RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40, RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40, 0, 3, 5925 },
#else
{ 96, 484, "Monsters\\Unrav\\Unrav%c.CL2", FALSE, "Monsters\\Acid\\Acid%c%i.WAV", FALSE, FALSE, NULL, { 10, 10, 12, 5, 16, 0 }, { 0, 0, 0, 0, 0, 0 }, "Unraveler", 26, 28, 25, 70, 150, AI_SKELSD, 0 , 0, 75, 7, 10, 20, 0, 0, 0, 0, 70, MC_UNDEAD, IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40, 0, 3, 3812 },
{ 96, 484, "Monsters\\Unrav\\Unrav%c.CL2", FALSE, "Monsters\\Acid\\Acid%c%i.WAV", FALSE, FALSE, NULL, { 10, 10, 12, 5, 16, 0 }, { 0, 0, 0, 0, 0, 0 }, "Hollow One", 28, 30, 27, 135, 240, AI_SKELSD, 0 , 1, 75, 7, 12, 24, 0, 0, 0, 0, 75, MC_UNDEAD, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 3, 4374 },
{ 96, 484, "Monsters\\Unrav\\Unrav%c.CL2", FALSE, "Monsters\\Acid\\Acid%c%i.WAV", FALSE, FALSE, NULL, { 10, 10, 12, 5, 16, 0 }, { 0, 0, 0, 0, 0, 0 }, "Pain Master", 27, 30, 29, 110, 200, AI_SKELSD, 0 , 2, 80, 7, 16, 30, 0, 0, 0, 0, 80, MC_UNDEAD, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 3, 5147 },
{ 96, 484, "Monsters\\Unrav\\Unrav%c.CL2", FALSE, "Monsters\\Acid\\Acid%c%i.WAV", FALSE, FALSE, NULL, { 10, 10, 12, 5, 16, 0 }, { 0, 0, 0, 0, 0, 0 }, "Reality Weaver", 28, 30, 30, 135, 240, AI_SKELSD, 0 , 3, 85, 7, 20, 35, 0, 0, 0, 0, 85, MC_UNDEAD, RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40, RESIST_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40, 0, 3, 5925 },
#endif
{ 128, 980, "Monsters\\Succ\\Scbs%c.CL2", FALSE, "Monsters\\Succ\\Scbs%c%i.WAV", FALSE, FALSE, NULL, { 14, 8, 16, 7, 24, 0 }, { 0, 0, 0, 0, 0, 0 }, "Succubus", 22, 26, 24, 120, 150, AI_SUCC, MFLAG_CAN_OPEN_DOOR, 0, 100, 10, 1, 20, 0, 0, 0, 0, 60, MC_DEMON, RESIST_MAGIC , IMMUNE_MAGIC | RESIST_FIRE , 0, 3, 3696 },
{ 128, 980, "Monsters\\Succ\\Scbs%c.CL2", FALSE, "Monsters\\Succ\\Scbs%c%i.WAV", FALSE, TRUE, "Monsters\\Succ\\Succb.TRN", { 14, 8, 16, 7, 24, 0 }, { 0, 0, 0, 0, 0, 0 }, "Snow Witch", 25, 28, 26, 135, 175, AI_SUCC, MFLAG_CAN_OPEN_DOOR, 1, 110, 10, 1, 24, 0, 0, 0, 0, 65, MC_DEMON, RESIST_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 3, 4084 },
#ifdef HELLFIRE
@ -194,11 +164,7 @@ MonsterData monsterdata[] = {
/**
* Map between .DUN file value and monster type enum
*/
#ifdef HELLFIRE
int MonstConvTbl[] = {
#else
char MonstConvTbl[] = {
#endif
MT_NZOMBIE,
MT_BZOMBIE,
MT_GZOMBIE,
@ -364,11 +330,7 @@ char MonstConvTbl[] = {
/**
* Define what version a monster type is available in
*/
#ifdef HELLFIRE
int MonstAvailTbl[] = {
#else
char MonstAvailTbl[] = {
#endif
MAT_ALWAYS, // Zombie
MAT_ALWAYS, // Ghoul
MAT_ALWAYS, // Rotting Carcass
@ -402,11 +364,7 @@ char MonstAvailTbl[] = {
MAT_RETAIL, // Stalker
MAT_RETAIL, // Unseen
MAT_RETAIL, // Illusion Weaver
#ifdef HELLFIRE
MAT_RETAIL, // Satyr Lord
#else
MAT_NEVER, // Lord Sayter
#endif
MAT_RETAIL, // Flesh Clan
MAT_RETAIL, // Stone Clan
MAT_RETAIL, // Fire Clan
@ -453,11 +411,7 @@ char MonstAvailTbl[] = {
MAT_RETAIL, // Storm Rider
MAT_RETAIL, // Storm Lord
MAT_RETAIL, // Maelstorm
#ifdef HELLFIRE
MAT_RETAIL, // Devil Kin Brute
#else
MAT_NEVER, // Devil Kin Brute
#endif
MAT_RETAIL, // Winged-Demon
MAT_RETAIL, // Gargoyle
MAT_RETAIL, // Blood Claw
@ -474,11 +428,7 @@ char MonstAvailTbl[] = {
MAT_RETAIL, // Doom Guard
MAT_RETAIL, // Steel Lord
MAT_RETAIL, // Blood Knight
#ifdef HELLFIRE
MAT_RETAIL, // The Shredded
#else
MAT_NEVER, // Unraveler
#endif
MAT_NEVER, // Hollow One
MAT_NEVER, // Pain Master
MAT_NEVER, // Reality Weaver
@ -493,7 +443,6 @@ char MonstAvailTbl[] = {
MAT_NEVER, // Golem
MAT_NEVER, // The Dark Lord
MAT_NEVER, // The Arch-Litch Malignus
#ifdef HELLFIRE
MAT_RETAIL, // Hellboar
MAT_RETAIL, // Stinger
MAT_RETAIL, // Psychorb
@ -520,7 +469,6 @@ char MonstAvailTbl[] = {
MAT_RETAIL, // Flesh Thing
MAT_RETAIL, // Reaper
MAT_NEVER, // Na-Krul
#endif
};
/** Contains the data related to each unique monster ID. */
UniqMonstStruct UniqMonst[] = {

5
Source/monstdat.h

@ -13,13 +13,8 @@ extern "C" {
#endif
extern MonsterData monsterdata[];
#ifdef HELLFIRE
extern int MonstConvTbl[];
extern int MonstAvailTbl[];
#else
extern char MonstConvTbl[];
extern char MonstAvailTbl[];
#endif
extern UniqMonstStruct UniqMonst[];
#ifdef __cplusplus

2
Source/monster.cpp

@ -6043,7 +6043,7 @@ BOOL PosOkMonst3(int i, int x, int y)
int j, oi, objtype, mi;
#ifdef HELLFIRE
BOOL ret;
DIABOOL isdoor;
bool isdoor;
ret = TRUE;
isdoor = FALSE;

211
Source/objects.cpp

@ -269,7 +269,7 @@ void FreeObjectGFX()
numobjfiles = 0;
}
DIABOOL RndLocOk(int xp, int yp)
bool RndLocOk(int xp, int yp)
{
if (dMonster[xp][yp] != 0)
return FALSE;
@ -286,7 +286,7 @@ DIABOOL RndLocOk(int xp, int yp)
return FALSE;
}
static DIABOOL WallTrapLocOkK(int xp, int yp)
static bool WallTrapLocOkK(int xp, int yp)
{
if (dFlags[xp][yp] & BFLAG_POPULATED)
return FALSE;
@ -353,7 +353,7 @@ void InitRndLocBigObj(int min, int max, int objtype)
void InitRndLocObj5x5(int min, int max, int objtype)
{
DIABOOL exit;
bool exit;
int xp, yp, numobjs, i, cnt, m, n;
numobjs = min + random_(139, max - min);
@ -384,34 +384,12 @@ void ClrAllObjects()
{
int i;
#ifdef HELLFIRE
memset(object, 0, sizeof(object));
#else
for (i = 0; i < MAXOBJECTS; i++) {
object[i]._ox = 0;
object[i]._oy = 0;
object[i]._oAnimData = 0;
object[i]._oAnimDelay = 0;
object[i]._oAnimCnt = 0;
object[i]._oAnimLen = 0;
object[i]._oAnimFrame = 0;
object[i]._oDelFlag = FALSE;
object[i]._oVar1 = 0;
object[i]._oVar2 = 0;
object[i]._oVar3 = 0;
object[i]._oVar4 = 0;
}
#endif
nobjects = 0;
for (i = 0; i < MAXOBJECTS; i++) {
objectavail[i] = i;
#ifndef HELLFIRE
objectactive[i] = 0;
#endif
}
#ifdef HELLFIRE
memset(objectactive, 0, sizeof(objectactive));
#endif
trapdir = 0;
trapid = 1;
leverid = 1;
@ -454,7 +432,7 @@ void AddCandles()
void AddBookLever(int lx1, int ly1, int lx2, int ly2, int x1, int y1, int x2, int y2, int msg)
{
DIABOOL exit;
bool exit;
int xp, yp, ob, cnt, m, n;
cnt = 0;
@ -497,7 +475,7 @@ void InitRndBarrels()
int numobjs; // number of groups of barrels to generate
int xp, yp;
_object_id o;
DIABOOL found;
bool found;
int p; // regulates chance to stop placing barrels in current group
int dir;
int t; // number of tries of placing next barrel in current group
@ -601,7 +579,7 @@ void AddL3Objs(int x1, int y1, int x2, int y2)
}
}
DIABOOL TorchLocOK(int xp, int yp)
bool TorchLocOK(int xp, int yp)
{
if (dFlags[xp][yp] & BFLAG_POPULATED)
return FALSE;
@ -794,7 +772,7 @@ void AddDiabObjs()
#ifdef HELLFIRE
void objects_add_lv22(int s)
{
DIABOOL exit;
bool exit;
int xp, yp, cnt, m, n;
cnt = 0;
@ -871,7 +849,7 @@ void AddStoryBooks()
{
int xp, yp, xx, yy;
int cnt;
DIABOOL done;
bool done;
cnt = 0;
done = FALSE;
@ -960,7 +938,7 @@ void AddLazStand()
{
int xp, yp, xx, yy;
int cnt;
DIABOOL found;
bool found;
cnt = 0;
found = FALSE;
@ -1044,11 +1022,9 @@ void InitObjects()
if (QuestStatus(Q_LTBANNER))
AddObject(OBJ_SIGNCHEST, 2 * setpc_x + 26, 2 * setpc_y + 19);
InitRndLocBigObj(10, 15, OBJ_SARC);
#ifdef HELLFIRE
if (currlevel >= 21)
add_crypt_objs(0, 0, MAXDUNX, MAXDUNY);
else
#endif
AddL1Objs(0, 0, MAXDUNX, MAXDUNY);
InitRndBarrels();
}
@ -1375,14 +1351,12 @@ void AddTrap(int i, int ot)
int mt;
mt = currlevel / 3 + 1;
#ifdef HELLFIRE
if (currlevel > 16) {
mt = (currlevel - 4) / 3 + 1;
}
if (currlevel > 20) {
mt = (currlevel - 8) / 3 + 1;
}
#endif
mt = random_(148, mt);
if (mt == 0)
object[i]._oVar3 = MIS_ARROW;
@ -1417,7 +1391,7 @@ void AddBarrel(int i, int t)
void AddShrine(int i)
{
int val;
DIABOOL slist[NUM_SHRINETYPE];
bool slist[NUM_SHRINETYPE];
int j;
object[i]._oPreFlag = TRUE;
for (j = 0; j < NUM_SHRINETYPE; j++) {
@ -1578,7 +1552,7 @@ void AddTorturedBody(int i)
void GetRndObjLoc(int randarea, int *xx, int *yy)
{
DIABOOL failed;
bool failed;
int i, j, tries;
if (randarea == 0)
@ -1865,16 +1839,13 @@ void AddObject(int ot, int ox, int oy)
void Obj_Light(int i, int lr)
{
int ox, oy, dx, dy, p, tr;
DIABOOL turnon;
bool turnon;
turnon = FALSE;
if (object[i]._oVar1 != -1) {
ox = object[i]._ox;
oy = object[i]._oy;
tr = lr + 10;
#ifndef HELLFIRE
turnon = FALSE;
#endif
if (!lightflag) {
for (p = 0; p < MAX_PLRS && !turnon; p++) {
if (plr[p].plractive) {
@ -1950,7 +1921,7 @@ void Obj_StopAnim(int i)
void Obj_Door(int i)
{
int dx, dy;
DIABOOL dok;
bool dok;
if (object[i]._oVar4 == 0) {
object[i]._oSelFlag = 3;
@ -1959,9 +1930,9 @@ void Obj_Door(int i)
dx = object[i]._ox;
dy = object[i]._oy;
dok = dMonster[dx][dy] == 0;
dok = dok HFAND(dItem[dx][dy] == 0);
dok = dok HFAND(dDead[dx][dy] == 0);
dok = dok HFAND(dPlayer[dx][dy] == 0);
dok = dok && dItem[dx][dy] == 0;
dok = dok && dDead[dx][dy] == 0;
dok = dok && dPlayer[dx][dy] == 0;
object[i]._oSelFlag = 2;
object[i]._oVar4 = dok ? 1 : 2;
object[i]._oMissFlag = TRUE;
@ -2365,9 +2336,7 @@ void DoorSet(int oi, int dx, int dy)
int pn;
pn = dPiece[dx][dy];
#ifdef HELLFIRE
if (currlevel < 17) {
#endif
if (pn == 43)
ObjSetMicro(dx, dy, 392);
if (pn == 45)
@ -2402,7 +2371,6 @@ void DoorSet(int oi, int dx, int dy)
ObjSetMicro(dx, dy, 396);
if (pn == 412)
ObjSetMicro(dx, dy, 396);
#ifdef HELLFIRE
} else {
if (pn == 75)
ObjSetMicro(dx, dy, 204);
@ -2435,7 +2403,6 @@ void DoorSet(int oi, int dx, int dy)
if (pn == 234)
ObjSetMicro(dx, dy, 212);
}
#endif
}
void RedoPlayerVision()
@ -2449,7 +2416,7 @@ void RedoPlayerVision()
}
}
void OperateL1RDoor(int pnum, int oi, DIABOOL sendflag)
void OperateL1RDoor(int pnum, int oi, bool sendflag)
{
int xp, yp;
@ -2464,17 +2431,13 @@ void OperateL1RDoor(int pnum, int oi, DIABOOL sendflag)
if (object[oi]._oVar4 == 0) {
if (pnum == myplr && sendflag)
NetSendCmdParam1(TRUE, CMD_OPENDOOR, oi);
#ifdef HELLFIRE
if (currlevel < 21) {
if (!deltaload)
PlaySfxLoc(IS_DOOROPEN, object[oi]._ox, object[oi]._oy);
ObjSetMicro(xp, yp, 395);
} else {
if (!deltaload)
PlaySfxLoc(IS_CROPEN, object[oi]._ox, object[oi]._oy);
}
if (currlevel < 21) {
ObjSetMicro(xp, yp, 395);
} else {
ObjSetMicro(xp, yp, 209);
}
if (currlevel < 17) {
@ -2482,12 +2445,6 @@ void OperateL1RDoor(int pnum, int oi, DIABOOL sendflag)
} else {
dSpecial[xp][yp] = 2;
}
#else
if (!deltaload)
PlaySfxLoc(IS_DOOROPEN, object[oi]._ox, object[oi]._oy);
ObjSetMicro(xp, yp, 395);
dSpecial[xp][yp] = 8;
#endif
objects_set_door_piece(xp, yp - 1);
object[oi]._oAnimFrame += 2;
object[oi]._oPreFlag = TRUE;
@ -2498,7 +2455,6 @@ void OperateL1RDoor(int pnum, int oi, DIABOOL sendflag)
return;
}
#ifdef HELLFIRE
if (currlevel < 21) {
if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, xp, object[oi]._oy);
@ -2506,13 +2462,13 @@ void OperateL1RDoor(int pnum, int oi, DIABOOL sendflag)
if (!deltaload)
PlaySfxLoc(IS_CRCLOS, xp, object[oi]._oy);
}
#ifdef HELLFIRE
BOOLEAN dok = dMonster[xp][yp] == 0;
dok = dok && dItem[xp][yp] == 0;
dok = dok && dDead[xp][yp] == 0;
if (dok) {
#else
if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, xp, object[oi]._oy);
if (((dDead[xp][yp] != 0 ? 0 : 1) & (dMonster[xp][yp] != 0 ? 0 : 1) & (dItem[xp][yp] != 0 ? 0 : 1)) != 0) {
#endif
if (pnum == myplr && sendflag)
@ -2520,9 +2476,7 @@ void OperateL1RDoor(int pnum, int oi, DIABOOL sendflag)
object[oi]._oVar4 = 0;
object[oi]._oSelFlag = 3;
ObjSetMicro(xp, yp, object[oi]._oVar1);
#ifdef HELLFIRE
if (currlevel < 17) {
#endif
if (object[oi]._oVar2 != 50) {
ObjSetMicro(xp - 1, yp, object[oi]._oVar2);
} else {
@ -2531,7 +2485,6 @@ void OperateL1RDoor(int pnum, int oi, DIABOOL sendflag)
else
ObjSetMicro(xp - 1, yp, 50);
}
#ifdef HELLFIRE
} else {
if (object[oi]._oVar2 != 86) {
ObjSetMicro(xp - 1, yp, object[oi]._oVar2);
@ -2542,7 +2495,6 @@ void OperateL1RDoor(int pnum, int oi, DIABOOL sendflag)
ObjSetMicro(xp - 1, yp, 86);
}
}
#endif
object[oi]._oAnimFrame -= 2;
object[oi]._oPreFlag = FALSE;
RedoPlayerVision();
@ -2551,7 +2503,7 @@ void OperateL1RDoor(int pnum, int oi, DIABOOL sendflag)
}
}
void OperateL1LDoor(int pnum, int oi, DIABOOL sendflag)
void OperateL1LDoor(int pnum, int oi, bool sendflag)
{
int xp, yp;
@ -2566,20 +2518,16 @@ void OperateL1LDoor(int pnum, int oi, DIABOOL sendflag)
if (object[oi]._oVar4 == 0) {
if (pnum == myplr && sendflag)
NetSendCmdParam1(TRUE, CMD_OPENDOOR, oi);
#ifdef HELLFIRE
if (currlevel < 21) {
if (!deltaload)
PlaySfxLoc(IS_DOOROPEN, object[oi]._ox, object[oi]._oy);
} else {
if (!deltaload)
PlaySfxLoc(IS_CROPEN, object[oi]._ox, object[oi]._oy);
}
if (currlevel < 21) {
if (object[oi]._oVar1 == 214)
ObjSetMicro(xp, yp, 408);
else
ObjSetMicro(xp, yp, 393);
} else {
if (!deltaload)
PlaySfxLoc(IS_CROPEN, object[oi]._ox, object[oi]._oy);
ObjSetMicro(xp, yp, 206);
}
if (currlevel < 17) {
@ -2587,15 +2535,6 @@ void OperateL1LDoor(int pnum, int oi, DIABOOL sendflag)
} else {
dSpecial[xp][yp] = 1;
}
#else
if (!deltaload)
PlaySfxLoc(IS_DOOROPEN, object[oi]._ox, object[oi]._oy);
if (object[oi]._oVar1 == 214)
ObjSetMicro(xp, yp, 408);
else
ObjSetMicro(xp, yp, 393);
dSpecial[xp][yp] = 7;
#endif
objects_set_door_piece(xp - 1, yp);
object[oi]._oAnimFrame += 2;
object[oi]._oPreFlag = TRUE;
@ -2606,7 +2545,6 @@ void OperateL1LDoor(int pnum, int oi, DIABOOL sendflag)
return;
}
#ifdef HELLFIRE
if (currlevel < 21) {
if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, xp, object[oi]._oy);
@ -2614,13 +2552,12 @@ void OperateL1LDoor(int pnum, int oi, DIABOOL sendflag)
if (!deltaload)
PlaySfxLoc(IS_CRCLOS, xp, object[oi]._oy);
}
#ifdef HELLFIRE
BOOLEAN dok = dMonster[xp][yp] == 0;
dok = dok && dItem[xp][yp] == 0;
dok = dok && dDead[xp][yp] == 0;
if (dok) {
#else
if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, xp, object[oi]._oy);
if (((dDead[xp][yp] != 0 ? 0 : 1) & (dMonster[xp][yp] != 0 ? 0 : 1) & (dItem[xp][yp] != 0 ? 0 : 1)) != 0) {
#endif
if (pnum == myplr && sendflag)
@ -2628,9 +2565,7 @@ void OperateL1LDoor(int pnum, int oi, DIABOOL sendflag)
object[oi]._oVar4 = 0;
object[oi]._oSelFlag = 3;
ObjSetMicro(xp, yp, object[oi]._oVar1);
#ifdef HELLFIRE
if (currlevel < 17) {
#endif
if (object[oi]._oVar2 != 50) {
ObjSetMicro(xp, yp - 1, object[oi]._oVar2);
} else {
@ -2639,7 +2574,6 @@ void OperateL1LDoor(int pnum, int oi, DIABOOL sendflag)
else
ObjSetMicro(xp, yp - 1, 50);
}
#ifdef HELLFIRE
} else {
if (object[oi]._oVar2 != 86) {
ObjSetMicro(xp, yp - 1, object[oi]._oVar2);
@ -2650,7 +2584,6 @@ void OperateL1LDoor(int pnum, int oi, DIABOOL sendflag)
ObjSetMicro(xp, yp - 1, 86);
}
}
#endif
object[oi]._oAnimFrame -= 2;
object[oi]._oPreFlag = FALSE;
RedoPlayerVision();
@ -2659,10 +2592,10 @@ void OperateL1LDoor(int pnum, int oi, DIABOOL sendflag)
}
}
void OperateL2RDoor(int pnum, int oi, DIABOOL sendflag)
void OperateL2RDoor(int pnum, int oi, bool sendflag)
{
int xp, yp;
DIABOOL dok;
bool dok;
if (object[oi]._oVar4 == 2) {
if (!deltaload)
@ -2688,8 +2621,8 @@ void OperateL2RDoor(int pnum, int oi, DIABOOL sendflag)
if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, object[oi]._ox, yp);
dok = dMonster[xp][yp] == 0;
dok = dok HFAND(dItem[xp][yp] == 0);
dok = dok HFAND(dDead[xp][yp] == 0);
dok = dok && dItem[xp][yp] == 0;
dok = dok && dDead[xp][yp] == 0;
if (dok) {
if (pnum == myplr && sendflag)
NetSendCmdParam1(TRUE, CMD_CLOSEDOOR, oi);
@ -2707,7 +2640,7 @@ void OperateL2RDoor(int pnum, int oi, DIABOOL sendflag)
void OperateL2LDoor(int pnum, int oi, BOOL sendflag)
{
int xp, yp;
DIABOOL dok;
bool dok;
if (object[oi]._oVar4 == 2) {
if (!deltaload)
@ -2733,8 +2666,8 @@ void OperateL2LDoor(int pnum, int oi, BOOL sendflag)
if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, object[oi]._ox, yp);
dok = dMonster[xp][yp] == 0;
dok = dok HFAND(dItem[xp][yp] == 0);
dok = dok HFAND(dDead[xp][yp] == 0);
dok = dok && dItem[xp][yp] == 0;
dok = dok && dDead[xp][yp] == 0;
if (dok) {
if (pnum == myplr && sendflag)
NetSendCmdParam1(TRUE, CMD_CLOSEDOOR, oi);
@ -2749,10 +2682,10 @@ void OperateL2LDoor(int pnum, int oi, BOOL sendflag)
}
}
void OperateL3RDoor(int pnum, int oi, DIABOOL sendflag)
void OperateL3RDoor(int pnum, int oi, bool sendflag)
{
int xp, yp;
DIABOOL dok;
bool dok;
if (object[oi]._oVar4 == 2) {
if (!deltaload)
@ -2779,8 +2712,8 @@ void OperateL3RDoor(int pnum, int oi, DIABOOL sendflag)
if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, object[oi]._ox, yp);
dok = dMonster[xp][yp] == 0;
dok = dok HFAND(dItem[xp][yp] == 0);
dok = dok HFAND(dDead[xp][yp] == 0);
dok = dok && dItem[xp][yp] == 0;
dok = dok && dDead[xp][yp] == 0;
if (dok) {
if (pnum == myplr && sendflag)
NetSendCmdParam1(TRUE, CMD_CLOSEDOOR, oi);
@ -2795,10 +2728,10 @@ void OperateL3RDoor(int pnum, int oi, DIABOOL sendflag)
}
}
void OperateL3LDoor(int pnum, int oi, DIABOOL sendflag)
void OperateL3LDoor(int pnum, int oi, bool sendflag)
{
int xp, yp;
DIABOOL dok;
bool dok;
if (object[oi]._oVar4 == 2) {
if (!deltaload)
@ -2825,8 +2758,8 @@ void OperateL3LDoor(int pnum, int oi, DIABOOL sendflag)
if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, object[oi]._ox, yp);
dok = dMonster[xp][yp] == 0;
dok = dok HFAND(dItem[xp][yp] == 0);
dok = dok HFAND(dDead[xp][yp] == 0);
dok = dok && dItem[xp][yp] == 0;
dok = dok && dDead[xp][yp] == 0;
if (dok) {
if (pnum == myplr && sendflag)
NetSendCmdParam1(TRUE, CMD_CLOSEDOOR, oi);
@ -2896,11 +2829,7 @@ void ObjChangeMap(int x1, int y1, int x2, int y2)
dungeon[i][j] = pdungeon[i][j];
}
}
#ifdef HELLFIRE
if (leveltype == DTYPE_CATHEDRAL && currlevel < 17) {
#else
if (leveltype == DTYPE_CATHEDRAL) {
#endif
ObjL1Special(2 * x1 + 16, 2 * y1 + 16, 2 * x2 + 17, 2 * y2 + 17);
AddL1Objs(2 * x1 + 16, 2 * y1 + 16, 2 * x2 + 17, 2 * y2 + 17);
}
@ -2920,11 +2849,7 @@ void ObjChangeMapResync(int x1, int y1, int x2, int y2)
dungeon[i][j] = pdungeon[i][j];
}
}
#ifdef HELLFIRE
if (leveltype == DTYPE_CATHEDRAL && currlevel < 17) {
#else
if (leveltype == DTYPE_CATHEDRAL) {
#endif
ObjL1Special(2 * x1 + 16, 2 * y1 + 16, 2 * x2 + 17, 2 * y2 + 17);
}
if (leveltype == DTYPE_CATACOMBS) {
@ -2932,7 +2857,7 @@ void ObjChangeMapResync(int x1, int y1, int x2, int y2)
}
}
void OperateL1Door(int pnum, int i, DIABOOL sendflag)
void OperateL1Door(int pnum, int i, bool sendflag)
{
int dpx, dpy;
@ -2947,7 +2872,7 @@ void OperateL1Door(int pnum, int i, DIABOOL sendflag)
void OperateLever(int pnum, int i)
{
int j, oi;
DIABOOL mapflag;
bool mapflag;
if (object[i]._oSelFlag != 0) {
if (!deltaload)
@ -2983,7 +2908,7 @@ void OperateBook(int pnum, int i)
int j, oi;
int dx, dy;
int otype;
DIABOOL do_add_missile, missile_added;
bool do_add_missile, missile_added;
if (object[i]._oSelFlag == 0)
return;
@ -3130,7 +3055,7 @@ void OperateSChambBk(int pnum, int i)
}
}
void OperateChest(int pnum, int i, DIABOOL sendmsg)
void OperateChest(int pnum, int i, bool sendmsg)
{
int j, mdir, mtype;
@ -3165,7 +3090,6 @@ void OperateChest(int pnum, int i, DIABOOL sendmsg)
case 2:
mtype = MIS_NOVA;
break;
#ifdef HELLFIRE
case 3:
mtype = MIS_FIRERING;
break;
@ -3177,7 +3101,6 @@ void OperateChest(int pnum, int i, DIABOOL sendmsg)
break;
default:
mtype = MIS_ARROW;
#endif
}
AddMissile(object[i]._ox, object[i]._oy, plr[pnum]._px, plr[pnum]._py, mdir, mtype, TARGET_PLAYERS, -1, 0, 0);
object[i]._oTrapFlag = FALSE;
@ -3262,7 +3185,7 @@ void OperateInnSignChest(int pnum, int i)
}
}
void OperateSlainHero(int pnum, int i, DIABOOL sendmsg)
void OperateSlainHero(int pnum, int i, bool sendmsg)
{
if (object[i]._oSelFlag != 0) {
object[i]._oSelFlag = 0;
@ -3327,7 +3250,7 @@ void OperateTrapLvr(int i)
}
}
void OperateSarc(int pnum, int i, DIABOOL sendmsg)
void OperateSarc(int pnum, int i, bool sendmsg)
{
if (object[i]._oSelFlag != 0) {
if (!deltaload)
@ -3349,7 +3272,7 @@ void OperateSarc(int pnum, int i, DIABOOL sendmsg)
}
}
void OperateL2Door(int pnum, int i, DIABOOL sendflag)
void OperateL2Door(int pnum, int i, bool sendflag)
{
int dpx, dpy;
@ -3361,7 +3284,7 @@ void OperateL2Door(int pnum, int i, DIABOOL sendflag)
OperateL2RDoor(pnum, i, sendflag);
}
void OperateL3Door(int pnum, int i, DIABOOL sendflag)
void OperateL3Door(int pnum, int i, bool sendflag)
{
int dpx, dpy;
@ -3410,7 +3333,7 @@ void OperatePedistal(int pnum, int i)
void TryDisarm(int pnum, int i)
{
int j, oi, oti, trapdisper;
DIABOOL checkflag;
bool checkflag;
if (pnum == myplr)
SetCursor_(CURSOR_HAND);
@ -4226,7 +4149,7 @@ void OperateShrine(int pnum, int i, int sType)
NetSendCmdParam2(FALSE, CMD_PLROPOBJ, pnum, i);
}
void OperateSkelBook(int pnum, int i, DIABOOL sendmsg)
void OperateSkelBook(int pnum, int i, bool sendmsg)
{
if (object[i]._oSelFlag != 0) {
if (!deltaload)
@ -4245,7 +4168,7 @@ void OperateSkelBook(int pnum, int i, DIABOOL sendmsg)
}
}
void OperateBookCase(int pnum, int i, DIABOOL sendmsg)
void OperateBookCase(int pnum, int i, bool sendmsg)
{
if (object[i]._oSelFlag != 0) {
if (!deltaload)
@ -4270,7 +4193,7 @@ void OperateBookCase(int pnum, int i, DIABOOL sendmsg)
}
}
void OperateDecap(int pnum, int i, DIABOOL sendmsg)
void OperateDecap(int pnum, int i, bool sendmsg)
{
if (object[i]._oSelFlag != 0) {
object[i]._oSelFlag = 0;
@ -4283,7 +4206,7 @@ void OperateDecap(int pnum, int i, DIABOOL sendmsg)
}
}
void OperateArmorStand(int pnum, int i, DIABOOL sendmsg)
void OperateArmorStand(int pnum, int i, bool sendmsg)
{
BOOL uniqueRnd;
@ -4301,10 +4224,8 @@ void OperateArmorStand(int pnum, int i, DIABOOL sendmsg)
CreateTypeItem(object[i]._ox, object[i]._oy, FALSE, ITYPE_HARMOR, IMISC_NONE, sendmsg, FALSE);
} else if (currlevel >= 13 && currlevel <= 16) {
CreateTypeItem(object[i]._ox, object[i]._oy, TRUE, ITYPE_HARMOR, IMISC_NONE, sendmsg, FALSE);
#ifdef HELLFIRE
} else if (currlevel >= 17) {
CreateTypeItem(object[i]._ox, object[i]._oy, TRUE, ITYPE_HARMOR, IMISC_NONE, sendmsg, FALSE);
#endif
}
if (pnum == myplr)
NetSendCmdParam1(FALSE, CMD_OPERATEOBJ, i);
@ -4316,7 +4237,7 @@ void OperateArmorStand(int pnum, int i, DIABOOL sendmsg)
int FindValidShrine(int i)
{
int rv;
DIABOOL done;
bool done;
done = FALSE;
do {
@ -4362,10 +4283,10 @@ void OperateCauldron(int pnum, int i, int sType)
force_redraw = 255;
}
DIABOOL OperateFountains(int pnum, int i)
bool OperateFountains(int pnum, int i)
{
int prev, add, rnd, cnt;
DIABOOL applied;
bool applied;
BOOL done;
applied = FALSE;
@ -4482,7 +4403,7 @@ DIABOOL OperateFountains(int pnum, int i)
return applied;
}
void OperateWeaponRack(int pnum, int i, DIABOOL sendmsg)
void OperateWeaponRack(int pnum, int i, bool sendmsg)
{
int weaponType;
@ -4681,7 +4602,7 @@ void OperateObject(int pnum, int i, BOOL TeleFlag)
void SyncOpL1Door(int pnum, int cmd, int i)
{
DIABOOL do_sync;
bool do_sync;
if (pnum == myplr)
return;
@ -4702,7 +4623,7 @@ void SyncOpL1Door(int pnum, int cmd, int i)
void SyncOpL2Door(int pnum, int cmd, int i)
{
DIABOOL do_sync;
bool do_sync;
if (pnum == myplr)
return;
@ -4723,7 +4644,7 @@ void SyncOpL2Door(int pnum, int cmd, int i)
void SyncOpL3Door(int pnum, int cmd, int i)
{
DIABOOL do_sync;
bool do_sync;
if (pnum == myplr)
return;
@ -4831,7 +4752,7 @@ void SyncOpObject(int pnum, int cmd, int i)
void BreakCrux(int i)
{
int j, oi;
DIABOOL triggered;
bool triggered;
object[i]._oAnimFlag = 1;
object[i]._oAnimFrame = 1;
@ -4895,13 +4816,11 @@ void BreakBarrel(int pnum, int i, int dam, BOOL forcebreak, BOOL sendmsg)
}
if (object[i]._otype == OBJ_BARRELEX) {
#ifdef HELLFIRE
if (currlevel >= 21 && currlevel <= 24)
PlaySfxLoc(IS_POPPOP3, object[i]._ox, object[i]._oy);
else if (currlevel >= 17 && currlevel <= 20)
PlaySfxLoc(IS_POPPOP8, object[i]._ox, object[i]._oy);
else
#endif
PlaySfxLoc(IS_BARLFIRE, object[i]._ox, object[i]._oy);
for (yp = object[i]._oy - 1; yp <= object[i]._oy + 1; yp++) {
for (xp = object[i]._ox - 1; xp <= object[i]._ox + 1; xp++) {
@ -4918,13 +4837,11 @@ void BreakBarrel(int pnum, int i, int dam, BOOL forcebreak, BOOL sendmsg)
}
}
} else {
#ifdef HELLFIRE
if (currlevel >= 21 && currlevel <= 24)
PlaySfxLoc(IS_POPPOP2, object[i]._ox, object[i]._oy);
else if (currlevel >= 17 && currlevel <= 20)
PlaySfxLoc(IS_POPPOP5, object[i]._ox, object[i]._oy);
else
#endif
PlaySfxLoc(IS_BARREL, object[i]._ox, object[i]._oy);
SetRndSeed(object[i]._oRndSeed);
if (object[i]._oVar2 <= 1) {
@ -4987,9 +4904,7 @@ void SyncL1Doors(int i)
x = object[i]._ox;
y = object[i]._oy;
object[i]._oSelFlag = 2;
#ifdef HELLFIRE
if (currlevel < 17) {
#endif
if (object[i]._otype == OBJ_L1LDOOR) {
if (object[i]._oVar1 == 214)
ObjSetMicro(x, y, 408);
@ -5000,14 +4915,11 @@ void SyncL1Doors(int i)
y--;
} else {
ObjSetMicro(x, y, 395);
#ifdef HELLFIRE
if (currlevel < 17)
#endif
dSpecial[x][y] = 8;
objects_set_door_piece(x, y - 1);
x--;
}
#ifdef HELLFIRE
} else {
if (object[i]._otype == OBJ_L1LDOOR) {
ObjSetMicro(x, y, 206);
@ -5021,13 +4933,12 @@ void SyncL1Doors(int i)
x--;
}
}
#endif
DoorSet(i, x, y);
}
void SyncCrux(int i)
{
DIABOOL found;
bool found;
int j, oi, type;
found = TRUE;
@ -5364,7 +5275,7 @@ void objects_rnd_454BEA()
AddObject(OBJ_LEVER, UberRow + 3, UberCol - 1);
}
DIABOOL objects_lv_24_454B04(int s)
bool objects_lv_24_454B04(int s)
{
switch (s) {
case 6:

2
Source/objects.h

@ -51,7 +51,7 @@ void GetObjectStr(int i);
void operate_lv24_lever();
void objects_454BA8();
void objects_rnd_454BEA();
DIABOOL objects_lv_24_454B04(int s);
bool objects_lv_24_454B04(int s);
#ifdef __cplusplus
}

8
SourceX/sound.cpp

@ -35,10 +35,8 @@ const char *const sgszSpawnMusicTracks[NUM_MUSIC] = {
"Music\\sLvlA.wav",
"Music\\sLvlA.wav",
"Music\\sLvlA.wav",
#ifdef HELLFIRE
"Music\\sLvlA.wav",
"Music\\sLvlA.wav",
#endif
"Music\\DLvlE.wav",
"Music\\DLvlF.wav",
"Music\\sintro.wav",
};
/** Maps from track ID to track name. */
@ -48,10 +46,8 @@ const char *const sgszMusicTracks[NUM_MUSIC] = {
"Music\\DLvlB.wav",
"Music\\DLvlC.wav",
"Music\\DLvlD.wav",
#ifdef HELLFIRE
"Music\\DLvlE.wav",
"Music\\DLvlF.wav",
#endif
"Music\\Dintro.wav",
};

25
SourceX/storm/storm.cpp

@ -34,9 +34,10 @@ std::string *SBasePath = NULL;
static bool IsSVidVideoMode = false;
#endif
radon::File& getIni() {
static radon::File ini(GetConfigPath() + "diablo.ini");
return ini;
radon::File &getIni()
{
static radon::File ini(GetConfigPath() + "diablo.ini");
return ini;
}
static Mix_Chunk *SFileChunk = NULL;
@ -355,7 +356,7 @@ bool getIniValue(const char *sectionName, const char *keyName, char *string, int
void setIniValue(const char *sectionName, const char *keyName, char *value, int len)
{
radon::File& ini = getIni();
radon::File &ini = getIni();
radon::Section *section = ini.getSection(sectionName);
if (!section) {
@ -604,15 +605,15 @@ void SVidPlayBegin(const char *filename, int a2, int a3, int a4, int a5, int fla
SDL_Rect **modes = SDL_ListModes(NULL, display->flags);
/* Check is there are any modes available */
if(modes == (SDL_Rect **)0){
if (modes == (SDL_Rect **)0) {
IsSVidVideoMode = false;
}
/* Check if our resolution is restricted */
if(modes != (SDL_Rect **)-1){
if (modes != (SDL_Rect **)-1) {
// Search for a usable video mode
bool UsableModeFound = false;
for (int i=0; modes[i]; i++) {
for (int i = 0; modes[i]; i++) {
if (modes[i]->w == SVidWidth || modes[i]->h == SVidHeight) {
UsableModeFound = true;
break;
@ -713,7 +714,7 @@ BOOL SVidPlayContinue(void)
return false;
}
#else
sVidAudioQueue->Enqueue(smk_get_audio(SVidSMK, 0), smk_get_audio_size(SVidSMK, 0));
sVidAudioQueue->Enqueue(smk_get_audio(SVidSMK, 0), smk_get_audio_size(SVidSMK, 0));
#endif
}
@ -821,7 +822,8 @@ void SVidPlayEnd(HANDLE video)
}
}
#else
if (IsSVidVideoMode) SetVideoModeToPrimary(IsFullScreen(), screenWidth, screenHeight);
if (IsSVidVideoMode)
SetVideoModeToPrimary(IsFullScreen(), screenWidth, screenHeight);
#endif
}
@ -843,7 +845,8 @@ int SStrCopy(char *dest, const char *src, int max_length)
BOOL SFileSetBasePath(const char *path)
{
if (SBasePath == NULL) SBasePath = new std::string;
if (SBasePath == NULL)
SBasePath = new std::string;
*SBasePath = path;
return true;
}
@ -853,4 +856,4 @@ BOOL SFileEnableDirectAccess(BOOL enable)
directFileAccess = enable;
return true;
}
}
} // namespace dvl

8
defs.h

@ -4,14 +4,6 @@
* Global definitions and Macros.
*/
#ifdef HELLFIRE
#define DIABOOL BOOLEAN
#define HFAND &&
#else
#define DIABOOL BOOL
#define HFAND &
#endif
#define DMAXX 40
#define DMAXY 40

7
enums.h

@ -2730,13 +2730,10 @@ typedef enum _talker_id {
TOWN_BMAID = 0x7,
TOWN_PEGBOY = 0x8,
TOWN_COW = 0x9,
#ifdef HELLFIRE
TOWN_FARMER = 0xA,
TOWN_GIRL = 0xB,
TOWN_COWFARM = 0xC,
#else
TOWN_PRIEST = 0xA,
#endif
TOWN_PRIEST,
} _talker_id;
typedef enum _music_id {
@ -2745,10 +2742,8 @@ typedef enum _music_id {
TMUSIC_L2,
TMUSIC_L3,
TMUSIC_L4,
#ifdef HELLFIRE
TMUSIC_L5,
TMUSIC_L6,
#endif
TMUSIC_INTRO,
NUM_MUSIC,
} _music_id;

Loading…
Cancel
Save