Compare commits

...

17 Commits

Author SHA1 Message Date
郑佩茹
050b195fa1 Fix Frost Armor acquire method 2022-10-24 16:17:53 -06:00
郑佩茹
a45ca1e3e1 Fix Frost Armor 2022-10-24 15:44:01 -06:00
郑佩茹
d8c71eec3e Include modified mana costs in optional files 2022-10-24 13:02:33 -06:00
郑佩茹
adfbfc981c Only apply Death Knight starting progression to Death Knights 2022-10-08 10:31:00 -06:00
郑佩茹
10cc05ae1b WotLK pre-3.2 gems fix 2022-10-07 14:10:39 -06:00
郑佩茹
f8a4ff57a3 WotLK Vendor progression fixes 2022-10-07 14:07:59 -06:00
郑佩茹
4fb1a9e498 Fix bool written as boolean 2022-10-07 12:05:06 -06:00
郑佩茹
4583cf8caa Do not instantiate unused AI - will uncomment when actually used 2022-10-02 11:29:04 -06:00
郑佩茹
7d588f7b66 Restore missing Blood Elf warlock imp quest 2022-10-02 10:58:25 -06:00
郑佩茹
7ec3c0d52f Require Molten Core before Blackwing Lair 2022-09-30 17:29:55 -06:00
郑佩茹
8b83f8d73c SQL formatting fix 2022-09-30 17:28:30 -06:00
郑佩茹
a1793960a0 Fix typo in previous commit 2022-09-30 17:27:44 -06:00
郑佩茹
682964b89b Fix typo in previous commit 2022-09-30 17:27:26 -06:00
郑佩茹
d701e758d0 More WotLK progression improvements 2022-09-30 17:26:46 -06:00
郑佩茹
2fc3717cdf Make disabled quest markers the default option 2022-09-30 16:05:20 -06:00
郑佩茹
0fd19ea840 WotLK Daily Heroic progression awareness 2022-09-29 17:44:56 -06:00
郑佩茹
a1db49f672 Restore Archmage Timear heroic quests (credit tkn963) 2022-09-29 17:30:07 -06:00
11 changed files with 399 additions and 10 deletions

Binary file not shown.

View File

@@ -15,6 +15,13 @@ UPDATE `creature` SET `phaseMask` = 1 WHERE `guid` = 56932;
UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_wotlk' WHERE `entry` IN (28602, 29611, 34084);
UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_wotlk_ulduar' WHERE `entry` IN (34252);
UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_wotlk_totc' WHERE `entry` IN (35498, 35577, 35496, 36208, 35500, 35497, 34244, 28701);
# TODO: Harold Winston (32172) has rings from all patches, so he needs special phasing applied - for now make him require ICC progression
UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_wotlk_icc' WHERE `entry` IN (37776, 40160, 37780, 32172);
UPDATE `gameobject_template` SET `ScriptName` = 'gobject_ipp_tbc' WHERE `entry` IN (195141);
-- Drop source for 2.3 Jewelcrafting Recipe
@@ -51,4 +58,4 @@ UPDATE `gameobject` SET `phaseMask` = @IPPPHASE WHERE `guid` IN (58070, 58071, 5
58723, 58728, 58730, 58733, 58735, 58741, 58743, 58744, 58747, 58748, 58750, 58756, 58768, 58785, 58825, 58831, 58909, 58939, 58941, 58979, 58986, 58989, 59007, 59018, 59026,
59035, 59048, 59088, 59097, 59100, 59108, 59111, 59118, 59136, 59168, 59197, 59219, 59223, 59258, 59263, 59285, 59286, 59298, 59310, 59319, 59337, 59390, 59391, 59392, 59394,
59396, 59397, 59398, 59399, 59401, 59402, 59403, 59404, 59406, 59448, 59451, 59452, 59546, 59561, 59593, 59610, 59619, 59626, 59737, 59741, 59746, 59752, 59758, 59770, 59788,
67916, 100498, 150394, 150395, 150396, 150397, 150398, 150399, 150400, 150401, 150402, 150403, 150404, 151783, 151784, 151785, 151786, 151787, 151788, 151789)
67916, 100498, 150394, 150395, 150396, 150397, 150398, 150399, 150400, 150401, 150402, 150403, 150404, 151783, 151784, 151785, 151786, 151787, 151788, 151789);

