Trigger bomb multiplayer fixed

origin
stpohle 23 years ago
parent 0f8e29b140
commit 987c67ab0e

@ -1,4 +1,4 @@
/* $Id: bomberclone.h,v 1.41 2003/07/12 23:55:08 stpohle Exp $ */ /* $Id: bomberclone.h,v 1.42 2003/07/13 22:49:08 stpohle Exp $ */
/* bomberclone.h */ /* bomberclone.h */
#ifndef _BOMBERCLONE_H_ #ifndef _BOMBERCLONE_H_
@ -293,7 +293,7 @@ extern void init_map_tileset();
// special.c // special.c
extern void special_use (int p_nr); extern void special_use (int p_nr);
extern void special_pickup (int p_nr, int s_type); extern void special_pickup (int p_nr, int s_type);
extern void special_loop (int p_nr); extern void special_loop ();
extern void special_clear (int p_nr); extern void special_clear (int p_nr);
#endif #endif

@ -202,7 +202,7 @@ game_loop ()
restore_players_screen (); restore_players_screen ();
dead_playerani (); dead_playerani ();
player_ilness_loop (bman.p_nr); player_ilness_loop (bman.p_nr);
special_loop(bman.p_nr); special_loop();
if ((bman.players[bman.p_nr].state & PSFM_alife) == PSFM_alife) if ((bman.players[bman.p_nr].state & PSFM_alife) == PSFM_alife)
move_player (bman.p_nr); move_player (bman.p_nr);

@ -1,4 +1,4 @@
/* $Id: special.c,v 1.20 2003/07/13 00:08:26 stpohle Exp $ */ /* $Id: special.c,v 1.21 2003/07/13 22:49:08 stpohle Exp $ */
/* special.c - procedues to control the specials */ /* special.c - procedues to control the specials */
#include "bomberclone.h" #include "bomberclone.h"
@ -24,7 +24,6 @@ special_trigger (int p_nr)
if (p_nr == bman.p_nr && GT_MP_PTP && z) if (p_nr == bman.p_nr && GT_MP_PTP && z)
net_game_send_special (p_nr, ex_nr); net_game_send_special (p_nr, ex_nr);
if (z) { if (z) {
bman.last_ex_nr = ex_nr + 6; bman.last_ex_nr = ex_nr + 6;
p->special.numuse--; p->special.numuse--;
@ -181,57 +180,61 @@ special_pickup (int p_nr, int s_nr)
void void
special_clear (int p_nr) special_clear (int p_nr)
{ {
if ( bman.players[p_nr].special.type == SP_trigger ) { if (bman.players[p_nr].special.type == SP_trigger) {
_bomb *bomb; _bomb *bomb;
int i; int i;
/* put all bombs to normal and if the timeout is higher as usual /* put all bombs to normal and if the timeout is higher as usual
set it to normal */ set it to normal */
for (i = 0; i < MAX_BOMBS; i++) { for (i = 0; i < MAX_BOMBS; i++) {
bomb = &bman.players[p_nr].bombs[i]; bomb = &bman.players[p_nr].bombs[i];
if (bomb->state == BS_trigger) { if (bomb->state == BS_trigger) {
bomb->state = BS_ticking; bomb->state = BS_ticking;
if (bomb->to > BOMB_TIMEOUT * TIME_FACTOR) if (bomb->to > BOMB_TIMEOUT * TIME_FACTOR)
bomb->to = BOMB_TIMEOUT * TIME_FACTOR; // 5 Secs * 200 bomb->to = BOMB_TIMEOUT * TIME_FACTOR; // 5 Secs * 200
} }
} }
} }
bman.players[p_nr].special.type = 0; bman.players[p_nr].special.type = 0;
bman.updatestatusbar = 1; bman.updatestatusbar = 1;
} }
void void
special_loop (int p_nr) special_loop ()
{ {
_special *s = &bman.players[p_nr].special; _special *s;
int p_nr;
if (s->use) {
switch (bman.players[p_nr].special.type) { for (p_nr = 0; p_nr < MAX_PLAYERS; p_nr++) {
case SP_trigger: s = &bman.players[p_nr].special;
special_trigger (p_nr); if (s->use) {
break; switch (bman.players[p_nr].special.type) {
case SP_row: case SP_trigger:
if (bman.players[p_nr].m) special_trigger (p_nr);
special_row (p_nr); break;
break; case SP_row:
case SP_push: if (bman.players[p_nr].m)
if (bman.players[p_nr].m) special_row (p_nr);
special_push (p_nr); break;
break; case SP_push:
case SP_kick: if (bman.players[p_nr].m)
break; special_push (p_nr);
break;
case SP_kick:
break;
}
s->use = 0;
} }
s->use = 0;
}
if (!s->type) if (!s->type)
return; return;
if (s->to) { if (s->to) {
s->to--; s->to--;
if (!s->to) if (!s->to)
special_clear (p_nr); special_clear (p_nr);
}
} }
} }
@ -239,5 +242,5 @@ special_loop (int p_nr)
void void
special_use (int p_nr) special_use (int p_nr)
{ {
bman.players[p_nr].special.use = 1; bman.players[p_nr].special.use = 1;
} }

Loading…
Cancel
Save