diff options
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/eathena/skillrecv.cpp | 98 |
1 files changed, 41 insertions, 57 deletions
diff --git a/src/net/eathena/skillrecv.cpp b/src/net/eathena/skillrecv.cpp index 35c19e953..8be8df445 100644 --- a/src/net/eathena/skillrecv.cpp +++ b/src/net/eathena/skillrecv.cpp @@ -281,6 +281,7 @@ void SkillRecv::processSkillFailed(Net::MessageIn &msg) const int itemId = msg.readItemId("item id"); const signed char success = msg.readUInt8("success"); const signed char reason = msg.readUInt8("reason"); + if (success != CAST_S32(SKILL_FAILED) && bskill == CAST_S32(BSKILL_EMOTE)) { @@ -290,7 +291,8 @@ void SkillRecv::processSkillFailed(Net::MessageIn &msg) if (localPlayer != nullptr) localPlayer->stopCast(true); - std::string txt; + int skillErrorCode = skillId; + if (success == CAST_S32(SKILL_FAILED) && bskill != 0) { if ((localPlayer != nullptr) && bskill == CAST_S32(BSKILL_EMOTE) @@ -298,129 +300,110 @@ void SkillRecv::processSkillFailed(Net::MessageIn &msg) { localPlayer->stopAdvert(); } - - const SkillInfo *const info = skillDialog - ? skillDialog->getSkill(bskill) - : nullptr; - if (info != nullptr) - { - txt = info->errorText; - } - else - { - // TRANSLATORS: skill error message - txt = strprintf(_("Unknown skill error: %d"), bskill); - } + skillErrorCode = bskill; } + + const SkillInfo *const info = skillDialog ? skillDialog->getSkill(skillId) + : nullptr; + + std::string txt; + if (info != nullptr) + txt = info->errorText + "."; else { - const SkillInfo *const info = skillDialog - ? skillDialog->getSkill(skillId) - : nullptr; - if (info != nullptr) - { - txt = info->errorText + "."; - } - else - { - // TRANSLATORS: skill error message - txt = strprintf(_("Unknown skill error: %d."), skillId); - } + // TRANSLATORS: skill fail error message + txt = strprintf(_("Unknown skill error: %d."), skillErrorCode); } txt.append(" "); switch (reason) { case RFAIL_SKILLDEP: - // TRANSLATORS: error message + // TRANSLATORS: skill fail error message txt.append(_("You have not yet reached a high enough lvl!")); break; case RFAIL_INSUFHP: - // TRANSLATORS: error message + // TRANSLATORS: skill fail error message txt.append(_("Insufficient HP!")); break; case RFAIL_INSUFSP: - // TRANSLATORS: error message + // TRANSLATORS: skill fail error message txt.append(_("Insufficient SP!")); break; case RFAIL_NOMEMO: - // TRANSLATORS: error message + // TRANSLATORS: skill fail error message txt.append(_("You have no memos!")); break; case RFAIL_SKILLDELAY: - // TRANSLATORS: error message + // TRANSLATORS: skill fail error message txt.append(_("You cannot do that right now!")); break; case RFAIL_ZENY: - // TRANSLATORS: error message + // TRANSLATORS: skill fail error message txt.append(_("Seems you need more money... ;-)")); break; case RFAIL_WEAPON: - // TRANSLATORS: error message + // TRANSLATORS: skill fail error message txt.append(_("You cannot use this skill with that " - "kind of weapon!")); + "kind of weapon!")); break; case RFAIL_REDGEM: - // TRANSLATORS: error message + // TRANSLATORS: skill fail error message txt.append(_("You need another red gem!")); break; case RFAIL_BLUEGEM: - // TRANSLATORS: error message + // TRANSLATORS: skill fail error message txt.append(_("You need another blue gem!")); break; case RFAIL_OVERWEIGHT: - // TRANSLATORS: error message - txt.append(_("You're carrying to much to do this!")); + // TRANSLATORS: skill fail error message + txt.append(_("You're carrying too much to do this!")); break; case RFAIL_SUMMON: - // TRANSLATORS: error message + // TRANSLATORS: skill fail error message txt.append(_("Fail summon.")); break; case RFAIL_SPIRITS: - // TRANSLATORS: error message + // TRANSLATORS: skill fail error message txt.append(_("Need spirits.")); break; case RFAIL_NEED_EQUIPMENT: { const int amount = bskill; - const ItemInfo &info = ItemDB::get(itemId); + const char* const link = ItemDB::get(itemId).getLink().c_str(); if (amount == 1) { - // TRANSLATORS: skill error message - txt.append(strprintf(_("Need equipment %s."), - info.getLink().c_str())); + // TRANSLATORS: skill fail error message + txt.append(strprintf(_("Need equipment %s."), link)); } else { - // TRANSLATORS: skill error message - txt.append(strprintf(_("Need equipment %s and amount %d"), - info.getLink().c_str(), - amount)); + // TRANSLATORS: skill fail error message + txt.append(strprintf(_("Need %d of equipment %s"), + amount, link)); } break; } case RFAIL_NEED_ITEM: { const int amount = bskill; - const ItemInfo &info = ItemDB::get(itemId); + const char* const link = ItemDB::get(itemId).getLink().c_str(); if (amount == 1) { - // TRANSLATORS: skill error message - txt.append(strprintf(_("Need item %s."), - info.getLink().c_str())); + // TRANSLATORS: skill fail error message + txt.append(strprintf(_("Need item %s."), link)); } else { - // TRANSLATORS: skill error message - txt.append(strprintf(_("Need item %s and amount %d"), - info.getLink().c_str(), - amount)); + // TRANSLATORS: skill fail error message + txt.append(strprintf(_("Need %d of item %s"), + amount, link)); } break; } case RFAIL: { - // TRANSLATORS: error message + // TRANSLATORS: skill fail error message txt.append(_("Skill failed!")); break; } @@ -429,6 +412,7 @@ void SkillRecv::processSkillFailed(Net::MessageIn &msg) UNIMPLEMENTEDPACKETFIELD(reason); break; } + if (debugChatTab != nullptr) debugChatTab->chatLog("SKILL: " + txt, |