/*
* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
*
* 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, see .
*/
#ifndef FIRELANDS_H_
#define FIRELANDS_H_
#include "CreatureAIImpl.h"
#include "EventProcessor.h"
#include "ScriptedCreature.h"
class Creature;
#define DataHeader "FL"
#define FirelandsScriptName "instance_firelands"
uint32 const EncounterCount = 7;
enum FLDataTypes
{
DATA_BETH_TILAC = 0,
DATA_LORD_RHYOLITH = 1,
DATA_SHANNOX = 2,
DATA_ALYSRAZOR = 3,
DATA_BALEROC = 4,
DATA_MAJORDOMO_STAGHELM = 5,
DATA_RAGNAROS = 6,
};
enum FLCreatureIds
{
// Bosses
NPC_SHANNOX = 53691,
NPC_LORD_RHYOLITH = 52558,
NPC_BETH_TILAC = 52498,
NPC_ALYSRAZOR = 52530,
NPC_BALEROC = 53494,
NPC_MAJORDOMO_STAGHELM = 52571,
NPC_RAGNAROS = 52409,
// Alysrazor
NPC_BLAZING_MONSTROSITY_LEFT = 53786,
NPC_BLAZING_MONSTROSITY_RIGHT = 53791,
NPC_EGG_PILE = 53795,
NPC_HARBINGER_OF_FLAME = 53793,
NPC_MOLTEN_EGG_TRASH = 53914,
NPC_SMOULDERING_HATCHLING = 53794,
// Baleroc
NPC_MAGMA_CONDUIT = 54145,
NPC_MAGMAKIN = 54144
};
enum GameobjectIds
{
GO_BALEROC_FIREWALL = 209066
};
enum FirelandsSpells
{
SPELL_SMOULDERING_1 = 101089,
SPELL_SMOULDERING_2 = 101092,
};
enum FirelandsQuests
{
QUEST_HEART_OF_FLAME_A = 29307,
QUEST_HEART_OF_FLAME_H = 29308
};
class DelayedAttackStartEvent : public BasicEvent
{
public:
DelayedAttackStartEvent(Creature* owner) : _owner(owner) { }
bool Execute(uint64 /*e_time*/, uint32 /*p_time*/) override;
private:
Creature* _owner;
};
class DelayedSpellCastEvent : public BasicEvent
{
public:
DelayedSpellCastEvent(Creature* owner, Unit* target, uint32 spellId, bool triggered) : _owner(owner), _target(target), _spellId(spellId), _triggered(triggered) { }
bool Execute(uint64 /*e_time*/, uint32 /*p_time*/) override;
private:
Creature* _owner;
Unit* _target;
uint32 _spellId;
bool _triggered;
};
class PlayerCheck
{
public:
bool operator()(WorldObject* object) const
{
return object->GetTypeId() != TYPEID_PLAYER;
}
};
struct firelands_bossAI : public BossAI
{
firelands_bossAI(Creature* creature, uint32 bossId) : BossAI(creature, bossId) { }
void JustEngagedWith(Unit* target) override;
void JustDied(Unit* killer) override;
void EnterEvadeMode(EvadeReason why) override;
};
template
inline AI* GetFirelandsAI(Creature* creature)
{
return GetInstanceAI(creature, FirelandsScriptName);
}
#define RegisterFirelandsAI(AI) RegisterCreatureAIWithFactory(AI, GetFirelandsAI)
#endif // FIRELANDS_H_