Fixes for the trigger special

origin
patty21 23 years ago
parent b5d44eff6d
commit 4ceea6fd4a

@ -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);
}
}

@ -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);

@ -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);

@ -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;

@ -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:

Loading…
Cancel
Save