*Converted text to database in shadowmoon_valley
*Rewrited npc_overlord_morghor script *Added models for flight spells --HG-- branch : trunk
This commit is contained in:
@@ -0,0 +1,41 @@
|
|||||||
|
update creature_template set scriptname='' where entry=22083;
|
||||||
|
update creature_template set scriptname='npc_overlord_morghor' where entry=23139;
|
||||||
|
update creature_template set scriptname='' where entry=23141;
|
||||||
|
DELETE FROM script_texts WHERE entry BETWEEN -1000221 and -1000206;
|
||||||
|
INSERT INTO script_texts (entry, content_default, type, emote, comment) VALUES
|
||||||
|
(-1000206, 'Come, $N. Lord Stormrage awaits.', 0, 1, 'OVERLORD_SAY_1'),
|
||||||
|
(-1000207, 'Lord Illidan will be here shortly.', 0, 1, 'OVERLORD_SAY_2'),
|
||||||
|
(-1000208, 'Lord Illidan, this is the Dragonmaw that I, and others, have told you about. He will lead us to victory!', 0, 1, 'OVERLORD_SAY_3'),
|
||||||
|
(-1000209, 'But... My lord, I do not understand. $N... He is the orc that has...', 0, 1, 'OVERLORD_SAY_4'),
|
||||||
|
(-1000210, 'It will be done, my lord.', 0, 1, 'OVERLORD_SAY_5'),
|
||||||
|
(-1000211, 'So you thought to make a fool of Mor\'ghor, eh? Before you are delivered to Lord Illidan, you will feel pain that you could not know to exist. I will take pleasure in exacting my own vengeance.', 0, 25, 'OVERLORD_SAY_6'),
|
||||||
|
(-1000212, 'Warriors of Dragonmaw, gather \'round! One among you has attained the rank of highlord! Bow your heads in reverence! Show your respect and allegiance to Highlord $N!', 1, 22, 'OVERLORD_YELL_1'),
|
||||||
|
(-1000213, 'All hail Lord Illidan!', 1, 66, 'OVERLORD_YELL_2'),
|
||||||
|
(-1000214, 'What is the meaning of this, Mor\'ghor?', 0, 1, 'LORD_ILLIDAN_SAY_1'),
|
||||||
|
(-1000215, 'SILENCE!', 0, 22, 'LORD_ILLIDAN_SAY_2'),
|
||||||
|
(-1000216, 'Blathering idiot. You incomprehensibly incompetent buffoon...', 0, 1, 'LORD_ILLIDAN_SAY_3'),
|
||||||
|
(-1000217, 'THIS is your hero?', 0, 6, 'LORD_ILLIDAN_SAY_4'),
|
||||||
|
(-1000218, 'You have been deceived, imbecile.', 0, 1, 'LORD_ILLIDAN_SAY_5'),
|
||||||
|
(-1000219, 'This... whole... operation... HAS BEEN COMPROMISED!', 0, 22, 'LORD_ILLIDAN_SAY_6'),
|
||||||
|
(-1000220, 'I expect to see this insect\'s carcass in pieces in my lair within the hour. Fail and you will suffer a fate so much worse than death.', 0, 1, 'LORD_ILLIDAN_SAY_7'),
|
||||||
|
(-1000221, 'You will not harm the boy, Mor\'ghor! Quickly, $N, climb on my back!', 0, 22, 'YARZILL_THE_MERC_SAY');
|
||||||
|
|
||||||
|
DELETE FROM script_texts WHERE entry='-1000222';
|
||||||
|
INSERT INTO script_texts (entry, content_default, type, language, emote, comment) VALUES
|
||||||
|
(-1000222, 'Thank you, mortal.', 0, 11, 1, 'SAY_JUST_EATEN');
|
||||||
|
|
||||||
|
DELETE FROM script_texts WHERE entry BETWEEN -1000234 and -1000223;
|
||||||
|
INSERT INTO script_texts (entry, content_default, emote, comment) VALUES
|
||||||
|
(-1000223, 'I sense the tortured spirits, $N. They are this way, come quickly!', 1, 'SAY_START'),
|
||||||
|
(-1000224, 'Watch out!', 0, 'SAY_AGGRO1'),
|
||||||
|
(-1000225, 'Naga attackers! Defend yourself!', 0, 'SAY_AGGRO2'),
|
||||||
|
(-1000226, 'Kill them all!', 0, 'ASSASSIN_SAY_AGGRO1'),
|
||||||
|
(-1000227, 'You will never essscape Coilssskarrr...', 0, 'ASSASSIN_SAY_AGGRO2'),
|
||||||
|
(-1000228, 'Grant me protection $N, i must break trough their foul magic!', 0, 'SAY_PROGRESS1'),
|
||||||
|
(-1000229, 'The naga of Coilskar are exceptionally cruel to their prisoners. It is a miracle that I survived inside that watery prison for as long as I did. Earthmother be praised.', 0, 'SAY_PROGRESS2'),
|
||||||
|
(-1000230, 'Now we must find the exit.', 0, 'SAY_PROGRESS3'),
|
||||||
|
(-1000231, 'Lady Vashj must answer for these atrocities. She must be brought to justice!', 0, 'SAY_PROGRESS4'),
|
||||||
|
(-1000232, 'The tumultuous nature of the great waterways of Azeroth and Draenor are a direct result of tormented water spirits.', 0, 'SAY_PROGRESS5'),
|
||||||
|
(-1000233, 'It shouldn\'t be much further, $N. The exit is just up ahead.', 0, 'SAY_PROGRESS6'),
|
||||||
|
(-1000234, 'Thank you, $N. Please return to my brethren at the Altar of Damnation, near the Hand of Gul\'dan, and tell them that Wilda is safe. May the Earthmother watch over you...', 0, 'SAY_END');
|
||||||
|
|
||||||
@@ -146,4 +146,5 @@ INSTALL(FILES
|
|||||||
933_world_scripts.sql
|
933_world_scripts.sql
|
||||||
935_world_scripts.sql
|
935_world_scripts.sql
|
||||||
940_world_scripts.sql
|
940_world_scripts.sql
|
||||||
|
945_world_scripts.sql
|
||||||
DESTINATION share/trinity/sql/updates)
|
DESTINATION share/trinity/sql/updates)
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ npc_murkblood_overseer
|
|||||||
npc_neltharaku
|
npc_neltharaku
|
||||||
npc_karynaku
|
npc_karynaku
|
||||||
npc_oronok_tornheart
|
npc_oronok_tornheart
|
||||||
|
npc_overlord_morghor
|
||||||
|
npc_yarzill_the_merc
|
||||||
npc_earthmender_wilda
|
npc_earthmender_wilda
|
||||||
EndContentData */
|
EndContentData */
|
||||||
|
|
||||||
@@ -44,7 +46,7 @@ EndContentData */
|
|||||||
#define SPELL_JUST_EATEN 38502
|
#define SPELL_JUST_EATEN 38502
|
||||||
#define SPELL_NETHER_BREATH 38467
|
#define SPELL_NETHER_BREATH 38467
|
||||||
|
|
||||||
#define SAY_JUST_EATEN "Thank you, mortal."
|
#define SAY_JUST_EATEN -1000222
|
||||||
|
|
||||||
struct TRINITY_DLL_DECL mob_mature_netherwing_drakeAI : public ScriptedAI
|
struct TRINITY_DLL_DECL mob_mature_netherwing_drakeAI : public ScriptedAI
|
||||||
{
|
{
|
||||||
@@ -120,7 +122,7 @@ struct TRINITY_DLL_DECL mob_mature_netherwing_drakeAI : public ScriptedAI
|
|||||||
IsEating = false;
|
IsEating = false;
|
||||||
DoCast(m_creature, SPELL_JUST_EATEN);
|
DoCast(m_creature, SPELL_JUST_EATEN);
|
||||||
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||||
DoSay(SAY_JUST_EATEN, LANG_DRACONIC, NULL);
|
DoScriptText(SAY_JUST_EATEN, m_creature);
|
||||||
if(PlayerGUID)
|
if(PlayerGUID)
|
||||||
{
|
{
|
||||||
Player* plr = ((Player*)Unit::GetUnit((*m_creature), PlayerGUID));
|
Player* plr = ((Player*)Unit::GetUnit((*m_creature), PlayerGUID));
|
||||||
@@ -637,402 +639,195 @@ bool QuestAccept_npc_karynaku(Player* player, Creature* creature, Quest const* q
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*####
|
/*####
|
||||||
# quest_lord_illidan_stormrage
|
# npc_overlord_morghor
|
||||||
####*/
|
####*/
|
||||||
|
|
||||||
#define QUEST_LORD_ILLIDAN_STORMRAGE 11108
|
#define QUEST_LORD_ILLIDAN_STORMRAGE 11108
|
||||||
#define LORD_ILLIDAN_STORMRAGE 22083
|
|
||||||
|
#define C_ILLIDAN 22083
|
||||||
|
#define C_YARZILL 23141
|
||||||
|
|
||||||
#define SPELL_ONE 39990 // Red Lightning Bolt
|
#define SPELL_ONE 39990 // Red Lightning Bolt
|
||||||
#define SPELL_TWO 41528 // Mark of Stormrage
|
#define SPELL_TWO 41528 // Mark of Stormrage
|
||||||
#define SPELL_THREE 40216 // Dragonaw Faction
|
#define SPELL_THREE 40216 // Dragonaw Faction
|
||||||
#define SPELL_FOUR 42016 // Dragonaw Trasform
|
#define SPELL_FOUR 42016 // Dragonaw Trasform
|
||||||
|
|
||||||
#define OVERLORD_SAY_1 "Come, $N. Lord Stormrage awaits."
|
#define OVERLORD_SAY_1 -1000206
|
||||||
#define OVERLORD_SAY_2 "Lord Illidan will be here shortly."
|
#define OVERLORD_SAY_2 -1000207
|
||||||
#define OVERLORD_SAY_3 "Lord Illidan, this is the Dragonmaw that I, and others, have told you about. He will lead us to victory!"
|
#define OVERLORD_SAY_3 -1000208
|
||||||
#define OVERLORD_SAY_4 "But... My lord, I do not understand. $N... He is the orc that has..."
|
#define OVERLORD_SAY_4 -1000209
|
||||||
#define OVERLORD_SAY_5 "It will be done, my lord."
|
#define OVERLORD_SAY_5 -1000210
|
||||||
#define OVERLORD_SAY_6 "So you thought to make a fool of Mor'ghor, eh? Before you are delivered to Lord Illidan, you will feel pain that you could not know to exist. I will take pleasure in exacting my own vengeance."
|
#define OVERLORD_SAY_6 -1000211
|
||||||
|
|
||||||
#define OVERLORD_YELL_1 "Warriors of Dragonmaw, gather 'round! One among you has attained the rank of highlord! Bow your heads in reverence! Show your respect and allegiance to Highlord $N!"
|
#define OVERLORD_YELL_1 -1000212
|
||||||
#define OVERLORD_YELL_2 "All hail Lord Illidan!"
|
#define OVERLORD_YELL_2 -1000213
|
||||||
|
|
||||||
#define LORD_ILLIDAN_SAY_1 "What is the meaning of this, Mor'ghor?"
|
#define LORD_ILLIDAN_SAY_1 -1000214
|
||||||
#define LORD_ILLIDAN_SAY_2 "SILENCE!"
|
#define LORD_ILLIDAN_SAY_2 -1000215
|
||||||
#define LORD_ILLIDAN_SAY_3 "Blathering idiot. You incomprehensibly incompetent buffoon..."
|
#define LORD_ILLIDAN_SAY_3 -1000216
|
||||||
#define LORD_ILLIDAN_SAY_4 "THIS is your hero?"
|
#define LORD_ILLIDAN_SAY_4 -1000217
|
||||||
#define LORD_ILLIDAN_SAY_5 "You have been deceived, imbecile."
|
#define LORD_ILLIDAN_SAY_5 -1000218
|
||||||
#define LORD_ILLIDAN_SAY_6 "This... whole... operation... HAS BEEN COMPROMISED!"
|
#define LORD_ILLIDAN_SAY_6 -1000219
|
||||||
#define LORD_ILLIDAN_SAY_7 "I expect to see this insect's carcass in pieces in my lair within the hour. Fail and you will suffer a fate so much worse than death."
|
#define LORD_ILLIDAN_SAY_7 -1000220
|
||||||
|
|
||||||
#define YARZILL_THE_MERC_SAY "You will not harm the boy, Mor'ghor! Quickly, $N, climb on my back!"
|
#define YARZILL_THE_MERC_SAY -1000221
|
||||||
|
|
||||||
#define GOSSIP_FLY "Lets Do! <MISSING TEXT>"
|
struct TRINITY_DLL_DECL npc_overlord_morghorAI : public ScriptedAI
|
||||||
|
|
||||||
bool GossipHello_npc_yarzill_fly(Player *player, Creature *_Creature)
|
|
||||||
{
|
{
|
||||||
if (player->GetQuestStatus(QUEST_LORD_ILLIDAN_STORMRAGE) == QUEST_STATUS_COMPLETE)
|
npc_overlord_morghorAI(Creature *c) : ScriptedAI(c) {Reset();}
|
||||||
{
|
|
||||||
player->ADD_GOSSIP_ITEM(0, GOSSIP_FLY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
|
|
||||||
player->SEND_GOSSIP_MENU(3961,_Creature->GetGUID());
|
|
||||||
return true;
|
|
||||||
}else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GossipSelect_npc_yarzill_fly(Player *player, Creature *_Creature, uint32 sender, uint32 action)
|
|
||||||
{
|
|
||||||
if (action == GOSSIP_ACTION_INFO_DEF + 1)
|
|
||||||
{
|
|
||||||
std::vector<uint32> nodes;
|
|
||||||
nodes.resize(2);
|
|
||||||
nodes[0] = 173;
|
|
||||||
nodes[1] = 174;
|
|
||||||
error_log("SD2: Player %s started quest 11108 which has disabled taxi node, need to be fixed in core", player->GetName());
|
|
||||||
//player->ActivateTaxiPathTo(nodes, 23468);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct TRINITY_DLL_DECL Yarzill_The_MercAI : public ScriptedAI
|
|
||||||
{
|
|
||||||
Yarzill_The_MercAI(Creature *c) : ScriptedAI(c) {Reset();}
|
|
||||||
|
|
||||||
void Reset(){}
|
|
||||||
|
|
||||||
void Aggro(Unit *who){}
|
|
||||||
|
|
||||||
void DoSpeach(Unit *target)
|
|
||||||
{
|
|
||||||
DoSay(YARZILL_THE_MERC_SAY,LANG_UNIVERSAL,target);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct TRINITY_DLL_DECL Lord_IllidanAI : public ScriptedAI
|
|
||||||
{
|
|
||||||
Lord_IllidanAI(Creature *c) : ScriptedAI(c) {Reset();}
|
|
||||||
|
|
||||||
void Reset(){}
|
|
||||||
|
|
||||||
void Aggro(Unit *who){}
|
|
||||||
|
|
||||||
void DoSpeach(int phase)
|
|
||||||
{
|
|
||||||
switch(phase)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
DoSay(LORD_ILLIDAN_SAY_1,LANG_UNIVERSAL,NULL);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
DoSay(LORD_ILLIDAN_SAY_2,LANG_UNIVERSAL,NULL);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
DoSay(LORD_ILLIDAN_SAY_3,LANG_UNIVERSAL,NULL);
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
DoSay(LORD_ILLIDAN_SAY_4,LANG_UNIVERSAL,NULL);
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
DoSay(LORD_ILLIDAN_SAY_5,LANG_UNIVERSAL,NULL);
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
DoSay(LORD_ILLIDAN_SAY_6,LANG_UNIVERSAL,NULL);
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
DoSay(LORD_ILLIDAN_SAY_7,LANG_UNIVERSAL,NULL);
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct TRINITY_DLL_DECL Overlord_MorghorAI : public ScriptedAI
|
|
||||||
{
|
|
||||||
Overlord_MorghorAI(Creature *c) : ScriptedAI(c)
|
|
||||||
{
|
|
||||||
Lord = NULL;
|
|
||||||
Yarzill = NULL;
|
|
||||||
Reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
Unit* m_player;
|
|
||||||
Unit* PlayerCheck;
|
|
||||||
|
|
||||||
uint32 SpeachTimer;
|
|
||||||
uint32 SpeachNum;
|
|
||||||
|
|
||||||
uint64 PlayerGUID;
|
uint64 PlayerGUID;
|
||||||
uint64 YazillGUID;
|
uint64 IllidanGUID;
|
||||||
|
|
||||||
bool DoingSpeach;
|
uint32 ConversationTimer;
|
||||||
bool Failed;
|
uint32 Step;
|
||||||
|
|
||||||
Creature* Lord;
|
bool Event;
|
||||||
Creature* Yarzill;
|
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
if (Lord)
|
|
||||||
{
|
|
||||||
Lord->SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
|
||||||
Lord->SetVisibility(VISIBILITY_OFF);
|
|
||||||
Lord->setDeathState(JUST_DIED);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Yarzill)
|
|
||||||
{
|
|
||||||
Yarzill->SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_creature->Relocate(-5085.77, 577.231, 86.6719, 2.32608);
|
|
||||||
m_creature->SetUInt32Value(UNIT_NPC_FLAGS, 2);
|
|
||||||
m_creature->SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);
|
|
||||||
m_player = NULL;
|
|
||||||
PlayerCheck = NULL;
|
|
||||||
PlayerGUID = 0;
|
PlayerGUID = 0;
|
||||||
YazillGUID = 0;
|
IllidanGUID = 0;
|
||||||
Lord = NULL;
|
|
||||||
Yarzill = NULL;
|
ConversationTimer = 0;
|
||||||
DoingSpeach = false;
|
Step = 0;
|
||||||
Failed = false;
|
|
||||||
SpeachNum = 0;
|
Event = false;
|
||||||
SpeachTimer = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BeginSpeach(Unit* target)
|
void Aggro(Unit* who){}
|
||||||
|
|
||||||
|
void StartEvent()
|
||||||
{
|
{
|
||||||
m_creature->SetUInt32Value(UNIT_NPC_FLAGS, 0);
|
m_creature->SetUInt32Value(UNIT_NPC_FLAGS, 0);
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);
|
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);
|
||||||
DoSay(OVERLORD_SAY_1,LANG_UNIVERSAL,target);
|
Unit* Illidan = m_creature->SummonCreature(C_ILLIDAN, -5107.83, 602.584, 85.2393, 4.92598, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||||
m_player = target;
|
IllidanGUID = Illidan->GetGUID();
|
||||||
PlayerCheck = NULL;
|
Illidan->SetVisibility(VISIBILITY_OFF);
|
||||||
PlayerGUID = target->GetGUID();
|
if(PlayerGUID)
|
||||||
SpeachTimer = 4200;
|
{
|
||||||
SpeachNum = 0;
|
Unit* player = Unit::GetUnit((*m_creature), PlayerGUID);
|
||||||
DoingSpeach = true;
|
DoScriptText(OVERLORD_SAY_1, m_creature, player);
|
||||||
|
}
|
||||||
|
ConversationTimer = 4200;
|
||||||
|
Step = 0;
|
||||||
|
Event = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Aggro(Unit *who){}
|
uint32 NextStep(uint32 Step)
|
||||||
|
|
||||||
void MoveInLineOfSight(Unit *who)
|
|
||||||
{
|
{
|
||||||
if (!who)
|
Unit* plr = Unit::GetUnit((*m_creature), PlayerGUID);
|
||||||
return;
|
|
||||||
|
|
||||||
if (DoingSpeach)
|
Unit* Illi = Unit::GetUnit((*m_creature), IllidanGUID);
|
||||||
|
|
||||||
|
switch(Step)
|
||||||
{
|
{
|
||||||
if (who->GetEntry() == 23141 && m_creature->IsWithinDistInMap(who, 15))
|
case 0: return 0; break;
|
||||||
|
case 1: m_creature->GetMotionMaster()->MovePoint(0, -5104.41, 595.297, 85.6838); return 9000; break;
|
||||||
|
case 2: DoScriptText(OVERLORD_YELL_1, m_creature, plr); return 4500; break;
|
||||||
|
case 3: m_creature->SetInFront(plr); return 3200; break;
|
||||||
|
case 4: DoScriptText(OVERLORD_SAY_2, m_creature, plr); return 2000; break;
|
||||||
|
case 5: Illi->SetVisibility(VISIBILITY_ON); return 350; break;
|
||||||
|
case 6:
|
||||||
|
Illi->CastSpell(Illi, SPELL_ONE, true);
|
||||||
|
Illi->SetUInt64Value(UNIT_FIELD_TARGET, m_creature->GetGUID());
|
||||||
|
m_creature->SetUInt64Value(UNIT_FIELD_TARGET, IllidanGUID);
|
||||||
|
return 2000; break;
|
||||||
|
case 7: DoScriptText(OVERLORD_YELL_2, m_creature); return 4500; break;
|
||||||
|
case 8: m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 8); return 2500; break;
|
||||||
|
case 9: DoScriptText(OVERLORD_SAY_3, m_creature); return 6500; break;
|
||||||
|
case 10: DoScriptText(LORD_ILLIDAN_SAY_1, Illi); return 5000; break;
|
||||||
|
case 11: DoScriptText(OVERLORD_SAY_4, m_creature, plr); return 6000; break;
|
||||||
|
case 12: DoScriptText(LORD_ILLIDAN_SAY_2, Illi); return 5500; break;
|
||||||
|
case 13: DoScriptText(LORD_ILLIDAN_SAY_3, Illi); return 4000; break;
|
||||||
|
case 14: Illi->SetUInt64Value(UNIT_FIELD_TARGET, PlayerGUID); return 1500; break;
|
||||||
|
case 15: DoScriptText(LORD_ILLIDAN_SAY_4, Illi); return 1500; break;
|
||||||
|
case 16:
|
||||||
|
if (plr)
|
||||||
{
|
{
|
||||||
if (!YazillGUID)
|
Illi->CastSpell(plr, SPELL_TWO, true);
|
||||||
{
|
plr->RemoveAurasDueToSpell(SPELL_THREE);
|
||||||
YazillGUID = who->GetGUID();
|
plr->RemoveAurasDueToSpell(SPELL_FOUR);
|
||||||
}
|
return 5000;
|
||||||
}
|
}else{
|
||||||
|
((Player*)plr)->FailQuest(QUEST_LORD_ILLIDAN_STORMRAGE); Step = 30; return 100;
|
||||||
|
}break;
|
||||||
|
case 17: DoScriptText(LORD_ILLIDAN_SAY_5, Illi); return 5000; break;
|
||||||
|
case 18: DoScriptText(LORD_ILLIDAN_SAY_6, Illi); return 5000; break;
|
||||||
|
case 19: DoScriptText(LORD_ILLIDAN_SAY_7, Illi); return 5000; break;
|
||||||
|
case 20:
|
||||||
|
Illi->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
|
||||||
|
Illi->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT + MOVEMENTFLAG_LEVITATING);
|
||||||
|
return 500; break;
|
||||||
|
case 21: DoScriptText(OVERLORD_SAY_5, m_creature); return 500; break;
|
||||||
|
case 22:
|
||||||
|
Illi->SetVisibility(VISIBILITY_OFF);
|
||||||
|
Illi->setDeathState(JUST_DIED);
|
||||||
|
return 1000; break;
|
||||||
|
case 23: m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0); return 2000; break;
|
||||||
|
case 24: m_creature->SetUInt64Value(UNIT_FIELD_TARGET, PlayerGUID); return 5000; break;
|
||||||
|
case 25: DoScriptText(OVERLORD_SAY_6, m_creature); return 2000; break;
|
||||||
|
case 26: ((Player*)plr)->CompleteQuest(QUEST_LORD_ILLIDAN_STORMRAGE); return 6000; break;
|
||||||
|
case 27:
|
||||||
|
{
|
||||||
|
Unit* Yarzill = FindCreature(C_YARZILL, 50);
|
||||||
|
if (Yarzill)
|
||||||
|
Yarzill->SetUInt64Value(UNIT_FIELD_TARGET, PlayerGUID);
|
||||||
|
return 500; }break;
|
||||||
|
case 28:
|
||||||
|
plr->RemoveAurasDueToSpell(SPELL_TWO);
|
||||||
|
plr->RemoveAurasDueToSpell(41519);
|
||||||
|
plr->CastSpell(plr, SPELL_THREE, true);
|
||||||
|
plr->CastSpell(plr, SPELL_FOUR, true);
|
||||||
|
return 1000; break;
|
||||||
|
case 29:
|
||||||
|
{
|
||||||
|
Unit* Yarzill = FindCreature(C_YARZILL, 50);
|
||||||
|
if(Yarzill)
|
||||||
|
DoScriptText(YARZILL_THE_MERC_SAY, Yarzill, plr);
|
||||||
|
return 5000; }break;
|
||||||
|
case 30:
|
||||||
|
{
|
||||||
|
Unit* Yarzill = FindCreature(C_YARZILL, 50);
|
||||||
|
if (Yarzill)
|
||||||
|
Yarzill->SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
||||||
|
return 5000; }break;
|
||||||
|
case 31:
|
||||||
|
{
|
||||||
|
Unit* Yarzill = FindCreature(C_YARZILL, 50);
|
||||||
|
if (Yarzill)
|
||||||
|
Yarzill->CastSpell(plr, 41540, true);
|
||||||
|
return 1000;}break;
|
||||||
|
case 32: m_creature->GetMotionMaster()->MovePoint(0, -5085.77, 577.231, 86.6719); return 5000; break;
|
||||||
|
case 33: Reset(); return 100; break;
|
||||||
|
|
||||||
|
default : return 9999999;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
//Speach
|
if(ConversationTimer < diff)
|
||||||
if (DoingSpeach)
|
|
||||||
{
|
{
|
||||||
if (SpeachTimer < diff)
|
if(Event && IllidanGUID && PlayerGUID)
|
||||||
{
|
{
|
||||||
if (YazillGUID && !Yarzill)
|
ConversationTimer = NextStep(++Step);
|
||||||
Yarzill = ((Creature*)Unit::GetUnit((*m_creature), YazillGUID));
|
}
|
||||||
|
}else ConversationTimer -= diff;
|
||||||
if (!m_creature->IsWithinDistInMap(m_player, 50) && ((Player*)m_player)->GetQuestStatus(QUEST_LORD_ILLIDAN_STORMRAGE) == QUEST_STATUS_INCOMPLETE)
|
|
||||||
{
|
|
||||||
((Player*)m_player)->FailQuest(QUEST_LORD_ILLIDAN_STORMRAGE);
|
|
||||||
SpeachNum = 30;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (SpeachNum)
|
|
||||||
{
|
|
||||||
// Overlord Movement
|
|
||||||
case 0:
|
|
||||||
m_creature->GetMotionMaster()->MovePoint(0, -5104.41, 595.297, 85.6838);
|
|
||||||
SpeachTimer = 9000; SpeachNum++; break;
|
|
||||||
// Overlord Yell 1
|
|
||||||
case 1:
|
|
||||||
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_SHOUT);
|
|
||||||
DoYell(OVERLORD_YELL_1,LANG_UNIVERSAL,m_player);
|
|
||||||
SpeachTimer = 4500; SpeachNum++; break;
|
|
||||||
// Overlord Angle
|
|
||||||
case 2:
|
|
||||||
m_creature->SetUInt64Value(UNIT_FIELD_TARGET, PlayerGUID);
|
|
||||||
SpeachTimer = 3200; SpeachNum++; break;
|
|
||||||
// Overlord Say 2
|
|
||||||
case 3:
|
|
||||||
DoSay(OVERLORD_SAY_2,LANG_UNIVERSAL,NULL);
|
|
||||||
SpeachTimer = 2000; SpeachNum++; break;
|
|
||||||
// Summon Illidan
|
|
||||||
case 4:
|
|
||||||
Lord = m_creature->SummonCreature(LORD_ILLIDAN_STORMRAGE, -5107.83, 602.584, 85.2393, 4.92598, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
|
||||||
Lord->LoadCreaturesAddon();
|
|
||||||
SpeachTimer = 350; SpeachNum++; break;
|
|
||||||
// Illidan Cast Red Bolt
|
|
||||||
case 5:
|
|
||||||
Lord->CastSpell(Lord, SPELL_ONE, true);
|
|
||||||
Lord->SetUInt64Value(UNIT_FIELD_TARGET, m_creature->GetGUID());
|
|
||||||
m_creature->SetUInt64Value(UNIT_FIELD_TARGET, Lord->GetGUID());
|
|
||||||
SpeachTimer = 2000; SpeachNum++; break;
|
|
||||||
// Overlord Yell 2
|
|
||||||
case 6:
|
|
||||||
DoYell(OVERLORD_YELL_2,LANG_UNIVERSAL,NULL);
|
|
||||||
SpeachTimer = 4500; SpeachNum++; break;
|
|
||||||
// Overlord Kneel
|
|
||||||
case 7:
|
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,8);
|
|
||||||
SpeachTimer = 2500; SpeachNum++; break;
|
|
||||||
// Overlord Say 3
|
|
||||||
case 8:
|
|
||||||
DoSay(OVERLORD_SAY_3,LANG_UNIVERSAL,NULL);
|
|
||||||
SpeachTimer = 6500; SpeachNum++; break;
|
|
||||||
// Illidan Say 1
|
|
||||||
case 9:
|
|
||||||
((Lord_IllidanAI*)Lord->AI())->DoSpeach(1);
|
|
||||||
SpeachTimer = 5000; SpeachNum++; break;
|
|
||||||
// Overlord Say 4
|
|
||||||
case 10:
|
|
||||||
DoSay(OVERLORD_SAY_4,LANG_UNIVERSAL,m_player);
|
|
||||||
SpeachTimer = 6000; SpeachNum++; break;
|
|
||||||
// Illidan Say 2
|
|
||||||
case 11:
|
|
||||||
((Lord_IllidanAI*)Lord->AI())->DoSpeach(2);
|
|
||||||
SpeachTimer = 5500; SpeachNum++; break;
|
|
||||||
// Illidan Say 3
|
|
||||||
case 12:
|
|
||||||
((Lord_IllidanAI*)Lord->AI())->DoSpeach(3);
|
|
||||||
SpeachTimer = 4000; SpeachNum++; break;
|
|
||||||
// Illidan Angle
|
|
||||||
case 13:
|
|
||||||
Lord->SetUInt64Value(UNIT_FIELD_TARGET, PlayerGUID);
|
|
||||||
SpeachTimer = 1500; SpeachNum++; break;
|
|
||||||
// Illidan Say 4
|
|
||||||
case 14:
|
|
||||||
((Lord_IllidanAI*)Lord->AI())->DoSpeach(4);
|
|
||||||
SpeachTimer = 1500; SpeachNum++; break;
|
|
||||||
// Illidan Cast
|
|
||||||
case 15:
|
|
||||||
PlayerCheck = Unit::GetUnit(*Lord, PlayerGUID);
|
|
||||||
if (PlayerCheck)
|
|
||||||
{
|
|
||||||
Lord->CastSpell(m_player, SPELL_TWO, true);
|
|
||||||
m_player->RemoveAurasDueToSpell(SPELL_THREE);
|
|
||||||
m_player->RemoveAurasDueToSpell(SPELL_FOUR);
|
|
||||||
SpeachTimer = 5000; SpeachNum++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
((Player*)m_player)->FailQuest(QUEST_LORD_ILLIDAN_STORMRAGE);
|
|
||||||
SpeachTimer = 100; SpeachNum = 30;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
// Illidan Say 5
|
|
||||||
case 16:
|
|
||||||
((Lord_IllidanAI*)Lord->AI())->DoSpeach(5);
|
|
||||||
SpeachTimer = 5000; SpeachNum++; break;
|
|
||||||
// Illidan Say 6
|
|
||||||
case 17:
|
|
||||||
((Lord_IllidanAI*)Lord->AI())->DoSpeach(6);
|
|
||||||
SpeachTimer = 5000; SpeachNum++; break;
|
|
||||||
// Illidan Say 7
|
|
||||||
case 18:
|
|
||||||
((Lord_IllidanAI*)Lord->AI())->DoSpeach(7);
|
|
||||||
SpeachTimer = 5000; SpeachNum++; break;
|
|
||||||
// Illidan Fly
|
|
||||||
case 19:
|
|
||||||
Lord->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
|
|
||||||
Lord->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT + MOVEMENTFLAG_LEVITATING);
|
|
||||||
SpeachTimer = 500; SpeachNum++; break;
|
|
||||||
// Overlord Say 5
|
|
||||||
case 20:
|
|
||||||
DoSay(OVERLORD_SAY_5,LANG_UNIVERSAL,NULL);
|
|
||||||
SpeachTimer = 500; SpeachNum++; break;
|
|
||||||
// Illidan Despawn
|
|
||||||
case 21:
|
|
||||||
Lord->SetVisibility(VISIBILITY_OFF);
|
|
||||||
Lord->setDeathState(JUST_DIED);
|
|
||||||
Lord = NULL;
|
|
||||||
SpeachTimer = 1000; SpeachNum++; break;
|
|
||||||
// Overlord Stand Up
|
|
||||||
case 22:
|
|
||||||
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);
|
|
||||||
SpeachTimer = 2000; SpeachNum++; break;
|
|
||||||
// Overlord Angle
|
|
||||||
case 23:
|
|
||||||
m_creature->SetUInt64Value(UNIT_FIELD_TARGET, PlayerGUID);
|
|
||||||
SpeachTimer = 5000; SpeachNum++; break;
|
|
||||||
// Overlord Say 6
|
|
||||||
case 24:
|
|
||||||
DoSay(OVERLORD_SAY_6,LANG_UNIVERSAL,NULL);
|
|
||||||
SpeachTimer = 2000; SpeachNum++; break;
|
|
||||||
// Complete Quest
|
|
||||||
case 25:
|
|
||||||
((Player*)m_player)->CompleteQuest(QUEST_LORD_ILLIDAN_STORMRAGE);
|
|
||||||
SpeachTimer = 6000; SpeachNum++; break;
|
|
||||||
// Goblin Angle
|
|
||||||
case 26:
|
|
||||||
if (Yarzill)
|
|
||||||
Yarzill->SetUInt64Value(UNIT_FIELD_TARGET, PlayerGUID);
|
|
||||||
SpeachTimer = 500; SpeachNum++; break;
|
|
||||||
// Cast Again Dragonaw Illusion
|
|
||||||
case 27:
|
|
||||||
m_player->RemoveAurasDueToSpell(SPELL_TWO);
|
|
||||||
m_player->RemoveAurasDueToSpell(41519);
|
|
||||||
m_player->CastSpell(m_player, SPELL_THREE, true);
|
|
||||||
m_player->CastSpell(m_player, SPELL_FOUR, true);
|
|
||||||
SpeachTimer = 1000; SpeachNum++; break;
|
|
||||||
// Goblin
|
|
||||||
case 28:
|
|
||||||
if (Yarzill)
|
|
||||||
((Yarzill_The_MercAI*)Yarzill->AI())->DoSpeach(m_player);
|
|
||||||
SpeachTimer = 5000; SpeachNum++; break;
|
|
||||||
// Goblin Off
|
|
||||||
case 29:
|
|
||||||
if (Yarzill)
|
|
||||||
Yarzill->SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
|
||||||
SpeachTimer = 5000; SpeachNum++; break;
|
|
||||||
// Overlord Go Back
|
|
||||||
case 30:
|
|
||||||
m_creature->GetMotionMaster()->MovePoint(0, -5085.77, 577.231, 86.6719);
|
|
||||||
SpeachTimer = 5000; SpeachNum++; break;
|
|
||||||
// Reset
|
|
||||||
case 31:
|
|
||||||
Reset();
|
|
||||||
break;
|
|
||||||
default: break;
|
|
||||||
}
|
|
||||||
}else SpeachTimer -= diff;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
CreatureAI* GetAI_Overlord_Morghor(Creature *_Creature)
|
CreatureAI* GetAI_npc_overlord_morghorAI(Creature *_Creature)
|
||||||
{
|
{
|
||||||
return new Overlord_MorghorAI(_Creature);
|
return new npc_overlord_morghorAI(_Creature);
|
||||||
}
|
}
|
||||||
|
|
||||||
CreatureAI* GetAI_Lord_Illidan(Creature *_Creature)
|
bool QuestAccept_npc_overlord_morghor(Player *player, Creature *_Creature, const Quest *_Quest )
|
||||||
{
|
|
||||||
return new Lord_IllidanAI(_Creature);
|
|
||||||
}
|
|
||||||
|
|
||||||
CreatureAI* GetAI_Yarzill_The_Merc(Creature *_Creature)
|
|
||||||
{
|
|
||||||
return new Yarzill_The_MercAI(_Creature);
|
|
||||||
}
|
|
||||||
bool QuestAccept_Overlord_Morghor(Player *player, Creature *_Creature, const Quest *_Quest )
|
|
||||||
{
|
{
|
||||||
if(_Quest->GetQuestId() == QUEST_LORD_ILLIDAN_STORMRAGE)
|
if(_Quest->GetQuestId() == QUEST_LORD_ILLIDAN_STORMRAGE)
|
||||||
{
|
{
|
||||||
((Overlord_MorghorAI*)_Creature->AI())->BeginSpeach((Unit*)player);
|
((npc_overlord_morghorAI*)_Creature->AI())->PlayerGUID = player->GetGUID();
|
||||||
|
((npc_overlord_morghorAI*)_Creature->AI())->StartEvent();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -1042,42 +837,44 @@ bool QuestAccept_Overlord_Morghor(Player *player, Creature *_Creature, const Que
|
|||||||
# npc_earthmender_wilda
|
# npc_earthmender_wilda
|
||||||
####*/
|
####*/
|
||||||
|
|
||||||
#define SAY_START "I sense the tortured spirits, $N. They are this way, come quickly!"
|
#define SAY_START -1000223
|
||||||
#define SAY_AGGRO1 "Watch out!"
|
#define SAY_AGGRO1 -1000224
|
||||||
#define SAY_AGGRO2 "Naga attackers! Defend yourself!"
|
#define SAY_AGGRO2 -1000225
|
||||||
#define ASSASSIN_SAY_AGGRO1 "Kill them all!"
|
#define ASSASSIN_SAY_AGGRO1 -1000226
|
||||||
#define ASSASSIN_SAY_AGGRO2 "You will never essscape Coilssskarrr..."
|
#define ASSASSIN_SAY_AGGRO2 -1000227
|
||||||
#define SAY_PROGRESS1 "Grant me protection $N, i must break trough their foul magic!"
|
#define SAY_PROGRESS1 -1000228
|
||||||
#define SAY_PROGRESS2 "The naga of Coilskar are exceptionally cruel to their prisoners. It is a miracle that I survived inside that watery prison for as long as I did. Earthmother be praised."
|
#define SAY_PROGRESS2 -1000229
|
||||||
#define SAY_PROGRESS3 "Now we must find the exit."
|
#define SAY_PROGRESS3 -1000230
|
||||||
#define SAY_PROGRESS4 "Lady Vashj must answer for these atrocities. She must be brought to justice!"
|
#define SAY_PROGRESS4 -1000231
|
||||||
#define SAY_PROGRESS5 "The tumultuous nature of the great waterways of Azeroth and Draenor are a direct result of tormented water spirits."
|
#define SAY_PROGRESS5 -1000232
|
||||||
#define SAY_PROGRESS6 "It shouldn't be much further, $N. The exit is just up ahead."
|
#define SAY_PROGRESS6 -1000233
|
||||||
#define SAY_END "Thank you, $N. Please return to my brethren at the Altar of Damnation, near the Hand of Gul'dan, and tell them that Wilda is safe. May the Earthmother watch over you..."
|
#define SAY_END -1000234
|
||||||
|
|
||||||
|
#define QUEST_ESCAPE_FROM_COILSKAR_CISTERN 10451
|
||||||
#define QUEST_ESCAPE_FROM_COILSKAR_CISTERN 10451
|
#define NPC_COILSKAR_ASSASSIN 21044
|
||||||
#define NPC_COILSKAR_ASSASSIN 21044
|
|
||||||
|
|
||||||
struct TRINITY_DLL_DECL npc_earthmender_wildaAI : public npc_escortAI
|
struct TRINITY_DLL_DECL npc_earthmender_wildaAI : public npc_escortAI
|
||||||
{
|
{
|
||||||
npc_earthmender_wildaAI(Creature *c) : npc_escortAI(c) {Reset();}
|
npc_earthmender_wildaAI(Creature *c) : npc_escortAI(c) {Reset();}
|
||||||
|
|
||||||
void Aggro(Unit *who)
|
bool Completed;
|
||||||
{
|
|
||||||
Unit* player = Unit::GetUnit((*m_creature), PlayerGUID);
|
|
||||||
|
|
||||||
if(who->GetTypeId() == TYPEID_UNIT && who->GetEntry() == NPC_COILSKAR_ASSASSIN)
|
void Aggro(Unit *who)
|
||||||
DoSay(SAY_AGGRO2, LANG_UNIVERSAL, player);
|
{
|
||||||
else DoSay(SAY_AGGRO1, LANG_UNIVERSAL, player);
|
Unit* player = Unit::GetUnit((*m_creature), PlayerGUID);
|
||||||
}
|
|
||||||
|
|
||||||
void Reset()
|
if(who->GetTypeId() == TYPEID_UNIT && who->GetEntry() == NPC_COILSKAR_ASSASSIN)
|
||||||
{
|
DoScriptText(SAY_AGGRO2, m_creature, player);
|
||||||
m_creature->setFaction(1726);
|
else DoScriptText(SAY_AGGRO1, m_creature, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WaypointReached(uint32 i)
|
void Reset()
|
||||||
|
{
|
||||||
|
m_creature->setFaction(1726);
|
||||||
|
Completed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WaypointReached(uint32 i)
|
||||||
{
|
{
|
||||||
Unit* player = Unit::GetUnit((*m_creature), PlayerGUID);
|
Unit* player = Unit::GetUnit((*m_creature), PlayerGUID);
|
||||||
|
|
||||||
@@ -1086,120 +883,92 @@ struct TRINITY_DLL_DECL npc_earthmender_wildaAI : public npc_escortAI
|
|||||||
|
|
||||||
switch(i)
|
switch(i)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0: DoScriptText(SAY_START, m_creature, player); break;
|
||||||
DoSay(SAY_START, LANG_UNIVERSAL, player);
|
case 13: DoScriptText(SAY_PROGRESS1, m_creature, player);
|
||||||
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
SummonAssassin();
|
||||||
break;
|
break;
|
||||||
case 13:
|
case 14: SummonAssassin(); break;
|
||||||
DoSay(SAY_PROGRESS1, LANG_UNIVERSAL, player);
|
case 15: DoScriptText(SAY_PROGRESS3, m_creature, player); break;
|
||||||
SummonAssassin();
|
|
||||||
break;
|
|
||||||
case 14:
|
|
||||||
SummonAssassin(); break;
|
|
||||||
case 15:
|
|
||||||
DoSay(SAY_PROGRESS3, LANG_UNIVERSAL, player); break;
|
|
||||||
case 19:
|
case 19:
|
||||||
switch(rand()%3)
|
switch(rand()%3)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0: DoScriptText(SAY_PROGRESS2, m_creature, player); break;
|
||||||
DoSay(SAY_PROGRESS2, LANG_UNIVERSAL, player); break;
|
case 1: DoScriptText(SAY_PROGRESS4, m_creature, player); break;
|
||||||
case 1:
|
case 2: DoScriptText(SAY_PROGRESS5, m_creature, player); break;
|
||||||
DoSay(SAY_PROGRESS4, LANG_UNIVERSAL, player); break;
|
}
|
||||||
case 2:
|
break;
|
||||||
DoSay(SAY_PROGRESS5, LANG_UNIVERSAL, player); break;
|
case 20: SummonAssassin(); break;
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 20:
|
|
||||||
SummonAssassin(); break;
|
|
||||||
case 26:
|
case 26:
|
||||||
switch(rand()%3)
|
switch(rand()%3)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0: DoScriptText(SAY_PROGRESS2, m_creature, player); break;
|
||||||
DoSay(SAY_PROGRESS2, LANG_UNIVERSAL, player); break;
|
case 1: DoScriptText(SAY_PROGRESS4, m_creature, player); break;
|
||||||
case 1:
|
case 2: DoScriptText(SAY_PROGRESS5, m_creature, player); break;
|
||||||
DoSay(SAY_PROGRESS4, LANG_UNIVERSAL, player); break;
|
}
|
||||||
case 2:
|
break;
|
||||||
DoSay(SAY_PROGRESS5, LANG_UNIVERSAL, player); break;
|
case 27: SummonAssassin(); break;
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 27:
|
|
||||||
SummonAssassin(); break;
|
|
||||||
case 33:
|
case 33:
|
||||||
switch(rand()%3)
|
switch(rand()%3)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0: DoScriptText(SAY_PROGRESS2, m_creature, player); break;
|
||||||
DoSay(SAY_PROGRESS2, LANG_UNIVERSAL, player); break;
|
case 1: DoScriptText(SAY_PROGRESS4, m_creature, player); break;
|
||||||
case 1:
|
case 2: DoScriptText(SAY_PROGRESS5, m_creature, player); break;
|
||||||
DoSay(SAY_PROGRESS4, LANG_UNIVERSAL, player); break;
|
}
|
||||||
case 2:
|
break;
|
||||||
DoSay(SAY_PROGRESS5, LANG_UNIVERSAL, player); break;
|
case 34: SummonAssassin(); break;
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 34:
|
|
||||||
SummonAssassin(); break;
|
|
||||||
case 37:
|
case 37:
|
||||||
switch(rand()%3)
|
switch(rand()%3)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0: DoScriptText(SAY_PROGRESS2, m_creature, player); break;
|
||||||
DoSay(SAY_PROGRESS2, LANG_UNIVERSAL, player); break;
|
case 1: DoScriptText(SAY_PROGRESS4, m_creature, player); break;
|
||||||
case 1:
|
case 2: DoScriptText(SAY_PROGRESS5, m_creature, player); break;
|
||||||
DoSay(SAY_PROGRESS4, LANG_UNIVERSAL, player); break;
|
}
|
||||||
case 2:
|
break;
|
||||||
DoSay(SAY_PROGRESS5, LANG_UNIVERSAL, player); break;
|
case 38: SummonAssassin(); break;
|
||||||
}
|
case 39: DoScriptText(SAY_PROGRESS6, m_creature, player); break;
|
||||||
break;
|
|
||||||
case 38:
|
|
||||||
SummonAssassin(); break;
|
|
||||||
case 39:
|
|
||||||
DoSay(SAY_PROGRESS6, LANG_UNIVERSAL, player); break;
|
|
||||||
case 43:
|
case 43:
|
||||||
switch(rand()%3)
|
switch(rand()%3)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0: DoScriptText(SAY_PROGRESS2, m_creature, player); break;
|
||||||
DoSay(SAY_PROGRESS2, LANG_UNIVERSAL, player); break;
|
case 1: DoScriptText(SAY_PROGRESS4, m_creature, player); break;
|
||||||
case 1:
|
case 2: DoScriptText(SAY_PROGRESS5, m_creature, player); break;
|
||||||
DoSay(SAY_PROGRESS4, LANG_UNIVERSAL, player); break;
|
}
|
||||||
case 2:
|
break;
|
||||||
DoSay(SAY_PROGRESS5, LANG_UNIVERSAL, player); break;
|
case 44: SummonAssassin(); break;
|
||||||
}
|
case 50:
|
||||||
break;
|
DoScriptText(SAY_END, m_creature, player);
|
||||||
case 44:
|
((Player*)player)->GroupEventHappens(QUEST_ESCAPE_FROM_COILSKAR_CISTERN, m_creature);
|
||||||
SummonAssassin(); break;
|
Completed = true;
|
||||||
case 50:
|
break;
|
||||||
DoSay(SAY_END, LANG_UNIVERSAL, player);
|
|
||||||
((Player*)player)->GroupEventHappens(QUEST_ESCAPE_FROM_COILSKAR_CISTERN, m_creature);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SummonAssassin()
|
void SummonAssassin()
|
||||||
{
|
{
|
||||||
Unit* player = Unit::GetUnit((*m_creature), PlayerGUID);
|
Unit* player = Unit::GetUnit((*m_creature), PlayerGUID);
|
||||||
|
|
||||||
Creature* CoilskarAssassin = m_creature->SummonCreature(NPC_COILSKAR_ASSASSIN, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), m_creature->GetOrientation(), TEMPSUMMON_DEAD_DESPAWN, 0);
|
Unit* CoilskarAssassin = m_creature->SummonCreature(NPC_COILSKAR_ASSASSIN, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), m_creature->GetOrientation(), TEMPSUMMON_DEAD_DESPAWN, 0);
|
||||||
if( CoilskarAssassin )
|
if( CoilskarAssassin )
|
||||||
|
{
|
||||||
|
switch(rand()%2)
|
||||||
{
|
{
|
||||||
switch(rand()%2)
|
case 0: DoScriptText(ASSASSIN_SAY_AGGRO1, CoilskarAssassin, player); break;
|
||||||
{
|
case 1: DoScriptText(ASSASSIN_SAY_AGGRO2, CoilskarAssassin, player); break;
|
||||||
case 0:
|
}
|
||||||
CoilskarAssassin->Say(ASSASSIN_SAY_AGGRO1, LANG_UNIVERSAL, PlayerGUID); break;
|
((Creature*)CoilskarAssassin)->AI()->AttackStart(m_creature);
|
||||||
case 1:
|
}
|
||||||
CoilskarAssassin->Say(ASSASSIN_SAY_AGGRO2, LANG_UNIVERSAL, PlayerGUID); break;
|
else error_log("SD2 ERROR: Coilskar Assassin couldn't be summmoned");
|
||||||
}
|
|
||||||
CoilskarAssassin->AI()->AttackStart(m_creature);
|
|
||||||
}
|
|
||||||
else error_log("SD2 ERROR: Coilskar Assassin couldn't be summmoned");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit* killer)
|
void JustDied(Unit* killer)
|
||||||
{
|
|
||||||
if (PlayerGUID)
|
|
||||||
{
|
{
|
||||||
Unit* player = Unit::GetUnit((*m_creature), PlayerGUID);
|
if (PlayerGUID && !Completed)
|
||||||
if (player)
|
{
|
||||||
((Player*)player)->FailQuest(QUEST_ESCAPE_FROM_COILSKAR_CISTERN);
|
Unit* player = Unit::GetUnit((*m_creature), PlayerGUID);
|
||||||
}
|
if (player)
|
||||||
}
|
((Player*)player)->FailQuest(QUEST_ESCAPE_FROM_COILSKAR_CISTERN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void UpdateAI(const uint32 diff)
|
void UpdateAI(const uint32 diff)
|
||||||
{
|
{
|
||||||
@@ -1333,20 +1102,8 @@ void AddSC_shadowmoon_valley()
|
|||||||
|
|
||||||
newscript = new Script;
|
newscript = new Script;
|
||||||
newscript->Name = "npc_overlord_morghor";
|
newscript->Name = "npc_overlord_morghor";
|
||||||
newscript->GetAI = &GetAI_Overlord_Morghor;
|
newscript->GetAI = &GetAI_npc_overlord_morghorAI;
|
||||||
newscript->pQuestAccept = &QuestAccept_Overlord_Morghor;
|
newscript->pQuestAccept = &QuestAccept_npc_overlord_morghor;
|
||||||
newscript->RegisterSelf();
|
|
||||||
|
|
||||||
newscript = new Script;
|
|
||||||
newscript->Name = "npc_lord_illidan_stormrage";
|
|
||||||
newscript->GetAI = &GetAI_Lord_Illidan;
|
|
||||||
newscript->RegisterSelf();
|
|
||||||
|
|
||||||
newscript = new Script;
|
|
||||||
newscript->Name = "npc_yarzill_the_merc";
|
|
||||||
newscript->GetAI = &GetAI_Yarzill_The_Merc;
|
|
||||||
newscript->pGossipHello = &GossipHello_npc_yarzill_fly;
|
|
||||||
newscript->pGossipSelect = &GossipSelect_npc_yarzill_fly;
|
|
||||||
newscript->RegisterSelf();
|
newscript->RegisterSelf();
|
||||||
|
|
||||||
newscript = new Script;
|
newscript = new Script;
|
||||||
|
|||||||
@@ -5882,6 +5882,10 @@ void Spell::EffectSendTaxi(uint32 i)
|
|||||||
case 34905: //Stealth Flight
|
case 34905: //Stealth Flight
|
||||||
mountid = 6851;
|
mountid = 6851;
|
||||||
break;
|
break;
|
||||||
|
case 41533: //Fly of the Netherwing
|
||||||
|
case 41540: //Fly of the Netherwing
|
||||||
|
mountid = 23468;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
((Player*)unitTarget)->ActivateTaxiPathTo(nodes,mountid);
|
((Player*)unitTarget)->ActivateTaxiPathTo(nodes,mountid);
|
||||||
|
|||||||
Reference in New Issue
Block a user