Browse Source

unify checks for single and multiplayer

pull/1019/head
qndel 5 years ago committed by Anders Jenbo
parent
commit
ab9911064f
  1. 2
      Source/appfat.cpp
  2. 2
      Source/automap.cpp
  3. 14
      Source/control.cpp
  4. 30
      Source/diablo.cpp
  5. 2
      Source/drlg_l1.cpp
  6. 2
      Source/drlg_l2.cpp
  7. 16
      Source/drlg_l4.cpp
  8. 4
      Source/dthread.cpp
  9. 4
      Source/effects.cpp
  10. 6
      Source/gamemenu.cpp
  11. 16
      Source/interfac.cpp
  12. 4
      Source/inv.cpp
  13. 42
      Source/items.cpp
  14. 6
      Source/mainmenu.cpp
  15. 21
      Source/missiles.cpp
  16. 56
      Source/monster.cpp
  17. 26
      Source/msg.cpp
  18. 10
      Source/multi.cpp
  19. 2
      Source/multi.h
  20. 4
      Source/nthread.cpp
  21. 12
      Source/objects.cpp
  22. 2
      Source/pack.cpp
  23. 30
      Source/pfile.cpp
  24. 35
      Source/player.cpp
  25. 22
      Source/quests.cpp
  26. 2
      Source/scrollrt.cpp
  27. 6
      Source/stores.cpp
  28. 2
      Source/town.cpp
  29. 20
      Source/towners.cpp
  30. 14
      Source/trigs.cpp
  31. 4
      SourceT/diablo_test.cpp
  32. 3
      SourceX/DiabloUI/selhero.cpp
  33. 2
      SourceX/controls/plrctrls.cpp

2
Source/appfat.cpp

