Browse Source

Merge master in to hellfire

pull/876/head
Anders Jenbo 6 years ago
parent
commit
f066b57cd0
  1. 2
      Source/appfat.cpp
  2. 6
      Source/cursor.cpp
  3. 291
      Source/diablo.cpp
  4. 30
      Source/diablo.h
  5. 6
      Source/dx.cpp
  6. 2
      Source/encrypt.cpp
  7. 66
      Source/gamemenu.cpp
  8. 48
      Source/missiles.cpp
  9. 2
      Source/monstdat.cpp
  10. 30
      Source/monster.cpp
  11. 2
      Source/sound.cpp
  12. 2
      Source/tmsg.cpp
  13. 24
      resource.h

2
Source/appfat.cpp

@ -573,7 +573,7 @@ void center_window(HWND hDlg)
}
}
static BOOL CALLBACK FuncDlg(HWND hDlg, UINT uMsg,WPARAM wParam, LPARAM lParam)
static BOOL CALLBACK FuncDlg(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg) {
case WM_INITDIALOG:

6
Source/cursor.cpp

@ -30,6 +30,7 @@ int pcurs;
/* rdata */
/** Maps from objcurs.cel frame number to frame width. */
const int InvItemWidth[] = {
// clang-format off
// Cursors
0, 33, 32, 32, 32, 32, 32, 32, 32, 32, 32, 23,
// Items
@ -58,10 +59,12 @@ const int InvItemWidth[] = {
2 * 28, 2 * 28, 2 * 28, 2 * 28, 2 * 28, 2 * 28, 2 * 28, 2 * 28, 2 * 28, 2 * 28,
2 * 28, 2 * 28, 2 * 28, 2 * 28, 2 * 28, 2 * 28, 2 * 28, 2 * 28, 2 * 28
#endif
// clang-format on
};
/** Maps from objcurs.cel frame number to frame height. */
const int InvItemHeight[] = {
// clang-format off
// Cursors
0, 29, 32, 32, 32, 32, 32, 32, 32, 32, 32, 35,
// Items
@ -90,11 +93,12 @@ const int InvItemHeight[] = {
3 * 28, 3 * 28, 3 * 28, 3 * 28, 3 * 28, 3 * 28, 3 * 28, 3 * 28, 3 * 28, 3 * 28,
3 * 28, 3 * 28, 3 * 28, 3 * 28, 3 * 28, 3 * 28, 3 * 28, 3 * 28, 3 * 28
#endif
// clang-format on
};
void InitCursor()
{
assert(! pCursCels);
assert(!pCursCels);
pCursCels = LoadFileInMem("Data\\Inv\\Objcurs.CEL", NULL);
#ifdef HELLFIRE
pCursCels2 = LoadFileInMem("Data\\Inv\\Objcurs2.CEL", NULL);

291
Source/diablo.cpp

@ -8,19 +8,26 @@
#include "../DiabloUI/diabloui.h"
HWND 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 gnLevelTypeTbl[NUMLEVELS];
int glMid3Seed[NUMLEVELS + 1];
#endif
int MouseX;
int MouseY;
BOOL gbGameLoopStartup;
DWORD glSeedTbl[NUMLEVELS];
BOOL gbRunGame;
int glMid3Seed[NUMLEVELS + 1];
BOOL gbRunGameResult;
BOOL zoomflag;
BOOL gbProcessPlayers;
int glEndSeed[NUMLEVELS + 1];
BOOL gbLoadGame;
HINSTANCE ghInst;
int DebugMonsters[10];
@ -37,14 +44,6 @@ BOOL trigdebug;
int setseed;
int debugmonsttypes;
int PauseMode;
#ifdef HELLFIRE
BOOLEAN UseTheoQuest;
BOOLEAN UseCowFarmer;
BOOLEAN UseNestArt;
BOOLEAN UseBardTest;
BOOLEAN UseBarbarianTest;
BOOLEAN UseMultiTest;
#endif
int sgnTimeoutCurs;
char sgbMouseDown;
int color_cycle_timer;
@ -112,9 +111,7 @@ BOOL StartGame(BOOL bNewGame, BOOL bSinglePlayer)
do {
fExitProgram = FALSE;
#ifndef HELLFIRE
gbLoadGame = FALSE;
#endif
if (!NetInit(bSinglePlayer, &fExitProgram)) {
gbRunGameResult = !fExitProgram;
@ -128,25 +125,16 @@ BOOL StartGame(BOOL bNewGame, BOOL bSinglePlayer)
InitQuests();
InitPortals();
InitDungMsgs(myplr);
#ifndef HELLFIRE
}
if (!gbValidSaveFile || !gbLoadGame) {
#else
if (!gbValidSaveFile && gbLoadGame)
inv_diablo_to_hellfire(myplr);
#endif
uMsg = WM_DIABNEWGAME;
} else {
uMsg = WM_DIABLOADGAME;
}
run_game_loop(uMsg);
NetClose();
#ifndef HELLFIRE
pfile_create_player_description(0, 0);
} while (gbRunGameResult);
#else
} while (gbMaxPlayers == 1 || !gbRunGameResult);
#endif
SNetDestroy();
return gbRunGameResult;
@ -200,9 +188,7 @@ void run_game_loop(unsigned int uMsg)
}
multi_process_network_packets();
game_loop(gbGameLoopStartup);
#ifndef HELLFIRE
msgcmd_send_chat();
#endif
gbGameLoopStartup = FALSE;
DrawAndBlit();
}
@ -268,9 +254,6 @@ BOOL diablo_get_not_running()
{
SetLastError(0);
CreateEvent(NULL, FALSE, FALSE, "DiabloEvent");
#ifdef HELLFIRE
CreateEvent(NULL, FALSE, FALSE, "HellfireEvent");
#endif
return GetLastError() != ERROR_ALREADY_EXISTS;
}
@ -287,10 +270,6 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
int nData;
char szFileName[MAX_PATH];
BOOL bNoEvent;
#ifdef HELLFIRE
char content[256];
FILE *file;
#endif
hInst = hInstance;
#ifndef DEBUGGER
@ -298,7 +277,6 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
#endif
ghInst = hInst;
#ifndef HELLFIRE
if (RestrictedTest())
ErrOkDlg(IDD_DIALOG10, 0, "C:\\Src\\Diablo\\Source\\DIABLO.CPP", 877);
if (ReadOnlyTest()) {
@ -306,23 +284,13 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
szFileName[0] = '\0';
DirErrorDlg(szFileName);
}
#endif
ShowCursor(FALSE);
srand(GetTickCount());
InitHash();
#ifdef HELLFIRE
alloc_plr();
lpTopLevelExceptionFilter = SetUnhandledExceptionFilter(diablo_TopLevelExceptionFilter);
#else
fault_get_filter();
#endif
bNoEvent = diablo_get_not_running();
#ifdef HELLFIRE
if (diablo_find_window("DIABLO"))
return 0;
#endif
if (diablo_find_window(GAME_NAME) || !bNoEvent)
return 0;
@ -330,16 +298,6 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
SFileEnableDirectAccess(TRUE);
#endif
diablo_init_screen();
#ifdef HELLFIRE
if (lpCmdLine[0] == '\0') {
content[0] = '\0';
if (file = fopen("command.txt", "r")) {
fgets(content, sizeof(content) / sizeof(char), file);
lpCmdLine = content;
fclose(file);
}
}
#endif
diablo_parse_flags(lpCmdLine);
init_create_window(nCmdShow);
ui_sound_init();
@ -358,12 +316,8 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
char szValueName[] = "Intro";
if (!SRegLoadValue(APP_NAME, szValueName, 0, &nData))
nData = 1;
#ifndef HELLFIRE
if (nData)
play_movie("gendata\\diablo1.smk", TRUE);
#else
play_movie("gendata\\Hellfire.smk", TRUE);
#endif
SRegSaveValue(APP_NAME, szValueName, 0, 0);
}
#endif
@ -418,44 +372,6 @@ void diablo_parse_flags(char *args)
args += strlen(ds);
continue;
}
#ifdef HELLFIRE
char tq[] = "Theoquest";
if (_strnicmp(tq, args, strlen(tq)) == 0) {
UseTheoQuest = TRUE;
args += strlen(tq);
continue;
}
char cq[] = "Cowquest";
if (_strnicmp(cq, args, strlen(cq)) == 0) {
UseCowFarmer = TRUE;
args += strlen(cq);
continue;
}
char na[] = "NestArt";
if (_strnicmp(na, args, strlen(na)) == 0) {
UseNestArt = TRUE;
args += strlen(na);
continue;
}
char bt[] = "Bardtest";
if (_strnicmp(bt, args, strlen(bt)) == 0) {
UseBardTest = TRUE;
args += strlen(bt);
continue;
}
char mt[] = "Multitest";
if (_strnicmp(mt, bt, strlen(mt)) == 0) { // BUGFIX: secound arg should be args
UseMultiTest = TRUE;
args += strlen(mt);
continue;
}
char bb[] = "Barbariantest";
if (_strnicmp(bb, args, strlen(bb)) == 0) {
UseBarbarianTest = TRUE;
args += strlen(bb);
continue;
}
#endif
c = tolower(*args);
args++;
#ifdef _DEBUG
@ -469,7 +385,7 @@ void diablo_parse_flags(char *args)
case 'b':
/*
debug_mode_key_b = TRUE;
*/
*/
break;
case 'd':
showintrodebug = FALSE;
@ -483,16 +399,16 @@ void diablo_parse_flags(char *args)
break;
case 'j':
/*
while(isspace(*args)) {
args++;
}
i = 0;
while(isdigit(*args)) {
i = *args + 10 * i - '0';
args++;
}
debug_mode_key_J_trigger = i;
*/
while(isspace(*args)) {
args++;
}
i = 0;
while(isdigit(*args)) {
i = *args + 10 * i - '0';
args++;
}
debug_mode_key_J_trigger = i;
*/
break;
case 'l':
setlevel = FALSE;
@ -602,18 +518,6 @@ void diablo_init_screen()
ClrDiabloMsg();
}
#ifdef HELLFIRE
LONG __stdcall diablo_TopLevelExceptionFilter(PEXCEPTION_POINTERS pExc)
{
dx_cleanup();
init_cleanup(FALSE);
if (lpTopLevelExceptionFilter)
return lpTopLevelExceptionFilter(pExc);
return EXCEPTION_CONTINUE_SEARCH;
}
#endif
BOOL diablo_find_window(LPCSTR lpClassName)
{
HWND hWnd, active;
@ -1044,15 +948,6 @@ BOOL TryIconCurs()
NewCursor(CURSOR_HAND);
}
return TRUE;
#ifdef HELLFIRE
} else if (pcurs == CURSOR_OIL) {
if (pcursinvitem != -1) {
DoOil(myplr, pcursinvitem);
} else {
SetCursor_(CURSOR_HAND);
}
return TRUE;
#endif
} else if (pcurs == CURSOR_TELEPORT) {
if (pcursmonst != -1) {
NetSendCmdParam3(TRUE, CMD_TSPELLID, pcursmonst, plr[myplr]._pTSpell, GetSpellLevel(myplr, plr[myplr]._pTSpell));
@ -1475,17 +1370,7 @@ void PressChar(int vkey)
}
return;
case 'v':
#ifndef HELLFIRE
NetSendCmdString(1 << myplr, gszProductName);
#else
char *local_10[3];
char pszStr[120];
local_10[0] = "Normal";
local_10[1] = "Nightmare";
local_10[2] = "Hell";
sprintf(pszStr, "%s, mode = %s", gszProductName, local_10[gnDifficulty]);
NetSendCmdString(1 << myplr, pszStr);
#endif
return;
case 'V':
NetSendCmdString(1 << myplr, gszVersionNumber);
@ -1643,37 +1528,20 @@ void PressChar(int vkey)
void LoadLvlGFX()
{
assert(! pDungeonCels);
assert(!pDungeonCels);
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
pSpecialCels = LoadFileInMem("Levels\\TownData\\TownS.CEL", NULL);
break;
case DTYPE_CATHEDRAL:
#ifdef HELLFIRE
if (currlevel < 21) {
#endif
pDungeonCels = LoadFileInMem("Levels\\L1Data\\L1.CEL", NULL);
pMegaTiles = LoadFileInMem("Levels\\L1Data\\L1.TIL", NULL);
pLevelPieces = LoadFileInMem("Levels\\L1Data\\L1.MIN", NULL);
pSpecialCels = LoadFileInMem("Levels\\L1Data\\L1S.CEL", NULL);
#ifdef HELLFIRE
} else {
pDungeonCels = LoadFileInMem("NLevels\\L5Data\\L5.CEL", NULL);
pMegaTiles = LoadFileInMem("NLevels\\L5Data\\L5.TIL", NULL);
pLevelPieces = LoadFileInMem("NLevels\\L5Data\\L5.MIN", NULL);
pSpecialCels = LoadFileInMem("NLevels\\L5Data\\L5S.CEL", NULL);
}
#endif
pDungeonCels = LoadFileInMem("Levels\\L1Data\\L1.CEL", NULL);
pMegaTiles = LoadFileInMem("Levels\\L1Data\\L1.TIL", NULL);
pLevelPieces = LoadFileInMem("Levels\\L1Data\\L1.MIN", NULL);
pSpecialCels = LoadFileInMem("Levels\\L1Data\\L1S.CEL", NULL);
break;
#ifndef SPAWN
case DTYPE_CATACOMBS:
@ -1683,19 +1551,9 @@ void LoadLvlGFX()
pSpecialCels = LoadFileInMem("Levels\\L2Data\\L2S.CEL", NULL);
break;
case DTYPE_CAVES:
#ifdef HELLFIRE
if (currlevel < 17) {
#endif
pDungeonCels = LoadFileInMem("Levels\\L3Data\\L3.CEL", NULL);
pMegaTiles = LoadFileInMem("Levels\\L3Data\\L3.TIL", NULL);
pLevelPieces = LoadFileInMem("Levels\\L3Data\\L3.MIN", NULL);
#ifdef HELLFIRE
} else {
pDungeonCels = LoadFileInMem("NLevels\\L6Data\\L6.CEL", NULL);
pMegaTiles = LoadFileInMem("NLevels\\L6Data\\L6.TIL", NULL);
pLevelPieces = LoadFileInMem("NLevels\\L6Data\\L6.MIN", NULL);
}
#endif
pDungeonCels = LoadFileInMem("Levels\\L3Data\\L3.CEL", NULL);
pMegaTiles = LoadFileInMem("Levels\\L3Data\\L3.TIL", NULL);
pLevelPieces = LoadFileInMem("Levels\\L3Data\\L3.MIN", NULL);
pSpecialCels = LoadFileInMem("Levels\\L1Data\\L1S.CEL", NULL);
break;
case DTYPE_HELL:
@ -1713,7 +1571,7 @@ void LoadLvlGFX()
void LoadAllGFX()
{
assert(! pSpeedCels);
assert(!pSpeedCels);
pSpeedCels = DiabloAllocPtr(0x100000);
IncProgress();
IncProgress();
@ -1738,15 +1596,7 @@ void CreateLevel(int lvldir)
CreateL5Dungeon(glSeedTbl[currlevel], lvldir);
InitL1Triggers();
Freeupstairs();
#ifdef HELLFIRE
if(currlevel < 21) {
LoadRndLvlPal(1);
} else {
LoadRndLvlPal(5);
}
#else
LoadRndLvlPal(1);
#endif
break;
#ifndef SPAWN
case DTYPE_CATACOMBS:
@ -1759,15 +1609,7 @@ void CreateLevel(int lvldir)
CreateL3Dungeon(glSeedTbl[currlevel], lvldir);
InitL3Triggers();
Freeupstairs();
#ifdef HELLFIRE
if(currlevel < 17) {
LoadRndLvlPal(3);
} else {
LoadRndLvlPal(6);
}
#else
LoadRndLvlPal(3);
#endif
break;
case DTYPE_HELL:
CreateL4Dungeon(glSeedTbl[currlevel], lvldir);
@ -1878,10 +1720,7 @@ void LoadGameLevel(BOOL firstflag, int lvldir)
glMid2Seed[currlevel] = GetRndSeed();
InitObjects();
InitItems();
#ifdef HELLFIRE
if ( currlevel < 17 )
#endif
CreateThemeRooms();
CreateThemeRooms();
glMid3Seed[currlevel] = GetRndSeed();
InitMissiles();
InitDead();
@ -1924,7 +1763,7 @@ void LoadGameLevel(BOOL firstflag, int lvldir)
ResyncMPQuests();
#ifndef SPAWN
} else {
assert(! pSpeedCels);
assert(!pSpeedCels);
pSpeedCels = DiabloAllocPtr(0x100000);
LoadSetMap();
IncProgress();
@ -1992,28 +1831,7 @@ void LoadGameLevel(BOOL firstflag, int lvldir)
ProcessVisionList();
}
#ifdef HELLFIRE
if ( currlevel >= 21 )
{
if ( currlevel == 21 )
{
items_427ABA(RowOfCornerStone, ColOfCornerStone);
}
if ( quests[Q_NAKRUL]._qactive == QUEST_DONE && currlevel == 24 ) // TODO: fix quest struct
{
objects_454BA8();
}
}
#endif
#ifdef HELLFIRE
if ( currlevel >= 17 )
music_start(currlevel > 20 ? TMUSIC_L5 : TMUSIC_L6);
else
music_start(leveltype);
#else
music_start(leveltype);
#endif
while (!IncProgress())
;
@ -2118,56 +1936,13 @@ void diablo_color_cyc_logic()
tc = GetTickCount();
if (tc - color_cycle_timer >= 50) {
color_cycle_timer = tc;
#ifndef HELLFIRE
if (!palette_get_color_cycling())
return;
#endif
if (leveltype == DTYPE_HELL) {
lighting_color_cycling();
#ifdef HELLFIRE
} else if (currlevel >= 21) {
palette_update_crypt();
} else if (currlevel >= 17) {
palette_update_hive();
#endif
} else if (leveltype == DTYPE_CAVES) {
if (fullscreen)
palette_update_caves();
}
}
}
#ifdef HELLFIRE
void alloc_plr()
{
plr = get_plr_mem(NULL);
if(plr == NULL) {
app_fatal("Unable to initialize memory");
}
memset(plr, 0, sizeof(PlayerStruct) * MAX_PLRS);
}
PlayerStruct *get_plr_mem(PlayerStruct *p)
{
void *r;
PlayerStruct *pPlayer;
r = malloc(rand() & 0x7FFF);
pPlayer = (PlayerStruct *)malloc(sizeof(PlayerStruct) * MAX_PLRS);
if(r != NULL) {
free(r);
}
if(pPlayer == NULL) {
return p;
}
if(p != NULL) {
memcpy(pPlayer, p, sizeof(PlayerStruct) * MAX_PLRS);
free(p);
}
return pPlayer;
}
#endif

30
Source/diablo.h

@ -7,19 +7,26 @@
#define __DIABLO_H__
extern HWND ghMainWnd;
extern DWORD glSeedTbl[NUMLEVELS];
extern int gnLevelTypeTbl[NUMLEVELS];
#ifndef HELLFIRE
extern int glEndSeed[NUMLEVELS];
extern int glMid1Seed[NUMLEVELS];
extern int glMid2Seed[NUMLEVELS];
extern int glMid3Seed[NUMLEVELS];
#else
extern int glEndSeed[NUMLEVELS + 1];
extern int glMid1Seed[NUMLEVELS + 1];
extern int glMid2Seed[NUMLEVELS + 1];
extern int gnLevelTypeTbl[NUMLEVELS];
extern int glMid3Seed[NUMLEVELS + 1];
#endif
extern int MouseX;
extern int MouseY;
extern BOOL gbGameLoopStartup;
extern DWORD glSeedTbl[NUMLEVELS];
extern BOOL gbRunGame;
extern int glMid3Seed[NUMLEVELS + 1];
extern BOOL gbRunGameResult;
extern BOOL zoomflag;
extern BOOL gbProcessPlayers;
extern int glEndSeed[NUMLEVELS + 1];
extern BOOL gbLoadGame;
extern HINSTANCE ghInst;
extern int DebugMonsters[10];
@ -36,14 +43,6 @@ extern BOOL trigdebug;
extern int setseed;
extern int debugmonsttypes;
extern int PauseMode;
#ifdef HELLFIRE
extern BOOLEAN UseTheoQuest;
extern BOOLEAN UseCowFarmer;
extern BOOLEAN UseNestArt;
extern BOOLEAN UseBardTest;
extern BOOLEAN UseBarbarianTest;
extern BOOLEAN UseMultiTest;
#endif
extern char sgbMouseDown;
extern int color_cycle_timer;
@ -55,9 +54,6 @@ void free_game();
BOOL diablo_get_not_running();
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
void diablo_parse_flags(char *args);
#ifdef HELLFIRE
LONG __stdcall diablo_TopLevelExceptionFilter(PEXCEPTION_POINTERS pExc);
#endif
void diablo_init_screen();
BOOL diablo_find_window(LPCSTR lpClassName);
void diablo_reload_process(HINSTANCE hInstance);
@ -84,10 +80,6 @@ void game_loop(BOOL bStartup);
void game_logic();
void timeout_cursor(BOOL bTimeout);
void diablo_color_cyc_logic();
#ifdef HELLFIRE
void alloc_plr();
PlayerStruct *get_plr_mem(PlayerStruct *p);
#endif
/* data */

6
Source/dx.cpp

@ -99,9 +99,9 @@ void dx_init(HWND hWnd)
BOOL bSuccess;
GUID *lpGUID;
assert(! gpBuffer);
assert(! sgdwLockCount);
assert(! sgpBackBuf);
assert(!gpBuffer);
assert(!sgdwLockCount);
assert(!sgpBackBuf);
SetFocus(hWnd);
ShowWindow(hWnd, SW_SHOWNORMAL);

2
Source/encrypt.cpp

@ -65,7 +65,7 @@ void InitHash()
seed = (125 * seed + 3) % 0x2AAAAB;
ch = (seed & 0xFFFF);
seed = (125 * seed + 3) % 0x2AAAAB;
hashtable[i][j] = ch << 16 | (seed & 0xFFFF);
hashtable[j][i] = ch << 16 | (seed & 0xFFFF);
}
}
}

