Fix fighters not going through portals correctly
This commit is contained in:
parent
e83a1a21ae
commit
f41af45620
@ -31,6 +31,9 @@ int update_PRTI(UPDATE_FUNC_ARGS) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((r&0xFF)==PT_STKM || (r&0xFF)==PT_STKM2 || (r&0xFF)==PT_FIGH)
|
||||
continue;// Handling these is a bit more complicated, and is done in STKM_interact()
|
||||
|
||||
if ((r&0xFF) == PT_SOAP)
|
||||
detach(r>>8);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -451,7 +451,10 @@ void STKM_interact(playerst* playerp, int i, int x, int y)
|
||||
{
|
||||
portalp[parts[r>>8].tmp][count][nnx] = parts[i];
|
||||
kill_part(i);
|
||||
playerp->spwn = 1;//stop SPWN creating a new STKM while he is in portal
|
||||
//stop new STKM/fighters being created to replace the ones in the portal:
|
||||
playerp->spwn = 1;
|
||||
if (portalp[parts[r>>8].tmp][count][nnx].type==PT_FIGH)
|
||||
fighcount++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user