aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Chat/Commands
diff options
context:
space:
mode:
authorsilinoron <none@none>2010-09-05 13:12:24 -0700
committersilinoron <none@none>2010-09-05 13:12:24 -0700
commitbe7d94f24e77d3c5e98fd8790c810bb2f95327e9 (patch)
tree21916cced4665501c3d2bdcdddeca91c15dbacfe /src/server/game/Chat/Commands
parentde59ac3bc36ebdd9cd87f6f12d640f5fc12ded5e (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.cpp55
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;