diff --git a/src/packets.c b/src/packets.c index fc44480..0abc67e 100644 --- a/src/packets.c +++ b/src/packets.c @@ -603,8 +603,11 @@ do_bombdata (struct pkg_bombdata *b_dat, _net_addr * addr) && b_dat->state != BS_exploding) 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 - bman.bfield[(bomb->pos.x >> 8)][(bomb->pos.y >> 8)] = 0; //remove bomb at old location + if ((bomb->state == BS_ticking || bomb->state == BS_trigger) && (b_dat->state == BS_ticking || b_dat->state == BS_trigger)) { // handle push & kick special + 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); 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.y = b_dat->y; - if (bomb->state != BS_ticking) - bomb->to = b_dat->to; - else - bman.bfield[bomb->pos.x >> 8][bomb->pos.y >> 8] = 1; // keep the bfield up to date + bomb->to = b_dat->to; + + bman.bfield[bomb->pos.x >> 8][bomb->pos.y >> 8] = 1; // keep the bfield up to date + bomb->r = b_dat->r; bomb->ex_nr = b_dat->ex_nr; bomb->state = b_dat->state;