- Fixed skillidx not being set whenever a mob uses a skill.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5734 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
5fe56e275c
commit
88541a357c
@ -5,6 +5,8 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. EV
|
|||||||
GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
|
GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
|
||||||
|
|
||||||
2006/03/24
|
2006/03/24
|
||||||
|
* Fixed skillidx not being set whenever a mob uses a skill. This explains
|
||||||
|
skills like metamorphosis/summon_slaves not working at all. [Skotlex]
|
||||||
* Fixed unit_skillcastcancel reading the nocastcancel flags the exact
|
* Fixed unit_skillcastcancel reading the nocastcancel flags the exact
|
||||||
wrong way around [blackhole89]
|
wrong way around [blackhole89]
|
||||||
* Added function map_search_freecell to locate an available cell around an
|
* Added function map_search_freecell to locate an available cell around an
|
||||||
|
@ -198,6 +198,7 @@ struct mob_data* mob_spawn_dataset(struct spawn_data *data)
|
|||||||
md->lootitem = (struct item *)aCalloc(LOOTITEM_SIZE,sizeof(struct item));
|
md->lootitem = (struct item *)aCalloc(LOOTITEM_SIZE,sizeof(struct item));
|
||||||
md->spawn_n = -1;
|
md->spawn_n = -1;
|
||||||
md->deletetimer = -1;
|
md->deletetimer = -1;
|
||||||
|
md->skillidx = -1;
|
||||||
for (i = 0; i < MAX_STATUSCHANGE; i++)
|
for (i = 0; i < MAX_STATUSCHANGE; i++)
|
||||||
md->sc.data[i].timer = -1;
|
md->sc.data[i].timer = -1;
|
||||||
|
|
||||||
@ -2822,8 +2823,11 @@ int mobskill_use(struct mob_data *md, unsigned int tick, int event)
|
|||||||
(ms[i].target-MST_AROUND5) +1;
|
(ms[i].target-MST_AROUND5) +1;
|
||||||
map_search_freecell(&md->bl, md->bl.m, &x, &y, r, r, 3);
|
map_search_freecell(&md->bl, md->bl.m, &x, &y, r, r, 3);
|
||||||
}
|
}
|
||||||
return unit_skilluse_pos2(&md->bl, x, y, ms[i].skill_id, ms[i].skill_lv,
|
md->skillidx = i;
|
||||||
|
flag = unit_skilluse_pos2(&md->bl, x, y, ms[i].skill_id, ms[i].skill_lv,
|
||||||
skill_castfix(&md->bl,ms[i].skill_id, ms[i].skill_lv, ms[i].casttime), ms[i].cancel);
|
skill_castfix(&md->bl,ms[i].skill_id, ms[i].skill_lv, ms[i].casttime), ms[i].cancel);
|
||||||
|
if (!flag) md->skillidx = -1; //Skill failed.
|
||||||
|
return flag;
|
||||||
} else {
|
} else {
|
||||||
// IDŽw’è
|
// IDŽw’è
|
||||||
if (ms[i].target <= MST_MASTER) {
|
if (ms[i].target <= MST_MASTER) {
|
||||||
@ -2850,8 +2854,11 @@ int mobskill_use(struct mob_data *md, unsigned int tick, int event)
|
|||||||
bl = &md->bl;
|
bl = &md->bl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return (bl && unit_skilluse_id2(&md->bl, bl->id, ms[i].skill_id, ms[i].skill_lv,
|
md->skillidx = i;
|
||||||
|
flag = (bl && unit_skilluse_id2(&md->bl, bl->id, ms[i].skill_id, ms[i].skill_lv,
|
||||||
skill_castfix(&md->bl,ms[i].skill_id, ms[i].skill_lv, ms[i].casttime), ms[i].cancel));
|
skill_castfix(&md->bl,ms[i].skill_id, ms[i].skill_lv, ms[i].casttime), ms[i].cancel));
|
||||||
|
if (!flag) md->skillidx = -1;
|
||||||
|
return flag;
|
||||||
} else {
|
} else {
|
||||||
if (battle_config.error_log)
|
if (battle_config.error_log)
|
||||||
ShowWarning("Wrong mob skill target 'around' for non-ground skill %d (%s). Mob %d - %s\n",
|
ShowWarning("Wrong mob skill target 'around' for non-ground skill %d (%s). Mob %d - %s\n",
|
||||||
|
@ -4793,7 +4793,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
|||||||
|
|
||||||
case NPC_PROVOCATION:
|
case NPC_PROVOCATION:
|
||||||
clif_skill_nodamage(src,bl,skillid,skilllv,1);
|
clif_skill_nodamage(src,bl,skillid,skilllv,1);
|
||||||
if(md)
|
if(md && md->skillidx >= 0)
|
||||||
clif_pet_performance(src,md->db->skill[md->skillidx].val[0]);
|
clif_pet_performance(src,md->db->skill[md->skillidx].val[0]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user