Checkpoint bug fix.

This commit is contained in:
Steve 2018-02-19 19:14:32 +00:00
parent dbcd2debc3
commit 28d3c70183
2 changed files with 23 additions and 21 deletions

View File

@ -96,6 +96,8 @@ Entity *initBob(void)
b->load = load; b->load = load;
b->save = save; b->save = save;
checkpointTimer = 0;
return (Entity*)b; return (Entity*)b;
} }
@ -153,7 +155,7 @@ static void doAlive(void)
{ {
handeImmunity(); handeImmunity();
world.bob->checkpointTimer = MAX(world.bob->checkpointTimer - 1, 0); checkpointTimer = MAX(checkpointTimer - 1, 0);
world.bob->reload = limit(world.bob->reload - 1, 0, FPS); world.bob->reload = limit(world.bob->reload - 1, 0, FPS);
@ -233,14 +235,14 @@ static void handeImmunity(void)
world.bob->flags &= ~(EF_FLICKER | EF_IMMUNE); world.bob->flags &= ~(EF_FLICKER | EF_IMMUNE);
} }
} }
else if (world.bob->checkpointTimer == 0 && world.bob->isOnGround && completelyOnGround() && world.bob->environment == ENV_AIR && world.bob->riding == NULL) else if (checkpointTimer == 0 && world.bob->isOnGround && completelyOnGround() && world.bob->environment == ENV_AIR && world.bob->riding == NULL)
{ {
for (i = MAX_CHECKPOINTS - 1 ; i > 0 ; i--) for (i = MAX_CHECKPOINTS - 1 ; i > 0 ; i--)
{ {
world.bob->checkpoints[i].x = world.bob->checkpoints[i - 1].x; world.bob->checkpoints[i].x = world.bob->checkpoints[i - 1].x;
world.bob->checkpoints[i].y = world.bob->checkpoints[i - 1].y; world.bob->checkpoints[i].y = world.bob->checkpoints[i - 1].y;
} }
world.bob->checkpoints[0].x = world.bob->x; world.bob->checkpoints[0].x = world.bob->x;
world.bob->checkpoints[0].y = world.bob->y; world.bob->checkpoints[0].y = world.bob->y;
checkpointTimer = FPS; checkpointTimer = FPS;

View File

@ -142,28 +142,28 @@ static void tick(void)
static void reappear(void) static void reappear(void)
{ {
int valid, r; int r;
valid = 0; r = rand() % MAX_CHECKPOINTS;
self->x = world.bob->checkpoints[r].x;
self->y = world.bob->checkpoints[r].y;
do if (self->x != 0 && self->y != 0)
{ {
r = rand() % MAX_CHECKPOINTS; self->y -= (self->h + 10);
self->x = world.bob->checkpoints[r].x;
self->y = world.bob->checkpoints[r].y; self->action = self->walk;
valid = (self->x != 0 && self->y != 0);
self->flags &= ~EF_GONE;
addTeleportStars(self);
playSound(SND_APPEAR, CH_ANY);
}
else
{
self->thinkTime = FPS;
} }
while (!valid);
self->y -= (self->h + 10);
self->action = self->walk;
self->flags &= ~EF_GONE;
addTeleportStars(self);
playSound(SND_APPEAR, CH_ANY);
} }
static void applyDamage(int damage) static void applyDamage(int damage)