diff options
Diffstat (limited to 'src/simulation/Simulation.cpp')
| -rw-r--r-- | src/simulation/Simulation.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/simulation/Simulation.cpp b/src/simulation/Simulation.cpp index c266e22..3d0ab0e 100644 --- a/src/simulation/Simulation.cpp +++ b/src/simulation/Simulation.cpp @@ -1126,6 +1126,8 @@ void Simulation::init_can_move() if (ptypes[t].weight <= ptypes[rt].weight) can_move[t][rt] = 0; if (t==PT_NEUT && (ptypes[rt].properties&PROP_NEUTPASS)) can_move[t][rt] = 2; + if (t==PT_NEUT && (ptypes[rt].properties&PROP_NEUTABSORB)) + can_move[t][rt] = 1; if (t==PT_NEUT && (ptypes[rt].properties&PROP_NEUTPENETRATE)) can_move[t][rt] = 1; if ((ptypes[t].properties&PROP_NEUTPENETRATE) && rt==PT_NEUT) @@ -1345,6 +1347,11 @@ int Simulation::try_move(int i, int x, int y, int nx, int ny) } //else e=1 , we are trying to swap the particles, return 0 no swap/move, 1 is still overlap/move, because the swap takes place later + if (parts[i].type == PT_NEUT && (ptypes[r & 0xFF].properties & PROP_NEUTABSORB)) + { + parts[i].type = PT_NONE; + return 0; + } if ((r&0xFF)==PT_VOID || (r&0xFF)==PT_PVOD) //this is where void eats particles { if (parts[i].type == PT_STKM) |
