Core/Battlegrounds: Move to scripts And a lot of misc commits i couldn't recover.
Port From (https://github.com/TrinityCore/TrinityCore/commit/d0d5d309bb5877dc2fcb27f6cb123707a31ec1e8)
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
// Copyright (c) CypherCore <http://github.com/CypherCore> All rights reserved.
|
||||
// Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE file in the project root for full license information.
|
||||
|
||||
using Framework.Constants;
|
||||
using Game.AI;
|
||||
using Game.Entities;
|
||||
using Game.Scripting;
|
||||
using Game.Spells;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Scripts.Battlegrounds.ArthiBasin
|
||||
{
|
||||
[Script]
|
||||
[Script("npc_bg_ab_arathor_gryphon_rider_leader", PathGryphonRiderLeader)]
|
||||
[Script("npc_bg_ab_defiler_bat_rider_leader", PathBatRiderLeader)]
|
||||
class npc_bg_ab_gryphon_bat_rider_leader : ScriptedAI
|
||||
{
|
||||
const uint PathGryphonRiderLeader = 800000059;
|
||||
const uint PathBatRiderLeader = 800000058;
|
||||
|
||||
uint _pathId;
|
||||
|
||||
public npc_bg_ab_gryphon_bat_rider_leader(Creature creature, uint pathId) : base(creature)
|
||||
{
|
||||
_pathId = pathId;
|
||||
}
|
||||
|
||||
public override void WaypointPathEnded(uint nodeId, uint pathId)
|
||||
{
|
||||
if (pathId != _pathId)
|
||||
return;
|
||||
|
||||
// despawn formation group
|
||||
List<Creature> followers = me.GetCreatureListWithEntryInGrid(me.GetEntry());
|
||||
foreach (Creature follower in followers)
|
||||
follower.DespawnOrUnsummon(TimeSpan.FromMilliseconds(500));
|
||||
|
||||
me.DespawnOrUnsummon(TimeSpan.FromMilliseconds(500));
|
||||
}
|
||||
}
|
||||
|
||||
[Script] // 261985 - Blacksmith Working
|
||||
class spell_bg_ab_blacksmith_working : AuraScript
|
||||
{
|
||||
const uint ItemBlacksmithHammer = 5956;
|
||||
|
||||
void OnApply(AuraEffect aurEff, AuraEffectHandleModes mode)
|
||||
{
|
||||
GetTarget().SetVirtualItem(0, ItemBlacksmithHammer);
|
||||
}
|
||||
|
||||
void OnRemove(AuraEffect aurEff, AuraEffectHandleModes mode)
|
||||
{
|
||||
Creature creature = GetTarget().ToCreature();
|
||||
if (creature != null)
|
||||
creature.LoadEquipment(creature.GetOriginalEquipmentId());
|
||||
}
|
||||
|
||||
public override void Register()
|
||||
{
|
||||
AfterEffectApply.Add(new(OnApply, 0, AuraType.Dummy, AuraEffectHandleModes.Real));
|
||||
AfterEffectRemove.Add(new(OnRemove, 0, AuraType.Dummy, AuraEffectHandleModes.Real));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,597 @@
|
||||
// Copyright (c) CypherCore <http://github.com/CypherCore> All rights reserved.
|
||||
// Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE file in the project root for full license information.
|
||||
|
||||
using Framework.Constants;
|
||||
using Game.BattleGrounds;
|
||||
using Game.Entities;
|
||||
using Game.Maps;
|
||||
using Game.Scripting;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Scripts.Battlegrounds.ArthiBasin
|
||||
{
|
||||
enum PvpStats
|
||||
{
|
||||
BasesAssaulted = 926,
|
||||
BasesDefended = 927,
|
||||
}
|
||||
|
||||
enum EventIds
|
||||
{
|
||||
StartBattle = 9158, // Achievement: Let's Get This Done
|
||||
|
||||
ContestedStablesHorde = 28523,
|
||||
CaptureStablesHorde = 28527,
|
||||
DefendedStablesHorde = 28525,
|
||||
ContestedStablesAlliance = 28522,
|
||||
CaptureStablesAlliance = 28526,
|
||||
DefendedStablesAlliance = 28524,
|
||||
|
||||
ContestedBlacksmithHorde = 8876,
|
||||
CaptureBlacksmithHorde = 8773,
|
||||
DefendedBlacksmithHorde = 8770,
|
||||
ContestedBlacksmithAlliance = 8874,
|
||||
CaptureBlacksmithAlliance = 8769,
|
||||
DefendedBlacksmithAlliance = 8774,
|
||||
|
||||
ContestedFarmHorde = 39398,
|
||||
CaptureFarmHorde = 39399,
|
||||
DefendedFarmHorde = 39400,
|
||||
ContestedFarmAlliance = 39401,
|
||||
CaptureFarmAlliance = 39402,
|
||||
DefendedFarmAlliance = 39403,
|
||||
|
||||
ContestedGoldMineHorde = 39404,
|
||||
CaptureGoldMineHorde = 39405,
|
||||
DefendedGoldMineHorde = 39406,
|
||||
ContestedGoldMineAlliance = 39407,
|
||||
CaptureGoldMineAlliance = 39408,
|
||||
DefendedGoldMineAlliance = 39409,
|
||||
|
||||
ContestedLumberMillHorde = 39387,
|
||||
CaptureLumberMillHorde = 39388,
|
||||
DefendedLumberMillHorde = 39389,
|
||||
ContestedLumberMillAlliance = 39390,
|
||||
CaptureLumberMillAlliance = 39391,
|
||||
DefendedLumberMillAlliance = 39392
|
||||
}
|
||||
|
||||
enum SoundIds
|
||||
{
|
||||
NodeClaimed = 8192,
|
||||
NodeCapturedAlliance = 8173,
|
||||
NodeCapturedHorde = 8213,
|
||||
NodeAssaultedAlliance = 8212,
|
||||
NodeAssaultedHorde = 8174,
|
||||
NearVictoryAlliance = 8456,
|
||||
NearVictoryHorde = 8457
|
||||
}
|
||||
|
||||
enum BroadcastTexts
|
||||
{
|
||||
AllianceNearVictory = 10598,
|
||||
HordeNearVictory = 10599,
|
||||
}
|
||||
|
||||
enum CreatureIds
|
||||
{
|
||||
TheBlackBride = 150501,
|
||||
RadulfLeder = 150505
|
||||
}
|
||||
|
||||
enum GameObjectIds
|
||||
{
|
||||
CapturePointStables = 227420,
|
||||
CapturePointBlacksmith = 227522,
|
||||
CapturePointFarm = 227536,
|
||||
CapturePointGoldMine = 227538,
|
||||
CapturePointLumberMill = 227544,
|
||||
|
||||
GhostGate = 180322,
|
||||
AllianceDoor = 322273,
|
||||
HordeDoor = 322274
|
||||
}
|
||||
|
||||
enum WorldStateIds
|
||||
{
|
||||
OccupiedBasesHorde = 1778,
|
||||
OccupiedBasesAlly = 1779,
|
||||
ResourcesAlly = 1776,
|
||||
ResourcesHorde = 1777,
|
||||
ResourcesMax = 1780,
|
||||
ResourcesWarning = 1955,
|
||||
|
||||
StableIcon = 1842, // Stable Map Icon (None)
|
||||
StableStateAlience = 1767, // Stable Map State (Alience)
|
||||
StableStateHorde = 1768, // Stable Map State (Horde)
|
||||
StableStateConAli = 1769, // Stable Map State (Con Alience)
|
||||
StableStateConHor = 1770, // Stable Map State (Con Horde)
|
||||
FarmIcon = 1845, // Farm Map Icon (None)
|
||||
FarmStateAlience = 1772, // Farm State (Alience)
|
||||
FarmStateHorde = 1773, // Farm State (Horde)
|
||||
FarmStateConAli = 1774, // Farm State (Con Alience)
|
||||
FarmStateConHor = 1775, // Farm State (Con Horde)
|
||||
BlacksmithIcon = 1846, // Blacksmith Map Icon (None)
|
||||
BlacksmithStateAlience = 1782, // Blacksmith Map State (Alience)
|
||||
BlacksmithStateHorde = 1783, // Blacksmith Map State (Horde)
|
||||
BlacksmithStateConAli = 1784, // Blacksmith Map State (Con Alience)
|
||||
BlacksmithStateConHor = 1785, // Blacksmith Map State (Con Horde)
|
||||
LumbermillIcon = 1844, // Lumber Mill Map Icon (None)
|
||||
LumbermillStateAlience = 1792, // Lumber Mill Map State (Alience)
|
||||
LumbermillStateHorde = 1793, // Lumber Mill Map State (Horde)
|
||||
LumbermillStateConAli = 1794, // Lumber Mill Map State (Con Alience)
|
||||
LumbermillStateConHor = 1795, // Lumber Mill Map State (Con Horde)
|
||||
GoldmineIcon = 1843, // Gold Mine Map Icon (None)
|
||||
GoldmineStateAlience = 1787, // Gold Mine Map State (Alience)
|
||||
GoldmineStateHorde = 1788, // Gold Mine Map State (Horde)
|
||||
GoldmineStateConAli = 1789, // Gold Mine Map State (Con Alience
|
||||
GoldmineStateConHor = 1790, // Gold Mine Map State (Con Horde)
|
||||
|
||||
Had500DisadvantageAlliance = 3644,
|
||||
Had500DisadvantageHorde = 3645,
|
||||
|
||||
FarmIconNew = 8808, // Farm Map Icon
|
||||
LumberMillIconNew = 8805, // Lumber Mill Map Icon
|
||||
BlacksmithIconNew = 8799, // Blacksmith Map Icon
|
||||
GoldMineIconNew = 8809, // Gold Mine Map Icon
|
||||
StablesIconNew = 5834, // Stable Map Icon
|
||||
|
||||
FarmHordeControlState = 17328,
|
||||
FarmAllianceControlState = 17325,
|
||||
LumberMillHordeControlState = 17330,
|
||||
LumberMillAllianceControlState = 17326,
|
||||
BlacksmithHordeControlState = 17327,
|
||||
BlacksmithAllianceControlState = 17324,
|
||||
GoldMineHordeControlState = 17329,
|
||||
GoldMineAllianceControlState = 17323,
|
||||
StablesHordeControlState = 17331,
|
||||
StablesAllianceControlState = 17322,
|
||||
}
|
||||
|
||||
struct Misc
|
||||
{
|
||||
public const int WarningNearVictoryScore = 1200;
|
||||
public const int MaxTeamScore = 1500;
|
||||
|
||||
// Tick intervals and given points: case 0, 1, 2, 3, 4, 5 captured nodes
|
||||
public static uint TickInterval = 2000;
|
||||
public static uint[] TickPoints = { 0, 2, 3, 4, 7, 60 };
|
||||
public static uint NormalHonorTicks = 160;
|
||||
public static uint WeekendHonorTicks = 260;
|
||||
public static uint NormalReputationTicks = 120;
|
||||
public static uint WeekendReputationTicks = 160;
|
||||
}
|
||||
|
||||
[Script(nameof(battleground_arathi_basin), 2107)]
|
||||
class battleground_arathi_basin : BattlegroundScript
|
||||
{
|
||||
uint _lastTick;
|
||||
uint[] _honorScoreTics = new uint[SharedConst.PvpTeamsCount];
|
||||
uint[] _reputationScoreTics = new uint[SharedConst.PvpTeamsCount];
|
||||
bool _isInformedNearVictory;
|
||||
uint _honorTics;
|
||||
uint _reputationTics;
|
||||
|
||||
List<ObjectGuid> _gameobjectsToRemoveOnMatchStart = new();
|
||||
List<ObjectGuid> _creaturesToRemoveOnMatchStart = new();
|
||||
List<ObjectGuid> _doors = new();
|
||||
List<ObjectGuid> _capturePoints = new();
|
||||
|
||||
public battleground_arathi_basin(BattlegroundMap map) : base(map)
|
||||
{
|
||||
bool isBGWeekend = Global.BattlegroundMgr.IsBGWeekend(battleground.GetTypeID());
|
||||
|
||||
_honorTics = isBGWeekend ? Misc.WeekendHonorTicks : Misc.NormalHonorTicks;
|
||||
_reputationTics = isBGWeekend ? Misc.WeekendReputationTicks : Misc.NormalReputationTicks;
|
||||
_honorScoreTics = [0, 0];
|
||||
_reputationScoreTics = [0, 0];
|
||||
}
|
||||
|
||||
public override void OnInit()
|
||||
{
|
||||
base.OnInit();
|
||||
|
||||
UpdateWorldState((int)WorldStateIds.ResourcesMax, Misc.MaxTeamScore);
|
||||
UpdateWorldState((int)WorldStateIds.ResourcesWarning, Misc.WarningNearVictoryScore);
|
||||
}
|
||||
|
||||
public override void OnUpdate(uint diff)
|
||||
{
|
||||
if (battleground.GetStatus() != BattlegroundStatus.InProgress)
|
||||
return;
|
||||
|
||||
// Accumulate points
|
||||
_lastTick += diff;
|
||||
if (_lastTick > Misc.TickInterval)
|
||||
{
|
||||
_lastTick -= Misc.TickInterval;
|
||||
|
||||
_CalculateTeamNodes(out byte ally, out byte horde);
|
||||
byte[] points = { ally, horde };
|
||||
|
||||
for (byte team = 0; team < SharedConst.PvpTeamsCount; ++team)
|
||||
{
|
||||
if (points[team] == 0)
|
||||
continue;
|
||||
|
||||
battleground.AddPoint(team == BattleGroundTeamId.Horde ? Team.Horde : Team.Alliance, Misc.TickPoints[points[team]]);
|
||||
_honorScoreTics[team] += Misc.TickPoints[points[team]];
|
||||
_reputationScoreTics[team] += Misc.TickPoints[points[team]];
|
||||
|
||||
if (_reputationScoreTics[team] >= _reputationTics)
|
||||
{
|
||||
if (team == BattleGroundTeamId.Alliance)
|
||||
battleground.RewardReputationToTeam(509, 10, Team.Alliance);
|
||||
else
|
||||
battleground.RewardReputationToTeam(510, 10, Team.Horde);
|
||||
_reputationScoreTics[team] -= _reputationTics;
|
||||
}
|
||||
|
||||
if (_honorScoreTics[team] >= _honorTics)
|
||||
{
|
||||
battleground.RewardHonorToTeam(battleground.GetBonusHonorFromKill(1), (team == BattleGroundTeamId.Alliance) ? Team.Alliance : Team.Horde);
|
||||
_honorScoreTics[team] -= _honorTics;
|
||||
}
|
||||
|
||||
uint teamScore = battleground.GetTeamScore(team);
|
||||
if (!_isInformedNearVictory && teamScore > Misc.WarningNearVictoryScore)
|
||||
{
|
||||
if (team == BattleGroundTeamId.Alliance)
|
||||
{
|
||||
battleground.SendBroadcastText((uint)BroadcastTexts.AllianceNearVictory, ChatMsg.BgSystemNeutral);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NearVictoryAlliance);
|
||||
}
|
||||
else
|
||||
{
|
||||
battleground.SendBroadcastText((uint)BroadcastTexts.HordeNearVictory, ChatMsg.BgSystemNeutral);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NearVictoryHorde);
|
||||
}
|
||||
_isInformedNearVictory = true;
|
||||
}
|
||||
|
||||
if (teamScore > Misc.MaxTeamScore)
|
||||
battleground.SetTeamPoint(team == BattleGroundTeamId.Horde ? Team.Horde : Team.Alliance, Misc.MaxTeamScore);
|
||||
|
||||
if (team == BattleGroundTeamId.Alliance)
|
||||
UpdateWorldState((int)WorldStateIds.ResourcesAlly, (int)teamScore);
|
||||
else
|
||||
UpdateWorldState((int)WorldStateIds.ResourcesHorde, (int)teamScore);
|
||||
|
||||
// update achievement flags
|
||||
// we increased m_TeamScores[team] so we just need to check if it is 500 more than other teams resources
|
||||
int otherTeam = (team + 1) % SharedConst.PvpTeamsCount;
|
||||
if (teamScore > battleground.GetTeamScore(otherTeam) + 500)
|
||||
{
|
||||
if (team == BattleGroundTeamId.Alliance)
|
||||
UpdateWorldState((int)WorldStateIds.Had500DisadvantageHorde, 1);
|
||||
else
|
||||
UpdateWorldState((int)WorldStateIds.Had500DisadvantageAlliance, 1);
|
||||
}
|
||||
}
|
||||
|
||||
UpdateWorldState((int)WorldStateIds.OccupiedBasesAlly, ally);
|
||||
UpdateWorldState((int)WorldStateIds.OccupiedBasesHorde, horde);
|
||||
}
|
||||
|
||||
// Test win condition
|
||||
if (battleground.GetTeamScore(BattleGroundTeamId.Alliance) >= Misc.MaxTeamScore && battleground.GetTeamScore(BattleGroundTeamId.Horde) >= Misc.MaxTeamScore)
|
||||
battleground.EndBattleground(Team.Other); // draw
|
||||
else if (battleground.GetTeamScore(BattleGroundTeamId.Alliance) >= Misc.MaxTeamScore)
|
||||
battleground.EndBattleground(Team.Alliance);
|
||||
else if (battleground.GetTeamScore(BattleGroundTeamId.Horde) >= Misc.MaxTeamScore)
|
||||
battleground.EndBattleground(Team.Horde);
|
||||
}
|
||||
|
||||
public override void OnStart()
|
||||
{
|
||||
// Achievement: Let's Get This Done
|
||||
TriggerGameEvent((uint)EventIds.StartBattle);
|
||||
}
|
||||
|
||||
void _CalculateTeamNodes(out byte alliance, out byte horde)
|
||||
{
|
||||
alliance = 0;
|
||||
horde = 0;
|
||||
|
||||
foreach (ObjectGuid guid in _capturePoints)
|
||||
{
|
||||
GameObject capturePoint = battlegroundMap.GetGameObject(guid);
|
||||
if (capturePoint != null)
|
||||
{
|
||||
int wsValue = battlegroundMap.GetWorldStateValue((int)capturePoint.GetGoInfo().CapturePoint.worldState1);
|
||||
switch ((BattlegroundCapturePointState)wsValue)
|
||||
{
|
||||
case BattlegroundCapturePointState.AllianceCaptured:
|
||||
++alliance;
|
||||
break;
|
||||
case BattlegroundCapturePointState.HordeCaptured:
|
||||
++horde;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override Team GetPrematureWinner()
|
||||
{
|
||||
// How many bases each team owns
|
||||
_CalculateTeamNodes(out byte ally, out byte horde);
|
||||
|
||||
if (ally > horde)
|
||||
return Team.Alliance;
|
||||
if (horde > ally)
|
||||
return Team.Horde;
|
||||
|
||||
// If the values are equal, fall back to the original result (based on number of players on each team)
|
||||
return base.GetPrematureWinner();
|
||||
}
|
||||
|
||||
public override void ProcessEvent(WorldObject source, uint eventId, WorldObject invoker)
|
||||
{
|
||||
Player player = invoker.ToPlayer();
|
||||
|
||||
switch ((EventIds)eventId)
|
||||
{
|
||||
case EventIds.StartBattle:
|
||||
{
|
||||
foreach (ObjectGuid guid in _creaturesToRemoveOnMatchStart)
|
||||
{
|
||||
Creature creature = battlegroundMap.GetCreature(guid);
|
||||
if (creature != null)
|
||||
creature.DespawnOrUnsummon();
|
||||
}
|
||||
|
||||
foreach (ObjectGuid guid in _gameobjectsToRemoveOnMatchStart)
|
||||
{
|
||||
GameObject gameObject = battlegroundMap.GetGameObject(guid);
|
||||
if (gameObject != null)
|
||||
gameObject.DespawnOrUnsummon();
|
||||
}
|
||||
|
||||
foreach (ObjectGuid guid in _doors)
|
||||
{
|
||||
GameObject gameObject = battlegroundMap.GetGameObject(guid);
|
||||
if (gameObject != null)
|
||||
{
|
||||
gameObject.UseDoorOrButton();
|
||||
gameObject.DespawnOrUnsummon(TimeSpan.FromSeconds(3));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case EventIds.ContestedBlacksmithAlliance:
|
||||
UpdateWorldState((int)WorldStateIds.BlacksmithAllianceControlState, 1);
|
||||
UpdateWorldState((int)WorldStateIds.BlacksmithHordeControlState, 0);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeAssaultedAlliance);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesAssaulted, 1);
|
||||
break;
|
||||
case EventIds.DefendedBlacksmithAlliance:
|
||||
UpdateWorldState((int)WorldStateIds.BlacksmithAllianceControlState, 2);
|
||||
UpdateWorldState((int)WorldStateIds.BlacksmithHordeControlState, 0);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedAlliance);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesDefended, 1);
|
||||
break;
|
||||
case EventIds.CaptureBlacksmithAlliance:
|
||||
UpdateWorldState((int)WorldStateIds.BlacksmithAllianceControlState, 2);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedAlliance);
|
||||
break;
|
||||
case EventIds.ContestedBlacksmithHorde:
|
||||
UpdateWorldState((int)WorldStateIds.BlacksmithAllianceControlState, 0);
|
||||
UpdateWorldState((int)WorldStateIds.BlacksmithHordeControlState, 1);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeAssaultedHorde);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesAssaulted, 1);
|
||||
break;
|
||||
case EventIds.DefendedBlacksmithHorde:
|
||||
UpdateWorldState((int)WorldStateIds.BlacksmithAllianceControlState, 0);
|
||||
UpdateWorldState((int)WorldStateIds.BlacksmithHordeControlState, 2);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedHorde);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesDefended, 1);
|
||||
break;
|
||||
case EventIds.CaptureBlacksmithHorde:
|
||||
UpdateWorldState((int)WorldStateIds.BlacksmithHordeControlState, 2);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedHorde);
|
||||
break;
|
||||
case EventIds.ContestedFarmAlliance:
|
||||
UpdateWorldState((int)WorldStateIds.FarmAllianceControlState, 1);
|
||||
UpdateWorldState((int)WorldStateIds.FarmHordeControlState, 0);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeAssaultedAlliance);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesAssaulted, 1);
|
||||
break;
|
||||
case EventIds.DefendedFarmAlliance:
|
||||
UpdateWorldState((int)WorldStateIds.FarmAllianceControlState, 2);
|
||||
UpdateWorldState((int)WorldStateIds.FarmHordeControlState, 0);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedAlliance);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesDefended, 1);
|
||||
break;
|
||||
case EventIds.CaptureFarmAlliance:
|
||||
UpdateWorldState((int)WorldStateIds.FarmAllianceControlState, 2);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedAlliance);
|
||||
break;
|
||||
case EventIds.ContestedFarmHorde:
|
||||
UpdateWorldState((int)WorldStateIds.FarmAllianceControlState, 0);
|
||||
UpdateWorldState((int)WorldStateIds.FarmHordeControlState, 1);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeAssaultedHorde);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesAssaulted, 1);
|
||||
break;
|
||||
case EventIds.DefendedFarmHorde:
|
||||
UpdateWorldState((int)WorldStateIds.FarmAllianceControlState, 0);
|
||||
UpdateWorldState((int)WorldStateIds.FarmHordeControlState, 2);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedHorde);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesDefended, 1);
|
||||
break;
|
||||
case EventIds.CaptureFarmHorde:
|
||||
UpdateWorldState((int)WorldStateIds.FarmHordeControlState, 2);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedHorde);
|
||||
break;
|
||||
case EventIds.ContestedGoldMineAlliance:
|
||||
UpdateWorldState((int)WorldStateIds.GoldMineAllianceControlState, 1);
|
||||
UpdateWorldState((int)WorldStateIds.GoldMineHordeControlState, 0);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeAssaultedAlliance);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesAssaulted, 1);
|
||||
break;
|
||||
case EventIds.DefendedGoldMineAlliance:
|
||||
UpdateWorldState((int)WorldStateIds.GoldMineAllianceControlState, 2);
|
||||
UpdateWorldState((int)WorldStateIds.GoldMineHordeControlState, 0);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedAlliance);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesDefended, 1);
|
||||
break;
|
||||
case EventIds.CaptureGoldMineAlliance:
|
||||
UpdateWorldState((int)WorldStateIds.GoldMineAllianceControlState, 2);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedAlliance);
|
||||
break;
|
||||
case EventIds.ContestedGoldMineHorde:
|
||||
UpdateWorldState((int)WorldStateIds.GoldMineAllianceControlState, 0);
|
||||
UpdateWorldState((int)WorldStateIds.GoldMineHordeControlState, 1);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeAssaultedHorde);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesAssaulted, 1);
|
||||
break;
|
||||
case EventIds.DefendedGoldMineHorde:
|
||||
UpdateWorldState((int)WorldStateIds.GoldMineAllianceControlState, 0);
|
||||
UpdateWorldState((int)WorldStateIds.GoldMineHordeControlState, 2);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedHorde);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesDefended, 1);
|
||||
break;
|
||||
case EventIds.CaptureGoldMineHorde:
|
||||
UpdateWorldState((int)WorldStateIds.GoldMineHordeControlState, 2);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedHorde);
|
||||
break;
|
||||
case EventIds.ContestedLumberMillAlliance:
|
||||
UpdateWorldState((int)WorldStateIds.LumberMillAllianceControlState, 1);
|
||||
UpdateWorldState((int)WorldStateIds.LumberMillHordeControlState, 0);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeAssaultedAlliance);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesAssaulted, 1);
|
||||
break;
|
||||
case EventIds.DefendedLumberMillAlliance:
|
||||
UpdateWorldState((int)WorldStateIds.LumberMillAllianceControlState, 2);
|
||||
UpdateWorldState((int)WorldStateIds.LumberMillHordeControlState, 0);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedAlliance);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesDefended, 1);
|
||||
break;
|
||||
case EventIds.CaptureLumberMillAlliance:
|
||||
UpdateWorldState((int)WorldStateIds.LumberMillAllianceControlState, 2);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedAlliance);
|
||||
break;
|
||||
case EventIds.ContestedLumberMillHorde:
|
||||
UpdateWorldState((int)WorldStateIds.LumberMillAllianceControlState, 0);
|
||||
UpdateWorldState((int)WorldStateIds.LumberMillHordeControlState, 1);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeAssaultedHorde);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesAssaulted, 1);
|
||||
break;
|
||||
case EventIds.DefendedLumberMillHorde:
|
||||
UpdateWorldState((int)WorldStateIds.LumberMillAllianceControlState, 0);
|
||||
UpdateWorldState((int)WorldStateIds.LumberMillHordeControlState, 2);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedHorde);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesDefended, 1);
|
||||
break;
|
||||
case EventIds.CaptureLumberMillHorde:
|
||||
UpdateWorldState((int)WorldStateIds.LumberMillHordeControlState, 2);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedHorde);
|
||||
break;
|
||||
case EventIds.ContestedStablesAlliance:
|
||||
UpdateWorldState((int)WorldStateIds.StablesAllianceControlState, 1);
|
||||
UpdateWorldState((int)WorldStateIds.StablesHordeControlState, 0);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeAssaultedAlliance);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesAssaulted, 1);
|
||||
break;
|
||||
case EventIds.DefendedStablesAlliance:
|
||||
UpdateWorldState((int)WorldStateIds.StablesAllianceControlState, 2);
|
||||
UpdateWorldState((int)WorldStateIds.StablesHordeControlState, 0);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedAlliance);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesDefended, 1);
|
||||
break;
|
||||
case EventIds.CaptureStablesAlliance:
|
||||
UpdateWorldState((int)WorldStateIds.StablesAllianceControlState, 2);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedAlliance);
|
||||
break;
|
||||
case EventIds.ContestedStablesHorde:
|
||||
UpdateWorldState((int)WorldStateIds.StablesAllianceControlState, 0);
|
||||
UpdateWorldState((int)WorldStateIds.StablesHordeControlState, 1);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeAssaultedHorde);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesAssaulted, 1);
|
||||
break;
|
||||
case EventIds.DefendedStablesHorde:
|
||||
UpdateWorldState((int)WorldStateIds.StablesAllianceControlState, 0);
|
||||
UpdateWorldState((int)WorldStateIds.StablesHordeControlState, 2);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedHorde);
|
||||
if (player != null)
|
||||
battleground.UpdatePvpStat(player, (uint)PvpStats.BasesDefended, 1);
|
||||
break;
|
||||
case EventIds.CaptureStablesHorde:
|
||||
UpdateWorldState((int)WorldStateIds.StablesHordeControlState, 2);
|
||||
battleground.PlaySoundToAll((uint)SoundIds.NodeCapturedHorde);
|
||||
break;
|
||||
default:
|
||||
Log.outWarn(LogFilter.Battleground, $"BattlegroundAB::ProcessEvent: Unhandled event {eventId}.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnCreatureCreate(Creature creature)
|
||||
{
|
||||
switch ((CreatureIds)creature.GetEntry())
|
||||
{
|
||||
case CreatureIds.TheBlackBride:
|
||||
case CreatureIds.RadulfLeder:
|
||||
_creaturesToRemoveOnMatchStart.Add(creature.GetGUID());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnGameObjectCreate(GameObject gameObject)
|
||||
{
|
||||
if (gameObject.GetGoInfo().type == GameObjectTypes.CapturePoint)
|
||||
_capturePoints.Add(gameObject.GetGUID());
|
||||
|
||||
switch ((GameObjectIds)gameObject.GetEntry())
|
||||
{
|
||||
case GameObjectIds.GhostGate:
|
||||
_gameobjectsToRemoveOnMatchStart.Add(gameObject.GetGUID());
|
||||
break;
|
||||
case GameObjectIds.AllianceDoor:
|
||||
case GameObjectIds.HordeDoor:
|
||||
_doors.Add(gameObject.GetGUID());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnEnd(Team winner)
|
||||
{
|
||||
base.OnEnd(winner);
|
||||
|
||||
// Win reward
|
||||
if (winner == Team.Alliance)
|
||||
battleground.RewardHonorToTeam(battleground.GetBonusHonorFromKill(1), Team.Alliance);
|
||||
if (winner == Team.Horde)
|
||||
battleground.RewardHonorToTeam(battleground.GetBonusHonorFromKill(1), Team.Horde);
|
||||
// Complete map_end rewards (even if no team wins)
|
||||
battleground.RewardHonorToTeam(battleground.GetBonusHonorFromKill(1), Team.Horde);
|
||||
battleground.RewardHonorToTeam(battleground.GetBonusHonorFromKill(1), Team.Alliance);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user