diff options
author | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-04-11 19:19:06 +0000 |
---|---|---|
committer | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-04-11 19:19:06 +0000 |
commit | 06c4c2f94c63ccfc5b2e1a297325f5a3c304f2a0 (patch) | |
tree | 935a53c77dcfe9e4cc4a451449c0c57d4e6f193c /src | |
parent | 73ca183f23958dbf803233bff65c2a3ef4e2bf07 (diff) | |
download | hercules-06c4c2f94c63ccfc5b2e1a297325f5a3c304f2a0.tar.gz hercules-06c4c2f94c63ccfc5b2e1a297325f5a3c304f2a0.tar.bz2 hercules-06c4c2f94c63ccfc5b2e1a297325f5a3c304f2a0.tar.xz hercules-06c4c2f94c63ccfc5b2e1a297325f5a3c304f2a0.zip |
- When a mob fails to use the selected skill, it will now move on to the next one in the list, rather than return from the function with fail status.
- Mobs won't try to run away when rude-attacked if they have a locked-on target already.
- Moved the teleport on LP fail check from castend_nodamageid to status_check_skilluse, this way unit_useskill will return failed when trying to use it.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@10221 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r-- | src/map/mob.c | 4 | ||||
-rw-r--r-- | src/map/skill.c | 4 | ||||
-rw-r--r-- | src/map/status.c | 4 |
3 files changed, 6 insertions, 6 deletions
diff --git a/src/map/mob.c b/src/map/mob.c index 11d44955f..f4e30e51f 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -1160,7 +1160,7 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap) ) { //Rude attacked if (md->state.attacked_count++ >= RUDE_ATTACKED_COUNT && !mobskill_use(md, tick, MSC_RUDEATTACKED) && can_move && - unit_escape(bl, abl, rand()%10 +1)) + !tbl && unit_escape(bl, abl, rand()%10 +1)) { //Escaped. //TODO: Maybe it shouldn't attempt to run if it has another, valid target? md->attacked_id = 0; @@ -2855,7 +2855,7 @@ int mobskill_use(struct mob_data *md, unsigned int tick, int event) if (!flag) { //Skill failed. md->skillidx = -1; - return 0; + continue; } if(battle_config.mob_ai&0x200) { //pass on delay to same skill. diff --git a/src/map/skill.c b/src/map/skill.c index 4c3559b9f..ce6f81aaf 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -4443,10 +4443,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in break; case AL_TELEPORT: - //Should fail when used on top of Land Protector [Skotlex] - if (map_getcell(bl->m, bl->x, bl->y, CELL_CHKLANDPROTECTOR)) - break; - if(sd) { if (map[bl->m].flag.noteleport) { clif_skill_teleportmessage(sd,0); diff --git a/src/map/status.c b/src/map/status.c index 27faecd05..6847f0233 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -973,6 +973,10 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int if (hide_flag&INF_GROUND_SKILL && skill_get_unit_target(skill_num)&BCT_ENEMY) return 0; } + + //Should fail when used on top of Land Protector [Skotlex] + if (src && skill_num == AL_TELEPORT && map_getcell(src->m, src->x, src->y, CELL_CHKLANDPROTECTOR)) + return 0; if (src) sc = status_get_sc(src); |