|
|
@ -603,8 +603,11 @@ do_bombdata (struct pkg_bombdata *b_dat, _net_addr * addr)
|
|
|
|
&& b_dat->state != BS_exploding)
|
|
|
|
&& b_dat->state != BS_exploding)
|
|
|
|
d_printf ("do_bombdata WARNING : bomb explosion haven't finished\n");
|
|
|
|
d_printf ("do_bombdata WARNING : bomb explosion haven't finished\n");
|
|
|
|
|
|
|
|
|
|
|
|
if (bomb->state == BS_ticking && b_dat->state == BS_ticking) { // handle push & kick special
|
|
|
|
if ((bomb->state == BS_ticking || bomb->state == BS_trigger) && (b_dat->state == BS_ticking || b_dat->state == BS_trigger)) { // handle push & kick special
|
|
|
|
bman.bfield[(bomb->pos.x >> 8)][(bomb->pos.y >> 8)] = 0; //remove bomb at old location
|
|
|
|
if (bomb->move)
|
|
|
|
|
|
|
|
bman.bfield[(bomb->pos.x >> 8)][(bomb->pos.y >> 8)] = 0; //remove bomb at old location
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
bman.bfield[(bomb->pos.x >> 8)][(bomb->pos.y >> 8)] = 1; //set bomb at position
|
|
|
|
draw_stone (bomb->pos.x >> 8, bomb->pos.y >> 8);
|
|
|
|
draw_stone (bomb->pos.x >> 8, bomb->pos.y >> 8);
|
|
|
|
field_update (bomb->pos.x >> 8, bomb->pos.y >> 8);
|
|
|
|
field_update (bomb->pos.x >> 8, bomb->pos.y >> 8);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -614,10 +617,10 @@ do_bombdata (struct pkg_bombdata *b_dat, _net_addr * addr)
|
|
|
|
|
|
|
|
|
|
|
|
bomb->pos.x = b_dat->x;
|
|
|
|
bomb->pos.x = b_dat->x;
|
|
|
|
bomb->pos.y = b_dat->y;
|
|
|
|
bomb->pos.y = b_dat->y;
|
|
|
|
if (bomb->state != BS_ticking)
|
|
|
|
bomb->to = b_dat->to;
|
|
|
|
bomb->to = b_dat->to;
|
|
|
|
|
|
|
|
else
|
|
|
|
bman.bfield[bomb->pos.x >> 8][bomb->pos.y >> 8] = 1; // keep the bfield up to date
|
|
|
|
bman.bfield[bomb->pos.x >> 8][bomb->pos.y >> 8] = 1; // keep the bfield up to date
|
|
|
|
|
|
|
|
bomb->r = b_dat->r;
|
|
|
|
bomb->r = b_dat->r;
|
|
|
|
bomb->ex_nr = b_dat->ex_nr;
|
|
|
|
bomb->ex_nr = b_dat->ex_nr;
|
|
|
|
bomb->state = b_dat->state;
|
|
|
|
bomb->state = b_dat->state;
|
|
|
|