gave faerlina areatrigger scriptname. Using it to do her greet scripttext

This commit is contained in:
Gemt
2017-05-14 12:50:55 +02:00
parent 4c60068136
commit 6bb26f37ea
4 changed files with 64 additions and 35 deletions
+4
View File
@@ -13,3 +13,7 @@ VALUES (533001,181195,533,3143.88,-3572.45,287,2.345,0,0,0.921723,0.387849,25,10
-- Give Anub'rekhan gate GO_FLAG_NO_INTERACT flag. It's opened by instance script
UPDATE `gameobject_template` SET `flags` = `flags`| 16 WHERE `entry`='181195';
-- give AreaTrigger outside Faerlina scriptname
DELETE FROM `scripted_areatrigger` where entry = 4115;
INSERT INTO `scripted_areatrigger` (`entry`, `ScriptName`) VALUES ('4115', 'at_naxxramas');
@@ -26,7 +26,7 @@ EndScriptData */
enum
{
SAY_GREET = -1533009,
SAY_GREET = -1533009, // Done in instance_naxxramas::onNaxxramasAreaTrigger()
SAY_AGGRO1 = -1533010,
SAY_AGGRO2 = -1533011,
SAY_AGGRO3 = -1533012,
@@ -35,19 +35,19 @@ enum
SAY_SLAY2 = -1533015,
SAY_DEATH = -1533016,
//SOUND_RANDOM_AGGRO = 8955, //soundId containing the 4 aggro sounds, we not using this
//SOUND_RANDOM_AGGRO = 8955, //soundId containing the 4 aggro sounds, we not using this
SPELL_POSIONBOLT_VOLLEY = 28796,
SPELL_ENRAGE = 28798,
SPELL_RAINOFFIRE = 28794 //Not sure if targeted AoEs work if casted directly upon a pPlayer
SPELL_RAINOFFIRE = 28794 //Not sure if targeted AoEs work if casted directly upon a pPlayer
};
struct boss_faerlinaAI : public ScriptedAI
{
boss_faerlinaAI(Creature* pCreature) : ScriptedAI(pCreature)
{
m_pInstance = (instance_naxxramas*)pCreature->GetInstanceData();
m_bHasTaunted = false;
Reset();
}
@@ -56,7 +56,6 @@ struct boss_faerlinaAI : public ScriptedAI
uint32 m_uiPoisonBoltVolleyTimer;
uint32 m_uiRainOfFireTimer;
uint32 m_uiEnrageTimer;
bool m_bHasTaunted;
void Reset()
{
@@ -89,10 +88,9 @@ struct boss_faerlinaAI : public ScriptedAI
void MoveInLineOfSight(Unit* pWho)
{
if (!m_bHasTaunted && m_creature->IsWithinDistInMap(pWho, 60.0f))
//todo aggro range
if (m_creature->IsWithinDistInMap(pWho, 60.0f))
{
DoScriptText(SAY_GREET, m_creature);
m_bHasTaunted = true;
}
ScriptedAI::MoveInLineOfSight(pWho);
@@ -25,6 +25,9 @@ EndScriptData */
#include "naxxramas.h"
instance_naxxramas::instance_naxxramas(Map* pMap) : ScriptedInstance(pMap),
m_faerlinaHaveGreeted(false),
m_uiAracEyeRampGUID(0),
m_uiPlagEyeRampGUID(0),
m_uiMiliEyeRampGUID(0),
@@ -635,13 +638,11 @@ InstanceData* GetInstanceData_instance_naxxramas(Map* pMap)
return new instance_naxxramas(pMap);
}
bool AreaTrigger_at_naxxramas(Player* pPlayer, const AreaTriggerEntry* pAt)
void instance_naxxramas::onNaxxramasAreaTrigger(Player* pPlayer, const AreaTriggerEntry* pAt)
{
if (pAt->id == AREATRIGGER_KELTHUZAD)
switch (pAt->id)
{
if (pPlayer->isDead())
return false;
case AREATRIGGER_KELTHUZAD:
if (instance_naxxramas* pInstance = (instance_naxxramas*)pPlayer->GetInstanceData())
{
if (pInstance->GetData(TYPE_KELTHUZAD) == NOT_STARTED)
@@ -650,8 +651,29 @@ bool AreaTrigger_at_naxxramas(Player* pPlayer, const AreaTriggerEntry* pAt)
pInstance->SetChamberCenterCoords(pAt->x, pAt->y, pAt->z);
}
}
break;
case AREATRIGGER_FAERLINA:
if (!m_faerlinaHaveGreeted)
{
m_faerlinaHaveGreeted = true;
if (Creature* pFaerlina = GetCreature(m_uiFaerlinanGUID))
{
DoScriptText(-1533009, pFaerlina);
}
}
break;
}
}
bool AreaTrigger_at_naxxramas(Player* pPlayer, const AreaTriggerEntry* pAt)
{
if (pPlayer->isGameMaster() || !pPlayer->isAlive())
return false;
if (instance_naxxramas* pInstance = (instance_naxxramas*)pPlayer->GetInstanceData())
{
pInstance->onNaxxramasAreaTrigger(pPlayer, pAt);
}
return false;
}
@@ -46,7 +46,7 @@ enum
// Gothik
NPC_GOTHIK = 16060,
NPC_SUB_BOSS_TRIGGER = 16137, //summon locations
NPC_SUB_BOSS_TRIGGER = 16137, //summon locations
NPC_UNREL_TRAINEE = 16124,
NPC_UNREL_DEATH_KNIGHT = 16125,
NPC_UNREL_RIDER = 16126,
@@ -62,38 +62,38 @@ enum
NPC_GUARDIAN = 16441,
// Arachnid Quarter
GO_ARAC_ANUB_DOOR = 181126, //encounter door
GO_ARAC_ANUB_GATE = 181195, //open after boss is dead
GO_ARAC_FAER_WEB = 181235, //encounter door
GO_ARAC_FAER_DOOR = 194022, //after faerlina, to outer ring
GO_ARAC_MAEX_INNER_DOOR = 181197, //encounter door
GO_ARAC_MAEX_OUTER_DOOR = 181209, //right before maex
GO_ARAC_ANUB_DOOR = 181126, //encounter door
GO_ARAC_ANUB_GATE = 181195, //open after boss is dead
GO_ARAC_FAER_WEB = 181235, //encounter door
GO_ARAC_FAER_DOOR = 194022, //after faerlina, to outer ring
GO_ARAC_MAEX_INNER_DOOR = 181197, //encounter door
GO_ARAC_MAEX_OUTER_DOOR = 181209, //right before maex
// Plague Quarter
GO_PLAG_SLIME01_DOOR = 181198, //not used
GO_PLAG_SLIME02_DOOR = 181199, //not used
GO_PLAG_NOTH_ENTRY_DOOR = 181200, //encounter door
GO_PLAG_NOTH_EXIT_DOOR = 181201, //exit, open when boss dead
GO_PLAG_SLIME01_DOOR = 181198, //not used
GO_PLAG_SLIME02_DOOR = 181199, //not used
GO_PLAG_NOTH_ENTRY_DOOR = 181200, //encounter door
GO_PLAG_NOTH_EXIT_DOOR = 181201, //exit, open when boss dead
GO_PLAG_HEIG_ENTRY_DOOR = 181202,
GO_PLAG_HEIG_EXIT_DOOR = 181203, //exit, open when boss dead
GO_PLAG_LOAT_DOOR = 181241, //encounter door
GO_PLAG_HEIG_EXIT_DOOR = 181203, //exit, open when boss dead
GO_PLAG_LOAT_DOOR = 181241, //encounter door
// Military Quarter
GO_MILI_GOTH_ENTRY_GATE = 181124, //open after razuvious died
GO_MILI_GOTH_EXIT_GATE = 181125, //exit, open at boss dead
GO_MILI_GOTH_COMBAT_GATE = 181170, //used while encounter is in progress
GO_MILI_HORSEMEN_DOOR = 181119, //encounter door
GO_MILI_GOTH_ENTRY_GATE = 181124, //open after razuvious died
GO_MILI_GOTH_EXIT_GATE = 181125, //exit, open at boss dead
GO_MILI_GOTH_COMBAT_GATE = 181170, //used while encounter is in progress
GO_MILI_HORSEMEN_DOOR = 181119, //encounter door
GO_CHEST_HORSEMEN_NORM = 181366, //four horsemen event, DoRespawnGameObject() when event == DONE
GO_CHEST_HORSEMEN_NORM = 181366, //four horsemen event, DoRespawnGameObject() when event == DONE
GO_CHEST_HORSEMEN_HERO = 193426,
// Construct Quarter
GO_CONS_PATH_EXIT_DOOR = 181123,
GO_CONS_GLUT_EXIT_DOOR = 181120,
GO_CONS_THAD_DOOR = 181121, // Thaddius enc door
GO_CONS_THAD_DOOR = 181121, // Thaddius enc door
// Frostwyrm Lair
GO_KELTHUZAD_WATERFALL_DOOR = 181225, // exit, open after sapphiron is dead
GO_KELTHUZAD_WATERFALL_DOOR = 181225, // exit, open after sapphiron is dead
// Eyes
GO_ARAC_EYE_RAMP = 181212,
@@ -107,9 +107,10 @@ enum
GO_MILI_PORTAL = 181578,
GO_CONS_PORTAL = 181576,
AREATRIGGER_FROSTWYRM = 4120, //not needed here, but AT to be scripted
AREATRIGGER_GOTHIK = 4116,
AREATRIGGER_KELTHUZAD = 4112,
AREATRIGGER_GOTHIK = 4116
AREATRIGGER_FAERLINA = 4115, // Used for faerlinas greet message
AREATRIGGER_FROSTWYRM = 4120 //not needed here, but AT to be scripted
};
struct GothTrigger
@@ -150,6 +151,10 @@ class instance_naxxramas : public ScriptedInstance
void OnPlayerDeath(Player* p) override;
void onNaxxramasAreaTrigger(Player* pPlayer, const AreaTriggerEntry* pAt);
private:
bool m_faerlinaHaveGreeted;
protected:
uint32 m_auiEncounter[MAX_ENCOUNTER];
std::string strInstData;