AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
SummonList Class Reference

#include "ScriptedCreature.h"

Public Types

typedef GuidList StorageType
 
typedef StorageType::iterator iterator
 
typedef StorageType::const_iterator const_iterator
 
typedef StorageType::size_type size_type
 
typedef StorageType::value_type value_type
 

Public Member Functions

 SummonList (Creature *creature)
 
iterator begin ()
 
const_iterator begin () const
 
iterator end ()
 
const_iterator end () const
 
iterator erase (iterator i)
 
bool empty () const
 
size_type size () const
 
void clear ()
 
void Summon (Creature const *summon)
 
void Despawn (Creature const *summon)
 
void DespawnEntry (uint32 entry)
 
void DespawnAll (uint32 delay=0)
 
bool IsAnyCreatureAlive () const
 
bool IsAnyCreatureWithEntryAlive (uint32 entry) const
 
bool IsAnyCreatureInCombat () const
 
template<typename T >
void DespawnIf (T const &predicate)
 
void DoAction (int32 info, uint16 max=0)
 
template<class Predicate >
void DoAction (int32 info, Predicate &&predicate, uint16 max=0)
 
void DoForAllSummons (std::function< void(WorldObject *)> exec)
 
void DoZoneInCombat (uint32 entry=0)
 
void RemoveNotExisting ()
 
bool HasEntry (uint32 entry) const
 
uint32 GetEntryCount (uint32 entry) const
 
void Respawn ()
 
CreatureGetCreatureWithEntry (uint32 entry) const
 

Private Attributes

Creatureme
 
StorageType storage_
 

Detailed Description

Member Typedef Documentation

◆ const_iterator

typedef StorageType::const_iterator SummonList::const_iterator

◆ iterator

typedef StorageType::iterator SummonList::iterator

◆ size_type

typedef StorageType::size_type SummonList::size_type

◆ StorageType

◆ value_type

typedef StorageType::value_type SummonList::value_type

Constructor & Destructor Documentation

◆ SummonList()

SummonList::SummonList ( Creature creature)
inlineexplicit
42 : me(creature)
43 { }
Creature * me
Definition: ScriptedCreature.h:162

Member Function Documentation

◆ begin() [1/2]

iterator SummonList::begin ( )
inline
49 {
50 return storage_.begin();
51 }
StorageType storage_
Definition: ScriptedCreature.h:163

References storage_.