66
Source/gamemenu.cpp

@ -13,8 +13,8 @@ BOOL jogging_opt = TRUE;
/** Contains the game menu items of the single player menu. */
TMenuItem sgSingleMenu[] = {
// clang-format off
// dwFlags, pszStr, fnMenu
// clang-format off
// dwFlags, pszStr, fnMenu
{ GMENU_ENABLED, "Save Game", &gamemenu_save_game },
{ GMENU_ENABLED, "Options", &gamemenu_options },
{ GMENU_ENABLED, "New Game", &gamemenu_new_game },
@ -25,12 +25,12 @@ TMenuItem sgSingleMenu[] = {
{ GMENU_ENABLED, "Quit Hellfire", &gamemenu_quit_game },
#endif
{ GMENU_ENABLED, NULL, NULL }
// clang-format on
// clang-format on
};
/** Contains the game menu items of the multi player menu. */
TMenuItem sgMultiMenu[] = {
// clang-format off
// dwFlags, pszStr, fnMenu
// clang-format off
// dwFlags, pszStr, fnMenu
{ GMENU_ENABLED, "Options", &gamemenu_options },
{ GMENU_ENABLED, "New Game", &gamemenu_new_game },
{ GMENU_ENABLED, "Restart In Town", &gamemenu_restart_town },
@ -40,11 +40,11 @@ TMenuItem sgMultiMenu[] = {
{ GMENU_ENABLED, "Quit Hellfire", &gamemenu_quit_game },
#endif
{ GMENU_ENABLED, NULL, NULL },
// clang-format on
// clang-format on
};
TMenuItem sgOptionsMenu[] = {
// clang-format off
// dwFlags, pszStr, fnMenu
// clang-format off
// dwFlags, pszStr, fnMenu
{ GMENU_ENABLED | GMENU_SLIDER, NULL, &gamemenu_music_volume },
{ GMENU_ENABLED | GMENU_SLIDER, NULL, &gamemenu_sound_volume },
{ GMENU_ENABLED | GMENU_SLIDER, "Gamma", &gamemenu_gamma },
@ -55,7 +55,7 @@ TMenuItem sgOptionsMenu[] = {
#endif
{ GMENU_ENABLED , "Previous Menu", &gamemenu_previous },
{ GMENU_ENABLED , NULL, NULL },
// clang-format on
// clang-format on
};
/** Specifies the menu names for music enabled and disabled. */
char *music_toggle_names[] = {
@ -266,16 +266,16 @@ void gamemenu_get_gamma()
void gamemenu_music_volume(BOOL bActivate)
{
int volume;
if (bActivate) {
if (gbMusicOn) {
gbMusicOn = FALSE;
music_stop();
sound_get_or_set_music_volume(VOLUME_MIN);
} else {
gbMusicOn = TRUE;
sound_get_or_set_music_volume(VOLUME_MAX);
int volume;
if (bActivate) {
if (gbMusicOn) {
gbMusicOn = FALSE;
music_stop();
sound_get_or_set_music_volume(VOLUME_MIN);
} else {
gbMusicOn = TRUE;
sound_get_or_set_music_volume(VOLUME_MAX);
#ifdef HELLFIRE
int lt;
if (currlevel >= 17) {
@ -289,17 +289,17 @@ void gamemenu_music_volume(BOOL bActivate)
#else
music_start(leveltype);
#endif
}
} else {
volume = gamemenu_slider_music_sound(&sgOptionsMenu[0]);
sound_get_or_set_music_volume(volume);
if (volume == VOLUME_MIN) {
if (gbMusicOn) {
gbMusicOn = FALSE;
music_stop();
}
} else if (!gbMusicOn) {
gbMusicOn = TRUE;
}
} else {
volume = gamemenu_slider_music_sound(&sgOptionsMenu[0]);
sound_get_or_set_music_volume(volume);
if (volume == VOLUME_MIN) {
if (gbMusicOn) {
gbMusicOn = FALSE;
music_stop();
}
} else if (!gbMusicOn) {
gbMusicOn = TRUE;
#ifdef HELLFIRE
int lt;
if (currlevel >= 17) {
@ -313,9 +313,9 @@ void gamemenu_music_volume(BOOL bActivate)
#else
music_start(leveltype);
#endif
}
}
gamemenu_get_music();
}
}
gamemenu_get_music();
}
int gamemenu_slider_music_sound(TMenuItem *menu_item)

48
Source/missiles.cpp

@ -1025,13 +1025,13 @@ void CheckMissileCol(int i, int mindam, int maxdam, BOOL shift, int mx, int my,
if (dMonster[mx][my] < 0
&& monster[-(dMonster[mx][my] + 1)]._mmode == MM_STONE
&& MonsterMHit(
missile[i]._misource,
-(dMonster[mx][my] + 1),
mindam,
maxdam,
missile[i]._midist,
missile[i]._mitype,
shift)) {
missile[i]._misource,
-(dMonster[mx][my] + 1),
mindam,
maxdam,
missile[i]._midist,
missile[i]._mitype,
shift)) {
if (!nodel)
missile[i]._mirange = 0;
missile[i]._miHitFlag = TRUE;
@ -1040,13 +1040,13 @@ void CheckMissileCol(int i, int mindam, int maxdam, BOOL shift, int mx, int my,
if (dPlayer[mx][my] > 0
&& dPlayer[mx][my] - 1 != missile[i]._misource
&& Plr2PlrMHit(
missile[i]._misource,
dPlayer[mx][my] - 1,
mindam,
maxdam,
missile[i]._midist,
missile[i]._mitype,
shift)) {
missile[i]._misource,
dPlayer[mx][my] - 1,
mindam,
maxdam,
missile[i]._midist,
missile[i]._mitype,
shift)) {
if (!nodel)
missile[i]._mirange = 0;
missile[i]._miHitFlag = TRUE;
@ -1062,14 +1062,14 @@ void CheckMissileCol(int i, int mindam, int maxdam, BOOL shift, int mx, int my,
}
if (dPlayer[mx][my] > 0
&& PlayerMHit(
dPlayer[mx][my] - 1,
missile[i]._misource,
missile[i]._midist,
mindam,
maxdam,
missile[i]._mitype,
shift,
0)) {
dPlayer[mx][my] - 1,
missile[i]._misource,
missile[i]._midist,
mindam,
maxdam,
missile[i]._mitype,
shift,
0)) {
if (!nodel)
missile[i]._mirange = 0;
missile[i]._miHitFlag = TRUE;
@ -3829,12 +3829,12 @@ void MI_Fireball(int i)
}
if (missile[i]._miyvel > 0
&& (TransList[dTransVal[mx + 1][my]] && nSolidTable[dPiece[mx + 1][my]]
|| TransList[dTransVal[mx - 1][my]] && nSolidTable[dPiece[mx - 1][my]])) {
|| TransList[dTransVal[mx - 1][my]] && nSolidTable[dPiece[mx - 1][my]])) {
missile[i]._miyoff -= 32;
}
if (missile[i]._mixvel > 0
&& (TransList[dTransVal[mx][my + 1]] && nSolidTable[dPiece[mx][my + 1]]
|| TransList[dTransVal[mx][my - 1]] && nSolidTable[dPiece[mx][my - 1]])) {
|| TransList[dTransVal[mx][my - 1]] && nSolidTable[dPiece[mx][my - 1]])) {
missile[i]._mixoff -= 32;
}
missile[i]._mimfnum = 0;

2
Source/monstdat.cpp

@ -354,7 +354,7 @@ BYTE MonstConvTbl[] = {
#endif
};
#define MAT_NEVER 0
#define MAT_NEVER 0
#define MAT_ALWAYS 1
#define MAT_RETAIL 2
/**

30
Source/monster.cpp

@ -830,7 +830,7 @@ void PlaceUniqueMonst(int uniqindex, int miniontype, int unpackfilesize)
Monst->mlid = 0;
else
#endif
Monst->mlid = AddLight(Monst->_mx, Monst->_my, 3);
Monst->mlid = AddLight(Monst->_mx, Monst->_my, 3);
if (gbMaxPlayers != 1) {
if (Monst->_mAi == AI_LAZHELP)
@ -1384,7 +1384,7 @@ void M_Enemy(int i)
continue;
if (!(Monst->_mFlags & MFLAG_GOLEM)
&& ((abs(monster[mi]._mx - Monst->_mx) >= 2 || abs(monster[mi]._my - Monst->_my) >= 2) && !M_Ranged(i)
|| (!(Monst->_mFlags & MFLAG_GOLEM) && !(monster[mi]._mFlags & MFLAG_GOLEM)))) {
|| (!(Monst->_mFlags & MFLAG_GOLEM) && !(monster[mi]._mFlags & MFLAG_GOLEM)))) {
continue;
}
sameroom = dTransVal[Monst->_mx][Monst->_my] == dTransVal[monster[mi]._mx][monster[mi]._my];
@ -2215,7 +2215,7 @@ void M_ChangeLightOffset(int monst)
#ifdef HELLFIRE
if (monster[monst].mlid)
#endif
ChangeLightOff(monster[monst].mlid, _mxoff, _myoff);
ChangeLightOff(monster[monst].mlid, _mxoff, _myoff);
}
BOOL M_DoStand(int i)
@ -4054,11 +4054,11 @@ void MAI_Scav(int i)
continue;
done = dDead[Monst->_mx + x][Monst->_my + y] != 0
&& LineClearF(
CheckNoSolid,
Monst->_mx,
Monst->_my,
Monst->_mx + x,
Monst->_my + y);
CheckNoSolid,
Monst->_mx,
Monst->_my,
Monst->_mx + x,
Monst->_my + y);
}
}
x--;
@ -4071,11 +4071,11 @@ void MAI_Scav(int i)
continue;
done = dDead[Monst->_mx + x][Monst->_my + y] != 0
&& LineClearF(
CheckNoSolid,
Monst->_mx,
Monst->_my,
Monst->_mx + x,
Monst->_my + y);
CheckNoSolid,
Monst->_mx,
Monst->_my,
Monst->_mx + x,
Monst->_my + y);
}
}
x++;
@ -4509,8 +4509,8 @@ void MAI_Rhino(int i)
v = random_(134, 100);
if (v >= 2 * Monst->_mint + 33
&& (Monst->_mVar1 != MM_WALK && Monst->_mVar1 != MM_WALK2 && Monst->_mVar1 != MM_WALK3
|| Monst->_mVar2
|| v >= 2 * Monst->_mint + 83)) {
|| Monst->_mVar2
|| v >= 2 * Monst->_mint + 83)) {
M_StartDelay(i, random_(135, 10) + 10);
} else {
M_CallWalk(i, md);

2
Source/sound.cpp

@ -387,7 +387,7 @@ void music_start(int nTrack)
{
BOOL success;
assert((DWORD) nTrack < NUM_MUSIC);
assert((DWORD)nTrack < NUM_MUSIC);
music_stop();
if (sglpDS && gbMusicOn) {
#ifdef _DEBUG

2
Source/tmsg.cpp

@ -38,7 +38,7 @@ void tmsg_add(BYTE *pbMsg, BYTE bLen)
void tmsg_start()
{
assert(! sgpTimedMsgHead);
assert(!sgpTimedMsgHead);
}
void tmsg_cleanup()

24
resource.h

@ -5,18 +5,18 @@
* Used by Diablo.rc
*/
#define IDI_ICON1 101
#define IDD_DIALOG1 104 // DX
#define IDD_DIALOG2 105 // NOMEMORY
#define IDD_DIALOG3 106 // NOFILE
#define IDD_DIALOG4 107 // DDRAW
#define IDD_DIALOG5 108 // DSOUND
#define IDD_DIALOG6 109 // PENTIUM (deprecated in 1.00)
#define IDD_DIALOG7 110 // DISKSPACE
#define IDD_DIALOG8 111 // VIDEOMODE
#define IDD_DIALOG9 112 // INSERTCD
#define IDD_DIALOG10 113 // RESTRICTED
#define IDD_DIALOG11 114 // READONLY
#define IDI_ICON1 101
#define IDD_DIALOG1 104 // DX
#define IDD_DIALOG2 105 // NOMEMORY
#define IDD_DIALOG3 106 // NOFILE
#define IDD_DIALOG4 107 // DDRAW
#define IDD_DIALOG5 108 // DSOUND
#define IDD_DIALOG6 109 // PENTIUM (deprecated in 1.00)
#define IDD_DIALOG7 110 // DISKSPACE
#define IDD_DIALOG8 111 // VIDEOMODE
#define IDD_DIALOG9 112 // INSERTCD
#define IDD_DIALOG10 113 // RESTRICTED
#define IDD_DIALOG11 114 // READONLY
// Next default values for new objects
//

Loading…
Cancel
Save