Fixes for the trigger special

origin
patty21 23 years ago
parent b5d44eff6d
commit 4ceea6fd4a

@ -39,7 +39,7 @@ draw_bomb (_bomb * bomb)
void void
bomb_explode (int p, int b) bomb_explode (int p, int b, int net)
{ {
int d; int d;
_bomb *bomb = &bman.players[p].bombs[b]; _bomb *bomb = &bman.players[p].bombs[b];
@ -56,7 +56,7 @@ bomb_explode (int p, int b)
bomb->firerst[d] = -1; 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); net_game_send_bomb (p, b);
}; };
@ -79,7 +79,7 @@ bomb_loop ()
case BS_ticking: case BS_ticking:
if (GT_MP_PTPM || bman.gametype == GT_single) { if (GT_MP_PTPM || bman.gametype == GT_single) {
if (--bomb->to == 0) // bomb will have to explode in the next loop if (--bomb->to == 0) // bomb will have to explode in the next loop
bomb_explode (p, i); bomb_explode (p, i, 1);
else else
draw_bomb (bomb); draw_bomb (bomb);
} }
@ -128,7 +128,7 @@ get_bomb_on (int x, int y, _point bombs[])
if ((bman.players[p].state & PSFM_used) != 0) { if ((bman.players[p].state & PSFM_used) != 0) {
for (b = 0; b < MAX_BOMBS; b++) { for (b = 0; b < MAX_BOMBS; b++) {
bomb = &bman.players[p].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) { if (bomb->pos.x == x && bomb->pos.y == y) {
bombs[i].x = p; bombs[i].x = p;
bombs[i].y = b; 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]; tmpbomb = &bman.players[bo[i].x].bombs[bo[i].y];
if (tmpbomb != bomb && tmpbomb->state != BS_exploding) { if (tmpbomb != bomb && tmpbomb->state != BS_exploding) {
tmpbomb->ex_nr = bomb->ex_nr; // set the ex_nr to identify explosions 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);
} }
} }

@ -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 */ /* bomberclone.h */
#ifndef _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 do_explosion (int p, int b);
extern void restore_explosion (_bomb * bomb); extern void restore_explosion (_bomb * bomb);
extern int explosion_check_field (int x, int y, int p, int b); 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 // menus
extern void draw_select (int select, _menu menu[], int x, int y); extern void draw_select (int select, _menu menu[], int x, int y);

@ -130,6 +130,7 @@ game_loop ()
net_game_fillsockaddr (); net_game_fillsockaddr ();
if (strcmp(VERSION,"0.9.9") ) { if (strcmp(VERSION,"0.9.9") ) {
menu_displaytext ("Error", " Unauthorized version change ", 64, 0, 0); menu_displaytext ("Error", " Unauthorized version change ", 64, 0, 0);
SDL_WaitEvent(&event);
return; return;
} }
SDL_Flip (gfx.screen); SDL_Flip (gfx.screen);

@ -599,7 +599,7 @@ do_bombdata (struct pkg_bombdata *b_dat, _net_addr * addr)
bomb->ex_nr = b_dat->ex_nr; bomb->ex_nr = b_dat->ex_nr;
bomb->state = b_dat->state; bomb->state = b_dat->state;
if (bomb->state == BS_exploding) 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) if (bomb->ex_nr > bman.last_ex_nr)
bman.last_ex_nr = bomb->ex_nr; bman.last_ex_nr = bomb->ex_nr;

@ -7,12 +7,16 @@
void void
special_trigger (int p_nr) special_trigger (int p_nr)
{ {
int i; int i,
z=0;
_player *p = &bman.players[p_nr]; _player *p = &bman.players[p_nr];
// all ticking bombs will explode // all ticking bombs will explode
for (i = 0; i < MAX_BOMBS; i++) for (i = 0; i < MAX_BOMBS; i++)
if (p->bombs[i].state == BS_trigger) if (p->bombs[i].state == BS_trigger) {
bomb_explode (p_nr, i); bomb_explode (p_nr, i,0);z++;}
if (p_nr == bman.p_nr && GT_MP_PTP && z)
net_game_send_special (p_nr);
} }
void void
@ -29,9 +33,6 @@ void
special_use (int p_nr) 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) { switch (bman.players[p_nr].special) {
case SP_trigger: case SP_trigger:

Loading…
Cancel
Save