summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2017-10-21 00:23:56 +0200
committerGitHub <noreply@github.com>2017-10-21 00:23:56 +0200
commit122ae7b779bb0996f220b4cfb481d75b22420544 (patch)
treeac223afa4a8a10f49eb999e223ad444bb3fedd4b
parent0b1a9d52a5cbf0338ce53eabc0cd446380c517ea (diff)
parent3f978c02ec2550714a60e6180ecb60e9e779b364 (diff)
downloadhercules-122ae7b779bb0996f220b4cfb481d75b22420544.tar.gz
hercules-122ae7b779bb0996f220b4cfb481d75b22420544.tar.bz2
hercules-122ae7b779bb0996f220b4cfb481d75b22420544.tar.xz
hercules-122ae7b779bb0996f220b4cfb481d75b22420544.zip
Merge pull request #1827 from HerculesWS/cell-stack-hiddennpc
Ignore hidden units in the cell stack limit checks
-rw-r--r--src/map/map.c5
-rw-r--r--src/map/mob.c2
-rw-r--r--src/map/unit.c2
3 files changed, 7 insertions, 2 deletions
diff --git a/src/map/map.c b/src/map/map.c
index f8aebcfa6..ff5c2aafd 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -447,6 +447,11 @@ int map_count_oncell(int16 m, int16 x, int16 y, int type, int flag) {
struct status_change *sc = status->get_sc(bl);
if (sc && (sc->option&OPTION_INVISIBLE))
continue;
+ if (bl->type == BL_NPC) {
+ const struct npc_data *nd = BL_UCCAST(BL_NPC, bl);
+ if (nd->class_ == FAKE_NPC || nd->class_ == HIDDEN_WARP_CLASS)
+ continue;
+ }
}
if (flag&0x1) {
struct unit_data *ud = unit->bl2ud(bl);
diff --git a/src/map/mob.c b/src/map/mob.c
index 98f8865a9..1fb46283d 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -1354,7 +1354,7 @@ int mob_unlocktarget(struct mob_data *md, int64 tick) {
md->ud.target_to = 0;
unit->set_target(&md->ud, 0);
}
- if(battle_config.official_cell_stack_limit && map->count_oncell(md->bl.m, md->bl.x, md->bl.y, BL_CHAR|BL_NPC, 1) > battle_config.official_cell_stack_limit) {
+ if(battle_config.official_cell_stack_limit && map->count_oncell(md->bl.m, md->bl.x, md->bl.y, BL_CHAR|BL_NPC, 0x1 | 0x2) > battle_config.official_cell_stack_limit) {
unit->walktoxy(&md->bl, md->bl.x, md->bl.y, 8);
}
diff --git a/src/map/unit.c b/src/map/unit.c
index 00c78054b..0b5b21caf 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -474,7 +474,7 @@ int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
ud->to_x = bl->x;
ud->to_y = bl->y;
- if(battle_config.official_cell_stack_limit && map->count_oncell(bl->m, x, y, BL_CHAR|BL_NPC, 1) > battle_config.official_cell_stack_limit) {
+ if (battle_config.official_cell_stack_limit && map->count_oncell(bl->m, x, y, BL_CHAR|BL_NPC, 0x1 | 0x2) > battle_config.official_cell_stack_limit) {
//Walked on occupied cell, call unit_walktoxy again
if(ud->steptimer != INVALID_TIMER) {
//Execute step timer on next step instead