From 4ceea6fd4a8abab8e448a8253b2f4b625ae7819c Mon Sep 17 00:00:00 2001 From: patty21 Date: Thu, 15 May 2003 00:27:00 +0000 Subject: [PATCH] Fixes for the trigger special --- src/bomb.c | 10 +++++----- src/bomberclone.h | 4 ++-- src/game.c | 1 + src/packets.c | 2 +- src/special.c | 13 +++++++------ 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/bomb.c b/src/bomb.c index deaf724..6fdd175 100644 --- a/src/bomb.c +++ b/src/bomb.c @@ -39,7 +39,7 @@ draw_bomb (_bomb * bomb) void -bomb_explode (int p, int b) +bomb_explode (int p, int b, int net) { int d; _bomb *bomb = &bman.players[p].bombs[b]; @@ -56,7 +56,7 @@ bomb_explode (int p, int b) bomb->firerst[d] = -1; } - if (GT_MP_PTPM) /* from now on only the server let the bomb explode */ + if (GT_MP_PTPM && net) /* from now on only the server let the bomb explode */ net_game_send_bomb (p, b); }; @@ -79,7 +79,7 @@ bomb_loop () case BS_ticking: if (GT_MP_PTPM || bman.gametype == GT_single) { if (--bomb->to == 0) // bomb will have to explode in the next loop - bomb_explode (p, i); + bomb_explode (p, i, 1); else draw_bomb (bomb); } @@ -128,7 +128,7 @@ get_bomb_on (int x, int y, _point bombs[]) if ((bman.players[p].state & PSFM_used) != 0) { for (b = 0; b < MAX_BOMBS; b++) { bomb = &bman.players[p].bombs[b]; - if (bomb->state == BS_ticking) { + if (bomb->state == BS_ticking || bomb->state==BS_trigger) { if (bomb->pos.x == x && bomb->pos.y == y) { bombs[i].x = p; bombs[i].y = b; @@ -268,7 +268,7 @@ explosion_check_field (int x, int y, int p, int b) tmpbomb = &bman.players[bo[i].x].bombs[bo[i].y]; if (tmpbomb != bomb && tmpbomb->state != BS_exploding) { tmpbomb->ex_nr = bomb->ex_nr; // set the ex_nr to identify explosions - bomb_explode (bo[i].x, bo[i].y); + bomb_explode (bo[i].x, bo[i].y, 1); } } diff --git a/src/bomberclone.h b/src/bomberclone.h index 1c10ddf..726e3d6 100644 --- a/src/bomberclone.h +++ b/src/bomberclone.h @@ -1,4 +1,4 @@ -/* $Id: bomberclone.h,v 1.22 2003/05/13 21:53:40 patty21 Exp $ */ +/* $Id: bomberclone.h,v 1.23 2003/05/15 00:27:00 patty21 Exp $ */ /* bomberclone.h */ #ifndef _BOMBERCLONE_H_ @@ -206,7 +206,7 @@ extern void draw_fire (int x, int y, int d, int frame); extern void do_explosion (int p, int b); extern void restore_explosion (_bomb * bomb); extern int explosion_check_field (int x, int y, int p, int b); -extern void bomb_explode (int p, int b); +extern void bomb_explode (int p, int b, int net); // menus extern void draw_select (int select, _menu menu[], int x, int y); diff --git a/src/game.c b/src/game.c index 43ff2d0..7b62258 100644 --- a/src/game.c +++ b/src/game.c @@ -130,6 +130,7 @@ game_loop () net_game_fillsockaddr (); if (strcmp(VERSION,"0.9.9") ) { menu_displaytext ("Error", " Unauthorized version change ", 64, 0, 0); + SDL_WaitEvent(&event); return; } SDL_Flip (gfx.screen); diff --git a/src/packets.c b/src/packets.c index e470844..922adf3 100644 --- a/src/packets.c +++ b/src/packets.c @@ -599,7 +599,7 @@ do_bombdata (struct pkg_bombdata *b_dat, _net_addr * addr) bomb->ex_nr = b_dat->ex_nr; bomb->state = b_dat->state; if (bomb->state == BS_exploding) - bomb_explode (b_dat->p_nr, b_dat->b_nr); + bomb_explode (b_dat->p_nr, b_dat->b_nr,0); if (bomb->ex_nr > bman.last_ex_nr) bman.last_ex_nr = bomb->ex_nr; diff --git a/src/special.c b/src/special.c index e18a58b..70a8ef8 100644 --- a/src/special.c +++ b/src/special.c @@ -7,12 +7,16 @@ void special_trigger (int p_nr) { - int i; + int i, + z=0; _player *p = &bman.players[p_nr]; // all ticking bombs will explode for (i = 0; i < MAX_BOMBS; i++) - if (p->bombs[i].state == BS_trigger) - bomb_explode (p_nr, i); + if (p->bombs[i].state == BS_trigger) { + bomb_explode (p_nr, i,0);z++;} + + if (p_nr == bman.p_nr && GT_MP_PTP && z) + net_game_send_special (p_nr); } void @@ -29,9 +33,6 @@ void special_use (int p_nr) { - if (p_nr == bman.p_nr && GT_MP_PTP) - net_game_send_special (p_nr); - switch (bman.players[p_nr].special) { case SP_trigger: