diff options
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) |