diff options
author | Anubisss <none@none> | 2010-04-02 15:41:37 +0200 |
---|---|---|
committer | Anubisss <none@none> | 2010-04-02 15:41:37 +0200 |
commit | 08b4748e622a91b86b1918400836f862133cbf71 (patch) | |
tree | 0f0a582a6ce9ef3c4f01dc089af56014c16f9126 /src/scripts/northrend/zuldrak.cpp | |
parent | 7c4f2f520f4047b10d94e44f6af1c910ff4bdbcf (diff) |
Use GUIDs instead of "global" pointers in zone scripts.
This commit is like that: 7714 / rce505237e4aa
And use const_iterators where it is possible.
--HG--
branch : trunk
Diffstat (limited to 'src/scripts/northrend/zuldrak.cpp')
-rw-r--r-- | src/scripts/northrend/zuldrak.cpp | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/src/scripts/northrend/zuldrak.cpp b/src/scripts/northrend/zuldrak.cpp index 359a7389f3a..0dbedc2d22f 100644 --- a/src/scripts/northrend/zuldrak.cpp +++ b/src/scripts/northrend/zuldrak.cpp @@ -37,11 +37,11 @@ struct npc_drakuru_shacklesAI : public ScriptedAI { npc_drakuru_shacklesAI(Creature* pCreature) : ScriptedAI(pCreature) {} - Unit* Rageclaw; + uint64 RageclawGUID; void Reset() { - Rageclaw = NULL; + RageclawGUID = 0; m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); float x, y, z; @@ -50,13 +50,15 @@ struct npc_drakuru_shacklesAI : public ScriptedAI if (Unit* summon = m_creature->SummonCreature(NPC_RAGECLAW, x, y, z, 0, TEMPSUMMON_DEAD_DESPAWN, 1000)) { - Rageclaw = summon; + RageclawGUID = summon->GetGUID(); LockRageclaw(); } } void LockRageclaw() { + Unit *Rageclaw = Unit::GetCreature(*m_creature, RageclawGUID); + // pointer check not needed m_creature->SetInFront(Rageclaw); Rageclaw->SetInFront(m_creature); @@ -69,6 +71,8 @@ struct npc_drakuru_shacklesAI : public ScriptedAI if (!pWho) return; + Creature *Rageclaw = Unit::GetCreature(*m_creature, RageclawGUID); + // pointer check not needed DoCast(Rageclaw, SPELL_FREE_RAGECLAW, true); m_creature->setDeathState(DEAD); @@ -78,7 +82,7 @@ struct npc_drakuru_shacklesAI : public ScriptedAI { if (pSpell->Id == SPELL_UNLOCK_SHACKLE) { - if (Rageclaw) + if (Creature *Rageclaw = Unit::GetCreature(*m_creature, RageclawGUID)) UnlockRageclaw(pCaster); else m_creature->setDeathState(JUST_DIED); @@ -240,10 +244,9 @@ struct npc_gurgthockAI : public ScriptedAI { npc_gurgthockAI(Creature* pCreature) : ScriptedAI(pCreature) { - pSummon = NULL; } - Unit* pSummon; + uint64 SummonGUID; std::list<uint64> SummonList; @@ -257,6 +260,7 @@ struct npc_gurgthockAI : public ScriptedAI void Reset() { + SummonGUID = 0; m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); uiTimer = 0; uiPhase = 0; @@ -275,7 +279,7 @@ struct npc_gurgthockAI : public ScriptedAI m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER); - for(std::list<uint64>::iterator itr = SummonList.begin(); itr != SummonList.end(); ++itr) + for(std::list<uint64>::const_iterator itr = SummonList.begin(); itr != SummonList.end(); ++itr) { if (Creature* pTemp = Unit::GetCreature(*m_creature, *itr)) if (pTemp) @@ -344,15 +348,16 @@ struct npc_gurgthockAI : public ScriptedAI switch(uiPhase) { case 1: - pSummon = m_creature->SummonCreature(NPC_ORINOKO_TUSKBREAKER, SpawnPosition[0], TEMPSUMMON_CORPSE_DESPAWN, 1000); + if (Creature *pSummon = m_creature->SummonCreature(NPC_ORINOKO_TUSKBREAKER, SpawnPosition[0], TEMPSUMMON_CORPSE_DESPAWN, 1000)) + SummonGUID = pSummon->GetGUID(); uiPhase = 2; uiTimer = 4000; break; case 2: - if (pSummon) + if (Creature *pSummon = Unit::GetCreature(*m_creature, SummonGUID)) pSummon->GetMotionMaster()->MoveJump(5776.319824, -2981.005371, 273.100037, 10.0f, 20.0f); uiPhase = 0; - pSummon = NULL; + SummonGUID = 0; break; case 3: DoScriptText(SAY_QUEST_ACCEPT_KORRAK_2, m_creature); @@ -360,7 +365,8 @@ struct npc_gurgthockAI : public ScriptedAI uiPhase = 4; break; case 4: - pSummon = m_creature->SummonCreature(NPC_KORRAK_BLOODRAGER, SpawnPosition[0], TEMPSUMMON_CORPSE_DESPAWN, 1000); + if (Creature *pSummon = m_creature->SummonCreature(NPC_KORRAK_BLOODRAGER, SpawnPosition[0], TEMPSUMMON_CORPSE_DESPAWN, 1000)) + SummonGUID = pSummon->GetGUID(); uiTimer = 3000; uiPhase = 0; break; @@ -454,7 +460,7 @@ struct npc_orinoko_tuskbreakerAI : public ScriptedAI uint32 uiBattleShoutTimer; uint32 uiFishyScentTimer; - Unit* pAffected; + uint64 AffectedGUID; uint64 uiWhisker; void Reset() @@ -465,7 +471,7 @@ struct npc_orinoko_tuskbreakerAI : public ScriptedAI uiBattleShoutTimer = 0; uiFishyScentTimer = 20000; uiWhisker = 0; - pAffected = NULL; + AffectedGUID = 0; } void EnterEvadeMode() @@ -509,8 +515,11 @@ struct npc_orinoko_tuskbreakerAI : public ScriptedAI if (uiFishyScentTimer <= uiDiff) { - if (pAffected = SelectUnit(SELECT_TARGET_RANDOM,0)) + if (Unit *pAffected = SelectUnit(SELECT_TARGET_RANDOM,0)) + { DoCast(pAffected, SPELL_FISHY_SCENT); + AffectedGUID = pAffected->GetGUID(); + } uiFishyScentTimer = 20000; } else uiFishyScentTimer -= uiDiff; @@ -535,8 +544,11 @@ struct npc_orinoko_tuskbreakerAI : public ScriptedAI pSummon->AI()->AttackStart(m_creature->getVictim()); break; case NPC_HUNGRY_PENGUIN: - if (pAffected && pAffected->isAlive()) - pSummon->AI()->AttackStart(pAffected); + if(Unit *pAffected = Unit::GetUnit(*m_creature, AffectedGUID)) + { + if (pAffected->isAlive()) + pSummon->AI()->AttackStart(pAffected); + } break; } } |