View File

@@ -1,7 +1,9 @@
/* These commands will remove quest markers so that player need to read quest description and think about it. These markers were added in late WotLK. */
/* This is all commented out by default because there are many players who will not like this change! Uncomment and run this file to remove the quest markers. */
/* These commands will remove quest markers from the map so that player need to read quest description. These markers were added in late WotLK. */
/* This is the optional file with the most differing opinions from players on whether to enable or disable - older versions of the module had it disabled
by default. Because the opinion is so mixed, I have changed it to be enabled by default, as this is the most accurate to pre-3.2 WoW and the quests
were designed to be played without markers. But please feel free to comment out or delete this file if you prefer to have them! */
# DELETE FROM `gameobject_questitem`;
# DELETE FROM `quest_poi`;
# DELETE FROM `quest_poi_points`;
# DELETE FROM `creature_questitem`;
DELETE FROM `gameobject_questitem` WHERE `GameObjectEntry` BETWEEN 32 AND 201937;
DELETE FROM `quest_poi` WHERE `QuestID` BETWEEN 1 AND 25495;
DELETE FROM `quest_poi_points` WHERE `QuestID` BETWEEN 1 AND 25495;
DELETE FROM `creature_questitem` WHERE `CreatureEntry` BETWEEN 3 AND 39819;

View File

@@ -0,0 +1,80 @@
UPDATE `creature_template` SET `ScriptName`='npc_archmage_timear' WHERE `entry`=31439;
DELETE FROM `creature_questender` WHERE `id`=31439 AND `quest` IN (13245, 13246, 13247, 13248, 13249, 13250, 13251, 13252, 13253, 13254, 13255, 13256, 14199);
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (31439, 13245);
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (31439, 13246);
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (31439, 13247);
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (31439, 13248);
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (31439, 13249);
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (31439, 13250);
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (31439, 13251);
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (31439, 13252);
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (31439, 13253);
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (31439, 13254);
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (31439, 13255);
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (31439, 13256);
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (31439, 14199);
DELETE FROM `creature_queststarter` WHERE `id`=31439 AND `quest` IN (13245, 13246, 13247, 13248, 13249, 13250, 13251, 13252, 13253, 13254, 13255, 13256, 14199);
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (31439, 13245);
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (31439, 13246);
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (31439, 13247);
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (31439, 13248);
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (31439, 13249);
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (31439, 13250);
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (31439, 13251);
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (31439, 13252);
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (31439, 13253);
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (31439, 13254);
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (31439, 13255);
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (31439, 13256);
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (31439, 14199);
UPDATE `quest_template` SET `Flags`=4232 WHERE `ID` IN (13245, 13246, 13247, 13248, 13249, 13250, 13251, 13252, 13253, 13254, 13255, 13256, 14199);
UPDATE `quest_template` SET `LogDescription`='Archmage Timear in Dalaran wants you to return with the Axe of the Plunderer.$B$BThis quest may only be completed on Heroic difficulty.', `QuestCompletionLog`='Return to Archmage Timear at Forlorn Woods in Crystalsong Forest.' WHERE `ID`=13245;
UPDATE `quest_template` SET `LogDescription`='Archmage Timear in Dalaran wants you to return with Keristrasza\'s Broken Heart.$B$BThis quest may only be completed on Heroic difficulty.', `QuestCompletionLog`='Return to Archmage Timear at Forlorn Woods in Crystalsong Forest.' WHERE `ID`=13246;
UPDATE `quest_template` SET `LogDescription`='Archmage Timear in Dalaran wants you to return with a Ley Line Tuner.$B$BThis quest may only be completed on Heroic difficulty.', `QuestCompletionLog`='Return to Archmage Timear at Forlorn Woods in Crystalsong Forest.' WHERE `ID`=13247;
UPDATE `quest_template` SET `LogDescription`='Archmage Timear in Dalaran wants you to return with the Locket of the Deceased Queen.$B$BThis quest may only be completed on Heroic difficulty.', `QuestCompletionLog`='Return to Archmage Timear at Forlorn Woods in Crystalsong Forest.' WHERE `ID`=13248;
UPDATE `quest_template` SET `LogDescription`='Archmage Timear in Dalaran wants you to return with the Prophet\'s Enchanted Tiki.$B$BThis quest may only be completed on Heroic difficulty.', `QuestCompletionLog`='Return to Archmage Timear at Forlorn Woods in Crystalsong Forest.' WHERE `ID`=13249;
UPDATE `quest_template` SET `LogDescription`='Archmage Timear in Dalaran wants you to return with the Mojo Remnant of Akali.$B$BThis quest may only be completed on Heroic difficulty.', `QuestCompletionLog`='Return to Archmage Timear at Forlorn Woods in Crystalsong Forest.' WHERE `ID`=13250;
UPDATE `quest_template` SET `LogDescription`='Archmage Timear in Dalaran wants you to return with the Artifact from the Nathrezim Homeworld.$B$BThis quest may only be completed on Heroic difficulty.', `QuestCompletionLog`='Return to Archmage Timear at Forlorn Woods in Crystalsong Forest.' WHERE `ID`=13251;
UPDATE `quest_template` SET `LogDescription`='Archmage Timear in Dalaran wants you to return with the Curse of Flesh Disc.$B$BThis quest may only be completed on Heroic difficulty.', `QuestCompletionLog`='Return to Archmage Timear at Forlorn Woods in Crystalsong Forest.' WHERE `ID`=13252;
UPDATE `quest_template` SET `LogDescription`='Archmage Timear in Dalaran wants you to return with the Celestial Ruby Ring.$B$BThis quest may only be completed on Heroic difficulty.', `QuestCompletionLog`='Return to Archmage Timear at Forlorn Woods in Crystalsong Forest.' WHERE `ID`=13253;
UPDATE `quest_template` SET `LogDescription`='Archmage Timear in Dalaran wants you to return with the Idle Crown of Anub\'arak.$B$BThis quest may only be completed on Heroic difficulty.', `QuestCompletionLog`='Return to Archmage Timear at Forlorn Woods in Crystalsong Forest.' WHERE `ID`=13254;
UPDATE `quest_template` SET `LogDescription`='Archmage Timear in Dalaran wants you to return with the Faceless One\'s Withered Brain.$B$BThis quest may only be completed on Heroic difficulty.', `QuestCompletionLog`='Return to Archmage Timear at Forlorn Woods in Crystalsong Forest.' WHERE `ID`=13255;
UPDATE `quest_template` SET `LogDescription`='Archmage Timear in Dalaran wants you to return with the Head of Cyanigosa.$B$BThis quest may only be completed on Heroic difficulty.', `QuestCompletionLog`='Return to Archmage Timear at Forlorn Woods in Crystalsong Forest.' WHERE `ID`=13256;
UPDATE `quest_template` SET `LogDescription`='Archmage Timear in Dalaran wants you to return with a Fragment of the Black Knight\'s Soul.$B$BThis quest may only be completed on Heroic difficulty.', `QuestDescription`='My counterpart, Archmage Lan\'dalock, has asked me to warn you of something dire. Soon, you will be participating in the Trial of the Champions at the Argent Coliseum in Icecrown. You must beware of interference from one known only as the Black Knight.$B$BBring me a fragment of his soul that the Kirin Tor will know he is dealt with. I am told that failing to do so will be your own undoing.', `QuestCompletionLog`='Return to Archmage Timear at Forlorn Woods in Crystalsong Forest.' WHERE `ID`=14199;
UPDATE `quest_offer_reward` SET `RewardText`='<Archmage Timear breathes a sigh of relief.>$b$bTo be honest, I feared the worst had befallen you. It\'s difficult to stand idly by while others, such as yourself, deal with the matters of life and death which confront our world seemingly on a daily basis.$b$bNow what are we going to do with that gigantic ring?' WHERE `ID`=13253;
UPDATE `quest_offer_reward` SET `RewardText`='What horrors you must have faced while traversing the Upper City.$b$b<Timear glances down at the tarnished crown clutched in your fist.>$b$bPerhaps we should put that aside for their new king whenever the nerubians decide to coronate one?' WHERE `ID`=13254;
UPDATE `quest_request_items` SET `CompletionText`='Did the Black Knight appear unexpectedly as Lan\'dalock foresaw?' WHERE `ID`=14199;
UPDATE `quest_template_addon` SET `ExclusiveGroup`=13245 WHERE `ID`=14199;
DELETE FROM `pool_template` WHERE `entry`=90000;
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES (90000, 1, 'Heroic Dungeon Dailies');
DELETE FROM `pool_quest` WHERE `pool_entry`=90000;
INSERT INTO `pool_quest` (`entry`, `pool_entry`, `description`) VALUES (13245, 90000, 'Proof of Demise: Ingvar the Plunderer');
INSERT INTO `pool_quest` (`entry`, `pool_entry`, `description`) VALUES (13246, 90000, 'Proof of Demise: Keristrasza');
INSERT INTO `pool_quest` (`entry`, `pool_entry`, `description`) VALUES (13247, 90000, 'Proof of Demise: Ley-Guardian Eregos');
INSERT INTO `pool_quest` (`entry`, `pool_entry`, `description`) VALUES (13248, 90000, 'Proof of Demise: King Ymiron');
INSERT INTO `pool_quest` (`entry`, `pool_entry`, `description`) VALUES (13249, 90000, 'Proof of Demise: The Prophet Tharon\'ja');
INSERT INTO `pool_quest` (`entry`, `pool_entry`, `description`) VALUES (13250, 90000, 'Proof of Demise: Gal\'darah');
INSERT INTO `pool_quest` (`entry`, `pool_entry`, `description`) VALUES (13251, 90000, 'Proof of Demise: Mal\'Ganis');
INSERT INTO `pool_quest` (`entry`, `pool_entry`, `description`) VALUES (13252, 90000, 'Proof of Demise: Sjonnir The Ironshaper');
INSERT INTO `pool_quest` (`entry`, `pool_entry`, `description`) VALUES (13253, 90000, 'Proof of Demise: Loken');
INSERT INTO `pool_quest` (`entry`, `pool_entry`, `description`) VALUES (13254, 90000, 'Proof of Demise: Anub\'arak');
INSERT INTO `pool_quest` (`entry`, `pool_entry`, `description`) VALUES (13255, 90000, 'Proof of Demise: Herald Volazj');
INSERT INTO `pool_quest` (`entry`, `pool_entry`, `description`) VALUES (13256, 90000, 'Proof of Demise: Cyanigosa');
INSERT INTO `pool_quest` (`entry`, `pool_entry`, `description`) VALUES (14199, 90000, 'Proof of Demise: The Black Knight');
DELETE FROM `creature_template_addon` WHERE `entry`=31618;
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES (31618, 0, 0, 50331648, 0, 0, 0, '');
DELETE FROM `creature_template_addon` WHERE `entry`=31629;
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES (31629, 0, 0, 50331648, 0, 0, 0, '');
UPDATE `quest_template` SET `RewardItem1` = 40752 WHERE id IN (13245, 13246, 13247, 13248, 13249, 13250, 13251, 13252, 13253, 13254, 13255, 13256, 14199);

