diff options
Diffstat (limited to 'src/simulation/elements/SPNG.cpp')
| -rw-r--r-- | src/simulation/elements/SPNG.cpp | 57 |
1 files changed, 35 insertions, 22 deletions
diff --git a/src/simulation/elements/SPNG.cpp b/src/simulation/elements/SPNG.cpp index 95dd12f..de32c24 100644 --- a/src/simulation/elements/SPNG.cpp +++ b/src/simulation/elements/SPNG.cpp @@ -59,30 +59,43 @@ int Element_SPNG::update(UPDATE_FUNC_ARGS) if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry)) { r = pmap[y+ry][x+rx]; - if (!r) - continue; - if (((r&0xFF)==PT_WATR || (r&0xFF)==PT_DSTW || (r&0xFF)==PT_FRZW) && parts[i].life<limit && 500>rand()%absorbChanceDenom) + switch (r&0xFF) { - parts[i].life++; - sim->kill_part(r>>8); - } - if ((r&0xFF)==PT_SLTW && parts[i].life<limit && 50>rand()%absorbChanceDenom) - { - parts[i].life++; - if (rand()%4) + case PT_WATR: + case PT_DSTW: + case PT_FRZW: + if (parts[i].life<limit && 500>rand()%absorbChanceDenom) + { + parts[i].life++; sim->kill_part(r>>8); - else - sim->part_change_type(r>>8, x+rx, y+ry, PT_SALT); - } - if ((r&0xFF)==PT_CBNW && parts[i].life<limit && 100>rand()%absorbChanceDenom) - { - parts[i].life++; - sim->part_change_type(r>>8, x+rx, y+ry, PT_CO2); - } - if ((r&0xFF)==PT_PSTE && parts[i].life<limit && 20>rand()%absorbChanceDenom) - { - parts[i].life++; - sim->create_part(r>>8, x+rx, y+ry, PT_CLST); + } + break; + case PT_SLTW: + if (parts[i].life<limit && 50>rand()%absorbChanceDenom) + { + parts[i].life++; + if (rand()%4) + sim->kill_part(r>>8); + else + sim->part_change_type(r>>8, x+rx, y+ry, PT_SALT); + } + break; + case PT_CBNW: + if (parts[i].life<limit && 100>rand()%absorbChanceDenom) + { + parts[i].life++; + sim->part_change_type(r>>8, x+rx, y+ry, PT_CO2); + } + break; + case PT_PSTE: + if (parts[i].life<limit && 20>rand()%absorbChanceDenom) + { + parts[i].life++; + sim->create_part(r>>8, x+rx, y+ry, PT_CLST); + } + break; + default: + continue; } } } |
