aboutsummaryrefslogtreecommitdiff
path: root/src/bindings/scripts/include
diff options
context:
space:
mode:
authormegamage <none@none>2008-11-03 10:16:06 -0600
committermegamage <none@none>2008-11-03 10:16:06 -0600
commitab1bb3ac7602702755ac197f963a04fb59346aab (patch)
tree9e5ee8fdb7dd89a9674e18e46aa3a622e1379608 /src/bindings/scripts/include
parentb9af250881457ba6f7c4ac54ff5f981476c2dec6 (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.cpp48
-rw-r--r--src/bindings/scripts/include/sc_creature.h12
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) {}