diff options
11 files changed, 221 insertions, 170 deletions
diff --git a/sql/updates/world/2012_10_06_00_world_spell_difficulty.sql b/sql/updates/world/2012_10_06_00_world_spell_difficulty.sql new file mode 100644 index 00000000000..1dd1a468990 --- /dev/null +++ b/sql/updates/world/2012_10_06_00_world_spell_difficulty.sql @@ -0,0 +1,4 @@ +-- Boss Elder Nadox Move Heroic Spell in spelldifficulty +DELETE FROM `spelldifficulty_dbc` WHERE `id` =56130; +INSERT INTO `spelldifficulty_dbc`(`id`,`spellid0`,`spellid1`) VALUES +(56130,56130,59467); -- Brood Plague diff --git a/sql/updates/world/2012_10_06_01_world_spell_script_names.sql b/sql/updates/world/2012_10_06_01_world_spell_script_names.sql new file mode 100644 index 00000000000..354a359e45b --- /dev/null +++ b/sql/updates/world/2012_10_06_01_world_spell_script_names.sql @@ -0,0 +1,4 @@ +-- Boss Elder Nadox Move Heroic Spell Script +DELETE FROM `spell_script_names` WHERE `spell_id`=56153; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(56153, 'spell_elder_nadox_guardian'); diff --git a/src/server/game/DungeonFinding/LFGScripts.cpp b/src/server/game/DungeonFinding/LFGScripts.cpp index e4b67e22221..36f04b3020b 100644 --- a/src/server/game/DungeonFinding/LFGScripts.cpp +++ b/src/server/game/DungeonFinding/LFGScripts.cpp @@ -123,8 +123,8 @@ void LFGGroupScript::OnRemoveMember(Group* group, uint64 guid, RemoveMethod meth sLFGMgr->SetState(guid, LFG_STATE_NONE); if (Player* player = ObjectAccessor::FindPlayer(guid)) { - if (method == GROUP_REMOVEMETHOD_LEAVE && state != LFG_STATE_FINISHED_DUNGEON && player->HasAura(LFG_SPELL_DUNGEON_COOLDOWN)) - player->CastSpell(player, LFG_SPELL_DUNGEON_DESERTER, false); + if (method == GROUP_REMOVEMETHOD_LEAVE && sLFGMgr->GetState(gguid) != LFG_STATE_FINISHED_DUNGEON && sLFGMgr->GetDungeon(gguid, false)) + player->CastSpell(player, LFG_SPELL_DUNGEON_DESERTER, true); /* else if (group->isLfgKickActive()) // Update internal kick cooldown of kicked diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index bd5b544c33c..da6e4ef8407 100755 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -293,7 +293,7 @@ void GameObject::Update(uint32 diff) else if (Unit* owner = GetOwner()) { if (owner->isInCombat()) - m_cooldownTime = time(NULL) + goInfo->trap.cooldown; + m_cooldownTime = time(NULL) + goInfo->trap.startDelay; } m_lootState = GO_READY; break; @@ -417,7 +417,7 @@ void GameObject::Update(uint32 diff) bool IsBattlegroundTrap = false; //FIXME: this is activation radius (in different casting radius that must be selected from spell data) //TODO: move activated state code (cast itself) to GO_ACTIVATED, in this place only check activating and set state - float radius = (float)(goInfo->trap.radius)/2; // TODO rename radius to diameter (goInfo->trap.radius) should be (goInfo->trap.diameter) + float radius = (float)(goInfo->trap.radius)/3*2; // TODO rename radius to diameter (goInfo->trap.radius) should be (goInfo->trap.diameter) if (!radius) { if (goInfo->trap.cooldown != 3) // cast in other case (at some triggering/linked go/etc explicit call) diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp index ebab2cb99a9..b34a990d39d 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp @@ -44,7 +44,7 @@ enum event { EVENT_SPAWN = 1, EVENT_MINI, - EVENT_ROOT, + EVENT_ROOT, EVENT_BASH, EVENT_BOLT, EVENT_AURA @@ -58,13 +58,13 @@ public: struct boss_amanitarAI : public BossAI { boss_amanitarAI(Creature* creature) : BossAI(creature, DATA_AMANITAR) { } - + void Reset() { _Reset(); - + me->SetMeleeDamageSchool(SPELL_SCHOOL_NATURE); - me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true); + me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true); summons.DespawnAll(); if (instance) @@ -119,7 +119,7 @@ public: { trigger->DisappearAndDie(); } - else + else { u = 1 - u; trigger->DisappearAndDie(); @@ -143,7 +143,7 @@ public: { switch (eventId) { - case EVENT_SPAWN: + case EVENT_SPAWN: SpawnAdds(); events.ScheduleEvent(EVENT_SPAWN, 20*IN_MILLISECONDS); break; @@ -151,7 +151,7 @@ public: DoCast(SPELL_MINI); events.ScheduleEvent(EVENT_MINI, urand(25,30)*IN_MILLISECONDS); break; - case EVENT_ROOT: + case EVENT_ROOT: DoCast(SelectTarget(SELECT_TARGET_RANDOM,0, 100, true),SPELL_ENTANGLING_ROOTS,true); events.ScheduleEvent(EVENT_ROOT, urand(10,15)*IN_MILLISECONDS); break; @@ -192,7 +192,7 @@ public: { events.Reset(); events.ScheduleEvent(EVENT_AURA, 1*IN_MILLISECONDS); - + me->SetDisplayId(me->GetCreatureTemplate()->Modelid2); DoCast(SPELL_PUTRID_MUSHROOM); diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp index 9274a016e2f..1ff16f3ec91 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp @@ -17,6 +17,7 @@ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "SpellScript.h" #include "ahnkahet.h" enum Yells @@ -30,22 +31,31 @@ enum Yells enum Spells { - SPELL_BROOD_PLAGUE = 56130, - H_SPELL_BROOD_PLAGUE = 59467, - H_SPELL_BROOD_RAGE = 59465, - SPELL_ENRAGE = 26662, // Enraged if too far away from home - SPELL_SUMMON_SWARMERS = 56119, //2x 30178 -- 2x every 10secs - SPELL_SUMMON_SWARM_GUARD = 56120, //1x 30176 -- every 25secs + SPELL_BROOD_PLAGUE = 56130, + H_SPELL_BROOD_RAGE = 59465, + SPELL_ENRAGE = 26662, // Enraged if too far away from home + SPELL_SUMMON_SWARMERS = 56119, // 2x 30178 -- 2x every 10secs + SPELL_SUMMON_SWARM_GUARD = 56120, // 1x 30176 -- every 25% + // Spells Adds + SPELL_SPRINT = 56354, + SPELL_GUARDIAN_AURA = 56151 }; enum Creatures { - MOB_AHNKAHAR_SWARMER = 30178, - MOB_AHNKAHAR_GUARDIAN_ENTRY = 30176 + NPC_AHNKAHAR_SWARMER = 30178, + NPC_AHNKAHAR_GUARDIAN = 30176 }; -#define ACTION_AHNKAHAR_GUARDIAN_DEAD 1 -#define DATA_RESPECT_YOUR_ELDERS 2 +enum Events +{ + EVENT_PLAGUE = 1, + EVENT_RAGE, + EVENT_SUMMON_SWARMER, + EVENT_CHECK_ENRAGE, + EVENT_SPRINT, + DATA_RESPECT_YOUR_ELDERS +}; class boss_elder_nadox : public CreatureScript { @@ -54,32 +64,24 @@ class boss_elder_nadox : public CreatureScript struct boss_elder_nadoxAI : public ScriptedAI { - boss_elder_nadoxAI(Creature* creature) : ScriptedAI(creature) + boss_elder_nadoxAI(Creature* creature) : ScriptedAI(creature), summons(me) { instance = creature->GetInstanceScript(); } - uint32 uiPlagueTimer; - uint32 uiRagueTimer; - - uint32 uiSwarmerSpawnTimer; - uint32 uiGuardSpawnTimer; - uint32 uiEnrageTimer; - - bool bGuardSpawned; - bool respectYourElders; - + bool GuardianDied; + uint8 AmountHealthModifier; InstanceScript* instance; + SummonList summons; + EventMap events; void Reset() { - uiPlagueTimer = 13000; - uiRagueTimer = 20000; - uiSwarmerSpawnTimer = 10000; - uiGuardSpawnTimer = 25000; - uiEnrageTimer = 5000; - bGuardSpawned = false; - respectYourElders = true; + events.Reset(); + summons.DespawnAll(); + + AmountHealthModifier = 1; + GuardianDied = false; if (instance) instance->SetData(DATA_ELDER_NADOX_EVENT, NOT_STARTED); @@ -91,98 +93,95 @@ class boss_elder_nadox : public CreatureScript if (instance) instance->SetData(DATA_ELDER_NADOX_EVENT, IN_PROGRESS); - } - void KilledUnit(Unit* /*who*/) - { - Talk(SAY_SLAY); + events.ScheduleEvent(EVENT_PLAGUE, 13*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_SUMMON_SWARMER, 10*IN_MILLISECONDS); + + if (IsHeroic()) + { + events.ScheduleEvent(EVENT_RAGE, 12*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_CHECK_ENRAGE, 5*IN_MILLISECONDS); + } } - void JustDied(Unit* /*killer*/) + void JustSummoned(Creature* summon) { - Talk(SAY_DEATH); - - if (instance) - instance->SetData(DATA_ELDER_NADOX_EVENT, DONE); + summons.Summon(summon); + summon->AI()->DoZoneInCombat(); } - void DoAction(int32 const action) + void SummonedCreatureDies(Creature* summon, Unit* /*killer*/) { - if (action == ACTION_AHNKAHAR_GUARDIAN_DEAD) - respectYourElders = false; + if (summon->GetEntry() == NPC_AHNKAHAR_GUARDIAN) + GuardianDied = true; } uint32 GetData(uint32 type) { if (type == DATA_RESPECT_YOUR_ELDERS) - return respectYourElders ? 1 : 0; + return !GuardianDied ? 1 : 0; return 0; } + void KilledUnit(Unit* /*victim*/) + { + Talk(SAY_SLAY); + } + + void JustDied(Unit* /*killer*/) + { + Talk(SAY_DEATH); + + summons.DespawnAll(); + + if (instance) + instance->SetData(DATA_ELDER_NADOX_EVENT, DONE); + } + void UpdateAI(uint32 const diff) { if (!UpdateVictim()) return; - if (uiPlagueTimer <= diff) - { - DoCastVictim(SPELL_BROOD_PLAGUE); - uiPlagueTimer = 15000; - } - else - uiPlagueTimer -= diff; + events.Update(diff); - if (IsHeroic()) + while (uint32 eventId = events.ExecuteEvent()) { - if (uiRagueTimer <= diff) + switch (eventId) { - if (Creature* Swarmer = me->FindNearestCreature(MOB_AHNKAHAR_SWARMER, 35.0f)) - { - DoCast(Swarmer, H_SPELL_BROOD_RAGE, true); - uiRagueTimer = 15000; - } + case EVENT_PLAGUE: + DoCast(SelectTarget(SELECT_TARGET_RANDOM,0, 100, true),SPELL_BROOD_PLAGUE,true); + events.ScheduleEvent(EVENT_PLAGUE, 15*IN_MILLISECONDS); + break; + case EVENT_RAGE: + DoCast(H_SPELL_BROOD_RAGE); + events.ScheduleEvent(EVENT_RAGE, urand(50*IN_MILLISECONDS, 10*IN_MILLISECONDS)); + break; + case EVENT_SUMMON_SWARMER: + DoCast(me, SPELL_SUMMON_SWARMERS); + if (urand(1, 3) == 3) // 33% chance of dialog + Talk(SAY_EGG_SAC); + events.ScheduleEvent(EVENT_SUMMON_SWARMER, 10*IN_MILLISECONDS); + break; + case EVENT_CHECK_ENRAGE: + if (me->HasAura(SPELL_ENRAGE)) + return; + if (me->GetPositionZ() < 24.0f) + DoCast(me, SPELL_ENRAGE, true); + events.ScheduleEvent(EVENT_CHECK_ENRAGE, 5*IN_MILLISECONDS); + break; + default: + break; } - else - uiRagueTimer -= diff; } - if (uiSwarmerSpawnTimer <= diff) - { - DoCast(me, SPELL_SUMMON_SWARMERS, true); - DoCast(me, SPELL_SUMMON_SWARMERS); - if (urand(1, 3) == 3) // 33% chance of dialog - Talk(SAY_EGG_SAC); - - uiSwarmerSpawnTimer = 10000; - } - else - uiSwarmerSpawnTimer -= diff; - - if (!bGuardSpawned && uiGuardSpawnTimer <= diff) + if (me->HealthBelowPct(100 - AmountHealthModifier * 25)) { Talk(EMOTE_HATCHES, me->GetGUID()); DoCast(me, SPELL_SUMMON_SWARM_GUARD); - bGuardSpawned = true; + ++AmountHealthModifier; } - else - uiGuardSpawnTimer -= diff; - - if (uiEnrageTimer <= diff) - { - if (me->HasAura(SPELL_ENRAGE, 0)) - return; - - float x, y, z, o; - me->GetHomePosition(x, y, z, o); - if (z < 24) - if (!me->IsNonMeleeSpellCasted(false)) - DoCast(me, SPELL_ENRAGE, true); - - uiEnrageTimer = 5000; - } - else - uiEnrageTimer -= diff; DoMeleeAttackIfReady(); } @@ -194,12 +193,6 @@ class boss_elder_nadox : public CreatureScript } }; -enum AddSpells -{ - SPELL_SPRINT = 56354, - SPELL_GUARDIAN_AURA = 56151 -}; - class mob_ahnkahar_nerubian : public CreatureScript { public: @@ -207,50 +200,44 @@ class mob_ahnkahar_nerubian : public CreatureScript struct mob_ahnkahar_nerubianAI : public ScriptedAI { - mob_ahnkahar_nerubianAI(Creature* creature) : ScriptedAI(creature) - { - instance = creature->GetInstanceScript(); - } + mob_ahnkahar_nerubianAI(Creature* creature) : ScriptedAI(creature) { } - InstanceScript* instance; - uint32 uiSprintTimer; + EventMap events; void Reset() { - if (me->GetEntry() == MOB_AHNKAHAR_GUARDIAN_ENTRY) + if (me->GetEntry() == NPC_AHNKAHAR_GUARDIAN) DoCast(me, SPELL_GUARDIAN_AURA, true); - uiSprintTimer = 10000; + + events.ScheduleEvent(EVENT_SPRINT, 13*IN_MILLISECONDS); } void JustDied(Unit* /*killer*/) { - if (me->GetEntry() == MOB_AHNKAHAR_GUARDIAN_ENTRY) - if (Creature* Nadox = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ELDER_NADOX))) - Nadox->AI()->DoAction(ACTION_AHNKAHAR_GUARDIAN_DEAD); + if (me->GetEntry() == NPC_AHNKAHAR_GUARDIAN) + me->RemoveAurasDueToSpell(SPELL_GUARDIAN_AURA); } - void EnterCombat(Unit* /*who*/) {} - - void UpdateAI(uint32 const diff) + void UpdateAI(const uint32 diff) { if (!UpdateVictim()) return; - if (me->GetEntry() == MOB_AHNKAHAR_GUARDIAN_ENTRY) - me->RemoveAurasDueToSpell(SPELL_GUARDIAN_AURA); + events.Update(diff); - if (instance) - if (instance->GetData(DATA_ELDER_NADOX_EVENT) != IN_PROGRESS) - me->DespawnOrUnsummon(); + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - if (uiSprintTimer <= diff) + while (uint32 eventId = events.ExecuteEvent()) { - DoCast(me, SPELL_SPRINT); - uiSprintTimer = 25000; + switch (eventId) + { + case EVENT_SPRINT: + DoCast(me, SPELL_SPRINT); + events.ScheduleEvent(EVENT_SPRINT, 20*IN_MILLISECONDS); + break; + } } - else - uiSprintTimer -= diff; - DoMeleeAttackIfReady(); } }; @@ -274,6 +261,7 @@ public: creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE); creature->UpdateAllStats(); } + void Reset() {} void EnterCombat(Unit* /*who*/) {} void AttackStart(Unit* /*victim*/) {} @@ -287,28 +275,68 @@ public: } }; -class achievement_respect_your_elders : public AchievementCriteriaScript +class GuardianCheck { - public: - achievement_respect_your_elders() : AchievementCriteriaScript("achievement_respect_your_elders") {} +public: + bool operator()(const WorldObject* target) const + { + if (target->GetEntry() == NPC_AHNKAHAR_GUARDIAN) + return true; + + return false; + } +}; - bool OnCheck(Player* /*player*/, Unit* target) +class spell_elder_nadox_guardian : public SpellScriptLoader +{ +public: + spell_elder_nadox_guardian() : SpellScriptLoader("spell_elder_nadox_guardian") { } + + class spell_elder_nadox_guardian_SpellScript : public SpellScript + { + PrepareSpellScript(spell_elder_nadox_guardian_SpellScript); + + void FilterTargets(std::list<WorldObject*>& targets) { - if (!target) - return false; + targets.remove_if(GuardianCheck()); + } + + void Register() + { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_elder_nadox_guardian_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ALLY); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_elder_nadox_guardian_SpellScript::FilterTargets, EFFECT_1, TARGET_UNIT_SRC_AREA_ALLY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_elder_nadox_guardian_SpellScript(); + } +}; - if (Creature* Nadox = target->ToCreature()) - if (Nadox->AI()->GetData(DATA_RESPECT_YOUR_ELDERS)) - return true; +class achievement_respect_your_elders : public AchievementCriteriaScript +{ +public: + achievement_respect_your_elders() : AchievementCriteriaScript("achievement_respect_your_elders") {} + bool OnCheck(Player* /*player*/, Unit* target) + { + if (!target) return false; - } + + if (Creature* Nadox = target->ToCreature()) + if (Nadox->AI()->GetData(DATA_RESPECT_YOUR_ELDERS)) + return true; + + return false; + } }; void AddSC_boss_elder_nadox() { - new boss_elder_nadox; - new mob_ahnkahar_nerubian; - new mob_nadox_eggs; + new boss_elder_nadox(); + new mob_ahnkahar_nerubian(); + new mob_nadox_eggs(); + new spell_elder_nadox_guardian(); new achievement_respect_your_elders(); } diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp index 8e7863259ad..179dedb290b 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp @@ -105,8 +105,8 @@ public: void Reset() { me->CastSpell(me, SPELL_EVOCATE); - - _Reset(); + + _Reset(); if (instance->GetData(DATA_UROM_PLATAFORM) == 0) { diff --git a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp index 1f4a3d1b229..a0b5aded315 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp @@ -278,7 +278,7 @@ public: eternos->GetMotionMaster()->MovePoint(0, 943.202f, 1059.35f, 359.967f); if (Creature* verdisa = instance->GetCreature(verdisaGUID)) verdisa->SetWalk(true), - verdisa->GetMotionMaster()->MovePoint(0, 949.188f, 1032.91f, 359.967f); + verdisa->GetMotionMaster()->MovePoint(0, 949.188f, 1032.91f, 359.967f); } void GreaterWhelps() diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp index f2fa3158603..39fff139b52 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp @@ -108,10 +108,10 @@ class npc_verdisa_beglaristrasz_eternos : public CreatureScript { public: npc_verdisa_beglaristrasz_eternos() : CreatureScript("npc_verdisa_beglaristrasz_eternos") { } - - InstanceScript* instance; - - bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) + + InstanceScript* instance; + + bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) { player->PlayerTalkClass->ClearMenus(); switch (creature->GetEntry()) @@ -245,7 +245,7 @@ public: me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP); } }; - + CreatureAI* GetAI(Creature* creature) const { return new npc_verdisa_beglaristrasz_eternosAI(creature); @@ -293,7 +293,7 @@ public: { instance = creature->GetInstanceScript(); } - + InstanceScript* instance; uint64 summonerGUID; @@ -324,9 +324,9 @@ public: HealthWarningOff = false; DisableTakeOff = false; } - + void IsSummonedBy(Unit* summoner) - { + { if (instance->GetBossState(DATA_EREGOS_EVENT) == IN_PROGRESS) if (Creature* eregos = me->FindNearestCreature(NPC_EREGOS, 450.0f, true)) { @@ -357,7 +357,7 @@ public: void UpdateAI(const uint32 diff) { if (!(instance->GetBossState(DATA_VAROS_EVENT) == DONE)) - { + { if (me->HasAuraType(SPELL_AURA_CONTROL_VEHICLE)) { if (!(WelcomeOff)) @@ -380,7 +380,7 @@ public: { Talk(WHISPER_DRAKES_ABILITIES, me->GetCreatorGUID()); WelcomeSequelOff = false; - } + } else WelcomeSequelTimer -= diff; } } @@ -391,10 +391,10 @@ public: if (!(SpecialOff)) { if (SpecialTimer <= diff) - { + { Talk(WHISPER_DRAKES_SPECIAL, me->GetCreatorGUID()); SpecialOff = true; - } + } else SpecialTimer -= diff; } } @@ -402,25 +402,25 @@ public: if (me->HasAuraType(SPELL_AURA_CONTROL_VEHICLE)) { if (!(HealthWarningOff)) - { + { if (me->GetHealthPct() <= 40.0f) { Talk(WHISPER_DRAKES_LOWHEALTH, me->GetCreatorGUID()); HealthWarningOff = true; } } - } + } if (me->HasAuraType(SPELL_AURA_CONTROL_VEHICLE)) - { + { if (HealthWarningOff) - { + { if (WarningTimer <= diff) { HealthWarningOff = false; WarningTimer = 25000; } else WarningTimer -= diff; - } + } } if (!(me->HasAuraType(SPELL_AURA_CONTROL_VEHICLE))) { @@ -433,7 +433,7 @@ public: me->SetSpeed(MOVE_FLIGHT, 1.0f, true); Talk(SAY_DRAKES_TAKEOFF); Position pos; - me->GetPosition(&pos); + me->GetPosition(&pos); pos.m_positionX += 10.0f; pos.m_positionY += 10.0f; pos.m_positionZ += 12.0f; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp index 0967c38c2e7..92e56d4dd9a 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp @@ -255,7 +255,12 @@ class boss_steelbreaker : public CreatureScript { DoScriptText(RAND(SAY_STEELBREAKER_DEATH_1, SAY_STEELBREAKER_DEATH_2), me); if (IsEncounterComplete(instance, me)) - instance->SetData(BOSS_ASSEMBLY_OF_IRON, DONE); + { + instance->SetBossState(BOSS_ASSEMBLY_OF_IRON, DONE); + instance->SetBossState(BOSS_STEELBREAKER, DONE); + instance->SetBossState(BOSS_MOLGEIM, DONE); + instance->SetBossState(BOSS_BRUNDIR, DONE); + } else me->SetLootRecipient(NULL); @@ -379,7 +384,12 @@ class boss_runemaster_molgeim : public CreatureScript { DoScriptText(RAND(SAY_MOLGEIM_DEATH_1, SAY_MOLGEIM_DEATH_2), me); if (IsEncounterComplete(instance, me)) - instance->SetData(BOSS_ASSEMBLY_OF_IRON, DONE); + { + instance->SetBossState(BOSS_ASSEMBLY_OF_IRON, DONE); + instance->SetBossState(BOSS_STEELBREAKER, DONE); + instance->SetBossState(BOSS_MOLGEIM, DONE); + instance->SetBossState(BOSS_BRUNDIR, DONE); + } else me->SetLootRecipient(NULL); @@ -620,7 +630,12 @@ class boss_stormcaller_brundir : public CreatureScript { DoScriptText(RAND(SAY_BRUNDIR_DEATH_1, SAY_BRUNDIR_DEATH_2), me); if (IsEncounterComplete(instance, me)) - instance->SetData(BOSS_ASSEMBLY_OF_IRON, DONE); + { + instance->SetBossState(BOSS_ASSEMBLY_OF_IRON, DONE); + instance->SetBossState(BOSS_STEELBREAKER, DONE); + instance->SetBossState(BOSS_MOLGEIM, DONE); + instance->SetBossState(BOSS_BRUNDIR, DONE); + } else me->SetLootRecipient(NULL); diff --git a/src/server/shared/Utilities/Util.h b/src/server/shared/Utilities/Util.h index 21aaa36498d..f84e5155bb1 100755 --- a/src/server/shared/Utilities/Util.h +++ b/src/server/shared/Utilities/Util.h @@ -31,7 +31,7 @@ template<typename T, class S> struct Finder { T val_; T S::* idMember_; - + Finder(T val, T S::* idMember) : val_(val), idMember_(idMember) {} bool operator()(const std::pair<int, S> &obj) { return obj.second.*idMember_ == val_; } }; |
