summaryrefslogtreecommitdiff
path: root/src/elements/prto.c
diff options
context:
space:
mode:
authorchaos.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)
commit6254d4064dff390ce92c1803cdf9d9fb58a62e79 (patch)
treec95626a1f5ea562d7a4dc5c58a02b0db3c902043 /src/elements/prto.c
parent4fc0f750221a33a9ac922022ee58ccda6bbe3440 (diff)
parent7a454d4d729a5715a7c1e71dfbaf303471bf8d1f (diff)
downloadpowder-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.c34
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;