@ -12,10 +12,10 @@ draw_player (_player * player)
dest ;
int i ;
if ( ( player - > pos . x > > 8 ) < 0 | | ( player - > pos . x > > 8 ) > = map . size . x | |
( player - > pos . y > > 8 ) < 0 | | ( player - > pos . y > > 8 ) > = map . size . y ) {
d_printf ( " FATAL: Draw Player out of range : [% d,%d]\n " , ( player - > pos . x > > 8 ) ,
( player - > pos . y > > 8 ) ) ;
if ( ( int ) player - > pos . x < 0 | | ( int ) player - > pos . x > = map . size . x | |
( int ) player - > pos . y < 0 | | ( int ) player - > pos . y > = map . size . y ) {
d_printf ( " FATAL: Draw Player out of range : [% f,%f]\n " , player - > pos . x ,
player - > pos . y ) ;
return ;
}
@ -24,15 +24,13 @@ draw_player (_player * player)
dest . w = src . w = player - > gfx - > ani . w ;
dest . h = src . h = player - > gfx - > ani . h ;
dest . x =
gfx . offset . x + player - > gfx - > offset . x + ( player - > pos . x > > 8 ) * gfx . block . x +
gfx . postab [ player - > pos . x & 255 ] ;
gfx . offset . x + player - > gfx - > offset . x + player - > pos . x * gfx . block . x ;
dest . y =
gfx . offset . y + player - > gfx - > offset . y + ( player - > pos . y > > 8 ) * gfx . block . y +
gfx . postab [ player - > pos . y & 255 ] ;
gfx . offset . y + player - > gfx - > offset . y + player - > pos . y * gfx . block . y ;
src . x = player - > d * player - > gfx - > ani . w ;
src . y = player - > frame * player - > gfx - > ani . h ;
gfx_blit ( player - > gfx - > ani . image , & src , gfx . screen , & dest , player - > pos . y + 128 ) ;
gfx_blit ( player - > gfx - > ani . image , & src , gfx . screen , & dest , ( player - > pos . y * 256 ) + 128 ) ;
/* if the player is ill, draw this image above him */
if ( PS_IS_alife ( player - > state ) ) {
@ -43,12 +41,10 @@ draw_player (_player * player)
src . x = 0 ;
src . y = ( 2 * gfx . block . y ) * player - > illframe ;
dest . x =
( - ( gfx . block . x > > 1 ) ) + gfx . offset . x + ( player - > pos . x > > 8 ) * gfx . block . x +
gfx . postab [ player - > pos . x & 255 ] ;
gfx . offset . x + ( ( player - > pos . x - 0.5f ) * gfx . block . x ) ;
dest . y =
gfx . offset . y + ( ( player - > pos . y > > 8 ) - 1 ) * gfx . block . y +
gfx . postab [ player - > pos . y & 255 ] ;
gfx_blit ( gfx . ill . image , & src , gfx . screen , & dest , player - > pos . y + 129 ) ;
gfx . offset . y + ( ( player - > pos . y - 1.0f ) * gfx . block . y ) ;
gfx_blit ( gfx . ill . image , & src , gfx . screen , & dest , ( player - > pos . y * 256 ) + 129 ) ;
}
}
}
@ -59,11 +55,9 @@ draw_player (_player * player)
dest . h = src . h = player - > gfx - > ani . h ;
dest . x =
gfx . offset . x + player - > gfx - > offset . x + ( player - > pos . x > > 8 ) * gfx . block . x +
gfx . postab [ player - > pos . x & 255 ] ;
gfx . offset . x + player - > gfx - > offset . x + player - > pos . x * gfx . block . x ;
dest . y =
gfx . offset . y + player - > gfx - > offset . y + ( player - > pos . y > > 8 ) * gfx . block . y +
gfx . postab [ player - > pos . y & 255 ] ;
gfx . offset . y + player - > gfx - > offset . y + player - > pos . y * gfx . block . y ;
src . x = 0 ;
src . y = ( 2 * gfx . block . y ) * player - > frame ;
@ -86,31 +80,34 @@ restore_players_screen ()
ye ;
for ( i = 0 ; i < MAX_PLAYERS ; i + + )
if ( ( PS_IS_used ( bman . players [ i ] . state ) ) & & bman . players [ i ] . old . x != - 1 ) {
if ( ( PS_IS_used ( bman . players [ i ] . state ) ) & & bman . players [ i ] . old . x >= 0.0f ) {
if ( ( bman . players [ i ] . old . x >> 8 ) < 0 | | ( bman . players [ i ] . old . x > > 8 ) > = map . size . x
| | ( bman . players [ i ] . old . y >> 8 ) < 0 | | ( bman . players [ i ] . old . y > > 8 ) > = map . size . y )
d_printf ( " FATAL: Restore Player out of range : playernr %d [% d,%d ]\n " , i ,
( bman . players [ i ] . old . x > > 8 ) , ( bman . players [ i ] . old . y > > 8 ) ) ;
if ( bman . players [ i ] . old . x < 0.0f | | bman . players [ i ] . old . x > = map . size . x
| | bman . players [ i ] . old . y < 0.0f | | bman . players [ i ] . old . y > = map . size . y )
d_printf ( " FATAL: Restore Player out of range : playernr %d [% f,%f ]\n " , i ,
bman . players [ i ] . old . x , bman . players [ i ] . old . y ) ;
else {
if ( ( bman . players [ i ] . old . x & 0xFF ) > 128 ) {
x = ( bman . players [ i ] . old . x > > 8 ) ;
xe = ( bman . players [ i ] . old . x > > 8 ) + 2 ;
// start and end position for the stones to redraw X Position
if ( CUTINT ( bman . players [ i ] . old . x ) > 0.5f ) {
x = bman . players [ i ] . old . x ;
xe = bman . players [ i ] . old . x + 2 ;
}
else {
x = ( bman . players [ i ] . old . x > > 8 ) - 1 ;
xe = ( bman . players [ i ] . old . x > > 8 ) + 1 ;
x = bman . players [ i ] . old . x - 1 ;
xe = bman . players [ i ] . old . x + 1 ;
}
if ( x < 0 )
x = 0 ;
if ( xe > = map . size . x )
xe = map . size . x - 1 ;
ys = ( bman . players [ i ] . old . y > > 8 ) - 1 ;
ye = ( bman . players [ i ] . old . y > > 8 ) + 1 ;
// start and end position for the stones to redraw X Position
ys = bman . players [ i ] . old . y - 1 ;
ye = bman . players [ i ] . old . y + 1 ;
if ( ys < 0 )
ys = 0 ;
if ( ye > = map . size . y )
ye = map . size . y - 1 ;
// redrawing of the stone
xs = x ;
for ( ; x < = xe ; x + + )
for ( y = ys ; y < = ye ; y + + )
@ -124,10 +121,8 @@ void
player_check_powerup ( int p_nr )
{
_player * p = & bman . players [ p_nr ] ;
int fx = p - > pos . x > > 8 ;
int fy = p - > pos . y > > 8 ;
int _x = p - > pos . x & 255 ;
int _y = p - > pos . y & 255 ;
int fx = p - > pos . x ;
int fy = p - > pos . y ;
int ft ,
i ;
@ -135,11 +130,12 @@ player_check_powerup (int p_nr)
return ;
/* Get the right field position */
if ( _x > 128 )
if ( CUTINT( p - > pos . x ) > 0.5 )
fx = fx + 1 ;
if ( _y > 128 )
if ( CUTINT( p - > pos . y ) > 0.5 )
fy = fy + 1 ;
ft = map . field [ fx ] [ fy ] . type ;
/* we found a mixed powerup */
if ( ft = = FT_mixed ) {
i = s_random ( 6 ) ;
@ -232,59 +228,55 @@ stepmove_player (int pl_nr)
_point bomb1 [ MAX_PLAYERS * MAX_BOMBS ] ,
bomb2 [ MAX_PLAYERS * MAX_BOMBS ] ;
_player * p = & bman . players [ pl_nr ] ;
int speed = 0 ,
i ,
int i ,
j ,
f ;
_point fpos , // field position
_pointf _pos , // position inside the field
d ; // distance to move
float speed = 0.0f ;
_pos , // position inside the field
d ;
if ( p - > m = = 1 ) {
fpos . x = p - > pos . x > > 8 ;
fpos . y = p - > pos . y > > 8 ;
_pos . x = p - > pos . x & 255 ;
_pos . y = p - > pos . y & 255 ;
_pos . x = CUTINT ( p - > pos . x ) ;
_pos . y = CUTINT ( p - > pos . y ) ;
// do direction correction for going up/down
if ( _pos . x > 0 & & _pos . x < = 128 & & ( p - > d = = up | | p - > d = = down ) )
if ( _pos . x > 0.0f & & _pos . x < = 0.5f & & ( p - > d = = up | | p - > d = = down ) )
p - > d = left ;
if ( _pos . x > 128 & & _pos . x < 256 & & ( p - > d = = up | | p - > d = = down ) )
if ( _pos . x > 0.5f & & _pos . x < 1.0f & & ( p - > d = = up | | p - > d = = down ) )
p - > d = right ;
// do direction correction for left/right
if ( _pos . y > 0 & & _pos . y < = 128 & & ( p - > d = = left | | p - > d = = right ) )
if ( _pos . y > 0.0f & & _pos . y < = 0.5f & & ( p - > d = = left | | p - > d = = right ) )
p - > d = up ;
if ( _pos . y > 128 & & _pos . y < 256 & & ( p - > d = = left | | p - > d = = right ) )
if ( _pos . y > 0.5f & & _pos . y < 1.0f & & ( p - > d = = left | | p - > d = = right ) )
p - > d = down ;
/* get the distance/speed until we reach the next position */
if ( p - > d = = left )
speed = _pos . x ;
else if ( p - > d = = right )
speed = 256 - _pos . x ;
speed = 1.0f - _pos . x ;
else if ( p - > d = = up )
speed = _pos . y ;
else
speed = 256 - _pos . y ;
speed = 1.0f - _pos . y ;
if ( speed > p - > speed | | speed = = 0 )
speed = p - > speed ;
if ( speed > ( p - > speed * timefactor ) | | speed = = 0 )
speed = p - > speed * timefactor ;
// check the new field position
d . x = d . y = 0 ;
if ( p - > d = = left & & _pos . y = = 0
& & ( ( _pos . x = = 0 & & check_field ( fpos . x - 1 , f pos. y ) ) | | ( _pos . x > 0 ) ) )
d . x = d . y = 0.0f ;
if ( p - > d = = left & & _pos . y = = 0.0f
& & ( ( _pos . x = = 0.0f & & check_field ( p - > pos . x - 1.0f , p - > pos. y ) ) | | ( _pos . x > 0.0f ) ) )
d . x = - speed ;
if ( p - > d = = right & & _pos . y = = 0
& & ( ( _pos . x = = 0 & & check_field ( fpos . x + 1 , f pos. y ) ) | | ( _pos . x > 0 ) ) )
if ( p - > d = = right & & _pos . y = = 0.0f
& & ( ( _pos . x = = 0.0f & & check_field ( p - > pos . x + 1.0f , p - > pos. y ) ) | | ( _pos . x > 0.0f ) ) )
d . x = speed ;
if ( p - > d = = up & & _pos . x = = 0
& & ( ( _pos . y = = 0 & & check_field ( fpos . x , fpos . y - 1 ) ) | | ( _pos . y > 0 ) ) )
if ( p - > d = = up & & _pos . x = = 0.0f
& & ( ( _pos . y = = 0.0f & & check_field ( p - > pos . x , p - > pos . y - 1.0f ) ) | | ( _pos . y > 0.0f ) ) )
d . y = - speed ;
if ( p - > d = = down & & _pos . x = = 0
& & ( ( _pos . y = = 0 & & check_field ( fpos . x , fpos . y + 1 ) ) | | ( _pos . y > 0 ) ) )
if ( p - > d = = down & & _pos . x = = 0.0f
& & ( ( _pos . y = = 0.0f & & check_field ( p - > pos . x , p - > pos . y + 1.0f ) ) | | ( _pos . y > 0.0f ) ) )
d . y = speed ;
// check if we can move and if there is any bomb
@ -294,7 +286,7 @@ stepmove_player (int pl_nr)
if ( bomb1 [ 0 ] . x = = - 1 & & bomb2 [ 0 ] . x ! = - 1 )
/* old pos no bomb, new pos no bomb */
d . x = d . y = 0 ;
d . x = d . y = 0.0f ;
else if ( bomb2 [ 0 ] . x ! = - 1 ) {
/* new pos bomb, old pos bomb... check if it's the same
use f to save if we found the bomb or not
@ -305,7 +297,7 @@ stepmove_player (int pl_nr)
/* identical bomb found ... f = 1 */
f = 1 ;
if ( f = = 0 )
d . x = d . y = 0 ;
d . x = d . y = 0.0f ;
}
}
@ -314,39 +306,34 @@ stepmove_player (int pl_nr)
player_check_powerup ( pl_nr ) ;
fpos . x = p - > pos . x > > 8 ;
fpos . y = p - > pos . y > > 8 ;
_pos . x = p - > pos . x & 255 ;
_pos . y = p - > pos . y & 255 ;
_pos . x = CUTINT ( p - > pos . x ) ;
_pos . y = CUTINT ( p - > pos . y ) ;
/* check if we can go though a tunnel */
if ( _pos . x = = 0 & & _pos . y = = 0 & & map . field [ fpos . x ] [ f pos. y ] . type = = FT_tunnel
if ( _pos . x = = 0.0f & & _pos . y = = 0.0f & & map . field [ ( int ) p - > pos . x ] [ ( int ) p - > pos. y ] . type = = FT_tunnel
& & p - > tunnelto = = - 1 ) {
d_printf ( " Tunnel [%d] Player %s is going to (%d,%d) \n " ,
map . field [ fpos . x ] [ f pos. y ] . special , p - > name ,
map . tunnel [ map . field [ fpos . x ] [ f pos. y ] . special ] . x ,
map . tunnel [ map . field [ fpos . x ] [ f pos. y ] . special ] . y ) ;
d . x = d . y = 0 ;
map . field [ ( int ) p - > pos . x ] [ ( int ) p - > pos. y ] . special , p - > name ,
map . tunnel [ map . field [ ( int ) p - > pos . x ] [ ( int ) p - > pos. y ] . special ] . x ,
map . tunnel [ map . field [ ( int ) p - > pos . x ] [ ( int ) p - > pos. y ] . special ] . y ) ;
d . x = d . y = 0.0f ;
if ( map .
bfield [ map . tunnel [ map . field [ fpos . x ] [ fpos . y ] . special ] . x ] [ map .
tunnel [ map .
field [ fpos . x ] [ fpos .
y ] .
special ] . y ] )
bfield [ map . tunnel [ map . field [ ( int ) p - > pos . x ] [ ( int ) p - > pos . y ] . special ] . x ]
[ map . tunnel [ map . field [ ( int ) p - > pos . x ] [ ( int ) p - > pos . y ] . special ] . y ] )
d_printf ( " *** End of tunnel is with an bomb. \n " ) ;
else {
p - > pos . x = map . tunnel [ map . field [ fpos . x ] [ f pos. y ] . special ] . x < < 8 ;
p - > pos . y = map . tunnel [ map . field [ fpos . x ] [ f pos. y ] . special ] . y < < 8 ;
p - > pos . x = map . tunnel [ map . field [ ( int ) p - > pos . x ] [ ( int ) p - > pos . y ] . special ] . x < < 8 ;
p - > pos . y = map . tunnel [ map . field [ ( int ) p - > pos . x ] [ ( int ) p - > pos. y ] . special ] . y < < 8 ;
p - > tunnelto = GAME_TUNNEL_TO ;
speed = p - > speed ;
speed = p - > speed * timefactor ;
}
}
}
if ( d . x = = 0 & & d . y = = 0 )
if ( d . x = = 0.0f & & d . y = = 0.0f )
return 0 ;
return ( p - > speed - speed ) ;
return ( p - > speed - ( speed / timefactor ) ) ;
} ;
@ -404,7 +391,7 @@ move_player (int pl_nr)
if ( bman . gametype ! = GT_single )
net_game_send_playermove ( pl_nr , ( p - > old_m = = 0 ) ) ;
if ( p - > tunnelto = = 0 & & ( map . field [ postofield ( p - > pos . x ) ] [ postofield ( p - > pos . y ) ] . type ! = FT_tunnel | | ! field_check_alldirs ( p - > pos . x > > 8 , p - > pos . y > > 8 , FT_nothing ) ) )
if ( p - > tunnelto = = 0 & & ( map . field [ postofield ( p - > pos . x ) ] [ postofield ( p - > pos . y ) ] . type ! = FT_tunnel | | ! field_check_alldirs ( p ostofield( p - > pos . x ) , postofield ( p - > pos . y ) , FT_nothing ) ) )
p - > tunnelto = - 1 ;
}
@ -415,42 +402,28 @@ move_player (int pl_nr)
p - > m = 0 ;
/* check the players position */
if ( ( p- > pos . x & 0xFF ) > EXPLOSION_SAVE_DISTANCE & & ( p - > d = = left | | p - > d = = right ) )
if ( ! check_field ( ( p - > pos . x > > 8 ) + 1 , ( p - > pos . y > > 8 ) ) )
if ( ( CUTINT( p- > pos . x ) > EXPLOSION_SAVE_DISTANCE & & ( p - > d = = left | | p - > d = = right ) )
& & ( ! check_field ( p - > pos . x + 1.0f , p - > pos . y ) ) )
player_died ( p , - 1 ) ;
if ( ( p- > pos . y & 0xFF ) > EXPLOSION_SAVE_DISTANCE & & ( p - > d = = up | | p - > d = = down ) )
if ( ! check_field ( ( p - > pos . x > > 8 ) , ( p - > pos . y >> 8 ) + 1 ) )
if ( ( CUTINT( p- > pos . y ) > EXPLOSION_SAVE_DISTANCE & & ( p - > d = = up | | p - > d = = down ) )
& & ( ! check_field ( p - > pos . x , p - > pos . y + 1.0f ) ) )
player_died ( p , - 1 ) ;
if ( ( ( p - > pos . x & 0xFF ) < ( 0x100 - EXPLOSION_SAVE_DISTANCE )
& & ( p - > d = = left | | p - > d = = right ) )
| | ( ( p - > pos . y & 0xFF ) < ( 0x100 - EXPLOSION_SAVE_DISTANCE )
if ( ( ( CUTINT ( p - > pos . x ) < ( 1.0f - EXPLOSION_SAVE_DISTANCE ) & & ( p - > d = = left | | p - > d = = right ) )
| | ( CUTINT ( p - > pos . y ) < ( 1.0f - EXPLOSION_SAVE_DISTANCE )
& & ( p - > d = = up | | p - > d = = down ) ) )
if ( ! check_field ( p - > pos . x > > 8 , p - > pos . y > > 8 ) )
& & ( ! check_field ( p - > pos . x , p - > pos . y ) ) )
player_died ( p , - 1 ) ;
}
} ;
inline int postofield ( int pos ) {
int rp = pos & 8 ;
if ( rp > 0 & & rp < = 128 )
return ( pos > > 8 ) ;
else
return ( ( pos > > 8 ) + 1 ) ;
}
void
player_drop_bomb ( int pl_nr )
{
_player * player = & bman . players [ pl_nr ] ;
_bomb * bomb = NULL ;
int i ,
_x ,
_y ;
int i ;
_point bombs [ MAX_PLAYERS * MAX_BOMBS ] ;
i = player_findfreebomb ( player ) ;
@ -458,26 +431,8 @@ player_drop_bomb (int pl_nr)
if ( i > = 0 & & i < MAX_BOMBS & & PS_IS_alife ( player - > state ) ) { // free bomb found
// get the best position for the bomb.
bomb = & player - > bombs [ i ] ;
bomb - > pos . x = player - > pos . x > > 8 ;
bomb - > pos . y = player - > pos . y > > 8 ;
_x = player - > pos . x & 255 ;
_y = player - > pos . y & 255 ;
if ( _x > 0 & & _x < = 128 )
_x = 0 ;
else if ( _x > 128 ) {
bomb - > pos . x + = 1 ;
_x = 0 ;
}
if ( _y > 0 & & _y < = 128 )
_y = 0 ;
else if ( _y > 12 ) {
bomb - > pos . y + = 1 ;
_y = 0 ;
}
bomb - > pos . x = bomb - > pos . x < < 8 ;
bomb - > pos . y = bomb - > pos . y < < 8 ;
bomb - > pos . x = rintf ( player - > pos . x ) ;
bomb - > pos . y = rintf ( player - > pos . y ) ;
get_bomb_on ( bomb - > pos . x , bomb - > pos . y , bombs ) ;
if ( bombs [ 0 ] . x ! = - 1 ) // is there already a bomb
@ -495,7 +450,7 @@ player_drop_bomb (int pl_nr)
}
bomb - > mode = BM_normal ;
bomb - > ex_nr = - 1 ;
map . bfield [ bomb - > pos . x > > 8 ] [ bomb - > pos . y > > 8 ] = 1 ;
map . bfield [ ( int ) bomb - > pos . x ] [ ( int ) bomb - > pos . y ] = 1 ;
if ( bman . gametype ! = GT_single ) {
net_game_send_bomb ( pl_nr , i ) ;
if ( GT_MP_PTPS )
@ -511,17 +466,17 @@ player_drop_bomb (int pl_nr)
check the field - 4 pixels from every side . . so it ' s not anymore that tricky to get
away from bombs . . */
void
get_player_on ( short int x , short in t y , int pl_nr [ ] )
get_player_on ( float x , floa t y , int pl_nr [ ] )
{
int i ,
p ;
for ( i = 0 , p = 0 ; p < MAX_PLAYERS ; p + + )
if ( PS_IS_alife ( bman . players [ p ] . state ) & & bman . players [ p ] . tunnelto < = 0 ) {
if ( bman . players [ p ] . pos . x - EXPLOSION_SAVE_DISTANCE > x - 256
& & bman . players [ p ] . pos . x + EXPLOSION_SAVE_DISTANCE < x + 256
& & bman . players [ p ] . pos . y - EXPLOSION_SAVE_DISTANCE > y - 256
& & bman . players [ p ] . pos . y + EXPLOSION_SAVE_DISTANCE < y + 256 ) {
if ( ( bman . players [ p ] . pos . x - EXPLOSION_SAVE_DISTANCE ) > x - 1.0f
& & ( bman . players [ p ] . pos . x + EXPLOSION_SAVE_DISTANCE ) < x + 1.0f
& & ( bman . players [ p ] . pos . y - EXPLOSION_SAVE_DISTANCE ) > y - 1.0f
& & ( bman . players [ p ] . pos . y + EXPLOSION_SAVE_DISTANCE ) < y + 1.0f ) {
pl_nr [ i ] = p ;
i + + ;
}
@ -593,7 +548,6 @@ player_animation (_player * player)
int
dead_playerani ( )
{
int i ,
b = 0 ;
for ( i = 0 ; i < MAX_PLAYERS ; i + + )
@ -609,24 +563,22 @@ dead_playerani ()
void
player_calcstep ( _player * pl )
{
_pointf d ;
_point d ;
int fx ,
fy ;
player_animation ( pl ) ;
fx = pl - > pos . x > > 8 ;
fy = pl - > pos . y > > 8 ;
if ( map. field [ fx ] [ fy ] . type ! = FT_block & & map . field [ fx ] [ fy ] . type ! = FT_stone ) {
d . x = 0 ;
d . y = 0 ;
if ( pl - > d = = left )
d . x = - 16 ;
else if ( pl - > d = = right )
d . x = 16 ;
else if ( pl - > d = = up )
d . y = - 16 ;
else if ( pl - > d = = down )
d . y = 16 ;
d . x = 0 ;
d . y = 0 ;
if ( pl- > d = = left )
d . x = - pl - > speed * timefactor ;
else if ( pl - > d = = right )
d . x = pl - > speed * timefactor ;
else if ( pl - > d = = up )
d . y = - pl - > speed * timefactor ;
else if ( pl - > d = = down )
d . y = pl - > speed * timefactor ;
if ( map . field [ postofield ( pl - > pos . x + d . x ) ] [ postofield ( pl - > pos . y + d . y ) ] . type ! = FT_block
& & map . field [ postofield ( pl - > pos . x + d . x ) ] [ postofield ( pl - > pos . y + d . y ) ] . type ! = FT_stone ) {
pl - > pos . x + = d . x ;
pl - > pos . y + = d . y ;
}
@ -648,22 +600,12 @@ player_calcpos ()
pl = & bman . players [ p ] ;
if ( PS_IS_netplayer ( pl - > state ) & & PS_IS_alife ( pl - > state ) & & pl - > m ! = 0 ) {
if ( pl - > speeddat = = 0 | | pl - > speed = = 1 | | pl - > speed = = 3 )
pl - > speeddat = 1 ;
else
pl - > speeddat = 0 ;
oldm = pl - > m ;
oldd = pl - > d ;
if ( pl - > speed > 1 )
if ( pl - > speed > 0.0 )
stepmove_player ( p ) ;
if ( pl - > speeddat ) {
pl - > m = oldm ;
pl - > d = oldd ;
player_calcstep ( pl ) ;
}
}
}
} ;