Core/Misc: Do not apply Deserter debuff to players teleported from the battleground by gm command (.appear/.summon).

This commit is contained in:
r4dish
2024-01-06 10:17:34 +02:00
committed by Shauren
parent 196dd226df
commit 1dc9b83a25
3 changed files with 33 additions and 24 deletions

View File

@@ -384,16 +384,6 @@ public:
handler->SetSentErrorMessage(true);
return false;
}
// if both players are in different bgs
else if (_player->GetBattlegroundId() && _player->GetBattlegroundId() != target->GetBattlegroundId())
_player->LeaveBattleground(false); // Note: should be changed so _player gets no Deserter debuff
// all's well, set bg id
// when porting out from the bg, it will be reset to 0
_player->SetBattlegroundId(target->GetBattlegroundId(), target->GetBattlegroundTypeId());
// remember current position as entry point for return at bg end teleportation
if (!_player->GetMap()->IsBattlegroundOrArena())
_player->SetBattlegroundEntryPoint();
}
else if (map->IsDungeon())
{
@@ -442,6 +432,19 @@ public:
handler->PSendSysMessage(LANG_APPEARING_AT, chrNameLink.c_str());
if (_player->GetBattlegroundId() && _player->GetBattlegroundId() != target->GetBattlegroundId())
_player->LeaveBattleground(false, true);
if (map->IsBattlegroundOrArena())
{
// all's well, set bg id
// when porting out from the bg, it will be reset to 0
_player->SetBattlegroundId(target->GetBattlegroundId(), target->GetBattlegroundTypeId());
// remember current position as entry point for return at bg end teleportation
if (!_player->GetMap()->IsBattlegroundOrArena())
_player->SetBattlegroundEntryPoint();
}
// stop flight if need
if (_player->IsInFlight())
_player->FinishTaxiFlight();
@@ -472,6 +475,9 @@ public:
if (!Player::LoadPositionFromDB(map, x, y, z, o, in_flight, targetGuid))
return false;
if (_player->GetBattlegroundId())
_player->LeaveBattleground(false, true);
// stop flight if need
if (_player->IsInFlight())
_player->FinishTaxiFlight();
@@ -526,18 +532,8 @@ public:
handler->SetSentErrorMessage(true);
return false;
}
// if both players are in different bgs
else if (target->GetBattlegroundId() && _player->GetBattlegroundId() != target->GetBattlegroundId())
target->LeaveBattleground(false); // Note: should be changed so target gets no Deserter debuff
// all's well, set bg id
// when porting out from the bg, it will be reset to 0
target->SetBattlegroundId(_player->GetBattlegroundId(), _player->GetBattlegroundTypeId());
// remember current position as entry point for return at bg end teleportation
if (!target->GetMap()->IsBattlegroundOrArena())
target->SetBattlegroundEntryPoint();
}
else if (map->Instanceable())
else if (map->IsDungeon())
{
Map* targetMap = target->GetMap();
Player* targetGroupLeader = nullptr;
@@ -566,6 +562,19 @@ public:
if (handler->needReportToTarget(target))
ChatHandler(target->GetSession()).PSendSysMessage(LANG_SUMMONED_BY, handler->playerLink(_player->GetName()).c_str());
if (target->GetBattlegroundId() && _player->GetBattlegroundId() != target->GetBattlegroundId())
target->LeaveBattleground(false, true);
if (map->IsBattlegroundOrArena())
{
// all's well, set bg id
// when porting out from the bg, it will be reset to 0
target->SetBattlegroundId(_player->GetBattlegroundId(), _player->GetBattlegroundTypeId());
// remember current position as entry point for return at bg end teleportation
if (!target->GetMap()->IsBattlegroundOrArena())
target->SetBattlegroundEntryPoint();
}
// stop flight if need
if (_player->IsInFlight())
_player->FinishTaxiFlight();