STOR now automatically transfers to PRTI

This commit is contained in:
jacob1 2015-08-29 23:38:46 -04:00
parent 37794c01af
commit 01afd69c17

View File

@ -57,21 +57,24 @@ Element_PRTI::Element_PRTI()
//#TPT-Directive ElementHeader Element_PRTI static int update(UPDATE_FUNC_ARGS)
int Element_PRTI::update(UPDATE_FUNC_ARGS)
{
int r, nnx, rx, ry, fe = 0;
int count =0;
int fe = 0;
parts[i].tmp = (int)((parts[i].temp-73.15f)/100+1);
if (parts[i].tmp>=CHANNELS) parts[i].tmp = CHANNELS-1;
else if (parts[i].tmp<0) parts[i].tmp = 0;
for (count=0; count<8; count++)
if (parts[i].tmp >= CHANNELS)
parts[i].tmp = CHANNELS-1;
else if (parts[i].tmp < 0)
parts[i].tmp = 0;
for (int count = 0; count < 8; count++)
{
rx = sim->portal_rx[count];
ry = sim->portal_ry[count];
int rx = sim->portal_rx[count];
int ry = sim->portal_ry[count];
if (BOUNDS_CHECK && (rx || ry))
{
r = pmap[y+ry][x+rx];
if (!r)
int r = pmap[y+ry][x+rx];
if (!r || (r&0xFF) == PT_STOR)
fe = 1;
if (!r || (!(sim->elements[r&0xFF].Properties & (TYPE_PART | TYPE_LIQUID | TYPE_GAS | TYPE_ENERGY)) && (r&0xFF)!=PT_SPRK))
if (!r || (!(sim->elements[r&0xFF].Properties & (TYPE_PART | TYPE_LIQUID | TYPE_GAS | TYPE_ENERGY)) && (r&0xFF)!=PT_SPRK && (r&0xFF)!=PT_STOR))
{
r = sim->photons[y+ry][x+rx];
if (!r)
@ -84,16 +87,28 @@ int Element_PRTI::update(UPDATE_FUNC_ARGS)
if ((r&0xFF) == PT_SOAP)
Element_SOAP::detach(sim, r>>8);
for ( nnx=0; nnx<80; nnx++)
for (int nnx=0; nnx<80; nnx++)
if (!sim->portalp[parts[i].tmp][count][nnx].type)
{
sim->portalp[parts[i].tmp][count][nnx] = parts[r>>8];
if ((r&0xFF)==PT_SPRK)
sim->part_change_type(r>>8,x+rx,y+ry,parts[r>>8].ctype);
if ((r&0xFF) == PT_STOR)
{
if (sim->IsValidElement(parts[r>>8].tmp) && (sim->elements[parts[r>>8].tmp].Properties & (TYPE_PART | TYPE_LIQUID | TYPE_GAS | TYPE_ENERGY)))
{
// STOR uses same format as PIPE, so we can use this function to do the transfer
Element_PIPE::transfer_pipe_to_part(sim, parts+(r>>8), &sim->portalp[parts[i].tmp][count][nnx]);
break;
}
}
else
sim->kill_part(r>>8);
fe = 1;
break;
{
sim->portalp[parts[i].tmp][count][nnx] = parts[r>>8];
if ((r&0xFF) == PT_SPRK)
sim->part_change_type(r>>8,x+rx,y+ry,parts[r>>8].ctype);
else
sim->kill_part(r>>8);
fe = 1;
break;
}
}
}
}
@ -105,7 +120,7 @@ int Element_PRTI::update(UPDATE_FUNC_ARGS)
if (!sim->parts[i].life) parts[i].life = rand()*rand()*rand();
if (!sim->parts[i].ctype) parts[i].ctype = rand()*rand()*rand();
sim->orbitalparts_get(parts[i].life, parts[i].ctype, orbd, orbl);
for (r = 0; r < 4; r++) {
for (int r = 0; r < 4; r++) {
if (orbd[r]>1) {
orbd[r] -= 12;
if (orbd[r]<1) {