diff options
-rw-r--r-- | sql/base/world_database.sql | 2 | ||||
-rw-r--r-- | sql/scripts/world_script_texts.sql | 1 | ||||
-rw-r--r-- | sql/scripts/world_scripts_full.sql | 2 | ||||
-rw-r--r-- | sql/updates/10181_world_script_name.sql | 3 | ||||
-rw-r--r-- | sql/updates/10181_world_script_texts.sql | 3 | ||||
-rw-r--r-- | sql/updates/10181_world_spell_script_names.sql | 4 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/ulduar/boss_ignis.cpp | 444 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp | 14 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/ulduar/ulduar.h | 6 |
9 files changed, 432 insertions, 47 deletions
diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql index 74013e28f80..c917a3adf72 100644 --- a/sql/base/world_database.sql +++ b/sql/base/world_database.sql @@ -26838,6 +26838,8 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES ( 71222, 'spell_festergut_blighted_spores'), ( 73033, 'spell_festergut_blighted_spores'), ( 73034, 'spell_festergut_blighted_spores'), +( 62717, 'spell_ignis_slag_pot'), +( 63477, 'spell_ignis_slag_pot'), -- quest ( 8913, 'spell_q55_sacred_cleansing'), ( 17271, 'spell_q5206_test_fetid_skull'), diff --git a/sql/scripts/world_script_texts.sql b/sql/scripts/world_script_texts.sql index 0b0525da58e..0186eaba102 100644 --- a/sql/scripts/world_script_texts.sql +++ b/sql/scripts/world_script_texts.sql @@ -2485,6 +2485,7 @@ INSERT INTO `script_texts` (`npc_entry`,`entry`,`content_default`,`content_loc1` (33118,-1603226,'Let the inferno consume you!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,15567,1,0,0,'Ignis SAY_SCORCH_1'), (33118,-1603227,'BURN! Burn in the makers fire!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,15568,1,0,0,'Ignis SAY_SCORCH_2'), (33118,-1603228,'Let it be finished!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,15571,1,0,0,'Ignis SAY_BERSERK'), + (33118,-1603229,'Ignis the Furnace Master begins to cast Flame Jets!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'IGNIS EMOTE_JETS'), -- Kologarn (32930,-1603230,'None shall pass!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,15586,1,0,0,'Kologarn SAY_AGGRO'), diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql index cc6ba278698..f13819b4af7 100644 --- a/sql/scripts/world_scripts_full.sql +++ b/sql/scripts/world_scripts_full.sql @@ -1486,6 +1486,8 @@ UPDATE `creature_template` SET `ScriptName`='boss_flame_leviathan_overload_devic UPDATE `creature_template` SET `ScriptName`='npc_colossus' WHERE `entry`=33237; UPDATE `creature_template` SET `ScriptName`='spell_pool_of_tar' WHERE `entry`=33090; UPDATE `creature_template` SET `ScriptName`='boss_ignis' WHERE `entry`=33118; +UPDATE `creature_template` SET `ScriptName`='npc_iron_construct' WHERE `entry`=33121; +UPDATE `creature_template` SET `ScriptName`='npc_scorch_ground' WHERE `entry`=33221; UPDATE `creature_template` SET `ScriptName`='boss_razorscale' WHERE `entry`=33186; UPDATE `creature_template` SET `ScriptName`='boss_xt002' WHERE `entry`=33293; UPDATE `creature_template` SET `ScriptName`='mob_xt002_heart' WHERE `entry`=33329; diff --git a/sql/updates/10181_world_script_name.sql b/sql/updates/10181_world_script_name.sql new file mode 100644 index 00000000000..d654bdbecbf --- /dev/null +++ b/sql/updates/10181_world_script_name.sql @@ -0,0 +1,3 @@ +-- Add script name to boss ignis adds +UPDATE `creature_template` SET `ScriptName`='npc_iron_construct' WHERE `entry`=33121; +UPDATE `creature_template` SET `ScriptName`='npc_scorch_ground' WHERE `entry`=33221; diff --git a/sql/updates/10181_world_script_texts.sql b/sql/updates/10181_world_script_texts.sql new file mode 100644 index 00000000000..e131affb749 --- /dev/null +++ b/sql/updates/10181_world_script_texts.sql @@ -0,0 +1,3 @@ +DELETE FROM `script_texts` WHERE `entry` IN (-1571043,-1571042); +INSERT INTO `script_texts` (`npc_entry`,`entry`,`content_default`,`content_loc1`,`content_loc2`,`content_loc3`,`content_loc4`,`content_loc5`,`content_loc6`,`content_loc7`,`content_loc8`,`sound`,`type`,`language`,`emote`,`comment`) VALUES +(33118,-1603229,'Ignis the Furnace Master begins to cast Flame Jets!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'IGNIS EMOTE_JETS'); diff --git a/sql/updates/10181_world_spell_script_names.sql b/sql/updates/10181_world_spell_script_names.sql new file mode 100644 index 00000000000..8fd8b74e431 --- /dev/null +++ b/sql/updates/10181_world_spell_script_names.sql @@ -0,0 +1,4 @@ +DELETE FROM `spell_script_names` WHERE `spell_id`=62717 AND `ScriptName`='spell_ignis_slag_pot'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(62717, 'spell_ignis_slag_pot'); -- boss Ignis 10man +(62717, 'spell_ignis_slag_pot'); -- boss Ignis 25man diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_ignis.cpp index 33b97eff96e..875b9c1ef98 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_ignis.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_ignis.cpp @@ -17,10 +17,7 @@ #include "ScriptPCH.h" #include "ulduar.h" - -#define SPELL_FLAME_JETS 62680 -#define SPELL_SCORCH 62546 -#define SPELL_SLAG_POT 62717 +#include "SpellAuraEffects.h" enum Yells { @@ -33,11 +30,83 @@ enum Yells SAY_SCORCH_1 = -1603226, SAY_SCORCH_2 = -1603227, SAY_BERSERK = -1603228, + EMOTE_JETS = -1603229, }; -enum +enum Spells +{ + SPELL_FLAME_JETS = 62680, + SPELL_SCORCH = 62546, + SPELL_SLAG_POT = 62717, + SPELL_SLAG_POT_DAMAGE = 65722, + SPELL_SLAG_IMBUED = 62836, + SPELL_ACTIVATE_CONSTRUCT = 62488, + SPELL_STRENGHT = 64473, + SPELL_GRAB = 62707, + SPELL_BERSERK = 47008 +}; + +enum Events +{ + EVENT_NONE, + EVENT_JET, + EVENT_SCORCH, + EVENT_SLAG_POT, + EVENT_GRAB_POT, + EVENT_CHANGE_POT, + EVENT_END_POT, + EVENT_CONSTRUCT, + EVENT_BERSERK, + ACTION_REMOVE_BUFF = 20 +}; + +enum eCreatures +{ + NPC_IRON_CONSTRUCT = 33121, + NPC_GROUND_SCORCH = 33221 +}; + +enum ConstructSpells +{ + SPELL_HEAT = 65667, + SPELL_MOLTEN = 62373, + SPELL_BRITTLE = 62382, + SPELL_SHATTER = 62383, + SPELL_GROUND = 62548, +}; + +enum eAchievementData +{ + ACHIEVEMENT_STOKIN_THE_FURNACE_10 = 2930, + ACHIEVEMENT_STOKIN_THE_FURNACE_25 = 2929, + ACHIEVEMENT_SHATTERED_10 = 2925, + ACHIEVEMENT_SHATTERED_25 = 2926, +}; + +#define MAX_ENCOUNTER_TIME 4 * 60 * 1000 + +const Position Pos[20] = { - ACHIEV_TIMED_START_EVENT = 20951, + {630.366f,216.772f,360.891f,3.001970f}, + {630.594f,231.846f,360.891f,3.124140f}, + {630.435f,337.246f,360.886f,3.211410f}, + {630.493f,313.349f,360.886f,3.054330f}, + {630.444f,321.406f,360.886f,3.124140f}, + {630.366f,247.307f,360.888f,3.211410f}, + {630.698f,305.311f,360.886f,3.001970f}, + {630.500f,224.559f,360.891f,3.054330f}, + {630.668f,239.840f,360.890f,3.159050f}, + {630.384f,329.585f,360.886f,3.159050f}, + {543.220f,313.451f,360.886f,0.104720f}, + {543.356f,329.408f,360.886f,6.248280f}, + {543.076f,247.458f,360.888f,6.213370f}, + {543.117f,232.082f,360.891f,0.069813f}, + {543.161f,305.956f,360.886f,0.157080f}, + {543.277f,321.482f,360.886f,0.052360f}, + {543.316f,337.468f,360.886f,6.195920f}, + {543.280f,239.674f,360.890f,6.265730f}, + {543.265f,217.147f,360.891f,0.174533f}, + {543.256f,224.831f,360.891f,0.122173f} }; class boss_ignis : public CreatureScript @@ -52,51 +121,68 @@ public: struct boss_ignis_AI : public BossAI { - boss_ignis_AI(Creature *pCreature) : BossAI(pCreature, TYPE_IGNIS) {} + boss_ignis_AI(Creature *pCreature) : BossAI(pCreature, TYPE_IGNIS), vehicle(me->GetVehicleKit()) + { + assert(vehicle); + me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true); + me->ApplySpellImmune(0, IMMUNITY_ID, 49560, true); // Death Grip jump effect + } + + Vehicle *vehicle; - uint32 uiFlameJetsTimer; - uint32 uiScorchTimer; - uint32 uiSlagPotTimer; + std::vector<Creature*> triggers; + + bool Shattered; + uint32 SlagPotGUID; + uint32 EncounterTime; + uint32 ConstructTimer; void Reset() { _Reset(); - uiFlameJetsTimer = 32000; - uiScorchTimer = 100; - uiSlagPotTimer = 100; - - if (instance) - instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); + if (vehicle) + vehicle->RemoveAllPassengers(); } - void EnterCombat(Unit* /*who*/) + void EnterCombat(Unit *who) { - DoScriptText(SAY_AGGRO,me); _EnterCombat(); - - if (instance) - instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); + DoScriptText(SAY_AGGRO, me); + events.ScheduleEvent(EVENT_JET, 30000); + events.ScheduleEvent(EVENT_SCORCH, 25000); + events.ScheduleEvent(EVENT_SLAG_POT, 35000); + events.ScheduleEvent(EVENT_CONSTRUCT, 15000); + events.ScheduleEvent(EVENT_END_POT, 40000); + events.ScheduleEvent(EVENT_BERSERK, 480000); + SlagPotGUID = 0; + EncounterTime = 0; + ConstructTimer = 0; + Shattered = false; } - void KilledUnit(Unit* /*victim*/) + void JustDied(Unit *victim) { - DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me); - } - - void JustDied(Unit * /*victim*/) - { - DoScriptText(SAY_DEATH, me); _JustDied(); - } + DoScriptText(SAY_DEATH, me); - void MoveInLineOfSight(Unit* /*who*/) {} + // Achievements + if (instance) + { + // Shattered + if (Shattered) + instance->DoCompleteAchievement(RAID_MODE(ACHIEVEMENT_SHATTERED_10,ACHIEVEMENT_SHATTERED_25)); + // Stokin' the Furnace + if (EncounterTime <= MAX_ENCOUNTER_TIME) + instance->DoCompleteAchievement(RAID_MODE(ACHIEVEMENT_STOKIN_THE_FURNACE_10,ACHIEVEMENT_STOKIN_THE_FURNACE_25)); + } + } void UpdateAI(const uint32 diff) { if (!UpdateVictim()) return; - if (me->GetPositionY() < 150 || me->GetPositionX() < 450) // Not Blizzlike, anti-exploit to prevent players from pulling bosses to vehicles. + if(me->GetPositionY() < 150 || me->GetPositionX() < 450 || me->getVictim()->GetTypeId() == !TYPEID_PLAYER) { me->RemoveAllAuras(); me->DeleteThreatList(); @@ -104,35 +190,299 @@ public: me->GetMotionMaster()->MoveTargetedHome(); } - if (uiFlameJetsTimer <= diff) + events.Update(diff); + + if (me->hasUnitState(UNIT_STAT_CASTING)) + return; + + EncounterTime += diff; + ConstructTimer += diff; + + while(uint32 eventId = events.ExecuteEvent()) { - DoCast(SPELL_FLAME_JETS); - uiFlameJetsTimer = 25000; - } else uiFlameJetsTimer -= diff; + switch(eventId) + { + case EVENT_JET: + me->MonsterTextEmote(EMOTE_JETS, 0, true); + DoCastAOE(SPELL_FLAME_JETS); + events.RescheduleEvent(EVENT_JET,urand(35000,40000)); + break; + case EVENT_SLAG_POT: + if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) + { + DoScriptText(SAY_SLAG_POT, me); + SlagPotGUID = pTarget->GetGUID(); + DoCast(pTarget, SPELL_GRAB); + events.DelayEvents(3000); + events.ScheduleEvent(EVENT_GRAB_POT, 500); + } + events.RescheduleEvent(EVENT_SLAG_POT,RAID_MODE(30000, 15000)); + break; + case EVENT_GRAB_POT: + if (Unit* SlagPotTarget = Unit::GetUnit(*me, SlagPotGUID)) + { + SlagPotTarget->EnterVehicle(me, 0); + events.CancelEvent(EVENT_GRAB_POT); + events.ScheduleEvent(EVENT_CHANGE_POT, 1000); + } + break; + case EVENT_CHANGE_POT: + if (Unit* SlagPotTarget = Unit::GetUnit(*me, SlagPotGUID)) + { + SlagPotTarget->AddAura(SPELL_SLAG_POT, SlagPotTarget); + SlagPotTarget->EnterVehicle(me, 1); + events.CancelEvent(EVENT_CHANGE_POT); + events.ScheduleEvent(EVENT_END_POT, 10000); + } + break; + case EVENT_END_POT: + if (Unit* SlagPotTarget = Unit::GetUnit(*me, SlagPotGUID)) + { + SlagPotTarget->ExitVehicle(); + SlagPotTarget = NULL; + SlagPotGUID = NULL; + events.CancelEvent(EVENT_END_POT); + } + break; + case EVENT_SCORCH: + DoScriptText(RAND(SAY_SCORCH_1, SAY_SCORCH_2), me); + if (Unit *pTarget = me->getVictim()) + me->SummonCreature(NPC_GROUND_SCORCH, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 45000); + DoCast(SPELL_SCORCH); + events.RescheduleEvent(EVENT_SCORCH,25000); + break; + case EVENT_CONSTRUCT: + DoScriptText(SAY_SUMMON, me); + DoSummon(NPC_IRON_CONSTRUCT, Pos[rand()%20], 30000, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT); + DoCast(SPELL_STRENGHT); + DoCast(me, SPELL_ACTIVATE_CONSTRUCT); + events.RescheduleEvent(EVENT_CONSTRUCT,RAID_MODE(40000, 30000)); + break; + case EVENT_BERSERK: + DoCast(me, SPELL_BERSERK, true); + DoScriptText(SAY_BERSERK, me); + break; + } + } + DoMeleeAttackIfReady(); + } + + void KilledUnit(Unit* Victim) + { + if (!(rand()%5)) + DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me); + } - if (uiScorchTimer <= diff) + void JustSummoned(Creature *summon) + { + if (summon->GetEntry() == NPC_IRON_CONSTRUCT) { - DoScriptText(RAND(SAY_SCORCH_1,SAY_SCORCH_2), me); - DoCast(SPELL_SCORCH); - uiScorchTimer = 20000; - } else uiScorchTimer -= diff; + summon->setFaction(16); + summon->SetReactState(REACT_AGGRESSIVE); + summon->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_PACIFIED | UNIT_FLAG_STUNNED | UNIT_FLAG_DISABLE_MOVE); + } + summon->AI()->AttackStart(me->getVictim()); + summon->AI()->DoZoneInCombat(); + summons.Summon(summon); + } - if (uiSlagPotTimer <= diff) + void DoAction(const int32 action) + { + switch(action) { - if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)) + case ACTION_REMOVE_BUFF: + me->RemoveAuraFromStack(SPELL_STRENGHT); + // Shattered Achievement + if (ConstructTimer >= 5000) + ConstructTimer = 0; + else + Shattered = true; + break; + } + } + }; +}; + +class npc_iron_construct : public CreatureScript +{ +public: + npc_iron_construct() : CreatureScript("npc_iron_construct") { } + + CreatureAI *GetAI(Creature *creature) const + { + return new npc_iron_constructAI(creature); + } + + struct npc_iron_constructAI : public ScriptedAI + { + npc_iron_constructAI(Creature* pCreature) : ScriptedAI(pCreature) + { + instance = pCreature->GetInstanceScript(); + pCreature->SetReactState(REACT_PASSIVE); + } + + InstanceScript* instance; + bool Brittled; + + void Reset() + { + Brittled = false; + } + + void DamageTaken(Unit *attacker, uint32 &damage) + { + if (me->HasAura(SPELL_BRITTLE) && damage >= 5000) + { + DoCast(SPELL_SHATTER); + if (Creature *pIgnis = me->GetCreature(*me, instance->GetData64(TYPE_IGNIS))) + if (pIgnis->AI()) + pIgnis->AI()->DoAction(ACTION_REMOVE_BUFF); + + me->ForcedDespawn(1000); + } + } + + void UpdateAI(const uint32 uiDiff) + { + if (!UpdateVictim()) + return; + + if (Aura * aur = me->GetAura(SPELL_HEAT)) + { + if (aur->GetStackAmount() >= 10) { - DoScriptText(SAY_SLAG_POT, me); - DoCast(pTarget, SPELL_SLAG_POT); + me->RemoveAura(SPELL_HEAT); + DoCast(SPELL_MOLTEN); + Brittled = false; } - uiSlagPotTimer = 30000; - } else uiSlagPotTimer -= diff; - + } + // Water pools + if (me->IsInWater() && !Brittled && me->HasAura(SPELL_MOLTEN)) + { + DoCast(SPELL_BRITTLE); + me->RemoveAura(SPELL_MOLTEN); + Brittled = true; + } DoMeleeAttackIfReady(); } }; +}; +class npc_scorch_ground : public CreatureScript +{ +public: + npc_scorch_ground() : CreatureScript("npc_scorch_ground") { } + CreatureAI *GetAI(Creature *creature) const + { + return new npc_scorch_groundAI(creature); + } + + struct npc_scorch_groundAI : public ScriptedAI + { + npc_scorch_groundAI(Creature* pCreature) : ScriptedAI(pCreature) + { + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE |UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_PACIFIED); + pCreature->SetDisplayId(16925); //model 2 in db cannot overwrite wdb fields + } + + uint64 ConstructGUID; + uint32 HeatTimer; + bool Heat; + + void MoveInLineOfSight(Unit* pWho) + { + if (!Heat) + { + if (pWho->GetEntry() == NPC_IRON_CONSTRUCT) + { + if (!pWho->HasAura(SPELL_HEAT) || !pWho->HasAura(SPELL_MOLTEN)) + { + ConstructGUID = pWho->GetGUID(); + Heat=true; + } + } + } + } + + void Reset() + { + Heat=false; + DoCast(me, SPELL_GROUND); + ConstructGUID=0; + HeatTimer=0; + } + + void UpdateAI(const uint32 uiDiff) + { + if (Heat) + { + if(HeatTimer <= uiDiff) + { + Creature* Construct = me->GetCreature(*me ,ConstructGUID); + if (Construct && !Construct->HasAura(SPELL_MOLTEN)) + { + me->AddAura(SPELL_HEAT,Construct); + HeatTimer=1000; + } + } + else + HeatTimer -= uiDiff; + } + } + }; }; + +class spell_ignis_slag_pot : public SpellScriptLoader +{ + public: + spell_ignis_slag_pot() : SpellScriptLoader("spell_ignis_slag_pot") { } + + class spell_ignis_slag_pot_AuraScript : public AuraScript + { + bool Validate(SpellEntry const * /*spellEntry*/) + { + if (!sSpellStore.LookupEntry(SPELL_SLAG_POT_DAMAGE)) + return false; + if (!sSpellStore.LookupEntry(SPELL_SLAG_POT)) + return false; + if (!sSpellStore.LookupEntry(SPELL_SLAG_IMBUED)) + return false; + return true; + } + + void HandleEffectPeriodic(AuraEffect const * aurEff, AuraApplication const * aurApp) + { + Unit* aurEffCaster = aurEff->GetCaster(); + if (!aurEffCaster) + return; + + Unit * target = aurApp->GetTarget(); + aurEffCaster->CastSpell(target, SPELL_SLAG_POT_DAMAGE, true); + if (target->isAlive() && !GetDuration()) + target->CastSpell(target, SPELL_SLAG_IMBUED, true); + } + + void Register() + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_ignis_slag_pot_AuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); + } + }; + + AuraScript* GetAuraScript() const + { + return new spell_ignis_slag_pot_AuraScript(); + } +}; + + void AddSC_boss_ignis() { new boss_ignis(); + new npc_iron_construct(); + new npc_scorch_ground(); + new spell_ignis_slag_pot(); + + // has to be done or else players wil absorb dmg from slag pot vehicle seat 1 slagpot + if (VehicleSeatEntry* vehSeat = const_cast<VehicleSeatEntry*>(sVehicleSeatStore.LookupEntry(3206))) + vehSeat->m_flags |= 0x400; } diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp index 056d5cfbbaf..af70b828f23 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/instance_ulduar.cpp @@ -326,6 +326,20 @@ public: return 0; } + bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target*/, uint32 /*miscvalue1*/) + { + switch (criteria_id) + { + case ACHIEVEMENT_CRITERIA_HOT_POCKET_10: + return true; + case ACHIEVEMENT_CRITERIA_HOT_POCKET_25: + return true; + default: + break; + } + return false; + } + uint32 GetData(uint32 type) { switch(type) diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/ulduar.h b/src/server/scripts/Northrend/Ulduar/ulduar/ulduar.h index 3030f38b3c6..8029d661b80 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/ulduar.h +++ b/src/server/scripts/Northrend/Ulduar/ulduar/ulduar.h @@ -66,4 +66,10 @@ enum eTypes EVENT_TOWER_OF_FLAMES_DESTROYED = 21033, EVENT_TOWER_OF_LIFE_DESTROYED = 21030 }; + +enum eAchievementCriteria +{ + ACHIEVEMENT_CRITERIA_HOT_POCKET_10 = 10430, //ignis + ACHIEVEMENT_CRITERIA_HOT_POCKET_25 = 10431, +}; #endif |