diff options
| author | silinoron <none@none> | 2010-09-05 13:12:24 -0700 |
|---|---|---|
| committer | silinoron <none@none> | 2010-09-05 13:12:24 -0700 |
| commit | be7d94f24e77d3c5e98fd8790c810bb2f95327e9 (patch) | |
| tree | 21916cced4665501c3d2bdcdddeca91c15dbacfe /src/server/game/Chat/Commands | |
| parent | de59ac3bc36ebdd9cd87f6f12d640f5fc12ded5e (diff) | |
Add support for character race and faction transfers.
Based (loosely) on patch by Ner'zhul, DarkXuan, and darkshines@sakha.net.
Fixes issue #3429.
--HG--
branch : trunk
Diffstat (limited to 'src/server/game/Chat/Commands')
| -rw-r--r-- | src/server/game/Chat/Commands/Level2.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/server/game/Chat/Commands/Level2.cpp b/src/server/game/Chat/Commands/Level2.cpp index 763726e79ae..838d3e861d9 100644 --- a/src/server/game/Chat/Commands/Level2.cpp +++ b/src/server/game/Chat/Commands/Level2.cpp @@ -3254,6 +3254,61 @@ bool ChatHandler::HandleCharacterCustomizeCommand(const char* args) return true; } +bool ChatHandler::HandleCharacterChangeFactionCommand(const char * args) +{ + Player* target; + uint64 target_guid; + std::string target_name; + + if(!extractPlayerTarget((char*)args,&target,&target_guid,&target_name)) + return false; + + if(target) + { + // TODO : add text into database + PSendSysMessage(LANG_CUSTOMIZE_PLAYER, GetNameLink(target).c_str()); + target->SetAtLoginFlag(AT_LOGIN_CHANGE_FACTION); + CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '64' WHERE guid = %u", target->GetGUIDLow()); + } + else + { + std::string oldNameLink = playerLink(target_name); + + // TODO : add text into database + PSendSysMessage(LANG_CUSTOMIZE_PLAYER_GUID, oldNameLink.c_str(), GUID_LOPART(target_guid)); + CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '64' WHERE guid = %u", GUID_LOPART(target_guid)); + } + + return true; +} + +bool ChatHandler::HandleCharacterChangeRaceCommand(const char * args) +{ + Player* target; + uint64 target_guid; + std::string target_name; + if(!extractPlayerTarget((char*)args,&target,&target_guid,&target_name)) + return false; + + if(target) + { + // TODO : add text into database + PSendSysMessage(LANG_CUSTOMIZE_PLAYER, GetNameLink(target).c_str()); + target->SetAtLoginFlag(AT_LOGIN_CHANGE_RACE); + CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '128' WHERE guid = %u", target->GetGUIDLow()); + } + else + { + std::string oldNameLink = playerLink(target_name); + + // TODO : add text into database + PSendSysMessage(LANG_CUSTOMIZE_PLAYER_GUID, oldNameLink.c_str(), GUID_LOPART(target_guid)); + CharacterDatabase.PExecute("UPDATE characters SET at_login = at_login | '128' WHERE guid = %u", GUID_LOPART(target_guid)); + } + + return true; +} + bool ChatHandler::HandleCharacterReputationCommand(const char* args) { Player* target; |
