diff --git a/src/simulation/Simulation.cpp b/src/simulation/Simulation.cpp index 537d6fd4b..30f27acc4 100644 --- a/src/simulation/Simulation.cpp +++ b/src/simulation/Simulation.cpp @@ -3330,9 +3330,9 @@ void Simulation::RecalcFreeParticles(bool do_life_dec) photons[y][x] = PMAP(i, t); else { - // Particles are sometimes allowed to go inside INVS and FILT + // Particles are sometimes allowed to go inside INVS, FILT, and PAPR // To make particles collide correctly when inside these elements, these elements must not overwrite an existing pmap entry from particles inside them - if (!pmap[y][x] || (t!=PT_INVIS && t!= PT_FILT)) + if (!pmap[y][x] || (t!=PT_INVIS && t!= PT_FILT && t != PT_PAPR)) pmap[y][x] = PMAP(i, t); // (there are a few exceptions, including energy particles - currently no limit on stacking those) if (t!=PT_THDR && t!=PT_EMBR && t!=PT_FIGH && t!=PT_PLSM) diff --git a/src/simulation/SimulationData.cpp b/src/simulation/SimulationData.cpp index a125f3925..f7b3a86db 100644 --- a/src/simulation/SimulationData.cpp +++ b/src/simulation/SimulationData.cpp @@ -187,7 +187,7 @@ void SimulationData::init_can_move() can_move[movingType][PT_SAWD] = 0; // Let most non-solids pass through PAPR - if (elements[movingType].Properties & (TYPE_GAS | TYPE_PART | TYPE_LIQUID)) + if (elements[movingType].Properties & (TYPE_GAS | TYPE_PART | TYPE_LIQUID) && (movingType != PT_FIRE && movingType != PT_SMKE)) can_move[movingType][PT_PAPR] = 2; } //a list of lots of things PHOT can move through