summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-04-11 19:19:06 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-04-11 19:19:06 +0000
commit06c4c2f94c63ccfc5b2e1a297325f5a3c304f2a0 (patch)
tree935a53c77dcfe9e4cc4a451449c0c57d4e6f193c /src
parent73ca183f23958dbf803233bff65c2a3ef4e2bf07 (diff)
downloadhercules-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.c4
-rw-r--r--src/map/skill.c4
-rw-r--r--src/map/status.c4
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);