summaryrefslogtreecommitdiff
path: root/src/map/map.c
diff options
context:
space:
mode:
authorshennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-03-23 04:32:38 +0000
committershennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-03-23 04:32:38 +0000
commitc73b9c6444ee0d7d9f91cce676c370b55ca234b7 (patch)
treef6e3c5c42e9455ec277fe210cfc491500b760307 /src/map/map.c
parentf3bad5a9c57a123b9ae3f3070ef4edaa2f08698b (diff)
downloadhercules-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.c8
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;