From eaf2af6d405f715c60ab28b8725d44b4e4a68539 Mon Sep 17 00:00:00 2001 From: jacksonmj Date: Thu, 26 Jan 2012 01:20:14 +0800 Subject: [PATCH] Another change to the eval_move check in create_part Creating a particle where there was a wall but no existing particle was broken, since eval_move returns 1 for moving into empty space. --- src/powder.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/powder.c b/src/powder.c index 00b558ad8..ac710f68c 100644 --- a/src/powder.c +++ b/src/powder.c @@ -798,7 +798,11 @@ inline int create_part(int p, int x, int y, int tv)//the function for creating a 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) {