Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.19 KB | None | 0 0
  1. // q12261
  2.  
  3. enum
  4. {
  5. NPC_TOTEM_DEFENSIVE = 27430,
  6. NPC_SUMMON_DRAKES   = 10000, //TODO need entry npc
  7. QUEST_NO_PLACE_TO_RUN   = 12261,
  8. NPC_KREDIT_DRAKES   = 28820
  9. };
  10.  
  11. struct npc_totem_defensiveAI : public ScriptedAI
  12. {
  13.     npc_totem_defensiveAI(Creature* c) : ScriptedAI(c){}
  14.  
  15.     uint32 uiPhaseTimer;
  16.     uint8  Phase;
  17.    
  18.     void Reset()
  19.     {
  20.     Phase = 1;
  21.     uiPhaseTimer = 20000;
  22.     }
  23.    
  24.      void UpdateAI(const uint32 diff)
  25.     {
  26.     if (uiPhaseTimer <= diff)
  27.     {
  28.     float nx = m_creature->GetPositionX() + irand(5,15);
  29.     float ny = m_creature->GetPositionY() + irand(5,15);
  30.     float nz = m_creature->GetPositionZ();
  31.    
  32.     switch(Phase)
  33.     {
  34.       case 1:
  35.         if (Creature* pTemp = m_creature->SummonCreature(NPC_SUMMON_DRAKES,nx,ny,nz,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 40000))
  36.            pTemp->AI()->AttackStart(m_creature);
  37.         Phase++;
  38.         uiPhaseTimer = 20000;
  39.         break;
  40.       case 2:
  41.          if (Creature* pTemp = m_creature->SummonCreature(NPC_SUMMON_DRAKES,nx,ny,nz,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 40000))
  42.             pTemp->AI()->AttackStart(m_creature);
  43.         Phase++;
  44.         uiPhaseTimer = 20000;
  45.         break;
  46.       case 3:
  47.         if (Creature* pTemp = m_creature->SummonCreature(NPC_SUMMON_DRAKES,nx,ny,nz,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 40000))
  48.              pTemp->AI()->AttackStart(m_creature);
  49.          Phase++;
  50.          uiPhaseTimer = 20000;
  51.         break;
  52.       case 4:
  53.         if (Creature* pTemp = m_creature->SummonCreature(NPC_SUMMON_DRAKES,nx,ny,nz,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 40000))
  54.         pTemp->AI()->AttackStart(m_creature);
  55.         Phase++;
  56.         uiPhaseTimer = 20000;
  57.         break;
  58.       case 5:
  59.          if (Creature* pTemp = m_creature->SummonCreature(NPC_SUMMON_DRAKES,nx,ny,nz,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 40000))
  60.         pTemp->AI()->AttackStart(m_creature);
  61.         Phase++;
  62.         uiPhaseTimer = 20000;
  63.         break;
  64.       case 6:
  65.        if (m_creature->isSummon())
  66.                 if (Unit* pTemp = CAST_SUM(m_creature)->GetSummoner())
  67.                     if (pTemp->GetTypeId() == TYPEID_PLAYER)
  68.         CAST_PLR(pTemp)->KilledMonsterCredit(NPC_KREDIT_DRAKES, 0);
  69.         m_creature->ForcedDespawn();
  70.         break;
  71.       }
  72.     } else uiPhaseTimer -= diff;
  73.     }
  74. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement