diff options
author | shennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-03-23 04:32:38 +0000 |
---|---|---|
committer | shennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-03-23 04:32:38 +0000 |
commit | c73b9c6444ee0d7d9f91cce676c370b55ca234b7 (patch) | |
tree | f6e3c5c42e9455ec277fe210cfc491500b760307 /src/map/map.c | |
parent | f3bad5a9c57a123b9ae3f3070ef4edaa2f08698b (diff) | |
download | hercules-c73b9c6444ee0d7d9f91cce676c370b55ca234b7.tar.gz hercules-c73b9c6444ee0d7d9f91cce676c370b55ca234b7.tar.bz2 hercules-c73b9c6444ee0d7d9f91cce676c370b55ca234b7.tar.xz hercules-c73b9c6444ee0d7d9f91cce676c370b55ca234b7.zip |
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
Diffstat (limited to 'src/map/map.c')
-rw-r--r-- | src/map/map.c | 8 |
1 files changed, 5 insertions, 3 deletions
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; |