Index: Language.h =================================================================== --- Language.h (revision 2702) +++ Language.h (working copy) @@ -34,6 +34,7 @@ #define LANG_CHAR_IN_FLIGHT "%s are flying and your command fail." #define LANG_CHAR_NON_MOUNTED "You are not mounted and can't do dismount." #define LANG_YOU_IN_COMBAT "You are fighting and can't do it." +#define LANG_FALLING "You can only do this command while falling." // alliance ranks #define LANG_ALI_PRIVATE "Private " @@ -78,7 +79,7 @@ #define LANG_HONOR_LIFE "Life Time: [Honorable Kills: |c0000ff00%u|r] [Dishonorable Kills: |c00ff0000%u|r] [Highest Rank %u: %s]" // level 1 chat -#define LANG_BROADCAST "BROADCAST: %s" +#define LANG_BROADCAST "System Message: %s" #define LANG_MAP_POSITION "Map: %u Zone: %u\nX: %f Y: %f Z: %f Orientation: %f grid[%u,%u]cell[%u,%u]" #define LANG_IS_TELEPORTED "%s is already being teleported." #define LANG_SUMMONING "You are summoning %s%s." Index: Level0.cpp =================================================================== --- Level0.cpp (revision 2702) +++ Level0.cpp (working copy) @@ -121,6 +121,12 @@ } chr->SetUInt32Value(PLAYER_FARSIGHT, 0x01); + + if (!chr->HasMovementFlags( MOVEMENT_FALLING )) + { + SendSysMessage(LANG_FALLING); + return true; + } PlayerInfo const *info = objmgr.GetPlayerInfo(chr->getRace(), chr->getClass()); Index: Level1.cpp =================================================================== --- Level1.cpp (revision 2702) +++ Level1.cpp (working copy) @@ -1221,6 +1221,13 @@ bool ChatHandler::HandleTeleCommand(const char * args) { + + Player* pl = m_session->GetPlayer(); + Player* plTarget = getSelectedPlayer(); + if(!plTarget) + plTarget = pl; + + if(m_session->GetPlayer()->isInFlight()) { SendSysMessage(LANG_YOU_IN_FLIGHT); @@ -1270,7 +1277,7 @@ return true; } - m_session->GetPlayer()->TeleportTo(mapid, x, y, z, ort); + plTarget->TeleportTo(mapid, x, y, z, ort); return true; } Index: Level3.cpp =================================================================== --- Level3.cpp (revision 2702) +++ Level3.cpp (working copy) @@ -1673,6 +1673,11 @@ if (!px) return false; + Player* pl = m_session->GetPlayer(); + Player* plTarget = getSelectedPlayer(); + if(!plTarget) + plTarget = pl; + uint32 spellID = (uint32)atoi(px); SpellEntry *spellInfo = sSpellStore.LookupEntry( spellID ); if(spellInfo) @@ -1684,7 +1689,7 @@ continue; if (eff == SPELL_EFFECT_APPLY_AURA || eff == SPELL_EFFECT_APPLY_AREA_AURA || eff == SPELL_EFFECT_PERSISTENT_AREA_AURA) { - Aura *Aur = new Aura(spellInfo, i, m_session->GetPlayer()); + Aura *Aur = new Aura(spellInfo, i, plTarget); m_session->GetPlayer()->AddAura(Aur); } } @@ -1699,15 +1704,20 @@ if (!px) return false; + Player* pl = m_session->GetPlayer(); + Player* plTarget = getSelectedPlayer(); + if(!plTarget) + plTarget = pl; + std::string argstr = args; if (argstr == "all") { - m_session->GetPlayer()->RemoveAllAuras(); + plTarget->RemoveAllAuras(); return true; } uint32 spellID = (uint32)atoi(px); - m_session->GetPlayer()->RemoveAurasDueToSpell(spellID); + plTarget->RemoveAurasDueToSpell(spellID); return true; } @@ -2660,7 +2670,7 @@ return false; } - if(std::string(args)=="stop") + if(std::string(args)=="stop" || std::string(args)=="abort") { sWorld.ShutdownCancel(); }