Merge branch 'master' of https://github.com/TrinityCore/TrinityCore
This commit is contained in:
@@ -2048,10 +2048,10 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
|||||||
( 72440, 'spell_deathbringer_blood_nova'),
|
( 72440, 'spell_deathbringer_blood_nova'),
|
||||||
( 72378, 'spell_deathbringer_blood_nova_targeting'),
|
( 72378, 'spell_deathbringer_blood_nova_targeting'),
|
||||||
( 73058, 'spell_deathbringer_blood_nova_targeting'),
|
( 73058, 'spell_deathbringer_blood_nova_targeting'),
|
||||||
( 72255, 'spell_deathbringer_mark_of_the_fallen_champion'),
|
( 72385, 'spell_deathbringer_boiling_blood'),
|
||||||
( 72444, 'spell_deathbringer_mark_of_the_fallen_champion'),
|
( 72441, 'spell_deathbringer_boiling_blood'),
|
||||||
( 72445, 'spell_deathbringer_mark_of_the_fallen_champion'),
|
( 72442, 'spell_deathbringer_boiling_blood'),
|
||||||
( 72446, 'spell_deathbringer_mark_of_the_fallen_champion'),
|
( 72443, 'spell_deathbringer_boiling_blood'),
|
||||||
( 72155, 'spell_icc_harvest_blight_specimen'),
|
( 72155, 'spell_icc_harvest_blight_specimen'),
|
||||||
( 72162, 'spell_icc_harvest_blight_specimen'),
|
( 72162, 'spell_icc_harvest_blight_specimen'),
|
||||||
( 71123, 'spell_stinky_precious_decimate'),
|
( 71123, 'spell_stinky_precious_decimate'),
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_deathbringer_mark_of_the_fallen_champion';
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
DELETE FROM `command` WHERE `name`='pet tp';
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_deathbringer_boiling_blood';
|
||||||
|
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||||
|
(72385,'spell_deathbringer_boiling_blood'),
|
||||||
|
(72441,'spell_deathbringer_boiling_blood'),
|
||||||
|
(72442,'spell_deathbringer_boiling_blood'),
|
||||||
|
(72443,'spell_deathbringer_boiling_blood');
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
UPDATE `spell_dbc` SET `Effect1`=28, `EffectMiscValueB1`=64 WHERE `Id`=24308;
|
||||||
@@ -206,7 +206,6 @@ ChatCommand * ChatHandler::getCommandTable()
|
|||||||
{ "create", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleCreatePetCommand>, "", NULL },
|
{ "create", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandleCreatePetCommand>, "", NULL },
|
||||||
{ "learn", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandlePetLearnCommand>, "", NULL },
|
{ "learn", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandlePetLearnCommand>, "", NULL },
|
||||||
{ "unlearn", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandlePetUnlearnCommand>, "", NULL },
|
{ "unlearn", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandlePetUnlearnCommand>, "", NULL },
|
||||||
{ "tp", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandlePetTpCommand>, "", NULL },
|
|
||||||
{ NULL, 0, false, NULL, "", NULL }
|
{ NULL, 0, false, NULL, "", NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -293,7 +293,6 @@ class ChatHandler
|
|||||||
bool HandleHideAreaCommand(const char* args);
|
bool HandleHideAreaCommand(const char* args);
|
||||||
bool HandleAddItemCommand(const char* args);
|
bool HandleAddItemCommand(const char* args);
|
||||||
bool HandleAddItemSetCommand(const char* args);
|
bool HandleAddItemSetCommand(const char* args);
|
||||||
bool HandlePetTpCommand(const char* args);
|
|
||||||
bool HandlePetUnlearnCommand(const char* args);
|
bool HandlePetUnlearnCommand(const char* args);
|
||||||
bool HandlePetLearnCommand(const char* args);
|
bool HandlePetLearnCommand(const char* args);
|
||||||
bool HandleCreatePetCommand(const char* args);
|
bool HandleCreatePetCommand(const char* args);
|
||||||
|
|||||||
@@ -913,29 +913,6 @@ bool ChatHandler::HandlePetUnlearnCommand(const char *args)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ChatHandler::HandlePetTpCommand(const char *args)
|
|
||||||
{
|
|
||||||
if (!*args)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
Player *plr = m_session->GetPlayer();
|
|
||||||
Pet *pet = plr->GetPet();
|
|
||||||
|
|
||||||
if (!pet)
|
|
||||||
{
|
|
||||||
PSendSysMessage("You have no pet");
|
|
||||||
SetSentErrorMessage(true);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32 tp = atol(args);
|
|
||||||
|
|
||||||
//pet->SetTP(tp);
|
|
||||||
|
|
||||||
PSendSysMessage("Pet's tp changed to %u", tp);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ChatHandler::HandleLookupTitleCommand(const char* args)
|
bool ChatHandler::HandleLookupTitleCommand(const char* args)
|
||||||
{
|
{
|
||||||
if (!*args)
|
if (!*args)
|
||||||
|
|||||||
@@ -8718,6 +8718,8 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig
|
|||||||
// Deathbringer Saurfang - Rune of Blood
|
// Deathbringer Saurfang - Rune of Blood
|
||||||
case 72408:
|
case 72408:
|
||||||
// can proc only if target is marked with rune
|
// can proc only if target is marked with rune
|
||||||
|
// this should be handled by targetAuraSpell, but because 72408 is not passive
|
||||||
|
// one failed proc will remove the entire aura
|
||||||
if (!pVictim->HasAura(72410))
|
if (!pVictim->HasAura(72410))
|
||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
@@ -8725,6 +8727,12 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig
|
|||||||
case 72176:
|
case 72176:
|
||||||
basepoints0 = 3;
|
basepoints0 = 3;
|
||||||
break;
|
break;
|
||||||
|
// Deathbringer Saurfang - Mark of the Fallen Champion
|
||||||
|
case 72256:
|
||||||
|
// this should be handled by targetAuraSpell, but because 72408 is not passive
|
||||||
|
// one failed proc will remove the entire aura
|
||||||
|
CastSpell(NULL, trigger_spell_id, true, NULL, triggeredByAura);
|
||||||
|
return true;
|
||||||
case 15337: // Improved Spirit Tap (Rank 1)
|
case 15337: // Improved Spirit Tap (Rank 1)
|
||||||
case 15338: // Improved Spirit Tap (Rank 2)
|
case 15338: // Improved Spirit Tap (Rank 2)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4266,12 +4266,9 @@ void SpellMgr::LoadSpellCustomAttr()
|
|||||||
spellInfo->EffectRadiusIndex[0] = 12; // 100yd
|
spellInfo->EffectRadiusIndex[0] = 12; // 100yd
|
||||||
++count;
|
++count;
|
||||||
break;
|
break;
|
||||||
case 72385: // Boiling Blood (Deathbringer Saurfang)
|
case 72723: // Resistant Skin (Deathbringer Saurfang adds)
|
||||||
case 72441: // Boiling Blood (Deathbringer Saurfang)
|
// this spell initially granted Shadow damage immunity, however it was removed but the data was left in client
|
||||||
case 72442: // Boiling Blood (Deathbringer Saurfang)
|
spellInfo->Effect[2] = 0;
|
||||||
case 72443: // Boiling Blood (Deathbringer Saurfang)
|
|
||||||
spellInfo->EffectImplicitTargetA[0] = TARGET_UNIT_TARGET_ENEMY;
|
|
||||||
spellInfo->EffectImplicitTargetB[0] = 0;
|
|
||||||
++count;
|
++count;
|
||||||
break;
|
break;
|
||||||
case 70460: // Coldflame Jets (Traps after Saurfang)
|
case 70460: // Coldflame Jets (Traps after Saurfang)
|
||||||
@@ -4333,8 +4330,9 @@ void SpellMgr::LoadSpellCustomAttr()
|
|||||||
spellInfo->EffectImplicitTargetB[0] = 0;
|
spellInfo->EffectImplicitTargetB[0] = 0;
|
||||||
++count;
|
++count;
|
||||||
break;
|
break;
|
||||||
|
case 72706: // Achievement Check (Valithria Dreamwalker)
|
||||||
case 71357: // Order Whelp
|
case 71357: // Order Whelp
|
||||||
spellInfo->EffectRadiusIndex[0] = 22;
|
spellInfo->EffectRadiusIndex[0] = 22; // 200yd
|
||||||
++count;
|
++count;
|
||||||
break;
|
break;
|
||||||
case 70598: // Sindragosa's Fury
|
case 70598: // Sindragosa's Fury
|
||||||
|
|||||||
@@ -450,7 +450,7 @@ class boss_deathbringer_saurfang : public CreatureScript
|
|||||||
// select at range only
|
// select at range only
|
||||||
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, -10.0f, true);
|
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, -10.0f, true);
|
||||||
if (!target)
|
if (!target)
|
||||||
target = SelectTarget(SELECT_TARGET_RANDOM, 1, 10.0f, true); // noone? select melee
|
target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true); // noone? select melee
|
||||||
if (target)
|
if (target)
|
||||||
DoCast(target, SPELL_BLOOD_NOVA_TRIGGER);
|
DoCast(target, SPELL_BLOOD_NOVA_TRIGGER);
|
||||||
events.ScheduleEvent(EVENT_BLOOD_NOVA, urand(20000, 25000), 0, PHASE_COMBAT);
|
events.ScheduleEvent(EVENT_BLOOD_NOVA, urand(20000, 25000), 0, PHASE_COMBAT);
|
||||||
@@ -461,8 +461,7 @@ class boss_deathbringer_saurfang : public CreatureScript
|
|||||||
events.ScheduleEvent(EVENT_RUNE_OF_BLOOD, urand(20000, 25000), 0, PHASE_COMBAT);
|
events.ScheduleEvent(EVENT_RUNE_OF_BLOOD, urand(20000, 25000), 0, PHASE_COMBAT);
|
||||||
break;
|
break;
|
||||||
case EVENT_BOILING_BLOOD:
|
case EVENT_BOILING_BLOOD:
|
||||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, -BOILING_BLOOD_HELPER))
|
DoCast(me, SPELL_BOILING_BLOOD);
|
||||||
DoCast(target, SPELL_BOILING_BLOOD);
|
|
||||||
events.ScheduleEvent(EVENT_BOILING_BLOOD, urand(15000, 20000), 0, PHASE_COMBAT);
|
events.ScheduleEvent(EVENT_BOILING_BLOOD, urand(15000, 20000), 0, PHASE_COMBAT);
|
||||||
break;
|
break;
|
||||||
case EVENT_BERSERK:
|
case EVENT_BERSERK:
|
||||||
@@ -744,7 +743,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
|
|||||||
InstanceScript* instance = creature->GetInstanceScript();
|
InstanceScript* instance = creature->GetInstanceScript();
|
||||||
if (instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE)
|
if (instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE)
|
||||||
{
|
{
|
||||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Let it begin...", 631, -ACTION_START_EVENT);
|
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "We are ready to go, High Overlord. The Lich King must fall!", 631, -ACTION_START_EVENT);
|
||||||
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
|
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1222,38 +1221,39 @@ class spell_deathbringer_blood_nova_targeting : public SpellScriptLoader
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class MarkOfTheFallenChampionCheck
|
class spell_deathbringer_boiling_blood : public SpellScriptLoader
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool operator() (Unit* unit)
|
spell_deathbringer_boiling_blood() : SpellScriptLoader("spell_deathbringer_boiling_blood") { }
|
||||||
{
|
|
||||||
return !unit->HasAura(SPELL_MARK_OF_THE_FALLEN_CHAMPION);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class spell_deathbringer_mark_of_the_fallen_champion : public SpellScriptLoader
|
class spell_deathbringer_boiling_blood_SpellScript : public SpellScript
|
||||||
{
|
|
||||||
public:
|
|
||||||
spell_deathbringer_mark_of_the_fallen_champion() : SpellScriptLoader("spell_deathbringer_mark_of_the_fallen_champion") { }
|
|
||||||
|
|
||||||
class spell_deathbringer_mark_of_the_fallen_champion_SpellScript : public SpellScript
|
|
||||||
{
|
{
|
||||||
PrepareSpellScript(spell_deathbringer_mark_of_the_fallen_champion_SpellScript);
|
PrepareSpellScript(spell_deathbringer_boiling_blood_SpellScript);
|
||||||
|
|
||||||
|
bool Load()
|
||||||
|
{
|
||||||
|
return GetCaster()->GetTypeId() == TYPEID_UNIT;
|
||||||
|
}
|
||||||
|
|
||||||
void FilterTargets(std::list<Unit*>& unitList)
|
void FilterTargets(std::list<Unit*>& unitList)
|
||||||
{
|
{
|
||||||
unitList.remove_if(MarkOfTheFallenChampionCheck());
|
unitList.remove(GetCaster()->getVictim());
|
||||||
|
std::list<Unit*>::iterator itr = unitList.begin();
|
||||||
|
std::advance(itr, urand(0, unitList.size() - 1));
|
||||||
|
Unit* target = *itr;
|
||||||
|
unitList.clear();
|
||||||
|
unitList.push_back(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Register()
|
void Register()
|
||||||
{
|
{
|
||||||
OnUnitTargetSelect += SpellUnitTargetFn(spell_deathbringer_mark_of_the_fallen_champion_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_AREA_ENEMY_SRC);
|
OnUnitTargetSelect += SpellUnitTargetFn(spell_deathbringer_boiling_blood_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_AREA_ENEMY_SRC);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
SpellScript* GetSpellScript() const
|
SpellScript* GetSpellScript() const
|
||||||
{
|
{
|
||||||
return new spell_deathbringer_mark_of_the_fallen_champion_SpellScript();
|
return new spell_deathbringer_boiling_blood_SpellScript();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1285,6 +1285,6 @@ void AddSC_boss_deathbringer_saurfang()
|
|||||||
new spell_deathbringer_rune_of_blood();
|
new spell_deathbringer_rune_of_blood();
|
||||||
new spell_deathbringer_blood_nova();
|
new spell_deathbringer_blood_nova();
|
||||||
new spell_deathbringer_blood_nova_targeting();
|
new spell_deathbringer_blood_nova_targeting();
|
||||||
new spell_deathbringer_mark_of_the_fallen_champion();
|
new spell_deathbringer_boiling_blood();
|
||||||
new achievement_ive_gone_and_made_a_mess();
|
new achievement_ive_gone_and_made_a_mess();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,45 +113,44 @@ enum EventTypes
|
|||||||
EVENT_INTRO_5 = 4,
|
EVENT_INTRO_5 = 4,
|
||||||
EVENT_INTRO_6 = 5,
|
EVENT_INTRO_6 = 5,
|
||||||
EVENT_INTRO_7 = 6,
|
EVENT_INTRO_7 = 6,
|
||||||
EVENT_INTRO_FINISH = 7,
|
EVENT_BERSERK = 7,
|
||||||
EVENT_BERSERK = 8,
|
EVENT_DEATH_AND_DECAY = 8,
|
||||||
EVENT_DEATH_AND_DECAY = 9,
|
EVENT_DOMINATE_MIND_H = 9,
|
||||||
EVENT_DOMINATE_MIND_H = 10,
|
|
||||||
|
|
||||||
// Phase 1 only
|
// Phase 1 only
|
||||||
EVENT_P1_SUMMON_WAVE = 11,
|
EVENT_P1_SUMMON_WAVE = 10,
|
||||||
EVENT_P1_SHADOW_BOLT = 12,
|
EVENT_P1_SHADOW_BOLT = 11,
|
||||||
EVENT_P1_EMPOWER_CULTIST = 13,
|
EVENT_P1_EMPOWER_CULTIST = 12,
|
||||||
EVENT_P1_REANIMATE_CULTIST = 14,
|
EVENT_P1_REANIMATE_CULTIST = 13,
|
||||||
|
|
||||||
// Phase 2 only
|
// Phase 2 only
|
||||||
EVENT_P2_SUMMON_WAVE = 15,
|
EVENT_P2_SUMMON_WAVE = 14,
|
||||||
EVENT_P2_FROSTBOLT = 16,
|
EVENT_P2_FROSTBOLT = 15,
|
||||||
EVENT_P2_FROSTBOLT_VOLLEY = 17,
|
EVENT_P2_FROSTBOLT_VOLLEY = 16,
|
||||||
EVENT_P2_TOUCH_OF_INSIGNIFICANCE = 18,
|
EVENT_P2_TOUCH_OF_INSIGNIFICANCE = 17,
|
||||||
EVENT_P2_SUMMON_SHADE = 19,
|
EVENT_P2_SUMMON_SHADE = 18,
|
||||||
|
|
||||||
// Shared adds events
|
// Shared adds events
|
||||||
EVENT_CULTIST_DARK_MARTYRDOM = 20,
|
EVENT_CULTIST_DARK_MARTYRDOM = 19,
|
||||||
|
|
||||||
// Cult Fanatic
|
// Cult Fanatic
|
||||||
EVENT_FANATIC_NECROTIC_STRIKE = 21,
|
EVENT_FANATIC_NECROTIC_STRIKE = 20,
|
||||||
EVENT_FANATIC_SHADOW_CLEAVE = 22,
|
EVENT_FANATIC_SHADOW_CLEAVE = 21,
|
||||||
EVENT_FANATIC_VAMPIRIC_MIGHT = 23,
|
EVENT_FANATIC_VAMPIRIC_MIGHT = 22,
|
||||||
|
|
||||||
// Cult Adherent
|
// Cult Adherent
|
||||||
EVENT_ADHERENT_FROST_FEVER = 24,
|
EVENT_ADHERENT_FROST_FEVER = 23,
|
||||||
EVENT_ADHERENT_DEATHCHILL = 25,
|
EVENT_ADHERENT_DEATHCHILL = 24,
|
||||||
EVENT_ADHERENT_CURSE_OF_TORPOR = 26,
|
EVENT_ADHERENT_CURSE_OF_TORPOR = 25,
|
||||||
EVENT_ADHERENT_SHORUD_OF_THE_OCCULT = 27,
|
EVENT_ADHERENT_SHORUD_OF_THE_OCCULT = 26,
|
||||||
|
|
||||||
// Darnavan
|
// Darnavan
|
||||||
EVENT_DARNAVAN_BLADESTORM = 28,
|
EVENT_DARNAVAN_BLADESTORM = 27,
|
||||||
EVENT_DARNAVAN_CHARGE = 29,
|
EVENT_DARNAVAN_CHARGE = 28,
|
||||||
EVENT_DARNAVAN_INTIMIDATING_SHOUT = 30,
|
EVENT_DARNAVAN_INTIMIDATING_SHOUT = 29,
|
||||||
EVENT_DARNAVAN_MORTAL_STRIKE = 31,
|
EVENT_DARNAVAN_MORTAL_STRIKE = 30,
|
||||||
EVENT_DARNAVAN_SHATTERING_THROW = 32,
|
EVENT_DARNAVAN_SHATTERING_THROW = 31,
|
||||||
EVENT_DARNAVAN_SUNDER_ARMOR = 33,
|
EVENT_DARNAVAN_SUNDER_ARMOR = 32,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Phases
|
enum Phases
|
||||||
@@ -181,6 +180,7 @@ enum DeprogrammingData
|
|||||||
#define QUEST_DEPROGRAMMING RAID_MODE<uint32>(QUEST_DEPROGRAMMING_10, QUEST_DEPROGRAMMING_25, QUEST_DEPROGRAMMING_10, QUEST_DEPROGRAMMING_25)
|
#define QUEST_DEPROGRAMMING RAID_MODE<uint32>(QUEST_DEPROGRAMMING_10, QUEST_DEPROGRAMMING_25, QUEST_DEPROGRAMMING_10, QUEST_DEPROGRAMMING_25)
|
||||||
|
|
||||||
uint32 const SummonEntries[2] = {NPC_CULT_FANATIC, NPC_CULT_ADHERENT};
|
uint32 const SummonEntries[2] = {NPC_CULT_FANATIC, NPC_CULT_ADHERENT};
|
||||||
|
|
||||||
#define GUID_CULTIST 1
|
#define GUID_CULTIST 1
|
||||||
|
|
||||||
Position const SummonPositions[7] =
|
Position const SummonPositions[7] =
|
||||||
@@ -225,7 +225,6 @@ class boss_lady_deathwhisper : public CreatureScript
|
|||||||
{
|
{
|
||||||
_Reset();
|
_Reset();
|
||||||
me->SetPower(POWER_MANA, me->GetMaxPower(POWER_MANA));
|
me->SetPower(POWER_MANA, me->GetMaxPower(POWER_MANA));
|
||||||
me->SetLastManaUse(0xFFFFFFFF); // hacky, but no other way atm to prevent mana regen
|
|
||||||
events.SetPhase(PHASE_ONE);
|
events.SetPhase(PHASE_ONE);
|
||||||
_waveCounter = 0;
|
_waveCounter = 0;
|
||||||
_nextVengefulShadeTargetGUID = 0;
|
_nextVengefulShadeTargetGUID = 0;
|
||||||
@@ -239,9 +238,8 @@ class boss_lady_deathwhisper : public CreatureScript
|
|||||||
|
|
||||||
void MoveInLineOfSight(Unit* who)
|
void MoveInLineOfSight(Unit* who)
|
||||||
{
|
{
|
||||||
if (!_introDone && me->IsWithinDistInMap(who, 100.0f))
|
if (!_introDone && me->IsWithinDistInMap(who, 110.0f))
|
||||||
{
|
{
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
|
||||||
_introDone = true;
|
_introDone = true;
|
||||||
Talk(SAY_INTRO_1);
|
Talk(SAY_INTRO_1);
|
||||||
events.SetPhase(PHASE_INTRO);
|
events.SetPhase(PHASE_INTRO);
|
||||||
@@ -251,7 +249,6 @@ class boss_lady_deathwhisper : public CreatureScript
|
|||||||
events.ScheduleEvent(EVENT_INTRO_5, 39500, 0, PHASE_INTRO);
|
events.ScheduleEvent(EVENT_INTRO_5, 39500, 0, PHASE_INTRO);
|
||||||
events.ScheduleEvent(EVENT_INTRO_6, 48500, 0, PHASE_INTRO);
|
events.ScheduleEvent(EVENT_INTRO_6, 48500, 0, PHASE_INTRO);
|
||||||
events.ScheduleEvent(EVENT_INTRO_7, 58000, 0, PHASE_INTRO);
|
events.ScheduleEvent(EVENT_INTRO_7, 58000, 0, PHASE_INTRO);
|
||||||
events.ScheduleEvent(EVENT_INTRO_FINISH, 76000, 0, PHASE_INTRO);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -437,9 +434,6 @@ class boss_lady_deathwhisper : public CreatureScript
|
|||||||
case EVENT_INTRO_7:
|
case EVENT_INTRO_7:
|
||||||
Talk(SAY_INTRO_7);
|
Talk(SAY_INTRO_7);
|
||||||
break;
|
break;
|
||||||
case EVENT_INTRO_FINISH:
|
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
|
||||||
break;
|
|
||||||
case EVENT_DEATH_AND_DECAY:
|
case EVENT_DEATH_AND_DECAY:
|
||||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
|
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
|
||||||
DoCast(target, SPELL_DEATH_AND_DECAY);
|
DoCast(target, SPELL_DEATH_AND_DECAY);
|
||||||
|
|||||||
@@ -355,6 +355,9 @@ class boss_valithria_dreamwalker : public CreatureScript
|
|||||||
_over75PercentTalkDone = true;
|
_over75PercentTalkDone = true;
|
||||||
Talk(SAY_VALITHRIA_75_PERCENT);
|
Talk(SAY_VALITHRIA_75_PERCENT);
|
||||||
}
|
}
|
||||||
|
else if (_instance->GetBossState(DATA_VALITHRIA_DREAMWALKER) == NOT_STARTED)
|
||||||
|
if (Creature* archmage = me->FindNearestCreature(NPC_RISEN_ARCHMAGE, 30.0f))
|
||||||
|
archmage->AI()->DoZoneInCombat(); // call EnterCombat on one of them, that will make it all start
|
||||||
}
|
}
|
||||||
|
|
||||||
void DamageTaken(Unit* /*attacker*/, uint32& damage)
|
void DamageTaken(Unit* /*attacker*/, uint32& damage)
|
||||||
|
|||||||
Reference in New Issue
Block a user