--- bzfs-orig.cxx 2004-11-08 15:21:21.327105952 +0200 +++ bzfs.cxx 2004-11-08 19:16:50.298175864 +0200 @@ -3292,7 +3292,13 @@ removePlayer(playerIndex, "ComputerPlayer"); return; } + char reply[MessageLen] = {0}; + if (player[playerIndex].lastState.pos[2]<=50 && player[playerIndex].lastState.pos[2]>0 && player[playerIndex].wasFalling) { + sprintf(reply,"%s has exploded at %0.1f meters over ground", player[playerIndex].callSign, player[playerIndex].lastState.pos[2]); + sendMessage(ServerPlayer, AllPlayers, reply,true); + } + // player is coming alive. player[playerIndex].state = PlayerAlive; player[playerIndex].flag = -1; @@ -3302,6 +3308,7 @@ float pos[3], fwd; getSpawnLocation(playerIndex, pos, &fwd); // update last position immediately + player[playerIndex].wasFalling = false; player[playerIndex].lastState.pos[0] = pos[0]; player[playerIndex].lastState.pos[1] = pos[1]; player[playerIndex].lastState.pos[2] = pos[2]; @@ -3473,6 +3480,9 @@ if (winningTeam != (int)NoTeam) checkTeamScore(killerIndex, winningTeam); } + if (victim->lastState.status&0x0040 && victim->lastState.velocity[2] < -40) + victim->wasFalling=true; + } static void grabFlag(int playerIndex, int flagIndex) --- PlayerInfo-orig.h 2004-02-27 17:38:17.000000000 +0200 +++ PlayerInfo.h 2004-11-08 19:10:02.831120272 +0200 @@ -104,6 +104,8 @@ TeamColor team; // true for dead rabbit until respawn bool wasRabbit; + // falling before blowing + bool wasFalling; // flag index player has int flag; // player's score