aboutsummaryrefslogtreecommitdiff
path: root/src/bindings/scripts/include
diff options
context:
space:
mode:
authormegamage <none@none>2009-05-10 22:48:22 -0500
committermegamage <none@none>2009-05-10 22:48:22 -0500
commit82f886e3c1daa6ae9049bb0c0c0c00219e9735ba (patch)
tree7b8a4bbebf4365c57af8a21694a50aabecf2423a /src/bindings/scripts/include
parent904300b4c2f0c708bc98812ec2a0be04249a81d4 (diff)
*Update AI scripts. Use better default AI.
--HG-- branch : trunk
Diffstat (limited to 'src/bindings/scripts/include')
-rw-r--r--src/bindings/scripts/include/sc_creature.cpp32
-rw-r--r--src/bindings/scripts/include/sc_creature.h27
2 files changed, 59 insertions, 0 deletions
diff --git a/src/bindings/scripts/include/sc_creature.cpp b/src/bindings/scripts/include/sc_creature.cpp
index 42ee15074ed..e5a6eb958e0 100644
--- a/src/bindings/scripts/include/sc_creature.cpp
+++ b/src/bindings/scripts/include/sc_creature.cpp
@@ -55,6 +55,7 @@ void SummonList::DespawnAll()
else
{
erase(begin());
+ summon->SetVisibility(VISIBILITY_OFF);
summon->setDeathState(JUST_DIED);
summon->RemoveCorpse();
}
@@ -634,6 +635,37 @@ void Scripted_NoMovementAI::AttackStart(Unit* who)
}
}
+void BossAI::_Reset()
+{
+ events.Reset();
+ summons.DespawnAll();
+ instance->SetBossState(bossId, NOT_STARTED);
+}
+
+void BossAI::_JustDied()
+{
+ events.Reset();
+ summons.DespawnAll();
+ instance->SetBossState(bossId, DONE);
+}
+
+void BossAI::_EnterCombat()
+{
+ DoZoneInCombat();
+ instance->SetBossState(bossId, IN_PROGRESS);
+}
+
+void BossAI::JustSummoned(Creature *summon)
+{
+ summons.Summon(summon);
+ DoZoneInCombat(summon);
+}
+
+void BossAI::SummonedCreatureDespawn(Creature *summon)
+{
+ summons.Despawn(summon);
+}
+
#define GOBJECT(x) (const_cast<GameObjectInfo*>(GetGameObjectInfo(x)))
void LoadOverridenSQLData()
diff --git a/src/bindings/scripts/include/sc_creature.h b/src/bindings/scripts/include/sc_creature.h
index 8336df545b6..26bf5fb400b 100644
--- a/src/bindings/scripts/include/sc_creature.h
+++ b/src/bindings/scripts/include/sc_creature.h
@@ -12,6 +12,8 @@
#include "CreatureAI.h"
#include "CreatureAIImpl.h"
+class ScriptedInstance;
+
class SummonList : private std::list<uint64>
{
public:
@@ -216,5 +218,30 @@ struct TRINITY_DLL_DECL NullCreatureAI : public ScriptedAI
void UpdateAI(const uint32) {}
};
+struct TRINITY_DLL_DECL BossAI : public ScriptedAI
+{
+ BossAI(Creature *c, uint32 id) : ScriptedAI(c), bossId(id)
+ , summons(me), instance((ScriptedInstance*)c->GetInstanceData())
+ {}
+
+ uint32 bossId;
+ EventMap events;
+ SummonList summons;
+ ScriptedInstance *instance;
+
+ void JustSummoned(Creature *summon);
+ void SummonedCreatureDespawn(Creature *summon);
+
+ void UpdateAI(const uint32 diff) = 0;
+
+ void _Reset();
+ void _EnterCombat();
+ void _JustDied();
+
+ void Reset() { _Reset(); }
+ void EnterCombat(Unit *who) { _EnterCombat(); }
+ void JustDied(Unit *killer) { _JustDied(); }
+};
+
#endif