diff options
author | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-01-03 22:00:59 +0000 |
---|---|---|
committer | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-01-03 22:00:59 +0000 |
commit | d3e6e368ac40c44fb13978a7529f8f818cdc0731 (patch) | |
tree | da160c07691d6750859d734e376c4dcae3e554d0 | |
parent | 1b241817a93f892a24379866a06e046e7e6c5e86 (diff) | |
download | hercules-d3e6e368ac40c44fb13978a7529f8f818cdc0731.tar.gz hercules-d3e6e368ac40c44fb13978a7529f8f818cdc0731.tar.bz2 hercules-d3e6e368ac40c44fb13978a7529f8f818cdc0731.tar.xz hercules-d3e6e368ac40c44fb13978a7529f8f818cdc0731.zip |
Fixed npc unloading not clearing NPC touch cells (bugreport:595).
Added a comment to npc_unsetcells(), pointing out that it's most likely not scanning for cells correctly.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12004 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r-- | Changelog-Trunk.txt | 1 | ||||
-rw-r--r-- | src/map/npc.c | 16 |
2 files changed, 3 insertions, 14 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 8cb8e9def..db75ac6fc 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,7 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2008/01/03 + * Fixed npc unloading not clearing NPC touch cells (bugreport:595) * Map cell mechanism rewrite - defined a data structure for map cells (replaces 3 various cell arrays) - both terrain (gat) and dynamic (cell) information is now stored as diff --git a/src/map/npc.c b/src/map/npc.c index 6514fbb6a..f18ba07a1 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -1227,20 +1227,7 @@ int npc_remove_map(struct npc_data* nd) return 1; //Not assigned to a map. m = nd->bl.m; clif_clearunit_area(&nd->bl,2); - if (nd->subtype == WARP) - {// Remove corresponding NPC CELLs - int j, xs, ys, x, y; - x = nd->bl.x; - y = nd->bl.y; - xs = nd->u.warp.xs; - ys = nd->u.warp.ys; - - for( i = y-ys; i < y+ys; i++ ) - for( j = x-xs; j < x+xs; j++ ) - if( map_getcell(m, j, i, CELL_CHKNPC) ) - map_setcell(m, j, i, CELL_CLRNPC); - - } + npc_unsetcells(nd); map_delblock(&nd->bl); //Remove npc from map[].npc list. [Skotlex] ARR_FIND( 0, map[m].npc_num, i, map[m].npc[i] == nd ); @@ -2014,6 +2001,7 @@ void npc_unsetcells(struct npc_data* nd) return; //Locate max range on which we can locate npc cells + //FIXME: does this really do what it's supposed to do? [ultramage] for(x0 = x-xs; x0 > 0 && map_getcell(m, x0, y, CELL_CHKNPC); x0--); for(x1 = x+xs; x1 < map[m].xs-1 && map_getcell(m, x1, y, CELL_CHKNPC); x1++); for(y0 = y-ys; y0 > 0 && map_getcell(m, x, y0, CELL_CHKNPC); y0--); |