Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.88 KB | None | 0 0
  1. /*######
  2. ## npc_thrall_warchief
  3. ######*/
  4.  
  5. #define QUEST_6566              6566
  6.  
  7. #define SPELL_CHAIN_LIGHTNING   16033
  8. #define SPELL_SHOCK             16034
  9.  
  10. //TODO: verify abilities/timers
  11. struct MANGOS_DLL_DECL npc_thrall_warchiefAI : public ScriptedAI
  12. {
  13.     npc_thrall_warchiefAI(Creature* pCreature) : ScriptedAI(pCreature) { Reset(); }
  14.  
  15.     uint32 ChainLightning_Timer;
  16.     uint32 Shock_Timer;
  17.  
  18.     bool CalledHelp;
  19.  
  20.     void Reset()
  21.     {
  22.         ChainLightning_Timer = 2000;
  23.         Shock_Timer = 8000;
  24.         CalledHelp = false;
  25.     }
  26.  
  27.     void UpdateAI(const uint32 diff)
  28.     {
  29.         if (!m_creature->SelectHostileTarget() || !m_creature->getVictim() || m_creature->isInCombat())
  30.             return;
  31.  
  32.         if (!CalledHelp)
  33.         {
  34.             m_creature->CallForHelp(50);
  35.             CalledHelp = true;
  36.         }
  37.  
  38.         if (ChainLightning_Timer < diff)
  39.         {
  40.             DoCastSpellIfCan(m_creature->getVictim(),SPELL_CHAIN_LIGHTNING);
  41.             ChainLightning_Timer = 9000;
  42.         }else ChainLightning_Timer -= diff;
  43.  
  44.         if (Shock_Timer < diff)
  45.         {
  46.             DoCastSpellIfCan(m_creature->getVictim(),SPELL_SHOCK);
  47.             Shock_Timer = 15000;
  48.         }else Shock_Timer -= diff;
  49.  
  50.         DoMeleeAttackIfReady();
  51.     }
  52. };
  53. CreatureAI* GetAI_npc_thrall_warchief(Creature* pCreature)
  54. {
  55.     return new npc_thrall_warchiefAI(pCreature);
  56. }
  57.  
  58. bool GossipHello_npc_thrall_warchief(Player* pPlayer, Creature* pCreature)
  59. {
  60.     if (pCreature->isQuestGiver())
  61.         pPlayer->PrepareQuestMenu(pCreature->GetGUID());
  62.  
  63.     if (pPlayer->GetQuestStatus(QUEST_6566) == QUEST_STATUS_INCOMPLETE)
  64.         pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Please share your wisdom with me, Warchief.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
  65.  
  66.     pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID());
  67.     return true;
  68. }
  69.  
  70. bool GossipSelect_npc_thrall_warchief(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction)
  71. {
  72.     switch(uiAction)
  73.     {
  74.         case GOSSIP_ACTION_INFO_DEF+1:
  75.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What discoveries?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
  76.             pPlayer->SEND_GOSSIP_MENU(5733, pCreature->GetGUID());
  77.             break;
  78.         case GOSSIP_ACTION_INFO_DEF+2:
  79.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Usurper?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
  80.             pPlayer->SEND_GOSSIP_MENU(5734, pCreature->GetGUID());
  81.             break;
  82.         case GOSSIP_ACTION_INFO_DEF+3:
  83.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "With all due respect, Warchief - why not allow them to be destroyed? Does this not strengthen our position?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
  84.             pPlayer->SEND_GOSSIP_MENU(5735, pCreature->GetGUID());
  85.             break;
  86.         case GOSSIP_ACTION_INFO_DEF+4:
  87.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I... I did not think of it that way, Warchief.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
  88.             pPlayer->SEND_GOSSIP_MENU(5736, pCreature->GetGUID());
  89.             break;
  90.         case GOSSIP_ACTION_INFO_DEF+5:
  91.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I live only to serve, Warchief! My life is empty and meaningless without your guidance.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6);
  92.             pPlayer->SEND_GOSSIP_MENU(5737, pCreature->GetGUID());
  93.             break;
  94.         case GOSSIP_ACTION_INFO_DEF+6:
  95.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Of course, Warchief!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+7);
  96.             pPlayer->SEND_GOSSIP_MENU(5738, pCreature->GetGUID());
  97.             break;
  98.         case GOSSIP_ACTION_INFO_DEF+7:
  99.             pPlayer->CLOSE_GOSSIP_MENU();
  100.             pPlayer->AreaExploredOrEventHappens(QUEST_6566);
  101.             break;
  102.     }
  103.     return true;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement