summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/net/ea/skillhandler.cpp171
-rw-r--r--src/net/ea/skillhandler.h31
-rw-r--r--src/net/eathena/skillhandler.cpp144
-rw-r--r--src/net/eathena/skillhandler.h2
-rw-r--r--src/net/tmwa/skillhandler.cpp144
-rw-r--r--src/net/tmwa/skillhandler.h2
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);
};