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'),
|
||||
( 72378, 'spell_deathbringer_blood_nova_targeting'),
|
||||
( 73058, 'spell_deathbringer_blood_nova_targeting'),
|
||||
( 72255, 'spell_deathbringer_mark_of_the_fallen_champion'),
|
||||
( 72444, 'spell_deathbringer_mark_of_the_fallen_champion'),
|
||||
( 72445, 'spell_deathbringer_mark_of_the_fallen_champion'),
|
||||
( 72446, 'spell_deathbringer_mark_of_the_fallen_champion'),
|
||||
( 72385, 'spell_deathbringer_boiling_blood'),
|
||||
( 72441, 'spell_deathbringer_boiling_blood'),
|
||||
( 72442, 'spell_deathbringer_boiling_blood'),
|
||||
( 72443, 'spell_deathbringer_boiling_blood'),
|
||||
( 72155, 'spell_icc_harvest_blight_specimen'),
|
||||
( 72162, 'spell_icc_harvest_blight_specimen'),
|
||||
( 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 },
|
||||
{ "learn", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandlePetLearnCommand>, "", NULL },
|
||||
{ "unlearn", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandlePetUnlearnCommand>, "", NULL },
|
||||
{ "tp", SEC_GAMEMASTER, false, OldHandler<&ChatHandler::HandlePetTpCommand>, "", NULL },
|
||||
{ NULL, 0, false, NULL, "", NULL }
|
||||
};
|
||||
|
||||
|
||||
@@ -293,7 +293,6 @@ class ChatHandler
|
||||
bool HandleHideAreaCommand(const char* args);
|
||||
bool HandleAddItemCommand(const char* args);
|
||||
bool HandleAddItemSetCommand(const char* args);
|
||||
bool HandlePetTpCommand(const char* args);
|
||||
bool HandlePetUnlearnCommand(const char* args);
|
||||
bool HandlePetLearnCommand(const char* args);
|
||||
bool HandleCreatePetCommand(const char* args);
|
||||
|
||||
@@ -913,29 +913,6 @@ bool ChatHandler::HandlePetUnlearnCommand(const char *args)
|
||||
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)
|
||||
{
|
||||
if (!*args)
|
||||
|
||||
@@ -8718,6 +8718,8 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig
|
||||
// Deathbringer Saurfang - Rune of Blood
|
||||
case 72408:
|
||||
// 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))
|
||||
return false;
|
||||
break;
|
||||
@@ -8725,6 +8727,12 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig
|
||||
case 72176:
|
||||
basepoints0 = 3;
|
||||
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 15338: // Improved Spirit Tap (Rank 2)
|
||||
{
|
||||
|
||||
@@ -4266,12 +4266,9 @@ void SpellMgr::LoadSpellCustomAttr()
|
||||
spellInfo->EffectRadiusIndex[0] = 12; // 100yd
|
||||
++count;
|
||||
break;
|
||||
case 72385: // Boiling Blood (Deathbringer Saurfang)
|
||||
case 72441: // Boiling Blood (Deathbringer Saurfang)
|
||||
case 72442: // Boiling Blood (Deathbringer Saurfang)
|
||||
case 72443: // Boiling Blood (Deathbringer Saurfang)
|
||||
spellInfo->EffectImplicitTargetA[0] = TARGET_UNIT_TARGET_ENEMY;
|
||||
spellInfo->EffectImplicitTargetB[0] = 0;
|
||||
case 72723: // Resistant Skin (Deathbringer Saurfang adds)
|
||||
// this spell initially granted Shadow damage immunity, however it was removed but the data was left in client
|
||||
spellInfo->Effect[2] = 0;
|
||||
++count;
|
||||
break;
|
||||
case 70460: // Coldflame Jets (Traps after Saurfang)
|
||||
@@ -4333,8 +4330,9 @@ void SpellMgr::LoadSpellCustomAttr()
|
||||
spellInfo->EffectImplicitTargetB[0] = 0;
|
||||
++count;
|
||||
break;
|
||||
case 72706: // Achievement Check (Valithria Dreamwalker)
|
||||
case 71357: // Order Whelp
|
||||
spellInfo->EffectRadiusIndex[0] = 22;
|
||||
spellInfo->EffectRadiusIndex[0] = 22; // 200yd
|
||||
++count;
|
||||
break;
|
||||
case 70598: // Sindragosa's Fury
|
||||
|
||||
@@ -450,7 +450,7 @@ class boss_deathbringer_saurfang : public CreatureScript
|
||||
// select at range only
|
||||
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, -10.0f, true);
|
||||
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)
|
||||
DoCast(target, SPELL_BLOOD_NOVA_TRIGGER);
|
||||
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);
|
||||
break;
|
||||
case EVENT_BOILING_BLOOD:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, -BOILING_BLOOD_HELPER))
|
||||
DoCast(target, SPELL_BOILING_BLOOD);
|
||||
DoCast(me, SPELL_BOILING_BLOOD);
|
||||
events.ScheduleEvent(EVENT_BOILING_BLOOD, urand(15000, 20000), 0, PHASE_COMBAT);
|
||||
break;
|
||||
case EVENT_BERSERK:
|
||||
@@ -744,7 +743,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
|
||||
InstanceScript* instance = creature->GetInstanceScript();
|
||||
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());
|
||||
}
|
||||
|
||||
@@ -1222,38 +1221,39 @@ class spell_deathbringer_blood_nova_targeting : public SpellScriptLoader
|
||||
}
|
||||
};
|
||||
|
||||
class MarkOfTheFallenChampionCheck
|
||||
class spell_deathbringer_boiling_blood : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
bool operator() (Unit* unit)
|
||||
{
|
||||
return !unit->HasAura(SPELL_MARK_OF_THE_FALLEN_CHAMPION);
|
||||
}
|
||||
};
|
||||
spell_deathbringer_boiling_blood() : SpellScriptLoader("spell_deathbringer_boiling_blood") { }
|
||||
|
||||
class spell_deathbringer_mark_of_the_fallen_champion : public SpellScriptLoader
|
||||
{
|
||||
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
|
||||
class spell_deathbringer_boiling_blood_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)
|
||||
{
|
||||
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()
|
||||
{
|
||||
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
|
||||
{
|
||||
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_blood_nova();
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -113,45 +113,44 @@ enum EventTypes
|
||||
EVENT_INTRO_5 = 4,
|
||||
EVENT_INTRO_6 = 5,
|
||||
EVENT_INTRO_7 = 6,
|
||||
EVENT_INTRO_FINISH = 7,
|
||||
EVENT_BERSERK = 8,
|
||||
EVENT_DEATH_AND_DECAY = 9,
|
||||
EVENT_DOMINATE_MIND_H = 10,
|
||||
EVENT_BERSERK = 7,
|
||||
EVENT_DEATH_AND_DECAY = 8,
|
||||
EVENT_DOMINATE_MIND_H = 9,
|
||||
|
||||
// Phase 1 only
|
||||
EVENT_P1_SUMMON_WAVE = 11,
|
||||
EVENT_P1_SHADOW_BOLT = 12,
|
||||
EVENT_P1_EMPOWER_CULTIST = 13,
|
||||
EVENT_P1_REANIMATE_CULTIST = 14,
|
||||
EVENT_P1_SUMMON_WAVE = 10,
|
||||
EVENT_P1_SHADOW_BOLT = 11,
|
||||
EVENT_P1_EMPOWER_CULTIST = 12,
|
||||
EVENT_P1_REANIMATE_CULTIST = 13,
|
||||
|
||||
// Phase 2 only
|
||||
EVENT_P2_SUMMON_WAVE = 15,
|
||||
EVENT_P2_FROSTBOLT = 16,
|
||||
EVENT_P2_FROSTBOLT_VOLLEY = 17,
|
||||
EVENT_P2_TOUCH_OF_INSIGNIFICANCE = 18,
|
||||
EVENT_P2_SUMMON_SHADE = 19,
|
||||
EVENT_P2_SUMMON_WAVE = 14,
|
||||
EVENT_P2_FROSTBOLT = 15,
|
||||
EVENT_P2_FROSTBOLT_VOLLEY = 16,
|
||||
EVENT_P2_TOUCH_OF_INSIGNIFICANCE = 17,
|
||||
EVENT_P2_SUMMON_SHADE = 18,
|
||||
|
||||
// Shared adds events
|
||||
EVENT_CULTIST_DARK_MARTYRDOM = 20,
|
||||
EVENT_CULTIST_DARK_MARTYRDOM = 19,
|
||||
|
||||
// Cult Fanatic
|
||||
EVENT_FANATIC_NECROTIC_STRIKE = 21,
|
||||
EVENT_FANATIC_SHADOW_CLEAVE = 22,
|
||||
EVENT_FANATIC_VAMPIRIC_MIGHT = 23,
|
||||
EVENT_FANATIC_NECROTIC_STRIKE = 20,
|
||||
EVENT_FANATIC_SHADOW_CLEAVE = 21,
|
||||
EVENT_FANATIC_VAMPIRIC_MIGHT = 22,
|
||||
|
||||
// Cult Adherent
|
||||
EVENT_ADHERENT_FROST_FEVER = 24,
|
||||
EVENT_ADHERENT_DEATHCHILL = 25,
|
||||
EVENT_ADHERENT_CURSE_OF_TORPOR = 26,
|
||||
EVENT_ADHERENT_SHORUD_OF_THE_OCCULT = 27,
|
||||
EVENT_ADHERENT_FROST_FEVER = 23,
|
||||
EVENT_ADHERENT_DEATHCHILL = 24,
|
||||
EVENT_ADHERENT_CURSE_OF_TORPOR = 25,
|
||||
EVENT_ADHERENT_SHORUD_OF_THE_OCCULT = 26,
|
||||
|
||||
// Darnavan
|
||||
EVENT_DARNAVAN_BLADESTORM = 28,
|
||||
EVENT_DARNAVAN_CHARGE = 29,
|
||||
EVENT_DARNAVAN_INTIMIDATING_SHOUT = 30,
|
||||
EVENT_DARNAVAN_MORTAL_STRIKE = 31,
|
||||
EVENT_DARNAVAN_SHATTERING_THROW = 32,
|
||||
EVENT_DARNAVAN_SUNDER_ARMOR = 33,
|
||||
EVENT_DARNAVAN_BLADESTORM = 27,
|
||||
EVENT_DARNAVAN_CHARGE = 28,
|
||||
EVENT_DARNAVAN_INTIMIDATING_SHOUT = 29,
|
||||
EVENT_DARNAVAN_MORTAL_STRIKE = 30,
|
||||
EVENT_DARNAVAN_SHATTERING_THROW = 31,
|
||||
EVENT_DARNAVAN_SUNDER_ARMOR = 32,
|
||||
};
|
||||
|
||||
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)
|
||||
|
||||
uint32 const SummonEntries[2] = {NPC_CULT_FANATIC, NPC_CULT_ADHERENT};
|
||||
|
||||
#define GUID_CULTIST 1
|
||||
|
||||
Position const SummonPositions[7] =
|
||||
@@ -225,7 +225,6 @@ class boss_lady_deathwhisper : public CreatureScript
|
||||
{
|
||||
_Reset();
|
||||
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);
|
||||
_waveCounter = 0;
|
||||
_nextVengefulShadeTargetGUID = 0;
|
||||
@@ -239,9 +238,8 @@ class boss_lady_deathwhisper : public CreatureScript
|
||||
|
||||
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;
|
||||
Talk(SAY_INTRO_1);
|
||||
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_6, 48500, 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:
|
||||
Talk(SAY_INTRO_7);
|
||||
break;
|
||||
case EVENT_INTRO_FINISH:
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
break;
|
||||
case EVENT_DEATH_AND_DECAY:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
|
||||
DoCast(target, SPELL_DEATH_AND_DECAY);
|
||||
|
||||
@@ -355,6 +355,9 @@ class boss_valithria_dreamwalker : public CreatureScript
|
||||
_over75PercentTalkDone = true;
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user