*Ahn'kahet: Jedoga shadowseeker scripted, by WarHead
*Cleanup. --HG-- branch : trunk
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_jedoga_shadowseeker' WHERE `entry`='29310' LIMIT 1;
|
||||
UPDATE `creature_template` SET `ScriptName`='mob_jedoga_initiand' WHERE `entry`='30114' LIMIT 1;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_jedogas_aufseher_trigger' WHERE `entry`='30181' LIMIT 1;
|
||||
|
||||
@@ -561,7 +561,7 @@ struct TRINITY_DLL_DECL npc_dughal_stormwingAI : public npc_escortAI
|
||||
}
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who) { }
|
||||
void EnterCombat(Unit* who) {}
|
||||
void Reset() {}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
@@ -1006,7 +1006,7 @@ struct TRINITY_DLL_DECL npc_tobias_seecherAI : public npc_escortAI
|
||||
{
|
||||
npc_tobias_seecherAI(Creature *c) :npc_escortAI(c) {}
|
||||
|
||||
void EnterCombat(Unit* who) { }
|
||||
void EnterCombat(Unit* who) {}
|
||||
void Reset() {}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ struct TRINITY_DLL_DECL boss_mothersmolderwebAI : public ScriptedAI
|
||||
MothersMilk_Timer = 10000;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *who) { }
|
||||
void EnterCombat(Unit *who) {}
|
||||
|
||||
void DamageTaken(Unit *done_by, uint32 &damage)
|
||||
{
|
||||
|
||||
@@ -38,9 +38,9 @@ struct TRINITY_DLL_DECL mobs_ghoul_flayerAI : public ScriptedAI
|
||||
{
|
||||
mobs_ghoul_flayerAI(Creature *c) : ScriptedAI(c) {}
|
||||
|
||||
void Reset() { }
|
||||
void Reset() {}
|
||||
|
||||
void EnterCombat(Unit* who) { }
|
||||
void EnterCombat(Unit* who) {}
|
||||
|
||||
void JustDied(Unit* Killer)
|
||||
{
|
||||
@@ -93,7 +93,7 @@ struct TRINITY_DLL_DECL npc_darrowshire_spiritAI : public ScriptedAI
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *who) { }
|
||||
void EnterCombat(Unit *who) {}
|
||||
|
||||
};
|
||||
CreatureAI* GetAI_npc_darrowshire_spirit(Creature* pCreature)
|
||||
|
||||
@@ -158,7 +158,7 @@ static Locations SpawnPosition[]=
|
||||
{-11.9, -18, 0.361, 5.87}
|
||||
};
|
||||
|
||||
static uint32 PaladinEntry[]= {CHAMPION_BLOODWRATH, CHAMPION_LIGHTREND, CHAMPION_SWIFTBLADE, CHAMPION_SUNSTRIKER};
|
||||
static uint32 PaladinEntry[] = {CHAMPION_BLOODWRATH, CHAMPION_LIGHTREND, CHAMPION_SWIFTBLADE, CHAMPION_SUNSTRIKER};
|
||||
|
||||
/*######
|
||||
## npc_second_trial_paladin
|
||||
@@ -182,7 +182,8 @@ struct TRINITY_DLL_DECL npc_secondTrialAI : public ScriptedAI
|
||||
uint32 timerJudLight;
|
||||
uint32 timerCommand;
|
||||
|
||||
void Reset() {
|
||||
void Reset()
|
||||
{
|
||||
|
||||
timer = 2000;
|
||||
questPhase = 0;
|
||||
@@ -196,95 +197,93 @@ struct TRINITY_DLL_DECL npc_secondTrialAI : public ScriptedAI
|
||||
spellJudLight = false;
|
||||
spellCommand = false;
|
||||
|
||||
switch(m_creature->GetEntry()) {
|
||||
case CHAMPION_BLOODWRATH :
|
||||
spellFlashLight = true;
|
||||
timerFlashLight = TIMER_FLASH_OF_LIGHT;
|
||||
break;
|
||||
case CHAMPION_LIGHTREND :
|
||||
spellJustice = true;
|
||||
timerJustice = 500;
|
||||
break;
|
||||
case CHAMPION_SWIFTBLADE :
|
||||
spellJudLight = false; // Misses Script Effect // http://www.wowhead.com/?spell=20271
|
||||
timerJudLight = 500;
|
||||
break;
|
||||
case CHAMPION_SUNSTRIKER :
|
||||
spellFlashLight = true;
|
||||
spellJudLight = false; // Misses Script Effect // http://www.wowhead.com/?spell=20271
|
||||
spellCommand = false; // Misses Dummy // http://www.wowhead.com/?spell=20375
|
||||
timerFlashLight = TIMER_FLASH_OF_LIGHT;
|
||||
timerJudLight = 500;
|
||||
timerCommand = 1500;
|
||||
break;
|
||||
switch(m_creature->GetEntry())
|
||||
{
|
||||
case CHAMPION_BLOODWRATH:
|
||||
spellFlashLight = true;
|
||||
timerFlashLight = TIMER_FLASH_OF_LIGHT;
|
||||
break;
|
||||
case CHAMPION_LIGHTREND:
|
||||
spellJustice = true;
|
||||
timerJustice = 500;
|
||||
break;
|
||||
case CHAMPION_SWIFTBLADE:
|
||||
spellJudLight = false; // Misses Script Effect // http://www.wowhead.com/?spell=20271
|
||||
timerJudLight = 500;
|
||||
break;
|
||||
case CHAMPION_SUNSTRIKER:
|
||||
spellFlashLight = true;
|
||||
spellJudLight = false; // Misses Script Effect // http://www.wowhead.com/?spell=20271
|
||||
spellCommand = false; // Misses Dummy // http://www.wowhead.com/?spell=20375
|
||||
timerFlashLight = TIMER_FLASH_OF_LIGHT;
|
||||
timerJudLight = 500;
|
||||
timerCommand = 1500;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *who) { }
|
||||
void EnterCombat(Unit *who) {}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (questPhase == 1) {
|
||||
if (questPhase == 1)
|
||||
if (timer < diff)
|
||||
{
|
||||
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, UNIT_STAND_STATE_STAND);
|
||||
m_creature->setFaction(FACTION_HOSTILE);
|
||||
questPhase = 0;
|
||||
|
||||
if (timer < diff) {
|
||||
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, UNIT_STAND_STATE_STAND);
|
||||
m_creature->setFaction(FACTION_HOSTILE);
|
||||
questPhase = 0;
|
||||
if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
m_creature->AddThreat(target, 5000000.0f);
|
||||
AttackStart(target);
|
||||
}
|
||||
}
|
||||
else
|
||||
timer -= diff;
|
||||
|
||||
Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
if (target && target->GetTypeId() == TYPEID_PLAYER) // only on players.
|
||||
{
|
||||
m_creature->AddThreat(target, 5000000.0f);
|
||||
AttackStart(target);
|
||||
}
|
||||
}
|
||||
else timer -= diff;
|
||||
}
|
||||
|
||||
if (!UpdateVictim())
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
// healer
|
||||
if (spellFlashLight) {
|
||||
if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 70){
|
||||
if (timerFlashLight < diff) {
|
||||
DoCast(m_creature, SPELL_FLASH_OF_LIGHT);
|
||||
timerFlashLight = TIMER_FLASH_OF_LIGHT + rand()%(TIMER_FLASH_OF_LIGHT);
|
||||
}
|
||||
else
|
||||
timerFlashLight -= diff;
|
||||
}
|
||||
}
|
||||
// healer
|
||||
if (spellFlashLight)
|
||||
if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 70)
|
||||
if (timerFlashLight < diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_FLASH_OF_LIGHT);
|
||||
timerFlashLight = TIMER_FLASH_OF_LIGHT + rand()%TIMER_FLASH_OF_LIGHT;
|
||||
}
|
||||
else
|
||||
timerFlashLight -= diff;
|
||||
|
||||
if (spellJustice) {
|
||||
if (timerJustice < diff)
|
||||
if (spellJustice)
|
||||
if (timerJustice < diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_SEAL_OF_JUSTICE);
|
||||
timerJustice = TIMER_SEAL_OF_JUSTICE + rand()%(TIMER_SEAL_OF_JUSTICE);
|
||||
}
|
||||
else
|
||||
timerJustice -= diff;
|
||||
}
|
||||
DoCast(m_creature, SPELL_SEAL_OF_JUSTICE);
|
||||
timerJustice = TIMER_SEAL_OF_JUSTICE + rand()%TIMER_SEAL_OF_JUSTICE;
|
||||
}
|
||||
else
|
||||
timerJustice -= diff;
|
||||
|
||||
if (spellJudLight) {
|
||||
if (timerJudLight < diff) {
|
||||
DoCast(m_creature, SPELL_JUDGEMENT_OF_LIGHT);
|
||||
timerJudLight = TIMER_JUDGEMENT_OF_LIGHT + rand()%(TIMER_JUDGEMENT_OF_LIGHT);
|
||||
}
|
||||
else
|
||||
timerJudLight -= diff;
|
||||
}
|
||||
if (spellJudLight)
|
||||
if (timerJudLight < diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_JUDGEMENT_OF_LIGHT);
|
||||
timerJudLight = TIMER_JUDGEMENT_OF_LIGHT + rand()%TIMER_JUDGEMENT_OF_LIGHT;
|
||||
}
|
||||
else
|
||||
timerJudLight -= diff;
|
||||
|
||||
if (spellCommand) {
|
||||
if (timerCommand < diff) {
|
||||
DoCast(m_creature, TIMER_SEAL_OF_COMMAND);
|
||||
timerCommand = TIMER_SEAL_OF_COMMAND + rand()%(TIMER_SEAL_OF_COMMAND);
|
||||
}
|
||||
else
|
||||
timerCommand -= diff;
|
||||
}
|
||||
if (spellCommand)
|
||||
if (timerCommand < diff)
|
||||
{
|
||||
DoCast(m_creature, TIMER_SEAL_OF_COMMAND);
|
||||
timerCommand = TIMER_SEAL_OF_COMMAND + rand()%TIMER_SEAL_OF_COMMAND;
|
||||
}
|
||||
else
|
||||
timerCommand -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
void Activate(uint64 summonerguid);
|
||||
@@ -307,79 +306,79 @@ struct TRINITY_DLL_DECL master_kelerun_bloodmournAI : public ScriptedAI
|
||||
|
||||
uint64 paladinGuid[4];
|
||||
|
||||
void Reset() {
|
||||
|
||||
questPhase = 0;
|
||||
timer = 60000;
|
||||
paladinPhase = 0;
|
||||
uint64 paladinGuid[] = {0,0,0,0};
|
||||
|
||||
void Reset()
|
||||
{
|
||||
questPhase = 0;
|
||||
timer = 60000;
|
||||
paladinPhase = 0;
|
||||
uint64 paladinGuid[] = {0,0,0,0};
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *who) {}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
// Quest accepted but object not activated, object despawned (if in sync 1 minute!)
|
||||
if (questPhase == 1) {
|
||||
if (timer < diff) Reset();
|
||||
else timer -= diff;
|
||||
}
|
||||
// fight the 4 paladin mobs phase
|
||||
else if (questPhase == 2) {
|
||||
// Quest accepted but object not activated, object despawned (if in sync 1 minute!)
|
||||
if (questPhase == 1)
|
||||
{
|
||||
if (timer < diff)
|
||||
Reset();
|
||||
else
|
||||
timer -= diff;
|
||||
}
|
||||
// fight the 4 paladin mobs phase
|
||||
else if (questPhase == 2)
|
||||
{
|
||||
if (timer < diff)
|
||||
{
|
||||
if (Creature* paladinSpawn = Unit::GetCreature((*m_creature), paladinGuid[paladinPhase]))
|
||||
{
|
||||
CAST_AI(npc_secondTrialAI, paladinSpawn->AI())->Activate(m_creature->GetGUID());
|
||||
|
||||
if (timer < diff) {
|
||||
switch(paladinPhase)
|
||||
{
|
||||
case 0:
|
||||
DoScriptText(TEXT_SECOND_TRIAL_1,m_creature);
|
||||
break;
|
||||
case 1:
|
||||
DoScriptText(TEXT_SECOND_TRIAL_2,m_creature);
|
||||
break;
|
||||
case 2:
|
||||
DoScriptText(TEXT_SECOND_TRIAL_3,m_creature);
|
||||
break;
|
||||
case 3:
|
||||
DoScriptText(TEXT_SECOND_TRIAL_4,m_creature);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
Reset();
|
||||
|
||||
Creature* paladinSpawn;
|
||||
paladinSpawn = (Unit::GetCreature((*m_creature), paladinGuid[paladinPhase]));
|
||||
if (paladinSpawn) {
|
||||
CAST_AI(npc_secondTrialAI, paladinSpawn->AI())->Activate(m_creature->GetGUID());
|
||||
|
||||
switch(paladinPhase) {
|
||||
case 0:
|
||||
DoScriptText(TEXT_SECOND_TRIAL_1,m_creature);
|
||||
break;
|
||||
case 1:
|
||||
DoScriptText(TEXT_SECOND_TRIAL_2,m_creature);
|
||||
break;
|
||||
case 2:
|
||||
DoScriptText(TEXT_SECOND_TRIAL_3,m_creature);
|
||||
break;
|
||||
case 3:
|
||||
DoScriptText(TEXT_SECOND_TRIAL_4,m_creature);
|
||||
break;
|
||||
}
|
||||
questPhase = 4;
|
||||
timer = OFFSET_NEXT_ATTACK;
|
||||
}
|
||||
else
|
||||
Reset();
|
||||
|
||||
questPhase=4;
|
||||
timer = OFFSET_NEXT_ATTACK;
|
||||
timer -= diff;
|
||||
}
|
||||
else timer -= diff;
|
||||
}
|
||||
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
void StartEvent()
|
||||
{
|
||||
|
||||
if (questPhase == 1) { // no player check, quest can be finished as group, so no complex PlayerGUID/group search code
|
||||
if (questPhase == 1)
|
||||
{ // no player check, quest can be finished as group, so no complex PlayerGUID/group search code
|
||||
|
||||
for (int i = 0; i<4; ++i) {
|
||||
Creature* Summoned;
|
||||
Summoned = DoSpawnCreature(PaladinEntry[i], SpawnPosition[i].x, SpawnPosition[i].y, SpawnPosition[i].z, SpawnPosition[i].o, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 180000);
|
||||
for (uint8 i = 0; i < 4; ++i)
|
||||
if (Creature *pSummoned = DoSpawnCreature(PaladinEntry[i], SpawnPosition[i].x, SpawnPosition[i].y, SpawnPosition[i].z, SpawnPosition[i].o, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 180000))
|
||||
paladinGuid[i] = pSummoned->GetGUID();
|
||||
|
||||
if (Summoned)
|
||||
paladinGuid[i] = Summoned->GetGUID();
|
||||
}
|
||||
|
||||
timer = OFFSET_NEXT_ATTACK;
|
||||
questPhase = 2;
|
||||
timer = OFFSET_NEXT_ATTACK;
|
||||
questPhase = 2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -394,7 +393,8 @@ bool GossipHello_master_kelerun_bloodmourn(Player* pPlayer, Creature* pCreature)
|
||||
// Escort quests or any other event-driven quests. If player in party, all players that can accept this quest will receive confirmation box to accept quest.
|
||||
// !not sure if this really works!
|
||||
|
||||
if (CAST_AI(master_kelerun_bloodmournAI, pCreature->AI())->questPhase == 0) {
|
||||
if (CAST_AI(master_kelerun_bloodmournAI, pCreature->AI())->questPhase == 0)
|
||||
{
|
||||
pPlayer->PrepareQuestMenu(pCreature->GetGUID());
|
||||
pPlayer->SendPreparedQuest(pCreature->GetGUID());
|
||||
}
|
||||
@@ -412,65 +412,58 @@ bool QuestAccept_master_kelerun_bloodmourn(Player* pPlayer, Creature* pCreature,
|
||||
return true;
|
||||
}
|
||||
|
||||
void master_kelerun_bloodmournAI::SecondTrialKill() {
|
||||
void master_kelerun_bloodmournAI::SecondTrialKill()
|
||||
{
|
||||
if (questPhase > 0)
|
||||
{
|
||||
++paladinPhase;
|
||||
|
||||
if (questPhase > 0) {
|
||||
|
||||
++paladinPhase;
|
||||
|
||||
if (paladinPhase < 4)
|
||||
questPhase=2;
|
||||
else
|
||||
if (paladinPhase < 4)
|
||||
questPhase = 2;
|
||||
else
|
||||
Reset(); // Quest Complete, QuestComplete handler is in npc_secondTrialAI::JustDied
|
||||
}
|
||||
}
|
||||
|
||||
void npc_secondTrialAI::JustDied(Unit* Killer) {
|
||||
|
||||
if (Killer->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
Creature* Summoner;
|
||||
Summoner = (Unit::GetCreature((*m_creature), summonerGuid));
|
||||
|
||||
if (Summoner)
|
||||
CAST_AI(master_kelerun_bloodmournAI, Summoner->AI())->SecondTrialKill();
|
||||
|
||||
// last kill quest complete for group
|
||||
if (m_creature->GetEntry() == CHAMPION_SUNSTRIKER) {
|
||||
|
||||
if (Group *pGroup = CAST_PLR(Killer)->GetGroup())
|
||||
{
|
||||
for (GroupReference *itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next())
|
||||
{
|
||||
Player *pGroupGuy = itr->getSource();
|
||||
|
||||
// for any leave or dead (with not released body) group member at appropriate distance
|
||||
if (pGroupGuy && pGroupGuy->IsAtGroupRewardDistance(m_creature) && !pGroupGuy->GetCorpse() && pGroupGuy->GetQuestStatus(QUEST_SECOND_TRIAL) == QUEST_STATUS_INCOMPLETE)
|
||||
pGroupGuy->CompleteQuest(QUEST_SECOND_TRIAL);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (CAST_PLR(Killer)->GetQuestStatus(QUEST_SECOND_TRIAL) == QUEST_STATUS_INCOMPLETE)
|
||||
CAST_PLR(Killer)->CompleteQuest(QUEST_SECOND_TRIAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void npc_secondTrialAI::KilledUnit(Unit* Killed) {
|
||||
|
||||
if (Killed->GetTypeId() == TYPEID_PLAYER) {
|
||||
|
||||
if (CAST_PLR(Killed)->GetQuestStatus(QUEST_SECOND_TRIAL) == QUEST_STATUS_INCOMPLETE)
|
||||
CAST_PLR(Killed)->FailQuest(QUEST_SECOND_TRIAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void npc_secondTrialAI::Activate(uint64 summonerguid) {
|
||||
void npc_secondTrialAI::JustDied(Unit* Killer)
|
||||
{
|
||||
if (Killer->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
if (Creature *pSummoner = Unit::GetCreature((*m_creature), summonerGuid))
|
||||
CAST_AI(master_kelerun_bloodmournAI, Summoner->AI())->SecondTrialKill();
|
||||
|
||||
questPhase=1;
|
||||
summonerGuid = summonerguid;
|
||||
// last kill quest complete for group
|
||||
if (m_creature->GetEntry() == CHAMPION_SUNSTRIKER)
|
||||
{
|
||||
if (Group *pGroup = CAST_PLR(Killer)->GetGroup())
|
||||
{
|
||||
for (GroupReference *itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next())
|
||||
{
|
||||
Player *pGroupGuy = itr->getSource();
|
||||
|
||||
// for any leave or dead (with not released body) group member at appropriate distance
|
||||
if (pGroupGuy && pGroupGuy->IsAtGroupRewardDistance(m_creature) && !pGroupGuy->GetCorpse() && pGroupGuy->GetQuestStatus(QUEST_SECOND_TRIAL) == QUEST_STATUS_INCOMPLETE)
|
||||
pGroupGuy->CompleteQuest(QUEST_SECOND_TRIAL);
|
||||
}
|
||||
}
|
||||
else if (CAST_PLR(Killer)->GetQuestStatus(QUEST_SECOND_TRIAL) == QUEST_STATUS_INCOMPLETE)
|
||||
CAST_PLR(Killer)->CompleteQuest(QUEST_SECOND_TRIAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void npc_secondTrialAI::KilledUnit(Unit* Killed)
|
||||
{
|
||||
if (Killed->GetTypeId() == TYPEID_PLAYER)
|
||||
if (CAST_PLR(Killed)->GetQuestStatus(QUEST_SECOND_TRIAL) == QUEST_STATUS_INCOMPLETE)
|
||||
CAST_PLR(Killed)->FailQuest(QUEST_SECOND_TRIAL);
|
||||
}
|
||||
|
||||
void npc_secondTrialAI::Activate(uint64 summonerguid)
|
||||
{
|
||||
questPhase = 1;
|
||||
summonerGuid = summonerguid;
|
||||
}
|
||||
|
||||
CreatureAI* GetAI_master_kelerun_bloodmourn(Creature* pCreature)
|
||||
{
|
||||
@@ -489,7 +482,7 @@ CreatureAI* GetAI_npc_secondTrial(Creature* pCreature)
|
||||
bool GOHello_go_second_trial(Player* pPlayer, GameObject* pGO)
|
||||
{
|
||||
// find spawn :: master_kelerun_bloodmourn
|
||||
if (Creature* pCreature = pGO->FindNearestCreature(MASTER_KELERUN_BLOODMOURN, 30.0f))
|
||||
if (Creature *pCreature = pGO->FindNearestCreature(MASTER_KELERUN_BLOODMOURN, 30.0f))
|
||||
CAST_AI(master_kelerun_bloodmournAI, pCreature->AI())->StartEvent();
|
||||
|
||||
return true;
|
||||
@@ -537,24 +530,15 @@ struct TRINITY_DLL_DECL npc_apprentice_mirvedaAI : public ScriptedAI
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
if (PlayerGUID)
|
||||
{
|
||||
Player* pPlayer = Unit::GetPlayer(PlayerGUID);
|
||||
if (pPlayer)
|
||||
if (Player* pPlayer = Unit::GetPlayer(PlayerGUID))
|
||||
CAST_PLR(pPlayer)->FailQuest(QUEST_UNEXPECTED_RESULT);
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (KillCount >= 3)
|
||||
{
|
||||
if (PlayerGUID)
|
||||
{
|
||||
Player* pPlayer = Unit::GetPlayer(PlayerGUID);
|
||||
if (pPlayer)
|
||||
CAST_PLR(pPlayer)->CompleteQuest(QUEST_UNEXPECTED_RESULT);
|
||||
}
|
||||
}
|
||||
if (KillCount >= 3 && PlayerGUID)
|
||||
if (Player* pPlayer = Unit::GetPlayer(PlayerGUID))
|
||||
CAST_PLR(pPlayer)->CompleteQuest(QUEST_UNEXPECTED_RESULT);
|
||||
|
||||
if (Summon)
|
||||
{
|
||||
@@ -594,7 +578,7 @@ struct Location
|
||||
float x, y, z;
|
||||
};
|
||||
|
||||
static Location SpawnLocations[]=
|
||||
static Location SpawnLocations[] =
|
||||
{
|
||||
{8270.68, -7188.53, 139.619},
|
||||
{8284.27, -7187.78, 139.603},
|
||||
@@ -647,11 +631,8 @@ struct TRINITY_DLL_DECL npc_infused_crystalAI : public Scripted_NoMovementAI
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
if (PlayerGUID && !Completed)
|
||||
{
|
||||
Player* pPlayer = Unit::GetPlayer(PlayerGUID);
|
||||
if (pPlayer)
|
||||
if (Player* pPlayer = Unit::GetPlayer(PlayerGUID))
|
||||
CAST_PLR(pPlayer)->FailQuest(QUEST_POWERING_OUR_DEFENSES);
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -661,14 +642,12 @@ struct TRINITY_DLL_DECL npc_infused_crystalAI : public Scripted_NoMovementAI
|
||||
DoScriptText(EMOTE, m_creature);
|
||||
Completed = true;
|
||||
if (PlayerGUID)
|
||||
{
|
||||
Player* pPlayer = Unit::GetPlayer(PlayerGUID);
|
||||
if (pPlayer)
|
||||
if (Player* pPlayer = Unit::GetPlayer(PlayerGUID))
|
||||
CAST_PLR(pPlayer)->CompleteQuest(QUEST_POWERING_OUR_DEFENSES);
|
||||
}
|
||||
|
||||
m_creature->DealDamage(m_creature,m_creature->GetHealth(),NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
m_creature->RemoveCorpse();
|
||||
}else EndTimer -= diff;
|
||||
} else EndTimer -= diff;
|
||||
|
||||
if (WaveTimer < diff && !Completed && Progress)
|
||||
{
|
||||
|
||||
@@ -191,7 +191,7 @@ struct TRINITY_DLL_DECL mob_pure_energyAI : public ScriptedAI
|
||||
{
|
||||
mob_pure_energyAI(Creature *c) : ScriptedAI(c) {}
|
||||
|
||||
void Reset() { }
|
||||
void Reset() {}
|
||||
|
||||
void JustDied(Unit* slayer)
|
||||
{
|
||||
@@ -202,9 +202,9 @@ struct TRINITY_DLL_DECL mob_pure_energyAI : public ScriptedAI
|
||||
}
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *who) { }
|
||||
void MoveInLineOfSight(Unit *who) { }
|
||||
void AttackStart(Unit *who) { }
|
||||
void EnterCombat(Unit *who) {}
|
||||
void MoveInLineOfSight(Unit *who) {}
|
||||
void AttackStart(Unit *who) {}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_mob_pure_energy(Creature* pCreature)
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@ const float afKaelLandPoint[] = {225.045, -276.236, -5.434};
|
||||
// If we assume DB handle summon, summon appear somewhere outside the platform where Orb is
|
||||
struct TRINITY_DLL_DECL npc_kalecgosAI : public ScriptedAI
|
||||
{
|
||||
npc_kalecgosAI(Creature* pCreature) : ScriptedAI(pCreature) { }
|
||||
npc_kalecgosAI(Creature* pCreature) : ScriptedAI(pCreature) {}
|
||||
|
||||
uint32 m_uiTransformTimer;
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ struct TRINITY_DLL_DECL boss_gehennasAI : public ScriptedAI
|
||||
GehennasCurse_Timer = 12000;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *who) { }
|
||||
void EnterCombat(Unit *who) {}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
|
||||
@@ -118,9 +118,9 @@ struct TRINITY_DLL_DECL mob_scarlet_traineeAI : public npc_escortAI
|
||||
|
||||
uint32 Start_Timer;
|
||||
|
||||
void Reset() { }
|
||||
void WaypointReached(uint32 uiPoint) { }
|
||||
void EnterCombat(Unit* who) { }
|
||||
void Reset() {}
|
||||
void WaypointReached(uint32 uiPoint) {}
|
||||
void EnterCombat(Unit* who) {}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
|
||||
@@ -86,7 +86,7 @@ struct TRINITY_DLL_DECL mob_freed_soulAI : public ScriptedAI
|
||||
DoScriptText(RAND(SAY_ZAPPED0,SAY_ZAPPED1,SAY_ZAPPED2,SAY_ZAPPED3), m_creature);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who) { }
|
||||
void EnterCombat(Unit* who) {}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_mob_freed_soul(Creature* pCreature)
|
||||
|
||||
@@ -45,9 +45,9 @@ struct TRINITY_DLL_DECL npc_forest_frogAI : public ScriptedAI
|
||||
|
||||
ScriptedInstance *pInstance;
|
||||
|
||||
void Reset() { }
|
||||
void Reset() {}
|
||||
|
||||
void EnterCombat(Unit *who) { }
|
||||
void EnterCombat(Unit *who) {}
|
||||
|
||||
void DoSpawnRandom()
|
||||
{
|
||||
|
||||
+530
-46
@@ -18,88 +18,572 @@
|
||||
|
||||
/* ScriptData
|
||||
SDName: boss_jedoga_shadowseeker
|
||||
SDAuthor: LordVanMartin
|
||||
SD%Complete: 0
|
||||
SDComment:
|
||||
SDAuthor: WarHead
|
||||
SD%Complete: 100%
|
||||
SDComment: Complete - BUT THE TRIGGER NEEDS DATA WHETHER THE PRISON OF TALDARAM IS OFFLINE !
|
||||
SDCategory: Ahn'kahet
|
||||
EndScriptData */
|
||||
|
||||
/*** SQL START ***
|
||||
update creature_template set scriptname = 'boss_jedoga' where entry = '';
|
||||
*** SQL END ***/
|
||||
|
||||
#include "precompiled.h"
|
||||
#include "def_ahnkahet.h"
|
||||
|
||||
#define SPELL_CYCLONE_STRIKE 56855
|
||||
#define H_SPELL_CYCLONE_STRIKE 60030//kein unterschied zu 56855 außer das 60030 1,5sec cast ist
|
||||
#define SPELL_LIGHTNING_BOLT 56891
|
||||
#define H_SPELL_LIGHTNING_BOLT 60032
|
||||
#define SPELL_THUNDERSHOCK 56926//AOE works
|
||||
#define H_SPELL_THUNDERSHOCK 60029//AOE works
|
||||
#define SPELL_GIFT_OF_THE_HERALD 56219//triggert if sucessfull sacreficed
|
||||
#define TEXT_AGGRO -1619000
|
||||
#define TEXT_SACRIFICE_1_1 -1619001
|
||||
#define TEXT_SACRIFICE_1_2 -1619002
|
||||
#define TEXT_SACRIFICE_2_1 -1619003
|
||||
#define TEXT_SACRIFICE_2_2 -1619004
|
||||
#define TEXT_SLAY_1 -1619005
|
||||
#define TEXT_SLAY_2 -1619006
|
||||
#define TEXT_SLAY_3 -1619007
|
||||
#define TEXT_DEATH -1619008
|
||||
#define TEXT_PREACHING_1 -1619009
|
||||
#define TEXT_PREACHING_2 -1619010
|
||||
#define TEXT_PREACHING_3 -1619011
|
||||
#define TEXT_PREACHING_4 -1619012
|
||||
#define TEXT_PREACHING_5 -1619013
|
||||
|
||||
//not in db
|
||||
#define SAY_AGGRO -1619000
|
||||
#define SAY_C_SACRIFICE_1 -1619001
|
||||
#define SAY_C_SACRIFICE_2 -1619002
|
||||
#define SAY_SACRIFICE_1 -1619003
|
||||
#define SAY_SACRIFICE_2 -1619004
|
||||
#define SAY_SLAY_1 -1619005
|
||||
#define SAY_SLAY_2 -1619006
|
||||
#define SAY_SLAY_3 -1619007
|
||||
#define SAY_DEATH -1619008
|
||||
#define SAY_PREACHING_1 -1619009
|
||||
#define SAY_PREACHING_2 -1619010
|
||||
#define SAY_PREACHING_3 -1619011
|
||||
#define SAY_PREACHING_4 -1619012
|
||||
#define SAY_PREACHING_5 -1619013
|
||||
#define SPELL_SPHERE_VISUAL 56075
|
||||
#define SPELL_GIFT_OF_THE_HERALD 56219
|
||||
|
||||
struct TRINITY_DLL_DECL boss_jedogaAI : public ScriptedAI
|
||||
#define SPELL_CYCLONE_STRIKE 56855 // Self
|
||||
#define SPELL_CYCLONE_STRIKE_H 60030
|
||||
#define SPELL_LIGHTNING_BOLT 56891 // 40Y
|
||||
#define SPELL_LIGHTNING_BOLT_H 60032 // 40Y
|
||||
#define SPELL_THUNDERSHOCK 56926 // 30Y
|
||||
#define SPELL_THUNDERSHOCK_H 60029 // 30Y
|
||||
|
||||
float JEDOGA_POS[2][4] =
|
||||
{
|
||||
boss_jedogaAI(Creature *c) : ScriptedAI(c) {}
|
||||
{372.330994f, -705.278015f, -0.624178f, 5.427970f},
|
||||
{372.330994f, -705.278015f, -16.179716f, 5.427970f}
|
||||
};
|
||||
|
||||
struct MANGOS_DLL_DECL boss_jedoga_shadowseekerAI : public ScriptedAI
|
||||
{
|
||||
boss_jedoga_shadowseekerAI(Creature* c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = c->GetInstanceData();
|
||||
HeroicMode = c->GetMap()->IsHeroic();
|
||||
MaxDistance = 45.0f;
|
||||
FirstTime = true;
|
||||
predone = false;
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
|
||||
uint32 uiOpFerTimer,
|
||||
uiCycloneTimer,
|
||||
uiBoltTimer,
|
||||
uiThunderTimer;
|
||||
|
||||
bool predone,
|
||||
bOpFerok,
|
||||
bOnGround,
|
||||
bOpFerokFail,
|
||||
bCanDown;
|
||||
|
||||
bool FirstTime;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
uiOpFerTimer = urand(15000,20000);
|
||||
|
||||
uiCycloneTimer = 3000;
|
||||
uiBoltTimer = 7000;
|
||||
uiThunderTimer = 12000;
|
||||
|
||||
bOpFerok = false;
|
||||
bOpFerokFail = false;
|
||||
bOnGround = false;
|
||||
bCanDown = false;
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
if (!FirstTime)
|
||||
pInstance->SetData(DATA_JEDOGA_SHADOWSEEKER_EVENT, FAIL);
|
||||
|
||||
pInstance->SetData64(DATA_PL_JEDOGA_TARGET, 0);
|
||||
pInstance->SetData64(DATA_ADD_JEDOGA_OPFER, 0);
|
||||
pInstance->SetData(DATA_JEDOGA_RESET_INITIANDS, 0);
|
||||
}
|
||||
MoveUp();
|
||||
|
||||
FirstTime = false;
|
||||
}
|
||||
|
||||
void Reset() {}
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
if (!pInstance || (who->GetTypeId() == TYPEID_UNIT && who->GetEntry() == 30181))
|
||||
return;
|
||||
|
||||
DoScriptText(TEXT_AGGRO, m_creature);
|
||||
m_creature->SetInCombatWithZone();
|
||||
pInstance->SetData(DATA_JEDOGA_SHADOWSEEKER_EVENT, IN_PROGRESS);
|
||||
}
|
||||
void AttackStart(Unit* who) {}
|
||||
void MoveInLineOfSight(Unit* who) {}
|
||||
|
||||
void AttackStart(Unit* who)
|
||||
{
|
||||
if (!who || (who->GetTypeId() == TYPEID_UNIT && who->GetEntry() == 30181))
|
||||
return;
|
||||
|
||||
ScriptedAI::AttackStart(who);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* Victim)
|
||||
{
|
||||
if (!Victim || Victim->GetTypeId() != TYPEID_PLAYER)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(TEXT_SLAY_1, TEXT_SLAY_2, TEXT_SLAY_3), m_creature);
|
||||
}
|
||||
|
||||
void JustDied(Unit* Killer)
|
||||
{
|
||||
DoScriptText(TEXT_DEATH, m_creature);
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_JEDOGA_SHADOWSEEKER_EVENT, DONE);
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit* who)
|
||||
{
|
||||
if (!pInstance || !who || (who->GetTypeId() == TYPEID_UNIT && who->GetEntry() == 30181))
|
||||
return;
|
||||
|
||||
if (!predone && who->GetTypeId() == TYPEID_PLAYER && m_creature->GetDistance(who) < 100.0f)
|
||||
{
|
||||
DoScriptText(RAND(TEXT_PREACHING_1, TEXT_PREACHING_2, TEXT_PREACHING_3, TEXT_PREACHING_4, TEXT_PREACHING_5), m_creature);
|
||||
predone = true;
|
||||
}
|
||||
|
||||
if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) != IN_PROGRESS || !bOnGround)
|
||||
return;
|
||||
|
||||
if (!m_creature->getVictim() && who->isTargetableForAttack() && m_creature->IsHostileTo(who) && who->isInAccessiblePlaceFor(m_creature))
|
||||
{
|
||||
float attackRadius = m_creature->GetAttackDistance(who);
|
||||
if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who))
|
||||
{
|
||||
if (!m_creature->getVictim())
|
||||
{
|
||||
who->RemoveAurasByType(SPELL_AURA_MOD_STEALTH);
|
||||
AttackStart(who);
|
||||
}
|
||||
else if (m_creature->GetMap()->IsDungeon())
|
||||
{
|
||||
who->SetInCombatWith(m_creature);
|
||||
m_creature->AddThreat(who, 0.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MoveDown()
|
||||
{
|
||||
if (!pInstance)
|
||||
return;
|
||||
|
||||
bOpFerokFail = false;
|
||||
|
||||
pInstance->SetData(DATA_JEDOGA_TRIGGER_SWITCH, 0);
|
||||
m_creature->GetMotionMaster()->MovePoint(1, JEDOGA_POS[1][0], JEDOGA_POS[1][1], JEDOGA_POS[1][2]);
|
||||
|
||||
m_creature->SetUnitMovementFlags(MOVEMENTFLAG_JUMPING);
|
||||
m_creature->SendMonsterMove(JEDOGA_POS[1][0], JEDOGA_POS[1][1], JEDOGA_POS[1][2], 0, MOVEFLAG_JUMP, 0);
|
||||
m_creature->Relocate(JEDOGA_POS[1][0], JEDOGA_POS[1][1], JEDOGA_POS[1][2], JEDOGA_POS[1][3]);
|
||||
m_creature->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
|
||||
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, false);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, false);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_SPHERE_VISUAL);
|
||||
|
||||
bOnGround = true;
|
||||
|
||||
if (UpdateVictim())
|
||||
{
|
||||
AttackStart(m_creature->getVictim());
|
||||
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Unit* pTarget = Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_PL_JEDOGA_TARGET)))
|
||||
{
|
||||
AttackStart(pTarget);
|
||||
pInstance->SetData(DATA_JEDOGA_RESET_INITIANDS, 0);
|
||||
if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) != IN_PROGRESS)
|
||||
EnterCombat(pTarget);
|
||||
}
|
||||
else if (!m_creature->isInCombat())
|
||||
EnterEvadeMode();
|
||||
}
|
||||
}
|
||||
|
||||
void MoveUp()
|
||||
{
|
||||
if (!pInstance)
|
||||
return;
|
||||
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
m_creature->AttackStop();
|
||||
m_creature->RemoveAllAuras();
|
||||
m_creature->LoadCreaturesAddon();
|
||||
m_creature->GetMotionMaster()->MovePoint(0, JEDOGA_POS[0][0], JEDOGA_POS[0][1], JEDOGA_POS[0][2]);
|
||||
|
||||
m_creature->SetUnitMovementFlags(MOVEMENTFLAG_JUMPING);
|
||||
m_creature->SendMonsterMove(JEDOGA_POS[0][0], JEDOGA_POS[0][1], JEDOGA_POS[0][2], 0, MOVEFLAG_JUMP, 0);
|
||||
m_creature->Relocate(JEDOGA_POS[0][0], JEDOGA_POS[0][1], JEDOGA_POS[0][2], JEDOGA_POS[0][3]);
|
||||
m_creature->SetUnitMovementFlags(MOVEMENTFLAG_LEVITATING);
|
||||
m_creature->GetMotionMaster()->Clear();
|
||||
m_creature->GetMotionMaster()->MoveIdle();
|
||||
m_creature->StopMoving();
|
||||
|
||||
pInstance->SetData(DATA_JEDOGA_TRIGGER_SWITCH, 1);
|
||||
if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == IN_PROGRESS) OpferRufen();
|
||||
|
||||
bOnGround = false;
|
||||
uiOpFerTimer = urand(15000,30000);
|
||||
}
|
||||
|
||||
void OpferRufen()
|
||||
{
|
||||
if (!pInstance)
|
||||
return;
|
||||
|
||||
uint64 opfer = pInstance->GetData64(DATA_ADD_JEDOGA_INITIAND);
|
||||
|
||||
if (opfer)
|
||||
{
|
||||
DoScriptText(RAND(TEXT_SACRIFICE_1_1, TEXT_SACRIFICE_1_2), m_creature);
|
||||
pInstance->SetData64(DATA_ADD_JEDOGA_OPFER, opfer);
|
||||
} else
|
||||
bCanDown = true;
|
||||
}
|
||||
|
||||
void Opfern()
|
||||
{
|
||||
DoScriptText(RAND(TEXT_SACRIFICE_2_1, TEXT_SACRIFICE_2_2), m_creature);
|
||||
|
||||
m_creature->InterruptNonMeleeSpells(false);
|
||||
m_creature->CastSpell(m_creature, SPELL_GIFT_OF_THE_HERALD, false);
|
||||
|
||||
bOpFerok = false;
|
||||
bCanDown = true;
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!pInstance)
|
||||
return;
|
||||
|
||||
if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) != IN_PROGRESS && pInstance->GetData(DATA_ALL_INITIAND_DEAD))
|
||||
MoveDown();
|
||||
|
||||
if (bOpFerok && !bOnGround && !bCanDown) Opfern();
|
||||
|
||||
if (bOpFerokFail && !bOnGround && !bCanDown)
|
||||
bCanDown = true;
|
||||
|
||||
if (bCanDown)
|
||||
{
|
||||
MoveDown();
|
||||
bCanDown = false;
|
||||
}
|
||||
|
||||
if (bOnGround)
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (uiCycloneTimer < diff)
|
||||
{
|
||||
m_creature->CastSpell(m_creature, HEROIC(SPELL_CYCLONE_STRIKE, SPELL_CYCLONE_STRIKE_H), false);
|
||||
uiCycloneTimer = urand(15000,30000);
|
||||
} else uiCycloneTimer -= diff;
|
||||
|
||||
if (uiBoltTimer < diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
m_creature->CastSpell(pTarget, HEROIC(SPELL_LIGHTNING_BOLT, SPELL_LIGHTNING_BOLT_H), false);
|
||||
|
||||
uiBoltTimer = urand(15000,30000);
|
||||
} else uiBoltTimer -= diff;
|
||||
|
||||
if (uiThunderTimer < diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
m_creature->CastSpell(pTarget, HEROIC(SPELL_THUNDERSHOCK, SPELL_THUNDERSHOCK_H), false);
|
||||
|
||||
uiThunderTimer = urand(15000,30000);
|
||||
} else uiThunderTimer -= diff;
|
||||
|
||||
if (uiOpFerTimer < diff)
|
||||
MoveUp();
|
||||
else
|
||||
uiOpFerTimer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
struct MANGOS_DLL_DECL mob_jedoga_initiandAI : public ScriptedAI
|
||||
{
|
||||
mob_jedoga_initiandAI(Creature* c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = c->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
|
||||
uint32 checktimer;
|
||||
|
||||
bool walking;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
if (!pInstance)
|
||||
return;
|
||||
|
||||
walking = false;
|
||||
checktimer = 2000;
|
||||
|
||||
if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) != IN_PROGRESS)
|
||||
{
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_SPHERE_VISUAL);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, false);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, false);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_creature->CastSpell(m_creature, SPELL_SPHERE_VISUAL, false);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
}
|
||||
|
||||
void JustDied(Unit* Killer)
|
||||
{
|
||||
if (!Killer || !pInstance) return;
|
||||
|
||||
if (walking)
|
||||
{
|
||||
Creature* boss = m_creature->GetMap()->GetCreature(pInstance->GetData64(DATA_JEDOGA_SHADOWSEEKER));
|
||||
if (boss && !CAST_AI(boss_jedoga_shadowseekerAI, boss->AI())->bOpFerok) CAST_AI(boss_jedoga_shadowseekerAI, boss->AI())->opferfail = true;
|
||||
|
||||
if (Killer->GetTypeId() == TYPEID_PLAYER) pInstance->SetData(DATA_INITIAND_KILLED, 1);
|
||||
pInstance->SetData64(DATA_ADD_JEDOGA_OPFER, 0);
|
||||
|
||||
walking = false;
|
||||
}
|
||||
if (Killer->GetTypeId() == TYPEID_PLAYER) pInstance->SetData64(DATA_PL_JEDOGA_TARGET, Killer->GetGUID());
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
if ((pInstance && pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == IN_PROGRESS) || !who) return;
|
||||
}
|
||||
|
||||
void AttackStart(Unit* victim)
|
||||
{
|
||||
if ((pInstance && pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == IN_PROGRESS) || !victim) return;
|
||||
|
||||
ScriptedAI::AttackStart(victim);
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit* who)
|
||||
{
|
||||
if ((pInstance && pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == IN_PROGRESS) || !who) return;
|
||||
|
||||
ScriptedAI::MoveInLineOfSight(who);
|
||||
}
|
||||
|
||||
void MovementInform(uint32 uiType, uint32 uiPointId)
|
||||
{
|
||||
if (uiType != POINT_MOTION_TYPE || !pInstance) return;
|
||||
|
||||
switch(uiPointId)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
Creature* boss = m_creature->GetMap()->GetCreature(pInstance->GetData64(DATA_JEDOGA_SHADOWSEEKER));
|
||||
if (boss)
|
||||
{
|
||||
CAST_AI(boss_jedoga_shadowseekerAI, boss->AI())->bOpFerok = true;
|
||||
CAST_AI(boss_jedoga_shadowseekerAI, boss->AI())->bOpFerokFail = false;
|
||||
m_creature->DealDamage(boss, m_creature->GetHealth());
|
||||
m_creature->setDeathState(JUST_DIED);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (pInstance && checktimer < diff)
|
||||
{
|
||||
if (m_creature->GetGUID() == pInstance->GetData64(DATA_ADD_JEDOGA_OPFER) && !walking)
|
||||
{
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_SPHERE_VISUAL);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, false);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, false);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
float distance = m_creature->GetDistance(JEDOGA_POS[1][0], JEDOGA_POS[1][1], JEDOGA_POS[1][2]);
|
||||
|
||||
if (distance < 9.0f)
|
||||
m_creature->SetSpeed(MOVE_WALK, 0.5f, true);
|
||||
else if (distance < 15.0f)
|
||||
m_creature->SetSpeed(MOVE_WALK, 0.75f, true);
|
||||
else if (distance < 20.0f)
|
||||
m_creature->SetSpeed(MOVE_WALK, 1.0f, true);
|
||||
|
||||
m_creature->GetMotionMaster()->Clear(false);
|
||||
m_creature->GetMotionMaster()->MovePoint(1, JEDOGA_POS[1][0], JEDOGA_POS[1][1], JEDOGA_POS[1][2]);
|
||||
walking = true;
|
||||
}
|
||||
if (!walking)
|
||||
{
|
||||
if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) != IN_PROGRESS && m_creature->HasAura(SPELL_SPHERE_VISUAL))
|
||||
{
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_SPHERE_VISUAL);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, false);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, false);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == IN_PROGRESS && !m_creature->HasAura(SPELL_SPHERE_VISUAL))
|
||||
{
|
||||
m_creature->CastSpell(m_creature, SPELL_SPHERE_VISUAL, false);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
}
|
||||
checktimer = 2000;
|
||||
} else checktimer -= diff;
|
||||
|
||||
//Return since we have no target
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
// ------------------------------------------------------------------------------------------------------------
|
||||
// Jedogas Aufseher - Entry: 30181
|
||||
// ------------------------------------------------------------------------------------------------------------
|
||||
#define SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_1 60342
|
||||
#define SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_2 56312
|
||||
|
||||
struct MANGOS_DLL_DECL npc_jedogas_aufseher_triggerAI : public Scripted_NoMovementAI
|
||||
{
|
||||
npc_jedogas_aufseher_triggerAI(Creature* c) : Scripted_NoMovementAI(c)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
pInstance = c->GetInstanceData();
|
||||
c->SetUInt32Value(UNIT_FIELD_DISPLAYID, 11686);
|
||||
c->setFaction(35);
|
||||
removed = false;
|
||||
removed2 = false;
|
||||
casted = false;
|
||||
casted2 = false;
|
||||
}
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
ScriptedInstance* pInstance;
|
||||
|
||||
bool removed,
|
||||
removed2,
|
||||
casted,
|
||||
casted2;
|
||||
|
||||
void Reset() {}
|
||||
void EnterCombat(Unit* who) {}
|
||||
void AttackStart(Unit* victim) {}
|
||||
void MoveInLineOfSight(Unit* who) {}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (!pInstance)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
if (!removed && m_creature->GetPositionX() > 440.0f)
|
||||
{ /* NEEDS DATA WHETHER THE PRISON OF TALDARAM IS OFFLINE !
|
||||
if (pInstance->GetData(EVENT_VORRICHTUNGEN))
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
removed = true;
|
||||
return;
|
||||
}*/
|
||||
if (pInstance->GetData(DATA_PRINCE_TALDARAM_EVENT) == DONE)
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
removed = true;
|
||||
return;
|
||||
}
|
||||
if (!casted)
|
||||
{
|
||||
m_creature->CastSpell(m_creature, SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_1, false);
|
||||
casted = true;
|
||||
}
|
||||
}
|
||||
if (!removed2 && m_creature->GetPositionX() < 440.0f)
|
||||
{
|
||||
if (!casted2 && pInstance->GetData(DATA_JEDOGA_TRIGGER_SWITCH))
|
||||
{
|
||||
m_creature->CastSpell(m_creature, SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_2, false);
|
||||
casted2 = true;
|
||||
}
|
||||
if (casted2 && !pInstance->GetData(DATA_JEDOGA_TRIGGER_SWITCH))
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
casted2 = false;
|
||||
}
|
||||
if (!removed2 && pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == DONE)
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
removed2 = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_boss_jedoga(Creature* pCreature)
|
||||
CreatureAI* GetAI_boss_jedoga_shadowseeker(Creature* pCreature)
|
||||
{
|
||||
return new boss_jedogaAI (pCreature);
|
||||
return new boss_jedoga_shadowseekerAI (pCreature);
|
||||
}
|
||||
|
||||
void AddSC_boss_jedoga()
|
||||
CreatureAI* GetAI_mob_jedoga_initiand(Creature* pCreature)
|
||||
{
|
||||
Script *newscript;
|
||||
return new mob_jedoga_initiandAI (pCreature);
|
||||
}
|
||||
|
||||
CreatureAI* GetAI_npc_jedogas_aufseher_trigger(Creature* pCreature)
|
||||
{
|
||||
return new npc_jedogas_aufseher_triggerAI (pCreature);
|
||||
}
|
||||
|
||||
void AddSC_boss_jedoga_shadowseeker()
|
||||
{
|
||||
Script* newscript;
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "boss_jedoga";
|
||||
newscript->GetAI = &GetAI_boss_jedoga;
|
||||
newscript->Name = "boss_jedoga_shadowseeker";
|
||||
newscript->GetAI = &GetAI_boss_jedoga_shadowseeker;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "mob_jedoga_initiand";
|
||||
newscript->GetAI = &GetAI_mob_jedoga_initiand;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "npc_jedogas_aufseher_trigger";
|
||||
newscript->GetAI = &GetAI_npc_jedogas_aufseher_trigger;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
@@ -37,4 +37,12 @@
|
||||
#define DATA_SPHERE2_EVENT 14
|
||||
#define DATA_PRINCE_TALDARAM_PLATFORM 15
|
||||
|
||||
#define DATA_PL_JEDOGA_TARGET 16
|
||||
#define DATA_ADD_JEDOGA_OPFER 17
|
||||
#define DATA_JEDOGA_RESET_INITIANDS 18
|
||||
#define DATA_JEDOGA_TRIGGER_SWITCH 19
|
||||
#define DATA_ADD_JEDOGA_INITIAND 20
|
||||
#define DATA_ALL_INITIAND_DEAD 21
|
||||
#define DATA_INITIAND_KILLED 22
|
||||
|
||||
#endif
|
||||
|
||||
+118
-42
@@ -26,7 +26,10 @@ EndScriptData */
|
||||
#include "precompiled.h"
|
||||
#include "def_ahnkahet.h"
|
||||
|
||||
#define MAX_ENCOUNTER 5
|
||||
#define MAX_ENCOUNTER 5
|
||||
#define MAX_JEDOGA_INITIANDS 15
|
||||
|
||||
#define AchievementVolunteerWork 2056
|
||||
|
||||
/* Ahn'kahet encounters:
|
||||
0 - Elder Nadox
|
||||
@@ -50,21 +53,39 @@ struct TRINITY_DLL_DECL instance_ahnkahet : public ScriptedInstance
|
||||
uint64 Prince_TaldaramPlatform;
|
||||
uint64 Prince_TaldaramGate;
|
||||
|
||||
uint64 InitiandGUIDs[MAX_JEDOGA_INITIANDS];
|
||||
uint64 JedogaSacrifices;
|
||||
uint64 JedogaTarget;
|
||||
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
uint32 spheres[2];
|
||||
|
||||
uint8 InitiandCnt,
|
||||
switchtrigger,
|
||||
initiandkilled;
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Elder_Nadox =0;
|
||||
Prince_Taldaram =0;
|
||||
Jedoga_Shadowseeker =0;
|
||||
Herald_Volazj =0;
|
||||
Amanitar =0;
|
||||
Elder_Nadox =0;
|
||||
Prince_Taldaram =0;
|
||||
Jedoga_Shadowseeker =0;
|
||||
Herald_Volazj =0;
|
||||
Amanitar =0;
|
||||
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
m_auiEncounter[i] = NOT_STARTED;
|
||||
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
m_auiEncounter[i] = NOT_STARTED;
|
||||
spheres[0] = NOT_STARTED;
|
||||
spheres[1] = NOT_STARTED;
|
||||
|
||||
InitiandCnt = 0;
|
||||
switchtrigger = 0;
|
||||
initiandkilled = 0;
|
||||
JedogaSacrifices = 0;
|
||||
JedogaTarget = 0;
|
||||
|
||||
for (uint8 i=0; i<MAX_JEDOGA_INITIANDS; ++i)
|
||||
InitiandGUIDs[i] = 0;
|
||||
}
|
||||
|
||||
bool IsEncounterInProgress() const
|
||||
@@ -79,11 +100,12 @@ struct TRINITY_DLL_DECL instance_ahnkahet : public ScriptedInstance
|
||||
{
|
||||
switch(pCreature->GetEntry())
|
||||
{
|
||||
case 29309: Elder_Nadox = pCreature->GetGUID(); break;
|
||||
case 29308: Prince_Taldaram = pCreature->GetGUID(); break;
|
||||
case 29310: Jedoga_Shadowseeker = pCreature->GetGUID(); break;
|
||||
case 29311: Herald_Volazj = pCreature->GetGUID(); break;
|
||||
case 30258: Amanitar = pCreature->GetGUID(); break;
|
||||
case 29309: Elder_Nadox = pCreature->GetGUID(); break;
|
||||
case 29308: Prince_Taldaram = pCreature->GetGUID(); break;
|
||||
case 29310: Jedoga_Shadowseeker = pCreature->GetGUID(); break;
|
||||
case 29311: Herald_Volazj = pCreature->GetGUID(); break;
|
||||
case 30258: Amanitar = pCreature->GetGUID(); break;
|
||||
case 30114: InitiandGUIDs[InitiandCnt++] = pCreature->GetGUID(); break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,6 +136,15 @@ struct TRINITY_DLL_DECL instance_ahnkahet : public ScriptedInstance
|
||||
}
|
||||
}
|
||||
|
||||
void SetData64(uint32 idx, uint64 guid)
|
||||
{
|
||||
switch(idx)
|
||||
{
|
||||
case DATA_ADD_JEDOGA_OPFER: JedogaSacrifices = guid; break;
|
||||
case DATA_PL_JEDOGA_TARGET: JedogaTarget = guid; break;
|
||||
}
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 identifier)
|
||||
{
|
||||
switch(identifier)
|
||||
@@ -126,6 +157,26 @@ struct TRINITY_DLL_DECL instance_ahnkahet : public ScriptedInstance
|
||||
case DATA_SPHERE1: return Prince_TaldaramSpheres[0];
|
||||
case DATA_SPHERE2: return Prince_TaldaramSpheres[1];
|
||||
case DATA_PRINCE_TALDARAM_PLATFORM: return Prince_TaldaramPlatform;
|
||||
case DATA_ADD_JEDOGA_INITIAND:
|
||||
{
|
||||
uint8 i = 0;
|
||||
uint32 rnd = urand(0,MAX_JEDOGA_INITIANDS-1);
|
||||
do
|
||||
{
|
||||
if (i == rnd)
|
||||
{
|
||||
Creature* cr = instance->GetCreature(InitiandGUIDs[i]);
|
||||
if (cr && cr->isAlive()) return InitiandGUIDs[i];
|
||||
else
|
||||
{
|
||||
i = 0;
|
||||
rnd = urand(0,MAX_JEDOGA_INITIANDS-1);
|
||||
}
|
||||
} else ++i;
|
||||
} while (i < MAX_JEDOGA_INITIANDS);
|
||||
}
|
||||
case DATA_ADD_JEDOGA_OPFER: return JedogaSacrifices;
|
||||
case DATA_PL_JEDOGA_TARGET: return JedogaTarget;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -134,30 +185,50 @@ struct TRINITY_DLL_DECL instance_ahnkahet : public ScriptedInstance
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case DATA_ELDER_NADOX_EVENT:
|
||||
m_auiEncounter[0] = data;break;
|
||||
case DATA_PRINCE_TALDARAM_EVENT:
|
||||
if (data == DONE)
|
||||
{
|
||||
HandleGameObject(Prince_TaldaramGate,true);
|
||||
}
|
||||
m_auiEncounter[1] = data; break;
|
||||
case DATA_JEDOGA_SHADOWSEEKER_EVENT:
|
||||
m_auiEncounter[2] = data; break;
|
||||
case DATA_HERALD_VOLAZJ:
|
||||
m_auiEncounter[3] = data; break;
|
||||
case DATA_AMANITAR:
|
||||
m_auiEncounter[4] = data; break;
|
||||
case DATA_SPHERE1_EVENT:
|
||||
spheres[0] = data; break;
|
||||
case DATA_SPHERE2_EVENT:
|
||||
spheres[1] = data; break;
|
||||
}
|
||||
|
||||
if (data == DONE)
|
||||
{
|
||||
SaveToDB();
|
||||
case DATA_ELDER_NADOX_EVENT: m_auiEncounter[0] = data; break;
|
||||
case DATA_PRINCE_TALDARAM_EVENT:
|
||||
if (data == DONE)
|
||||
HandleGameObject(Prince_TaldaramGate,true);
|
||||
m_auiEncounter[1] = data;
|
||||
break;
|
||||
case DATA_JEDOGA_SHADOWSEEKER_EVENT:
|
||||
m_auiEncounter[2] = data;
|
||||
if (data == DONE)
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_JEDOGA_INITIANDS; ++i)
|
||||
{
|
||||
Creature* cr = instance->GetCreature(InitiandGUIDs[i]);
|
||||
if (cr && cr->isAlive())
|
||||
{
|
||||
cr->SetVisibility(VISIBILITY_OFF);
|
||||
cr->setDeathState(JUST_DIED);
|
||||
cr->RemoveCorpse();
|
||||
}
|
||||
}
|
||||
if (!initiandkilled && instance->IsHeroic())
|
||||
DoCompleteAchievement(AchievementVolunteerWork);
|
||||
}
|
||||
break;
|
||||
case DATA_HERALD_VOLAZJ: m_auiEncounter[3] = data; break;
|
||||
case DATA_AMANITAR: m_auiEncounter[4] = data; break;
|
||||
case DATA_SPHERE1_EVENT: spheres[0] = data; break;
|
||||
case DATA_SPHERE2_EVENT: spheres[1] = data; break;
|
||||
case DATA_JEDOGA_TRIGGER_SWITCH: switchtrigger = data; break;
|
||||
case DATA_INITIAND_KILLED: initiandkilled = data; break;
|
||||
case DATA_JEDOGA_RESET_INITIANDS:
|
||||
for (uint8 i=0; i < MAX_JEDOGA_INITIANDS; ++i)
|
||||
{
|
||||
Creature* cr = instance->GetCreature(InitiandGUIDs[i]);
|
||||
if (cr)
|
||||
{
|
||||
cr->Respawn();
|
||||
if (!cr->IsInEvadeMode()) cr->AI()->EnterEvadeMode();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (data == DONE)
|
||||
SaveToDB();
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 type)
|
||||
@@ -171,25 +242,30 @@ struct TRINITY_DLL_DECL instance_ahnkahet : public ScriptedInstance
|
||||
case DATA_AMANITAR: return m_auiEncounter[4];
|
||||
case DATA_SPHERE1_EVENT: return spheres[0];
|
||||
case DATA_SPHERE2_EVENT: return spheres[1];
|
||||
case DATA_ALL_INITIAND_DEAD:
|
||||
for (uint8 i=0; i<MAX_JEDOGA_INITIANDS; ++i)
|
||||
{
|
||||
Creature* cr = instance->GetCreature(InitiandGUIDs[i]);
|
||||
if (!cr || (cr && cr->isAlive())) return 0;
|
||||
}
|
||||
return 1;
|
||||
case DATA_JEDOGA_TRIGGER_SWITCH: return switchtrigger;
|
||||
case DATA_INITIAND_KILLED: return initiandkilled;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::string GetSaveData()
|
||||
std::string GetSaveData()
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::string str_data;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "A K " << m_auiEncounter[0] << " " << m_auiEncounter[1] << " "
|
||||
<< m_auiEncounter[2] << " " << m_auiEncounter[3] << " " << m_auiEncounter[4] << " "
|
||||
<< spheres[0] << " " << spheres[1];
|
||||
|
||||
str_data = saveStream.str();
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return str_data;
|
||||
return saveStream.str();
|
||||
}
|
||||
|
||||
void Load(const char* in)
|
||||
|
||||
@@ -303,7 +303,7 @@ void AddSC_boss_anub_arak()
|
||||
Script *newscript;
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name="boss_anub_arak";
|
||||
newscript->Name = "boss_anub_arak";
|
||||
newscript->GetAI = &GetAI_boss_anub_arak;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
@@ -685,7 +685,7 @@ struct TRINITY_DLL_DECL dummy_dragonAI : public ScriptedAI
|
||||
|
||||
struct TRINITY_DLL_DECL mob_tenebronAI : public dummy_dragonAI
|
||||
{
|
||||
mob_tenebronAI(Creature* pCreature) : dummy_dragonAI(pCreature) { }
|
||||
mob_tenebronAI(Creature* pCreature) : dummy_dragonAI(pCreature) {}
|
||||
|
||||
uint32 m_uiShadowBreathTimer;
|
||||
uint32 m_uiShadowFissureTimer;
|
||||
@@ -755,7 +755,7 @@ CreatureAI* GetAI_mob_tenebron(Creature* pCreature)
|
||||
|
||||
struct TRINITY_DLL_DECL mob_shadronAI : public dummy_dragonAI
|
||||
{
|
||||
mob_shadronAI(Creature* pCreature) : dummy_dragonAI(pCreature) { }
|
||||
mob_shadronAI(Creature* pCreature) : dummy_dragonAI(pCreature) {}
|
||||
|
||||
uint32 m_uiShadowBreathTimer;
|
||||
uint32 m_uiShadowFissureTimer;
|
||||
@@ -831,7 +831,7 @@ CreatureAI* GetAI_mob_shadron(Creature* pCreature)
|
||||
|
||||
struct TRINITY_DLL_DECL mob_vesperonAI : public dummy_dragonAI
|
||||
{
|
||||
mob_vesperonAI(Creature* pCreature) : dummy_dragonAI(pCreature) { }
|
||||
mob_vesperonAI(Creature* pCreature) : dummy_dragonAI(pCreature) {}
|
||||
|
||||
uint32 m_uiShadowBreathTimer;
|
||||
uint32 m_uiShadowFissureTimer;
|
||||
@@ -1009,7 +1009,7 @@ CreatureAI* GetAI_mob_acolyte_of_vesperon(Creature* pCreature)
|
||||
|
||||
struct TRINITY_DLL_DECL mob_twilight_eggsAI : public ScriptedAI
|
||||
{
|
||||
mob_twilight_eggsAI(Creature* pCreature) : ScriptedAI(pCreature) { }
|
||||
mob_twilight_eggsAI(Creature* pCreature) : ScriptedAI(pCreature) {}
|
||||
|
||||
uint32 m_uiFadeArmorTimer;
|
||||
|
||||
@@ -1018,8 +1018,8 @@ struct TRINITY_DLL_DECL mob_twilight_eggsAI : public ScriptedAI
|
||||
m_uiFadeArmorTimer = 1000;
|
||||
}
|
||||
|
||||
void AttackStart(Unit* pWho) { }
|
||||
void MoveInLineOfSight(Unit* pWho) { }
|
||||
void AttackStart(Unit* pWho) {}
|
||||
void MoveInLineOfSight(Unit* pWho) {}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_mob_twilight_eggs(Creature* pCreature)
|
||||
@@ -1033,7 +1033,7 @@ CreatureAI* GetAI_mob_twilight_eggs(Creature* pCreature)
|
||||
|
||||
struct TRINITY_DLL_DECL mob_twilight_whelpAI : public ScriptedAI
|
||||
{
|
||||
mob_twilight_whelpAI(Creature* pCreature) : ScriptedAI(pCreature) { }
|
||||
mob_twilight_whelpAI(Creature* pCreature) : ScriptedAI(pCreature) {}
|
||||
|
||||
uint32 m_uiFadeArmorTimer;
|
||||
|
||||
|
||||
+1
-1
@@ -806,7 +806,7 @@ void AddSC_boss_palehoof()
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name="mob_palehoof_orb";
|
||||
newscript->Name = "mob_palehoof_orb";
|
||||
newscript->GetAI = &GetAI_mob_palehoof_orb;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@ struct TRINITY_DLL_DECL npc_air_force_botsAI : public ScriptedAI
|
||||
SpawnAssociation* m_pSpawnAssoc;
|
||||
uint64 m_uiSpawnedGUID;
|
||||
|
||||
void Reset() { }
|
||||
void Reset() {}
|
||||
|
||||
Creature* SummonGuard()
|
||||
{
|
||||
|
||||
@@ -274,6 +274,7 @@ extern void AddSC_instance_azjol_nerub();
|
||||
extern void AddSC_instance_ahnkahet(); //Azjol-Nerub Ahn'kahet
|
||||
extern void AddSC_boss_amanitar();
|
||||
extern void AddSC_boss_taldaram();
|
||||
extern void AddSC_boss_jedoga_shadowseeker();
|
||||
extern void AddSC_boss_elder_nadox();
|
||||
extern void AddSC_boss_volazj();
|
||||
extern void AddSC_boss_anubrekhan(); //Naxxramas
|
||||
@@ -704,6 +705,7 @@ void AddScripts()
|
||||
AddSC_boss_amanitar();
|
||||
AddSC_boss_taldaram(); //Azjol-Nerub Ahn'kahet
|
||||
AddSC_boss_elder_nadox();
|
||||
AddSC_boss_jedoga_shadowseeker();
|
||||
AddSC_boss_volazj();
|
||||
AddSC_instance_ahnkahet();
|
||||
AddSC_boss_krik_thir(); //Azjol-Nerub Azjol-Nerub
|
||||
|
||||
Reference in New Issue
Block a user