View File

@@ -0,0 +1,7 @@
-- Restore vendors to use pre-3.2 gems
UPDATE `npc_vendor` SET `item`=36918 WHERE `item`=36919;
UPDATE `npc_vendor` SET `item`=36921 WHERE `item`=36922;
UPDATE `npc_vendor` SET `item`=36924 WHERE `item`=36925;
UPDATE `npc_vendor` SET `item`=36927 WHERE `item`=36928;
UPDATE `npc_vendor` SET `item`=36930 WHERE `item`=36931;
UPDATE `npc_vendor` SET `item`=36933 WHERE `item`=36934;

View File

@@ -0,0 +1,7 @@
-- Windows to the Source (Warlock)
DELETE FROM `creature_questender` WHERE `id`=15283 AND `quest`=8344;
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (15283, 8344);
-- Windows to the Source (Warlock)
DELETE FROM `creature_queststarter` WHERE `id`=15283 AND `quest`=8344;
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (15283, 8344);

View File

@@ -289,7 +289,7 @@ public:
void AddSC_mod_individual_progression_awareness()
{
new npc_ipp_aq();
new npc_ipp_naxx40();
// new npc_ipp_naxx40(); // Not used yet
new npc_ipp_tbc();
new npc_ipp_tbc_t4();
new npc_ipp_tbc_pre_t4();

View File

@@ -7,7 +7,7 @@ public:
void OnLogin(Player* player) override
{
if (sIndividualProgression->deathKnightStartingProgression && !sIndividualProgression->hasPassedProgression(player, static_cast<ProgressionState>(sIndividualProgression->deathKnightStartingProgression)))
if (player->getClass() == CLASS_DEATH_KNIGHT && sIndividualProgression->deathKnightStartingProgression && !sIndividualProgression->hasPassedProgression(player, static_cast<ProgressionState>(sIndividualProgression->deathKnightStartingProgression)))
{
sIndividualProgression->UpdateProgressionState(player, static_cast<ProgressionState>(sIndividualProgression->deathKnightStartingProgression));
}
@@ -148,6 +148,10 @@ public:
{
return true;
}
if (mapid == MAP_BLACKWING_LAIR && !sIndividualProgression->hasPassedProgression(player, PROGRESSION_MOLTEN_CORE))
{
return false;
}
if (mapid == MAP_ZUL_GURUB && !sIndividualProgression->hasPassedProgression(player, PROGRESSION_BLACKWING_LAIR))
{
return false;

View File

@@ -37,6 +37,7 @@ void AddSC_ipp_spell_scripts();
void AddSC_individualProgression_commandscript();
void AddSC_mod_individual_progression_awareness();
void AddSC_mod_individual_progression_player();
void AddSC_npc_archmage_timear();
void Addmod_individual_progressionScripts()
@@ -75,4 +76,5 @@ void Addmod_individual_progressionScripts()
AddSC_individualProgression_commandscript();
AddSC_mod_individual_progression_awareness();
AddSC_mod_individual_progression_player();
AddSC_npc_archmage_timear();
}

View File

@@ -89,7 +89,7 @@ enum Events
class boss_sapphiron_40 : public CreatureScript
{
private:
static boolean isNaxx40Sapp(uint32 entry)
static bool isNaxx40Sapp(uint32 entry)
{
return (entry == NPC_SAPPHIRON_40);
}

View File

@@ -0,0 +1,280 @@
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
#include "IndividualProgression.h"
enum ArchmageTimearQuests
{
QUEST_PROOF_OF_DEMISE_INGVAR_THE_PLUNDERER = 13245,
QUEST_PROOF_OF_DEMISE_KERISTRASZA = 13246,
QUEST_PROOF_OF_DEMISE_LEY_GUARDIAN_EREGOS = 13247,
QUEST_PROOF_OF_DEMISE_KING_YMIRON = 13248,
QUEST_PROOF_OF_DEMISE_THE_PROPHET_THARON_JA = 13249,
QUEST_PROOF_OF_DEMISE_GAL_DARAH = 13250,
QUEST_PROOF_OF_DEMISE_MAL_GANIS = 13251,
QUEST_PROOF_OF_DEMISE_SJONNIR_THE_IRONSHAPER = 13252,
QUEST_PROOF_OF_DEMISE_LOKEN = 13253,
QUEST_PROOF_OF_DEMISE_ANUB_ARAK = 13254,
QUEST_PROOF_OF_DEMISE_HERALD_VOLAZJ = 13255,
QUEST_PROOF_OF_DEMISE_CYANIGOSA = 13256,
QUEST_PROOF_OF_DEMISE_THE_BLACK_KNIGHT = 14199
};
enum ArchmageTimearImages
{
NPC_INGVAR_THE_PLUNDERER_IMAGE = 31584,
NPC_KERISTRASZA_IMAGE = 31618,
NPC_LEY_GUARDIAN_EREGOS_IMAGE = 31619,
NPC_KING_YMIRON_IMAGE = 31620,
NPC_THE_PROPHET_THARON_JA_IMAGE = 31621,
NPC_GAL_DARAH_IMAGE = 31622,
NPC_MAL_GANIS_IMAGE = 31623,
NPC_SJONNIR_THE_IRONSHAPER_IMAGE = 31624,
NPC_LOKEN_IMAGE = 31625,
NPC_ANUB_ARAK_IMAGE = 31626,
NPC_HERALD_VOLAZJ_IMAGE = 31627,
NPC_CYANIGOSA_IMAGE = 31629,
NPC_THE_BLACK_KNIGHT_IMAGE = 35461
};
class npc_archmage_timear : public CreatureScript
{
public:
npc_archmage_timear() : CreatureScript("npc_archmage_timear")
{
}
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_archmage_timearAI(creature);
}
struct npc_archmage_timearAI : public ScriptedAI
{
npc_archmage_timearAI(Creature* creature) : ScriptedAI(creature)
{
_switchImageTimer = MINUTE * IN_MILLISECONDS;
_summonGUID.Clear();
}
uint32 GetImageEntry(uint32 QuestId)
{
switch (QuestId)
{
case QUEST_PROOF_OF_DEMISE_INGVAR_THE_PLUNDERER:
return NPC_INGVAR_THE_PLUNDERER_IMAGE;
case QUEST_PROOF_OF_DEMISE_KERISTRASZA:
return NPC_KERISTRASZA_IMAGE;
case QUEST_PROOF_OF_DEMISE_LEY_GUARDIAN_EREGOS:
return NPC_LEY_GUARDIAN_EREGOS_IMAGE;
case QUEST_PROOF_OF_DEMISE_KING_YMIRON:
return NPC_KING_YMIRON_IMAGE;
case QUEST_PROOF_OF_DEMISE_THE_PROPHET_THARON_JA:
return NPC_THE_PROPHET_THARON_JA_IMAGE;
case QUEST_PROOF_OF_DEMISE_GAL_DARAH:
return NPC_GAL_DARAH_IMAGE;
case QUEST_PROOF_OF_DEMISE_MAL_GANIS:
return NPC_MAL_GANIS_IMAGE;
case QUEST_PROOF_OF_DEMISE_SJONNIR_THE_IRONSHAPER:
return NPC_SJONNIR_THE_IRONSHAPER_IMAGE;
case QUEST_PROOF_OF_DEMISE_LOKEN:
return NPC_LOKEN_IMAGE;
case QUEST_PROOF_OF_DEMISE_ANUB_ARAK:
return NPC_ANUB_ARAK_IMAGE;
case QUEST_PROOF_OF_DEMISE_HERALD_VOLAZJ:
return NPC_HERALD_VOLAZJ_IMAGE;
case QUEST_PROOF_OF_DEMISE_CYANIGOSA:
return NPC_CYANIGOSA_IMAGE;
default: //case QUEST_PROOF_OF_DEMISE_THE_BLACK_KNIGHT:
return NPC_THE_BLACK_KNIGHT_IMAGE;
}
}
void JustSummoned(Creature* image) override
{
if (image->GetEntry() != NPC_ANUB_ARAK_IMAGE)
image->SetUnitMovementFlags(MOVEMENTFLAG_RIGHT);
_summonGUID = image->GetGUID();
}
void UpdateAI(uint32 diff) override
{
ScriptedAI::UpdateAI(diff);
_switchImageTimer += diff;
if (_switchImageTimer > MINUTE * IN_MILLISECONDS)
{
_switchImageTimer = 0;
QuestRelationBounds objectQR = sObjectMgr->GetCreatureQuestRelationBounds(me->GetEntry());
for (QuestRelations::const_iterator i = objectQR.first; i != objectQR.second; ++i)
{
uint32 questId = i->second;
Quest const* quest = sObjectMgr->GetQuestTemplate(questId);
if (!quest || !quest->IsDaily())
continue;
uint32 newEntry = GetImageEntry(questId);
if (_summonGUID.GetEntry() != newEntry)
{
if (Creature* image = ObjectAccessor::GetCreature(*me, _summonGUID))
image->DespawnOrUnsummon();
float z = 653.622f;
if (newEntry == NPC_KERISTRASZA_IMAGE || newEntry == NPC_CYANIGOSA_IMAGE)
z += 3.0f;
me->SummonCreature(newEntry, 5770.970f, 529.512f, z, 3.985f);
}
}
}
}
private:
uint32 _switchImageTimer;
ObjectGuid _summonGUID;
};
};
enum ArchmageLandalockQuests
{
QUEST_SARTHARION_MUST_DIE = 24579,
QUEST_ANUBREKHAN_MUST_DIE = 24580,
QUEST_NOTH_THE_PLAGUEBINGER_MUST_DIE = 24581,
QUEST_INSTRUCTOR_RAZUVIOUS_MUST_DIE = 24582,
QUEST_PATCHWERK_MUST_DIE = 24583,
QUEST_MALYGOS_MUST_DIE = 24584,
QUEST_FLAME_LEVIATHAN_MUST_DIE = 24585,
QUEST_RAZORSCALE_MUST_DIE = 24586,
QUEST_IGNIS_THE_FURNACE_MASTER_MUST_DIE = 24587,
QUEST_XT_002_DECONSTRUCTOR_MUST_DIE = 24588,
QUEST_LORD_JARAXXUS_MUST_DIE = 24589,
QUEST_LORD_MARROWGAR_MUST_DIE = 24590
};
enum ArchmageLandalockImages
{
NPC_SARTHARION_IMAGE = 37849,
NPC_ANUBREKHAN_IMAGE = 37850,
NPC_NOTH_THE_PLAGUEBINGER_IMAGE = 37851,
NPC_INSTRUCTOR_RAZUVIOUS_IMAGE = 37853,
NPC_PATCHWERK_IMAGE = 37854,
NPC_MALYGOS_IMAGE = 37855,
NPC_FLAME_LEVIATHAN_IMAGE = 37856,
NPC_RAZORSCALE_IMAGE = 37858,
NPC_IGNIS_THE_FURNACE_MASTER_IMAGE = 37859,
NPC_XT_002_DECONSTRUCTOR_IMAGE = 37861,
NPC_LORD_JARAXXUS_IMAGE = 37862,
NPC_LORD_MARROWGAR_IMAGE = 37864
};
class npc_archmage_landalock_ipp : public CreatureScript
{
public:
npc_archmage_landalock_ipp() : CreatureScript("npc_archmage_landalock")
{
}
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_archmage_landalock_ippAI(creature);
}
struct npc_archmage_landalock_ippAI : public ScriptedAI
{
npc_archmage_landalock_ippAI(Creature* creature) : ScriptedAI(creature)
{
_switchImageTimer = MINUTE * IN_MILLISECONDS;
_summonGUID.Clear();
}
bool CanBeSeen(Player const* player) override
{
if (player->IsGameMaster())
{
return true;
}
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_WOTLK_TIER_3);
}
uint32 GetImageEntry(uint32 QuestId)
{
switch (QuestId)
{
case QUEST_SARTHARION_MUST_DIE:
return NPC_SARTHARION_IMAGE;
case QUEST_ANUBREKHAN_MUST_DIE:
return NPC_ANUBREKHAN_IMAGE;
case QUEST_NOTH_THE_PLAGUEBINGER_MUST_DIE:
return NPC_NOTH_THE_PLAGUEBINGER_IMAGE;
case QUEST_INSTRUCTOR_RAZUVIOUS_MUST_DIE:
return NPC_INSTRUCTOR_RAZUVIOUS_IMAGE;
case QUEST_PATCHWERK_MUST_DIE:
return NPC_PATCHWERK_IMAGE;
case QUEST_MALYGOS_MUST_DIE:
return NPC_MALYGOS_IMAGE;
case QUEST_FLAME_LEVIATHAN_MUST_DIE:
return NPC_FLAME_LEVIATHAN_IMAGE;
case QUEST_RAZORSCALE_MUST_DIE:
return NPC_RAZORSCALE_IMAGE;
case QUEST_IGNIS_THE_FURNACE_MASTER_MUST_DIE:
return NPC_IGNIS_THE_FURNACE_MASTER_IMAGE;
case QUEST_XT_002_DECONSTRUCTOR_MUST_DIE:
return NPC_XT_002_DECONSTRUCTOR_IMAGE;
case QUEST_LORD_JARAXXUS_MUST_DIE:
return NPC_LORD_JARAXXUS_IMAGE;
default: //case QUEST_LORD_MARROWGAR_MUST_DIE:
return NPC_LORD_MARROWGAR_IMAGE;
}
}
void JustSummoned(Creature* image) override
{
// xinef: screams like a baby
if (image->GetEntry() != NPC_ANUBREKHAN_IMAGE)
image->SetUnitMovementFlags(MOVEMENTFLAG_RIGHT);
_summonGUID = image->GetGUID();
}
void UpdateAI(uint32 diff) override
{
ScriptedAI::UpdateAI(diff);
_switchImageTimer += diff;
if (_switchImageTimer > MINUTE * IN_MILLISECONDS)
{
_switchImageTimer = 0;
QuestRelationBounds objectQR = sObjectMgr->GetCreatureQuestRelationBounds(me->GetEntry());
for (QuestRelations::const_iterator i = objectQR.first; i != objectQR.second; ++i)
{
uint32 questId = i->second;
Quest const* quest = sObjectMgr->GetQuestTemplate(questId);
if (!quest || !quest->IsWeekly())
continue;
uint32 newEntry = GetImageEntry(questId);
if (_summonGUID.GetEntry() != newEntry)
{
if (Creature* image = ObjectAccessor::GetCreature(*me, _summonGUID))
image->DespawnOrUnsummon();
float z = 653.622f;
if (newEntry == NPC_MALYGOS_IMAGE || newEntry == NPC_RAZORSCALE_IMAGE || newEntry == NPC_SARTHARION_IMAGE)
z += 3.0f;
me->SummonCreature(newEntry, 5703.077f, 583.9757f, z, 3.926991f);
}
}
}
}
private:
uint32 _switchImageTimer;
ObjectGuid _summonGUID;
};
};
void AddSC_npc_archmage_timear()
{
new npc_archmage_timear();
new npc_archmage_landalock_ipp();
}