aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/scripts/world_scripts_full.sql8
-rw-r--r--sql/updates/world/2011_06_26_00_world_spell_script_names.sql1
-rw-r--r--sql/updates/world/2011_06_26_01_world_command.sql1
-rw-r--r--sql/updates/world/2011_06_26_02_world_spell_script_names.sql6
-rw-r--r--sql/updates/world/2011_06_26_03_world_spell_dbc.sql1
-rwxr-xr-xsrc/server/game/Chat/Chat.cpp1
-rwxr-xr-xsrc/server/game/Chat/Chat.h1
-rwxr-xr-xsrc/server/game/Chat/Commands/Level2.cpp23
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp8
-rwxr-xr-xsrc/server/game/Spells/SpellMgr.cpp12
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp42
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp62
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp3
13 files changed, 78 insertions, 91 deletions
diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql
index 9cf49eb561e..45c971dd970 100644
--- a/sql/scripts/world_scripts_full.sql
+++ b/sql/scripts/world_scripts_full.sql
@@ -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'),
diff --git a/sql/updates/world/2011_06_26_00_world_spell_script_names.sql b/sql/updates/world/2011_06_26_00_world_spell_script_names.sql
new file mode 100644
index 00000000000..0a7323b14bd
--- /dev/null
+++ b/sql/updates/world/2011_06_26_00_world_spell_script_names.sql
@@ -0,0 +1 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_deathbringer_mark_of_the_fallen_champion';
diff --git a/sql/updates/world/2011_06_26_01_world_command.sql b/sql/updates/world/2011_06_26_01_world_command.sql
new file mode 100644
index 00000000000..d5ac88cfc4c
--- /dev/null
+++ b/sql/updates/world/2011_06_26_01_world_command.sql
@@ -0,0 +1 @@
+DELETE FROM `command` WHERE `name`='pet tp';
diff --git a/sql/updates/world/2011_06_26_02_world_spell_script_names.sql b/sql/updates/world/2011_06_26_02_world_spell_script_names.sql
new file mode 100644
index 00000000000..cde210b091c
--- /dev/null
+++ b/sql/updates/world/2011_06_26_02_world_spell_script_names.sql
@@ -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');
diff --git a/sql/updates/world/2011_06_26_03_world_spell_dbc.sql b/sql/updates/world/2011_06_26_03_world_spell_dbc.sql
new file mode 100644
index 00000000000..d618976707c
--- /dev/null
+++ b/sql/updates/world/2011_06_26_03_world_spell_dbc.sql
@@ -0,0 +1 @@
+UPDATE `spell_dbc` SET `Effect1`=28, `EffectMiscValueB1`=64 WHERE `Id`=24308;
diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp
index 6142f52855e..1e9a65500de 100755
--- a/src/server/game/Chat/Chat.cpp
+++ b/src/server/game/Chat/Chat.cpp
@@ -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 }
};
diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h
index dd845c1c70d..257e7fec864 100755
--- a/src/server/game/Chat/Chat.h
+++ b/src/server/game/Chat/Chat.h
@@ -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);
diff --git a/src/server/game/Chat/Commands/Level2.cpp b/src/server/game/Chat/Commands/Level2.cpp
index 93347163b92..e1b9b61e920 100755
--- a/src/server/game/Chat/Commands/Level2.cpp
+++ b/src/server/game/Chat/Commands/Level2.cpp
@@ -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)
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index fd8be29c3e0..c3c2ceaa11d 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -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)
{
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 4f07ed90c5d..f1879099a0a 100755
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -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
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
index a2dc0127732..6fc60bdba09 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
@@ -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();
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
index f760d415ac4..b050f42fc6c 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
@@ -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);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
index c95daa701e3..beeab1e72bd 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
@@ -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)