From 75f62127518895ae9acddfd2644a67ab8796253c Mon Sep 17 00:00:00 2001 From: Simon Robertshaw Date: Tue, 17 Apr 2012 16:55:43 +0100 Subject: TPT: Another change to the eval_move check in create_part eaf2af6d40 diff --git a/src/simulation/Simulation.cpp b/src/simulation/Simulation.cpp index 1fc99ed..ab4a852 100644 --- a/src/simulation/Simulation.cpp +++ b/src/simulation/Simulation.cpp @@ -1845,7 +1845,11 @@ int Simulation::create_part(int p, int x, int y, int tv)//the function for creat return -1; if (p==-1)//creating from anything but brush { - if (pmap[y][x] || (bmap[y/CELL][x/CELL] && eval_move(t, x, y, NULL)!=2)) + // If there is a particle, only allow creation if the new particle can occupy the same space as the existing particle + // If there isn't a particle but there is a wall, check whether the new particle is allowed to be in it + // (not "!=2" for wall check because eval_move returns 1 for moving into empty space) + // If there's no particle and no wall, assume creation is allowed + if (pmap[y][x] ? (eval_move(t, x, y, NULL)!=2) : (bmap[y/CELL][x/CELL] && eval_move(t, x, y, NULL)==0)) { if ((pmap[y][x]&0xFF)!=PT_SPAWN&&(pmap[y][x]&0xFF)!=PT_SPAWN2) { -- cgit v0.9.2-21-gd62e