Originally posted by [b]HiddenDragon[/b]
http://www.eathena.ws/board/index.php?autocom=bugtracker&showbug=186
Currently on eAthena, whenever you cast Abracadabra, sometimes it will let you use a skill and other times it won't do anything even though a cast animation shows (thus
wasting 2 gemstones).
After a small investigation I discovered this in skill_castend_nodamage_id() [skill.c]:
CODE
if (sd)
{ //Crash-protection against Abracadabra casting pets
sd->skillitem = abra_skillid;
sd->skillitemlv = abra_skilllv;
sd->state.abra_flag = 1;
clif_item_skill (sd, abra_skillid, abra_skilllv);
} else
Problem is, clif_item_skill() sends an item skill usage packet to the client which is IGNORED for some skills. I checked the skills being used via a clif_displaymessage() function and it seems self buff skills (those with the bit INF_SELF_SKILL set for the skill) are ignored by the client.
Therefore I suggest the above be changed to this:
CODE
if (sd)
{ //Crash-protection against Abracadabra casting pets
sd->skillitem = abra_skillid;
sd->skillitemlv = abra_skilllv;
sd->state.abra_flag = 1;
if (skill_get_inf(abra_skillid)&INF_SELF_SKILL)
unit_skilluse_id(src, bl->id, abra_skillid, abra_skilllv);
else
clif_item_skill (sd, abra_skillid, abra_skilllv);
} else
That will allow things like Angelus to actually be casted through Abracadabra!
P.S. Another thing, the abra_db.txt is pretty old, and doesn't include even transcendant skills. Is it still like that on kRO? If so, can we have an abra_db2.txt that people can use that includes all the new skills?