@ -41,7 +41,7 @@ static void FreeDlg()
terminating = TRUE;
cleanup_thread_id = SDL_GetThreadID(NULL);
if (gbMaxPlayers > 1) {
if (gbIsMultiplayer) {
if (SNetLeaveGame(3))
SDL_Delay(2000);
}

2
Source/automap.cpp

@ -592,7 +592,7 @@ static void DrawAutomapText()
char desc[256];
int nextline = 20;
if (gbMaxPlayers > 1) {
if (gbIsMultiplayer) {
strcat(strcpy(desc, "game: "), szPlayerName);
PrintGameStr(8, 20, desc, COL_GOLD);
nextline = 35;

14
Source/control.cpp

@ -783,7 +783,7 @@ void InitControlPan()
{
int i;
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
pBtmBuff = DiabloAllocPtr((PANEL_HEIGHT + 16) * PANEL_WIDTH);
memset(pBtmBuff, 0, (PANEL_HEIGHT + 16) * PANEL_WIDTH);
} else {
@ -809,7 +809,7 @@ void InitControlPan()
CelBlitWidth(pManaBuff, 0, 87, 88, pStatusPanel, 2, 88);
MemFreeDbg(pStatusPanel);
talkflag = FALSE;
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
pTalkPanel = LoadFileInMem("CtrlPan\\TalkPanl.CEL", NULL);
CelBlitWidth(pBtmBuff, 0, (PANEL_HEIGHT + 16) * 2 - 1, PANEL_WIDTH, pTalkPanel, 1, PANEL_WIDTH);
MemFreeDbg(pTalkPanel);
@ -828,7 +828,7 @@ void InitControlPan()
for (i = 0; i < sizeof(panbtn) / sizeof(panbtn[0]); i++)
panbtn[i] = FALSE;
panbtndown = FALSE;
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
numpanbtns = 6;
else
numpanbtns = 8;
@ -1013,7 +1013,7 @@ void control_check_btn_press()
void DoAutoMap()
{
if (currlevel != 0 || gbMaxPlayers != 1) {
if (currlevel != 0 || gbIsMultiplayer) {
if (!automapflag)
StartAutomap();
else
@ -2227,7 +2227,7 @@ void control_type_message()
{
int i;
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
return;
}
@ -2281,7 +2281,7 @@ BOOL control_talk_last_key(int vkey)
{
int result;
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
return FALSE;
if (!talkflag)
@ -2316,7 +2316,7 @@ BOOL control_presskeys(int vkey)
int len;
BOOL ret;
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
if (!talkflag) {
ret = FALSE;
} else {

30
Source/diablo.cpp

@ -288,7 +288,7 @@ static bool ProcessInput()
if (PauseMode == 2) {
return false;
}
if (gbMaxPlayers == 1 && gmenu_is_active()) {
if (!gbIsMultiplayer && gmenu_is_active()) {
force_redraw |= 1;
return false;
}
@ -350,7 +350,7 @@ static void run_game_loop(unsigned int uMsg)
DrawAndBlit();
}
if (gbMaxPlayers > 1) {
if (gbIsMultiplayer) {
pfile_write_hero();
}
@ -740,7 +740,7 @@ static void RightMouseDown()
void diablo_pause_game()
{
if (gbMaxPlayers <= 1) {
if (!gbIsMultiplayer) {
if (PauseMode) {
PauseMode = 0;
} else {
@ -756,7 +756,7 @@ static void diablo_hotkey_msg(DWORD dwMsg)
{
char szMsg[MAX_SEND_STR_LEN];
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
return;
}
@ -1415,7 +1415,7 @@ void GM_Game(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case WM_DIABTOWNWARP:
case WM_DIABTWARPUP:
case WM_DIABRETOWN:
if (gbMaxPlayers > 1)
if (gbIsMultiplayer)
pfile_write_hero();
nthread_ignore_mutex(TRUE);
PaletteFadeOut(8);
@ -1594,7 +1594,8 @@ void LoadGameLevel(BOOL firstflag, int lvldir)
InitItemGFX();
InitQuestText();
for (i = 0; i < gbMaxPlayers; i++)
int players = gbIsMultiplayer ? MAX_PLRS : 1;
for (i = 1; i < players; i++)
InitPlrGFXMem(i);
InitStores();
@ -1658,7 +1659,8 @@ void LoadGameLevel(BOOL firstflag, int lvldir)
IncProgress();
visited = FALSE;
for (i = 0; i < gbMaxPlayers; i++) {
int players = gbIsMultiplayer ? MAX_PLRS : 1;
for (i = 0; i < players; i++) {
if (plr[i].plractive)
visited = visited || plr[i]._pLvlVisited[currlevel];
}
@ -1666,7 +1668,7 @@ void LoadGameLevel(BOOL firstflag, int lvldir)
SetRndSeed(glSeedTbl[currlevel]);
if (leveltype != DTYPE_TOWN) {
if (firstflag || lvldir == ENTRY_LOAD || !plr[myplr]._pLvlVisited[currlevel] || gbMaxPlayers != 1) {
if (firstflag || lvldir == ENTRY_LOAD || !plr[myplr]._pLvlVisited[currlevel] || gbIsMultiplayer) {
HoldThemeRooms();
glMid1Seed[currlevel] = GetRndSeed();
InitMonsters();
@ -1682,7 +1684,7 @@ void LoadGameLevel(BOOL firstflag, int lvldir)
InitDead();
glEndSeed[currlevel] = GetRndSeed();
if (gbMaxPlayers != 1)
if (gbIsMultiplayer)
DeltaLoadLevel();
IncProgress();
@ -1707,14 +1709,14 @@ void LoadGameLevel(BOOL firstflag, int lvldir)
InitMissiles();
IncProgress();
if (!firstflag && lvldir != ENTRY_LOAD && plr[myplr]._pLvlVisited[currlevel] && gbMaxPlayers == 1)
if (!firstflag && lvldir != ENTRY_LOAD && plr[myplr]._pLvlVisited[currlevel] && !gbIsMultiplayer)
LoadLevel();
if (gbMaxPlayers != 1)
if (gbIsMultiplayer)
DeltaLoadLevel();
IncProgress();
}
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
ResyncQuests();
else
ResyncMPQuests();
@ -1764,7 +1766,7 @@ void LoadGameLevel(BOOL firstflag, int lvldir)
for (i = 0; i < MAX_PLRS; i++) {
if (plr[i].plractive && plr[i].plrlevel == currlevel && (!plr[i]._pLvlChanging || i == myplr)) {
if (plr[i]._pHitPoints > 0) {
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
dPlayer[plr[i]._px][plr[i]._py] = i + 1;
else
SyncInitPlrPos(i);
@ -1889,7 +1891,7 @@ void game_loop(BOOL bStartup)
timeout_cursor(FALSE);
game_logic();
}
if (!gbRunGame || gbMaxPlayers == 1 || !nthread_has_500ms_passed(TRUE))
if (!gbRunGame || !gbIsMultiplayer || !nthread_has_500ms_passed(TRUE))
break;
}
}

2
Source/drlg_l1.cpp

@ -1113,7 +1113,7 @@ static void DRLG_LoadL1SP()
L5pSetPiece = LoadFileInMem("Levels\\L1Data\\rnd6.DUN", NULL);
L5setloadflag = TRUE;
}
if (QuestStatus(Q_SKELKING) && gbMaxPlayers == 1) {
if (QuestStatus(Q_SKELKING) && !gbIsMultiplayer) {
L5pSetPiece = LoadFileInMem("Levels\\L1Data\\SKngDO.DUN", NULL);
L5setloadflag = TRUE;
}

2
Source/drlg_l2.cpp

@ -3466,7 +3466,7 @@ void LoadPreL2Dungeon(const char *sFileName, int vx, int vy)
void CreateL2Dungeon(DWORD rseed, int entry)
{
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (currlevel == 7 && quests[Q_BLIND]._qactive == QUEST_NOTAVAIL) {
currlevel = 6;
CreateL2Dungeon(glSeedTbl[6], 4);

16
Source/drlg_l4.cpp

@ -196,7 +196,7 @@ void DRLG_LoadL4SP()
pSetPiece = LoadFileInMem("Levels\\L4Data\\Warlord.DUN", NULL);
setloadflag = TRUE;
}
if (currlevel == 15 && gbMaxPlayers != 1) {
if (currlevel == 15 && gbIsMultiplayer) {
pSetPiece = LoadFileInMem("Levels\\L4Data\\Vile1.DUN", NULL);
setloadflag = TRUE;
}
@ -1088,7 +1088,7 @@ static void L4drawRoom(int x, int y, int width, int height)
for (j = 0; j < height && j + y < 20; j++) {
for (i = 0; i < width && i + x < 20; i++) {
dung[i + x][j + y] = 1;
dung[i + x][j + y] = 1;
}
}
}
@ -1178,10 +1178,10 @@ static void L4firstRoom()
if (currlevel != 16) {
if (currlevel == quests[Q_WARLORD]._qlevel && quests[Q_WARLORD]._qactive != QUEST_NOTAVAIL) {
/// ASSERT: assert(gbMaxPlayers == 1);
assert(!gbIsMultiplayer);
w = 11;
h = 11;
} else if (currlevel == quests[Q_BETRAYER]._qlevel && gbMaxPlayers != 1) {
} else if (currlevel == quests[Q_BETRAYER]._qlevel && gbIsMultiplayer) {
w = 11;
h = 11;
} else {
@ -1216,7 +1216,7 @@ static void L4firstRoom()
l4holdx = x;
l4holdy = y;
}
if (QuestStatus(Q_WARLORD) || currlevel == quests[Q_BETRAYER]._qlevel && gbMaxPlayers != 1) {
if (QuestStatus(Q_WARLORD) || currlevel == quests[Q_BETRAYER]._qlevel && gbIsMultiplayer) {
SP4x1 = x + 1;
SP4y1 = y + 1;
SP4x2 = SP4x1 + w;
@ -1601,7 +1601,7 @@ static void DRLG_L4(int entry)
if (currlevel == 16) {
L4SaveQuads();
}
if (QuestStatus(Q_WARLORD) || currlevel == quests[Q_BETRAYER]._qlevel && gbMaxPlayers != 1) {
if (QuestStatus(Q_WARLORD) || currlevel == quests[Q_BETRAYER]._qlevel && gbIsMultiplayer) {
for (spi = SP4x1; spi < SP4x2; spi++) {
for (spj = SP4y1; spj < SP4y2; spj++) {
dflags[spi][spj] = 1;
@ -1671,7 +1671,7 @@ static void DRLG_L4(int entry)
if (entry == ENTRY_MAIN) {
doneflag = DRLG_L4PlaceMiniSet(L4USTAIRS, 1, 1, -1, -1, TRUE, 0);
if (doneflag) {
if (gbMaxPlayers == 1 && quests[Q_DIABLO]._qactive != QUEST_ACTIVE) {
if (!gbIsMultiplayer && quests[Q_DIABLO]._qactive != QUEST_ACTIVE) {
doneflag = DRLG_L4PlaceMiniSet(L4PENTA, 1, 1, -1, -1, FALSE, 1);
} else {
doneflag = DRLG_L4PlaceMiniSet(L4PENTA2, 1, 1, -1, -1, FALSE, 1);
@ -1681,7 +1681,7 @@ static void DRLG_L4(int entry)
} else {
doneflag = DRLG_L4PlaceMiniSet(L4USTAIRS, 1, 1, -1, -1, FALSE, 0);
if (doneflag) {
if (gbMaxPlayers == 1 && quests[Q_DIABLO]._qactive != QUEST_ACTIVE) {
if (!gbIsMultiplayer && quests[Q_DIABLO]._qactive != QUEST_ACTIVE) {
doneflag = DRLG_L4PlaceMiniSet(L4PENTA, 1, 1, -1, -1, TRUE, 1);
} else {
doneflag = DRLG_L4PlaceMiniSet(L4PENTA2, 1, 1, -1, -1, TRUE, 1);

4
Source/dthread.cpp

@ -72,7 +72,7 @@ void dthread_send_delta(int pnum, char cmd, void *pbSrc, int dwLen)
TMegaPkt *pkt;
TMegaPkt *p;
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
return;
}
@ -97,7 +97,7 @@ void dthread_start()
{
const char *error_buf;
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
return;
}

4
Source/effects.cpp

@ -1181,7 +1181,7 @@ static void PlaySFX_priv(TSFX *pSFX, BOOL loc, int x, int y)
{
int lPan, lVolume;
if (plr[myplr].pLvlLoad && gbMaxPlayers != 1) {
if (plr[myplr].pLvlLoad && gbIsMultiplayer) {
return;
}
if (!gbSndInited || !gbSoundOn || gbBufferMsgs) {
@ -1352,7 +1352,7 @@ static void priv_sound_init(BYTE bLoadMask)
void sound_init()
{
BYTE mask = sfx_MISC;
if (gbMaxPlayers > 1) {
if (gbIsMultiplayer) {
mask |= sfx_WARRIOR;
if (!gbIsSpawn)
mask |= (sfx_ROGUE | sfx_SORCEROR);

6
Source/gamemenu.cpp

@ -85,7 +85,7 @@ static void gamemenu_update_multi(TMenuItem *pMenuItems)
void gamemenu_on()
{
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
gmenu_set_items(sgSingleMenu, gamemenu_update_single);
} else {
gmenu_set_items(sgMultiMenu, gamemenu_update_multi);
@ -232,7 +232,7 @@ static void gamemenu_get_gamma()
static void gamemenu_get_speed()
{
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
sgOptionsMenu[3].dwFlags &= ~(GMENU_ENABLED | GMENU_SLIDER);
if (ticks_per_sec >= 50)
sgOptionsMenu[3].pszStr = "Speed: Fastest";
@ -349,7 +349,7 @@ void gamemenu_sound_volume(BOOL bActivate)
void gamemenu_loadjog(BOOL bActivate)
{
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
jogging_opt = !jogging_opt;
SRegSaveValue("Hellfire", jogging_title, FALSE, jogging_opt);
PlaySFX(IS_TITLEMOV);

16
Source/interfac.cpp

@ -325,7 +325,7 @@ void ShowProgress(unsigned int uMsg)
break;
case WM_DIABNEXTLVL:
IncProgress();
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
SaveLevel();
} else {
DeltaSaveLevel();
@ -341,7 +341,7 @@ void ShowProgress(unsigned int uMsg)
break;
case WM_DIABPREVLVL:
IncProgress();
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
SaveLevel();
} else {
DeltaSaveLevel();
@ -358,7 +358,7 @@ void ShowProgress(unsigned int uMsg)
case WM_DIABSETLVL:
SetReturnLvlPos();
IncProgress();
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
SaveLevel();
} else {
DeltaSaveLevel();
@ -373,7 +373,7 @@ void ShowProgress(unsigned int uMsg)
break;
case WM_DIABRTNLVL:
IncProgress();
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
SaveLevel();
} else {
DeltaSaveLevel();
@ -388,7 +388,7 @@ void ShowProgress(unsigned int uMsg)
break;
case WM_DIABWARPLVL:
IncProgress();
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
SaveLevel();
} else {
DeltaSaveLevel();
@ -402,7 +402,7 @@ void ShowProgress(unsigned int uMsg)
break;
case WM_DIABTOWNWARP:
IncProgress();
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
SaveLevel();
} else {
DeltaSaveLevel();
@ -418,7 +418,7 @@ void ShowProgress(unsigned int uMsg)
break;
case WM_DIABTWARPUP:
IncProgress();
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
SaveLevel();
} else {
DeltaSaveLevel();
@ -434,7 +434,7 @@ void ShowProgress(unsigned int uMsg)
break;
case WM_DIABRETOWN:
IncProgress();
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
SaveLevel();
} else {
DeltaSaveLevel();

4
Source/inv.cpp

@ -2077,7 +2077,7 @@ int InvPutItem(int pnum, int x, int y)
if (plr[pnum].HoldItem._iCurs == ICURS_RUNE_BOMB && xp >= 79 && xp <= 82 && yp >= 61 && yp <= 64) {
NetSendCmdLocParam2(0, CMD_OPENHIVE, plr[pnum]._px, plr[pnum]._py, xx, yy);
quests[Q_FARMER]._qactive = 3;
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
NetSendCmdQuest(TRUE, Q_FARMER);
return -1;
}
@ -2086,7 +2086,7 @@ int InvPutItem(int pnum, int x, int y)
if (plr[pnum].HoldItem.IDidx == IDI_MAPOFDOOM && xp >= 35 && xp <= 38 && yp >= 20 && yp <= 24) {
NetSendCmd(FALSE, CMD_OPENCRYPT);
quests[Q_GRAVE]._qactive = 3;
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
NetSendCmdQuest(TRUE, Q_GRAVE);
}
return -1;

42
Source/items.cpp

@ -1645,11 +1645,11 @@ void GetBookSpell(int i, int lvl)
bs = s;
}
s++;
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (s == SPL_RESURRECT)
s = SPL_TELEKINESIS;
}
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (s == SPL_HEALOTHER)
s = SPL_FLARE;
}
@ -1754,9 +1754,9 @@ void GetStaffSpell(int i, int lvl, BOOL onlygood)
bs = s;
}
s++;
if (gbMaxPlayers == 1 && s == SPL_RESURRECT)
if (!gbIsMultiplayer && s == SPL_RESURRECT)
s = SPL_TELEKINESIS;
if (gbMaxPlayers == 1 && s == SPL_HEALOTHER)
if (!gbIsMultiplayer && s == SPL_HEALOTHER)
s = SPL_FLARE;
if (s == maxSpells)
s = SPL_FIREBOLT;
@ -1786,7 +1786,7 @@ void GetOilType(int i, int max_lvl)
int cnt, t, j, r;
char rnd[32];
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (max_lvl == 0)
max_lvl = 1;
cnt = 0;
@ -2511,9 +2511,9 @@ int RndItem(int m)
ril[ri] = i;
ri++;
}
if (AllItemsList[i].iSpell == SPL_RESURRECT && gbMaxPlayers == 1)
if (AllItemsList[i].iSpell == SPL_RESURRECT && !gbIsMultiplayer)
ri--;
if (AllItemsList[i].iSpell == SPL_HEALOTHER && gbMaxPlayers == 1)
if (AllItemsList[i].iSpell == SPL_HEALOTHER && !gbIsMultiplayer)
ri--;
}
@ -2527,7 +2527,7 @@ int RndUItem(int m)
int ril[512];
BOOL okflag;
if (m != -1 && (monster[m].MData->mTreasure & 0x8000) != 0 && gbMaxPlayers == 1)
if (m != -1 && (monster[m].MData->mTreasure & 0x8000) != 0 && !gbIsMultiplayer)
return -1 - (monster[m].MData->mTreasure & 0xFFF);
int curlv = items_get_currlevel();
@ -2554,9 +2554,9 @@ int RndUItem(int m)
okflag = FALSE;
if (AllItemsList[i].iMiscId == IMISC_BOOK)
okflag = TRUE;
if (AllItemsList[i].iSpell == SPL_RESURRECT && gbMaxPlayers == 1)
if (AllItemsList[i].iSpell == SPL_RESURRECT && !gbIsMultiplayer)
okflag = FALSE;
if (AllItemsList[i].iSpell == SPL_HEALOTHER && gbMaxPlayers == 1)
if (AllItemsList[i].iSpell == SPL_HEALOTHER && !gbIsMultiplayer)
okflag = FALSE;
if (okflag && ri < 512) {
ril[ri] = i;
@ -2585,9 +2585,9 @@ int RndAllItems()
ril[ri] = i;
ri++;
}
if (AllItemsList[i].iSpell == SPL_RESURRECT && gbMaxPlayers == 1)
if (AllItemsList[i].iSpell == SPL_RESURRECT && !gbIsMultiplayer)
ri--;
if (AllItemsList[i].iSpell == SPL_HEALOTHER && gbMaxPlayers == 1)
if (AllItemsList[i].iSpell == SPL_HEALOTHER && !gbIsMultiplayer)
ri--;
}
@ -2638,7 +2638,7 @@ int CheckUnique(int i, int lvl, int uper, BOOL recreate)
break;
if (UniqueItemList[j].UIItemId == AllItemsList[item[i].IDidx].iItemId
&& lvl >= UniqueItemList[j].UIMinLvl
&& (recreate || !UniqueItemFlag[j] || gbMaxPlayers != 1)) {
&& (recreate || !UniqueItemFlag[j] || gbIsMultiplayer)) {
uok[j] = TRUE;
numu++;
}
@ -2784,7 +2784,7 @@ void SpawnItem(int m, int x, int y, BOOL sendmsg)
int ii, idx;
BOOL onlygood;
if (monster[m]._uniqtype || ((monster[m].MData->mTreasure & 0x8000) && gbMaxPlayers != 1)) {
if (monster[m]._uniqtype || ((monster[m].MData->mTreasure & 0x8000) && gbIsMultiplayer)) {
idx = RndUItem(m);
if (idx < 0) {
SpawnUnique(-(idx + 1), x, y);
@ -3266,7 +3266,7 @@ void ItemDoppel()
int idoppelx;
ItemStruct *i;
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
for (idoppelx = 16; idoppelx < 96; idoppelx++) {
if (dItem[idoppelx][idoppely]) {
i = &item[dItem[idoppelx][idoppely] - 1];
@ -4643,7 +4643,7 @@ BOOL PremiumItemOk(int i)
if (!gbIsHellfire && AllItemsList[i].itype == ITYPE_STAFF)
rv = FALSE;
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
if (AllItemsList[i].iMiscId == IMISC_OILOF)
rv = FALSE;
if (AllItemsList[i].itype == ITYPE_RING)
@ -4841,9 +4841,9 @@ BOOL WitchItemOk(int i)
rv = FALSE;
if (AllItemsList[i].iMiscId > IMISC_OILFIRST && AllItemsList[i].iMiscId < IMISC_OILLAST)
rv = FALSE;
if (AllItemsList[i].iSpell == SPL_RESURRECT && gbMaxPlayers == 1)
if (AllItemsList[i].iSpell == SPL_RESURRECT && !gbIsMultiplayer)
rv = FALSE;
if (AllItemsList[i].iSpell == SPL_HEALOTHER && gbMaxPlayers == 1)
if (AllItemsList[i].iSpell == SPL_HEALOTHER && !gbIsMultiplayer)
rv = FALSE;
return rv;
@ -5139,9 +5139,9 @@ BOOL HealerItemOk(int i)
if (AllItemsList[i].iMiscId == IMISC_SCROLL)
return AllItemsList[i].iSpell == SPL_HEAL;
if (AllItemsList[i].iMiscId == IMISC_SCROLLT)
return AllItemsList[i].iSpell == SPL_HEALOTHER && gbMaxPlayers != 1;
return AllItemsList[i].iSpell == SPL_HEALOTHER && gbIsMultiplayer;
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (AllItemsList[i].iMiscId == IMISC_ELIXSTR)
return !gbIsHellfire || plr[myplr]._pBaseStr < MaxStats[plr[myplr]._pClass][ATTRIB_STR];
if (AllItemsList[i].iMiscId == IMISC_ELIXMAG)
@ -5217,7 +5217,7 @@ void SpawnHealer(int lvl)
healitem[1]._iCreateInfo = lvl;
healitem[1]._iStatFlag = TRUE;
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
GetItemAttrs(0, IDI_RESURRECT, 1);
healitem[2] = item[0];
healitem[2]._iCreateInfo = lvl;

6
Source/mainmenu.cpp

@ -58,7 +58,7 @@ static BOOL mainmenu_single_player()
jogging_opt = FALSE;
}
gbMaxPlayers = 1;
gbIsMultiplayer = false;
if (!SRegLoadValue("devilutionx", "game speed", 0, &ticks_per_sec)) {
SRegSaveValue("devilutionx", "game speed", 0, ticks_per_sec);
@ -70,7 +70,7 @@ static BOOL mainmenu_single_player()
static BOOL mainmenu_multi_player()
{
jogging_opt = FALSE;
gbMaxPlayers = MAX_PLRS;
gbIsMultiplayer = true;
return mainmenu_init_menu(SELHERO_CONNECT);
}
@ -101,7 +101,7 @@ BOOL mainmenu_select_hero_dialog(
{
BOOL hero_is_created = TRUE;
int dlgresult = 0;
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (!UiSelHeroSingDialog(
pfile_ui_set_hero_infos,
pfile_ui_save_create,

21
Source/missiles.cpp

@ -1108,15 +1108,15 @@ void CheckMissileCol(int i, int mindam, int maxdam, BOOL shift, int mx, int my,
}
if (dPlayer[mx][my] > 0) {
if (PlayerMHit(
dPlayer[mx][my] - 1,
-1,
missile[i]._midist,
mindam,
maxdam,
missile[i]._mitype,
shift,
missile[i]._miAnimType == MFILE_FIREWAL || missile[i]._miAnimType == MFILE_LGHNING,
&blocked)) {
dPlayer[mx][my] - 1,
-1,
missile[i]._midist,
mindam,
maxdam,
missile[i]._mitype,
shift,
missile[i]._miAnimType == MFILE_FIREWAL || missile[i]._miAnimType == MFILE_LGHNING,
&blocked)) {
if (gbIsHellfire && blocked) {
dir = missile[i]._mimfnum + (random_(10, 2) ? 1 : -1);
mAnimFAmt = misfiledata[missile[i]._miAnimType].mAnimFAmt;
@ -3319,7 +3319,8 @@ void AddDiabApoca(int mi, int sx, int sy, int dx, int dy, int midir, char mienem
{
int pnum;
for (pnum = 0; pnum < gbMaxPlayers; pnum++) {
int players = gbIsMultiplayer ? MAX_PLRS : 1;
for (pnum = 0; pnum < players; pnum++) {
if (plr[pnum].plractive) {
if (LineClear(sx, sy, plr[pnum]._pfutx, plr[pnum]._pfuty)) {
AddMissile(0, 0, plr[pnum]._pfutx, plr[pnum]._pfuty, 0, MIS_BOOM2, mienemy, id, dam, 0);

56
Source/monster.cpp

@ -249,7 +249,7 @@ void GetLevelMTypes()
if (QuestStatus(Q_WARLORD))
AddMonsterType(UniqMonst[UMT_WARLORD].mtype, PLACE_UNIQUE);
if (gbMaxPlayers != 1 && currlevel == quests[Q_SKELKING]._qlevel) {
if (gbIsMultiplayer && currlevel == quests[Q_SKELKING]._qlevel) {
AddMonsterType(MT_SKING, PLACE_UNIQUE);
@ -482,7 +482,7 @@ void InitMonster(int i, int rd, int mtype, int x, int y)
monster[i]._mmaxhp = (monst->mMinHP + random_(88, monst->mMaxHP - monst->mMinHP + 1)) << 6;
}
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
monster[i]._mmaxhp >>= 1;
if (monster[i]._mmaxhp < 64) {
monster[i]._mmaxhp = 64;
@ -529,7 +529,7 @@ void InitMonster(int i, int rd, int mtype, int x, int y)
if (gnDifficulty == DIFF_NIGHTMARE) {
monster[i]._mmaxhp = 3 * monster[i]._mmaxhp;
if (gbIsHellfire)
monster[i]._mmaxhp += (gbMaxPlayers != 1 ? 100 : 50) << 6;
monster[i]._mmaxhp += (gbIsMultiplayer ? 100 : 50) << 6;
else
monster[i]._mmaxhp += 64;
monster[i]._mhitpoints = monster[i]._mmaxhp;
@ -545,7 +545,7 @@ void InitMonster(int i, int rd, int mtype, int x, int y)
} else if (gnDifficulty == DIFF_HELL) {
monster[i]._mmaxhp = 4 * monster[i]._mmaxhp;
if (gbIsHellfire)
monster[i]._mmaxhp += (gbMaxPlayers != 1 ? 200 : 100) << 6;
monster[i]._mmaxhp += (gbIsMultiplayer ? 200 : 100) << 6;
else
monster[i]._mmaxhp += 192;
monster[i]._mhitpoints = monster[i]._mmaxhp;
@ -725,7 +725,7 @@ void PlaceUniqueMonst(int uniqindex, int miniontype, int bosspacksize)
}
}
}
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (uniqindex == UMT_LAZURUS) {
xp = 32;
yp = 46;
@ -787,7 +787,7 @@ void PlaceUniqueMonst(int uniqindex, int miniontype, int bosspacksize)
Monst->mName = Uniq->mName;
Monst->_mmaxhp = Uniq->mmaxhp << 6;
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
Monst->_mmaxhp = Monst->_mmaxhp >> 1;
if (Monst->_mmaxhp < 64) {
Monst->_mmaxhp = 64;
@ -808,7 +808,7 @@ void PlaceUniqueMonst(int uniqindex, int miniontype, int bosspacksize)
else
Monst->mlid = AddLight(Monst->_mx, Monst->_my, 3);
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
if (Monst->_mAi == AI_LAZHELP)
Monst->mtalkmsg = 0;
if (Monst->_mAi == AI_LAZURUS && quests[Q_BETRAYER]._qvar1 > 3) {
@ -823,7 +823,7 @@ void PlaceUniqueMonst(int uniqindex, int miniontype, int bosspacksize)
if (gnDifficulty == DIFF_NIGHTMARE) {
Monst->_mmaxhp = 3 * Monst->_mmaxhp;
if (gbIsHellfire)
Monst->_mmaxhp += (gbMaxPlayers != 1 ? 100 : 50) << 6;
Monst->_mmaxhp += (gbIsMultiplayer ? 100 : 50) << 6;
else
Monst->_mmaxhp += 64;
Monst->mLevel += 15;
@ -836,7 +836,7 @@ void PlaceUniqueMonst(int uniqindex, int miniontype, int bosspacksize)
} else if (gnDifficulty == DIFF_HELL) {
Monst->_mmaxhp = 4 * Monst->_mmaxhp;
if (gbIsHellfire)
Monst->_mmaxhp += (gbMaxPlayers != 1 ? 200 : 100) << 6;
Monst->_mmaxhp += (gbIsMultiplayer ? 200 : 100) << 6;
else
Monst->_mmaxhp += 192;
Monst->mLevel += 30;
@ -929,7 +929,7 @@ void PlaceQuestMonsters()
PlaceUniqueMonst(UMT_BUTCHER, 0, 0);
}
if (currlevel == quests[Q_SKELKING]._qlevel && gbMaxPlayers != 1) {
if (currlevel == quests[Q_SKELKING]._qlevel && gbIsMultiplayer) {
skeltype = 0;
for (skeltype = 0; skeltype < nummtypes; skeltype++) {
@ -974,7 +974,7 @@ void PlaceQuestMonsters()
quests[Q_ZHAR]._qactive = QUEST_NOTAVAIL;
}
if (currlevel == quests[Q_BETRAYER]._qlevel && gbMaxPlayers != 1) {
if (currlevel == quests[Q_BETRAYER]._qlevel && gbIsMultiplayer) {
AddMonsterType(UniqMonst[UMT_LAZURUS].mtype, PLACE_UNIQUE);
AddMonsterType(UniqMonst[UMT_RED_VEX].mtype, PLACE_UNIQUE);
PlaceUniqueMonst(UMT_LAZURUS, 0, 0);
@ -1109,7 +1109,7 @@ void InitMonsters()
int scattertypes[NUM_MTYPES];
numscattypes = 0;
if (gbMaxPlayers != 1)
if (gbIsMultiplayer)
CheckDungeonClear();
if (!setlevel) {
AddMonster(1, 0, 0, 0, FALSE);
@ -1141,7 +1141,7 @@ void InitMonsters()
if (!SolidLoc(s, t))
na++;
numplacemonsters = na / 30;
if (gbMaxPlayers != 1)
if (gbIsMultiplayer)
numplacemonsters += numplacemonsters >> 1;
if (nummonsters + numplacemonsters > MAXMONSTERS - 10)
numplacemonsters = MAXMONSTERS - 10 - nummonsters;
@ -1313,7 +1313,7 @@ void M_Enemy(int i)
if (Monst->_mFlags & MFLAG_BERSERK || !(Monst->_mFlags & MFLAG_GOLEM)) {
for (pnum = 0; pnum < MAX_PLRS; pnum++) {
if (!plr[pnum].plractive || currlevel != plr[pnum].plrlevel || plr[pnum]._pLvlChanging
|| ((plr[pnum]._pHitPoints >> 6) == 0) && gbMaxPlayers != 1)
|| ((plr[pnum]._pHitPoints >> 6) == 0) && gbIsMultiplayer)
continue;
sameroom = (dTransVal[Monst->_mx][Monst->_my] == dTransVal[plr[pnum]._px][plr[pnum]._py]);
if (abs(Monst->_mx - plr[pnum]._px) > abs(Monst->_my - plr[pnum]._py))
@ -2267,7 +2267,7 @@ void M_TryH2HHit(int i, int pnum, int Hit, int MinDam, int MaxDam)
else
M_StartHit(i, pnum, mdam);
}
if (!(monster[i]._mFlags & MFLAG_NOLIFESTEAL) && monster[i].MType->mtype == MT_SKING && gbMaxPlayers != 1)
if (!(monster[i]._mFlags & MFLAG_NOLIFESTEAL) && monster[i].MType->mtype == MT_SKING && gbIsMultiplayer)
monster[i]._mhitpoints += dam;
if (plr[pnum]._pHitPoints > plr[pnum]._pMaxHP) {
plr[pnum]._pHitPoints = plr[pnum]._pMaxHP;
@ -2546,7 +2546,7 @@ BOOL M_DoTalk(int i)
}
if (monster[i].mName == UniqMonst[UMT_WARLORD].mName)
quests[Q_WARLORD]._qvar1 = 2;
if (monster[i].mName == UniqMonst[UMT_LAZURUS].mName && gbMaxPlayers != 1) {
if (monster[i].mName == UniqMonst[UMT_LAZURUS].mName && gbIsMultiplayer) {
quests[Q_BETRAYER]._qvar1 = 6;
monster[i]._mgoal = MGOAL_NORMAL;
monster[i]._msquelch = UCHAR_MAX;
@ -2633,13 +2633,13 @@ void DoEnding()
BOOL bMusicOn;
int musicVolume;
if (gbMaxPlayers > 1) {
if (gbIsMultiplayer) {
SNetLeaveGame(LEAVE_ENDING);
}
music_stop();
if (gbMaxPlayers > 1) {
if (gbIsMultiplayer) {
SDL_Delay(1000);
}
@ -2692,7 +2692,7 @@ void PrepDoEnding()
for (i = 0; i < MAX_PLRS; i++) {
plr[i]._pmode = PM_QUIT;
plr[i]._pInvincible = TRUE;
if (gbMaxPlayers > 1) {
if (gbIsMultiplayer) {
if (plr[i]._pHitPoints >> 6 == 0)
plr[i]._pHitPoints = 64;
if (plr[i]._pMana >> 6 == 0)
@ -4124,7 +4124,7 @@ void MAI_SkelKing(int i)
} else
Monst->_mgoal = MGOAL_NORMAL;
if (Monst->_mgoal == MGOAL_NORMAL) {
if (gbMaxPlayers == 1
if (!gbIsMultiplayer
&& ((abs(mx) >= 3 || abs(my) >= 3) && v < 4 * Monst->_mint + 35 || v < 6)
&& LineClear(Monst->_mx, Monst->_my, fx, fy)) {
nx = Monst->_mx + offset_x[md];
@ -4511,7 +4511,7 @@ void MAI_Lazurus(int i)
my = Monst->_my;
md = M_GetDir(i);
if (dFlags[mx][my] & BFLAG_VISIBLE) {
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (Monst->mtalkmsg == TEXT_VILE13 && Monst->_mgoal == MGOAL_INQUIRING && plr[myplr]._px == 35 && plr[myplr]._py == 46) {
PlayInGameMovie("gendata\\fprst3.smk");
Monst->_mmode = MM_TALK;
@ -4528,13 +4528,13 @@ void MAI_Lazurus(int i)
}
}
if (gbMaxPlayers != 1 && Monst->mtalkmsg == TEXT_VILE13 && Monst->_mgoal == MGOAL_INQUIRING && quests[Q_BETRAYER]._qvar1 <= 3) {
if (gbIsMultiplayer && Monst->mtalkmsg == TEXT_VILE13 && Monst->_mgoal == MGOAL_INQUIRING && quests[Q_BETRAYER]._qvar1 <= 3) {
Monst->_mmode = MM_TALK;
}
}
if (Monst->_mgoal == MGOAL_NORMAL || Monst->_mgoal == MGOAL_RETREAT || Monst->_mgoal == MGOAL_MOVE) {
if (gbMaxPlayers == 1 && quests[Q_BETRAYER]._qvar1 == 4 && Monst->mtalkmsg == 0) { // Fix save games affected by teleport bug
if (!gbIsMultiplayer && quests[Q_BETRAYER]._qvar1 == 4 && Monst->mtalkmsg == 0) { // Fix save games affected by teleport bug
ObjChangeMapResync(1, 18, 20, 24);
RedoPlayerVision();
quests[Q_BETRAYER]._qvar1 = 6;
@ -4565,7 +4565,7 @@ void MAI_Lazhelp(int i)
md = M_GetDir(i);
if (dFlags[_mx][_my] & BFLAG_VISIBLE) {
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (quests[Q_BETRAYER]._qvar1 <= 5) {
Monst->_mgoal = MGOAL_INQUIRING;
} else {
@ -4692,7 +4692,7 @@ void ProcessMonsters()
mi = monstactive[i];
Monst = &monster[mi];
raflag = FALSE;
if (gbMaxPlayers > 1) {
if (gbIsMultiplayer) {
SetRndSeed(Monst->_mAISeed);
Monst->_mAISeed = AdvanceRndSeed();
}
@ -5192,7 +5192,7 @@ void PrintMonstHistory(int mt)
minHP -= 2000;
maxHP -= 2000;
}
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
minHP >>= 1;
maxHP >>= 1;
}
@ -5204,8 +5204,8 @@ void PrintMonstHistory(int mt)
int hpBonusNightmare = 1;
int hpBonusHell = 3;
if (gbIsHellfire) {
hpBonusNightmare = (gbMaxPlayers == 1 ? 50 : 100);
hpBonusHell = (gbMaxPlayers == 1 ? 100 : 200);
hpBonusNightmare = (!gbIsMultiplayer ? 50 : 100);
hpBonusHell = (!gbIsMultiplayer ? 100 : 200);
}
if (gnDifficulty == DIFF_NIGHTMARE) {
minHP = 3 * minHP + hpBonusNightmare;

26
Source/msg.cpp

@ -172,7 +172,7 @@ BOOL msg_wait_resync()
void run_delta_info()
{
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
return;
gbBufferMsgs = 2;
@ -419,7 +419,7 @@ void delta_init()
void delta_kill_monster(int mi, BYTE x, BYTE y, BYTE bLevel)
{
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
return;
sgbDeltaChanged = TRUE;
@ -432,7 +432,7 @@ void delta_kill_monster(int mi, BYTE x, BYTE y, BYTE bLevel)
void delta_monster_hp(int mi, int hp, BYTE bLevel)
{
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
return;
sgbDeltaChanged = TRUE;
@ -443,7 +443,7 @@ void delta_monster_hp(int mi, int hp, BYTE bLevel)
void delta_sync_monster(const TSyncMonster *pSync, BYTE bLevel)
{
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
return;
/// ASSERT: assert(pSync != NULL);
@ -462,7 +462,7 @@ void delta_sync_monster(const TSyncMonster *pSync, BYTE bLevel)
void delta_sync_golem(TCmdGolem *pG, int pnum, BYTE bLevel)
{
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
return;
sgbDeltaChanged = TRUE;
@ -477,7 +477,7 @@ void delta_sync_golem(TCmdGolem *pG, int pnum, BYTE bLevel)
void delta_leave_sync(BYTE bLevel)
{
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
return;
if (currlevel == 0)
glSeedTbl[0] = AdvanceRndSeed();
@ -502,7 +502,7 @@ void delta_leave_sync(BYTE bLevel)
static void delta_sync_object(int oi, BYTE bCmd, BYTE bLevel)
{
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
return;
sgbDeltaChanged = TRUE;
@ -513,7 +513,7 @@ static BOOL delta_get_item(TCmdGItem *pI, BYTE bLevel)
{
int i;
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
return TRUE;
TCmdPItem *pD = sgLevels[bLevel].item;
@ -575,7 +575,7 @@ static void delta_put_item(TCmdPItem *pI, int x, int y, BYTE bLevel)
{
int i;
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
return;
TCmdPItem *pD = sgLevels[bLevel].item;
@ -618,7 +618,7 @@ void DeltaAddItem(int ii)
{
int i;
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
return;
TCmdPItem *pD = sgLevels[currlevel].item;
@ -661,7 +661,7 @@ void DeltaAddItem(int ii)
void DeltaSaveLevel()
{
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
return;
for (int i = 0; i < MAX_PLRS; i++) {
@ -679,7 +679,7 @@ void DeltaLoadLevel()
int x, y, xx, yy;
BOOL done;
if (gbMaxPlayers == 1)
if (!gbIsMultiplayer)
return;
deltaload = TRUE;
@ -1263,7 +1263,7 @@ void delta_close_portal(int pnum)
static void check_update_plr(int pnum)
{
if (gbMaxPlayers != 1 && pnum == myplr)
if (gbIsMultiplayer && pnum == myplr)
pfile_update(TRUE);
}

10
Source/multi.cpp

@ -32,7 +32,7 @@ DWORD sgdwGameLoops;
* Specifies the maximum number of players in a game, where 1
* represents a single player game and 4 represents a multi player game.
*/
BYTE gbMaxPlayers;
bool gbIsMultiplayer;
BOOLEAN sgbTimeout;
char szPlayerName[128];
BYTE gbDeltaSender;
@ -607,7 +607,7 @@ static void SetupLocalCoords()
{
int x, y;
if (!leveldebug || gbMaxPlayers > 1) {
if (!leveldebug || gbIsMultiplayer) {
currlevel = 0;
leveltype = DTYPE_TOWN;
setlevel = FALSE;
@ -723,7 +723,7 @@ void NetClose()
tmsg_cleanup();
multi_event_handler(FALSE);
SNetLeaveGame(3);
if (gbMaxPlayers > 1)
if (gbIsMultiplayer)
SDL_Delay(2000);
}
@ -844,7 +844,7 @@ BOOL multi_init_single(_SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info
}
myplr = 0;
gbMaxPlayers = 1;
gbIsMultiplayer = false;
return TRUE;
}
@ -877,7 +877,7 @@ BOOL multi_init_multi(_SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info,
return FALSE;
} else {
myplr = playerId;
gbMaxPlayers = MAX_PLRS;
gbIsMultiplayer = true;
pfile_read_player_from_save();

2
Source/multi.h

@ -18,7 +18,7 @@ extern WORD sgwPackPlrOffsetTbl[MAX_PLRS];
extern BYTE gbActivePlayers;
extern BOOLEAN gbGameDestroyed;
extern BOOLEAN gbSelectProvider;
extern BYTE gbMaxPlayers;
extern bool gbIsMultiplayer;
extern char szPlayerName[128];
extern BYTE gbDeltaSender;
extern int player_state[MAX_PLRS];

4
Source/nthread.cpp

@ -183,7 +183,7 @@ void nthread_start(BOOL set_turn_upper_bit)
}
if (gdwNormalMsgSize > largestMsgSize)
gdwNormalMsgSize = largestMsgSize;
if (gbMaxPlayers > 1) {
if (gbIsMultiplayer) {
sgbThreadIsRunning = FALSE;
sgMemCrit.Enter();
nthread_should_run = TRUE;
@ -232,7 +232,7 @@ BOOL nthread_has_500ms_passed(BOOL unused)
currentTickCount = SDL_GetTicks();
ticksElapsed = currentTickCount - last_tick;
if (gbMaxPlayers == 1 && ticksElapsed > tick_delay * 10) {
if (!gbIsMultiplayer && ticksElapsed > tick_delay * 10) {
last_tick = currentTickCount;
ticksElapsed = 0;
}

12
Source/objects.cpp

@ -978,7 +978,7 @@ void InitObjects()
} else {
InitObjFlag = TRUE;
AdvanceRndSeed();
if (currlevel == 9 && gbMaxPlayers == 1)
if (currlevel == 9 && !gbIsMultiplayer)
AddSlainHero();
if (currlevel == quests[Q_MUSHROOM]._qlevel && quests[Q_MUSHROOM]._qactive == QUEST_INIT)
AddMushPatch();
@ -1083,7 +1083,7 @@ void InitObjects()
LoadMapObjs(mem, 2 * setpc_x, 2 * setpc_y);
mem_free_dbg(mem);
}
if (QuestStatus(Q_BETRAYER) && gbMaxPlayers == 1)
if (QuestStatus(Q_BETRAYER) && !gbIsMultiplayer)
AddLazStand();
InitRndBarrels();
AddL4Goodies();
@ -1380,10 +1380,10 @@ void AddShrine(int i)
} else {
slist[j] = 1;
}
if (gbMaxPlayers != 1 && shrineavail[j] == 1) {
if (gbIsMultiplayer && shrineavail[j] == 1) {
slist[j] = 0;
}
if (gbMaxPlayers == 1 && shrineavail[j] == 2) {
if (!gbIsMultiplayer && shrineavail[j] == 2) {
slist[j] = 0;
}
}
@ -4210,13 +4210,13 @@ int FindValidShrine(int i)
done = TRUE;
}
if (done) {
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
if (shrineavail[rv] == 1) {
done = FALSE;
continue;
}
}
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (shrineavail[rv] == 2) {
done = FALSE;
continue;

2
Source/pack.cpp

@ -115,7 +115,7 @@ void PackPlayer(PkPlayerStruct *pPack, int pnum, BOOL manashield)
pPack->pDamAcFlags = SwapLE32(pPlayer->pDamAcFlags);
pPack->pDiabloKillLevel = SwapLE32(pPlayer->pDiabloKillLevel);
if (gbMaxPlayers == 1 || manashield)
if (!gbIsMultiplayer || manashield)
pPack->pManaShield = SwapLE32(pPlayer->pManaShield);
else
pPack->pManaShield = FALSE;

30
Source/pfile.cpp

@ -28,13 +28,13 @@ std::string GetSavePath(DWORD save_num)
ext = ".hsv";
if (gbIsSpawn) {
if (gbMaxPlayers <= 1) {
if (!gbIsMultiplayer) {
path.append("spawn");
} else {
path.append("share_");
}
} else {
if (gbMaxPlayers <= 1) {
if (!gbIsMultiplayer) {
path.append("single_");
} else {
path.append("multi_");
@ -90,11 +90,11 @@ static BYTE *pfile_read_archive(HANDLE archive, const char *pszName, DWORD *pdwL
if (gbIsSpawn) {
password = PASSWORD_SPAWN_SINGLE;
if (gbMaxPlayers > 1)
if (gbIsMultiplayer)
password = PASSWORD_SPAWN_MULTI;
} else {
password = PASSWORD_SINGLE;
if (gbMaxPlayers > 1)
if (gbIsMultiplayer)
password = PASSWORD_MULTI;
}
@ -132,11 +132,11 @@ static void pfile_encode_hero(const PkPlayerStruct *pPack)
if (gbIsSpawn) {
password = PASSWORD_SPAWN_SINGLE;
if (gbMaxPlayers > 1)
if (gbIsMultiplayer)
password = PASSWORD_SPAWN_MULTI;
} else {
password = PASSWORD_SINGLE;
if (gbMaxPlayers > 1)
if (gbIsMultiplayer)
password = PASSWORD_MULTI;
}
@ -185,9 +185,9 @@ void pfile_write_hero()
save_num = pfile_get_save_num_from_name(plr[myplr]._pName);
if (pfile_open_archive(TRUE, save_num)) {
PackPlayer(&pkplr, myplr, gbMaxPlayers == 1);
PackPlayer(&pkplr, myplr, !gbIsMultiplayer);
pfile_encode_hero(&pkplr);
pfile_flush(gbMaxPlayers == 1, save_num);
pfile_flush(!gbIsMultiplayer, save_num);
}
}
@ -292,7 +292,7 @@ BOOL pfile_ui_set_hero_infos(BOOL (*ui_add_hero_info)(_uiheroinfo *))
BOOL pfile_archive_contains_game(HANDLE hsArchive, DWORD save_num)
{
if (gbMaxPlayers != 1)
if (gbIsMultiplayer)
return FALSE;
DWORD dwLen;
@ -347,7 +347,7 @@ BOOL pfile_get_file_name(DWORD lvl, char *dst)
{
const char *fmt;
if (gbMaxPlayers > 1) {
if (gbIsMultiplayer) {
if (lvl)
return FALSE;
fmt = "hero";
@ -460,7 +460,7 @@ static BOOL GetTempSaveNames(DWORD dwIndex, char *szTemp)
void pfile_remove_temp_files()
{
if (gbMaxPlayers <= 1) {
if (!gbIsMultiplayer) {
DWORD save_num = pfile_get_save_num_from_name(plr[myplr]._pName);
if (!pfile_open_archive(FALSE, save_num))
app_fatal("Unable to write to save file archive");
@ -478,7 +478,7 @@ void pfile_rename_temp_to_perm()
dwChar = pfile_get_save_num_from_name(plr[myplr]._pName);
assert(dwChar < MAX_CHARACTERS);
assert(gbMaxPlayers == 1);
assert(!gbIsMultiplayer);
if (!pfile_open_archive(FALSE, dwChar))
app_fatal("Unable to write to save file archive");
@ -506,11 +506,11 @@ void pfile_write_save_file(const char *pszName, BYTE *pbData, DWORD dwLen, DWORD
const char *password;
if (gbIsSpawn) {
password = PASSWORD_SPAWN_SINGLE;
if (gbMaxPlayers > 1)
if (gbIsMultiplayer)
password = PASSWORD_SPAWN_MULTI;
} else {
password = PASSWORD_SINGLE;
if (gbMaxPlayers > 1)
if (gbIsMultiplayer)
password = PASSWORD_MULTI;
}
@ -546,7 +546,7 @@ void pfile_update(BOOL force_save)
// BUGFIX: these tick values should be treated as unsigned to handle overflows correctly (fixed)
static DWORD save_prev_tc;
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
DWORD tick = SDL_GetTicks();
if (force_save || tick - save_prev_tc > 60000) {
save_prev_tc = tick;

35
Source/player.cpp

@ -881,7 +881,7 @@ void NextPlrLevel(int pnum)
plr[pnum]._pNextExper = ExpLvlsTbl[plr[pnum]._pLevel];
hp = plr[pnum]._pClass == PC_SORCERER ? 64 : 128;
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
hp++;
}
plr[pnum]._pMaxHP += hp;
@ -900,7 +900,7 @@ void NextPlrLevel(int pnum)
else
mana = 128;
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
mana++;
}
plr[pnum]._pMaxMana += mana;
@ -917,7 +917,8 @@ void NextPlrLevel(int pnum)
if (sgbControllerActive)
FocusOnCharInfo();
CalcPlrInv(pnum, TRUE);
CalcPlrInv(pnum, TRUE);
}
void AddPlrExperience(int pnum, int lvl, int exp)
@ -943,7 +944,7 @@ void AddPlrExperience(int pnum, int lvl, int exp)
}
// Prevent power leveling
if (gbMaxPlayers > 1) {
if (gbIsMultiplayer) {
powerLvlCap = plr[pnum]._pLevel < 0 ? 0 : plr[pnum]._pLevel;
if (powerLvlCap >= 50) {
powerLvlCap = 50;
@ -1759,7 +1760,7 @@ StartPlayerKill(int pnum, int earflag)
NetSendCmdParam1(TRUE, CMD_PLRDEAD, earflag);
}
diablolevel = gbMaxPlayers > 1 && plr[pnum].plrlevel == 16;
diablolevel = gbIsMultiplayer && plr[pnum].plrlevel == 16;
if ((DWORD)pnum >= MAX_PLRS) {
app_fatal("StartPlayerKill: illegal player %d", pnum);
@ -2119,7 +2120,7 @@ StartNewLvl(int pnum, int fom, int lvl)
plr[pnum]._pmode = PM_NEWLVL;
plr[pnum]._pInvincible = TRUE;
PostMessage(fom, 0, 0);
if (gbMaxPlayers > 1) {
if (gbIsMultiplayer) {
NetSendCmdParam2(TRUE, CMD_NEWLVL, fom, lvl);
}
}
@ -2152,7 +2153,7 @@ void StartWarpLvl(int pnum, int pidx)
{
InitLevelChange(pnum);
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
if (plr[pnum].plrlevel != 0) {
plr[pnum].plrlevel = 0;
} else {
@ -3068,7 +3069,7 @@ BOOL PM_DoDeath(int pnum)
deathdelay--;
if (deathdelay == 1) {
deathflag = TRUE;
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
gamemenu_on();
}
}
@ -3920,7 +3921,7 @@ void SyncInitPlrPos(int pnum)
plr[pnum]._ptargx = plr[pnum]._px;
plr[pnum]._ptargy = plr[pnum]._py;
if (gbMaxPlayers == 1 || plr[pnum].plrlevel != currlevel) {
if (!gbIsMultiplayer || plr[pnum].plrlevel != currlevel) {
return;
}
@ -4268,7 +4269,7 @@ void PlayDungMsgs()
app_fatal("PlayDungMsgs: illegal player %d", myplr);
}
if (currlevel == 1 && !plr[myplr]._pLvlVisited[1] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & DMSG_CATHEDRAL)) {
if (currlevel == 1 && !plr[myplr]._pLvlVisited[1] && !gbIsMultiplayer && !(plr[myplr].pDungMsgs & DMSG_CATHEDRAL)) {
sfxdelay = 40;
if (plr[myplr]._pClass == PC_WARRIOR) {
sfxdnum = PS_WARR97;
@ -4284,7 +4285,7 @@ void PlayDungMsgs()
sfxdnum = PS_WARR97;
}
plr[myplr].pDungMsgs = plr[myplr].pDungMsgs | DMSG_CATHEDRAL;
} else if (currlevel == 5 && !plr[myplr]._pLvlVisited[5] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & DMSG_CATACOMBS)) {
} else if (currlevel == 5 && !plr[myplr]._pLvlVisited[5] && !gbIsMultiplayer && !(plr[myplr].pDungMsgs & DMSG_CATACOMBS)) {
sfxdelay = 40;
if (plr[myplr]._pClass == PC_WARRIOR) {
sfxdnum = PS_WARR96B;
@ -4300,7 +4301,7 @@ void PlayDungMsgs()
sfxdnum = PS_WARR96B;
}
plr[myplr].pDungMsgs |= DMSG_CATACOMBS;
} else if (currlevel == 9 && !plr[myplr]._pLvlVisited[9] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & DMSG_CAVES)) {
} else if (currlevel == 9 && !plr[myplr]._pLvlVisited[9] && !gbIsMultiplayer && !(plr[myplr].pDungMsgs & DMSG_CAVES)) {
sfxdelay = 40;
if (plr[myplr]._pClass == PC_WARRIOR) {
sfxdnum = PS_WARR98;
@ -4316,7 +4317,7 @@ void PlayDungMsgs()
sfxdnum = PS_WARR98;
}
plr[myplr].pDungMsgs |= DMSG_CAVES;
} else if (currlevel == 13 && !plr[myplr]._pLvlVisited[13] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & DMSG_HELL)) {
} else if (currlevel == 13 && !plr[myplr]._pLvlVisited[13] && !gbIsMultiplayer && !(plr[myplr].pDungMsgs & DMSG_HELL)) {
sfxdelay = 40;
if (plr[myplr]._pClass == PC_WARRIOR) {
sfxdnum = PS_WARR99;
@ -4332,24 +4333,24 @@ void PlayDungMsgs()
sfxdnum = PS_WARR99;
}
plr[myplr].pDungMsgs |= DMSG_HELL;
} else if (currlevel == 16 && !plr[myplr]._pLvlVisited[15] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & DMSG_DIABLO)) { // BUGFIX: _pLvlVisited should check 16 or this message will never play
} else if (currlevel == 16 && !plr[myplr]._pLvlVisited[15] && !gbIsMultiplayer && !(plr[myplr].pDungMsgs & DMSG_DIABLO)) { // BUGFIX: _pLvlVisited should check 16 or this message will never play
sfxdelay = 40;
if (plr[myplr]._pClass == PC_WARRIOR || plr[myplr]._pClass == PC_ROGUE || plr[myplr]._pClass == PC_SORCERER || plr[myplr]._pClass == PC_MONK || plr[myplr]._pClass == PC_BARD || plr[myplr]._pClass == PC_BARBARIAN) {
sfxdnum = PS_DIABLVLINT;
}
plr[myplr].pDungMsgs |= DMSG_DIABLO;
} else if (currlevel == 17 && !plr[myplr]._pLvlVisited[17] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs2 & 1)) {
} else if (currlevel == 17 && !plr[myplr]._pLvlVisited[17] && !gbIsMultiplayer && !(plr[myplr].pDungMsgs2 & 1)) {
sfxdelay = 10;
sfxdnum = USFX_DEFILER1;
quests[Q_DEFILER]._qactive = 2;
quests[Q_DEFILER]._qlog = 1;
quests[Q_DEFILER]._qmsg = 286;
plr[myplr].pDungMsgs2 |= 1;
} else if (currlevel == 19 && !plr[myplr]._pLvlVisited[19] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs2 & 4)) {
} else if (currlevel == 19 && !plr[myplr]._pLvlVisited[19] && !gbIsMultiplayer && !(plr[myplr].pDungMsgs2 & 4)) {
sfxdelay = 10;
sfxdnum = USFX_DEFILER3;
plr[myplr].pDungMsgs2 |= 4;
} else if (currlevel == 21 && !plr[myplr]._pLvlVisited[21] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & 32)) {
} else if (currlevel == 21 && !plr[myplr]._pLvlVisited[21] && !gbIsMultiplayer && !(plr[myplr].pDungMsgs & 32)) {
sfxdelay = 30;
if (plr[myplr]._pClass == PC_WARRIOR) {
sfxdnum = PS_WARR92;

22
Source/quests.cpp

@ -98,7 +98,7 @@ void InitQuests()
int i, initiatedQuests;
DWORD z;
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
for (i = 0; i < MAXQUESTS; i++) {
quests[i]._qactive = QUEST_NOTAVAIL;
}
@ -117,10 +117,10 @@ void InitQuests()
for (z = 0; z < MAXQUESTS; z++) {
if (!gbIsHellfire && z > 15)
break;
if (gbMaxPlayers > 1 && !(questlist[z]._qflags & QUEST_ANY))
if (gbIsMultiplayer && !(questlist[z]._qflags & QUEST_ANY))
continue;
quests[z]._qtype = questlist[z]._qdtype;
if (gbMaxPlayers > 1) {
if (gbIsMultiplayer) {
quests[z]._qlevel = questlist[z]._qdmultlvl;
if (!delta_quest_inited(initiatedQuests)) {
quests[z]._qactive = QUEST_INIT;
@ -144,7 +144,7 @@ void InitQuests()
quests[z]._qmsg = questlist[z]._qdmsg;
}
if (gbMaxPlayers == 1 && !allquests) {
if (!gbIsMultiplayer && !allquests) {
SetRndSeed(glSeedTbl[15]);
if (random_(0, 2) != 0)
quests[Q_PWATER]._qactive = QUEST_NOTAVAIL;
@ -172,7 +172,7 @@ void InitQuests()
if (quests[Q_ROCK]._qactive == QUEST_NOTAVAIL)
quests[Q_ROCK]._qvar2 = 2;
quests[Q_LTBANNER]._qvar1 = 1;
if (gbMaxPlayers != 1)
if (gbIsMultiplayer)
quests[Q_BETRAYER]._qvar1 = 2;
}
@ -183,13 +183,13 @@ void CheckQuests()
int i, rportx, rporty;
if (QuestStatus(Q_BETRAYER) && gbMaxPlayers != 1 && quests[Q_BETRAYER]._qvar1 == 2) {
if (QuestStatus(Q_BETRAYER) && gbIsMultiplayer && quests[Q_BETRAYER]._qvar1 == 2) {
AddObject(OBJ_ALTBOY, 2 * setpc_x + 20, 2 * setpc_y + 22);
quests[Q_BETRAYER]._qvar1 = 3;
NetSendCmdQuest(TRUE, Q_BETRAYER);
}
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
return;
}
@ -257,7 +257,7 @@ BOOL ForceQuests()
if (gbIsSpawn)
return FALSE;
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
return FALSE;
}
@ -290,7 +290,7 @@ BOOL QuestStatus(int i)
return FALSE;
if (quests[i]._qactive == QUEST_NOTAVAIL)
return FALSE;
if (gbMaxPlayers != 1 && !(questlist[i]._qflags & QUEST_ANY))
if (gbIsMultiplayer && !(questlist[i]._qflags & QUEST_ANY))
return FALSE;
return TRUE;
}
@ -371,7 +371,7 @@ void CheckQuestKill(int m, BOOL sendmsg)
} else if (plr[myplr]._pClass == PC_BARBARIAN) {
sfxdnum = PS_WARR62;
}
} else if (monster[m].mName == UniqMonst[UMT_LAZURUS].mName && gbMaxPlayers != 1) { //"Arch-Bishop Lazarus"
} else if (monster[m].mName == UniqMonst[UMT_LAZURUS].mName && gbIsMultiplayer) { //"Arch-Bishop Lazarus"
quests[Q_BETRAYER]._qactive = QUEST_DONE;
quests[Q_BETRAYER]._qvar1 = 7;
sfxdelay = 30;
@ -404,7 +404,7 @@ void CheckQuestKill(int m, BOOL sendmsg)
NetSendCmdQuest(TRUE, Q_BETRAYER);
NetSendCmdQuest(TRUE, Q_DIABLO);
}
} else if (monster[m].mName == UniqMonst[UMT_LAZURUS].mName && gbMaxPlayers == 1) { //"Arch-Bishop Lazarus"
} else if (monster[m].mName == UniqMonst[UMT_LAZURUS].mName && !gbIsMultiplayer) { //"Arch-Bishop Lazarus"
quests[Q_BETRAYER]._qactive = QUEST_DONE;
sfxdelay = 30;
InitVPTriggers();

2
Source/scrollrt.cpp

@ -1454,7 +1454,7 @@ static void DrawMain(int dwHgt, BOOL draw_desc, BOOL draw_hp, BOOL draw_mana, BO
if (draw_btn) {
DoBlitScreen(PANEL_LEFT + 8, PANEL_TOP + 5, 72, 119);
DoBlitScreen(PANEL_LEFT + 556, PANEL_TOP + 5, 72, 48);
if (gbMaxPlayers > 1) {
if (gbIsMultiplayer) {
DoBlitScreen(PANEL_LEFT + 84, PANEL_TOP + 91, 36, 32);
DoBlitScreen(PANEL_LEFT + 524, PANEL_TOP + 91, 36, 32);
}

6
Source/stores.cpp

@ -89,7 +89,7 @@ void SetupTownStores()
int i, l;
SetRndSeed(glSeedTbl[currlevel] * SDL_GetTicks());
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
l = 0;
for (i = 0; i < NUMLEVELS; i++) {
if (plr[myplr]._pLvlVisited[i])
@ -2394,7 +2394,7 @@ void HealerBuyItem()
int idx;
idx = stextvhold + ((stextlhold - stextup) >> 2);
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (idx < 2)
plr[myplr].HoldItem._iSeed = AdvanceRndSeed();
} else {
@ -2407,7 +2407,7 @@ void HealerBuyItem()
plr[myplr].HoldItem._iIdentified = FALSE;
StoreAutoPlace();
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (idx < 2)
return;
} else {

2
Source/town.cpp

@ -184,7 +184,7 @@ void T_Pass3()
T_FillSector(P3Tiles, pSector, 0, 0, 23, 23);
mem_free_dbg(pSector);
if (gbIsSpawn || gbMaxPlayers == 1) {
if (gbIsSpawn || !gbIsMultiplayer) {
if (gbIsSpawn || !(plr[myplr].pTownWarps & 1) && (!gbIsHellfire || plr[myplr]._pLevel < 10)) {
T_FillTile(P3Tiles, 48, 20, 320);
}

20
Source/towners.cpp

@ -519,8 +519,8 @@ void TownCtrlMsg(int i)
int p;
int dx, dy;
if (i == -1)
return;
if (i == -1)
return;
if (towner[i]._tbtcnt != 0) {
p = towner[i]._tVar1;
@ -792,7 +792,7 @@ void TalkToTowner(int p, int t)
NetSendCmdQuest(TRUE, Q_SKELKING);
}
}
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (plr[p]._pLvlVisited[3] && quests[Q_LTBANNER]._qactive != QUEST_NOTAVAIL) {
if ((quests[Q_LTBANNER]._qactive == QUEST_INIT || quests[Q_LTBANNER]._qactive == QUEST_ACTIVE) && quests[Q_LTBANNER]._qvar2 == 0 && !towner[t]._tMsgSaid) {
quests[Q_LTBANNER]._qvar2 = 1;
@ -861,7 +861,7 @@ void TalkToTowner(int p, int t)
NetSendCmdQuest(TRUE, Q_BUTCHER);
}
} else if (t == GetActiveTowner(TOWN_SMITH)) {
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (plr[p]._pLvlVisited[4] && quests[Q_ROCK]._qactive != QUEST_NOTAVAIL) {
if (quests[Q_ROCK]._qvar2 == 0) {
quests[Q_ROCK]._qvar2 = 1;
@ -998,7 +998,7 @@ void TalkToTowner(int p, int t)
}
}
} else if (t == GetActiveTowner(TOWN_HEALER)) {
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (plr[p]._pLvlVisited[1] || (gbIsHellfire && plr[p]._pLvlVisited[5])) {
if (!towner[t]._tMsgSaid) {
if (quests[Q_PWATER]._qactive == QUEST_INIT) {
@ -1042,7 +1042,7 @@ void TalkToTowner(int p, int t)
}
}
} else if (t == GetActiveTowner(TOWN_STORY)) {
if (gbMaxPlayers == 1) {
if (!gbIsMultiplayer) {
if (quests[Q_BETRAYER]._qactive == QUEST_INIT && PlrHasItem(p, IDI_LAZSTAFF, &i) != NULL) {
RemoveInvItem(p, i);
quests[Q_BETRAYER]._qvar1 = 2;
@ -1061,7 +1061,7 @@ void TalkToTowner(int p, int t)
quests[Q_DIABLO]._qlog = TRUE;
}
}
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
if (quests[Q_BETRAYER]._qactive == QUEST_ACTIVE && !quests[Q_BETRAYER]._qlog) {
towner[t]._tbtcnt = 150;
towner[t]._tVar1 = p;
@ -1175,7 +1175,7 @@ void TalkToTowner(int p, int t)
else
PlaySFX(alltext[qt].sfxnr);
}
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
NetSendCmdQuest(TRUE, Q_FARMER);
}
}
@ -1259,7 +1259,7 @@ void TalkToTowner(int p, int t)
else
PlaySFX(alltext[qt].sfxnr);
}
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
NetSendCmdQuest(TRUE, Q_JERSEY);
}
}
@ -1312,7 +1312,7 @@ void TalkToTowner(int p, int t)
PlaySFX(alltext[qt].sfxnr);
}
}
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
NetSendCmdQuest(TRUE, Q_GIRL);
}
}

14
Source/trigs.cpp

@ -67,13 +67,11 @@ void InitTownTriggers()
trigs[numtrigs]._tmsg = WM_DIABNEXTLVL;
numtrigs++;
bool isMultiplayer = gbMaxPlayers != 1;
for (i = 0; i < sizeof(townwarps) / sizeof(townwarps[0]); i++) {
townwarps[i] = isMultiplayer && !gbIsSpawn;
townwarps[i] = gbIsMultiplayer && !gbIsSpawn;
}
if (!gbIsSpawn) {
if (isMultiplayer || plr[myplr].pTownWarps & 1 || (gbIsHellfire && plr[myplr]._pLevel >= 10)) {
if (gbIsMultiplayer || plr[myplr].pTownWarps & 1 || (gbIsHellfire && plr[myplr]._pLevel >= 10)) {
townwarps[0] = TRUE;
trigs[numtrigs]._tx = 49;
trigs[numtrigs]._ty = 21;
@ -81,7 +79,7 @@ void InitTownTriggers()
trigs[numtrigs]._tlvl = 5;
numtrigs++;
}
if (isMultiplayer || plr[myplr].pTownWarps & 2 || (gbIsHellfire && plr[myplr]._pLevel >= 15)) {
if (gbIsMultiplayer || plr[myplr].pTownWarps & 2 || (gbIsHellfire && plr[myplr]._pLevel >= 15)) {
townwarps[1] = TRUE;
trigs[numtrigs]._tx = 17;
trigs[numtrigs]._ty = 69;
@ -89,7 +87,7 @@ void InitTownTriggers()
trigs[numtrigs]._tlvl = 9;
numtrigs++;
}
if (isMultiplayer || plr[myplr].pTownWarps & 4 || (gbIsHellfire && plr[myplr]._pLevel >= 20)) {
if (gbIsMultiplayer || plr[myplr].pTownWarps & 4 || (gbIsHellfire && plr[myplr]._pLevel >= 20)) {
townwarps[2] = TRUE;
trigs[numtrigs]._tx = 41;
trigs[numtrigs]._ty = 80;
@ -104,7 +102,7 @@ void InitTownTriggers()
trigs[numtrigs]._tmsg = WM_DIABTOWNWARP;
trigs[numtrigs]._tlvl = 17;
numtrigs++;
if (isMultiplayer || quests[Q_GRAVE]._qactive == 3) {
if (gbIsMultiplayer || quests[Q_GRAVE]._qactive == 3) {
trigs[numtrigs]._tx = 36;
trigs[numtrigs]._ty = 24;
trigs[numtrigs]._tmsg = WM_DIABTOWNWARP;
@ -865,7 +863,7 @@ void CheckTriggers()
StartNewLvl(myplr, trigs[i]._tmsg, ReturnLvl);
break;
case WM_DIABTOWNWARP:
if (gbMaxPlayers != 1) {
if (gbIsMultiplayer) {
abort = FALSE;
if (trigs[i]._tlvl == 5 && plr[myplr]._pLevel < 8) {

4
SourceT/diablo_test.cpp

@ -1,7 +1,9 @@
#include <gtest/gtest.h>
#include "all.h"
TEST(Diablo, diablo_pause_game_unpause) {
TEST(Diablo, diablo_pause_game_unpause)
{
dvl::gbIsMultiplayer = false;
dvl::PauseMode = 1;
dvl::diablo_pause_game();
EXPECT_EQ(dvl::PauseMode, 0);

3
SourceX/DiabloUI/selhero.cpp

@ -35,8 +35,7 @@ BOOL(*gfnHeroInfo)
(BOOL (*fninfofunc)(_uiheroinfo *));
BOOL(*gfnHeroCreate)
(_uiheroinfo *);
void(*gfnHeroStats)
(unsigned int, _uidefaultstats *);
void (*gfnHeroStats)(unsigned int, _uidefaultstats *);
namespace {

2
SourceX/controls/plrctrls.cpp

@ -358,7 +358,7 @@ void FindActor()
else
CheckTownersNearby();
if (gbMaxPlayers != 1)
if (gbIsMultiplayer)
CheckPlayerNearby();
}

Loading…
Cancel
Save