Share Pastebin
Guest
Public paste!

Moriquendu / [TC]Sartharion - instance script

By: a guest | Mar 21st, 2010 | Syntax: C++ | Size: 3.39 KB | Hits: 100 | Expires: Never
Copy text to clipboard
  1. #include "ScriptedPch.h"
  2. #include "obsidian_sanctum.h"
  3.  
  4. #define MAX_ENCOUNTER     1
  5.  
  6. /* Obsidian Sanctum encounters:
  7. 0 - Sartharion
  8. */
  9.  
  10. struct instance_obsidian_sanctum : public ScriptedInstance
  11. {
  12.     instance_obsidian_sanctum(Map* pMap) : ScriptedInstance(pMap) {Initialize();};
  13.  
  14.     uint32 m_auiEncounter[MAX_ENCOUNTER];
  15.     uint64 m_uiSartharionGUID;
  16.     uint64 m_uiTenebronGUID;
  17.     uint64 m_uiShadronGUID;
  18.     uint64 m_uiVesperonGUID;
  19.  
  20.     bool m_bTenebronKilled;
  21.     bool m_bShadronKilled;
  22.     bool m_bVesperonKilled;
  23.  
  24.     void Initialize()
  25.     {
  26.         memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
  27.  
  28.         m_uiSartharionGUID = 0;
  29.         m_uiTenebronGUID   = 0;
  30.         m_uiShadronGUID    = 0;
  31.         m_uiVesperonGUID   = 0;
  32.  
  33.         m_bTenebronKilled = false;
  34.         m_bShadronKilled = false;
  35.         m_bVesperonKilled = false;
  36.     }
  37.  
  38.     void OnCreatureCreate(Creature* pCreature, bool add)
  39.     {
  40.         switch(pCreature->GetEntry())
  41.         {
  42.             case NPC_SARTHARION:
  43.                 m_uiSartharionGUID = pCreature->GetGUID();
  44.                 break;
  45.             //three dragons below set to active state once created.
  46.             //we must expect bigger raid to encounter main boss, and then three dragons must be active due to grid differences
  47.             case NPC_TENEBRON:
  48.                 m_uiTenebronGUID = pCreature->GetGUID();
  49.                 pCreature->setActive(true);
  50.                 break;
  51.             case NPC_SHADRON:
  52.                 m_uiShadronGUID = pCreature->GetGUID();
  53.                 pCreature->setActive(true);
  54.                 break;
  55.             case NPC_VESPERON:
  56.                 m_uiVesperonGUID = pCreature->GetGUID();
  57.                 pCreature->setActive(true);
  58.                 break;
  59.         }
  60.     }
  61.  
  62.     void SetData(uint32 uiType, uint32 uiData)
  63.     {
  64.         if (uiType == TYPE_SARTHARION_EVENT)
  65.             m_auiEncounter[0] = uiData;
  66.         else if(uiType == TYPE_TENEBRON_PREKILLED)
  67.             m_bTenebronKilled = true;
  68.         else if(uiType == TYPE_SHADRON_PREKILLED)
  69.             m_bShadronKilled = true;
  70.         else if(uiType == TYPE_VESPERON_PREKILLED)
  71.             m_bVesperonKilled = true;
  72.     }
  73.  
  74.     uint32 GetData(uint32 uiType)
  75.     {
  76.         if (uiType == TYPE_SARTHARION_EVENT)
  77.             return m_auiEncounter[0];
  78.         else if(uiType == TYPE_TENEBRON_PREKILLED)
  79.             return m_bTenebronKilled;
  80.         else if(uiType == TYPE_SHADRON_PREKILLED)
  81.             return m_bShadronKilled;
  82.         else if(uiType == TYPE_VESPERON_PREKILLED)
  83.             return m_bVesperonKilled;
  84.  
  85.         return 0;
  86.     }
  87.  
  88.     uint64 GetData64(uint32 uiData)
  89.     {
  90.         switch(uiData)
  91.         {
  92.             case DATA_SARTHARION:
  93.                 return m_uiSartharionGUID;
  94.             case DATA_TENEBRON:
  95.                 return m_uiTenebronGUID;
  96.             case DATA_SHADRON:
  97.                 return m_uiShadronGUID;
  98.             case DATA_VESPERON:
  99.                 return m_uiVesperonGUID;
  100.         }
  101.         return 0;
  102.     }
  103. };
  104.  
  105. InstanceData* GetInstanceData_instance_obsidian_sanctum(Map* pMap)
  106. {
  107.     return new instance_obsidian_sanctum(pMap);
  108. }
  109.  
  110. void AddSC_instance_obsidian_sanctum()
  111. {
  112.     Script *newscript;
  113.     newscript = new Script;
  114.     newscript->Name = "instance_obsidian_sanctum";
  115.     newscript->GetInstanceData = &GetInstanceData_instance_obsidian_sanctum;
  116.     newscript->RegisterSelf();
  117. }