aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.cpp4
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/blackrock_spire/boss_mother_smolderweb.cpp2
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/eastern_plaguelands.cpp6
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/eversong_woods.cpp383
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/magisters_terrace/boss_vexallus.cpp8
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/magisters_terrace/magisters_terrace.cpp2
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/molten_core/boss_gehennas.cpp2
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/scarlet_monastery/boss_herod.cpp6
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/stratholme/stratholme.cpp2
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/zulaman/zulaman.cpp4
-rw-r--r--src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/boss_jedoga_shadowseeker.cpp580
-rw-r--r--src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/def_ahnkahet.h8
-rw-r--r--src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/instance_ahnkahet.cpp160
-rw-r--r--src/bindings/scripts/scripts/northrend/azjol_nerub/azjol_nerub/boss_anubarak.cpp2
-rw-r--r--src/bindings/scripts/scripts/northrend/obsidian_sanctum/boss_sartharion.cpp14
-rw-r--r--src/bindings/scripts/scripts/northrend/utgarde_keep/utgarde_pinnacle/boss_palehoof.cpp2
-rw-r--r--src/bindings/scripts/scripts/world/npcs_special.cpp2
-rw-r--r--src/bindings/scripts/system/ScriptLoader.cpp2
18 files changed, 869 insertions, 320 deletions
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.cpp
index 94f40eee090..faa05e147ed 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.cpp
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/blackrock_depths/blackrock_depths.cpp
@@ -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)
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/blackrock_spire/boss_mother_smolderweb.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/blackrock_spire/boss_mother_smolderweb.cpp
index 61a92ebfe40..622f666c2f6 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/blackrock_spire/boss_mother_smolderweb.cpp
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/blackrock_spire/boss_mother_smolderweb.cpp
@@ -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)
{
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/eastern_plaguelands.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/eastern_plaguelands.cpp
index c801398b830..a53a23d9dbd 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/eastern_plaguelands.cpp
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/eastern_plaguelands.cpp
@@ -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)
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/eversong_woods.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/eversong_woods.cpp
index 7914c87fe1a..41608b6c7d5 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/eversong_woods.cpp
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/eversong_woods.cpp
@@ -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 (timer < diff) {
- m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, UNIT_STAND_STATE_STAND);
- m_creature->setFaction(FACTION_HOSTILE);
- questPhase = 0;
-
- 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 (questPhase == 1)
+ 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;
- 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) {
-
- if (timer < diff) {
-
- 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;
- }
- }
+ // Quest accepted but object not activated, object despawned (if in sync 1 minute!)
+ if (questPhase == 1)
+ {
+ if (timer < diff)
+ Reset();
else
- Reset();
+ 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());
+
+ 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();
- questPhase=4;
- timer = OFFSET_NEXT_ATTACK;
+ questPhase = 4;
+ timer = OFFSET_NEXT_ATTACK;
+ }
+ else
+ 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() {
-
- if (questPhase > 0) {
-
- ++paladinPhase;
+void master_kelerun_bloodmournAI::SecondTrialKill()
+{
+ 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)
+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();
- // last kill quest complete for group
- if (m_creature->GetEntry() == CHAMPION_SUNSTRIKER) {
-
+ // 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 (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);
+ // 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);
- }
+ else if (CAST_PLR(Killer)->GetQuestStatus(QUEST_SECOND_TRIAL) == QUEST_STATUS_INCOMPLETE)
+ CAST_PLR(Killer)->CompleteQuest(QUEST_SECOND_TRIAL);
+ }
+ }
}
-void npc_secondTrialAI::Activate(uint64 summonerguid) {
+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);
+}
- questPhase=1;
+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)
{
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/magisters_terrace/boss_vexallus.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/magisters_terrace/boss_vexallus.cpp
index 82b5980ca44..c4e7a33a77c 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/magisters_terrace/boss_vexallus.cpp
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/magisters_terrace/boss_vexallus.cpp
@@ -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)
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/magisters_terrace/magisters_terrace.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/magisters_terrace/magisters_terrace.cpp
index cd96acd80a8..4baaefd7504 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/magisters_terrace/magisters_terrace.cpp
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/magisters_terrace/magisters_terrace.cpp
@@ -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;
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/molten_core/boss_gehennas.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/molten_core/boss_gehennas.cpp
index d33e9a92ba3..7a1810c6b60 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/molten_core/boss_gehennas.cpp
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/molten_core/boss_gehennas.cpp
@@ -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)
{
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/scarlet_monastery/boss_herod.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/scarlet_monastery/boss_herod.cpp
index ecbd3695045..f810ded603b 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/scarlet_monastery/boss_herod.cpp
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/scarlet_monastery/boss_herod.cpp
@@ -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)
{
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/stratholme/stratholme.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/stratholme/stratholme.cpp
index 4f8d19a305e..1d8db17d501 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/stratholme/stratholme.cpp
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/stratholme/stratholme.cpp
@@ -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)
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/zulaman/zulaman.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/zulaman/zulaman.cpp
index ff475597b88..83237e13d54 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/zulaman/zulaman.cpp
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/zulaman/zulaman.cpp
@@ -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()
{
diff --git a/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/boss_jedoga_shadowseeker.cpp b/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/boss_jedoga_shadowseeker.cpp
index a239c961bfa..b543f9c5c19 100644
--- a/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/boss_jedoga_shadowseeker.cpp
+++ b/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/boss_jedoga_shadowseeker.cpp
@@ -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
-
-//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
-
-struct TRINITY_DLL_DECL boss_jedogaAI : public ScriptedAI
+#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
+
+#define SPELL_SPHERE_VISUAL 56075
+#define SPELL_GIFT_OF_THE_HERALD 56219
+
+#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] =
+{
+ {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_jedogaAI(Creature *c) : ScriptedAI(c) {}
+ 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();
}
+};
+
+// ------------------------------------------------------------------------------------------------------------
+// Jedogas Aufseher - Entry: 30181
+// ------------------------------------------------------------------------------------------------------------
+#define SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_1 60342
+#define SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_2 56312
- void JustDied(Unit* killer)
+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_jedoga_shadowseekerAI (pCreature);
+}
+
+CreatureAI* GetAI_mob_jedoga_initiand(Creature* pCreature)
{
- return new boss_jedogaAI (pCreature);
+ return new mob_jedoga_initiandAI (pCreature);
}
-void AddSC_boss_jedoga()
+CreatureAI* GetAI_npc_jedogas_aufseher_trigger(Creature* pCreature)
{
- Script *newscript;
+ return new npc_jedogas_aufseher_triggerAI (pCreature);
+}
+
+void AddSC_boss_jedoga_shadowseeker()
+{
+ Script* newscript;
+
+ newscript = new Script;
+ 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 = "boss_jedoga";
- newscript->GetAI = &GetAI_boss_jedoga;
+ newscript->Name = "npc_jedogas_aufseher_trigger";
+ newscript->GetAI = &GetAI_npc_jedogas_aufseher_trigger;
newscript->RegisterSelf();
}
diff --git a/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/def_ahnkahet.h b/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/def_ahnkahet.h
index 9c17171d019..e6d3bd387ae 100644
--- a/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/def_ahnkahet.h
+++ b/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/def_ahnkahet.h
@@ -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
diff --git a/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/instance_ahnkahet.cpp b/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/instance_ahnkahet.cpp
index f682368c4f8..247dc765ccd 100644
--- a/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/instance_ahnkahet.cpp
+++ b/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/instance_ahnkahet.cpp
@@ -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;
-
- for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
- m_auiEncounter[i] = NOT_STARTED;
+ 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;
+
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;
- }
-
+ 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)
diff --git a/src/bindings/scripts/scripts/northrend/azjol_nerub/azjol_nerub/boss_anubarak.cpp b/src/bindings/scripts/scripts/northrend/azjol_nerub/azjol_nerub/boss_anubarak.cpp
index 1137abeda3a..cab79fc3bea 100644
--- a/src/bindings/scripts/scripts/northrend/azjol_nerub/azjol_nerub/boss_anubarak.cpp
+++ b/src/bindings/scripts/scripts/northrend/azjol_nerub/azjol_nerub/boss_anubarak.cpp
@@ -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();
}
diff --git a/src/bindings/scripts/scripts/northrend/obsidian_sanctum/boss_sartharion.cpp b/src/bindings/scripts/scripts/northrend/obsidian_sanctum/boss_sartharion.cpp
index d107a63b653..b791b05ddbc 100644
--- a/src/bindings/scripts/scripts/northrend/obsidian_sanctum/boss_sartharion.cpp
+++ b/src/bindings/scripts/scripts/northrend/obsidian_sanctum/boss_sartharion.cpp
@@ -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;
diff --git a/src/bindings/scripts/scripts/northrend/utgarde_keep/utgarde_pinnacle/boss_palehoof.cpp b/src/bindings/scripts/scripts/northrend/utgarde_keep/utgarde_pinnacle/boss_palehoof.cpp
index 19047460303..e16c0b940ad 100644
--- a/src/bindings/scripts/scripts/northrend/utgarde_keep/utgarde_pinnacle/boss_palehoof.cpp
+++ b/src/bindings/scripts/scripts/northrend/utgarde_keep/utgarde_pinnacle/boss_palehoof.cpp
@@ -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();
diff --git a/src/bindings/scripts/scripts/world/npcs_special.cpp b/src/bindings/scripts/scripts/world/npcs_special.cpp
index 176522e3bbd..5ca874c09d3 100644
--- a/src/bindings/scripts/scripts/world/npcs_special.cpp
+++ b/src/bindings/scripts/scripts/world/npcs_special.cpp
@@ -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()
{
diff --git a/src/bindings/scripts/system/ScriptLoader.cpp b/src/bindings/scripts/system/ScriptLoader.cpp
index 5d026318a9b..dde39ee426f 100644
--- a/src/bindings/scripts/system/ScriptLoader.cpp
+++ b/src/bindings/scripts/system/ScriptLoader.cpp
@@ -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