diff options
author | Fabian Greffrath | 2015-03-30 18:13:10 +0200 |
---|---|---|
committer | Fabian Greffrath | 2015-03-30 18:13:10 +0200 |
commit | 535b4edd143ceeae870e9c13cdac65ce17e2be48 (patch) | |
tree | 11fa61069a3a5f73160913881af8f345d9312b7c /src | |
parent | 833d8a838b44a950ebde587db1d888bf0a98e690 (diff) | |
parent | e0eb95922fbda64aca169d62029a5be071e1273f (diff) | |
download | chocolate-doom-535b4edd143ceeae870e9c13cdac65ce17e2be48.tar.gz chocolate-doom-535b4edd143ceeae870e9c13cdac65ce17e2be48.tar.bz2 chocolate-doom-535b4edd143ceeae870e9c13cdac65ce17e2be48.zip |
Merge pull request #523 from chocolate-doom/hexndemo
Add support for the Hexen 4 Level Demo Version
Diffstat (limited to 'src')
-rw-r--r-- | src/hexen/a_action.c | 6 | ||||
-rw-r--r-- | src/hexen/am_map.c | 16 | ||||
-rw-r--r-- | src/hexen/ct_chat.c | 6 | ||||
-rw-r--r-- | src/hexen/d_net.c | 6 | ||||
-rw-r--r-- | src/hexen/g_game.c | 33 | ||||
-rw-r--r-- | src/hexen/h2_main.c | 48 | ||||
-rw-r--r-- | src/hexen/h2def.h | 1 | ||||
-rw-r--r-- | src/hexen/in_lude.c | 12 | ||||
-rw-r--r-- | src/hexen/mn_menu.c | 2 | ||||
-rw-r--r-- | src/hexen/p_acs.c | 4 | ||||
-rw-r--r-- | src/hexen/p_enemy.c | 6 | ||||
-rw-r--r-- | src/hexen/p_inter.c | 6 | ||||
-rw-r--r-- | src/hexen/p_mobj.c | 6 | ||||
-rw-r--r-- | src/hexen/p_setup.c | 14 | ||||
-rw-r--r-- | src/hexen/p_switch.c | 23 | ||||
-rw-r--r-- | src/hexen/p_tick.c | 2 | ||||
-rw-r--r-- | src/hexen/p_user.c | 4 | ||||
-rw-r--r-- | src/hexen/r_draw.c | 4 | ||||
-rw-r--r-- | src/hexen/r_things.c | 4 | ||||
-rw-r--r-- | src/hexen/sb_bar.c | 36 | ||||
-rw-r--r-- | src/hexen/sv_save.c | 28 |
21 files changed, 191 insertions, 76 deletions
diff --git a/src/hexen/a_action.c b/src/hexen/a_action.c index c4c194e3..1923ff70 100644 --- a/src/hexen/a_action.c +++ b/src/hexen/a_action.c @@ -211,7 +211,7 @@ void A_PotteryCheck(mobj_t * actor) } else { - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (!playeringame[i]) { @@ -905,7 +905,7 @@ void A_Quake(mobj_t * actor) if (actor->args[1]-- > 0) { - for (playnum = 0; playnum < MAXPLAYERS; playnum++) + for (playnum = 0; playnum < maxplayers; playnum++) { player = &players[playnum]; if (!playeringame[playnum]) @@ -934,7 +934,7 @@ void A_Quake(mobj_t * actor) } else { - for (playnum = 0; playnum < MAXPLAYERS; playnum++) + for (playnum = 0; playnum < maxplayers; playnum++) { localQuakeHappening[playnum] = false; } diff --git a/src/hexen/am_map.c b/src/hexen/am_map.c index 2d082415..6a28b45c 100644 --- a/src/hexen/am_map.c +++ b/src/hexen/am_map.c @@ -292,7 +292,7 @@ void AM_initVariables(void) // find player to center on initially if (!playeringame[pnum = consoleplayer]) - for (pnum = 0; pnum < MAXPLAYERS; pnum++) + for (pnum = 0; pnum < maxplayers; pnum++) if (playeringame[pnum]) break; plr = &players[pnum]; @@ -1280,7 +1280,7 @@ void AM_drawPlayers(void) return; } - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { their_color++; p = &players[i]; @@ -1418,12 +1418,12 @@ void AM_DrawDeathmatchStats(void) char textBuffer[80]; int yPosition; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { fragCount[i] = 0; order[i] = -1; } - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (!playeringame[i]) { @@ -1431,14 +1431,14 @@ void AM_DrawDeathmatchStats(void) } else { - for (j = 0; j < MAXPLAYERS; j++) + for (j = 0; j < maxplayers; j++) { if (playeringame[j]) { fragCount[i] += players[i].frags[j]; } } - for (k = 0; k < MAXPLAYERS; k++) + for (k = 0; k < maxplayers; k++) { if (order[k] == -1) { @@ -1447,7 +1447,7 @@ void AM_DrawDeathmatchStats(void) } else if (fragCount[i] > fragCount[order[k]]) { - for (m = MAXPLAYERS - 1; m > k; m--) + for (m = maxplayers - 1; m > k; m--) { order[m] = order[m - 1]; } @@ -1458,7 +1458,7 @@ void AM_DrawDeathmatchStats(void) } } yPosition = 15; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (!playeringame[order[i]]) { diff --git a/src/hexen/ct_chat.c b/src/hexen/ct_chat.c index 4785f8b2..55934006 100644 --- a/src/hexen/ct_chat.c +++ b/src/hexen/ct_chat.c @@ -116,7 +116,7 @@ void CT_Init(void) tail = 0; chatmodeon = false; memset(ChatQueue, 0, QUEUESIZE); - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { chat_dest[i] = 0; msgptr[i] = 0; @@ -292,7 +292,7 @@ void CT_Ticker(void) char c; int numplayers; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (!playeringame[i]) { @@ -312,7 +312,7 @@ void CT_Ticker(void) else if (c == KEY_ENTER) { numplayers = 0; - for (j = 0; j < MAXPLAYERS; j++) + for (j = 0; j < maxplayers; j++) { numplayers += playeringame[j]; } diff --git a/src/hexen/d_net.c b/src/hexen/d_net.c index 5bd0eed0..bd0e8b21 100644 --- a/src/hexen/d_net.c +++ b/src/hexen/d_net.c @@ -76,7 +76,7 @@ static void RunTic(ticcmd_t *cmds, boolean *ingame) // Check for player quits. - for (i = 0; i < MAXPLAYERS; ++i) + for (i = 0; i < maxplayers; ++i) { if (!demoplayback && playeringame[i] && !ingame[i]) { @@ -120,7 +120,7 @@ static void LoadGameSettings(net_gamesettings_t *settings) respawnparm = settings->respawn_monsters; consoleplayer = settings->consoleplayer; - for (i=0; i<MAXPLAYERS; ++i) + for (i=0; i<maxplayers; ++i) { playeringame[i] = i < settings->num_players; PlayerClass[i] = settings->player_classes[i]; @@ -172,7 +172,7 @@ static void InitConnectData(net_connect_data_t *connect_data) connect_data->lowres_turn = false; connect_data->drone = false; - connect_data->max_players = MAXPLAYERS; + connect_data->max_players = maxplayers; //! // @category net diff --git a/src/hexen/g_game.c b/src/hexen/g_game.c index 3593ffe2..e0a7afac 100644 --- a/src/hexen/g_game.c +++ b/src/hexen/g_game.c @@ -639,7 +639,7 @@ void G_DoLoadLevel(void) levelstarttic = gametic; // for time calculation gamestate = GS_LEVEL; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (playeringame[i] && players[i].playerstate == PST_DEAD) players[i].playerstate = PST_REBORN; @@ -756,7 +756,7 @@ boolean G_Responder(event_t * ev) do { displayplayer++; - if (displayplayer == MAXPLAYERS) + if (displayplayer == maxplayers) { displayplayer = 0; } @@ -899,7 +899,7 @@ void G_Ticker(void) // // do player reborns if needed // - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) if (playeringame[i] && players[i].playerstate == PST_REBORN) G_DoReborn(i); @@ -963,7 +963,7 @@ void G_Ticker(void) //buf = gametic%BACKUPTICS; buf = (gametic / ticdup) % BACKUPTICS; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) if (playeringame[i]) { cmd = &players[i].cmd; @@ -993,7 +993,7 @@ void G_Ticker(void) // // check for special buttons // - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) if (playeringame[i]) { if (players[i].cmd.buttons & BT_SPECIAL) @@ -1335,7 +1335,7 @@ void G_DoReborn(int playernum) else { // Try to spawn at one of the other player start spots - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (G_CheckSpot(playernum, &playerstarts[RebornPosition][i])) { // Found an open start spot @@ -1471,6 +1471,13 @@ void G_SecretExitLevel (void) void G_Completed(int map, int position) { + if (gamemode == shareware && map > 4) + { + P_SetMessage(&players[consoleplayer], "ACCESS DENIED -- DEMO", true); + S_StartSound(NULL, SFX_CHAT); + return; + } + gameaction = ga_completed; LeaveMap = map; LeavePosition = position; @@ -1485,7 +1492,7 @@ void G_DoCompleted(void) { return; } - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (playeringame[i]) { @@ -1512,7 +1519,7 @@ void G_DoCompleted(void) { return; } - for(i = 0; i < MAXPLAYERS; i++) + for(i = 0; i < maxplayers; i++) { if(playeringame[i]) { @@ -1725,7 +1732,7 @@ void G_InitNew(skill_t skill, int episode, int map) } M_ClearRandom(); // Force players to be initialized upon first level load - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { players[i].playerstate = PST_REBORN; players[i].worldTimer = 0; @@ -1748,7 +1755,7 @@ void G_InitNew(skill_t skill, int episode, int map) // Give one null ticcmd_t //gametic = 0; //maketic = 1; - //for (i=0 ; i<MAXPLAYERS ; i++) + //for (i=0 ; i<maxplayers ; i++) // nettics[i] = 1; // one null event for this gametic //memset (localcmds,0,sizeof(localcmds)); //memset (netcmds,0,sizeof(netcmds)); @@ -1819,7 +1826,7 @@ void G_RecordDemo(skill_t skill, int numplayers, int episode, int map, *demo_p++ = episode; *demo_p++ = map; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { *demo_p++ = playeringame[i]; *demo_p++ = PlayerClass[i]; @@ -1855,7 +1862,7 @@ void G_DoPlayDemo(void) episode = *demo_p++; map = *demo_p++; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { playeringame[i] = *demo_p++; PlayerClass[i] = *demo_p++; @@ -1890,7 +1897,7 @@ void G_TimeDemo(char *name) episode = *demo_p++; map = *demo_p++; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { playeringame[i] = *demo_p++; PlayerClass[i] = *demo_p++; diff --git a/src/hexen/h2_main.c b/src/hexen/h2_main.c index 9d92a65b..7084ceec 100644 --- a/src/hexen/h2_main.c +++ b/src/hexen/h2_main.c @@ -93,6 +93,7 @@ extern boolean askforquit; // PUBLIC DATA DEFINITIONS ------------------------------------------------- GameMode_t gamemode; +char *gamedescription; char *iwadfile; static char demolumpname[9]; // Demo lump to start playing. boolean nomonsters; // checkparm of -nomonsters @@ -112,6 +113,7 @@ boolean autostart; boolean advancedemo; FILE *debugfile; int UpdateState; +int maxplayers = MAXPLAYERS; // PRIVATE DATA DEFINITIONS ------------------------------------------------ @@ -253,6 +255,46 @@ static void D_AddFile(char *filename) W_AddFile(filename); } +// Find out what version of Hexen is playing. + +void D_IdentifyVersion(void) +{ + // The Hexen Shareware, ne 4 Level Demo Version, is missing the SKY1 lump + // and uses the SKY2 lump instead. Let's use this fact and the missing + // levels from MAP05 onward to identify it and set gamemode accordingly. + + if (W_CheckNumForName("SKY1") == -1 && + W_CheckNumForName("MAP05") == -1 ) + { + gamemode = shareware; + maxplayers = 4; + } +} + +// Set the gamedescription string. + +void D_SetGameDescription(void) +{ +/* + NB: The 4 Level Demo Version actually prints a four-lined banner + (and indeed waits for a keypress): + + Hexen: Beyond Heretic + + 4 Level Demo Version + Press any key to continue. +*/ + + if (gamemode == shareware) + { + gamedescription = "Hexen: 4 Level Demo Version"; + } + else + { + gamedescription = "Hexen"; + } +} + //========================================================================== // // H2_Main @@ -332,11 +374,13 @@ void D_DoomMain(void) D_AddFile(iwadfile); W_CheckCorrectIWAD(hexen); + D_IdentifyVersion(); + D_SetGameDescription(); AdjustForMacIWAD(); HandleArgs(); - I_PrintStartupBanner("Hexen"); + I_PrintStartupBanner(gamedescription); ST_Message("MN_Init: Init menu system.\n"); MN_Init(); @@ -664,7 +708,7 @@ void H2_GameLoop(void) M_snprintf(filename, sizeof(filename), "debug%i.txt", consoleplayer); debugfile = fopen(filename, "w"); } - I_SetWindowTitle("Hexen"); + I_SetWindowTitle(gamedescription); I_GraphicsCheckCommandLine(); I_SetGrabMouseCallback(D_GrabMouseCallback); I_InitGraphics(); diff --git a/src/hexen/h2def.h b/src/hexen/h2def.h index 43e7c91b..0658b7d5 100644 --- a/src/hexen/h2def.h +++ b/src/hexen/h2def.h @@ -655,6 +655,7 @@ extern int RebornPosition; #define MAX_PLAYER_STARTS 8 extern mapthing_t playerstarts[MAX_PLAYER_STARTS][MAXPLAYERS]; +extern int maxplayers; extern int mouseSensitivity; diff --git a/src/hexen/in_lude.c b/src/hexen/in_lude.c index daabf497..7b137006 100644 --- a/src/hexen/in_lude.c +++ b/src/hexen/in_lude.c @@ -106,7 +106,7 @@ void IN_Start(void) skipintermission = false; intertime = 0; AM_Stop(); - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { players[i].messageTics = 0; players[i].message[0] = 0; @@ -208,13 +208,13 @@ static void InitStats(void) posnum = 0; playercount = 0; slaughtercount = 0; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { totalFrags[i] = 0; if (playeringame[i]) { playercount++; - for (j = 0; j < MAXPLAYERS; j++) + for (j = 0; j < maxplayers; j++) { if (playeringame[j]) { @@ -338,7 +338,7 @@ static void CheckForSkip(void) player_t *player; static boolean triedToSkip; - for (i = 0, player = players; i < MAXPLAYERS; i++, player++) + for (i = 0, player = players; i < maxplayers; i++, player++) { if (playeringame[i]) { @@ -478,10 +478,10 @@ static void DrDeathTally(void) S_StartSound(NULL, SFX_PLATFORM_STOP); } y = yPos >> FRACBITS; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { xPos = xStart; - for (j = 0; j < MAXPLAYERS; j++, xPos += xDelta) + for (j = 0; j < maxplayers; j++, xPos += xDelta) { x = xPos >> FRACBITS; bold = (i == consoleplayer || j == consoleplayer); diff --git a/src/hexen/mn_menu.c b/src/hexen/mn_menu.c index ff573317..15170279 100644 --- a/src/hexen/mn_menu.c +++ b/src/hexen/mn_menu.c @@ -1190,11 +1190,13 @@ boolean MN_Responder(event_t * event) if (InfoType) { + /* The 4-Level Demo Version also has 3 Info pages if (gamemode == shareware) { InfoType = (InfoType + 1) % 5; } else + */ { InfoType = (InfoType + 1) % 4; } diff --git a/src/hexen/p_acs.c b/src/hexen/p_acs.c index b9fd8f08..b7a63fe9 100644 --- a/src/hexen/p_acs.c +++ b/src/hexen/p_acs.c @@ -1681,7 +1681,7 @@ static int CmdEndPrintBold(void) { int i; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (playeringame[i]) { @@ -1722,7 +1722,7 @@ static int CmdPlayerCount(void) int count; count = 0; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { count += playeringame[i]; } diff --git a/src/hexen/p_enemy.c b/src/hexen/p_enemy.c index 18cc79eb..dc2c9fe5 100644 --- a/src/hexen/p_enemy.c +++ b/src/hexen/p_enemy.c @@ -546,8 +546,8 @@ boolean P_LookForPlayers(mobj_t * actor, boolean allaround) // stop = (actor->lastlook - 1) & 3; // for (;; actor->lastlook = (actor->lastlook + 1) & 3) - stop = (actor->lastlook + MAXPLAYERS - 1) % MAXPLAYERS; - for (;; actor->lastlook = (actor->lastlook + 1) % MAXPLAYERS) + stop = (actor->lastlook + maxplayers - 1) % maxplayers; + for (;; actor->lastlook = (actor->lastlook + 1) % maxplayers) { if (!playeringame[actor->lastlook]) continue; @@ -1179,7 +1179,7 @@ void A_MinotaurLook(mobj_t * actor) actor->target = NULL; if (deathmatch) // Quick search for players { - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (!playeringame[i]) continue; diff --git a/src/hexen/p_inter.c b/src/hexen/p_inter.c index 587614ff..4f1ecda8 100644 --- a/src/hexen/p_inter.c +++ b/src/hexen/p_inter.c @@ -747,6 +747,12 @@ static void TryPickupArtifact(player_t * player, artitype_t artifactType, TXT_ARTIPUZZGEAR }; + if (gamemode == shareware) + { + artifactMessages[arti_blastradius] = TXT_ARTITELEPORT; + artifactMessages[arti_teleport] = TXT_ARTIBLASTRADIUS; + } + if (P_GiveArtifact(player, artifactType, artifact)) { if (artifact->special) diff --git a/src/hexen/p_mobj.c b/src/hexen/p_mobj.c index 98f81984..b868da8c 100644 --- a/src/hexen/p_mobj.c +++ b/src/hexen/p_mobj.c @@ -1190,7 +1190,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type) { mobj->reactiontime = info->reactiontime; } - mobj->lastlook = P_Random() % MAXPLAYERS; + mobj->lastlook = P_Random() % maxplayers; // Set the state, but do not use P_SetMobjState, because action // routines can't be called yet. If the spawnstate has an action @@ -1295,7 +1295,7 @@ void P_SpawnPlayer(mapthing_t * mthing) fixed_t x, y, z; mobj_t *mobj; - if (mthing->type - 1 >= MAXPLAYERS || !playeringame[mthing->type - 1]) + if (mthing->type - 1 >= maxplayers || !playeringame[mthing->type - 1]) { // Not playing return; } @@ -1500,7 +1500,7 @@ void P_SpawnMapThing(mapthing_t * mthing) else if (deathmatch == false) { // Cooperative spawnMask = 0; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (playeringame[i]) { diff --git a/src/hexen/p_setup.c b/src/hexen/p_setup.c index 1ff6cef5..f24fb34e 100644 --- a/src/hexen/p_setup.c +++ b/src/hexen/p_setup.c @@ -387,7 +387,7 @@ void P_LoadThings(int lump) return; } playerCount = 0; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { playerCount += playeringame[i]; } @@ -672,7 +672,7 @@ void P_SetupLevel(int episode, int map, int playermask, skill_t skill) int lumpnum; mobj_t *mobj; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { players[i].killcount = players[i].secretcount = players[i].itemcount = 0; @@ -722,7 +722,7 @@ void P_SetupLevel(int episode, int map, int playermask, skill_t skill) TimerGame = 0; if (deathmatch) { - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (playeringame[i]) { // must give a player spot before deathmatchspawn @@ -796,16 +796,22 @@ static void InitMapInfo(void) int mcmdValue; mapInfo_t *info; char songMulch[10]; + char *default_sky_name = DEFAULT_SKY_NAME; mapMax = 1; + if (gamemode == shareware) + { + default_sky_name = "SKY2"; + } + // Put defaults into MapInfo[0] info = MapInfo; info->cluster = 0; info->warpTrans = 0; info->nextMap = 1; // Always go to map 1 if not specified info->cdTrack = 1; - info->sky1Texture = R_TextureNumForName(DEFAULT_SKY_NAME); + info->sky1Texture = R_TextureNumForName(default_sky_name); info->sky2Texture = info->sky1Texture; info->sky1ScrollDelta = 0; info->sky2ScrollDelta = 0; diff --git a/src/hexen/p_switch.c b/src/hexen/p_switch.c index 9d86f92a..a90269a7 100644 --- a/src/hexen/p_switch.c +++ b/src/hexen/p_switch.c @@ -25,7 +25,14 @@ // CHANGE THE TEXTURE OF A WALL SWITCH TO ITS OPPOSITE // //================================================================== -switchlist_t alphSwitchList[] = { +switchlist_t alphSwitchListDemo[] = { + {"SW_1_UP", "SW_1_DN", SFX_SWITCH1}, + {"SW_2_UP", "SW_2_DN", SFX_SWITCH1}, + {"SW52_OFF", "SW52_ON", SFX_SWITCH2}, + {"\0", "\0", 0} +}; + +switchlist_t alphSwitchListFull[] = { {"SW_1_UP", "SW_1_DN", SFX_SWITCH1}, {"SW_2_UP", "SW_2_DN", SFX_SWITCH1}, {"VALVE1", "VALVE2", SFX_VALVE_TURN}, @@ -39,6 +46,8 @@ switchlist_t alphSwitchList[] = { {"\0", "\0", 0} }; +switchlist_t *alphSwitchList = NULL; + int switchlist[MAXSWITCHES * 2]; int numswitches; button_t buttonlist[MAXBUTTONS]; @@ -58,6 +67,18 @@ void P_InitSwitchList(void) int i; int index; + if (!alphSwitchList) + { + if (gamemode == shareware) + { + alphSwitchList = alphSwitchListDemo; + } + else + { + alphSwitchList = alphSwitchListFull; + } + } + for (index = 0, i = 0; i < MAXSWITCHES; i++) { if (!alphSwitchList[i].soundID) diff --git a/src/hexen/p_tick.c b/src/hexen/p_tick.c index aac61ff8..95242ccd 100644 --- a/src/hexen/p_tick.c +++ b/src/hexen/p_tick.c @@ -58,7 +58,7 @@ void P_Ticker(void) { return; } - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (playeringame[i]) { diff --git a/src/hexen/p_user.c b/src/hexen/p_user.c index d24ec053..c7fa7a3f 100644 --- a/src/hexen/p_user.c +++ b/src/hexen/p_user.c @@ -480,7 +480,7 @@ int P_GetPlayerNum(player_t * player) { int i; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (player == &players[i]) { @@ -1017,7 +1017,7 @@ void P_TeleportToPlayerStarts(mobj_t * victim) fixed_t destX, destY; angle_t destAngle; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (!playeringame[i]) continue; diff --git a/src/hexen/r_draw.c b/src/hexen/r_draw.c index e7481934..13a0421b 100644 --- a/src/hexen/r_draw.c +++ b/src/hexen/r_draw.c @@ -320,9 +320,9 @@ void R_InitTranslationTables(void) V_LoadTintTable(); // Allocate translation tables - translationtables = Z_Malloc(256 * 3 * (MAXPLAYERS - 1), PU_STATIC, 0); + translationtables = Z_Malloc(256 * 3 * (maxplayers - 1), PU_STATIC, 0); - for (i = 0; i < 3 * (MAXPLAYERS - 1); i++) + for (i = 0; i < 3 * (maxplayers - 1); i++) { lumpnum = W_GetNumForName("trantbl0") + i; transLump = W_CacheLumpNum(lumpnum, PU_STATIC); diff --git a/src/hexen/r_things.c b/src/hexen/r_things.c index aae6dc60..9d1cb6b5 100644 --- a/src/hexen/r_things.c +++ b/src/hexen/r_things.c @@ -388,7 +388,7 @@ void R_DrawVisSprite(vissprite_t * vis, int x1, int x2) { colfunc = R_DrawTranslatedTLColumn; dc_translation = translationtables - 256 - + vis->class * ((MAXPLAYERS - 1) * 256) + + + vis->class * ((maxplayers - 1) * 256) + ((vis->mobjflags & MF_TRANSLATION) >> (MF_TRANSSHIFT - 8)); } else if (vis->mobjflags & MF_SHADOW) @@ -405,7 +405,7 @@ void R_DrawVisSprite(vissprite_t * vis, int x1, int x2) // Draw using translated column function colfunc = R_DrawTranslatedColumn; dc_translation = translationtables - 256 - + vis->class * ((MAXPLAYERS - 1) * 256) + + + vis->class * ((maxplayers - 1) * 256) + ((vis->mobjflags & MF_TRANSLATION) >> (MF_TRANSSHIFT - 8)); } diff --git a/src/hexen/sb_bar.c b/src/hexen/sb_bar.c index bcc5b675..3846f4c6 100644 --- a/src/hexen/sb_bar.c +++ b/src/hexen/sb_bar.c @@ -303,6 +303,34 @@ void SB_Init(void) PatchKILLS = W_CacheLumpName("KILLS", PU_STATIC); } SB_SetClassData(); + + if (gamemode == shareware) + { + CheatGodSeq = (cheatseq_t) CHEAT("bgokey", 0); + CheatNoClipSeq = (cheatseq_t) CHEAT("rjohnson", 0); + CheatWeaponsSeq = (cheatseq_t) CHEAT("crhinehart", 0); + CheatHealthSeq = (cheatseq_t) CHEAT("sgurno", 0); + CheatKeysSeq = (cheatseq_t) CHEAT("mraymondjudy", 0); + CheatSoundSeq = (cheatseq_t) CHEAT("kschilder", 0); + CheatTickerSeq = (cheatseq_t) CHEAT("rrettenmund", 0); + CheatArtifactAllSeq = (cheatseq_t) CHEAT("braffel", 0); + CheatPuzzleSeq = (cheatseq_t) CHEAT("tmoore", 0); + CheatWarpSeq = (cheatseq_t) CHEAT("bpelletier", 2); + CheatPigSeq = (cheatseq_t) CHEAT("ebiessman", 0); + CheatMassacreSeq = (cheatseq_t) CHEAT("cstika", 0); + CheatIDKFASeq = (cheatseq_t) CHEAT("rambo", 0); + CheatQuickenSeq1 = (cheatseq_t) CHEAT("quicken", 0); + CheatQuickenSeq2 = (cheatseq_t) CHEAT("quickenquicken", 0); + CheatQuickenSeq3 = (cheatseq_t) CHEAT("quickenquickenquicken", 0); + CheatClass1Seq = (cheatseq_t) CHEAT("plipo", 0); + CheatClass2Seq = (cheatseq_t) CHEAT("plipo", 1); + CheatVersionSeq = (cheatseq_t) CHEAT("pmacarther", 0); + CheatDebugSeq = (cheatseq_t) CHEAT("jsumwalt", 0); + CheatScriptSeq1 = (cheatseq_t) CHEAT("mwagabaza", 0); + CheatScriptSeq2 = (cheatseq_t) CHEAT("mwagabaza", 1); + CheatScriptSeq3 = (cheatseq_t) CHEAT("mwagabaza", 2); + CheatRevealSeq = (cheatseq_t) CHEAT("reveal", 0); + } } //========================================================================== @@ -330,12 +358,12 @@ void SB_SetClassData(void) if (!netgame) { // single player game uses red life gem (the second gem) PatchLIFEGEM = W_CacheLumpNum(W_GetNumForName("lifegem") - + MAXPLAYERS * class + 1, PU_STATIC); + + maxplayers * class + 1, PU_STATIC); } else { PatchLIFEGEM = W_CacheLumpNum(W_GetNumForName("lifegem") - + MAXPLAYERS * class + consoleplayer, + + maxplayers * class + consoleplayer, PU_STATIC); } SB_state = -1; @@ -1024,7 +1052,7 @@ void DrawMainBar(void) if (deathmatch) { temp = 0; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { temp += CPlayer->frags[i]; } @@ -1351,7 +1379,7 @@ void DrawFullScreenStuff(void) if (deathmatch) { temp = 0; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (playeringame[i]) { diff --git a/src/hexen/sv_save.c b/src/hexen/sv_save.c index b210ad9d..7837b837 100644 --- a/src/hexen/sv_save.c +++ b/src/hexen/sv_save.c @@ -416,7 +416,7 @@ static void StreamIn_player_t(player_t *str) str->pieces = GET_LONG; // signed int frags[MAXPLAYERS]; - for (i=0; i<MAXPLAYERS; ++i) + for (i=0; i<maxplayers; ++i) { str->frags[i] = GET_LONG; } @@ -585,7 +585,7 @@ static void StreamOut_player_t(player_t *str) StreamOutLong(str->pieces); // signed int frags[MAXPLAYERS]; - for (i=0; i<MAXPLAYERS; ++i) + for (i=0; i<maxplayers; ++i) { StreamOutLong(str->frags[i]); } @@ -2081,7 +2081,7 @@ void SV_LoadGame(int slot) Z_Free(SaveBuffer); // Save player structs - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { playerBackup[i] = players[i]; } @@ -2095,7 +2095,7 @@ void SV_LoadGame(int slot) // Restore player structs inv_ptr = 0; curpos = 0; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { mobj = players[i].mo; players[i] = playerBackup[i]; @@ -2170,7 +2170,7 @@ void SV_MapTeleport(int map, int position) // Store player structs for later rClass = randomclass; randomclass = false; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { playerBackup[i] = players[i]; } @@ -2194,7 +2194,7 @@ void SV_MapTeleport(int map, int position) G_InitNew(gameskill, gameepisode, gamemap); // Destroy all freshly spawned players - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (playeringame[i]) { @@ -2205,7 +2205,7 @@ void SV_MapTeleport(int map, int position) // Restore player structs targetPlayerMobj = NULL; - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (!playeringame[i]) { @@ -2286,7 +2286,7 @@ void SV_MapTeleport(int map, int position) } // Destroy all things touching players - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (playeringame[i]) { @@ -2403,11 +2403,11 @@ static void ArchivePlayers(void) int i; StreamOutLong(ASEG_PLAYERS); - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { StreamOutByte(playeringame[i]); } - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (!playeringame[i]) { @@ -2429,11 +2429,11 @@ static void UnarchivePlayers(void) int i; AssertSegment(ASEG_PLAYERS); - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { playeringame[i] = GET_BYTE; } - for (i = 0; i < MAXPLAYERS; i++) + for (i = 0; i < maxplayers; i++) { if (!playeringame[i]) { @@ -2968,7 +2968,7 @@ static void ArchiveMisc(void) int ix; StreamOutLong(ASEG_MISC); - for (ix = 0; ix < MAXPLAYERS; ix++) + for (ix = 0; ix < maxplayers; ix++) { StreamOutLong(localQuakeHappening[ix]); } @@ -2985,7 +2985,7 @@ static void UnarchiveMisc(void) int ix; AssertSegment(ASEG_MISC); - for (ix = 0; ix < MAXPLAYERS; ix++) + for (ix = 0; ix < maxplayers; ix++) { localQuakeHappening[ix] = GET_LONG; } |