Merge branch 'master' into Playerbot
This commit is contained in:
@@ -316,6 +316,7 @@ struct boss_illidan_stormrage : public BossAI
|
||||
DoStopAttack();
|
||||
me->SetControlled(true, UNIT_STATE_ROOT);
|
||||
me->SetCombatMovement(false);
|
||||
DoResetThreatList();
|
||||
DoCastSelf(SPELL_DEMON_TRANSFORM_1, true);
|
||||
|
||||
me->m_Events.AddEventAtOffset([&] {
|
||||
@@ -734,7 +735,10 @@ struct npc_akama_illidan : public ScriptedAI
|
||||
scheduler.CancelAll();
|
||||
me->m_Events.KillAllEvents(true);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
if (instance->GetBossState(DATA_ILLIDAN_STORMRAGE) == DONE)
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
else
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->setActive(false);
|
||||
summons.DespawnAll();
|
||||
DoCastSelf(SPELL_REDUCED_THREAT, true);
|
||||
|
||||
@@ -27,67 +27,67 @@
|
||||
|
||||
enum Says
|
||||
{
|
||||
SAY_BROKEN_FREE_0 = 0,
|
||||
SAY_BROKEN_FREE_1 = 1,
|
||||
SAY_BROKEN_FREE_2 = 2,
|
||||
SAY_LOW_HEALTH = 3,
|
||||
SAY_DEATH = 4,
|
||||
SAY_BROKEN_FREE_0 = 0,
|
||||
SAY_BROKEN_FREE_1 = 1,
|
||||
SAY_BROKEN_FREE_2 = 2,
|
||||
SAY_LOW_HEALTH = 3,
|
||||
SAY_DEATH = 4,
|
||||
|
||||
SAY_BROKEN_S1 = 0,
|
||||
SAY_BROKEN_S2 = 1
|
||||
SAY_BROKEN_S1 = 0,
|
||||
SAY_BROKEN_S2 = 1
|
||||
};
|
||||
|
||||
enum Spells
|
||||
{
|
||||
// Akama
|
||||
SPELL_STEALTH = 34189,
|
||||
SPELL_DESTRUCTIVE_POISON = 40874,
|
||||
SPELL_CHAIN_LIGHTNING = 39945,
|
||||
SPELL_AKAMA_SOUL_CHANNEL = 40447,
|
||||
SPELL_FIXATE = 40607,
|
||||
SPELL_AKAMA_SOUL_RETRIEVE = 40902, // epilogue
|
||||
SPELL_AKAMA_SOUL_EXPEL_CHANNEL = 40927, // epilogue
|
||||
SPELL_STEALTH = 34189,
|
||||
SPELL_DESTRUCTIVE_POISON = 40874,
|
||||
SPELL_CHAIN_LIGHTNING = 39945,
|
||||
SPELL_AKAMA_SOUL_CHANNEL = 40447,
|
||||
SPELL_FIXATE = 40607,
|
||||
SPELL_AKAMA_SOUL_RETRIEVE = 40902, // epilogue
|
||||
SPELL_AKAMA_SOUL_EXPEL_CHANNEL = 40927, // epilogue
|
||||
|
||||
// Shade & Channelers
|
||||
SPELL_SHADE_SOUL_CHANNEL = 40401,
|
||||
SPELL_THREAT = 41602,
|
||||
SPELL_SHADE_OF_AKAMA_TRIGGER = 40955,
|
||||
SPELL_SHADE_SOUL_CHANNEL = 40401,
|
||||
SPELL_THREAT = 41602,
|
||||
SPELL_SHADE_OF_AKAMA_TRIGGER = 40955,
|
||||
|
||||
// Summons
|
||||
SPELL_ASHTONGUE_WAVE_A = 42073, // unused
|
||||
SPELL_ASHTONGUE_WAVE_B = 42035,
|
||||
SPELL_SUMMON_ASHTONGUE_SORCERER = 40476,
|
||||
SPELL_SUMMON_ASHTONGUE_DEFENDER = 40474
|
||||
SPELL_ASHTONGUE_WAVE_A = 42073, // unused
|
||||
SPELL_ASHTONGUE_WAVE_B = 42035,
|
||||
SPELL_SUMMON_ASHTONGUE_SORCERER = 40476,
|
||||
SPELL_SUMMON_ASHTONGUE_DEFENDER = 40474
|
||||
};
|
||||
|
||||
enum Creatures
|
||||
{
|
||||
NPC_ASHTONGUE_SORCERER = 23215,
|
||||
NPC_ASHTONGUE_DEFENDER = 23216,
|
||||
NPC_ASHTONGUE_ELEMENTAL = 23523,
|
||||
NPC_ASHTONGUE_ROGUE = 23318,
|
||||
NPC_ASHTONGUE_SPIRITBIND = 23524,
|
||||
NPC_ASHTONGUE_BROKEN = 23319
|
||||
NPC_ASHTONGUE_SORCERER = 23215,
|
||||
NPC_ASHTONGUE_DEFENDER = 23216,
|
||||
NPC_ASHTONGUE_ELEMENTAL = 23523,
|
||||
NPC_ASHTONGUE_ROGUE = 23318,
|
||||
NPC_ASHTONGUE_SPIRITBIND = 23524,
|
||||
NPC_ASHTONGUE_BROKEN = 23319
|
||||
};
|
||||
|
||||
enum Misc
|
||||
{
|
||||
SUMMON_GROUP_BROKENS = 1,
|
||||
SUMMON_GROUP_BROKENS = 1,
|
||||
|
||||
POINT_ENGAGE = 0,
|
||||
POINT_OUTRO = 1,
|
||||
POINT_ENGAGE = 0,
|
||||
POINT_OUTRO = 1,
|
||||
|
||||
ACTION_GENERATOR_START = 1,
|
||||
ACTION_GENERATOR_STOP = 2,
|
||||
ACTION_GENERATOR_DESPAWN_ALL = 3,
|
||||
ACTION_GENERATOR_START = 1,
|
||||
ACTION_GENERATOR_STOP = 2,
|
||||
ACTION_GENERATOR_DESPAWN_ALL = 3,
|
||||
ACTION_GENERATOR_DESPAWN_NON_DEFENDERS = 4,
|
||||
|
||||
COUNTER_SPAWNS_MAX = 20, // Max number of spawns for each generator, number chosen at random
|
||||
COUNTER_SPAWNS_MAX = 20, // Max number of spawns for each generator, number chosen at random
|
||||
|
||||
ACTION_AKAMA_START_OUTRO = 1,
|
||||
ACTION_AKAMA_START_OUTRO = 1,
|
||||
|
||||
FACTION_DEFAULT = 1820,
|
||||
FACTION_ENGAGE = 1868,
|
||||
FACTION_DEFENDER = 1847
|
||||
FACTION_DEFAULT = 1820,
|
||||
FACTION_MONSTER_SPAR = 1847
|
||||
};
|
||||
|
||||
Position AkamaEngage = { 517.4877f, 400.79926f, 112.77704f };
|
||||
@@ -222,6 +222,7 @@ struct npc_akama_shade : public ScriptedAI
|
||||
_sayLowHealth = false;
|
||||
_died = false;
|
||||
scheduler.CancelAll();
|
||||
_generators.clear();
|
||||
}
|
||||
|
||||
void MovementInform(uint32 type, uint32 point) override
|
||||
@@ -232,7 +233,7 @@ struct npc_akama_shade : public ScriptedAI
|
||||
{
|
||||
case POINT_ENGAGE:
|
||||
me->SetHomePosition(me->GetPosition());
|
||||
me->SetFaction(FACTION_ENGAGE);
|
||||
me->SetFaction(FACTION_MONSTER_SPAR_BUDDY);
|
||||
DoCastSelf(SPELL_AKAMA_SOUL_CHANNEL, true);
|
||||
break;
|
||||
case POINT_OUTRO:
|
||||
@@ -279,6 +280,10 @@ struct npc_akama_shade : public ScriptedAI
|
||||
else if (damage >= me->GetHealth() && !_died)
|
||||
{
|
||||
_died = true;
|
||||
me->GetCreatureListWithEntryInGrid(_generators, NPC_CREATURE_GENERATOR_AKAMA, 100.0f);
|
||||
for (Creature* generator : _generators)
|
||||
generator->AI()->DoAction(ACTION_GENERATOR_DESPAWN_ALL);
|
||||
|
||||
damage = me->GetHealth() - 1;
|
||||
Talk(SAY_DEATH);
|
||||
if (Creature* shade = instance->GetCreature(DATA_SHADE_OF_AKAMA))
|
||||
@@ -342,6 +347,7 @@ struct npc_akama_shade : public ScriptedAI
|
||||
private:
|
||||
bool _sayLowHealth;
|
||||
bool _died;
|
||||
std::list<Creature *> _generators;
|
||||
};
|
||||
|
||||
struct npc_creature_generator_akama : public ScriptedAI
|
||||
@@ -355,7 +361,6 @@ struct npc_creature_generator_akama : public ScriptedAI
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
summons.DespawnAll();
|
||||
scheduler.CancelAll();
|
||||
}
|
||||
|
||||
@@ -363,6 +368,7 @@ struct npc_creature_generator_akama : public ScriptedAI
|
||||
{
|
||||
spawnCounter++;
|
||||
ScriptedAI::JustSummoned(summon);
|
||||
summons.Summon(summon);
|
||||
|
||||
switch (summon->GetEntry())
|
||||
{
|
||||
@@ -374,13 +380,10 @@ struct npc_creature_generator_akama : public ScriptedAI
|
||||
summon->GetMotionMaster()->MovePoint(POINT_ENGAGE, x, y, z);
|
||||
}
|
||||
break;
|
||||
case NPC_ASHTONGUE_DEFENDER:
|
||||
summon->SetFaction(FACTION_DEFENDER);
|
||||
if (Creature* akama = instance->GetCreature(DATA_AKAMA_SHADE))
|
||||
summon->AI()->AttackStart(akama);
|
||||
break;
|
||||
default:
|
||||
summon->SetInCombatWithZone();
|
||||
if (Creature* akama = instance->GetCreature(DATA_AKAMA_SHADE))
|
||||
summon->AI()->AttackStart(akama);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -434,6 +437,14 @@ struct npc_creature_generator_akama : public ScriptedAI
|
||||
summons.DespawnAll();
|
||||
scheduler.CancelAll();
|
||||
break;
|
||||
case ACTION_GENERATOR_DESPAWN_NON_DEFENDERS:
|
||||
summons.DoForAllSummons([&](WorldObject* summon)
|
||||
{
|
||||
if (Creature* c = summon->ToCreature())
|
||||
if (c->GetEntry() != NPC_ASHTONGUE_DEFENDER && c->GetEntry() != NPC_ASHTONGUE_SORCERER)
|
||||
c->DespawnOrUnsummon();
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1017,7 +1017,7 @@ class spell_dru_swift_flight_passive : public AuraScript
|
||||
|
||||
void Register() override
|
||||
{
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_swift_flight_passive::CalculateAmount, EFFECT_1, SPELL_AURA_MOD_INCREASE_VEHICLE_FLIGHT_SPEED);
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_dru_swift_flight_passive::CalculateAmount, EFFECT_1, SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user