diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bindings/scripts/scripts/northrend/zuldrak.cpp | 105 |
1 files changed, 52 insertions, 53 deletions
diff --git a/src/bindings/scripts/scripts/northrend/zuldrak.cpp b/src/bindings/scripts/scripts/northrend/zuldrak.cpp index 00129033b56..83f76254b4b 100644 --- a/src/bindings/scripts/scripts/northrend/zuldrak.cpp +++ b/src/bindings/scripts/scripts/northrend/zuldrak.cpp @@ -32,60 +32,59 @@ enum eDrakuruShackles NPC_RAGECLAW = 29686 }; -struct TRINITY_DLL_DECL npc_drakuru_shacklesAI : public ScriptedAI -{ - npc_drakuru_shacklesAI(Creature* pCreature) : ScriptedAI(pCreature) {} - - Unit* Rageclaw; - - void Reset() - { - m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - float x, y, z; - Rageclaw = NULL; - m_creature->GetClosePoint(x, y, z, m_creature->GetObjectSize()/3,0.1); - if (Unit* summon = m_creature->SummonCreature(NPC_RAGECLAW,x,y,z,0,TEMPSUMMON_DEAD_DESPAWN,1000)) - DoActionOnRageclaw(true,summon); - } - - void DoActionOnRageclaw(bool bLocking, Unit* pWho) - { - if (!pWho) - return; - - Rageclaw = pWho; - - if (bLocking) - { - if (pWho) - { - m_creature->SetInFront(Rageclaw); - Rageclaw->SetInFront(m_creature); +struct TRINITY_DLL_DECL npc_drakuru_shacklesAI : public ScriptedAI
+{
+ npc_drakuru_shacklesAI(Creature* pCreature) : ScriptedAI(pCreature) {}
+
+ Unit* Rageclaw;
+
+ void Reset()
+ {
+ Rageclaw = NULL;
+ m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
+
+ float x, y, z;
+ m_creature->GetClosePoint(x, y, z, m_creature->GetObjectSize() / 3, 0.1f);
+
+ if (Unit* summon = m_creature->SummonCreature(NPC_RAGECLAW, x, y, z,
+ 0, TEMPSUMMON_DEAD_DESPAWN, 1000))
+ {
+ Rageclaw = summon;
+ LockRageclaw();
+ }
+ }
+
+ void LockRageclaw()
+ {
+ m_creature->SetInFront(Rageclaw);
+ Rageclaw->SetInFront(m_creature);
+
+ DoCast(Rageclaw, SPELL_LEFT_CHAIN, true);
+ DoCast(Rageclaw, SPELL_RIGHT_CHAIN, true);
+ }
+
+ void UnlockRageclaw(Unit* pWho)
+ {
+ if (!pWho)
+ return;
+
+ DoCast(Rageclaw, SPELL_FREE_RAGECLAW, true);
+
+ m_creature->setDeathState(DEAD);
+ }
+
+ void SpellHit(Unit* pCaster, const SpellEntry* pSpell)
+ {
+ if (pSpell->Id == SPELL_UNLOCK_SHACKLE)
+ {
+ if (Rageclaw)
+ UnlockRageclaw(pCaster);
+ else
+ m_creature->setDeathState(JUST_DIED);
+ }
+ }
+};
- DoCast(Rageclaw, SPELL_LEFT_CHAIN, true); - DoCast(Rageclaw, SPELL_RIGHT_CHAIN, true); - } - } - else - { - DoCast(Rageclaw, SPELL_FREE_RAGECLAW, true); - if (pWho->GetTypeId() == TYPEID_PLAYER) - CAST_PLR(pWho)->CastSpell(Rageclaw, SPELL_UNLOCK_SHACKLE, true); - m_creature->setDeathState(DEAD); - } - } - - void SpellHit(Unit* pCaster, const SpellEntry* pSpell) - { - if (pSpell->Id == SPELL_UNLOCK_SHACKLE) - { - if (Rageclaw) - DoActionOnRageclaw(false, pCaster); - else - m_creature->setDeathState(JUST_DIED); - } - } -}; CreatureAI* GetAI_npc_drakuru_shackles(Creature* pCreature) { |