diff options
| author | megamage <none@none> | 2008-11-03 10:16:06 -0600 |
|---|---|---|
| committer | megamage <none@none> | 2008-11-03 10:16:06 -0600 |
| commit | ab1bb3ac7602702755ac197f963a04fb59346aab (patch) | |
| tree | 9e5ee8fdb7dd89a9674e18e46aa3a622e1379608 /src/bindings/scripts/include | |
| parent | b9af250881457ba6f7c4ac54ff5f981476c2dec6 (diff) | |
[svn] Add class SummonList in script to despawn summons. Update Zul'jin script for test.
--HG--
branch : trunk
Diffstat (limited to 'src/bindings/scripts/include')
| -rw-r--r-- | src/bindings/scripts/include/sc_creature.cpp | 48 | ||||
| -rw-r--r-- | src/bindings/scripts/include/sc_creature.h | 12 |
2 files changed, 60 insertions, 0 deletions
diff --git a/src/bindings/scripts/include/sc_creature.cpp b/src/bindings/scripts/include/sc_creature.cpp index 7bc7c1015cb..f352583dd3f 100644 --- a/src/bindings/scripts/include/sc_creature.cpp +++ b/src/bindings/scripts/include/sc_creature.cpp @@ -15,6 +15,54 @@ struct TSpellSummary { uint8 Effects; // set of enum SelectEffect } *SpellSummary; +void SummonList::Despawn(Creature *summon) +{ + uint64 guid = summon->GetGUID(); + for(iterator i = begin(); i != end(); ++i) + { + if(*i == guid) + { + erase(i); + return; + } + } +} + +void SummonList::DespawnEntry(uint32 entry) +{ + for(iterator i = begin(); i != end(); ++i) + { + if(Creature *summon = (Creature*)Unit::GetUnit(*m_creature, *i)) + { + if(summon->GetEntry() == entry) + { + summon->setDeathState(JUST_DIED); + summon->RemoveCorpse(); + i = erase(i); + --i; + } + } + else + { + i = erase(i); + --i; + } + } +} + +void SummonList::DespawnAll() +{ + for(iterator i = begin(); i != end(); ++i) + { + if(Creature *summon = (Creature*)Unit::GetUnit(*m_creature, *i)) + { + summon->setDeathState(JUST_DIED); + summon->RemoveCorpse(); + } + } + clear(); +} + bool ScriptedAI::IsVisible(Unit* who) const { if (!who) diff --git a/src/bindings/scripts/include/sc_creature.h b/src/bindings/scripts/include/sc_creature.h index e85e7d45f8f..da40e2eab60 100644 --- a/src/bindings/scripts/include/sc_creature.h +++ b/src/bindings/scripts/include/sc_creature.h @@ -11,6 +11,18 @@ #include "CreatureAI.h" #include "Creature.h" +class SummonList : std::list<uint64> +{ +public: + SummonList(Creature* creature) : m_creature(creature) {} + void Summon(Creature *summon) {push_back(summon->GetGUID());} + void Despawn(Creature *summon); + void DespawnEntry(uint32 entry); + void DespawnAll(); +private: + Creature *m_creature; +}; + struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI { ScriptedAI(Creature* creature) : m_creature(creature), InCombat(false) {} |
