From c73b9c6444ee0d7d9f91cce676c370b55ca234b7 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Fri, 23 Mar 2012 04:32:38 +0000 Subject: Fixed bugreport:1017 a item dropping over a ice-wall-occupied cell is no longer lost/deleted. Dev Note: the thing I added to sign icewalls may be suitable for bugreport:3574 as well git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15772 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/map.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/map/map.c') diff --git a/src/map/map.c b/src/map/map.c index d7be8e5a7..8fe860995 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -1346,8 +1346,7 @@ int map_clearflooritem_timer(int tid, unsigned int tick, int id, intptr_t data) * to place an BL_ITEM object. Scan area is 9x9, returns 1 on success. * x and y are modified with the target cell when successful. *------------------------------------------*/ -int map_searchrandfreecell(int m,int *x,int *y,int stack) -{ +int map_searchrandfreecell(int m,int *x,int *y,int stack) { int free_cell,i,j; int free_cells[9][2]; @@ -1357,7 +1356,7 @@ int map_searchrandfreecell(int m,int *x,int *y,int stack) for(j=-1;j<=1;j++){ if(j+*x<0 || j+*x>=map[m].xs) continue; - if(map_getcell(m,j+*x,i+*y,CELL_CHKNOPASS)) + if(map_getcell(m,j+*x,i+*y,CELL_CHKNOPASS) && !map_getcell(m,j+*x,i+*y,CELL_CHKICEWALL)) continue; //Avoid item stacking to prevent against exploits. [Skotlex] if(stack && map_count_oncell(m,j+*x,i+*y, BL_ITEM) > stack) @@ -2515,6 +2514,8 @@ int map_getcellp(struct map_data* m,int x,int y,cell_chk cellchk) return (cell.nochat); case CELL_CHKMAELSTROM: return (cell.maelstrom); + case CELL_CHKICEWALL: + return (cell.icewall); // special checks case CELL_CHKPASS: @@ -2568,6 +2569,7 @@ void map_setcell(int m, int x, int y, cell_t cell, bool flag) case CELL_NOVENDING: map[m].cell[j].novending = flag; break; case CELL_NOCHAT: map[m].cell[j].nochat = flag; break; case CELL_MAELSTROM: map[m].cell[j].maelstrom = flag; break; + case CELL_ICEWALL: map[m].cell[j].icewall = flag; break; default: ShowWarning("map_setcell: invalid cell type '%d'\n", (int)cell); break; -- cgit v1.2.3-70-g09d2