diff options
| author | megamage <none@none> | 2009-05-10 22:48:22 -0500 |
|---|---|---|
| committer | megamage <none@none> | 2009-05-10 22:48:22 -0500 |
| commit | 82f886e3c1daa6ae9049bb0c0c0c00219e9735ba (patch) | |
| tree | 7b8a4bbebf4365c57af8a21694a50aabecf2423a /src/bindings/scripts/include | |
| parent | 904300b4c2f0c708bc98812ec2a0be04249a81d4 (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.cpp | 32 | ||||
| -rw-r--r-- | src/bindings/scripts/include/sc_creature.h | 27 |
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 |
