unify checks for single and multiplayer
This commit is contained in:
parent
7d39c4c9d1
commit
ab9911064f
33 changed files with 213 additions and 210 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -35,8 +35,7 @@ BOOL(*gfnHeroInfo)
|
|||
(BOOL (*fninfofunc)(_uiheroinfo *));
|
||||
BOOL(*gfnHeroCreate)
|
||||
(_uiheroinfo *);
|
||||
void(*gfnHeroStats)
|
||||
(unsigned int, _uidefaultstats *);
|
||||
void (*gfnHeroStats)(unsigned int, _uidefaultstats *);
|
||||
|
||||
namespace {
|
||||
|
||||
|
|
|
|||
|
|
@ -358,7 +358,7 @@ void FindActor()
|
|||
else
|
||||
CheckTownersNearby();
|
||||
|
||||
if (gbMaxPlayers != 1)
|
||||
if (gbIsMultiplayer)
|
||||
CheckPlayerNearby();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue