void JustDied(Unit* Killer)
 {
     if (pInstance)
     {
         switch(me->GetEntry())
         {
             case SH_AELMAR:
                 SetInstanceData(TYPE_SH_AELMAR, 2);
                 break;
             case SH_CATHELA:
                 SetInstanceData(TYPE_SH_CATHELA, 2);
                 break;
             case SH_GREGOR:
                 SetInstanceData(TYPE_SH_GREGOR, 2);
                 break;
             case SH_NEMAS:
                 SetInstanceData(TYPE_SH_NEMAS, 2);
                 break;
             case SH_VICAR:
                 SetInstanceData(TYPE_SH_VICAR, 2);
                 break;
         }
         if (pInstance->GetData(TYPE_SH_QUEST) && Killer->GetTypeId() == TYPEID_PLAYER)
             ((Player*)Killer)->KilledMonsterCredit(SH_QUEST_CREDIT,me->GetGUID());
     }
 }
		void OnCreatureDeath(Creature* pVictim, Unit* pKiller)
		{
			EncounterMap::iterator Iter = mEncounters.find(pVictim->GetEntry());
			if(Iter == mEncounters.end())
				return;

			(*Iter).second.mState = State_Finished;

			GameObject* pDoors = NULL;
			GameObject* pAltar = NULL;
			switch(pVictim->GetEntry())
			{
				case CN_MOORABI:
					{
						SetInstanceData(Data_EncounterState, CN_MOORABI, State_Finished);
						if(pAltar = GetGameObjectByGuid(mMoorabiAltarGUID))
							pAltar->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNCLICKABLE);

						if(mInstance->iInstanceMode != MODE_HEROIC)
							return;

						if(pDoors = GetGameObjectByGuid(mEckDoorsGUID))
							pDoors->SetState(GAMEOBJECT_STATE_OPEN);
					}
					break;
				case CN_GAL_DARAH:
					{
						SetInstanceData(Data_EncounterState, CN_GAL_DARAH, State_Finished);
						if(pDoors = GetGameObjectByGuid(mDoor1GUID))
							pDoors->SetState(GAMEOBJECT_STATE_OPEN);

						if(pDoors = GetGameObjectByGuid(mDoor2GUID))
							pDoors->SetState(GAMEOBJECT_STATE_OPEN);
					}
					break;
				case CN_SLADRAN:
					{
						SetInstanceData(Data_EncounterState, CN_SLADRAN, State_Finished);
						if(pAltar = GetGameObjectByGuid(mSladranAltarGUID))
							pAltar->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNCLICKABLE);
					}
					break;
				case CN_DRAKKARI_COLOSSUS:
					{
						SetInstanceData(Data_EncounterState, CN_DRAKKARI_COLOSSUS, State_Finished);
						if(pAltar = GetGameObjectByGuid(mColossusAltarGUID))
							pAltar->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNCLICKABLE);
					}
					break;
				case CN_ECK: SetInstanceData(Data_EncounterState, CN_ECK, State_Finished); break;
			}
		}
		void OnCreatureDeath(Creature* pVictim, Unit* pKiller)
		{
			EncounterMap::iterator Iter = mEncounters.find(pVictim->GetEntry());
			if(Iter == mEncounters.end())
				return;

			(*Iter).second.mState = State_Finished;

			GameObject* pDoors = NULL;
			switch(pVictim->GetEntry())
			{
				case CN_GENERAL_BJARNGRIM:
					{
						SetInstanceData(Data_EncounterState, CN_GENERAL_BJARNGRIM, State_Finished);
						pDoors = GetGameObjectByGuid(mGeneralDoorsGUID);
						if(pDoors)
							pDoors->SetState(0);
					}
					break;
				case CN_VOLKHAN:
					{
						SetInstanceData(Data_EncounterState, CN_VOLKHAN, State_Finished);
						pDoors = GetGameObjectByGuid(mVolkhanDoorsGUID);
						if(pDoors)
							pDoors->SetState(0);
					}
					break;
				case CN_LOKEN:
					{
						SetInstanceData(Data_EncounterState, CN_LOKEN, State_Finished);
						pDoors = GetGameObjectByGuid(mLokenDoorsGUID);
						if(pDoors)
							pDoors->SetState(0);
					}
					break;
				case CN_IONAR:
					{
						SetInstanceData(Data_EncounterState, CN_IONAR, State_Finished);
						pDoors = GetGameObjectByGuid(mIonarDoors1GUID);
						if(pDoors)
							pDoors->SetState(0);

						pDoors = GetGameObjectByGuid(mIonarDoors2GUID);
						if(pDoors)
							pDoors->SetState(0);
					}
					break;
			};
		};
    void JustDied(Unit *victim)
    {
        if (pInstance)
		{
            SetInstanceData(TYPE_JARAXXUS, DONE);
			Speak(CHAT_TYPE_SAY,16147,"Un autre prendra ma place. Votre monde est condamné.");
			if (Creature* Ann = ((Creature*)Unit::GetUnit(*me, pInstance ? pInstance->GetData64(DATA_ANNOUNCER) : 0)))
				((npc_toc10_announcerAI*)Ann->AI())->StartEvent(NULL,EVENT_TYPE_JARAXXUS_OUTRO);
		}
		switch(m_difficulty)
		{
			case RAID_DIFFICULTY_10MAN_NORMAL:
				GiveEmblemsToGroup(CONQUETE,2);
				break;
			case RAID_DIFFICULTY_25MAN_NORMAL:
				GiveEmblemsToGroup(TRIOMPHE,2);
				break;
			case RAID_DIFFICULTY_10MAN_HEROIC:
				GiveEmblemsToGroup(TRIOMPHE,3);
				break;
			case RAID_DIFFICULTY_25MAN_HEROIC:
				GiveEmblemsToGroup(TRIOMPHE,3);
				break;
		}
		me->ForcedDespawn(TEN_MINS*1000);
    }
Exemple #5
0
    void Aggro(Unit* who)
    {
        DoScriptText(SAY_EVIL_AGGRO, me);

        if (pInstance)
            SetInstanceData(TYPE_KALECGOS, IN_PROGRESS);
    }
Exemple #6
0
    void JustDied(Unit *victim)
    {
        DoScriptText(SAY_DEATH, me);

        if (pInstance)
            SetInstanceData(TYPE_RIFT,DONE);
    }
void InstanceSave::InsertToDB()
{
    std::string data;
    uint32 completedEncounters = 0;

    Map* map = sMapMgr->FindMap(GetMapId(), m_instanceid);
    if (map)
    {
        ASSERT(map->IsDungeon());
        if (InstanceScript* instanceScript = map->ToInstanceMap()->GetInstanceScript())
        {
            data = instanceScript->GetSaveData();
            completedEncounters = instanceScript->GetCompletedEncounterMask();

            // pussywizard:
            SetInstanceData(data);
            SetCompletedEncounterMask(completedEncounters);
        }
    }

    PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_INSTANCE_SAVE);
    stmt->setUInt32(0, m_instanceid);
    stmt->setUInt16(1, GetMapId());
    stmt->setUInt32(2, uint32(GetResetTimeForDB()));
    stmt->setUInt8(3, uint8(GetDifficulty()));
    stmt->setUInt32(4, completedEncounters);
    stmt->setString(5, data);
    CharacterDatabase.Execute(stmt);
}
Exemple #8
0
    void JustDied(Unit* victim)
    {
        DoScriptText(SAY_DEATH, me);

        if (pInstance)
            SetInstanceData(TYPE_MOROES, DONE);

        DeSpawnAdds();

        //remove aura from spell Garrote when Moroes dies
        Map *map = me->GetMap();
        if (map->IsDungeon())
        {
            Map::PlayerList const &PlayerList = map->GetPlayers();

            if (PlayerList.isEmpty())
                return;

            for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
            {
                if (i->getSource()->isAlive() && i->getSource()->HasAura(SPELL_GARROTE,0))
                    i->getSource()->RemoveAurasDueToSpell(SPELL_GARROTE);
            }
        }
    }
    void JustDied(Unit* pKiller)
    {
        DoScriptText(YELL_DEATH, me);

        if (pInstance)
            SetInstanceData(TYPE_BRUTALLUS, DONE);
    }
 void WaypointReached(uint32 i)
 {
     switch(i)
     {
         case 0:
             DoScriptText(-1000000, me);//2
             CanWalk = false;
             Event_Timer = 5000;
             break;
         case 1:
             DoScriptText(-1000000, me);//4
             CanWalk = false;
             Event_Timer = 5000;
             break;
         case 2:
             CanWalk = false;
             break;
         case 3:
             DoScriptText(-1000000, me);//5
             break;
         case 4:
             DoScriptText(-1000000, me);//6
             CanWalk = false;
             Event_Timer = 5000;
             break;
         case 5:
             if (pInstance)
             {
                 SetInstanceData(TYPE_RING_OF_LAW,DONE);
                 debug_log("SD2: npc_grimstone: event reached end and set complete.");
             }
             break;
     }
 }
Exemple #11
0
 void JustDied(Unit* Killer)
 {
     Tasks.CleanMyAdds();
     if (pInstance)
         SetInstanceData(TYPE_GROBBULUS, DONE);
     GiveEmblemsToGroup((m_bIsHeroic) ? VAILLANCE : HEROISME);
 }
    void Aggro(Unit* pWho)
    {
        DoScriptText(YELL_AGGRO, me);

        if (pInstance)
            SetInstanceData(TYPE_BRUTALLUS, IN_PROGRESS);
    }
    void JustDied(Unit *victim)
    {
        if (pInstance)
            SetInstanceData(TYPE_BLOODBOIL, DONE);

        DoScriptText(SAY_DEATH, me);
    }
Exemple #14
0
    void JustDied(Unit *victim)
    {
        if (pInstance)
            SetInstanceData(TYPE_FREYA, DONE);
		Say(15531,"Son emprise sur moi se dissipe. J'y vois de nouveau clair. Merci, héros");
		uint8 TreeAlive = 0;
		if(Creature* IronBranch = GetInstanceCreature(DATA_FREYA_ANCIENT_1))
			if(IronBranch->isAlive())
				TreeAlive++;
		if(Creature* BrightLeaf = GetInstanceCreature(DATA_FREYA_ANCIENT_2))
			if(BrightLeaf->isAlive())
				TreeAlive++;
		if(Creature* StoneBark = GetInstanceCreature(DATA_FREYA_ANCIENT_3))
			if(StoneBark->isAlive())
				TreeAlive++;

		switch(TreeAlive)
		{
			case 1:
				pInstance->CompleteAchievementForGroup(m_difficulty ? 3185 : 3177);
				break;
			case 2:
				pInstance->CompleteAchievementForGroup(m_difficulty ? 3186 : 3178);
				break;
			case 3:
				pInstance->CompleteAchievementForGroup(m_difficulty ? 3187 : 3179);
				break;
			default:
				break;
		}
		
		GiveEmblemsToGroup((m_difficulty) ? CONQUETE : VAILLANCE);
    }
Exemple #15
0
    void JustDied(Unit* Killer)
    {
        DoScriptText(SAY_DEATH, me);

        if (pInstance)
            SetInstanceData(TYPE_THEKAL, DONE);
    }
    void Aggro(Unit* pWho)
    {
        DoScriptText(SAY_AGGRO, me);
        me->SetInCombatWithZone();

        if (pInstance)
            SetInstanceData(TYPE_VOIDREAVER, IN_PROGRESS);
    }
Exemple #17
0
    void Aggro(Unit* pWho)
    {
        if (pInstance)
            SetInstanceData(TYPE_ROTFACE, IN_PROGRESS);

		Yell(16986,"Ouiiiiiiiiiii ! Hahahaha !");
		me->SetInCombatWithZone();
    }
Exemple #18
0
    void JustDied(Unit* killer)
    {
        DoScriptText(SAY_DEATH, me);
        
        if (pInstance)
            SetInstanceData(DATA_DRAKOS_EVENT, DONE);
//		GiveEmblemsToGroup(m_bIsHeroic ? HEROISME : 0,1,true);
    }
Exemple #19
0
    void StartEvent()
    {
        if (!pInstance)
            return;

        if (pInstance)
            SetInstanceData(TYPE_MOROES, IN_PROGRESS);
    }
    void JustDied(Unit* Killer)
    {
        for(uint8 i = 0; i < 30; ++i)
            me->SummonCreature(C_MINDLESS_UNDEAD,3969.35,-3391.87,119.11,5.91,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,1800000);

        if (pInstance)
            SetInstanceData(TYPE_RAMSTEIN,DONE);
    }
Exemple #21
0
    void Aggro(Unit* pWho)
    {
        me->SetInCombatWithZone();

        if (pInstance)
            SetInstanceData(TYPE_JARAXXUS, IN_PROGRESS);

		Yell(16144,"Devant vous se tient Jaraxxus seigneur Eredar de la Légion Ardente !");
    }
Exemple #22
0
    void JustDied(Unit* Killer)
    {
        DoScriptText(SAY_DEATH, me);

        if (!pInstance)
            return;

        SetInstanceData(TYPE_NALORAKK, DONE);
    }
	void Aggro(Unit* pWho)
    {
		if (!pInstance)
			return;
		if (pInstance->GetData(TYPE_BLACK_KNIGHT) == DONE)
			me->ForcedDespawn();
		else
			SetInstanceData(TYPE_BLACK_KNIGHT, IN_PROGRESS);
    }
Exemple #24
0
    void KilledUnit(Unit *victim)
    {
		if(urand(0,1))
			Speak(CHAT_TYPE_SAY,16145,"Cafard insignifiant !");
		else
			Speak(CHAT_TYPE_SAY,16146,"Banni, au néant !");
		if(victim->GetTypeId() == TYPEID_PLAYER)
			SetInstanceData(TYPE_TRY,1);
    }
    void Aggro(Unit *who)
    {
        me->SetInCombatWithZone();

        DoScriptText(SAY_AGGRO, me);

        if (pInstance)
            SetInstanceData(TYPE_BLOODBOIL, IN_PROGRESS);
    }
    void JustDied(Unit *killer)
    {
        if (InstanceData* pInstance = me->GetInstanceData())
        {
            SetInstanceData(TYPE_THEOLEN, DONE);

            if (pInstance->GetData(TYPE_GANDLING) == SPECIAL)
                me->SummonCreature(1853, 180.73, -9.43856, 75.507, 1.61399, TEMPSUMMON_DEAD_DESPAWN, 0);
        }
    }
    void StartRageGen(Unit *caster)
    {
        me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
        me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);

        DoCastMe(SPELL_WARLORDS_RAGE_NAGA,true);

        if (pInstance)
            SetInstanceData(TYPE_DISTILLER,IN_PROGRESS);
    }
Exemple #28
0
void hyjalAI::Retreat()
{
    //this will trigger ancient gem respawn
    if (pInstance)
        SetInstanceData(TYPE_RETREAT, SPECIAL);

    DoCastMe( SPELL_MASS_TELEPORT);

    m_bIsRetreating = true;
}
Exemple #29
0
    void JustDied(Unit* killer)
    {
        if (pInstance)
        {
            if (pInstance->GetData(DATA_BUG_TRIO_DEATH) < 2)
                                                            // Unlootable if death
                me->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);

            SetInstanceData(DATA_BUG_TRIO_DEATH, 1);
        }
    }
Exemple #30
0
void hyjalAI::Reset()
{
    // GUIDs
    m_uiBossGUID[0] = 0;
    m_uiBossGUID[1] = 0;

    // Timers
    m_uiNextWaveTimer = 10000;
    m_uiWaveMoveTimer = 15000;
    m_uiCheckTimer = 0;
    m_uiRetreatTimer = 25000;

    // Misc
    m_uiWaveCount = 0;
    m_uiEnemyCount = 0;

    // Set base area based on creature entry
    switch(me->GetEntry())
    {
        case NPC_JAINA:
            m_uiBase = BASE_ALLY;
            DoCastMe( SPELL_BRILLIANCE_AURA, true);
            break;
        case NPC_THRALL:
            m_uiBase = BASE_HORDE;
            break;
    }

    // Bools
    m_bIsEventInProgress = false;
    m_bIsSummoningWaves = false;

    m_bIsRetreating = false;
    m_bDebugMode = false;

    // Flags
    me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);

    // Reset World States
    pInstance->DoUpdateWorldState(WORLD_STATE_WAVES, 0);
    pInstance->DoUpdateWorldState(WORLD_STATE_ENEMY, 0);
    pInstance->DoUpdateWorldState(WORLD_STATE_ENEMYCOUNT, 0);

    if (!pInstance)
        return;

    m_bIsFirstBossDead = m_uiBase ? pInstance->GetData(TYPE_KAZROGAL) : pInstance->GetData(TYPE_WINTERCHILL);
    m_bIsSecondBossDead = m_uiBase ? pInstance->GetData(TYPE_AZGALOR) : pInstance->GetData(TYPE_ANETHERON);

    // Reset Instance Data for trash count
    SetInstanceData(DATA_RESET_TRASH_COUNT, 0);
}