summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-03-03 04:20:58 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-03-03 04:20:58 +0000
commite92404724e395fb51711a318f2fba530055fb4c8 (patch)
treecc62d84558d7c4b5e5df2acfb429e362f329b71f /src
parentdd90153762be1de239e2e6d244dd25d50e5c2fe4 (diff)
downloadhercules-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')
-rw-r--r--src/map/mob.c12
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;