diff options
author | Jared Adams <jaxad0127@gmail.com> | 2009-03-22 18:55:51 -0600 |
---|---|---|
committer | Jared Adams <jaxad0127@gmail.com> | 2009-03-22 20:38:13 -0600 |
commit | d3f315b45bd9055ac7f61082f5af54b863410517 (patch) | |
tree | 1314eaf07e01c7651330b2845c9bcd10def62586 /src/net | |
parent | 2303bb28359d18b8f23328376f800dc36e5c2f5f (diff) | |
download | mana-client-d3f315b45bd9055ac7f61082f5af54b863410517.tar.gz mana-client-d3f315b45bd9055ac7f61082f5af54b863410517.tar.bz2 mana-client-d3f315b45bd9055ac7f61082f5af54b863410517.tar.xz mana-client-d3f315b45bd9055ac7f61082f5af54b863410517.zip |
Move handling of eA skill messages to SkillHandler
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/ea/skillhandler.cpp | 130 |
1 files changed, 129 insertions, 1 deletions
diff --git a/src/net/ea/skillhandler.cpp b/src/net/ea/skillhandler.cpp index 6e766008..f5cec761 100644 --- a/src/net/ea/skillhandler.cpp +++ b/src/net/ea/skillhandler.cpp @@ -28,6 +28,134 @@ #include "../../gui/chat.h" #include "../../gui/skill.h" +#include "../../utils/gettext.h" + +/** job dependend identifiers (?) */ +#define SKILL_BASIC 0x0001 +#define SKILL_WARP 0x001b +#define SKILL_STEAL 0x0032 +#define SKILL_ENVENOM 0x0034 + +/** basic skills identifiers */ +#define BSKILL_TRADE 0x0000 +#define BSKILL_EMOTE 0x0001 +#define BSKILL_SIT 0x0002 +#define BSKILL_CREATECHAT 0x0003 +#define BSKILL_JOINPARTY 0x0004 +#define BSKILL_SHOUT 0x0005 +#define BSKILL_PK 0x0006 // ?? +#define BSKILL_SETALLIGN 0x0007 // ?? + +/** reasons why action failed */ +#define RFAIL_SKILLDEP 0x00 +#define RFAIL_INSUFHP 0x01 +#define RFAIL_INSUFSP 0x02 +#define RFAIL_NOMEMO 0x03 +#define RFAIL_SKILLDELAY 0x04 +#define RFAIL_ZENY 0x05 +#define RFAIL_WEAPON 0x06 +#define RFAIL_REDGEM 0x07 +#define RFAIL_BLUEGEM 0x08 +#define RFAIL_OVERWEIGHT 0x09 +#define RFAIL_GENERIC 0x0a + +/** should always be zero if failed */ +#define SKILL_FAILED 0x00 + +struct CHATSKILL +{ + short skill; + short bskill; + short unused; + char success; + char reason; +}; + +std::string const_msg(CHATSKILL act) +{ + std::string msg; + if (act.success == SKILL_FAILED && act.skill == SKILL_BASIC) + { + switch (act.bskill) + { + case BSKILL_TRADE: + msg = _("Trade failed!"); + break; + case BSKILL_EMOTE: + msg = _("Emote failed!"); + break; + case BSKILL_SIT: + msg = _("Sit failed!"); + break; + case BSKILL_CREATECHAT: + msg = _("Chat creating failed!"); + break; + case BSKILL_JOINPARTY: + msg = _("Could not join party!"); + break; + case BSKILL_SHOUT: + msg = _("Cannot shout!"); + break; + } + + msg += " "; + + switch (act.reason) + { + case RFAIL_SKILLDEP: + msg += _("You have not yet reached a high enough lvl!"); + break; + case RFAIL_INSUFHP: + msg += _("Insufficient HP!"); + break; + case RFAIL_INSUFSP: + msg += _("Insufficient SP!"); + break; + case RFAIL_NOMEMO: + msg += _("You have no memos!"); + break; + case RFAIL_SKILLDELAY: + msg += _("You cannot do that right now!"); + break; + case RFAIL_ZENY: + msg += _("Seems you need more money... ;-)"); + break; + case RFAIL_WEAPON: + msg += _("You cannot use this skill with that kind of weapon!"); + break; + case RFAIL_REDGEM: + msg += _("You need another red gem!"); + break; + case RFAIL_BLUEGEM: + msg += _("You need another blue gem!"); + break; + case RFAIL_OVERWEIGHT: + msg += _("You're carrying to much to do this!"); + break; + default: + msg += _("Huh? What's that?"); + break; + } + } + else + { + switch (act.skill) + { + case SKILL_WARP : + msg = _("Warp failed..."); + break; + case SKILL_STEAL : + msg = _("Could not steal anything..."); + break; + case SKILL_ENVENOM : + msg = _("Poison had no effect..."); + break; + } + } + + return msg; +} + SkillHandler::SkillHandler() { static const Uint16 _messages[] = { @@ -87,7 +215,7 @@ void SkillHandler::handleMessage(MessageIn &msg) { logger->log("Action: %d/%d", action.bskill, action.success); } - chatWindow->chatLog(action); + chatWindow->chatLog(const_msg(action)); break; } } |