Core/Script: Remove script for Overlord Mor'ghor - converted to SAI in commit 16179f8
(cherry picked from commit b804539f9be34f521c048620da78f604868f28f8) Conflicts: src/server/scripts/Outland/zone_shadowmoon_valley.cpp
This commit is contained in:
@@ -31,7 +31,6 @@ npc_enslaved_netherwing_drake
|
||||
npc_drake_dealer_hurlunk
|
||||
npcs_flanis_swiftwing_and_kagrosh
|
||||
npc_karynaku
|
||||
npc_overlord_morghor
|
||||
npc_earthmender_wilda
|
||||
npc_torloth_the_magnificent
|
||||
npc_illidari_spawn
|
||||
@@ -676,331 +675,6 @@ class npc_karynaku : public CreatureScript
|
||||
}
|
||||
};
|
||||
|
||||
/*####
|
||||
# npc_overlord_morghor
|
||||
# this whole script is wrong and needs a rewrite.even the illidan npc used is the wrong one.npc id 23467 may be the correct one
|
||||
####*/
|
||||
enum OverlordData
|
||||
{
|
||||
QUEST_LORD_ILLIDAN_STORMRAGE = 11108,
|
||||
|
||||
C_ILLIDAN = 22083,
|
||||
C_YARZILL = 23141,
|
||||
|
||||
SPELL_ONE = 39990, // Red Lightning Bolt
|
||||
SPELL_TWO = 41528, // Mark of Stormrage
|
||||
SPELL_THREE = 40216, // Dragonaw Faction
|
||||
SPELL_FOUR = 42016, // Dragonaw Trasform
|
||||
|
||||
OVERLORD_SAY_1 = 0,
|
||||
OVERLORD_SAY_2 = 1,
|
||||
//OVERLORD_SAY_3 = 2,
|
||||
OVERLORD_SAY_4 = 3,
|
||||
OVERLORD_SAY_5 = 4,
|
||||
OVERLORD_SAY_6 = 5,
|
||||
|
||||
OVERLORD_YELL_1 = 6,
|
||||
OVERLORD_YELL_2 = 7,
|
||||
|
||||
LORD_ILLIDAN_SAY_1 = 0,
|
||||
LORD_ILLIDAN_SAY_2 = 1,
|
||||
LORD_ILLIDAN_SAY_3 = 2,
|
||||
LORD_ILLIDAN_SAY_4 = 3,
|
||||
LORD_ILLIDAN_SAY_5 = 4,
|
||||
LORD_ILLIDAN_SAY_6 = 5,
|
||||
LORD_ILLIDAN_SAY_7 = 6,
|
||||
|
||||
YARZILL_THE_MERC_SAY = 0
|
||||
};
|
||||
|
||||
class npc_overlord_morghor : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_overlord_morghor() : CreatureScript("npc_overlord_morghor") { }
|
||||
|
||||
bool OnQuestAccept(Player* player, Creature* creature, const Quest *_Quest) override
|
||||
{
|
||||
if (_Quest->GetQuestId() == QUEST_LORD_ILLIDAN_STORMRAGE)
|
||||
{
|
||||
ENSURE_AI(npc_overlord_morghor::npc_overlord_morghorAI, creature->AI())->PlayerGUID = player->GetGUID();
|
||||
ENSURE_AI(npc_overlord_morghor::npc_overlord_morghorAI, creature->AI())->StartEvent();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_overlord_morghorAI(creature);
|
||||
}
|
||||
|
||||
struct npc_overlord_morghorAI : public ScriptedAI
|
||||
{
|
||||
npc_overlord_morghorAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
PlayerGUID.Clear();
|
||||
IllidanGUID.Clear();
|
||||
|
||||
ConversationTimer = 0;
|
||||
Step = 0;
|
||||
|
||||
Event = false;
|
||||
}
|
||||
|
||||
ObjectGuid PlayerGUID;
|
||||
ObjectGuid IllidanGUID;
|
||||
|
||||
uint32 ConversationTimer;
|
||||
uint32 Step;
|
||||
|
||||
bool Event;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
me->SetUInt32Value(UNIT_NPC_FLAGS, 2);
|
||||
}
|
||||
|
||||
void StartEvent()
|
||||
{
|
||||
me->SetUInt32Value(UNIT_NPC_FLAGS, 0);
|
||||
me->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||
Unit* Illidan = me->SummonCreature(C_ILLIDAN, -5107.83f, 602.584f, 85.2393f, 4.92598f, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||
if (Illidan)
|
||||
{
|
||||
IllidanGUID = Illidan->GetGUID();
|
||||
Illidan->SetVisible(false);
|
||||
}
|
||||
if (!PlayerGUID.IsEmpty())
|
||||
{
|
||||
Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID);
|
||||
if (player)
|
||||
Talk(OVERLORD_SAY_1, player);
|
||||
}
|
||||
ConversationTimer = 4200;
|
||||
Step = 0;
|
||||
Event = true;
|
||||
}
|
||||
|
||||
uint32 NextStep(uint32 Step)
|
||||
{
|
||||
Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID);
|
||||
Creature* Illi = ObjectAccessor::GetCreature(*me, IllidanGUID);
|
||||
|
||||
if (!player)
|
||||
{
|
||||
EnterEvadeMode();
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (Step)
|
||||
{
|
||||
case 0:
|
||||
return 0;
|
||||
break;
|
||||
case 1:
|
||||
me->GetMotionMaster()->MovePoint(0, -5104.41f, 595.297f, 85.6838f);
|
||||
return 9000;
|
||||
break;
|
||||
case 2:
|
||||
Talk(OVERLORD_YELL_1, player);
|
||||
return 4500;
|
||||
break;
|
||||
case 3:
|
||||
me->SetInFront(player);
|
||||
return 3200;
|
||||
break;
|
||||
case 4:
|
||||
Talk(OVERLORD_SAY_2, player);
|
||||
return 2000;
|
||||
break;
|
||||
case 5:
|
||||
if (Illi)
|
||||
{
|
||||
Illi->SetVisible(true);
|
||||
Illi->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
Illi->SetDisplayId(21526);
|
||||
}
|
||||
return 350;
|
||||
break;
|
||||
case 6:
|
||||
if (Illi)
|
||||
{
|
||||
Illi->CastSpell(Illi, SPELL_ONE, true);
|
||||
Illi->SetTarget(me->GetGUID());
|
||||
me->SetTarget(IllidanGUID);
|
||||
}
|
||||
return 2000;
|
||||
break;
|
||||
case 7:
|
||||
Talk(OVERLORD_YELL_2);
|
||||
return 4500;
|
||||
break;
|
||||
case 8:
|
||||
me->SetUInt32Value(UNIT_FIELD_BYTES_1, 8);
|
||||
return 2500;
|
||||
break;
|
||||
case 9:
|
||||
// missing text "Lord Illidan, this is the Dragonmaw that I, and others, have told you about. He will lead us to victory!"
|
||||
return 5000;
|
||||
break;
|
||||
case 10:
|
||||
if (Illi)
|
||||
Illi->AI()->Talk(LORD_ILLIDAN_SAY_1);
|
||||
return 5000;
|
||||
break;
|
||||
case 11:
|
||||
Talk(OVERLORD_SAY_4, player);
|
||||
return 6000;
|
||||
break;
|
||||
case 12:
|
||||
if (Illi)
|
||||
Illi->AI()->Talk(LORD_ILLIDAN_SAY_2);
|
||||
return 5500;
|
||||
break;
|
||||
case 13:
|
||||
if (Illi)
|
||||
Illi->AI()->Talk(LORD_ILLIDAN_SAY_3);
|
||||
return 4000;
|
||||
break;
|
||||
case 14:
|
||||
if (Illi)
|
||||
Illi->SetTarget(PlayerGUID);
|
||||
return 1500;
|
||||
break;
|
||||
case 15:
|
||||
if (Illi)
|
||||
Illi->AI()->Talk(LORD_ILLIDAN_SAY_4);
|
||||
return 1500;
|
||||
break;
|
||||
case 16:
|
||||
if (Illi)
|
||||
Illi->CastSpell(player, SPELL_TWO, true);
|
||||
player->RemoveAurasDueToSpell(SPELL_THREE);
|
||||
player->RemoveAurasDueToSpell(SPELL_FOUR);
|
||||
return 5000;
|
||||
break;
|
||||
case 17:
|
||||
if (Illi)
|
||||
Illi->AI()->Talk(LORD_ILLIDAN_SAY_5);
|
||||
return 5000;
|
||||
break;
|
||||
case 18:
|
||||
if (Illi)
|
||||
Illi->AI()->Talk(LORD_ILLIDAN_SAY_6);
|
||||
return 5000;
|
||||
break;
|
||||
case 19:
|
||||
if (Illi)
|
||||
Illi->AI()->Talk(LORD_ILLIDAN_SAY_7);
|
||||
return 5000;
|
||||
break;
|
||||
case 20:
|
||||
if (Illi)
|
||||
{
|
||||
Illi->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
|
||||
Illi->SetDisableGravity(true);
|
||||
}
|
||||
return 500;
|
||||
break;
|
||||
case 21:
|
||||
Talk(OVERLORD_SAY_5);
|
||||
return 500;
|
||||
break;
|
||||
case 22:
|
||||
if (Illi)
|
||||
{
|
||||
Illi->SetVisible(false);
|
||||
Illi->setDeathState(JUST_DIED);
|
||||
}
|
||||
return 1000;
|
||||
break;
|
||||
case 23:
|
||||
me->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||
return 2000;
|
||||
break;
|
||||
case 24:
|
||||
me->SetTarget(PlayerGUID);
|
||||
return 5000;
|
||||
break;
|
||||
case 25:
|
||||
Talk(OVERLORD_SAY_6);
|
||||
return 2000;
|
||||
break;
|
||||
case 26:
|
||||
player->GroupEventHappens(QUEST_LORD_ILLIDAN_STORMRAGE, me);
|
||||
return 6000;
|
||||
break;
|
||||
case 27:
|
||||
{
|
||||
Unit* Yarzill = me->FindNearestCreature(C_YARZILL, 50.0f);
|
||||
if (Yarzill)
|
||||
Yarzill->SetTarget(PlayerGUID);
|
||||
return 500;
|
||||
}
|
||||
break;
|
||||
case 28:
|
||||
player->RemoveAurasDueToSpell(SPELL_TWO);
|
||||
player->RemoveAurasDueToSpell(41519);
|
||||
player->CastSpell(player, SPELL_THREE, true);
|
||||
player->CastSpell(player, SPELL_FOUR, true);
|
||||
return 1000;
|
||||
break;
|
||||
case 29:
|
||||
{
|
||||
if (Creature* Yarzill = me->FindNearestCreature(C_YARZILL, 50.0f))
|
||||
Yarzill->AI()->Talk(YARZILL_THE_MERC_SAY, player);
|
||||
return 5000;
|
||||
}
|
||||
break;
|
||||
case 30:
|
||||
{
|
||||
if (Creature* Yarzill = me->FindNearestCreature(C_YARZILL, 50.0f))
|
||||
Yarzill->SetTarget(ObjectGuid::Empty);
|
||||
return 5000;
|
||||
}
|
||||
break;
|
||||
case 31:
|
||||
{
|
||||
if (Creature* Yarzill = me->FindNearestCreature(C_YARZILL, 50.0f))
|
||||
Yarzill->CastSpell(player, 41540, true);
|
||||
return 1000;
|
||||
}
|
||||
break;
|
||||
case 32:
|
||||
me->GetMotionMaster()->MovePoint(0, -5085.77f, 577.231f, 86.6719f);
|
||||
return 5000;
|
||||
break;
|
||||
case 33:
|
||||
me->SetTarget(ObjectGuid::Empty);
|
||||
Reset();
|
||||
return 100;
|
||||
break;
|
||||
default :
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!ConversationTimer)
|
||||
return;
|
||||
|
||||
if (ConversationTimer <= diff)
|
||||
{
|
||||
if (Event && !PlayerGUID.IsEmpty())
|
||||
ConversationTimer = NextStep(++Step);
|
||||
} else ConversationTimer -= diff;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
/*####
|
||||
# npc_earthmender_wilda
|
||||
####*/
|
||||
@@ -2026,7 +1700,6 @@ void AddSC_shadowmoon_valley()
|
||||
new npc_drake_dealer_hurlunk();
|
||||
new npcs_flanis_swiftwing_and_kagrosh();
|
||||
new npc_karynaku();
|
||||
new npc_overlord_morghor();
|
||||
new npc_earthmender_wilda();
|
||||
new npc_lord_illidan_stormrage();
|
||||
new go_crystal_prison();
|
||||
|
||||
Reference in New Issue
Block a user