Core/Maps: Add Map::DoOnPlayers helper function
Port From (https://github.com/TrinityCore/TrinityCore/commit/543a7b79c3e5259ed3da413a6d91f00dfd85977e)
This commit is contained in:
@@ -360,17 +360,18 @@ namespace Game.Maps
|
|||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case EncounterState.InProgress:
|
case EncounterState.InProgress:
|
||||||
{
|
{
|
||||||
uint resInterval = GetCombatResurrectionChargeInterval();
|
uint resInterval = GetCombatResurrectionChargeInterval();
|
||||||
InitializeCombatResurrections(1, resInterval);
|
InitializeCombatResurrections(1, resInterval);
|
||||||
SendEncounterStart(1, 9, resInterval, resInterval);
|
SendEncounterStart(1, 9, resInterval, resInterval);
|
||||||
|
|
||||||
var playerList = instance.GetPlayers();
|
instance.DoOnPlayers(player =>
|
||||||
foreach (var player in playerList)
|
{
|
||||||
if (player.IsAlive())
|
if (player.IsAlive())
|
||||||
Unit.ProcSkillsAndAuras(player, null, new ProcFlagsInit(ProcFlags.EncounterStart), new ProcFlagsInit(ProcFlags.None), ProcFlagsSpellType.MaskAll, ProcFlagsSpellPhase.None, ProcFlagsHit.None, null, null, null);
|
Unit.ProcSkillsAndAuras(player, null, new ProcFlagsInit(ProcFlags.EncounterStart), new ProcFlagsInit(), ProcFlagsSpellType.MaskAll, ProcFlagsSpellPhase.None, ProcFlagsHit.None, null, null, null);
|
||||||
break;
|
});
|
||||||
}
|
break;
|
||||||
|
}
|
||||||
case EncounterState.Fail:
|
case EncounterState.Fail:
|
||||||
case EncounterState.Done:
|
case EncounterState.Done:
|
||||||
ResetCombatResurrections();
|
ResetCombatResurrections();
|
||||||
@@ -577,70 +578,38 @@ namespace Game.Maps
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void DoUpdateWorldState(uint uiStateId, uint uiStateData)
|
public void DoUpdateWorldState(uint uiStateId, uint uiStateData)
|
||||||
{
|
{
|
||||||
var lPlayers = instance.GetPlayers();
|
instance.DoOnPlayers(player => player.SendUpdateWorldState(uiStateId, uiStateData));
|
||||||
|
|
||||||
if (!lPlayers.Empty())
|
|
||||||
{
|
|
||||||
foreach (var player in lPlayers)
|
|
||||||
player.SendUpdateWorldState(uiStateId, uiStateData);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Log.outDebug(LogFilter.Scripts, "DoUpdateWorldState attempt send data but no players in map.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send Notify to all players in instance
|
// Send Notify to all players in instance
|
||||||
void DoSendNotifyToInstance(string format, params object[] args)
|
void DoSendNotifyToInstance(string format, params object[] args)
|
||||||
{
|
{
|
||||||
var players = instance.GetPlayers();
|
instance.DoOnPlayers(player => player.GetSession()?.SendNotification(format, args));
|
||||||
|
|
||||||
if (!players.Empty())
|
|
||||||
{
|
|
||||||
foreach (var player in players)
|
|
||||||
{
|
|
||||||
WorldSession session = player.GetSession();
|
|
||||||
if (session != null)
|
|
||||||
session.SendNotification(format, args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update Achievement Criteria for all players in instance
|
// Update Achievement Criteria for all players in instance
|
||||||
public void DoUpdateCriteria(CriteriaType type, uint miscValue1 = 0, uint miscValue2 = 0, Unit unit = null)
|
public void DoUpdateCriteria(CriteriaType type, uint miscValue1 = 0, uint miscValue2 = 0, Unit unit = null)
|
||||||
{
|
{
|
||||||
var PlayerList = instance.GetPlayers();
|
instance.DoOnPlayers(player => player.UpdateCriteria(type, miscValue1, miscValue2, 0, unit));
|
||||||
|
|
||||||
if (!PlayerList.Empty())
|
|
||||||
foreach (var player in PlayerList)
|
|
||||||
player.UpdateCriteria(type, miscValue1, miscValue2, 0, unit);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start timed achievement for all players in instance
|
// Start timed achievement for all players in instance
|
||||||
public void DoStartCriteriaTimer(CriteriaStartEvent startEvent, uint entry)
|
public void DoStartCriteriaTimer(CriteriaStartEvent startEvent, uint entry)
|
||||||
{
|
{
|
||||||
var PlayerList = instance.GetPlayers();
|
instance.DoOnPlayers(player => player.StartCriteriaTimer(startEvent, entry));
|
||||||
|
|
||||||
if (!PlayerList.Empty())
|
|
||||||
foreach (var player in PlayerList)
|
|
||||||
player.StartCriteriaTimer(startEvent, entry);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stop timed achievement for all players in instance
|
// Stop timed achievement for all players in instance
|
||||||
public void DoStopCriteriaTimer(CriteriaStartEvent startEvent, uint entry)
|
public void DoStopCriteriaTimer(CriteriaStartEvent startEvent, uint entry)
|
||||||
{
|
{
|
||||||
var PlayerList = instance.GetPlayers();
|
instance.DoOnPlayers(player => player.RemoveCriteriaTimer(startEvent, entry));
|
||||||
|
|
||||||
if (!PlayerList.Empty())
|
|
||||||
foreach (var player in PlayerList)
|
|
||||||
player.RemoveCriteriaTimer(startEvent, entry);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove Auras due to Spell on all players in instance
|
// Remove Auras due to Spell on all players in instance
|
||||||
public void DoRemoveAurasDueToSpellOnPlayers(uint spell, bool includePets = false, bool includeControlled = false)
|
public void DoRemoveAurasDueToSpellOnPlayers(uint spell, bool includePets = false, bool includeControlled = false)
|
||||||
{
|
{
|
||||||
var playerList = instance.GetPlayers();
|
instance.DoOnPlayers(player => DoRemoveAurasDueToSpellOnPlayer(player, spell, includePets, includeControlled));
|
||||||
foreach (var player in playerList)
|
|
||||||
DoRemoveAurasDueToSpellOnPlayer(player, spell, includePets, includeControlled);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DoRemoveAurasDueToSpellOnPlayer(Player player, uint spell, bool includePets = false, bool includeControlled = false)
|
public void DoRemoveAurasDueToSpellOnPlayer(Player player, uint spell, bool includePets = false, bool includeControlled = false)
|
||||||
@@ -679,9 +648,7 @@ namespace Game.Maps
|
|||||||
// Cast spell on all players in instance
|
// Cast spell on all players in instance
|
||||||
public void DoCastSpellOnPlayers(uint spell, bool includePets = false, bool includeControlled = false)
|
public void DoCastSpellOnPlayers(uint spell, bool includePets = false, bool includeControlled = false)
|
||||||
{
|
{
|
||||||
var playerList = instance.GetPlayers();
|
instance.DoOnPlayers(player => DoCastSpellOnPlayer(player, spell, includePets, includeControlled));
|
||||||
foreach (var player in playerList)
|
|
||||||
DoCastSpellOnPlayer(player, spell, includePets, includeControlled);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DoCastSpellOnPlayer(Player player, uint spell, bool includePets = false, bool includeControlled = false)
|
public void DoCastSpellOnPlayer(Player player, uint spell, bool includePets = false, bool includeControlled = false)
|
||||||
@@ -816,7 +783,7 @@ namespace Game.Maps
|
|||||||
if (encounter.lastEncounterDungeon != 0)
|
if (encounter.lastEncounterDungeon != 0)
|
||||||
{
|
{
|
||||||
dungeonId = encounter.lastEncounterDungeon;
|
dungeonId = encounter.lastEncounterDungeon;
|
||||||
Log.outDebug(LogFilter.Lfg, "UpdateEncounterState: Instance {0} (instanceId {1}) completed encounter {2}. Credit Dungeon: {3}",
|
Log.outDebug(LogFilter.Lfg, "UpdateEncounterState: Instance {0} (instanceId {1}) completed encounter {2}. Credit Dungeon: {3}",
|
||||||
instance.GetMapName(), instance.GetInstanceId(), encounter.dbcEntry.Name[Global.WorldMgr.GetDefaultDbcLocale()], dungeonId);
|
instance.GetMapName(), instance.GetInstanceId(), encounter.dbcEntry.Name[Global.WorldMgr.GetDefaultDbcLocale()], dungeonId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -841,9 +808,7 @@ namespace Game.Maps
|
|||||||
|
|
||||||
void UpdatePhasing()
|
void UpdatePhasing()
|
||||||
{
|
{
|
||||||
var players = instance.GetPlayers();
|
instance.DoOnPlayers(player => PhasingHandler.SendToPlayer(player));
|
||||||
foreach (var player in players)
|
|
||||||
PhasingHandler.SendToPlayer(player);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateCombatResurrection(uint diff)
|
public void UpdateCombatResurrection(uint diff)
|
||||||
@@ -942,7 +907,7 @@ namespace Game.Maps
|
|||||||
public void MarkAreaTriggerDone(uint id) { _activatedAreaTriggers.Add(id); }
|
public void MarkAreaTriggerDone(uint id) { _activatedAreaTriggers.Add(id); }
|
||||||
public void ResetAreaTriggerDone(uint id) { _activatedAreaTriggers.Remove(id); }
|
public void ResetAreaTriggerDone(uint id) { _activatedAreaTriggers.Remove(id); }
|
||||||
public bool IsAreaTriggerDone(uint id) { return _activatedAreaTriggers.Contains(id); }
|
public bool IsAreaTriggerDone(uint id) { return _activatedAreaTriggers.Contains(id); }
|
||||||
|
|
||||||
public virtual void FillInitialWorldStates(InitWorldStates data) { }
|
public virtual void FillInitialWorldStates(InitWorldStates data) { }
|
||||||
|
|
||||||
public int GetEncounterCount() { return bosses.Count; }
|
public int GetEncounterCount() { return bosses.Count; }
|
||||||
|
|||||||
@@ -3814,6 +3814,12 @@ namespace Game.Maps
|
|||||||
i_worldObjects.Remove(obj);
|
i_worldObjects.Remove(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void DoOnPlayers(Action<Player> action)
|
||||||
|
{
|
||||||
|
foreach (var player in GetPlayers())
|
||||||
|
action(player);
|
||||||
|
}
|
||||||
|
|
||||||
public List<Player> GetPlayers()
|
public List<Player> GetPlayers()
|
||||||
{
|
{
|
||||||
return m_activePlayers;
|
return m_activePlayers;
|
||||||
|
|||||||
Reference in New Issue
Block a user