summaryrefslogtreecommitdiff
path: root/src/net/eathena
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/eathena')
-rw-r--r--src/net/eathena/skillhandler.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/net/eathena/skillhandler.cpp b/src/net/eathena/skillhandler.cpp
index 374952014..742b3f0f6 100644
--- a/src/net/eathena/skillhandler.cpp
+++ b/src/net/eathena/skillhandler.cpp
@@ -292,9 +292,19 @@ void SkillHandler::processSkillUpdate(Net::MessageIn &msg)
void SkillHandler::processSkillDelete(Net::MessageIn &msg)
{
- UNIMPLIMENTEDPACKET;
- // ignored, because after this packet server will send all skills.
- msg.readInt32("skill id");
+ int updateSkill = 0;
+ const int skillId = msg.readInt16("skill id");
+ const int oldLevel = PlayerInfo::getSkillLevel(skillId);
+ if (oldLevel && oldLevel != 0)
+ updateSkill = skillId;
+ PlayerInfo::setSkillLevel(skillId, 0);
+ if (skillDialog)
+ {
+ skillDialog->removeSkill(skillId);
+ skillDialog->update();
+ if (updateSkill)
+ skillDialog->playUpdateEffect(updateSkill);
+ }
}
void SkillHandler::processSkillCoolDown(Net::MessageIn &msg)