mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-24 07:30:07 -04:00
Core/Battlegrounds: Move to scripts (#29799)
* Introduce new BattlegroundScript class for map/bg specific scripts
* Remove all sub, zone specific, battleground classes except Arena
* Move all bg zone scripts to new BattlegroundScripts class in script folder
* Remove ZoneScript from Battleground class
* Remove some unused hooks from Battleground
(cherry picked from commit be11f42a16)
This commit is contained in:
@@ -2264,8 +2264,6 @@ bool GameObject::ActivateToQuest(Player const* target) const
|
||||
|| LootTemplates_Gameobject.HaveQuestLootForPlayer(GetGOInfo()->chest.chestPersonalLoot, target)
|
||||
|| LootTemplates_Gameobject.HaveQuestLootForPlayer(GetGOInfo()->chest.chestPushLoot, target))
|
||||
{
|
||||
if (Battleground const* bg = target->GetBattleground())
|
||||
return bg->CanActivateGO(GetEntry(), bg->GetPlayerTeam(target->GetGUID()));
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
@@ -2576,10 +2574,6 @@ void GameObject::Use(Unit* user)
|
||||
if (!player)
|
||||
return;
|
||||
|
||||
if (Battleground* bg = player->GetBattleground())
|
||||
if (!bg->CanActivateGO(GetEntry(), bg->GetPlayerTeam(user->GetGUID())))
|
||||
return;
|
||||
|
||||
GameObjectTemplate const* info = GetGOInfo();
|
||||
if (!m_loot && info->GetLootId())
|
||||
{
|
||||
@@ -3119,24 +3113,11 @@ void GameObject::Use(Unit* user)
|
||||
|
||||
if (player->CanUseBattlegroundObject(this))
|
||||
{
|
||||
// in battleground check
|
||||
Battleground* bg = player->GetBattleground();
|
||||
if (!bg)
|
||||
return;
|
||||
|
||||
if (player->GetVehicle())
|
||||
return;
|
||||
|
||||
player->RemoveAurasByType(SPELL_AURA_MOD_STEALTH);
|
||||
player->RemoveAurasByType(SPELL_AURA_MOD_INVISIBILITY);
|
||||
// BG flag click
|
||||
// AB:
|
||||
// 15001
|
||||
// 15002
|
||||
// 15003
|
||||
// 15004
|
||||
// 15005
|
||||
bg->EventPlayerClickedOnFlag(player, this);
|
||||
return; //we don;t need to delete flag ... it is despawned!
|
||||
}
|
||||
break;
|
||||
@@ -3167,11 +3148,6 @@ void GameObject::Use(Unit* user)
|
||||
|
||||
if (player->CanUseBattlegroundObject(this))
|
||||
{
|
||||
// in battleground check
|
||||
Battleground* bg = player->GetBattleground();
|
||||
if (!bg)
|
||||
return;
|
||||
|
||||
if (player->GetVehicle())
|
||||
return;
|
||||
|
||||
@@ -3184,24 +3160,8 @@ void GameObject::Use(Unit* user)
|
||||
// EotS:
|
||||
// 184142 - Netherstorm Flag
|
||||
GameObjectTemplate const* info = GetGOInfo();
|
||||
if (info)
|
||||
{
|
||||
switch (info->entry)
|
||||
{
|
||||
case 179785: // Silverwing Flag
|
||||
case 179786: // Warsong Flag
|
||||
if (bg->GetTypeID() == BATTLEGROUND_WS)
|
||||
bg->EventPlayerClickedOnFlag(player, this);
|
||||
break;
|
||||
case 184142: // Netherstorm Flag
|
||||
if (bg->GetTypeID() == BATTLEGROUND_EY)
|
||||
bg->EventPlayerClickedOnFlag(player, this);
|
||||
break;
|
||||
}
|
||||
|
||||
if (info->flagDrop.eventID)
|
||||
GameEvents::Trigger(info->flagDrop.eventID, player, this);
|
||||
}
|
||||
if (info->flagDrop.eventID)
|
||||
GameEvents::Trigger(info->flagDrop.eventID, player, this);
|
||||
//this cause to call return, all flags must be deleted here!!
|
||||
spellId = 0;
|
||||
Delete();
|
||||
@@ -3705,10 +3665,6 @@ void GameObject::SetDestructibleState(GameObjectDestructibleState state, WorldOb
|
||||
GameEvents::Trigger(GetGOInfo()->destructibleBuilding.DestroyedEvent, attackerOrHealer, this);
|
||||
AI()->Destroyed(attackerOrHealer, m_goInfo->destructibleBuilding.DestroyedEvent);
|
||||
|
||||
if (Player* player = attackerOrHealer ? attackerOrHealer->GetCharmerOrOwnerPlayerOrPlayerItself() : nullptr)
|
||||
if (Battleground* bg = player->GetBattleground())
|
||||
bg->DestroyGate(player, this);
|
||||
|
||||
RemoveFlag(GO_FLAG_DAMAGED);
|
||||
SetFlag(GO_FLAG_DESTROYED);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user