diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 37012f1ae..2e176be0a 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,4 +1,10 @@ June 15, 2008 (Changes by Graf Zahl) +- Added a read barrier to player_t::PrewmorphWeapon. +- Fixed: After spawning a deathmatch player P_PlayerStartStomp must + be called. +- Fixed: SpawnThings must check if the players were spawned before + calling P_PlayerStartStomp. +- Fixed typo in flat scroll interpolation. - Changed FImageCollection to return translated texture indices so that animated icons can be done with it. - Changed FImageCollection to use a TArray to hold its data. diff --git a/src/d_player.h b/src/d_player.h index dbe849488..a3865d0cc 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -256,7 +256,7 @@ public: BYTE MorphedPlayerClass; // [MH] (for SBARINFO) class # for this player instance when morphed int MorphStyle; // which effects to apply for this player instance when morphed const PClass *MorphExitFlash; // flash to apply when demorphing (cache of value given to P_MorphPlayer) - AWeapon *PremorphWeapon; // ready weapon before morphing + TObjPtr PremorphWeapon; // ready weapon before morphing int chickenPeck; // chicken peck countdown int jumpTics; // delay the next jump for a moment diff --git a/src/g_game.cpp b/src/g_game.cpp index 7a6d206f3..9b28d939b 100644 --- a/src/g_game.cpp +++ b/src/g_game.cpp @@ -1372,7 +1372,8 @@ void G_DeathMatchSpawnPlayer (int playernum) spot->type = playernum+9100-4; } - P_SpawnPlayer (spot); + AActor *mo = P_SpawnPlayer (spot); + if (mo != NULL) P_PlayerStartStomp(mo); } // @@ -1443,7 +1444,8 @@ void G_DoReborn (int playernum, bool freshbot) if (G_CheckSpot (playernum, &playerstarts[playernum]) ) { - P_SpawnPlayer (&playerstarts[playernum]); + AActor *mo = P_SpawnPlayer (&playerstarts[playernum]); + if (mo != NULL) P_PlayerStartStomp(mo); } else { @@ -1469,13 +1471,15 @@ void G_DoReborn (int playernum, bool freshbot) { playerstarts[i].type = playernum + 4001 - 4; } - P_SpawnPlayer (&playerstarts[i]); + AActor *mo = P_SpawnPlayer (&playerstarts[i]); + if (mo != NULL) P_PlayerStartStomp(mo); playerstarts[i].type = oldtype; // restore return; } // he's going to be inside something. Too bad. } - P_SpawnPlayer (&playerstarts[playernum]); + AActor *mo = P_SpawnPlayer (&playerstarts[playernum]); + if (mo != NULL) P_PlayerStartStomp(mo); } } } diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 51587a539..75144278c 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -1492,7 +1492,7 @@ void P_SpawnThings (int position) } for(int i=0; i