mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 02:25:38 +01:00
Script/Quests: Fix some missing NPC spells and quest credit
(cherry picked from commit cc894288b7)
This commit is contained in:
@@ -599,6 +599,7 @@ public:
|
||||
IntroTimer = 2000;
|
||||
break;
|
||||
case 41:
|
||||
SetEscortPaused(true);
|
||||
IntroPhase = 4;
|
||||
IntroTimer = 2000;
|
||||
break;
|
||||
@@ -625,7 +626,7 @@ public:
|
||||
IntroTimer = 7500;
|
||||
break;
|
||||
case 3:
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
me->SetReactState(REACT_DEFENSIVE);
|
||||
IntroPhase = 0;
|
||||
IntroTimer = 0;
|
||||
break;
|
||||
@@ -640,14 +641,12 @@ public:
|
||||
IntroPhase = 6;
|
||||
IntroTimer = 2500;
|
||||
break;
|
||||
|
||||
case 6:
|
||||
if (Player* player = GetPlayerForEscort())
|
||||
player->AreaExploredOrEventHappens(QUEST_ESCAPE_WINTERFIN_CAVERNS);
|
||||
IntroPhase = 7;
|
||||
IntroTimer = 2500;
|
||||
break;
|
||||
|
||||
case 7:
|
||||
me->DespawnOrUnsummon();
|
||||
IntroPhase = 0;
|
||||
@@ -669,8 +668,7 @@ public:
|
||||
if (GameObject* go = me->FindNearestGameObject(GO_CAGE, 5.0f))
|
||||
{
|
||||
go->SetRespawnTime(0);
|
||||
go->SetGoType(GAMEOBJECT_TYPE_BUTTON);
|
||||
go->UseDoorOrButton(20);
|
||||
go->UseDoorOrButton(20000);
|
||||
}
|
||||
|
||||
Start(true, false, player->GetGUID());
|
||||
|
||||
@@ -559,6 +559,11 @@ public:
|
||||
{
|
||||
npc_venture_co_stragglerAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
_events.ScheduleEvent(EVENT_CHOP, Seconds(3), Seconds(6));
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_playerGUID.Clear();
|
||||
@@ -597,7 +602,7 @@ public:
|
||||
case EVENT_CHOP:
|
||||
if (UpdateVictim())
|
||||
DoCastVictim(SPELL_CHOP);
|
||||
_events.ScheduleEvent(EVENT_CHOP, 10000, 12000);
|
||||
_events.Repeat(Seconds(10), Seconds(12));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -606,7 +611,6 @@ public:
|
||||
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
|
||||
@@ -1374,7 +1374,7 @@ public:
|
||||
|
||||
enum Enraged_Dpirits
|
||||
{
|
||||
// QUESTS
|
||||
// QUESTS
|
||||
QUEST_ENRAGED_SPIRITS_FIRE_EARTH = 10458,
|
||||
QUEST_ENRAGED_SPIRITS_AIR = 10481,
|
||||
QUEST_ENRAGED_SPIRITS_WATER = 10480,
|
||||
@@ -1389,6 +1389,22 @@ enum Enraged_Dpirits
|
||||
NPC_ENRAGED_AIR_SPIRIT = 21060,
|
||||
NPC_ENRAGED_WATER_SPIRIT = 21059,
|
||||
|
||||
// ENRAGED WATER SPIRIT SPELLS
|
||||
SPELL_STORMBOLT = 38032,
|
||||
|
||||
// ENRAGED AIR SPIRIT SPELLS
|
||||
SPELL_AIR_SPIRIT_CHAIN_LIGHTNING = 12058,
|
||||
SPELL_HURRICANE = 32717,
|
||||
SPELL_ENRAGE = 8599,
|
||||
|
||||
// ENRAGED FIRE SPIRIT SPELLS - Will be using the enrage spell from Air Spirit
|
||||
SPELL_FEL_FIREBALL = 36247,
|
||||
SPELL_FEL_FIRE_AURA = 36006, // Earth spirit uses this one
|
||||
|
||||
// ENRAGED EARTH SPIRIT SPELLS
|
||||
SPELL_FIERY_BOULDER = 38498,
|
||||
SPELL_SUMMON_ENRAGED_EARTH_SHARD = 38365,
|
||||
|
||||
// SOULS
|
||||
NPC_EARTHEN_SOUL = 21073,
|
||||
NPC_FIERY_SOUL = 21097,
|
||||
@@ -1411,6 +1427,15 @@ enum Enraged_Dpirits
|
||||
SPELL_SOUL_CAPTURED = 36115
|
||||
};
|
||||
|
||||
enum Enraged_Spirits_Events
|
||||
{
|
||||
EVENT_ENRAGED_WATER_SPIRIT = 1,
|
||||
EVENT_ENRAGED_FIRE_SPIRIT = 2,
|
||||
EVENT_ENRAGED_EARTH_SPIRIT = 3,
|
||||
EVENT_ENRAGED_AIR_SPIRIT_CHAIN_LIGHTNING = 4,
|
||||
EVENT_ENRAGED_AIR_SPIRIT_HURRICANE = 5
|
||||
};
|
||||
|
||||
class npc_enraged_spirit : public CreatureScript
|
||||
{
|
||||
public:
|
||||
@@ -1418,7 +1443,7 @@ public:
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_enraged_spiritAI(creature);
|
||||
return new npc_enraged_spiritAI(creature);
|
||||
}
|
||||
|
||||
struct npc_enraged_spiritAI : public ScriptedAI
|
||||
@@ -1427,7 +1452,77 @@ public:
|
||||
|
||||
void Reset() override { }
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
switch (me->GetEntry())
|
||||
{
|
||||
case NPC_ENRAGED_WATER_SPIRIT:
|
||||
_events.ScheduleEvent(EVENT_ENRAGED_WATER_SPIRIT, Seconds(0), Seconds(1));
|
||||
break;
|
||||
case NPC_ENRAGED_FIRE_SPIRIT:
|
||||
if (!me->GetAura(SPELL_FEL_FIRE_AURA))
|
||||
DoCastSelf(SPELL_FEL_FIRE_AURA);
|
||||
_events.ScheduleEvent(EVENT_ENRAGED_FIRE_SPIRIT, Seconds(2), Seconds(10));
|
||||
break;
|
||||
case NPC_ENRAGED_EARTH_SPIRIT:
|
||||
if (!me->GetAura(SPELL_FEL_FIRE_AURA))
|
||||
DoCastSelf(SPELL_FEL_FIRE_AURA);
|
||||
_events.ScheduleEvent(EVENT_ENRAGED_EARTH_SPIRIT, Seconds(3), Seconds(4));
|
||||
break;
|
||||
case NPC_ENRAGED_AIR_SPIRIT:
|
||||
_events.ScheduleEvent(EVENT_ENRAGED_AIR_SPIRIT_CHAIN_LIGHTNING, Seconds(10));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
_events.Update(diff);
|
||||
|
||||
while (uint32 eventId = _events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_ENRAGED_WATER_SPIRIT:
|
||||
if (UpdateVictim())
|
||||
DoCastVictim(SPELL_STORMBOLT);
|
||||
_events.Repeat(Seconds(17), Seconds(23));
|
||||
break;
|
||||
case EVENT_ENRAGED_FIRE_SPIRIT:
|
||||
if (UpdateVictim())
|
||||
DoCastVictim(SPELL_FEL_FIREBALL);
|
||||
_events.Repeat(Seconds(6), Seconds(12));
|
||||
break;
|
||||
case EVENT_ENRAGED_EARTH_SPIRIT:
|
||||
if (UpdateVictim())
|
||||
DoCastVictim(SPELL_FIERY_BOULDER);
|
||||
_events.Repeat(Seconds(6), Seconds(9));
|
||||
break;
|
||||
case EVENT_ENRAGED_AIR_SPIRIT_CHAIN_LIGHTNING:
|
||||
if (UpdateVictim())
|
||||
DoCastVictim(SPELL_CHAIN_LIGHTNING);
|
||||
_events.ScheduleEvent(EVENT_ENRAGED_AIR_SPIRIT_HURRICANE, Seconds(3), Seconds(5));
|
||||
break;
|
||||
case EVENT_ENRAGED_AIR_SPIRIT_HURRICANE:
|
||||
if (UpdateVictim())
|
||||
DoCastVictim(SPELL_HURRICANE);
|
||||
_events.ScheduleEvent(EVENT_ENRAGED_AIR_SPIRIT_CHAIN_LIGHTNING, Seconds(15), Seconds(20));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (me->GetEntry() == NPC_ENRAGED_FIRE_SPIRIT || me->GetEntry() == NPC_ENRAGED_AIR_SPIRIT)
|
||||
if (HealthBelowPct(35) && !me->GetAura(SPELL_ENRAGE))
|
||||
DoCastSelf(SPELL_ENRAGE);
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
@@ -1448,6 +1543,7 @@ public:
|
||||
entry = NPC_EARTHEN_SOUL;
|
||||
//credit = SPELL_EARTHEN_SOUL_CAPTURED_CREDIT;
|
||||
credit = NPC_CREDIT_EARTH;
|
||||
DoCastSelf(SPELL_SUMMON_ENRAGED_EARTH_SHARD);
|
||||
break;
|
||||
case NPC_ENRAGED_AIR_SPIRIT:
|
||||
entry = NPC_ENRAGED_AIRY_SOUL;
|
||||
@@ -1486,6 +1582,9 @@ public:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
EventMap _events;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user