mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 07:37:01 +00:00
Merge branch 'master' into 310
Conflicts: src/game/Unit.cpp
This commit is contained in:
commit
2a8776e567
14 changed files with 196 additions and 125 deletions
|
|
@ -700,17 +700,9 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder * holder)
|
||||||
if(ChrClassesEntry const* cEntry = sChrClassesStore.LookupEntry(pCurrChar->getClass()))
|
if(ChrClassesEntry const* cEntry = sChrClassesStore.LookupEntry(pCurrChar->getClass()))
|
||||||
{
|
{
|
||||||
if (cEntry->CinematicSequence)
|
if (cEntry->CinematicSequence)
|
||||||
{
|
pCurrChar->SendCinematicStart(cEntry->CinematicSequence);
|
||||||
data.Initialize(SMSG_TRIGGER_CINEMATIC, 4);
|
|
||||||
data << uint32(cEntry->CinematicSequence);
|
|
||||||
SendPacket( &data );
|
|
||||||
}
|
|
||||||
else if (ChrRacesEntry const* rEntry = sChrRacesStore.LookupEntry(pCurrChar->getRace()))
|
else if (ChrRacesEntry const* rEntry = sChrRacesStore.LookupEntry(pCurrChar->getRace()))
|
||||||
{
|
pCurrChar->SendCinematicStart(rEntry->CinematicSequence);
|
||||||
data.Initialize(SMSG_TRIGGER_CINEMATIC, 4);
|
|
||||||
data << uint32(rEntry->CinematicSequence);
|
|
||||||
SendPacket( &data );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -105,34 +105,39 @@ ChatCommand * ChatHandler::getCommandTable()
|
||||||
{ NULL, 0, false, NULL, "", NULL }
|
{ NULL, 0, false, NULL, "", NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static ChatCommand debugCommandTable[] =
|
static ChatCommand debugSendCommandTable[] =
|
||||||
{
|
{
|
||||||
{ "inarc", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugInArcCommand, "", NULL },
|
{ "buyerror", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendBuyErrorCommand, "", NULL },
|
||||||
{ "spellfail", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSpellFailCommand, "", NULL },
|
{ "channelnotify", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendChannelNotifyCommand, "", NULL },
|
||||||
{ "setpoi", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSetPoiCommand, "", NULL },
|
{ "chatmmessage", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendChatMsgCommand, "", NULL },
|
||||||
|
{ "equiperror", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendEquipErrorCommand, "", NULL },
|
||||||
|
{ "largepacket", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendLargePacketCommand, "", NULL },
|
||||||
|
{ "opcode", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendOpcodeCommand, "", NULL },
|
||||||
|
{ "poi", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendPoiCommand, "", NULL },
|
||||||
{ "qpartymsg", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendQuestPartyMsgCommand, "", NULL },
|
{ "qpartymsg", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendQuestPartyMsgCommand, "", NULL },
|
||||||
{ "qinvalidmsg", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendQuestInvalidMsgCommand, "", NULL },
|
{ "qinvalidmsg", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendQuestInvalidMsgCommand, "", NULL },
|
||||||
{ "equiperr", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugEquipErrorCommand, "", NULL },
|
{ "sellerror", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendSellErrorCommand, "", NULL },
|
||||||
{ "sellerr", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSellErrorCommand, "", NULL },
|
{ "setphaseshift", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendSetPhaseShiftCommand, "", NULL },
|
||||||
{ "buyerr", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugBuyErrorCommand, "", NULL },
|
{ "spellfail", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendSpellFailCommand, "", NULL },
|
||||||
{ "sendopcode", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendOpcodeCommand, "", NULL },
|
{ NULL, 0, false, NULL, "", NULL }
|
||||||
{ "spawnvehicle", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSpawnVehicle, "", NULL },
|
};
|
||||||
{ "uws", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugUpdateWorldStateCommand, "", NULL },
|
|
||||||
{ "scn", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendChannelNotifyCommand, "", NULL },
|
static ChatCommand debugCommandTable[] =
|
||||||
{ "scm", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendChatMsgCommand, "", NULL },
|
{
|
||||||
{ "sps", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendSetPhaseShiftCommand, "", NULL },
|
|
||||||
{ "getitemstate", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugGetItemState, "", NULL },
|
|
||||||
{ "playsound", SEC_MODERATOR, false, &ChatHandler::HandleDebugPlaySoundCommand, "", NULL },
|
|
||||||
{ "update", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugUpdate, "", NULL },
|
|
||||||
{ "setvalue", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSetValue, "", NULL },
|
|
||||||
{ "getvalue", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugGetValue, "", NULL },
|
|
||||||
{ "Mod32Value", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugMod32Value, "", NULL },
|
|
||||||
{ "anim", SEC_GAMEMASTER, false, &ChatHandler::HandleDebugAnimCommand, "", NULL },
|
{ "anim", SEC_GAMEMASTER, false, &ChatHandler::HandleDebugAnimCommand, "", NULL },
|
||||||
{ "lootrecipient", SEC_GAMEMASTER, false, &ChatHandler::HandleDebugGetLootRecipient, "", NULL },
|
|
||||||
{ "arena", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugArenaCommand, "", NULL },
|
{ "arena", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugArenaCommand, "", NULL },
|
||||||
{ "bg", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugBattlegroundCommand, "", NULL },
|
{ "bg", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugBattlegroundCommand, "", NULL },
|
||||||
{ "sendlargepacket",SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSendLargePacketCommand, "", NULL },
|
{ "getitemstate", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugGetItemState, "", NULL },
|
||||||
|
{ "lootrecipient", SEC_GAMEMASTER, false, &ChatHandler::HandleDebugGetLootRecipient, "", NULL },
|
||||||
|
{ "getvalue", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugGetValue, "", NULL },
|
||||||
|
{ "Mod32Value", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugMod32Value, "", NULL },
|
||||||
|
{ "playsound", SEC_MODERATOR, false, &ChatHandler::HandleDebugPlaySoundCommand, "", NULL },
|
||||||
|
{ "send", SEC_ADMINISTRATOR, false, NULL, "", debugSendCommandTable },
|
||||||
{ "setitemflag", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSetItemFlagCommand, "", NULL },
|
{ "setitemflag", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSetItemFlagCommand, "", NULL },
|
||||||
|
{ "setvalue", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSetValue, "", NULL },
|
||||||
|
{ "spawnvehicle", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugSpawnVehicle, "", NULL },
|
||||||
|
{ "uws", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugUpdateWorldStateCommand, "", NULL },
|
||||||
|
{ "update", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDebugUpdate, "", NULL },
|
||||||
{ NULL, 0, false, NULL, "", NULL }
|
{ NULL, 0, false, NULL, "", NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -148,11 +153,11 @@ ChatCommand * ChatHandler::getCommandTable()
|
||||||
static ChatCommand gmCommandTable[] =
|
static ChatCommand gmCommandTable[] =
|
||||||
{
|
{
|
||||||
{ "chat", SEC_MODERATOR, false, &ChatHandler::HandleGMChatCommand, "", NULL },
|
{ "chat", SEC_MODERATOR, false, &ChatHandler::HandleGMChatCommand, "", NULL },
|
||||||
|
{ "fly", SEC_ADMINISTRATOR, false, &ChatHandler::HandleGMFlyCommand, "", NULL },
|
||||||
{ "ingame", SEC_PLAYER, true, &ChatHandler::HandleGMListIngameCommand, "", NULL },
|
{ "ingame", SEC_PLAYER, true, &ChatHandler::HandleGMListIngameCommand, "", NULL },
|
||||||
{ "list", SEC_ADMINISTRATOR, true, &ChatHandler::HandleGMListFullCommand, "", NULL },
|
{ "list", SEC_ADMINISTRATOR, true, &ChatHandler::HandleGMListFullCommand, "", NULL },
|
||||||
{ "visible", SEC_MODERATOR, false, &ChatHandler::HandleGMVisibleCommand, "", NULL },
|
{ "visible", SEC_MODERATOR, false, &ChatHandler::HandleGMVisibleCommand, "", NULL },
|
||||||
{ "fly", SEC_ADMINISTRATOR, false, &ChatHandler::HandleGMFlyModeCommand, "", NULL },
|
{ "", SEC_MODERATOR, false, &ChatHandler::HandleGMCommand, "", NULL },
|
||||||
{ "", SEC_MODERATOR, false, &ChatHandler::HandleGMmodeCommand, "", NULL },
|
|
||||||
{ NULL, 0, false, NULL, "", NULL }
|
{ NULL, 0, false, NULL, "", NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -100,8 +100,6 @@ class ChatHandler
|
||||||
bool HandleStartCommand(const char* args);
|
bool HandleStartCommand(const char* args);
|
||||||
bool HandleDismountCommand(const char* args);
|
bool HandleDismountCommand(const char* args);
|
||||||
bool HandleSaveCommand(const char* args);
|
bool HandleSaveCommand(const char* args);
|
||||||
bool HandleGMListIngameCommand(const char* args);
|
|
||||||
bool HandleGMListFullCommand(const char* args);
|
|
||||||
|
|
||||||
bool HandleNamegoCommand(const char* args);
|
bool HandleNamegoCommand(const char* args);
|
||||||
bool HandleGonameCommand(const char* args);
|
bool HandleGonameCommand(const char* args);
|
||||||
|
|
@ -109,9 +107,6 @@ class ChatHandler
|
||||||
bool HandleRecallCommand(const char* args);
|
bool HandleRecallCommand(const char* args);
|
||||||
bool HandleAnnounceCommand(const char* args);
|
bool HandleAnnounceCommand(const char* args);
|
||||||
bool HandleNotifyCommand(const char* args);
|
bool HandleNotifyCommand(const char* args);
|
||||||
bool HandleGMmodeCommand(const char* args);
|
|
||||||
bool HandleGMChatCommand(const char* args);
|
|
||||||
bool HandleGMVisibleCommand(const char* args);
|
|
||||||
bool HandleGPSCommand(const char* args);
|
bool HandleGPSCommand(const char* args);
|
||||||
bool HandleTaxiCheatCommand(const char* args);
|
bool HandleTaxiCheatCommand(const char* args);
|
||||||
bool HandleWhispersCommand(const char* args);
|
bool HandleWhispersCommand(const char* args);
|
||||||
|
|
@ -122,11 +117,45 @@ class ChatHandler
|
||||||
bool HandleSendMailCommand(const char* args);
|
bool HandleSendMailCommand(const char* args);
|
||||||
bool HandleSendMoneyCommand(const char* args);
|
bool HandleSendMoneyCommand(const char* args);
|
||||||
|
|
||||||
|
bool HandleDebugAnimCommand(const char* args);
|
||||||
|
bool HandleDebugArenaCommand(const char * args);
|
||||||
|
bool HandleDebugBattlegroundCommand(const char * args);
|
||||||
|
bool HandleDebugGetItemState(const char * args);
|
||||||
|
bool HandleDebugGetLootRecipient(const char * args);
|
||||||
|
bool HandleDebugGetValue(const char* args);
|
||||||
|
bool HandleDebugMod32Value(const char* args);
|
||||||
|
bool HandleDebugPlaySoundCommand(const char* args);
|
||||||
|
bool HandleDebugSetValue(const char* args);
|
||||||
|
bool HandleDebugSetItemFlagCommand(const char * args);
|
||||||
|
bool HandleDebugSpawnVehicle(const char * args);
|
||||||
|
bool HandleDebugUpdate(const char* args);
|
||||||
|
bool HandleDebugUpdateWorldStateCommand(const char* args);
|
||||||
|
|
||||||
|
bool HandleDebugSendBuyErrorCommand(const char* args);
|
||||||
|
bool HandleDebugSendChannelNotifyCommand(const char* args);
|
||||||
|
bool HandleDebugSendChatMsgCommand(const char* args);
|
||||||
|
bool HandleDebugSendEquipErrorCommand(const char* args);
|
||||||
|
bool HandleDebugSendLargePacketCommand(const char * args);
|
||||||
|
bool HandleDebugSendOpcodeCommand(const char* args);
|
||||||
|
bool HandleDebugSendPoiCommand(const char* args);
|
||||||
|
bool HandleDebugSendQuestPartyMsgCommand(const char* args);
|
||||||
|
bool HandleDebugSendQuestInvalidMsgCommand(const char* args);
|
||||||
|
bool HandleDebugSendSellErrorCommand(const char* args);
|
||||||
|
bool HandleDebugSendSetPhaseShiftCommand(const char * args);
|
||||||
|
bool HandleDebugSendSpellFailCommand(const char* args);
|
||||||
|
|
||||||
bool HandleEventActiveListCommand(const char* args);
|
bool HandleEventActiveListCommand(const char* args);
|
||||||
bool HandleEventStartCommand(const char* args);
|
bool HandleEventStartCommand(const char* args);
|
||||||
bool HandleEventStopCommand(const char* args);
|
bool HandleEventStopCommand(const char* args);
|
||||||
bool HandleEventInfoCommand(const char* args);
|
bool HandleEventInfoCommand(const char* args);
|
||||||
|
|
||||||
|
bool HandleGMCommand(const char* args);
|
||||||
|
bool HandleGMChatCommand(const char* args);
|
||||||
|
bool HandleGMFlyCommand(const char* args);
|
||||||
|
bool HandleGMListFullCommand(const char* args);
|
||||||
|
bool HandleGMListIngameCommand(const char* args);
|
||||||
|
bool HandleGMVisibleCommand(const char* args);
|
||||||
|
|
||||||
bool HandleLearnCommand(const char* args);
|
bool HandleLearnCommand(const char* args);
|
||||||
bool HandleLearnAllCommand(const char* args);
|
bool HandleLearnAllCommand(const char* args);
|
||||||
bool HandleLearnAllGMCommand(const char* args);
|
bool HandleLearnAllGMCommand(const char* args);
|
||||||
|
|
@ -305,17 +334,10 @@ class ChatHandler
|
||||||
bool HandleHonorUpdateCommand(const char* args);
|
bool HandleHonorUpdateCommand(const char* args);
|
||||||
|
|
||||||
bool HandleLoadScriptsCommand(const char* args);
|
bool HandleLoadScriptsCommand(const char* args);
|
||||||
bool HandleDebugSendQuestPartyMsgCommand(const char* args);
|
|
||||||
bool HandleDebugSendQuestInvalidMsgCommand(const char* args);
|
|
||||||
|
|
||||||
bool HandleDebugInArcCommand(const char* args);
|
|
||||||
bool HandleDebugSpellFailCommand(const char* args);
|
|
||||||
|
|
||||||
bool HandleGUIDCommand(const char* args);
|
bool HandleGUIDCommand(const char* args);
|
||||||
bool HandleItemMoveCommand(const char* args);
|
bool HandleItemMoveCommand(const char* args);
|
||||||
bool HandleDeMorphCommand(const char* args);
|
bool HandleDeMorphCommand(const char* args);
|
||||||
bool HandleDebugSetPoiCommand(const char* args);
|
|
||||||
bool HandleDebugEquipErrorCommand(const char* args);
|
|
||||||
bool HandleGoCreatureCommand(const char* args);
|
bool HandleGoCreatureCommand(const char* args);
|
||||||
bool HandleGoObjectCommand(const char* args);
|
bool HandleGoObjectCommand(const char* args);
|
||||||
bool HandleGoTriggerCommand(const char* args);
|
bool HandleGoTriggerCommand(const char* args);
|
||||||
|
|
@ -355,8 +377,6 @@ class ChatHandler
|
||||||
bool HandleUnLearnCommand(const char* args);
|
bool HandleUnLearnCommand(const char* args);
|
||||||
bool HandleGetDistanceCommand(const char* args);
|
bool HandleGetDistanceCommand(const char* args);
|
||||||
bool HandleGameObjectAddCommand(const char* args);
|
bool HandleGameObjectAddCommand(const char* args);
|
||||||
bool HandleDebugAnimCommand(const char* args);
|
|
||||||
bool HandleDebugPlaySoundCommand(const char* args);
|
|
||||||
bool HandleModifyStandStateCommand(const char* args);
|
bool HandleModifyStandStateCommand(const char* args);
|
||||||
bool HandleDieCommand(const char* args);
|
bool HandleDieCommand(const char* args);
|
||||||
bool HandleDamageCommand(const char *args);
|
bool HandleDamageCommand(const char *args);
|
||||||
|
|
@ -379,7 +399,6 @@ class ChatHandler
|
||||||
bool HandleGuildUninviteCommand(const char* args);
|
bool HandleGuildUninviteCommand(const char* args);
|
||||||
bool HandleGuildRankCommand(const char* args);
|
bool HandleGuildRankCommand(const char* args);
|
||||||
bool HandleGuildDeleteCommand(const char* args);
|
bool HandleGuildDeleteCommand(const char* args);
|
||||||
bool HandleDebugUpdate(const char* args);
|
|
||||||
bool HandleBankCommand(const char* args);
|
bool HandleBankCommand(const char* args);
|
||||||
bool HandleChangeWeather(const char* args);
|
bool HandleChangeWeather(const char* args);
|
||||||
bool HandleKickPlayerCommand(const char * args);
|
bool HandleKickPlayerCommand(const char * args);
|
||||||
|
|
@ -412,13 +431,6 @@ class ChatHandler
|
||||||
bool HandleWpShowCommand(const char* args);
|
bool HandleWpShowCommand(const char* args);
|
||||||
bool HandleWpExportCommand(const char* args);
|
bool HandleWpExportCommand(const char* args);
|
||||||
bool HandleWpImportCommand(const char* args);
|
bool HandleWpImportCommand(const char* args);
|
||||||
bool HandleGMFlyModeCommand(const char* args);
|
|
||||||
bool HandleDebugSendOpcodeCommand(const char* args);
|
|
||||||
bool HandleDebugSellErrorCommand(const char* args);
|
|
||||||
bool HandleDebugBuyErrorCommand(const char* args);
|
|
||||||
bool HandleDebugUpdateWorldStateCommand(const char* args);
|
|
||||||
bool HandleDebugSendChannelNotifyCommand(const char* args);
|
|
||||||
bool HandleDebugSendChatMsgCommand(const char* args);
|
|
||||||
bool HandleRenameCommand(const char * args);
|
bool HandleRenameCommand(const char * args);
|
||||||
bool HandleCustomizeCommand(const char * args);
|
bool HandleCustomizeCommand(const char * args);
|
||||||
bool HandlePDumpLoadCommand(const char *args);
|
bool HandlePDumpLoadCommand(const char *args);
|
||||||
|
|
@ -436,22 +448,11 @@ class ChatHandler
|
||||||
bool HandleWaterwalkCommand(const char* args);
|
bool HandleWaterwalkCommand(const char* args);
|
||||||
|
|
||||||
//! Development Commands
|
//! Development Commands
|
||||||
bool HandleDebugSetValue(const char* args);
|
|
||||||
bool HandleDebugGetValue(const char* args);
|
|
||||||
bool HandleSet32Bit(const char* args);
|
bool HandleSet32Bit(const char* args);
|
||||||
bool HandleDebugMod32Value(const char* args);
|
|
||||||
bool HandleQuestAdd(const char * args);
|
bool HandleQuestAdd(const char * args);
|
||||||
bool HandleQuestRemove(const char * args);
|
bool HandleQuestRemove(const char * args);
|
||||||
bool HandleQuestComplete(const char * args);
|
bool HandleQuestComplete(const char * args);
|
||||||
bool HandleSaveAllCommand(const char* args);
|
bool HandleSaveAllCommand(const char* args);
|
||||||
bool HandleDebugGetItemState(const char * args);
|
|
||||||
bool HandleDebugGetLootRecipient(const char * args);
|
|
||||||
bool HandleDebugArenaCommand(const char * args);
|
|
||||||
bool HandleDebugBattlegroundCommand(const char * args);
|
|
||||||
bool HandleDebugSpawnVehicle(const char * args);
|
|
||||||
bool HandleDebugSendLargePacketCommand(const char * args);
|
|
||||||
bool HandleDebugSendSetPhaseShiftCommand(const char * args);
|
|
||||||
bool HandleDebugSetItemFlagCommand(const char * args);
|
|
||||||
|
|
||||||
Player* getSelectedPlayer();
|
Player* getSelectedPlayer();
|
||||||
Creature* getSelectedCreature();
|
Creature* getSelectedCreature();
|
||||||
|
|
|
||||||
|
|
@ -974,11 +974,8 @@ void GameObject::Use(Unit* user)
|
||||||
Player* player = (Player*)user;
|
Player* player = (Player*)user;
|
||||||
|
|
||||||
if (info->camera.cinematicId)
|
if (info->camera.cinematicId)
|
||||||
{
|
player->SendCinematicStart(info->camera.cinematicId);
|
||||||
WorldPacket data(SMSG_TRIGGER_CINEMATIC, 4);
|
|
||||||
data << info->camera.cinematicId;
|
|
||||||
player->GetSession()->SendPacket(&data);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//fishing bobber
|
//fishing bobber
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,7 @@ bool ChatHandler::HandleNotifyCommand(const char* args)
|
||||||
}
|
}
|
||||||
|
|
||||||
//Enable\Dissable GM Mode
|
//Enable\Dissable GM Mode
|
||||||
bool ChatHandler::HandleGMmodeCommand(const char* args)
|
bool ChatHandler::HandleGMCommand(const char* args)
|
||||||
{
|
{
|
||||||
if(!*args)
|
if(!*args)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -3768,17 +3768,6 @@ bool ChatHandler::HandleCustomizeCommand(const char* args)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//show animation
|
|
||||||
bool ChatHandler::HandleDebugAnimCommand(const char* args)
|
|
||||||
{
|
|
||||||
if (!*args)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
uint32 anim_id = atoi((char*)args);
|
|
||||||
m_session->GetPlayer()->HandleEmoteCommand(anim_id);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//change standstate
|
//change standstate
|
||||||
bool ChatHandler::HandleModifyStandStateCommand(const char* args)
|
bool ChatHandler::HandleModifyStandStateCommand(const char* args)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -5609,7 +5609,7 @@ bool ChatHandler::HandleRespawnCommand(const char* /*args*/)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ChatHandler::HandleGMFlyModeCommand(const char* args)
|
bool ChatHandler::HandleGMFlyCommand(const char* args)
|
||||||
{
|
{
|
||||||
if (!*args)
|
if (!*args)
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -5480,6 +5480,20 @@ void Player::SendDirectMessage(WorldPacket *data)
|
||||||
GetSession()->SendPacket(data);
|
GetSession()->SendPacket(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Player::SendCinematicStart(uint32 CinematicSequenceId)
|
||||||
|
{
|
||||||
|
WorldPacket data(SMSG_TRIGGER_CINEMATIC, 4);
|
||||||
|
data << uint32(CinematicSequenceId);
|
||||||
|
SendDirectMessage(&data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Player::SendMovieStart(uint32 MovieId)
|
||||||
|
{
|
||||||
|
WorldPacket data(SMSG_TRIGGER_MOVIE, 4);
|
||||||
|
data << uint32(MovieId);
|
||||||
|
SendDirectMessage(&data);
|
||||||
|
}
|
||||||
|
|
||||||
void Player::CheckExploreSystem()
|
void Player::CheckExploreSystem()
|
||||||
{
|
{
|
||||||
if (!isAlive())
|
if (!isAlive())
|
||||||
|
|
|
||||||
|
|
@ -1989,6 +1989,9 @@ class MANGOS_DLL_SPEC Player : public Unit
|
||||||
uint32 GetOldPetSpell() const { return m_oldpetspell; }
|
uint32 GetOldPetSpell() const { return m_oldpetspell; }
|
||||||
void SetOldPetSpell(uint32 petspell) { m_oldpetspell = petspell; }
|
void SetOldPetSpell(uint32 petspell) { m_oldpetspell = petspell; }
|
||||||
|
|
||||||
|
void SendCinematicStart(uint32 CinematicSequenceId);
|
||||||
|
void SendMovieStart(uint32 MovieId);
|
||||||
|
|
||||||
/*********************************************************/
|
/*********************************************************/
|
||||||
/*** INSTANCE SYSTEM ***/
|
/*** INSTANCE SYSTEM ***/
|
||||||
/*********************************************************/
|
/*********************************************************/
|
||||||
|
|
|
||||||
|
|
@ -3072,21 +3072,28 @@ void Aura::HandleModPossess(bool apply, bool Real)
|
||||||
m_target->StopMoving();
|
m_target->StopMoving();
|
||||||
m_target->GetMotionMaster()->Clear();
|
m_target->GetMotionMaster()->Clear();
|
||||||
m_target->GetMotionMaster()->MoveIdle();
|
m_target->GetMotionMaster()->MoveIdle();
|
||||||
CharmInfo *charmInfo = ((Creature*)m_target)->InitCharmInfo(m_target);
|
}
|
||||||
charmInfo->InitPossessCreateSpells();
|
else if(m_target->GetTypeId() == TYPEID_PLAYER)
|
||||||
|
{
|
||||||
|
((Player*)m_target)->SetClientControl(m_target, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(CharmInfo *charmInfo = m_target->InitCharmInfo(m_target))
|
||||||
|
charmInfo->InitPossessCreateSpells();
|
||||||
|
|
||||||
if(caster->GetTypeId() == TYPEID_PLAYER)
|
if(caster->GetTypeId() == TYPEID_PLAYER)
|
||||||
{
|
|
||||||
((Player*)caster)->PossessSpellInitialize();
|
((Player*)caster)->PossessSpellInitialize();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_target->SetCharmerGUID(0);
|
m_target->SetCharmerGUID(0);
|
||||||
|
caster->InterruptSpell(CURRENT_CHANNELED_SPELL); // the spell is not automatically canceled when interrupted, do it now
|
||||||
|
|
||||||
if(m_target->GetTypeId() == TYPEID_PLAYER)
|
if(m_target->GetTypeId() == TYPEID_PLAYER)
|
||||||
|
{
|
||||||
((Player*)m_target)->setFactionForRace(m_target->getRace());
|
((Player*)m_target)->setFactionForRace(m_target->getRace());
|
||||||
|
((Player*)m_target)->SetClientControl(m_target, 1);
|
||||||
|
}
|
||||||
else if(m_target->GetTypeId() == TYPEID_UNIT)
|
else if(m_target->GetTypeId() == TYPEID_UNIT)
|
||||||
{
|
{
|
||||||
CreatureInfo const *cinfo = ((Creature*)m_target)->GetCreatureInfo();
|
CreatureInfo const *cinfo = ((Creature*)m_target)->GetCreatureInfo();
|
||||||
|
|
@ -3190,7 +3197,7 @@ void Aura::HandleModCharm(bool apply, bool Real)
|
||||||
if(m_target->GetTypeId() == TYPEID_UNIT)
|
if(m_target->GetTypeId() == TYPEID_UNIT)
|
||||||
{
|
{
|
||||||
((Creature*)m_target)->AIM_Initialize();
|
((Creature*)m_target)->AIM_Initialize();
|
||||||
CharmInfo *charmInfo = ((Creature*)m_target)->InitCharmInfo(m_target);
|
CharmInfo *charmInfo = m_target->InitCharmInfo(m_target);
|
||||||
charmInfo->InitCharmCreateSpells();
|
charmInfo->InitCharmCreateSpells();
|
||||||
charmInfo->SetReactState( REACT_DEFENSIVE );
|
charmInfo->SetReactState( REACT_DEFENSIVE );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,11 @@ void WorldSession::HandleUseItemOpcode(WorldPacket& recvPacket)
|
||||||
CHECK_PACKET_SIZE(recvPacket,1+1+1+4+8+4+1);
|
CHECK_PACKET_SIZE(recvPacket,1+1+1+4+8+4+1);
|
||||||
|
|
||||||
Player* pUser = _player;
|
Player* pUser = _player;
|
||||||
|
|
||||||
|
// ignore for remote control state
|
||||||
|
if(pUser->m_mover != pUser)
|
||||||
|
return;
|
||||||
|
|
||||||
uint8 bagIndex, slot;
|
uint8 bagIndex, slot;
|
||||||
uint8 unk_flags; // flags (if 0x02 - some additional data are received)
|
uint8 unk_flags; // flags (if 0x02 - some additional data are received)
|
||||||
uint8 cast_count; // next cast if exists (single or not)
|
uint8 cast_count; // next cast if exists (single or not)
|
||||||
|
|
@ -138,6 +143,11 @@ void WorldSession::HandleOpenItemOpcode(WorldPacket& recvPacket)
|
||||||
sLog.outDetail("WORLD: CMSG_OPEN_ITEM packet, data length = %i",(uint32)recvPacket.size());
|
sLog.outDetail("WORLD: CMSG_OPEN_ITEM packet, data length = %i",(uint32)recvPacket.size());
|
||||||
|
|
||||||
Player* pUser = _player;
|
Player* pUser = _player;
|
||||||
|
|
||||||
|
// ignore for remote control state
|
||||||
|
if(pUser->m_mover != pUser)
|
||||||
|
return;
|
||||||
|
|
||||||
uint8 bagIndex, slot;
|
uint8 bagIndex, slot;
|
||||||
|
|
||||||
recvPacket >> bagIndex >> slot;
|
recvPacket >> bagIndex >> slot;
|
||||||
|
|
@ -215,6 +225,11 @@ void WorldSession::HandleGameObjectUseOpcode( WorldPacket & recv_data )
|
||||||
recv_data >> guid;
|
recv_data >> guid;
|
||||||
|
|
||||||
sLog.outDebug( "WORLD: Recvd CMSG_GAMEOBJ_USE Message [guid=%u]", GUID_LOPART(guid));
|
sLog.outDebug( "WORLD: Recvd CMSG_GAMEOBJ_USE Message [guid=%u]", GUID_LOPART(guid));
|
||||||
|
|
||||||
|
// ignore for remote control state
|
||||||
|
if(_player->m_mover != _player)
|
||||||
|
return;
|
||||||
|
|
||||||
GameObject *obj = ObjectAccessor::GetGameObject(*_player, guid);
|
GameObject *obj = ObjectAccessor::GetGameObject(*_player, guid);
|
||||||
|
|
||||||
if(!obj)
|
if(!obj)
|
||||||
|
|
@ -235,6 +250,10 @@ void WorldSession::HandleGameobjectReportUse(WorldPacket& recvPacket)
|
||||||
|
|
||||||
sLog.outDebug( "WORLD: Recvd CMSG_GAMEOBJ_REPORT_USE Message [in game guid: %u]", GUID_LOPART(guid));
|
sLog.outDebug( "WORLD: Recvd CMSG_GAMEOBJ_REPORT_USE Message [in game guid: %u]", GUID_LOPART(guid));
|
||||||
|
|
||||||
|
// ignore for remote control state
|
||||||
|
if(_player->m_mover != _player)
|
||||||
|
return;
|
||||||
|
|
||||||
GameObject* go = ObjectAccessor::GetGameObject(*_player,guid);
|
GameObject* go = ObjectAccessor::GetGameObject(*_player,guid);
|
||||||
if(!go)
|
if(!go)
|
||||||
return;
|
return;
|
||||||
|
|
@ -255,6 +274,11 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket)
|
||||||
recvPacket >> spellId;
|
recvPacket >> spellId;
|
||||||
recvPacket >> unk_flags; // flags (if 0x02 - some additional data are received)
|
recvPacket >> unk_flags; // flags (if 0x02 - some additional data are received)
|
||||||
|
|
||||||
|
// ignore for remote control state (for player case)
|
||||||
|
Unit* mover = _player->m_mover;
|
||||||
|
if(mover != _player && mover->GetTypeId()==TYPEID_PLAYER)
|
||||||
|
return;
|
||||||
|
|
||||||
sLog.outDebug("WORLD: got cast spell packet, spellId - %u, cast_count: %u, unk_flags %u, data length = %i",
|
sLog.outDebug("WORLD: got cast spell packet, spellId - %u, cast_count: %u, unk_flags %u, data length = %i",
|
||||||
spellId, cast_count, unk_flags, (uint32)recvPacket.size());
|
spellId, cast_count, unk_flags, (uint32)recvPacket.size());
|
||||||
|
|
||||||
|
|
@ -266,16 +290,28 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(mover->GetTypeId()==TYPEID_PLAYER)
|
||||||
|
{
|
||||||
// not have spell in spellbook or spell passive and not casted by client
|
// not have spell in spellbook or spell passive and not casted by client
|
||||||
if ( !_player->HasActiveSpell (spellId) || IsPassiveSpell(spellId) )
|
if (!((Player*)mover)->HasActiveSpell (spellId) || IsPassiveSpell(spellId) )
|
||||||
{
|
{
|
||||||
//cheater? kick? ban?
|
//cheater? kick? ban?
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// not have spell in spellbook or spell passive and not casted by client
|
||||||
|
if (!((Creature*)mover)->HasSpell(spellId) || IsPassiveSpell(spellId) )
|
||||||
|
{
|
||||||
|
//cheater? kick? ban?
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// client provided targets
|
// client provided targets
|
||||||
SpellCastTargets targets;
|
SpellCastTargets targets;
|
||||||
if(!targets.read(&recvPacket,_player))
|
if(!targets.read(&recvPacket,mover))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// auto-selection buff level base at target level (in spellInfo)
|
// auto-selection buff level base at target level (in spellInfo)
|
||||||
|
|
@ -288,7 +324,7 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket)
|
||||||
spellInfo = actualSpellInfo;
|
spellInfo = actualSpellInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
Spell *spell = new Spell(_player, spellInfo, false);
|
Spell *spell = new Spell(mover, spellInfo, false);
|
||||||
spell->m_cast_count = cast_count; // set count of casts
|
spell->m_cast_count = cast_count; // set count of casts
|
||||||
spell->prepare(&targets);
|
spell->prepare(&targets);
|
||||||
}
|
}
|
||||||
|
|
@ -297,6 +333,11 @@ void WorldSession::HandleCancelCastOpcode(WorldPacket& recvPacket)
|
||||||
{
|
{
|
||||||
CHECK_PACKET_SIZE(recvPacket,5);
|
CHECK_PACKET_SIZE(recvPacket,5);
|
||||||
|
|
||||||
|
// ignore for remote control state (for player case)
|
||||||
|
Unit* mover = _player->m_mover;
|
||||||
|
if(mover != _player && mover->GetTypeId()==TYPEID_PLAYER)
|
||||||
|
return;
|
||||||
|
|
||||||
// increments with every CANCEL packet, don't use for now
|
// increments with every CANCEL packet, don't use for now
|
||||||
uint8 counter;
|
uint8 counter;
|
||||||
uint32 spellId;
|
uint32 spellId;
|
||||||
|
|
@ -307,14 +348,18 @@ void WorldSession::HandleCancelCastOpcode(WorldPacket& recvPacket)
|
||||||
if(spellId==26679)
|
if(spellId==26679)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(_player->IsNonMeleeSpellCasted(false))
|
if(mover->IsNonMeleeSpellCasted(false))
|
||||||
_player->InterruptNonMeleeSpells(false,spellId);
|
mover->InterruptNonMeleeSpells(false,spellId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldSession::HandleCancelAuraOpcode( WorldPacket& recvPacket)
|
void WorldSession::HandleCancelAuraOpcode( WorldPacket& recvPacket)
|
||||||
{
|
{
|
||||||
CHECK_PACKET_SIZE(recvPacket,4);
|
CHECK_PACKET_SIZE(recvPacket,4);
|
||||||
|
|
||||||
|
// ignore for remote control state
|
||||||
|
if(_player->m_mover != _player)
|
||||||
|
return;
|
||||||
|
|
||||||
uint32 spellId;
|
uint32 spellId;
|
||||||
recvPacket >> spellId;
|
recvPacket >> spellId;
|
||||||
|
|
||||||
|
|
@ -349,6 +394,10 @@ void WorldSession::HandlePetCancelAuraOpcode( WorldPacket& recvPacket)
|
||||||
{
|
{
|
||||||
CHECK_PACKET_SIZE(recvPacket, 8+4);
|
CHECK_PACKET_SIZE(recvPacket, 8+4);
|
||||||
|
|
||||||
|
// ignore for remote control state
|
||||||
|
if(_player->m_mover != _player)
|
||||||
|
return;
|
||||||
|
|
||||||
uint64 guid;
|
uint64 guid;
|
||||||
uint32 spellId;
|
uint32 spellId;
|
||||||
|
|
||||||
|
|
@ -396,7 +445,7 @@ void WorldSession::HandleCancelAutoRepeatSpellOpcode( WorldPacket& /*recvPacket*
|
||||||
{
|
{
|
||||||
// may be better send SMSG_CANCEL_AUTO_REPEAT?
|
// may be better send SMSG_CANCEL_AUTO_REPEAT?
|
||||||
// cancel and prepare for deleting
|
// cancel and prepare for deleting
|
||||||
_player->InterruptSpell(CURRENT_AUTOREPEAT_SPELL);
|
_player->m_mover->InterruptSpell(CURRENT_AUTOREPEAT_SPELL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// \todo Complete HandleCancelChanneling function
|
/// \todo Complete HandleCancelChanneling function
|
||||||
|
|
@ -414,6 +463,10 @@ void WorldSession::HandleTotemDestroy( WorldPacket& recvPacket)
|
||||||
{
|
{
|
||||||
CHECK_PACKET_SIZE(recvPacket, 1);
|
CHECK_PACKET_SIZE(recvPacket, 1);
|
||||||
|
|
||||||
|
// ignore for remote control state
|
||||||
|
if(_player->m_mover != _player)
|
||||||
|
return;
|
||||||
|
|
||||||
uint8 slotId;
|
uint8 slotId;
|
||||||
|
|
||||||
recvPacket >> slotId;
|
recvPacket >> slotId;
|
||||||
|
|
|
||||||
|
|
@ -10165,11 +10165,11 @@ void CharmInfo::InitEmptyActionBar()
|
||||||
|
|
||||||
void CharmInfo::InitPossessCreateSpells()
|
void CharmInfo::InitPossessCreateSpells()
|
||||||
{
|
{
|
||||||
if(m_unit->GetTypeId() == TYPEID_PLAYER)
|
|
||||||
return;
|
|
||||||
|
|
||||||
InitEmptyActionBar(); //charm action bar
|
InitEmptyActionBar(); //charm action bar
|
||||||
|
|
||||||
|
if(m_unit->GetTypeId() == TYPEID_PLAYER) //possessed players don't have spells, keep the action bar empty
|
||||||
|
return;
|
||||||
|
|
||||||
for(uint32 x = 0; x < CREATURE_MAX_SPELLS; ++x)
|
for(uint32 x = 0; x < CREATURE_MAX_SPELLS; ++x)
|
||||||
{
|
{
|
||||||
if (IsPassiveSpell(((Creature*)m_unit)->m_spells[x]))
|
if (IsPassiveSpell(((Creature*)m_unit)->m_spells[x]))
|
||||||
|
|
|
||||||
|
|
@ -31,22 +31,7 @@
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include "ObjectMgr.h"
|
#include "ObjectMgr.h"
|
||||||
|
|
||||||
bool ChatHandler::HandleDebugInArcCommand(const char* /*args*/)
|
bool ChatHandler::HandleDebugSendSpellFailCommand(const char* args)
|
||||||
{
|
|
||||||
Object *obj = getSelectedUnit();
|
|
||||||
|
|
||||||
if(!obj)
|
|
||||||
{
|
|
||||||
SendSysMessage(LANG_SELECT_CHAR_OR_CREATURE);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
SendSysMessage(LANG_NOT_IMPLEMENTED);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ChatHandler::HandleDebugSpellFailCommand(const char* args)
|
|
||||||
{
|
{
|
||||||
if(!args)
|
if(!args)
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -56,17 +41,31 @@ bool ChatHandler::HandleDebugSpellFailCommand(const char* args)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
uint8 failnum = (uint8)atoi(px);
|
uint8 failnum = (uint8)atoi(px);
|
||||||
|
if(failnum==0 && *px!='0')
|
||||||
|
return false;
|
||||||
|
|
||||||
|
char* p1 = strtok(NULL, " ");
|
||||||
|
uint8 failarg1 = p1 ? (uint8)atoi(p1) : 0;
|
||||||
|
|
||||||
|
char* p2 = strtok(NULL, " ");
|
||||||
|
uint8 failarg2 = p2 ? (uint8)atoi(p2) : 0;
|
||||||
|
|
||||||
|
|
||||||
WorldPacket data(SMSG_CAST_FAILED, 5);
|
WorldPacket data(SMSG_CAST_FAILED, 5);
|
||||||
data << uint8(0);
|
data << uint8(0);
|
||||||
data << uint32(133);
|
data << uint32(133);
|
||||||
data << uint8(failnum);
|
data << uint8(failnum);
|
||||||
|
if(p1 || p2)
|
||||||
|
data << uint32(failarg1);
|
||||||
|
if(p2)
|
||||||
|
data << uint32(failarg2);
|
||||||
|
|
||||||
m_session->SendPacket(&data);
|
m_session->SendPacket(&data);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ChatHandler::HandleDebugSetPoiCommand(const char* args)
|
bool ChatHandler::HandleDebugSendPoiCommand(const char* args)
|
||||||
{
|
{
|
||||||
Player *pPlayer = m_session->GetPlayer();
|
Player *pPlayer = m_session->GetPlayer();
|
||||||
Unit* target = getSelectedUnit();
|
Unit* target = getSelectedUnit();
|
||||||
|
|
@ -92,7 +91,7 @@ bool ChatHandler::HandleDebugSetPoiCommand(const char* args)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ChatHandler::HandleDebugEquipErrorCommand(const char* args)
|
bool ChatHandler::HandleDebugSendEquipErrorCommand(const char* args)
|
||||||
{
|
{
|
||||||
if(!args)
|
if(!args)
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -102,7 +101,7 @@ bool ChatHandler::HandleDebugEquipErrorCommand(const char* args)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ChatHandler::HandleDebugSellErrorCommand(const char* args)
|
bool ChatHandler::HandleDebugSendSellErrorCommand(const char* args)
|
||||||
{
|
{
|
||||||
if(!args)
|
if(!args)
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -112,7 +111,7 @@ bool ChatHandler::HandleDebugSellErrorCommand(const char* args)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ChatHandler::HandleDebugBuyErrorCommand(const char* args)
|
bool ChatHandler::HandleDebugSendBuyErrorCommand(const char* args)
|
||||||
{
|
{
|
||||||
if(!args)
|
if(!args)
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -646,3 +645,14 @@ bool ChatHandler::HandleDebugSetItemFlagCommand(const char* args)
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//show animation
|
||||||
|
bool ChatHandler::HandleDebugAnimCommand(const char* args)
|
||||||
|
{
|
||||||
|
if (!*args)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
uint32 anim_id = atoi((char*)args);
|
||||||
|
m_session->GetPlayer()->HandleEmoteCommand(anim_id);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "7609"
|
#define REVISION_NR "7614"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue