diff --git a/src/d_main.cpp b/src/d_main.cpp index 2670dcf4..50311c82 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -158,7 +158,6 @@ EXTERN_CVAR (Bool, sv_unlimited_pickup) extern int testingmode; extern bool setmodeneeded; -extern bool netdemo; extern int NewWidth, NewHeight, NewBits, DisplayBits; EXTERN_CVAR (Bool, st_scale) extern bool gameisdead; diff --git a/src/g_doom/a_bossbrain.cpp b/src/g_doom/a_bossbrain.cpp index 8b6678af..a99ef932 100644 --- a/src/g_doom/a_bossbrain.cpp +++ b/src/g_doom/a_bossbrain.cpp @@ -79,16 +79,22 @@ DEFINE_ACTION_FUNCTION(AActor, A_BrainDie) // New dmflag: Kill all boss spawned monsters before ending the level. if (dmflags2 & DF2_KILLBOSSMONST) { - TThinkerIterator it; - AActor *mo; - while ((mo = it.Next())) + int count; // Repeat until we have no more boss-spawned monsters. + do // (e.g. Pain Elementals can spawn more to kill upon death.) { - if (mo->flags4 & MF4_BOSSSPAWNED) + TThinkerIterator it; + AActor *mo; + count = 0; + while ((mo = it.Next())) { - P_DamageMobj(mo, self, self, mo->health, NAME_None, - DMG_NO_ARMOR|DMG_FORCED|DMG_THRUSTLESS|DMG_NO_FACTOR); + if (mo->health > 0 && mo->flags4 & MF4_BOSSSPAWNED) + { + P_DamageMobj(mo, self, self, mo->health, NAME_None, + DMG_NO_ARMOR|DMG_FORCED|DMG_THRUSTLESS|DMG_NO_FACTOR); + count++; + } } - } + } while (count != 0); } G_ExitLevel (0, false); diff --git a/src/g_doom/a_painelemental.cpp b/src/g_doom/a_painelemental.cpp index 55451a89..db7d8302 100644 --- a/src/g_doom/a_painelemental.cpp +++ b/src/g_doom/a_painelemental.cpp @@ -111,6 +111,8 @@ void A_PainShootSkull (AActor *self, angle_t angle, const PClass *spawntype, int other = Spawn (spawntype, x, y, z, ALLOW_REPLACE); + // Transfer boss-spawned flag + other->flags4 |= self->flags4 & MF4_BOSSSPAWNED; // Check to see if the new Lost Soul's z value is above the // ceiling of its new sector, or below the floor. If so, kill it. diff --git a/src/g_game.cpp b/src/g_game.cpp index 6163ee0d..fd8489f9 100644 --- a/src/g_game.cpp +++ b/src/g_game.cpp @@ -164,7 +164,6 @@ CVAR(Bool, demo_compress, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG); FString demoname; bool demorecording; bool demoplayback; -bool netdemo; bool demonew; // [RH] Only used around G_InitNew for demos int demover; BYTE* demobuffer; @@ -1131,7 +1130,7 @@ void G_Ticker () Printf ("%s is turbo!\n", players[i].userinfo.netname); } - if (netgame && !players[i].isbot && !netdemo && (gametic%ticdup) == 0) + if (netgame && !players[i].isbot && !demoplayback && (gametic%ticdup) == 0) { //players[i].inconsistant = 0; if (gametic > BACKUPTICS*ticdup && consistancy[i][buf] != cmd->consistancy) @@ -2503,7 +2502,7 @@ bool G_ProcessIFFDemo (char *mapname) } if (numPlayers > 1) - multiplayer = netgame = netdemo = true; + multiplayer = netgame = true; if (uncompSize > 0) { @@ -2641,7 +2640,6 @@ bool G_CheckDemoStatus (void) P_SetupWeapons_ntohton(); demoplayback = false; - netdemo = false; netgame = false; multiplayer = false; singletics = false; diff --git a/src/g_level.cpp b/src/g_level.cpp index 24c43def..27be03b0 100644 --- a/src/g_level.cpp +++ b/src/g_level.cpp @@ -114,7 +114,6 @@ extern bool timingdemo; int starttime; -extern bool netdemo; extern FString BackupSaveName; bool savegamerestore; @@ -230,7 +229,6 @@ void G_NewInit () G_ClearSnapshots (); SB_state = screen->GetPageCount (); netgame = false; - netdemo = false; multiplayer = false; if (demoplayback) { diff --git a/src/g_shared/shared_hud.cpp b/src/g_shared/shared_hud.cpp index 5bdca34e..051aae14 100644 --- a/src/g_shared/shared_hud.cpp +++ b/src/g_shared/shared_hud.cpp @@ -899,18 +899,18 @@ void DrawHUD() if (am_showtime) { - seconds = level.time /TICRATE; - mysnprintf(printstr, countof(printstr), "%02i:%02i:%02i", seconds/3600, (seconds%3600)/60, seconds%60); - DrawHudText(SmallFont, hudcolor_time, printstr, hudwidth-length, bottom, FRACUNIT); - bottom -= fonth; - - // Single level time for hubs if (level.clusterflags&CLUSTER_HUB) { - seconds= level.maptime /TICRATE; + seconds = level.time /TICRATE; mysnprintf(printstr, countof(printstr), "%02i:%02i:%02i", seconds/3600, (seconds%3600)/60, seconds%60); - DrawHudText(SmallFont, hudcolor_ltim, printstr, hudwidth-length, bottom, FRACUNIT); + DrawHudText(SmallFont, hudcolor_time, printstr, hudwidth-length, bottom, FRACUNIT); + bottom -= fonth; } + + // Single level time for hubs + seconds= level.maptime /TICRATE; + mysnprintf(printstr, countof(printstr), "%02i:%02i:%02i", seconds/3600, (seconds%3600)/60, seconds%60); + DrawHudText(SmallFont, hudcolor_ltim, printstr, hudwidth-length, bottom, FRACUNIT); } ST_FormatMapName(mapname); diff --git a/src/menu/menu.cpp b/src/menu/menu.cpp index dec0a424..e07bc142 100644 --- a/src/menu/menu.cpp +++ b/src/menu/menu.cpp @@ -409,7 +409,7 @@ void M_SetMenu(FName menu, int param) FMenuDescriptor **desc = MenuDescriptors.CheckKey(menu); if (desc != NULL) { - if ((*desc)->mNetgameMessage.IsNotEmpty() && netgame) + if ((*desc)->mNetgameMessage.IsNotEmpty() && netgame && !demoplayback) { M_StartMessage((*desc)->mNetgameMessage, 1); return; diff --git a/src/menu/menudef.cpp b/src/menu/menudef.cpp index 98b1dc34..0d9b8998 100644 --- a/src/menu/menudef.cpp +++ b/src/menu/menudef.cpp @@ -1135,7 +1135,7 @@ static void BuildPlayerclassMenu() od->mScrollTop = 0; od->mIndent = 160; od->mDontDim = false; - od->mNetgameMessage = "$NETGAME"; + od->mNetgameMessage = "$NEWGAME"; for (unsigned i = 0; i < PlayerClasses.Size (); i++) { diff --git a/src/p_floor.cpp b/src/p_floor.cpp index f1de1cf9..1d6eb4cd 100644 --- a/src/p_floor.cpp +++ b/src/p_floor.cpp @@ -373,18 +373,13 @@ manual_floor: floor->m_Direction = (floor->m_FloorDestDist > sec->floorplane.d) ? -1 : 1; break; - case DFloor::floorRaiseAndCrush: - floor->m_Crush = crush; case DFloor::floorRaiseToLowestCeiling: floor->m_Direction = 1; newheight = sec->FindLowestCeilingSurrounding (&spot); - if (floortype == DFloor::floorRaiseAndCrush) - newheight -= 8 * FRACUNIT; ceilingheight = sec->FindLowestCeilingPoint (&spot2); floor->m_FloorDestDist = sec->floorplane.PointToDist (spot, newheight); if (sec->floorplane.ZatPointDist (spot2, floor->m_FloorDestDist) > ceilingheight) - floor->m_FloorDestDist = sec->floorplane.PointToDist (spot2, - floortype == DFloor::floorRaiseAndCrush ? ceilingheight - 8*FRACUNIT : ceilingheight); + floor->m_FloorDestDist = sec->floorplane.PointToDist (spot2, ceilingheight); break; case DFloor::floorRaiseToHighest: @@ -405,6 +400,13 @@ manual_floor: floor->m_FloorDestDist = sec->floorplane.PointToDist (spot, newheight); break; + case DFloor::floorRaiseAndCrush: + floor->m_Crush = crush; + floor->m_Direction = 1; + newheight = sec->FindLowestCeilingPoint (&spot) - 8*FRACUNIT; + floor->m_FloorDestDist = sec->floorplane.PointToDist (spot, newheight); + break; + case DFloor::floorRaiseToCeiling: floor->m_Direction = 1; newheight = sec->FindLowestCeilingPoint (&spot); diff --git a/src/p_pspr.cpp b/src/p_pspr.cpp index 25c3e964..54b56937 100644 --- a/src/p_pspr.cpp +++ b/src/p_pspr.cpp @@ -552,10 +552,10 @@ void DoReadyWeapon(AActor * self) enum EWRF_Options { WRF_NoBob = 1, - WRF_NoFire = 12, WRF_NoSwitch = 2, WRF_NoPrimary = 4, WRF_NoSecondary = 8, + WRF_NoFire = WRF_NoPrimary + WRF_NoSecondary, WRF_AllowReload = 16, WRF_AllowZoom = 32, }; @@ -565,11 +565,11 @@ DEFINE_ACTION_FUNCTION_PARAMS(AInventory, A_WeaponReady) ACTION_PARAM_START(1); ACTION_PARAM_INT(paramflags, 0); - if (!(paramflags & WRF_NoSwitch)) DoReadyWeaponToSwitch(self); - if (!(paramflags & WRF_NoFire)) DoReadyWeaponToFire(self, !(paramflags & WRF_NoPrimary), !(paramflags & WRF_NoSecondary)); - if (!(paramflags & WRF_NoBob)) DoReadyWeaponToBob(self); - if ((paramflags & WRF_AllowReload)) DoReadyWeaponToReload(self); - if ((paramflags & WRF_AllowZoom)) DoReadyWeaponToZoom(self); + if (!(paramflags & WRF_NoSwitch)) DoReadyWeaponToSwitch(self); + if ((paramflags & WRF_NoFire) != WRF_NoFire) DoReadyWeaponToFire(self, !(paramflags & WRF_NoPrimary), !(paramflags & WRF_NoSecondary)); + if (!(paramflags & WRF_NoBob)) DoReadyWeaponToBob(self); + if ((paramflags & WRF_AllowReload)) DoReadyWeaponToReload(self); + if ((paramflags & WRF_AllowZoom)) DoReadyWeaponToZoom(self); } //--------------------------------------------------------------------------- @@ -779,7 +779,7 @@ DEFINE_ACTION_FUNCTION(AInventory, A_Lower) return; } psp = &player->psprites[ps_weapon]; - if (player->morphTics || player->WeaponState & CF_INSTANTWEAPSWITCH) + if (player->morphTics || player->cheats & CF_INSTANTWEAPSWITCH) { psp->sy = WEAPONBOTTOM; } diff --git a/src/svnrevision.h b/src/svnrevision.h index d006a0c9..e0c16b28 100644 --- a/src/svnrevision.h +++ b/src/svnrevision.h @@ -3,5 +3,5 @@ // This file was automatically generated by the // updaterevision tool. Do not edit by hand. -#define ZD_SVN_REVISION_STRING "4045" -#define ZD_SVN_REVISION_NUMBER 4045 +#define ZD_SVN_REVISION_STRING "4055" +#define ZD_SVN_REVISION_NUMBER 4055 diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 7e809085..a8793241 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -117,11 +117,11 @@ ListMenu "PlayerclassMenu" { IfGame(Doom, Heretic, Hexen, Strife) { - NetgameMessage "$NETGAME" + NetgameMessage "$NEWGAME" } IfGame(Chex) { - NetgameMessage "$CNETGAME" + NetgameMessage "$CNEWGAME" } IfGame(Doom, Strife, Chex) @@ -159,11 +159,11 @@ ListMenu "EpisodeMenu" { IfGame(Doom, Heretic, Hexen, Strife) { - NetgameMessage "$NETGAME" + NetgameMessage "$NEWGAME" } IfGame(Chex) { - NetgameMessage "$CNETGAME" + NetgameMessage "$CNEWGAME" } IfGame(Doom, Chex) @@ -802,8 +802,8 @@ OptionMenu "AltHUDOptions" StaticText " " StaticText "Alternative Automap HUD", 1 option "Map title color", "hudcolor_titl", "TextColors" - option "Hub time color", "hudcolor_time", "TextColors" option "Map time color", "hudcolor_ltim", "TextColors" + option "Hub time color", "hudcolor_time", "TextColors" option "Total time color", "hudcolor_ttim", "TextColors" option "Coordinate color", "hudcolor_xyco", "TextColors" option "Coordinate mode", "map_point_coordinates", "AMCoordinates"