diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/net/ea/skillhandler.cpp | 171 | ||||
-rw-r--r-- | src/net/ea/skillhandler.h | 31 | ||||
-rw-r--r-- | src/net/eathena/skillhandler.cpp | 144 | ||||
-rw-r--r-- | src/net/eathena/skillhandler.h | 2 | ||||
-rw-r--r-- | src/net/tmwa/skillhandler.cpp | 144 | ||||
-rw-r--r-- | src/net/tmwa/skillhandler.h | 2 |
6 files changed, 321 insertions, 173 deletions
diff --git a/src/net/ea/skillhandler.cpp b/src/net/ea/skillhandler.cpp index 99fffac86..d723efc54 100644 --- a/src/net/ea/skillhandler.cpp +++ b/src/net/ea/skillhandler.cpp @@ -23,51 +23,15 @@ #include "net/ea/skillhandler.h" #include "logger.h" -#include "notifymanager.h" -#include "being/localplayer.h" #include "being/playerinfo.h" #include "gui/windows/skilldialog.h" -#include "utils/gettext.h" -#include "utils/stringutils.h" - #include "net/messagein.h" -#include "resources/notifytypes.h" - #include "debug.h" -/** job dependend identifiers (?) */ -static const unsigned int SKILL_BASIC = 0x0001; -static const unsigned int SKILL_WARP = 0x001b; -static const unsigned int SKILL_STEAL = 0x0032; -static const unsigned int SKILL_ENVENOM = 0x0034; - -/** basic skills identifiers */ -static const unsigned int BSKILL_TRADE = 0x0000; -static const unsigned int BSKILL_EMOTE = 0x0001; -static const unsigned int BSKILL_SIT = 0x0002; -static const unsigned int BSKILL_CREATECHAT = 0x0003; -static const unsigned int BSKILL_JOINPARTY = 0x0004; -static const unsigned int BSKILL_SHOUT = 0x0005; - -/** reasons why action failed */ -static const unsigned int RFAIL_SKILLDEP = 0x00; -static const unsigned int RFAIL_INSUFSP = 0x01; -static const unsigned int RFAIL_INSUFHP = 0x02; -static const unsigned int RFAIL_NOMEMO = 0x03; -static const unsigned int RFAIL_SKILLDELAY = 0x04; -static const unsigned int RFAIL_ZENY = 0x05; -static const unsigned int RFAIL_WEAPON = 0x06; -static const unsigned int RFAIL_REDGEM = 0x07; -static const unsigned int RFAIL_BLUEGEM = 0x08; -static const unsigned int RFAIL_OVERWEIGHT = 0x09; - -/** should always be zero if failed */ -static const unsigned int SKILL_FAILED = 0x00; - namespace Ea { @@ -98,139 +62,4 @@ void SkillHandler::processPlayerSkillUp(Net::MessageIn &msg) } } -void SkillHandler::processSkillFailed(Net::MessageIn &msg) -{ - // Action failed (ex. sit because you have not reached the - // right level) - const int skillId = msg.readInt16(); - const int16_t bskill = msg.readInt16(); - msg.readInt16(); // btype - const signed char success = msg.readUInt8(); - const signed char reason = msg.readUInt8(); - if (success != static_cast<int>(SKILL_FAILED) - && bskill == static_cast<int>(BSKILL_EMOTE)) - { - logger->log("Action: %d/%d", bskill, success); - } - - std::string txt; - if (success == static_cast<int>(SKILL_FAILED) - && skillId == static_cast<int>(SKILL_BASIC)) - { - if (localPlayer && bskill == static_cast<int>(BSKILL_EMOTE) - && reason == static_cast<int>(RFAIL_SKILLDEP)) - { - localPlayer->stopAdvert(); - } - - switch (bskill) - { - case BSKILL_TRADE: - // TRANSLATORS: error message - txt = _("Trade failed!"); - break; - case BSKILL_EMOTE: - // TRANSLATORS: error message - txt = _("Emote failed!"); - break; - case BSKILL_SIT: - // TRANSLATORS: error message - txt = _("Sit failed!"); - break; - case BSKILL_CREATECHAT: - // TRANSLATORS: error message - txt = _("Chat creating failed!"); - break; - case BSKILL_JOINPARTY: - // TRANSLATORS: error message - txt = _("Could not join party!"); - break; - case BSKILL_SHOUT: - // TRANSLATORS: error message - txt = _("Cannot shout!"); - break; - default: - logger->log("QQQ SMSG_SKILL_FAILED: bskill " - + toString(bskill)); - break; - } - - txt.append(" "); - - switch (reason) - { - case RFAIL_SKILLDEP: - // TRANSLATORS: error message - txt.append(_("You have not yet reached a high enough lvl!")); - break; - case RFAIL_INSUFHP: - // TRANSLATORS: error message - txt.append(_("Insufficient HP!")); - break; - case RFAIL_INSUFSP: - // TRANSLATORS: error message - txt.append(_("Insufficient SP!")); - break; - case RFAIL_NOMEMO: - // TRANSLATORS: error message - txt.append(_("You have no memos!")); - break; - case RFAIL_SKILLDELAY: - // TRANSLATORS: error message - txt.append(_("You cannot do that right now!")); - break; - case RFAIL_ZENY: - // TRANSLATORS: error message - txt.append(_("Seems you need more money... ;-)")); - break; - case RFAIL_WEAPON: - // TRANSLATORS: error message - txt.append(_("You cannot use this skill with that " - "kind of weapon!")); - break; - case RFAIL_REDGEM: - // TRANSLATORS: error message - txt.append(_("You need another red gem!")); - break; - case RFAIL_BLUEGEM: - // TRANSLATORS: 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!")); - break; - default: - // TRANSLATORS: error message - txt.append(_("Huh? What's that?")); - logger->log("QQQ SMSG_SKILL_FAILED: reason " - + toString(reason)); - break; - } - } - else - { - switch (skillId) - { - case SKILL_WARP : - // TRANSLATORS: error message - txt = _("Warp failed..."); - break; - case SKILL_STEAL : - // TRANSLATORS: error message - txt = _("Could not steal anything..."); - break; - case SKILL_ENVENOM : - // TRANSLATORS: error message - txt = _("Poison had no effect..."); - break; - default: - logger->log("QQQ SMSG_SKILL_FAILED: skillId " - + toString(skillId)); - break; - } - } - - NotifyManager::notify(NotifyTypes::SKILL_FAIL_MESSAGE, txt); -} } // namespace Ea diff --git a/src/net/ea/skillhandler.h b/src/net/ea/skillhandler.h index 2ee2a11fc..933c4fde3 100644 --- a/src/net/ea/skillhandler.h +++ b/src/net/ea/skillhandler.h @@ -32,6 +32,35 @@ namespace Net class MessageIn; } +/** job dependend identifiers (?) */ +static const unsigned int SKILL_BASIC = 0x0001; +static const unsigned int SKILL_WARP = 0x001b; +static const unsigned int SKILL_STEAL = 0x0032; +static const unsigned int SKILL_ENVENOM = 0x0034; + +/** basic skills identifiers */ +static const unsigned int BSKILL_TRADE = 0x0000; +static const unsigned int BSKILL_EMOTE = 0x0001; +static const unsigned int BSKILL_SIT = 0x0002; +static const unsigned int BSKILL_CREATECHAT = 0x0003; +static const unsigned int BSKILL_JOINPARTY = 0x0004; +static const unsigned int BSKILL_SHOUT = 0x0005; + +/** reasons why action failed */ +static const unsigned int RFAIL_SKILLDEP = 0x00; +static const unsigned int RFAIL_INSUFSP = 0x01; +static const unsigned int RFAIL_INSUFHP = 0x02; +static const unsigned int RFAIL_NOMEMO = 0x03; +static const unsigned int RFAIL_SKILLDELAY = 0x04; +static const unsigned int RFAIL_ZENY = 0x05; +static const unsigned int RFAIL_WEAPON = 0x06; +static const unsigned int RFAIL_REDGEM = 0x07; +static const unsigned int RFAIL_BLUEGEM = 0x08; +static const unsigned int RFAIL_OVERWEIGHT = 0x09; + +/** should always be zero if failed */ +static const unsigned int SKILL_FAILED = 0x00; + namespace Ea { @@ -43,8 +72,6 @@ class SkillHandler notfinal : public Net::SkillHandler A_DELETE_COPY(SkillHandler) static void processPlayerSkillUp(Net::MessageIn &msg); - - static void processSkillFailed(Net::MessageIn &msg); }; } // namespace Ea diff --git a/src/net/eathena/skillhandler.cpp b/src/net/eathena/skillhandler.cpp index a23700df4..663e95876 100644 --- a/src/net/eathena/skillhandler.cpp +++ b/src/net/eathena/skillhandler.cpp @@ -22,6 +22,9 @@ #include "net/eathena/skillhandler.h" +#include "notifymanager.h" + +#include "being/localplayer.h" #include "being/playerinfo.h" #include "gui/windows/skilldialog.h" @@ -29,6 +32,11 @@ #include "net/eathena/messageout.h" #include "net/eathena/protocol.h" +#include "resources/notifytypes.h" + +#include "utils/gettext.h" +#include "utils/stringutils.h" + #include "debug.h" extern Net::SkillHandler *skillHandler; @@ -183,4 +191,140 @@ void SkillHandler::processSkillCoolDownList(Net::MessageIn &msg) } } +void SkillHandler::processSkillFailed(Net::MessageIn &msg) +{ + // Action failed (ex. sit because you have not reached the + // right level) + const int skillId = msg.readInt16(); + const int16_t bskill = msg.readInt16(); + msg.readInt16(); // btype + const signed char success = msg.readUInt8(); + const signed char reason = msg.readUInt8(); + if (success != static_cast<int>(SKILL_FAILED) + && bskill == static_cast<int>(BSKILL_EMOTE)) + { + logger->log("Action: %d/%d", bskill, success); + } + + std::string txt; + if (success == static_cast<int>(SKILL_FAILED) + && skillId == static_cast<int>(SKILL_BASIC)) + { + if (localPlayer && bskill == static_cast<int>(BSKILL_EMOTE) + && reason == static_cast<int>(RFAIL_SKILLDEP)) + { + localPlayer->stopAdvert(); + } + + switch (bskill) + { + case BSKILL_TRADE: + // TRANSLATORS: error message + txt = _("Trade failed!"); + break; + case BSKILL_EMOTE: + // TRANSLATORS: error message + txt = _("Emote failed!"); + break; + case BSKILL_SIT: + // TRANSLATORS: error message + txt = _("Sit failed!"); + break; + case BSKILL_CREATECHAT: + // TRANSLATORS: error message + txt = _("Chat creating failed!"); + break; + case BSKILL_JOINPARTY: + // TRANSLATORS: error message + txt = _("Could not join party!"); + break; + case BSKILL_SHOUT: + // TRANSLATORS: error message + txt = _("Cannot shout!"); + break; + default: + logger->log("QQQ SMSG_SKILL_FAILED: bskill " + + toString(bskill)); + break; + } + + txt.append(" "); + + switch (reason) + { + case RFAIL_SKILLDEP: + // TRANSLATORS: error message + txt.append(_("You have not yet reached a high enough lvl!")); + break; + case RFAIL_INSUFHP: + // TRANSLATORS: error message + txt.append(_("Insufficient HP!")); + break; + case RFAIL_INSUFSP: + // TRANSLATORS: error message + txt.append(_("Insufficient SP!")); + break; + case RFAIL_NOMEMO: + // TRANSLATORS: error message + txt.append(_("You have no memos!")); + break; + case RFAIL_SKILLDELAY: + // TRANSLATORS: error message + txt.append(_("You cannot do that right now!")); + break; + case RFAIL_ZENY: + // TRANSLATORS: error message + txt.append(_("Seems you need more money... ;-)")); + break; + case RFAIL_WEAPON: + // TRANSLATORS: error message + txt.append(_("You cannot use this skill with that " + "kind of weapon!")); + break; + case RFAIL_REDGEM: + // TRANSLATORS: error message + txt.append(_("You need another red gem!")); + break; + case RFAIL_BLUEGEM: + // TRANSLATORS: 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!")); + break; + default: + // TRANSLATORS: error message + txt.append(_("Huh? What's that?")); + logger->log("QQQ SMSG_SKILL_FAILED: reason " + + toString(reason)); + break; + } + } + else + { + switch (skillId) + { + case SKILL_WARP : + // TRANSLATORS: error message + txt = _("Warp failed..."); + break; + case SKILL_STEAL : + // TRANSLATORS: error message + txt = _("Could not steal anything..."); + break; + case SKILL_ENVENOM : + // TRANSLATORS: error message + txt = _("Poison had no effect..."); + break; + default: + logger->log("QQQ SMSG_SKILL_FAILED: skillId " + + toString(skillId)); + break; + } + } + + NotifyManager::notify(NotifyTypes::SKILL_FAIL_MESSAGE, txt); +} + } // namespace EAthena diff --git a/src/net/eathena/skillhandler.h b/src/net/eathena/skillhandler.h index 66f96f3eb..1622ec98b 100644 --- a/src/net/eathena/skillhandler.h +++ b/src/net/eathena/skillhandler.h @@ -52,6 +52,8 @@ class SkillHandler final : public MessageHandler, public Ea::SkillHandler void useMap(const int id, const std::string &map) const override final; protected: + static void processSkillFailed(Net::MessageIn &msg); + void processPlayerSkills(Net::MessageIn &msg); void processSkillCoolDown(Net::MessageIn &msg); diff --git a/src/net/tmwa/skillhandler.cpp b/src/net/tmwa/skillhandler.cpp index e6d6115eb..344664d36 100644 --- a/src/net/tmwa/skillhandler.cpp +++ b/src/net/tmwa/skillhandler.cpp @@ -22,6 +22,9 @@ #include "net/tmwa/skillhandler.h" +#include "notifymanager.h" + +#include "being/localplayer.h" #include "being/playerinfo.h" #include "gui/windows/skilldialog.h" @@ -29,6 +32,11 @@ #include "net/tmwa/messageout.h" #include "net/tmwa/protocol.h" +#include "resources/notifytypes.h" + +#include "utils/gettext.h" +#include "utils/stringutils.h" + #include "debug.h" extern Net::SkillHandler *skillHandler; @@ -150,4 +158,140 @@ void SkillHandler::processPlayerSkills(Net::MessageIn &msg) } } +void SkillHandler::processSkillFailed(Net::MessageIn &msg) +{ + // Action failed (ex. sit because you have not reached the + // right level) + const int skillId = msg.readInt16(); + const int16_t bskill = msg.readInt16(); + msg.readInt16(); // btype + const signed char success = msg.readUInt8(); + const signed char reason = msg.readUInt8(); + if (success != static_cast<int>(SKILL_FAILED) + && bskill == static_cast<int>(BSKILL_EMOTE)) + { + logger->log("Action: %d/%d", bskill, success); + } + + std::string txt; + if (success == static_cast<int>(SKILL_FAILED) + && skillId == static_cast<int>(SKILL_BASIC)) + { + if (localPlayer && bskill == static_cast<int>(BSKILL_EMOTE) + && reason == static_cast<int>(RFAIL_SKILLDEP)) + { + localPlayer->stopAdvert(); + } + + switch (bskill) + { + case BSKILL_TRADE: + // TRANSLATORS: error message + txt = _("Trade failed!"); + break; + case BSKILL_EMOTE: + // TRANSLATORS: error message + txt = _("Emote failed!"); + break; + case BSKILL_SIT: + // TRANSLATORS: error message + txt = _("Sit failed!"); + break; + case BSKILL_CREATECHAT: + // TRANSLATORS: error message + txt = _("Chat creating failed!"); + break; + case BSKILL_JOINPARTY: + // TRANSLATORS: error message + txt = _("Could not join party!"); + break; + case BSKILL_SHOUT: + // TRANSLATORS: error message + txt = _("Cannot shout!"); + break; + default: + logger->log("QQQ SMSG_SKILL_FAILED: bskill " + + toString(bskill)); + break; + } + + txt.append(" "); + + switch (reason) + { + case RFAIL_SKILLDEP: + // TRANSLATORS: error message + txt.append(_("You have not yet reached a high enough lvl!")); + break; + case RFAIL_INSUFHP: + // TRANSLATORS: error message + txt.append(_("Insufficient HP!")); + break; + case RFAIL_INSUFSP: + // TRANSLATORS: error message + txt.append(_("Insufficient SP!")); + break; + case RFAIL_NOMEMO: + // TRANSLATORS: error message + txt.append(_("You have no memos!")); + break; + case RFAIL_SKILLDELAY: + // TRANSLATORS: error message + txt.append(_("You cannot do that right now!")); + break; + case RFAIL_ZENY: + // TRANSLATORS: error message + txt.append(_("Seems you need more money... ;-)")); + break; + case RFAIL_WEAPON: + // TRANSLATORS: error message + txt.append(_("You cannot use this skill with that " + "kind of weapon!")); + break; + case RFAIL_REDGEM: + // TRANSLATORS: error message + txt.append(_("You need another red gem!")); + break; + case RFAIL_BLUEGEM: + // TRANSLATORS: 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!")); + break; + default: + // TRANSLATORS: error message + txt.append(_("Huh? What's that?")); + logger->log("QQQ SMSG_SKILL_FAILED: reason " + + toString(reason)); + break; + } + } + else + { + switch (skillId) + { + case SKILL_WARP : + // TRANSLATORS: error message + txt = _("Warp failed..."); + break; + case SKILL_STEAL : + // TRANSLATORS: error message + txt = _("Could not steal anything..."); + break; + case SKILL_ENVENOM : + // TRANSLATORS: error message + txt = _("Poison had no effect..."); + break; + default: + logger->log("QQQ SMSG_SKILL_FAILED: skillId " + + toString(skillId)); + break; + } + } + + NotifyManager::notify(NotifyTypes::SKILL_FAIL_MESSAGE, txt); +} + } // namespace TmwAthena diff --git a/src/net/tmwa/skillhandler.h b/src/net/tmwa/skillhandler.h index a1029ae6b..db808ad68 100644 --- a/src/net/tmwa/skillhandler.h +++ b/src/net/tmwa/skillhandler.h @@ -52,6 +52,8 @@ class SkillHandler final : public MessageHandler, public Ea::SkillHandler void useMap(const int id, const std::string &map) const override final; protected: + static void processSkillFailed(Net::MessageIn &msg); + void processPlayerSkills(Net::MessageIn &msg); }; |