diff options
| author | jacksonmj <mj-pt@jacksonmj.co.uk> | 2012-03-13 18:26:56 (GMT) |
|---|---|---|
| committer | jacksonmj <mj-pt@jacksonmj.co.uk> | 2012-03-13 18:27:47 (GMT) |
| commit | f41af456209923f64f8e1474f7fd06f2889c75b6 (patch) | |
| tree | 5fa3cec39e2f21a577ef7922e7c5af98b00251d1 /src/elements/prto.c | |
| parent | e83a1a21aec87374625106d654dbf8af0ff8117d (diff) | |
| download | powder-f41af456209923f64f8e1474f7fd06f2889c75b6.zip powder-f41af456209923f64f8e1474f7fd06f2889c75b6.tar.gz | |
Fix fighters not going through portals correctly
Diffstat (limited to 'src/elements/prto.c')
| -rw-r--r-- | src/elements/prto.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/elements/prto.c b/src/elements/prto.c index dcbc53c..1e7cde0 100644 --- a/src/elements/prto.c +++ b/src/elements/prto.c @@ -47,8 +47,31 @@ int update_PRTO(UPDATE_FUNC_ARGS) { player.spwn = 0; if (portalp[parts[i].tmp][randomness][nnx].type==PT_STKM2) player2.spwn = 0; + if (portalp[parts[i].tmp][randomness][nnx].type==PT_FIGH) + { + fighcount--; + fighters[(unsigned char)portalp[parts[i].tmp][randomness][nnx].tmp].spwn = 0; + } np = create_part(-1,x+rx,y+ry,portalp[parts[i].tmp][randomness][nnx].type); - if (np<0) continue; + if (np<0) + { + if (portalp[parts[i].tmp][randomness][nnx].type==PT_STKM) + player.spwn = 1; + if (portalp[parts[i].tmp][randomness][nnx].type==PT_STKM2) + player2.spwn = 1; + if (portalp[parts[i].tmp][randomness][nnx].type==PT_FIGH) + { + fighcount++; + fighters[(unsigned char)portalp[parts[i].tmp][randomness][nnx].tmp].spwn = 1; + } + continue; + } + if (parts[np].type==PT_FIGH) + { + // Release the fighters[] element allocated by create_part, the one reserved when the fighter went into the portal will be used + fighters[(unsigned char)parts[np].tmp].spwn = 0; + fighters[(unsigned char)portalp[parts[i].tmp][randomness][nnx].tmp].spwn = 1; + } parts[np] = portalp[parts[i].tmp][randomness][nnx]; parts[np].x = x+rx; parts[np].y = y+ry; |