Referenced by boss_algalon_the_observer::boss_algalon_the_observerAI::CallConstellations(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::DoSummonAction(), npc_ravenclaw_apparition::npc_ravenclaw_apparitionAI::EmoteCrowd(), boss_lady_deathwhisper::boss_lady_deathwhisperAI::EmpowerCultist(), boss_salramm::boss_salrammAI::ExplodeGhoul(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::GetEntryFromSummons(), npc_arthas::npc_arthasAI::GetEventNpc(), boss_moroes::GetRandomGuest(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::InformCloud(), boss_infinite_corruptor::boss_infinite_corruptorAI::JustDied(), boss_lady_deathwhisper::boss_lady_deathwhisperAI::JustDied(), npc_xt002_heart::npc_xt002_heartAI::SendEnergyToCorner(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::SpidersMoveDown(), npc_captain_saeed::npc_captain_saeedAI::SummonsAction(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::UpdateAI(), npc_kalecgos_kj::UpdateAI(), npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI::UpdateAI(), npc_arthas::npc_arthasAI::UpdateAI(), boss_black_knight::boss_black_knightAI::UpdateAI(), npc_pos_leader::npc_pos_leaderAI::UpdateAI(), boss_the_lich_king::boss_the_lich_kingAI::UpdateAI(), boss_faerlina::boss_faerlinaAI::UpdateAI(), boss_thaddius::boss_thaddiusAI::UpdateAI(), boss_freya_elder_brightleaf::boss_freya_elder_brightleafAI::UpdateAI(), boss_vezax::boss_vezaxAI::UpdateAI(), npc_vh_teleportation_portal::npc_vh_teleportation_portalAI::UpdateAI(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::UpdateEscortAI(), and npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::WaypointReached().

◆ begin() [2/2]

const_iterator SummonList::begin ( ) const
inline
54 {
55 return storage_.begin();
56 }

References storage_.

◆ clear()

◆ Despawn()

void SummonList::Despawn ( Creature const *  summon)
inline
89{ storage_.remove(summon->GetGUID()); }

References Object::GetGUID(), and storage_.

Referenced by npc_arthas::npc_arthasAI::DoAction(), npc_arthas::npc_arthasAI::SummonedCreatureDespawn(), boss_gothik::boss_gothikAI::SummonedCreatureDespawn(), boss_flame_leviathan::boss_flame_leviathanAI::SummonedCreatureDespawn(), boss_xt002::boss_xt002AI::SummonedCreatureDespawn(), boss_ichoron::boss_ichoronAI::SummonedCreatureDespawn(), boss_xevozz::boss_xevozzAI::SummonedCreatureDespawn(), boss_zuramat::boss_zuramatAI::SummonedCreatureDespawn(), boss_twin_valkyrAI::SummonedCreatureDespawn(), npc_hor_lich_king::npc_hor_lich_kingAI::SummonedCreatureDespawn(), npc_pos_leader::npc_pos_leaderAI::SummonedCreatureDespawn(), npc_pos_martin_or_gorkun_second::npc_pos_martin_or_gorkun_secondAI::SummonedCreatureDespawn(), boss_prince_taldaram_icc::boss_prince_taldaramAI::SummonedCreatureDespawn(), npc_icc_valkyr_herald::npc_icc_valkyr_heraldAI::SummonedCreatureDespawn(), boss_vezax::boss_vezaxAI::SummonedCreatureDespawn(), boss_hodir::boss_hodirAI::SummonedCreatureDespawn(), boss_mimiron::boss_mimironAI::SummonedCreatureDespawn(), npc_ulduar_aerial_command_unit::npc_ulduar_aerial_command_unitAI::SummonedCreatureDespawn(), BossAI::SummonedCreatureDespawn(), WorldBossAI::SummonedCreatureDespawn(), npc_echo_of_medivh::SummonedCreatureDespawn(), boss_kormok::SummonedCreatureDespawn(), npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI::SummonedCreatureDespawn(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::SummonedCreatureDespawn(), boss_ossirian::SummonedCreatureDespawn(), boss_drakkari_colossus::boss_drakkari_colossusAI::SummonedCreatureDespawn(), boss_deathbringer_saurfang::boss_deathbringer_saurfangAI::SummonedCreatureDespawn(), boss_lady_deathwhisper::boss_lady_deathwhisperAI::SummonedCreatureDespawn(), npc_precious_icc::npc_precious_iccAI::SummonedCreatureDespawn(), boss_grobbulus::boss_grobbulusAI::SummonedCreatureDespawn(), npc_q24545_lich_king::npc_q24545_lich_kingAI::SummonedCreatureDespawn(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::SummonedCreatureDespawn(), boss_nexusprince_shaffar::SummonedCreatureDespawn(), boss_supremus::SummonedCreatureDespawn(), boss_hydross_the_unstable::SummonedCreatureDespawn(), boss_vazruden_the_herald::SummonedCreatureDespawn(), boss_gluth::boss_gluthAI::SummonedCreatureDies(), boss_emalon::boss_emalonAI::SummonedCreatureDies(), npc_daphne_stilwell::npc_daphne_stilwellAI::SummonedCreatureDies(), npc_grimstone::npc_grimstoneAI::SummonedCreatureDies(), boss_ragnaros::boss_ragnarosAI::SummonedCreatureDies(), npc_kiljaeden_controller::SummonedCreatureDies(), boss_hazzarah::SummonedCreatureDies(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::SummonedCreatureDies(), boss_krik_thir::boss_krik_thirAI::SummonedCreatureDies(), boss_drakkari_colossus::boss_drakkari_colossusAI::SummonedCreatureDies(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::SummonedCreatureDies(), npc_icc_putricades_trap::npc_icc_putricades_trapAI::SummonedCreatureDies(), boss_anzu::SummonedCreatureDies(), npc_akama_illidan::SummonedCreatureDies(), boss_reliquary_of_souls::boss_reliquary_of_soulsAI::SummonedCreatureDies(), npc_creature_generator_akama::SummonedCreatureDies(), boss_the_black_stalker::SummonedCreatureDies(), boss_vazruden_the_herald::SummonedCreatureDies(), boss_high_botanist_freywinn::SummonedCreatureDies(), boss_vexallus::SummonedCreatureDies(), boss_jedoga_shadowseeker::SummonedCreatureDies(), and npc_vh_teleportation_portal::npc_vh_teleportation_portalAI::SummonedMobDied().

◆ DespawnAll()

void SummonList::DespawnAll ( uint32  delay = 0)
72{
73 while (!storage_.empty())
74 {
76 storage_.pop_front();
77 if (summon)
78 summon->DespawnOrUnsummon(delay);
79 }
80}
Creature * GetCreature(WorldObject const &u, ObjectGuid const guid)
Definition: ObjectAccessor.cpp:210
Definition: Creature.h:43
void DespawnOrUnsummon(Milliseconds msTimeToDespawn, Seconds forcedRespawnTimer)
Definition: Creature.cpp:2178

References Creature::DespawnOrUnsummon(), ObjectAccessor::GetCreature(), me, and storage_.

Referenced by BossAI::_JustDied(), WorldBossAI::_JustDied(), BossAI::_Reset(), WorldBossAI::_Reset(), boss_yoggsaron::boss_yoggsaronAI::boss_yoggsaronAI(), boss_sartharion_dragonAI::ClearInstance(), boss_sartharion_tenebron::boss_sartharion_tenebronAI::ClearInstance(), npc_captain_saeed::npc_captain_saeedAI::CorpseRemoved(), boss_algalon_the_observer::boss_algalon_the_observerAI::DamageTaken(), boss_freya::boss_freyaAI::DamageTaken(), boss_hodir::boss_hodirAI::DamageTaken(), boss_the_lich_king::boss_the_lich_kingAI::DamageTaken(), boss_twin_valkyrAI::DoAction(), boss_victor_nefarius::boss_victor_nefariusAI::DoAction(), boss_algalon_the_observer::boss_algalon_the_observerAI::DoAction(), npc_ahune_bunny::DoAction(), npc_pos_martin_or_gorkun_second::npc_pos_martin_or_gorkun_secondAI::DoAction(), boss_infinite_corruptor::boss_infinite_corruptorAI::DoAction(), npc_arthas::npc_arthasAI::DoAction(), npc_anub_ar_crusher::npc_anub_ar_crusherAI::DoAction(), boss_black_knight::boss_black_knightAI::DoAction(), boss_anubarak_trial::boss_anubarak_trialAI::DoAction(), boss_gormok::boss_gormokAI::DoAction(), npc_auriaya_feral_defender::npc_auriaya_feral_defenderAI::DoAction(), npc_ulduar_aerial_command_unit::npc_ulduar_aerial_command_unitAI::DoAction(), boss_yoggsaron::boss_yoggsaronAI::DoAction(), boss_yoggsaron_brain::boss_yoggsaron_brainAI::DoAction(), boss_yoggsaron_keeper::DoAction(), boss_dalronn_the_controller::DoAction(), npc_massive_jormungar::npc_massive_jormungarAI::DoAction(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::DoAction(), npc_akama_illidan::DoAction(), boss_reliquary_of_souls::boss_reliquary_of_soulsAI::DoAction(), npc_creature_generator_akama::DoAction(), boss_anubarak_trial::boss_anubarak_trialAI::EnterEvadeMode(), boss_jaraxxus::boss_jaraxxusAI::EnterEvadeMode(), boss_gormok::boss_gormokAI::EnterEvadeMode(), boss_ahune::EnterEvadeMode(), boss_halazzi::EnterPhase(), boss_ambassador_flamelash::boss_ambassador_flamelashAI::JustDied(), boss_priestess_lackey_commonAI::JustDied(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::JustDied(), boss_sacrolash::JustDied(), boss_alythess::JustDied(), npc_kiljaeden_controller::JustDied(), npc_ravenclaw_apparition::npc_ravenclaw_apparitionAI::JustDied(), boss_zuljin::JustDied(), npc_coren_direbrew::JustDied(), boss_headless_horseman::JustDied(), boss_salramm::boss_salrammAI::JustDied(), boss_sartharion_dragonAI::JustDied(), boss_anubarak_trial::boss_anubarak_trialAI::JustDied(), boss_jaraxxus::boss_jaraxxusAI::JustDied(), boss_devourer_of_souls::boss_devourer_of_soulsAI::JustDied(), boss_prince_keleseth_icc::boss_prince_kelesethAI::JustDied(), boss_prince_taldaram_icc::boss_prince_taldaramAI::JustDied(), boss_prince_valanar_icc::boss_prince_valanarAI::JustDied(), npc_precious_icc::npc_precious_iccAI::JustDied(), boss_ionar::boss_ionarAI::JustDied(), boss_volkhan::boss_volkhanAI::JustDied(), boss_sjonnir::boss_sjonnirAI::JustDied(), boss_auriaya::boss_auriayaAI::JustDied(), boss_vezax::boss_vezaxAI::JustDied(), boss_kologarn::boss_kologarnAI::JustDied(), boss_razorscale::boss_razorscaleAI::JustDied(), boss_xt002::boss_xt002AI::JustDied(), boss_yoggsaron::boss_yoggsaronAI::JustDied(), boss_ingvar_the_plunderer::JustDied(), boss_skadi::boss_skadiAI::JustDied(), boss_svala::boss_svalaAI::JustDied(), boss_ymiron::boss_ymironAI::JustDied(), boss_emalon::boss_emalonAI::JustDied(), boss_toravon::boss_toravonAI::JustDied(), boss_ichoron::boss_ichoronAI::JustDied(), boss_xevozz::boss_xevozzAI::JustDied(), boss_zuramat::boss_zuramatAI::JustDied(), boss_nexusprince_shaffar::JustDied(), npc_ahune_bunny::JustDied(), npc_captain_saeed::npc_captain_saeedAI::JustDied(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::JustDied(), npc_general_andorov::JustDied(), boss_sartharion_tenebron::boss_sartharion_tenebronAI::JustDied(), boss_gluth::boss_gluthAI::JustDied(), boss_gothik::boss_gothikAI::JustDied(), boss_grobbulus::boss_grobbulusAI::JustDied(), boss_loatheb::boss_loathebAI::JustDied(), npc_icc_valkyr_herald::npc_icc_valkyr_heraldAI::JustEngagedWith(), boss_sindragosa::boss_sindragosaAI::JustEngagedWith(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::JustRespawned(), npc_grimstone::npc_grimstoneAI::npc_grimstoneAI(), npc_ravenclaw_apparition::npc_ravenclaw_apparitionAI::npc_ravenclaw_apparitionAI(), boss_skadi_grauf::boss_skadi_graufAI::RemoveSkadi(), boss_balinda::Reset(), boss_ambassador_flamelash::boss_ambassador_flamelashAI::Reset(), boss_gyth::boss_gythAI::Reset(), boss_rend_blackhand::boss_rend_blackhandAI::Reset(), boss_razorgore::boss_razorgoreAI::Reset(), boss_majordomo::boss_majordomoAI::Reset(), npc_echo_of_medivh::Reset(), boss_priestess_lackey_commonAI::Reset(), npc_koltira_deathweaver::npc_koltira_deathweaverAI::Reset(), boss_darkmaster_gandling::boss_darkmaster_gandlingAI::Reset(), boss_kormok::Reset(), npc_kiljaeden_controller::Reset(), npc_kalecgos_kj::Reset(), npc_eris_hevenfire::npc_eris_hevenfireAI::Reset(), npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI::Reset(), npc_daphne_stilwell::npc_daphne_stilwellAI::Reset(), npc_amanishi_tempest::Reset(), npc_dark_iron_attack_generator::Reset(), npc_coren_direbrew::Reset(), boss_headless_horseman::Reset(), boss_infinite_corruptor::boss_infinite_corruptorAI::Reset(), boss_salramm::boss_salrammAI::Reset(), npc_arthas::npc_arthasAI::Reset(), boss_captain_skarloc::Reset(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::Reset(), boss_isalien::Reset(), npc_anub_ar_crusher::npc_anub_ar_crusherAI::Reset(), boss_sartharion_tenebron::boss_sartharion_tenebronAI::Reset(), boss_black_knight::boss_black_knightAI::Reset(), boss_anubarak_trial::boss_anubarak_trialAI::Reset(), boss_gormok::boss_gormokAI::Reset(), boss_bronjahm::boss_bronjahmAI::Reset(), boss_devourer_of_souls::boss_devourer_of_soulsAI::Reset(), npc_pos_leader::npc_pos_leaderAI::Reset(), boss_prince_keleseth_icc::boss_prince_kelesethAI::Reset(), boss_prince_taldaram_icc::boss_prince_taldaramAI::Reset(), boss_prince_valanar_icc::boss_prince_valanarAI::Reset(), boss_blood_queen_lana_thel::boss_blood_queen_lana_thelAI::Reset(), npc_precious_icc::npc_precious_iccAI::Reset(), npc_green_dragon_combat_trigger::npc_green_dragon_combat_triggerAI::Reset(), npc_frostwing_vrykul::npc_frostwing_vrykulAI::Reset(), npc_icc_valkyr_herald::npc_icc_valkyr_heraldAI::Reset(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::Reset(), npc_icc_putricades_trap::npc_icc_putricades_trapAI::Reset(), boss_faerlina::boss_faerlinaAI::Reset(), boss_gluth::boss_gluthAI::Reset(), boss_gothik::boss_gothikAI::Reset(), boss_grobbulus::boss_grobbulusAI::Reset(), boss_kelthuzad::boss_kelthuzadAI::Reset(), boss_loatheb::boss_loathebAI::Reset(), boss_maexxna::boss_maexxnaAI::Reset(), boss_noth::boss_nothAI::Reset(), boss_razuvious::boss_razuviousAI::Reset(), boss_thaddius::boss_thaddiusAI::Reset(), boss_malygos::boss_malygosAI::Reset(), boss_bjarngrim::boss_bjarngrimAI::Reset(), boss_ionar::boss_ionarAI::Reset(), boss_volkhan::boss_volkhanAI::Reset(), boss_sjonnir::boss_sjonnirAI::Reset(), boss_algalon_the_observer::boss_algalon_the_observerAI::Reset(), boss_runemaster_molgeim::boss_runemaster_molgeimAI::Reset(), boss_auriaya::boss_auriayaAI::Reset(), npc_auriaya_feral_defender::npc_auriaya_feral_defenderAI::Reset(), boss_flame_leviathan::boss_flame_leviathanAI::Reset(), boss_freya::boss_freyaAI::Reset(), boss_freya_elder_brightleaf::boss_freya_elder_brightleafAI::Reset(), boss_vezax::boss_vezaxAI::Reset(), boss_hodir::boss_hodirAI::Reset(), boss_kologarn::boss_kologarnAI::Reset(), boss_mimiron::boss_mimironAI::Reset(), npc_ulduar_aerial_command_unit::npc_ulduar_aerial_command_unitAI::Reset(), boss_razorscale::boss_razorscaleAI::Reset(), boss_thorim::boss_thorimAI::Reset(), boss_xt002::boss_xt002AI::Reset(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::Reset(), boss_ingvar_the_plunderer::Reset(), boss_dalronn_the_controller::Reset(), boss_palehoof::boss_palehoofAI::Reset(), npc_massive_jormungar::npc_massive_jormungarAI::Reset(), boss_skadi::boss_skadiAI::Reset(), boss_skadi_grauf::boss_skadi_graufAI::Reset(), boss_svala::boss_svalaAI::Reset(), boss_ymiron::boss_ymironAI::Reset(), boss_toravon::boss_toravonAI::Reset(), boss_ichoron::boss_ichoronAI::Reset(), boss_xevozz::boss_xevozzAI::Reset(), boss_zuramat::boss_zuramatAI::Reset(), npc_q24545_lich_king::npc_q24545_lich_kingAI::Reset(), npc_artruis_the_hearthless::npc_artruis_the_hearthlessAI::Reset(), npc_overlord_drakuru_betrayal::npc_overlord_drakuru_betrayalAI::Reset(), boss_nexusprince_shaffar::Reset(), npc_akama_illidan::Reset(), boss_fathomguard_sharkkis::Reset(), boss_fathomguard_tidalvess::Reset(), boss_fathomguard_caribdis::Reset(), boss_olm_the_summoner::Reset(), npc_battle_at_valhalas::npc_battle_at_valhalasAI::ResetData(), brann_bronzebeard::brann_bronzebeardAI::ResetEvent(), boss_emalon::boss_emalonAI::ResetSummons(), npc_eris_hevenfire::npc_eris_hevenfireAI::SetGUID(), npc_echo_of_medivh::SetupBoard(), BossAI::SummonedCreatureDespawnAll(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::UpdateAI(), npc_ravenclaw_apparition::npc_ravenclaw_apparitionAI::UpdateAI(), npc_arthas::npc_arthasAI::UpdateAI(), npc_hor_lich_king::npc_hor_lich_kingAI::UpdateAI(), boss_malygos::boss_malygosAI::UpdateAI(), boss_freya_elder_brightleaf::boss_freya_elder_brightleafAI::UpdateAI(), boss_mimiron::boss_mimironAI::UpdateAI(), boss_ingvar_the_plunderer::UpdateAI(), boss_svala::boss_svalaAI::UpdateAI(), boss_ymiron::boss_ymironAI::UpdateAI(), boss_xevozz::boss_xevozzAI::UpdateAI(), npc_grimstone::npc_grimstoneAI::UpdateEscortAI(), brann_bronzebeard::brann_bronzebeardAI::UpdateEscortAI(), npc_captain_saeed::npc_captain_saeedAI::WaypointReached(), npc_arthas::npc_arthasAI::WaypointReached(), and npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::WaypointReached().

◆ DespawnEntry()

void SummonList::DespawnEntry ( uint32  entry)
55{
56 for (StorageType::iterator i = storage_.begin(); i != storage_.end();)
57 {
59 if (!summon)
60 i = storage_.erase(i);
61 else if (summon->GetEntry() == entry)
62 {
63 i = storage_.erase(i);
64 summon->DespawnOrUnsummon();
65 }
66 else
67 ++i;
68 }
69}
uint32 GetEntry() const
Definition: Object.h:115

References Creature::DespawnOrUnsummon(), ObjectAccessor::GetCreature(), Object::GetEntry(), me, and storage_.

Referenced by boss_algalon_the_observer::boss_algalon_the_observerAI::DamageTaken(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::DespawnGossipKeepers(), boss_taldaram::DoAction(), boss_prince_keleseth_icc::boss_prince_kelesethAI::DoAction(), boss_prince_taldaram_icc::boss_prince_taldaramAI::DoAction(), boss_prince_valanar_icc::boss_prince_valanarAI::DoAction(), npc_pos_martin_or_gorkun_second::npc_pos_martin_or_gorkun_secondAI::DoAction(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::DoAction(), boss_yoggsaron_brain::boss_yoggsaron_brainAI::DoAction(), boss_sartharion_tenebron::boss_sartharion_tenebronAI::ExecuteEvent(), boss_kaelthas::ExecuteMiddleEvent(), boss_janalai::HatchAllEggs(), boss_zuljin::JustDied(), boss_zuljin::JustEngagedWith(), boss_algalon_the_observer::boss_algalon_the_observerAI::JustEngagedWith(), boss_kaelthas::MovementInform(), boss_the_lich_king::boss_the_lich_kingAI::MovementInform(), boss_the_lich_king::boss_the_lich_kingAI::SpellHitTarget(), boss_victor_nefarius::boss_victor_nefariusAI::SummonedCreatureDies(), boss_jedoga_shadowseeker::SummonedCreatureDies(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::UpdateAI(), npc_kalecgos_kj::UpdateAI(), npc_arthas::npc_arthasAI::UpdateAI(), boss_jedoga_shadowseeker::UpdateAI(), boss_sartharion::boss_sartharionAI::UpdateAI(), boss_anubarak_trial::boss_anubarak_trialAI::UpdateAI(), boss_vezax::boss_vezaxAI::UpdateAI(), boss_mimiron::boss_mimironAI::UpdateAI(), and boss_yoggsaron_sara::boss_yoggsaron_saraAI::UpdateAI().

◆ DespawnIf()

template<typename T >
void SummonList::DespawnIf ( T const &  predicate)
inline

◆ DoAction() [1/2]

template<class Predicate >
void SummonList::DoAction ( int32  info,
Predicate &&  predicate,
uint16  max = 0 
)
inline
118 {
119 if (max)
120 RemoveNotExisting(); // pussywizard: when max is set, non existing can be chosen and nothing will happen
121
122 // We need to use a copy of SummonList here, otherwise original SummonList would be modified
123 StorageType listCopy = storage_;
124 Acore::Containers::RandomResize<StorageType, Predicate>(listCopy, std::forward<Predicate>(predicate), max);
125
126 for (auto const& guid : listCopy)
127 {
128 Creature* summon = ObjectAccessor::GetCreature(*me, guid);
129 if (summon && summon->IsAIEnabled)
130 {
131 summon->AI()->DoAction(info);
132 }
133 else if (!summon)
134 {
135 storage_.remove(guid);
136 }
137 }
138 }
virtual void DoAction(int32)
Definition: UnitAI.h:212
void RemoveNotExisting()
Definition: ScriptedCreature.cpp:82
GuidList StorageType
Definition: ScriptedCreature.h:35
CreatureAI * AI() const
Definition: Creature.h:140
bool IsAIEnabled
Definition: Unit.h:1962

References Creature::AI(), UnitAI::DoAction(), ObjectAccessor::GetCreature(), Unit::IsAIEnabled, me, RemoveNotExisting(), and storage_.

◆ DoAction() [2/2]

void SummonList::DoAction ( int32  info,
uint16  max = 0 
)
inline
103 {
104 if (max)
105 RemoveNotExisting(); // pussywizard: when max is set, non existing can be chosen and nothing will happen
106
107 StorageType listCopy = storage_;
108 for (StorageType::const_iterator i = listCopy.begin(); i != listCopy.end(); ++i)
109 {
110 if (Creature* summon = ObjectAccessor::GetCreature(*me, *i))
111 if (summon->IsAIEnabled)
112 summon->AI()->DoAction(info);
113 }
114 }

References ObjectAccessor::GetCreature(), me, RemoveNotExisting(), and storage_.

Referenced by boss_yoggsaron_sara::boss_yoggsaron_saraAI::AddPortals(), boss_the_lich_king::boss_the_lich_kingAI::DamageTaken(), boss_thorim::boss_thorimAI::DamageTaken(), boss_victor_nefarius::boss_victor_nefariusAI::DoAction(), boss_apothecary_hummel::boss_apothecary_hummelAI::DoAction(), npc_coren_direbrew::DoAction(), boss_prince_taldaram_icc::boss_prince_taldaramAI::DoAction(), boss_the_lich_king::boss_the_lich_kingAI::DoAction(), npc_anub_ar_crusher::npc_anub_ar_crusherAI::DoAction(), boss_drakkari_colossus::boss_drakkari_colossusAI::DoAction(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::DoAction(), boss_the_lich_king::boss_the_lich_kingAI::EnterEvadeMode(), boss_mimiron::boss_mimironAI::EnterEvadeMode(), boss_sartharion_tenebron::boss_sartharion_tenebronAI::ExecuteEvent(), npc_kiljaeden_controller::JustDied(), boss_gormok::boss_gormokAI::JustDied(), boss_auriaya::boss_auriayaAI::JustDied(), boss_kelthuzad::boss_kelthuzadAI::JustDied(), boss_reliquary_of_souls::boss_reliquary_of_soulsAI::JustSummoned(), boss_illidan_stormrage::MovementInform(), boss_hadronox::boss_hadronoxAI::Reset(), boss_auriaya::boss_auriayaAI::Reset(), boss_flame_leviathan::boss_flame_leviathanAI::Reset(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::Reset(), boss_palehoof::boss_palehoofAI::Reset(), boss_taldaram::SpellHitTarget(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::UpdateAI(), npc_coren_direbrew::UpdateAI(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::UpdateAI(), boss_deathbringer_saurfang::boss_deathbringer_saurfangAI::UpdateAI(), boss_kelthuzad::boss_kelthuzadAI::UpdateAI(), boss_thaddius::boss_thaddiusAI::UpdateAI(), boss_malygos::boss_malygosAI::UpdateAI(), boss_ionar::boss_ionarAI::UpdateAI(), boss_volkhan::boss_volkhanAI::UpdateAI(), boss_algalon_the_observer::boss_algalon_the_observerAI::UpdateAI(), boss_auriaya::boss_auriayaAI::UpdateAI(), boss_freya::boss_freyaAI::UpdateAI(), boss_mimiron::boss_mimironAI::UpdateAI(), boss_thorim::boss_thorimAI::UpdateAI(), and boss_yoggsaron_sara::boss_yoggsaron_saraAI::UpdateAI().

◆ DoForAllSummons()

void SummonList::DoForAllSummons ( std::function< void(WorldObject *)>  exec)
inline
141 {
142 // We need to use a copy of SummonList here, otherwise original SummonList would be modified
143 StorageType listCopy = storage_;
144
145 for (auto const& guid : listCopy)
146 {
147 if (WorldObject* summon = ObjectAccessor::GetWorldObject(*me, guid))
148 {
149 exec(summon);
150 }
151 }
152 }
WorldObject * GetWorldObject(WorldObject const &, ObjectGuid const guid)
Definition: ObjectAccessor.cpp:115
Definition: Object.h:410

References ObjectAccessor::GetWorldObject(), me, and storage_.

Referenced by boss_janalai::Boom(), boss_moroes::CheckGuestsInRoom(), npc_creature_generator_akama::DoAction(), boss_hexlord_malacrass::JustEngagedWith(), boss_fathomguard_sharkkis::JustEngagedWith(), boss_high_astromancer_solarian::JustEngagedWith(), boss_captain_skarloc::MovementInform(), boss_kaelthas::PhaseEnchantedWeaponsExecute(), boss_felblood_kaelthas::Reset(), boss_selin_fireheart::SelectNearestCrystal(), and boss_moroes::UpdateAI().

◆ DoZoneInCombat()

◆ empty()

◆ end() [1/2]

iterator SummonList::end ( )
inline
59 {
60 return storage_.end();
61 }

References storage_.

Referenced by boss_algalon_the_observer::boss_algalon_the_observerAI::CallConstellations(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::DoSummonAction(), npc_ravenclaw_apparition::npc_ravenclaw_apparitionAI::EmoteCrowd(), boss_lady_deathwhisper::boss_lady_deathwhisperAI::EmpowerCultist(), boss_salramm::boss_salrammAI::ExplodeGhoul(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::GetEntryFromSummons(), npc_arthas::npc_arthasAI::GetEventNpc(), boss_moroes::GetRandomGuest(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::InformCloud(), boss_infinite_corruptor::boss_infinite_corruptorAI::JustDied(), boss_lady_deathwhisper::boss_lady_deathwhisperAI::JustDied(), npc_xt002_heart::npc_xt002_heartAI::SendEnergyToCorner(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::SpidersMoveDown(), npc_captain_saeed::npc_captain_saeedAI::SummonsAction(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::UpdateAI(), npc_kalecgos_kj::UpdateAI(), npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI::UpdateAI(), npc_arthas::npc_arthasAI::UpdateAI(), npc_pos_leader::npc_pos_leaderAI::UpdateAI(), boss_the_lich_king::boss_the_lich_kingAI::UpdateAI(), boss_faerlina::boss_faerlinaAI::UpdateAI(), boss_thaddius::boss_thaddiusAI::UpdateAI(), boss_freya_elder_brightleaf::boss_freya_elder_brightleafAI::UpdateAI(), npc_vh_teleportation_portal::npc_vh_teleportation_portalAI::UpdateAI(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::UpdateEscortAI(), and npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::WaypointReached().

◆ end() [2/2]

const_iterator SummonList::end ( ) const
inline
64 {
65 return storage_.end();
66 }

References storage_.

◆ erase()

iterator SummonList::erase ( iterator  i)
inline

◆ GetCreatureWithEntry()

◆ GetEntryCount()

uint32 SummonList::GetEntryCount ( uint32  entry) const
106{
107 uint32 count = 0;
108 for (StorageType::const_iterator i = storage_.begin(); i != storage_.end(); ++i)
109 {
111 if (summon && summon->GetEntry() == entry)
112 ++count;
113 }
114
115 return count;
116}
std::uint32_t uint32
Definition: Define.h:107

References ObjectAccessor::GetCreature(), Object::GetEntry(), me, and storage_.

Referenced by boss_halion::boss_halionAI::JustSummoned(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::SummonedCreatureDies(), boss_halion::boss_halionAI::UpdateAI(), and npc_pos_martin_or_gorkun_second::npc_pos_martin_or_gorkun_secondAI::UpdateAI().

◆ HasEntry()

◆ IsAnyCreatureAlive()

bool SummonList::IsAnyCreatureAlive ( ) const
145{
146 for (auto const& guid : storage_)
147 {
148 if (Creature* summon = ObjectAccessor::GetCreature(*me, guid))
149 {
150 if (summon->IsAlive())
151 {
152 return true;
153 }
154 }
155 }
156
157 return false;
158}

References ObjectAccessor::GetCreature(), me, and storage_.

Referenced by boss_rend_blackhand::boss_rend_blackhandAI::SummonedCreatureDies(), boss_moam::SummonedCreatureDies(), and boss_the_lurker_below::SummonedCreatureDies().

◆ IsAnyCreatureInCombat()

bool SummonList::IsAnyCreatureInCombat ( ) const
177{
178 for (auto const& guid : storage_)
179 {
180 if (Creature* summon = ObjectAccessor::GetCreature(*me, guid))
181 {
182 if (summon->IsInCombat())
183 {
184 return true;
185 }
186 }
187 }
188
189 return false;
190}

References ObjectAccessor::GetCreature(), me, and storage_.

Referenced by boss_rend_blackhand::boss_rend_blackhandAI::SummonedCreatureDespawn().

◆ IsAnyCreatureWithEntryAlive()

bool SummonList::IsAnyCreatureWithEntryAlive ( uint32  entry) const
161{
162 for (auto const& guid : storage_)
163 {
164 if (Creature* summon = ObjectAccessor::GetCreature(*me, guid))
165 {
166 if (summon->GetEntry() == entry && summon->IsAlive())
167 {
168 return true;
169 }
170 }
171 }
172
173 return false;
174}

References ObjectAccessor::GetCreature(), me, and storage_.

Referenced by boss_viscidus::SummonedCreatureDies().

◆ RemoveNotExisting()

◆ Respawn()

void SummonList::Respawn ( )
119{
120 for (StorageType::iterator i = storage_.begin(); i != storage_.end();)
121 {
122 if (Creature* summon = ObjectAccessor::GetCreature(*me, *i))
123 {
124 summon->Respawn(true);
125 ++i;
126 }
127 else
128 i = storage_.erase(i);
129 }
130}

References ObjectAccessor::GetCreature(), me, and storage_.

Referenced by boss_priestess_delrissa::Reset().

◆ size()

◆ Summon()

void SummonList::Summon ( Creature const *  summon)
inline
88{ storage_.push_back(summon->GetGUID()); }

References Object::GetGUID(), and storage_.

Referenced by npc_arthas::npc_arthasAI::DoAction(), boss_palehoof::boss_palehoofAI::DoAction(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::DoAction(), boss_sartharion_tenebron::boss_sartharion_tenebronAI::ExecuteEvent(), boss_sartharion_shadron::boss_sartharion_shadronAI::ExecuteEvent(), boss_sartharion_vesperon::boss_sartharion_vesperonAI::ExecuteEvent(), npc_auriaya_feral_defender::npc_auriaya_feral_defenderAI::JustDied(), boss_ambassador_flamelash::boss_ambassador_flamelashAI::JustSummoned(), npc_highlord_darion_mograine::npc_highlord_darion_mograineAI::JustSummoned(), boss_darkmaster_gandling::boss_darkmaster_gandlingAI::JustSummoned(), boss_headless_horseman::JustSummoned(), boss_infinite_corruptor::boss_infinite_corruptorAI::JustSummoned(), boss_salramm::boss_salrammAI::JustSummoned(), npc_arthas::npc_arthasAI::JustSummoned(), boss_anubrekhan::boss_anubrekhanAI::JustSummoned(), boss_faerlina::boss_faerlinaAI::JustSummoned(), boss_grobbulus::boss_grobbulusAI::JustSummoned(), boss_kelthuzad::boss_kelthuzadAI::JustSummoned(), boss_loatheb::boss_loathebAI::JustSummoned(), boss_maexxna::boss_maexxnaAI::JustSummoned(), boss_razuvious::boss_razuviousAI::JustSummoned(), boss_thaddius::boss_thaddiusAI::JustSummoned(), brann_bronzebeard::brann_bronzebeardAI::JustSummoned(), boss_auriaya::boss_auriayaAI::JustSummoned(), boss_flame_leviathan::boss_flame_leviathanAI::JustSummoned(), boss_freya::boss_freyaAI::JustSummoned(), boss_kologarn::boss_kologarnAI::JustSummoned(), boss_thorim::boss_thorimAI::JustSummoned(), boss_xt002::boss_xt002AI::JustSummoned(), npc_xt002_heart::npc_xt002_heartAI::JustSummoned(), boss_yoggsaron::boss_yoggsaronAI::JustSummoned(), boss_yoggsaron_brain::boss_yoggsaron_brainAI::JustSummoned(), boss_toravon::boss_toravonAI::JustSummoned(), npc_overlord_drakuru_betrayal::npc_overlord_drakuru_betrayalAI::JustSummoned(), npc_eris_hevenfire::npc_eris_hevenfireAI::JustSummoned(), npc_daphne_stilwell::npc_daphne_stilwellAI::JustSummoned(), npc_coren_direbrew::JustSummoned(), boss_ossirian::JustSummoned(), npc_battle_at_valhalas::npc_battle_at_valhalasAI::JustSummoned(), boss_dalronn_the_controller::JustSummoned(), boss_ichoron::boss_ichoronAI::JustSummoned(), boss_xevozz::boss_xevozzAI::JustSummoned(), boss_zuramat::boss_zuramatAI::JustSummoned(), npc_vh_teleportation_portal::npc_vh_teleportation_portalAI::JustSummoned(), boss_twin_valkyrAI::JustSummoned(), npc_hor_lich_king::npc_hor_lich_kingAI::JustSummoned(), npc_pos_leader::npc_pos_leaderAI::JustSummoned(), npc_pos_martin_or_gorkun_second::npc_pos_martin_or_gorkun_secondAI::JustSummoned(), npc_icc_valkyr_herald::npc_icc_valkyr_heraldAI::JustSummoned(), boss_hodir::boss_hodirAI::JustSummoned(), boss_mimiron::boss_mimironAI::JustSummoned(), npc_ulduar_aerial_command_unit::npc_ulduar_aerial_command_unitAI::JustSummoned(), boss_razorscale::boss_razorscaleAI::JustSummoned(), boss_ingvar_the_plunderer::JustSummoned(), BossAI::JustSummoned(), WorldBossAI::JustSummoned(), npc_grimstone::npc_grimstoneAI::JustSummoned(), boss_gyth::boss_gythAI::JustSummoned(), boss_rend_blackhand::boss_rend_blackhandAI::JustSummoned(), boss_razorgore::boss_razorgoreAI::JustSummoned(), npc_echo_of_medivh::JustSummoned(), boss_curator::JustSummoned(), boss_nightbane::JustSummoned(), boss_priestess_delrissa::JustSummoned(), boss_priestess_lackey_commonAI::JustSummoned(), boss_vexallus::JustSummoned(), boss_kormok::JustSummoned(), boss_sacrolash::JustSummoned(), npc_kiljaeden_controller::JustSummoned(), npc_kalecgos_kj::JustSummoned(), npc_bh_thalorien_dawnseeker::npc_bh_thalorien_dawnseekerAI::JustSummoned(), npc_ravenclaw_apparition::npc_ravenclaw_apparitionAI::JustSummoned(), npc_amanishi_tempest::JustSummoned(), boss_hazzarah::JustSummoned(), boss_captain_skarloc::JustSummoned(), npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI::JustSummoned(), boss_isalien::JustSummoned(), boss_onyxia::JustSummoned(), npc_general_andorov::JustSummoned(), boss_eye_of_cthun::JustSummoned(), boss_amanitar::JustSummoned(), boss_jedoga_shadowseeker::JustSummoned(), boss_taldaram::JustSummoned(), boss_anub_arak::boss_anub_arakAI::JustSummoned(), boss_hadronox::boss_hadronoxAI::JustSummoned(), npc_anub_ar_crusher::npc_anub_ar_crusherAI::JustSummoned(), boss_krik_thir::boss_krik_thirAI::JustSummoned(), boss_sartharion::boss_sartharionAI::JustSummoned(), boss_sartharion_tenebron::boss_sartharion_tenebronAI::JustSummoned(), boss_baltharus_the_warborn::boss_baltharus_the_warbornAI::JustSummoned(), boss_general_zarithrian::boss_general_zarithrianAI::JustSummoned(), boss_halion::boss_halionAI::JustSummoned(), boss_black_knight::boss_black_knightAI::JustSummoned(), boss_anubarak_trial::boss_anubarak_trialAI::JustSummoned(), boss_jaraxxus::boss_jaraxxusAI::JustSummoned(), boss_gormok::boss_gormokAI::JustSummoned(), boss_novos::boss_novosAI::JustSummoned(), boss_trollgore::boss_trollgoreAI::JustSummoned(), boss_bronjahm::boss_bronjahmAI::JustSummoned(), boss_devourer_of_souls::boss_devourer_of_soulsAI::JustSummoned(), boss_drakkari_colossus::boss_drakkari_colossusAI::JustSummoned(), boss_slad_ran::boss_slad_ranAI::JustSummoned(), boss_prince_keleseth_icc::boss_prince_kelesethAI::JustSummoned(), boss_prince_taldaram_icc::boss_prince_taldaramAI::JustSummoned(), boss_prince_valanar_icc::boss_prince_valanarAI::JustSummoned(), boss_deathbringer_saurfang::boss_deathbringer_saurfangAI::JustSummoned(), boss_lady_deathwhisper::boss_lady_deathwhisperAI::JustSummoned(), boss_professor_putricide::boss_professor_putricideAI::JustSummoned(), boss_rotface::boss_rotfaceAI::JustSummoned(), npc_precious_icc::npc_precious_iccAI::JustSummoned(), boss_sindragosa::boss_sindragosaAI::JustSummoned(), boss_the_lich_king::boss_the_lich_kingAI::JustSummoned(), npc_frostwing_vrykul::npc_frostwing_vrykulAI::JustSummoned(), npc_icc_gauntlet_controller::npc_icc_gauntlet_controllerAI::JustSummoned(), npc_icc_putricades_trap::npc_icc_putricades_trapAI::JustSummoned(), boss_gluth::boss_gluthAI::JustSummoned(), boss_gothik::boss_gothikAI::JustSummoned(), boss_noth::boss_nothAI::JustSummoned(), boss_malygos::boss_malygosAI::JustSummoned(), boss_anomalus::JustSummoned(), boss_magus_telestra::JustSummoned(), boss_ormorok::JustSummoned(), boss_volkhan::boss_volkhanAI::JustSummoned(), boss_algalon_the_observer::boss_algalon_the_observerAI::JustSummoned(), boss_vezax::boss_vezaxAI::JustSummoned(), boss_yoggsaron_sara::boss_yoggsaron_saraAI::JustSummoned(), boss_yoggsaron_keeper::JustSummoned(), boss_svala::boss_svalaAI::JustSummoned(), boss_emalon::boss_emalonAI::JustSummoned(), npc_q24545_lich_king::npc_q24545_lich_kingAI::JustSummoned(), npc_tirions_gambit_tirion::npc_tirions_gambit_tirionAI::JustSummoned(), boss_nexusprince_shaffar::JustSummoned(), boss_grandmaster_vorpil::JustSummoned(), boss_gurtogg_bloodboil::JustSummoned(), boss_illidan_stormrage::JustSummoned(), npc_akama_illidan::JustSummoned(), boss_reliquary_of_souls::boss_reliquary_of_soulsAI::JustSummoned(), npc_creature_generator_akama::JustSummoned(), boss_supremus::JustSummoned(), boss_teron_gorefiend::JustSummoned(), boss_fathomlord_karathress::JustSummoned(), boss_fathomguard_sharkkis::JustSummoned(), boss_fathomguard_tidalvess::JustSummoned(), boss_fathomguard_caribdis::JustSummoned(), boss_lady_vashj::JustSummoned(), boss_morogrim_tidewalker::JustSummoned(), npc_ahune_bunny::JustSummoned(), boss_olm_the_summoner::JustSummoned(), boss_omor_the_unscarred::JustSummoned(), boss_vazruden_the_herald::JustSummoned(), boss_warchief_kargath_bladefist::JustSummoned(), npc_warden_mellichar::npc_warden_mellicharAI::JustSummoned(), boss_kaelthas::JustSummoned(), boss_nethermancer_sepethrea::JustSummoned(), boss_terestian_illhoof::JustSummoned(), npc_koltira_deathweaver::npc_koltira_deathweaverAI::JustSummoned(), boss_broggok::JustSummoned(), boss_ayamiss::JustSummoned(), boss_kaelthas::PrepareAdvisors(), npc_dark_iron_attack_generator::PrepareEvent(), boss_bjarngrim::boss_bjarngrimAI::Reset(), boss_skadi::boss_skadiAI::Reset(), npc_artruis_the_hearthless::npc_artruis_the_hearthlessAI::Reset(), npc_captain_saeed::npc_captain_saeedAI::SetGUID(), boss_skadi_grauf::boss_skadi_graufAI::SpawnHelpers(), boss_malchezaar::SpawnInfernal(), boss_ionar::boss_ionarAI::Split(), boss_sjonnir::boss_sjonnirAI::SummonDwarfes(), boss_jedoga_shadowseeker::SummonedCreatureDies(), boss_sjonnir::boss_sjonnirAI::UpdateAI(), boss_freya_elder_brightleaf::boss_freya_elder_brightleafAI::UpdateAI(), npc_massive_jormungar::npc_massive_jormungarAI::UpdateAI(), and boss_ymiron::boss_ymironAI::UpdateAI().

Member Data Documentation

◆ me

◆ storage_