Core/Battlegrounds: Fix WSG Focused/Brutal Assault
Port From (https://github.com/TrinityCore/TrinityCore/commit/8edee30a62f74d8e13efe7a52bc9e73ef43955d5)
This commit is contained in:
@@ -107,6 +107,7 @@ namespace Game.BattleGrounds.Zones
|
|||||||
_flagSpellForceTimer += (int)diff;
|
_flagSpellForceTimer += (int)diff;
|
||||||
if (_flagDebuffState == 0 && _flagSpellForceTimer >= 10 * Time.Minute * Time.InMilliseconds) //10 minutes
|
if (_flagDebuffState == 0 && _flagSpellForceTimer >= 10 * Time.Minute * Time.InMilliseconds) //10 minutes
|
||||||
{
|
{
|
||||||
|
// Apply Stage 1 (Focused Assault)
|
||||||
Player player = Global.ObjAccessor.FindPlayer(m_FlagKeepers[0]);
|
Player player = Global.ObjAccessor.FindPlayer(m_FlagKeepers[0]);
|
||||||
if (player)
|
if (player)
|
||||||
player.CastSpell(player, WSGSpellId.FocusedAssault, true);
|
player.CastSpell(player, WSGSpellId.FocusedAssault, true);
|
||||||
@@ -119,6 +120,7 @@ namespace Game.BattleGrounds.Zones
|
|||||||
}
|
}
|
||||||
else if (_flagDebuffState == 1 && _flagSpellForceTimer >= 900000) //15 minutes
|
else if (_flagDebuffState == 1 && _flagSpellForceTimer >= 900000) //15 minutes
|
||||||
{
|
{
|
||||||
|
// Apply Stage 2 (Brutal Assault)
|
||||||
Player player = Global.ObjAccessor.FindPlayer(m_FlagKeepers[0]);
|
Player player = Global.ObjAccessor.FindPlayer(m_FlagKeepers[0]);
|
||||||
if (player)
|
if (player)
|
||||||
{
|
{
|
||||||
@@ -135,8 +137,12 @@ namespace Game.BattleGrounds.Zones
|
|||||||
_flagDebuffState = 2;
|
_flagDebuffState = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else if ((_flagState[TeamId.Alliance] == WSGFlagState.OnBase || _flagState[TeamId.Alliance] == WSGFlagState.WaitRespawn) &&
|
||||||
|
(_flagState[TeamId.Horde] == WSGFlagState.OnBase || _flagState[TeamId.Horde] == WSGFlagState.WaitRespawn))
|
||||||
{
|
{
|
||||||
|
// Both flags are in base or awaiting respawn.
|
||||||
|
// Remove assault debuffs, reset timers
|
||||||
|
|
||||||
Player player = Global.ObjAccessor.FindPlayer(m_FlagKeepers[0]);
|
Player player = Global.ObjAccessor.FindPlayer(m_FlagKeepers[0]);
|
||||||
if (player)
|
if (player)
|
||||||
{
|
{
|
||||||
@@ -438,6 +444,11 @@ namespace Game.BattleGrounds.Zones
|
|||||||
player.StartCriteriaTimer(CriteriaStartEvent.BeSpellTarget, WSGSpellId.SilverwingFlagPicked);
|
player.StartCriteriaTimer(CriteriaStartEvent.BeSpellTarget, WSGSpellId.SilverwingFlagPicked);
|
||||||
if (_flagState[1] == WSGFlagState.OnPlayer)
|
if (_flagState[1] == WSGFlagState.OnPlayer)
|
||||||
_bothFlagsKept = true;
|
_bothFlagsKept = true;
|
||||||
|
|
||||||
|
if (_flagDebuffState == 1)
|
||||||
|
player.CastSpell(player, WSGSpellId.FocusedAssault, true);
|
||||||
|
else if (_flagDebuffState == 2)
|
||||||
|
player.CastSpell(player, WSGSpellId.BrutalAssault, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
//horde flag picked up from base
|
//horde flag picked up from base
|
||||||
@@ -455,6 +466,11 @@ namespace Game.BattleGrounds.Zones
|
|||||||
player.StartCriteriaTimer(CriteriaStartEvent.BeSpellTarget, WSGSpellId.WarsongFlagPicked);
|
player.StartCriteriaTimer(CriteriaStartEvent.BeSpellTarget, WSGSpellId.WarsongFlagPicked);
|
||||||
if (_flagState[0] == WSGFlagState.OnPlayer)
|
if (_flagState[0] == WSGFlagState.OnPlayer)
|
||||||
_bothFlagsKept = true;
|
_bothFlagsKept = true;
|
||||||
|
|
||||||
|
if (_flagDebuffState == 1)
|
||||||
|
player.CastSpell(player, WSGSpellId.FocusedAssault, true);
|
||||||
|
else if (_flagDebuffState == 2)
|
||||||
|
player.CastSpell(player, WSGSpellId.BrutalAssault, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Alliance flag on ground(not in base) (returned or picked up again from ground!)
|
//Alliance flag on ground(not in base) (returned or picked up again from ground!)
|
||||||
|
|||||||
Reference in New Issue
Block a user