mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 09:44:45 +01:00
*Add a new class for event based scripts. Two examples are given.
--HG-- branch : trunk
This commit is contained in:
@@ -16,52 +16,49 @@ struct TSpellSummary {
|
||||
uint8 Effects; // set of enum SelectEffect
|
||||
} *SpellSummary;
|
||||
|
||||
void SummonList::Despawn(Creature *summon)
|
||||
void SummonList::DoAction(uint32 entry, uint32 info)
|
||||
{
|
||||
uint64 guid = summon->GetGUID();
|
||||
for(iterator i = begin(); i != end(); ++i)
|
||||
for(iterator i = begin(); i != end();)
|
||||
{
|
||||
if(*i == guid)
|
||||
{
|
||||
erase(i);
|
||||
return;
|
||||
}
|
||||
Creature *summon = Unit::GetCreature(*m_creature, *i);
|
||||
++i;
|
||||
if(summon && summon->IsAIEnabled)
|
||||
summon->AI()->DoAction(info);
|
||||
}
|
||||
}
|
||||
|
||||
void SummonList::DespawnEntry(uint32 entry)
|
||||
{
|
||||
for(iterator i = begin(); i != end(); ++i)
|
||||
for(iterator i = begin(); i != end();)
|
||||
{
|
||||
if(Creature *summon = Unit::GetCreature(*m_creature, *i))
|
||||
Creature *summon = Unit::GetCreature(*m_creature, *i);
|
||||
if(!summon)
|
||||
erase(i++);
|
||||
else if(summon->GetEntry() == entry)
|
||||
{
|
||||
if(summon->GetEntry() == entry)
|
||||
{
|
||||
summon->setDeathState(JUST_DIED);
|
||||
summon->RemoveCorpse();
|
||||
i = erase(i);
|
||||
--i;
|
||||
}
|
||||
erase(i++);
|
||||
summon->setDeathState(JUST_DIED);
|
||||
summon->RemoveCorpse();
|
||||
}
|
||||
else
|
||||
{
|
||||
i = erase(i);
|
||||
--i;
|
||||
}
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
void SummonList::DespawnAll()
|
||||
{
|
||||
for(iterator i = begin(); i != end(); ++i)
|
||||
while(!empty())
|
||||
{
|
||||
if(Creature *summon = Unit::GetCreature(*m_creature, *i))
|
||||
Creature *summon = Unit::GetCreature(*m_creature, *begin());
|
||||
if(!summon)
|
||||
erase(begin());
|
||||
else
|
||||
{
|
||||
erase(begin());
|
||||
summon->setDeathState(JUST_DIED);
|
||||
summon->RemoveCorpse();
|
||||
}
|
||||
}
|
||||
clear();
|
||||
}
|
||||
|
||||
void ScriptedAI::AttackStart(Unit* who, bool melee)
|
||||
|
||||
@@ -13,14 +13,15 @@
|
||||
|
||||
float GetSpellMaxRangeForHostile(uint32 id);
|
||||
|
||||
class SummonList : std::list<uint64>
|
||||
class SummonList : private std::list<uint64>
|
||||
{
|
||||
public:
|
||||
SummonList(Creature* creature) : m_creature(creature) {}
|
||||
void Summon(Creature *summon) {push_back(summon->GetGUID());}
|
||||
void Despawn(Creature *summon);
|
||||
explicit SummonList(Creature* creature) : m_creature(creature) {}
|
||||
void Summon(Creature *summon) { push_back(summon->GetGUID()); }
|
||||
void Despawn(Creature *summon) { remove(summon->GetGUID()); }
|
||||
void DespawnEntry(uint32 entry);
|
||||
void DespawnAll();
|
||||
void DoAction(uint32 entry, uint32 info);
|
||||
private:
|
||||
Creature *m_creature;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user