All pastes #990261 Raw Edit

KArazhan Instance Script by Seli

public cpp v1 · immutable
#990261 ·published 2008-04-20 01:52 UTC
rendered paste body
/* Copyright (C) 2006 - 2008 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>* This program is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation; either version 2 of the License, or* (at your option) any later version.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the* GNU General Public License for more details.** You should have received a copy of the GNU General Public License* along with this program; if not, write to the Free Software* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*//* ScriptDataSDName: Instance_KarazhanSD%Complete: 0SDComment:SDCategory: KarazhanEndScriptData */#include "def_karazhan.h"#include "GameObject.h"#define ENCOUNTERS      11enum EncounterState{    NOT_STARTED   = 0,    IN_PROGRESS   = 1,    FAILED        = 2,    DONE          = 3};/*0  - Attumen + Midnight (optional)1  - Moroes2  - Maiden of Virtue (optional)3  - Hyakiss the Lurker /  Rokad the Ravager  / Shadikith the Glider4  - Opera Event5  - Curator6  - Shade of Aran (optional)7  - Terestian Illhoof (optional)8  - Netherspite (optional)9  - Chess Event10 - Prince Malchezzar11 - Netherbane*/struct MANGOS_DLL_DECL instance_karazhan : public ScriptedInstance{    instance_karazhan(Map* map) : ScriptedInstance(map)    {        Initialize();    }    uint32 Encounters[ENCOUNTERS];    uint32 OperaEvent; // 0 - OZ, 1 - RAJ, 2 - HOOD    uint64 CurtainGUID;    uint64 DoorGUID;    uint64 TerestianGUID;    uint64 MoroesGUID;    void Initialize()    {        for (uint8 i = 0; i < ENCOUNTERS; i++)            Encounters[i] = NOT_STARTED;        OperaEvent      = rand()%3; // This never gets altered.        CurtainGUID     = 0;        DoorGUID        = 0;        TerestianGUID   = 0;        MoroesGUID      = 0;    }    bool IsEncounterInProgress() const    {        for (uint8 i = 0; i < ENCOUNTERS; ++i)            if (Encounters[i] == IN_PROGRESS) return true;        return false;    }    uint32 GetData(uint32 identifier)    {        switch (identifier)        {            case DATA_ATTUMEN_EVENT:                return Encounters[0];            case DATA_MOROES_EVENT:                return Encounters[1];            case DATA_MAIDENOFVIRTUE_EVENT:                return Encounters[2];            case DATA_OPTIONAL_BOSS_EVENT:                return Encounters[3];            case DATA_OPERA_EVENT:                return Encounters[4];            case DATA_CURATOR_EVENT:                return Encounters[5];            case DATA_SHADEOFARAN_EVENT:                return Encounters[6];            case DATA_TERESTIAN_EVENT:                return Encounters[7];            case DATA_CHESS_EVENT:                return Encounters[8];            case DATA_MALCHEZZAR_EVENT:                return Encounters[9];            case DATA_NETHERBANE_EVENT:                return Encounters[10];            case DATA_OPERA_PERFORMANCE:                return OperaEvent;        }        return 0;    }    void OnCreatureCreate(Creature *creature, uint32 entry)    {        switch (entry)        {            case 15688:                TerestianGUID = creature->GetGUID();                break;            case 15687:                MoroesGUID = creature->GetGUID();                break;        }    }    uint64 GetData64(uint32 identifier)    {        switch (identifier)        {            case DATA_TERESTIAN:                return TerestianGUID;                       case DATA_MOROES:                return MoroesGUID;            case DATA_GAMEOBJECT_STAGEDOOR:                return DoorGUID;            case DATA_GAMEOBJECT_CURTAINS:                return CurtainGUID;        }        return 0;    }    void SetData(uint32 identifier, uint32 data)    {        switch (identifier)        {            case DATA_ATTUMEN_EVENT:                Encounters[0] = data;                break;            case DATA_MOROES_EVENT:                Encounters[1] = data;                break;            case DATA_MAIDENOFVIRTUE_EVENT:                Encounters[2] = data;                break;            case DATA_OPTIONAL_BOSS_EVENT:                Encounters[3] = data;                break;            case DATA_OPERA_EVENT:                Encounters[4] = data;                break;            case DATA_CURATOR_EVENT:                Encounters[5] = data;                break;            case DATA_SHADEOFARAN_EVENT:                Encounters[6] = data;                break;            case DATA_TERESTIAN_EVENT:                Encounters[7] = data;                break;            case DATA_CHESS_EVENT:                Encounters[8] = data;                break;            case DATA_MALCHEZZAR_EVENT:                Encounters[9] = data;                break;            case DATA_NETHERBANE_EVENT:                Encounters[10] = data;                break;        }    }    void OnObjectCreate(GameObject* go)    {        switch (go->GetEntry())        {            case 183932:                CurtainGUID = go->GetGUID();                break;            case 184278:                DoorGUID = go->GetGUID();                break;        }    }};InstanceData* GetInstanceData_instance_karazhan(Map* map){    return new instance_karazhan(map);}void AddSC_instance_karazhan(){    Script *newscript;    newscript = new Script;    newscript->Name = "instance_karazhan";    newscript->GetInstanceData = GetInstanceData_instance_karazhan;    m_scripts[nrscripts++] = newscript;}