diff options
| author | chaos.powdertoy.co.uk <admin@powdertoy.co.uk> | 2012-03-15 02:14:17 (GMT) |
|---|---|---|
| committer | chaos.powdertoy.co.uk <admin@powdertoy.co.uk> | 2012-03-15 02:14:17 (GMT) |
| commit | 6254d4064dff390ce92c1803cdf9d9fb58a62e79 (patch) | |
| tree | c95626a1f5ea562d7a4dc5c58a02b0db3c902043 /src/elements/prto.c | |
| parent | 4fc0f750221a33a9ac922022ee58ccda6bbe3440 (diff) | |
| parent | 7a454d4d729a5715a7c1e71dfbaf303471bf8d1f (diff) | |
| download | powder-6254d4064dff390ce92c1803cdf9d9fb58a62e79.zip powder-6254d4064dff390ce92c1803cdf9d9fb58a62e79.tar.gz | |
Merge branch 'master' of github.com:FacialTurd/The-Powder-Toy
Diffstat (limited to 'src/elements/prto.c')
| -rw-r--r-- | src/elements/prto.c | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/src/elements/prto.c b/src/elements/prto.c index dcbc53c..1dd00d4 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; @@ -62,8 +85,8 @@ int update_PRTO(UPDATE_FUNC_ARGS) { if (fe) { int orbd[4] = {0, 0, 0, 0}; //Orbital distances int orbl[4] = {0, 0, 0, 0}; //Orbital locations - if (!parts[i].life) parts[i].life = rand(); - if (!parts[i].ctype) parts[i].life = rand(); + if (!parts[i].life) parts[i].life = rand()*rand()*rand(); + if (!parts[i].ctype) parts[i].ctype = rand()*rand()*rand(); orbitalparts_get(parts[i].life, parts[i].ctype, orbd, orbl); for (r = 0; r < 4; r++) { if (orbd[r]<254) { @@ -71,9 +94,10 @@ int update_PRTO(UPDATE_FUNC_ARGS) { if (orbd[r]>254) { orbd[r] = 0; orbl[r] = rand()%255; + } else { + orbl[r] += 1; + orbl[r] = orbl[r]%255; } - //orbl[r] += 1; - //orbl[r] = orbl[r]%255; } else { orbd[r] = 0; orbl[r] = rand()%255; |
