diff options
author | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-03-03 04:20:58 +0000 |
---|---|---|
committer | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-03-03 04:20:58 +0000 |
commit | e92404724e395fb51711a318f2fba530055fb4c8 (patch) | |
tree | cc62d84558d7c4b5e5df2acfb429e362f329b71f /src/map/mob.c | |
parent | dd90153762be1de239e2e6d244dd25d50e5c2fe4 (diff) | |
download | hercules-e92404724e395fb51711a318f2fba530055fb4c8.tar.gz hercules-e92404724e395fb51711a318f2fba530055fb4c8.tar.bz2 hercules-e92404724e395fb51711a318f2fba530055fb4c8.tar.xz hercules-e92404724e395fb51711a318f2fba530055fb4c8.zip |
- Small fixes on mob_skill_use
- slaves inherit speeds will only work if the master can move.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5441 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/mob.c')
-rw-r--r-- | src/map/mob.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/map/mob.c b/src/map/mob.c index 11774bad9..1f66fccec 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -3205,7 +3205,8 @@ int mob_summonslave(struct mob_data *md2,int *value,int amount,int skill_id) md->y0=y;
md->xs=0;
md->ys=0;
- if (battle_config.slaves_inherit_speed && (skill_id != NPC_METAMORPHOSIS && skill_id != NPC_TRANSFORMATION))
+ if (battle_config.slaves_inherit_speed && md2->db->mode&MD_CANMOVE
+ && (skill_id != NPC_METAMORPHOSIS && skill_id != NPC_TRANSFORMATION))
md->speed=md2->speed;
md->special_state.cached= battle_config.dynamic_mobs; //[Skotlex]
md->spawndelay1=-1; // 一度のみフラグ
@@ -3849,7 +3850,7 @@ int mobskill_use(struct mob_data *md, unsigned int tick, int event) do {
bx = x + rand() % (r*2+1) - r;
by = y + rand() % (r*2+1) - r;
- } while (map_getcell(m, bx, by, CELL_CHKNOPASS) && (i++) < 1000);
+ } while (map_getcell(m, bx, by, CELL_CHKNOREACH) && (i++) < 1000);
if (i < 1000){
x = bx; y = by;
}
@@ -3860,7 +3861,7 @@ int mobskill_use(struct mob_data *md, unsigned int tick, int event) do {
bx = x + rand() % (r*2+1) - r;
by = y + rand() % (r*2+1) - r;
- } while (map_getcell(m, bx, by, CELL_CHKNOPASS) && (i++) < 1000);
+ } while (map_getcell(m, bx, by, CELL_CHKNOREACH) && (i++) < 1000);
if (i < 1000){
x = bx; y = by;
}
@@ -3895,6 +3896,11 @@ int mobskill_use(struct mob_data *md, unsigned int tick, int event) }
if (bl && !mobskill_use_id(md, bl, i))
return 0;
+ } else {
+ if (battle_config.error_log)
+ ShowWarning("Wrong mob skill target 'around' for non-ground skill %d (%s). Mob %d - %s\n",
+ ms[i].skill_id, skill_get_name(ms[i].skill_id), md->class_, md->db->jname);
+ continue;
}
}
return 1;
|