├── CHANGELOG.txt
├── .pkgmeta
├── LICENSE
├── Images
├── icon.jpg
├── logo.png
├── Eonar.jpg
├── Skolex.jpg
├── Halondrus.jpg
├── IATTEXT.png
├── Mischief.jpg
├── Shannox.jpg
├── TheJailer.jpg
├── Mistcaller.jpg
├── CouncilOfBlood.jpg
├── UI-MailFrameBG.png
└── HighlyCommunicable.jpg
├── Sounds
├── Sound 10.ogg
├── Sound 11.ogg
├── Sound 12.ogg
├── Sound 6.ogg
├── Sound 7.ogg
├── Sound 8.ogg
├── Sound 9.ogg
├── Sound_2.ogg
├── Sound_3.ogg
├── Sound_4.ogg
├── Sound_5.ogg
├── You_Are_Prepared.ogg
├── Achievement Failed.ogg
├── Achievement Completed.ogg
└── You_Are_Not_Prepared.ogg
├── WarWithinDelves
├── KriegvalsRest.lua
├── TakrethanAbyss.lua
├── TheSinkhole.lua
├── TheWaterworks.lua
├── NightfallSanctum.lua
├── FungalFolly.lua
├── MycomancerCavern.lua
├── TheDreadPit.lua
├── TheUnderkeep.lua
├── EarthcrawlMines.lua
├── TheSpiralWeave.lua
└── SkitteringBreach.lua
├── Libs
├── TaintLess
│ ├── TaintLess.toc
│ ├── TaintLess_Classic.toc
│ └── TaintLess_Wrath.toc
├── LibDetours-1.0
│ └── LibDetours-1.0.toc
├── LibDBIcon-1.0
│ └── lib.xml
├── CallbackHandler-1.0
│ └── CallbackHandler-1.0.xml
├── LibDBCompartment
│ ├── Libs
│ │ ├── CallbackHandler-1.0
│ │ │ └── CallbackHandler-1.0.xml
│ │ ├── LibStub
│ │ │ └── LibStub.lua
│ │ └── LibDataBroker-1.1
│ │ │ └── LibDataBroker-1.1.lua
│ ├── lib.xml
│ ├── LibDBCompartment.toc
│ ├── LibDBCompartment_Cata.toc
│ └── LibDBCompartment_Vanilla.toc
├── LibClassicInspector
│ └── LibClassicInspector.toc
├── UTF8
│ ├── UTF8.toc
│ └── Changelog-UTF8-v1.1.txt
├── LibWindow-1.1
│ └── LibWindow-1.1.toc
├── LibStub
│ └── LibStub.lua
└── LibDataBroker-1.1
│ └── LibDataBroker-1.1.lua
├── PandariaScenarios
├── ALittlePatience.lua
├── BloodInTheSnow.lua
├── BrewmoonFestival.lua
├── DominationPoint.lua
├── DarkHeartOfPandaria.lua
├── TheramoresFallHorde.lua
├── ArenaOfAnnihilation.lua
├── AssaultOnZanvess.lua
├── BattleOnTheHighSeas.lua
├── TheramoresFallAlliance.lua
├── SecretsOfRagefire.lua
├── LionsLanding.lua
├── UngaIngoo.lua
├── GreenstoneVillage.lua
├── CryptOfForgottenKings.lua
├── ABrewingStorm.lua
└── DaggerInTheDark.lua
├── LichKingRaids
├── VaultOfArchavon.lua
├── EyeOfEternity.lua
├── OnyxiasLair.lua
└── ObsidianSanctum.lua
├── LichKingDungeons
├── HallsOfReflection.lua
├── TrialOfTheChampion.lua
├── UtgardeKeep.lua
├── PitOfSaron.lua
├── TheOculus.lua
├── AhnkahetTheOldKingdom.lua
├── Gundrak.lua
├── AzjolNerub.lua
├── HallsOfLightning.lua
├── HallsOfStone.lua
├── TheVioletHold.lua
├── DrakTharonKeep.lua
├── ForgeOfSouls.lua
├── TheCullingOfStratholme.lua
├── TheNexus.lua
└── UtgardePinnacle.lua
├── CataclysmRaids
└── ThroneOfTheFourWinds.lua
├── BattleForAzerothDungeons
├── WaycrestManor.lua
├── SiegeOfBoralus.lua
├── TempleOfSethraliss.lua
├── TheUnderrot.lua
├── TolDagor.lua
├── Freehold.lua
├── KingsRest.lua
├── ShrineOfTheStorm.lua
└── TheMotherlode.lua
├── LegionDungeons
├── CourtOfStars.lua
├── AssaultOnVioletHold.lua
├── NeltharionsLair.lua
├── BlackRookHold.lua
├── HallsOfValor.lua
├── TheArcway.lua
├── DarkheartThicket.lua
├── MawOfSouls.lua
├── VaultOfTheWardens.lua
├── SeatOfTheTriumvirate.lua
├── ReturnToKarazhan.lua
├── EyeOfAzshara.lua
└── CathedralOfEternalNight.lua
├── CataclysmDungeons
├── ZulAman.lua
├── WellOfEternity.lua
├── GrimBatol.lua
├── ShadowfangKeep.lua
├── HourOfTwilight.lua
├── VortexPinnacle.lua
├── EndTime.lua
├── ThroneOfTheTides.lua
├── Stonecore.lua
└── BlackrockCaverns.lua
├── DraenorDungeons
├── Auchindoun.lua
├── BloodmaulSlagMines.lua
├── GrimrailDepot.lua
├── IronDocks.lua
├── TheEverbloom.lua
├── Skyreach.lua
└── ShadowmoonBurialGrounds.lua
├── Localization.lua
├── Debug.lua
├── PandariaDungeons
├── Scholomance.lua
├── MogushanPalace.lua
├── ScarletHalls.lua
├── GateOfTheSettingSun.lua
├── TempleOfTheJadeSerpent.lua
├── ShadoPanMonastery.lua
├── ScarletMonastery.lua
└── SiegeOfNiuzaoTemple.lua
├── ShadowlandsDungeons
├── HallsofAtonement.lua
├── TazaveshTheVeiledMarket.lua
├── MistsofTirnaScithe.lua
└── TheaterofPain.lua
├── DragonflightDungeons
├── DawnOfTheInfinite.lua
├── HallsOfInfusion.lua
├── BrackenhideHollow.lua
├── TheNokhudOffensive.lua
├── RubyLifePools.lua
└── UldamanLegacyOfTyr.lua
├── .github
└── workflows
│ └── main.yml
├── README.md
├── InstanceAchievementTracker_Wrath.toc
├── InstanceAchievementTracker_Cata.toc
├── API.lua
└── ItemCache.lua
/CHANGELOG.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.pkgmeta:
--------------------------------------------------------------------------------
1 | enable-nolib-creation: no
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | All Rights Reserved unless otherwise explicitly stated.
2 |
--------------------------------------------------------------------------------
/Images/icon.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Images/icon.jpg
--------------------------------------------------------------------------------
/Images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Images/logo.png
--------------------------------------------------------------------------------
/Images/Eonar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Images/Eonar.jpg
--------------------------------------------------------------------------------
/Images/Skolex.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Images/Skolex.jpg
--------------------------------------------------------------------------------
/Images/Halondrus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Images/Halondrus.jpg
--------------------------------------------------------------------------------
/Images/IATTEXT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Images/IATTEXT.png
--------------------------------------------------------------------------------
/Images/Mischief.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Images/Mischief.jpg
--------------------------------------------------------------------------------
/Images/Shannox.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Images/Shannox.jpg
--------------------------------------------------------------------------------
/Images/TheJailer.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Images/TheJailer.jpg
--------------------------------------------------------------------------------
/Sounds/Sound 10.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Sounds/Sound 10.ogg
--------------------------------------------------------------------------------
/Sounds/Sound 11.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Sounds/Sound 11.ogg
--------------------------------------------------------------------------------
/Sounds/Sound 12.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Sounds/Sound 12.ogg
--------------------------------------------------------------------------------
/Sounds/Sound 6.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Sounds/Sound 6.ogg
--------------------------------------------------------------------------------
/Sounds/Sound 7.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Sounds/Sound 7.ogg
--------------------------------------------------------------------------------
/Sounds/Sound 8.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Sounds/Sound 8.ogg
--------------------------------------------------------------------------------
/Sounds/Sound 9.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Sounds/Sound 9.ogg
--------------------------------------------------------------------------------
/Sounds/Sound_2.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Sounds/Sound_2.ogg
--------------------------------------------------------------------------------
/Sounds/Sound_3.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Sounds/Sound_3.ogg
--------------------------------------------------------------------------------
/Sounds/Sound_4.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Sounds/Sound_4.ogg
--------------------------------------------------------------------------------
/Sounds/Sound_5.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Sounds/Sound_5.ogg
--------------------------------------------------------------------------------
/Images/Mistcaller.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Images/Mistcaller.jpg
--------------------------------------------------------------------------------
/Images/CouncilOfBlood.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Images/CouncilOfBlood.jpg
--------------------------------------------------------------------------------
/Images/UI-MailFrameBG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Images/UI-MailFrameBG.png
--------------------------------------------------------------------------------
/Sounds/You_Are_Prepared.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Sounds/You_Are_Prepared.ogg
--------------------------------------------------------------------------------
/Images/HighlyCommunicable.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Images/HighlyCommunicable.jpg
--------------------------------------------------------------------------------
/Sounds/Achievement Failed.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Sounds/Achievement Failed.ogg
--------------------------------------------------------------------------------
/Sounds/Achievement Completed.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Sounds/Achievement Completed.ogg
--------------------------------------------------------------------------------
/Sounds/You_Are_Not_Prepared.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dragnogd/Instance-Achievement-Tracker/HEAD/Sounds/You_Are_Not_Prepared.ogg
--------------------------------------------------------------------------------
/WarWithinDelves/KriegvalsRest.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
--------------------------------------------------------------------------------
/WarWithinDelves/TakrethanAbyss.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
--------------------------------------------------------------------------------
/WarWithinDelves/TheSinkhole.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
--------------------------------------------------------------------------------
/WarWithinDelves/TheWaterworks.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
--------------------------------------------------------------------------------
/WarWithinDelves/NightfallSanctum.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
--------------------------------------------------------------------------------
/Libs/TaintLess/TaintLess.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 100205
2 | ## Title: TaintLess
3 | ## Notes: Eliminates certain classes of taint errors.
4 | ## Version: 24-02-20
5 | ## IconTexture: 134125
6 | TaintLess.xml
--------------------------------------------------------------------------------
/Libs/TaintLess/TaintLess_Classic.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 11501
2 | ## Title: TaintLess
3 | ## Notes: Eliminates certain classes of taint errors.
4 | ## Version: 24-02-20
5 | ## IconTexture: 134125
6 | TaintLess.xml
--------------------------------------------------------------------------------
/Libs/TaintLess/TaintLess_Wrath.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 30403
2 | ## Title: TaintLess
3 | ## Notes: Eliminates certain classes of taint errors.
4 | ## Version: 24-02-20
5 | ## IconTexture: 134125
6 | TaintLess.xml
--------------------------------------------------------------------------------
/Libs/LibDetours-1.0/LibDetours-1.0.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 11304
2 | ## Title: Lib: Detours-1.0
3 | ## Notes: Lib: Detours-1.0
4 | ## Author: kebabstorm
5 | ## X-Category: Library
6 |
7 | LibStub\LibStub.lua
8 | LibDetours-1.0.lua
--------------------------------------------------------------------------------
/Libs/LibDBIcon-1.0/lib.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Libs/CallbackHandler-1.0/CallbackHandler-1.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Libs/LibDBCompartment/Libs/CallbackHandler-1.0/CallbackHandler-1.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/Libs/LibDBCompartment/lib.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Libs/LibClassicInspector/LibClassicInspector.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 11304
2 | ## Title: Lib: ClassicInspector
3 | ## Notes: Lib: ClassicInspector
4 | ## Author: kebabstorm
5 | ## X-Category: Library
6 |
7 | LibStub\LibStub.lua
8 | CallbackHandler-1.0\CallbackHandler-1.0.lua
9 | LibDetours-1.0\LibDetours-1.0.lua
10 | LibClassicInspector.lua
--------------------------------------------------------------------------------
/PandariaScenarios/ALittlePatience.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- A Little Patience
9 | ------------------------------------------------------
10 | core._1104 = {}
--------------------------------------------------------------------------------
/PandariaScenarios/BloodInTheSnow.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Blood in the Snow
9 | ------------------------------------------------------
10 | core._1130 = {}
--------------------------------------------------------------------------------
/PandariaScenarios/BrewmoonFestival.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Brewmoon Festival
9 | ------------------------------------------------------
10 | core._1051 = {}
--------------------------------------------------------------------------------
/PandariaScenarios/DominationPoint.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Domination Point (Horde)
9 | ------------------------------------------------------
10 | core._1102 = {}
--------------------------------------------------------------------------------
/PandariaScenarios/DarkHeartOfPandaria.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Dark Heart of Pandaria
9 | ------------------------------------------------------
10 | core._1144 = {}
--------------------------------------------------------------------------------
/PandariaScenarios/TheramoresFallHorde.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Theramore's Fall (Horde)
9 | ------------------------------------------------------
10 | core._999 = {}
--------------------------------------------------------------------------------
/LichKingRaids/VaultOfArchavon.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Vault of Archavon Bosses
8 | ------------------------------------------------------
9 | core._624 = {}
10 |
11 | function core._624:ClearVariables()
12 | end
--------------------------------------------------------------------------------
/LichKingDungeons/HallsOfReflection.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Halls of Reflection Bosses
8 | ------------------------------------------------------
9 | core._668 = {}
10 |
11 | function core._668:ClearVariables()
12 | end
--------------------------------------------------------------------------------
/CataclysmRaids/ThroneOfTheFourWinds.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Throne of the Four Winds Bosses
8 | ------------------------------------------------------
9 | core._754 = {}
10 |
11 | function core._754:ClearVariables()
12 | end
--------------------------------------------------------------------------------
/Libs/UTF8/UTF8.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 60000
2 | ## Version: v1.1
3 | ## X-Curse-Packaged-Version: v1.1
4 | ## X-Curse-Project-Name: UTF8
5 | ## X-Curse-Project-ID: utf8
6 | ## X-Curse-Repository-ID: wow/utf8/mainline
7 |
8 | ## Title: Lib: UTF8
9 | ## Notes: A library for manipulating UTF-8 strings
10 | ## Author: Pastamancer
11 | ## X-License: BSD License
12 | ## X-Website: http://www.wowace.com/addons/utf8/
13 |
14 | utf8data.lua
15 | utf8.lua
--------------------------------------------------------------------------------
/PandariaScenarios/ArenaOfAnnihilation.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Arena of Annihilation
9 | ------------------------------------------------------
10 | core._1031 = {}
11 |
12 | function core._1031:BeatTheHeat()
13 | if core.type == "SPELL_DAMAGE" and core.spellId == 123967 then
14 | core:getAchievementFailed()
15 | end
16 | end
--------------------------------------------------------------------------------
/BattleForAzerothDungeons/WaycrestManor.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- WaycrestManor Bosses
8 | ------------------------------------------------------
9 | core._1862 = {}
10 |
11 | function core._1862:SoulboundGoliath()
12 | if core.type == "SPELL_AURA_APPLIED_DOSE" and core.spellId == 260512 and core.amount >= 12 then
13 | core:getAchievementFailed()
14 | end
15 | end
--------------------------------------------------------------------------------
/LegionDungeons/CourtOfStars.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Court of Stars Bosses
8 | ------------------------------------------------------
9 | core._1571 = {}
10 |
11 | function core._1571:PatrolCaptainGerdo()
12 | if core:getBlizzardTrackingStatus(10610) == true then
13 | core:getAchievementSuccess()
14 | end
15 | end
16 |
17 | function core._1571:ClearVariables()
18 | end
--------------------------------------------------------------------------------
/Libs/LibWindow-1.1/LibWindow-1.1.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 70000
2 | ## LoadOnDemand: 1
3 | ## Title: Lib: Window-1.1
4 | ## Version: 1.1.15
5 | ## Notes: A library that handles the basics of "window" style frames
6 | ## Author: Mikk
7 | ## eMail: dpsgnome@mail.com
8 | ## X-Category: Library
9 | ## X-License: Public Domain
10 | ## X-Curse-Packaged-Version: r15-70000
11 | ## X-Curse-Project-Name: LibWindow-1.1
12 | ## X-Curse-Project-ID: libwindow-1-1
13 | ## X-Curse-Repository-ID: wow/libwindow-1-1/mainline
14 |
15 | LibStub.lua
16 | LibWindow-1.1.lua
17 |
--------------------------------------------------------------------------------
/CataclysmDungeons/ZulAman.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Zul'Aman Bosses
8 | ------------------------------------------------------
9 | core._568 = {}
10 |
11 | function core._568:Halazzi()
12 | if core.type == "PARTY_KILL" and (core.destID == "52755" or core.destID == "24224") then
13 | core:getAchievementFailed()
14 | end
15 | end
16 |
17 | function core._568:ClearVariables()
18 | end
--------------------------------------------------------------------------------
/LegionDungeons/AssaultOnVioletHold.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Assault on Violet Hold Bosses
8 | ------------------------------------------------------
9 | core._1544 = {}
10 |
11 | function core._1544:Festerface()
12 | if core.type == "UNIT_DIED" and core.destID == "102169" then
13 | core:getAchievementSuccess()
14 | end
15 | end
16 |
17 | function core._1544:ClearVariables()
18 | end
--------------------------------------------------------------------------------
/LegionDungeons/NeltharionsLair.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Neltharions Lair Bosses
8 | ------------------------------------------------------
9 | core._1458 = {}
10 |
11 | function core._1458:Naraxas()
12 | if core.type == "SPELL_AURA_APPLIED_DOSE" and core.destID == "91005" and core.spellId == 199246 and core.amount == 6 then
13 | core:getAchievementSuccess()
14 | end
15 | end
16 |
17 | function core._1458:ClearVariables()
18 | end
--------------------------------------------------------------------------------
/PandariaScenarios/AssaultOnZanvess.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Assault on Zan'vess
9 | ------------------------------------------------------
10 | core._1050 = {}
11 |
12 | function core._1050:CommanderTelvrak()
13 | --Defeat Commander Tel'vrak without killing any Zan'thik Swarmers in the Assault on Zan'vess scenario.
14 | if core.type == "UNIT_DIED" and core.destID == "67887" then
15 | core:getAchievementFailed()
16 | end
17 | end
--------------------------------------------------------------------------------
/LichKingDungeons/TrialOfTheChampion.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Trial of the Champion Bosses
8 | ------------------------------------------------------
9 | core._650 = {}
10 |
11 | function core._650:TheBlackKnight()
12 | if (core.type == "SPELL_DAMAGE" or core.type == "SPELL_MISSED") and core.spellId == 67729 then
13 | core:getAchievementFailedWithMessageAfter("(" .. core.destName .. ")")
14 | end
15 | end
16 |
17 | function core._650:ClearVariables()
18 | end
--------------------------------------------------------------------------------
/LichKingDungeons/UtgardeKeep.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Utgarde Keep Bosses
8 | ------------------------------------------------------
9 | core._574 = {}
10 |
11 | function core._574:PrinceKeleseth()
12 | if core.destID == "23965" and core.overkill ~= nil then
13 | if core.overkill > 0 then
14 | core:getAchievementFailedWithMessageAfter("(" .. core.sourceName .. ")")
15 | end
16 | end
17 | end
18 |
19 | function core._574:ClearVariables()
20 | end
--------------------------------------------------------------------------------
/BattleForAzerothDungeons/SiegeOfBoralus.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Siege of Boralus Bosses
8 | ------------------------------------------------------
9 | core._1822 = {}
10 |
11 | function core._1822:DreadCaptainLockwood()
12 | if core:getBlizzardTrackingStatus(12727) == false then
13 | core:getAchievementFailed()
14 | end
15 | end
16 |
17 | function core._1822:ViqGoth()
18 | if core:getBlizzardTrackingStatus(12726) == true then
19 | core:getAchievementSuccess()
20 | end
21 | end
--------------------------------------------------------------------------------
/DraenorDungeons/Auchindoun.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- _1182 Bosses
8 | ------------------------------------------------------
9 | core._1182 = {}
10 |
11 | function core._1182:SoulbinderNyami()
12 | if core:getBlizzardTrackingStatus(9023) == true then
13 | core:getAchievementSuccess()
14 | end
15 | end
16 |
17 | function core._1182:Azzakel()
18 | if core:getBlizzardTrackingStatus(9551) == false then
19 | core:getAchievementFailed()
20 | end
21 | end
22 |
23 | function core._1182:ClearVariables()
24 | end
--------------------------------------------------------------------------------
/Libs/LibDBCompartment/LibDBCompartment.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 100207
2 | ## Title: LibDBCompartment
3 | ## Notes: Library for handling integration into Blizzards' minimap addon compartment.
4 | ## Author: Daniel "Meorawr" Yates
5 | ## Version: v11
6 | ## IconAtlas: minortalents-icon-book
7 | ## LoadOnDemand: 1
8 |
9 | ## X-Category: Libraries
10 | ## X-License: Public Domain
11 | ## X-Website: https://github.com/Meorawr/LibDBCompartment
12 | ## X-Curse-Project-ID: 844143
13 | ## X-Wago-ID: QN5mDvNB
14 | ## X-WoWI-ID: 26567
15 |
16 | Libs\LibStub\LibStub.lua
17 | Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml
18 | Libs\LibDataBroker-1.1\LibDataBroker-1.1.lua
19 |
20 | lib.xml
21 |
--------------------------------------------------------------------------------
/Libs/LibDBCompartment/LibDBCompartment_Cata.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 40400
2 | ## Title: LibDBCompartment
3 | ## Notes: Library for handling integration into Blizzards' minimap addon compartment.
4 | ## Author: Daniel "Meorawr" Yates
5 | ## Version: v11
6 | ## IconAtlas: minortalents-icon-book
7 | ## LoadOnDemand: 1
8 |
9 | ## X-Category: Libraries
10 | ## X-License: Public Domain
11 | ## X-Website: https://github.com/Meorawr/LibDBCompartment
12 | ## X-Curse-Project-ID: 844143
13 | ## X-Wago-ID: QN5mDvNB
14 | ## X-WoWI-ID: 26567
15 |
16 | Libs\LibStub\LibStub.lua
17 | Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml
18 | Libs\LibDataBroker-1.1\LibDataBroker-1.1.lua
19 |
20 | lib.xml
21 |
--------------------------------------------------------------------------------
/Libs/LibDBCompartment/LibDBCompartment_Vanilla.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 11502
2 | ## Title: LibDBCompartment
3 | ## Notes: Library for handling integration into Blizzards' minimap addon compartment.
4 | ## Author: Daniel "Meorawr" Yates
5 | ## Version: v11
6 | ## IconAtlas: minortalents-icon-book
7 | ## LoadOnDemand: 1
8 |
9 | ## X-Category: Libraries
10 | ## X-License: Public Domain
11 | ## X-Website: https://github.com/Meorawr/LibDBCompartment
12 | ## X-Curse-Project-ID: 844143
13 | ## X-Wago-ID: QN5mDvNB
14 | ## X-WoWI-ID: 26567
15 |
16 | Libs\LibStub\LibStub.lua
17 | Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml
18 | Libs\LibDataBroker-1.1\LibDataBroker-1.1.lua
19 |
20 | lib.xml
21 |
--------------------------------------------------------------------------------
/LegionDungeons/BlackRookHold.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Black Rook Hold Bosses
8 | ------------------------------------------------------
9 | core._1501 = {}
10 |
11 | function core._1501:AmalgamOfSouls()
12 | if core.type == "UNIT_DIED" and core.destName == "Frustrated Soul" then
13 | core:getAchievementSuccess()
14 | end
15 | end
16 |
17 | function core._1501:IllysannaRavencrest()
18 | if core.type == "UNIT_DIED" and core.destID == "100485" then
19 | core:getAchievementFailed()
20 | end
21 | end
22 |
23 | function core._1501:ClearVariables()
24 | end
--------------------------------------------------------------------------------
/Localization.lua:
--------------------------------------------------------------------------------
1 |
2 | --------------------------------------
3 | -- Namespaces
4 | --------------------------------------
5 | local _, core = ...
6 |
7 | --------------------------------------
8 | -- Localization
9 | --------------------------------------
10 | core.L = setmetatable({}, { __index = function(t, k)
11 | local v = tostring(k)
12 | rawset(t, k, v)
13 | return v
14 | end })
15 |
16 | function core:RegisterLocale(locale, tbl)
17 | if locale == "enUS" or locale == GetLocale()then
18 | for k,v in pairs(tbl) do
19 | if v == true then
20 | self.L[k] = k
21 | elseif type(v) == "string" then
22 | self.L[k] = v
23 | else
24 | self.L[k] = k
25 | end
26 | end
27 | end
28 | end
--------------------------------------------------------------------------------
/Libs/UTF8/Changelog-UTF8-v1.1.txt:
--------------------------------------------------------------------------------
1 | ------------------------------------------------------------------------
2 | r6 | phanx | 2014-10-28 02:27:07 +0000 (Tue, 28 Oct 2014) | 1 line
3 | Changed paths:
4 | A /tags/v1.1 (from /trunk:5)
5 |
6 | Tagging as v1.1
7 | ------------------------------------------------------------------------
8 | r5 | Phanx | 2014-10-28 02:26:44 +0000 (Tue, 28 Oct 2014) | 1 line
9 | Changed paths:
10 | M /trunk/UTF8.toc
11 |
12 | - Update TOC for a new release
13 | ------------------------------------------------------------------------
14 | r4 | Phanx | 2012-09-07 10:25:33 +0000 (Fri, 07 Sep 2012) | 1 line
15 | Changed paths:
16 | M /trunk/utf8.lua
17 |
18 | - Switched from slower x:sub notation to faster upvalued strsub(x)
19 | ------------------------------------------------------------------------
20 |
--------------------------------------------------------------------------------
/CataclysmDungeons/WellOfEternity.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Well of Eternity Bosses
8 | ------------------------------------------------------
9 | core._939 = {}
10 |
11 | function core._939:Perotharn()
12 | if core.type == "UNIT_DIED" and core.destID == "55868" then
13 | core:getAchievementFailed()
14 | end
15 | end
16 |
17 | function core._939:Mannoroth()
18 | if core.type == "UNIT_DIED" and core.destID == "55419" and core.destFlags == 0x10a48 then
19 | core:getAchievementFailed()
20 | end
21 |
22 | if core.type == "SPELL_INSTAKILL" and core.destID == "55419" then
23 | core:getAchievementSuccess()
24 | end
25 | end
26 |
27 | function core._939:ClearVariables()
28 | end
--------------------------------------------------------------------------------
/BattleForAzerothDungeons/TempleOfSethraliss.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Temple of Sethraliss Bosses
9 | ------------------------------------------------------
10 | core._1877 = {}
11 |
12 | function core._1877:Merektha()
13 | --Detect solid snake kill and tell raid to loot the body
14 | if core.type == "UNIT_DIED" and core.destID == "139304" then
15 | core:sendMessage(core:getAchievement() .. format(L["TempleOfSethraliss_Merektha_LootSnake"], getNPCName(139304)))
16 | end
17 | end
18 |
19 | function core._1877:AvatarOfSethraliss()
20 | --Detect if Prince has spawned
21 | if core.destID == "139314" or core.sourceID == "139314" then
22 | core:getAchievementSuccess()
23 | end
24 | end
--------------------------------------------------------------------------------
/BattleForAzerothDungeons/TheUnderrot.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- The Underrot Bosses
8 | ------------------------------------------------------
9 | core._1841 = {}
10 |
11 | function core._1841:SporecallerZancha()
12 | if core:getBlizzardTrackingStatus(12549, 1) == true then
13 | core:getAchievementSuccess()
14 | end
15 | end
16 |
17 | function core._1841:ElderLeaxa()
18 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 260685 then
19 | core:getAchievementFailedWithMessageAfter("(" .. core.destName .. ")")
20 | end
21 | end
22 |
23 | function core._1841:UnboundAbomination()
24 | if core.type == "UNIT_DIED" and core.destID == "137458" then
25 | core:getAchievementFailed()
26 | end
27 | end
--------------------------------------------------------------------------------
/PandariaScenarios/BattleOnTheHighSeas.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Battle on the High Seas
9 | ------------------------------------------------------
10 | core._1099 = {}
11 | local achievementFailed = false
12 |
13 | function core._1099:TrackAdditional()
14 | --Brew the Boomer Brew without anyone in your party being hit by lightning during A Brewing Storm.
15 | if core.type == "SPELL_DAMAGE" and core.spellId == 132938 and achievementFailed == false and UnitIsPlayer(core.destName) then
16 | core:sendMessage(GetAchievementLink(8347) .. " " .. L["Core_Failed"],true,"failed")
17 | achievementFailed = true
18 | end
19 | end
20 |
21 | function core._1099:InstanceCleanup()
22 | achievementFailed = false
23 | end
--------------------------------------------------------------------------------
/Debug.lua:
--------------------------------------------------------------------------------
1 |
2 | --------------------------------------
3 | -- Namespaces
4 | --------------------------------------
5 | local _, core = ...
6 | local L = core.L
7 |
8 | function IATDEBUG()
9 | core:sendDebugMessage("-----Starting IAT DEBUGUGGER----")
10 | --START Allowed Message functions to work
11 | core.achievementIDs[1] = 14148
12 | core.achievementsCompleted[1] = false
13 | core.IATInfoFrame:ToggleOn()
14 | core.IATInfoFrame:SetHeading(GetAchievementLink(14148))
15 | core.achievementsFailed[1] = false
16 | --END Allowed Message functions to work
17 |
18 | core.IATInfoFrame:ToggleOn()
19 | core.IATInfoFrame:SetHeading(GetAchievementLink(14148))
20 | core.IATInfoFrame:SetSubHeading1("Players who have met Critiera (1/10)")
21 | core.IATInfoFrame:SetText1("Whizzey")
22 |
23 | -- C_Timer.After(3, function()
24 | -- core.IATInfoFrame:ChangeScale(0.8)
25 | -- end)
26 | end
--------------------------------------------------------------------------------
/DraenorDungeons/BloodmaulSlagMines.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Bloodmaul Slag Mines Bosses
8 | ------------------------------------------------------
9 | core._1175 = {}
10 |
11 | function core._1175:Magmolatus()
12 | if core.type == "UNIT_DIED" and core.destID == "74571" then
13 | core:getAchievementFailedWithMessageAfter("(Reason: Calamity has died)")
14 | elseif core.type == "UNIT_DIED" and core.destID == "74570" then
15 | core:getAchievementFailedWithMessageAfter("(Reason: Ruination has died)")
16 | end
17 | end
18 |
19 | function core._1175:Gugrokk()
20 | if core.type == "UNIT_DIED" and core.destID == "74927" then
21 | core:getAchievementFailed()
22 | end
23 | end
24 |
25 | function core._1175:ClearVariables()
26 | end
--------------------------------------------------------------------------------
/LegionDungeons/HallsOfValor.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Halls of Valor Bosses
8 | ------------------------------------------------------
9 | core._1477 = {}
10 |
11 | function core._1477:StagParty()
12 | if core.type == "SPELL_AURA_APPLIED_DOSE" and core.destID == "99891" and core.spellId == 207753 then
13 | core:sendMessage(core:getAchievement() .. " Killing Blows Stacks (" .. core.amount .. "/10)")
14 |
15 | if core.amount == 10 then
16 | core:getAchievementSuccess()
17 | end
18 | end
19 | end
20 |
21 | function core._1477:Odyn()
22 | if core.type == "SPELL_CAST_SUCCESS" and core.spelld == 198750 then
23 | core:getAchievementFailed()
24 | end
25 | end
26 |
27 | function core._1477:ClearVariables()
28 | end
--------------------------------------------------------------------------------
/PandariaScenarios/TheramoresFallAlliance.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Theramore's Fall (Alliance)
9 | ------------------------------------------------------
10 | core._1000 = {}
11 |
12 | function core._1000:Gashnul()
13 | --Defeat Gash'nul without destroying any of his totems.
14 | if (core.type == "PARTY_KILL" or core.type == "UNIT_DIED") and core.destID == "64956" then
15 | core:getAchievementFailed()
16 | end
17 | end
18 |
19 | function core._1000:Gatecrusher()
20 | --Destroy Gatecrusher without anyone being hit by its ram or stone-thrower.
21 | if (core.type == "SWING_MISSED" or core.type == "SWING_DAMAGE") and UnitIsPlayer(core.destName) then
22 | core:getAchievementFailed()
23 | end
24 | end
25 |
--------------------------------------------------------------------------------
/PandariaScenarios/SecretsOfRagefire.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Secrets of Ragefire
9 | ------------------------------------------------------
10 | core._1131 = {}
11 | local achievementFailed = false
12 |
13 | function core._1131:TrackAdditional()
14 | if (core.type == "SPELL_DAMAGE" or core.type == "SWING_DAMAGE") and (core.destID == "70605" or core.destID == "70606" or core.destID == "70607" or core.destID == "70608" or core.destID == "70609") then
15 | if achievementFailed == false then
16 | core:sendMessage(GetAchievementLink(8295) .. " " .. L["Core_Failed"],true,"failed")
17 | achievementFailed = true
18 | end
19 | end
20 | end
21 |
22 | function core._1131:InstanceCleanup()
23 | achievementFailed = false
24 | end
--------------------------------------------------------------------------------
/PandariaDungeons/Scholomance.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- _1007 Bosses
9 | ------------------------------------------------------
10 | core._1007 = {}
11 |
12 | ------------------------------------------------------
13 | ---- Sanguinarian
14 | ------------------------------------------------------
15 | local BoilingBloodThirstStacks = 0
16 |
17 | function core._1007:Rattlegore()
18 | if core.type == "SPELL_AURA_APPLIED_DOSE" and core.amount > 5 and core.spellId == 113765 then
19 | core:getAchievementFailed()
20 | end
21 | end
22 |
23 | function core._1007:Sanguinarian()
24 | if core.type == "SPELL_AURA_APPLIED_DOSE" and core.amount == 99 and core.spellId == 114141 then
25 | core:getAchievementSuccess()
26 | end
27 | end
28 |
29 | function core._1007:ClearVariables()
30 | end
--------------------------------------------------------------------------------
/PandariaScenarios/LionsLanding.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Lion's Landing (Alliance)
9 | ------------------------------------------------------
10 | core._1103 = {}
11 | local numberFiveIsAliveFailed = false
12 |
13 | function core._1103:TrackAdditional()
14 | --Brew the Boomer Brew without anyone in your party being hit by lightning during A Brewing Storm.
15 | if core.type == "UNIT_DIED" and (core.destID == "68581" or core.destID == "68685" or core.destID == "68871" or core.destID == "68883" or core.destID == "68870") and numberFiveIsAliveFailed == false then
16 | core:sendMessage(GetAchievementLink(8011) .. " " .. L["Core_Failed"],true,"failed")
17 | numberFiveIsAliveFailed = true
18 | end
19 | end
20 |
21 | function core._1103:InstanceCleanup()
22 | numberFiveIsAliveFailed = false
23 | end
--------------------------------------------------------------------------------
/PandariaScenarios/UngaIngoo.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Unga Ingoo
9 | ------------------------------------------------------
10 | core._1048 = {}
11 | local spillNoEvilFailed = false
12 |
13 | function core._1048:CaptainOok()
14 | if core.type == "SPELL_HEAL" and core.spellId == 121973 then
15 | core:getAchievementFailed()
16 | end
17 | end
18 |
19 | function core._1048:TrackAdditional()
20 | --Brew the Boomer Brew without anyone in your party being hit by lightning during A Brewing Storm.
21 | if core.type == "SPELL_CAST_SUCCESS" and core.spellId == 123137 and spillNoEvilFailed == false then
22 | core:sendMessage(GetAchievementLink(7231) .. " " .. L["Core_Failed"],true,"failed")
23 | spillNoEvilFailed = true
24 | end
25 | end
26 |
27 | function core._1048:InstanceCleanup()
28 | spillNoEvilFailed = false
29 | end
30 |
31 |
32 |
--------------------------------------------------------------------------------
/WarWithinDelves/FungalFolly.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Fungal Folly
9 | ------------------------------------------------------
10 | core._2664 = {}
11 | core._2664.Events = CreateFrame("Frame")
12 |
13 | function core._2664:InstanceCleanup()
14 | core._2664.Events:UnregisterEvent("UNIT_SPELLCAST_SUCCEEDED")
15 | end
16 |
17 | core._2664.Events:SetScript("OnEvent", function(self, event, ...)
18 | return self[event] and self[event](self, event, ...)
19 | end)
20 |
21 | function core._2664:InitialSetup()
22 | core._2664.Events:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
23 | end
24 |
25 | function core._2664.Events:UNIT_SPELLCAST_SUCCEEDED(self, unitTarget, castGUID, spellID)
26 | --Successfully complete a Fungarian delve without being hit by Explosive Spores on Tier 8 or higher.
27 | if spellID == 427732 then
28 | core:getAchievementFailed(40445, true)
29 | end
30 | end
--------------------------------------------------------------------------------
/WarWithinDelves/MycomancerCavern.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Mycomancer Cavern
9 | ------------------------------------------------------
10 | core._2679 = {}
11 | core._2679.Events = CreateFrame("Frame")
12 |
13 | function core._2679:InstanceCleanup()
14 | core._2679.Events:UnregisterEvent("UNIT_SPELLCAST_SUCCEEDED")
15 | end
16 |
17 | core._2679.Events:SetScript("OnEvent", function(self, event, ...)
18 | return self[event] and self[event](self, event, ...)
19 | end)
20 |
21 | function core._2679:InitialSetup()
22 | core._2679.Events:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
23 | end
24 |
25 | function core._2679.Events:UNIT_SPELLCAST_SUCCEEDED(self, unitTarget, castGUID, spellID)
26 | --Successfully complete a Fungarian delve without being hit by Explosive Spores on Tier 8 or higher.
27 | if spellID == 427732 then
28 | core:getAchievementFailed(40445, true)
29 | end
30 | end
--------------------------------------------------------------------------------
/CataclysmDungeons/GrimBatol.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Grim Batol Bosses
9 | ------------------------------------------------------
10 | core._670 = {}
11 |
12 | function core._670:GeneralUmbriss()
13 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 90170 and core.destID == "39625" then
14 | core.achievementsFailed[1] = false
15 | core:getAchievementSuccessWithMessageAfter("(" .. L["Shared_Countdown20"] .. ")")
16 | elseif core.type == "SPELL_AURA_REMOVED" and core.spellId == 90170 and core.destID == "39625" then
17 | core.achievementsCompleted[1] = false
18 | core:getAchievementFailedWithMessageAfter(L["GrimBatol_FailedMessage"])
19 | end
20 | end
21 |
22 | function core._670:Erudax()
23 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 75520 then
24 | core:getAchievementFailed()
25 | end
26 | end
27 |
28 | function core._670:ClearVariables()
29 | end
--------------------------------------------------------------------------------
/WarWithinDelves/TheDreadPit.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- The Dread Pit
9 | ------------------------------------------------------
10 | core._2684 = {}
11 | core._2684.Events = CreateFrame("Frame")
12 |
13 | function core._2684:InstanceCleanup()
14 | core._2684.Events:UnregisterEvent("UNIT_SPELLCAST_SUCCEEDED")
15 | end
16 |
17 | core._2684.Events:SetScript("OnEvent", function(self, event, ...)
18 | return self[event] and self[event](self, event, ...)
19 | end)
20 |
21 | function core._2684:InitialSetup()
22 | core._2684.Events:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
23 | end
24 |
25 | function core._2684.Events:UNIT_SPELLCAST_SUCCEEDED(self, unitTarget, castGUID, spellID)
26 | --Successfully complete a Nerubian delve without spawning ambushers from Nerubian Webs or taking damage Nerubian Eggs from on Tier 8 or higher.
27 | if spellID == 432451 then
28 | core:getAchievementFailed(40453, true)
29 | end
30 | end
--------------------------------------------------------------------------------
/WarWithinDelves/TheUnderkeep.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- The Underkeep
9 | ------------------------------------------------------
10 | core._2690 = {}
11 | core._2690.Events = CreateFrame("Frame")
12 |
13 | function core._2690:InstanceCleanup()
14 | core._2690.Events:UnregisterEvent("UNIT_SPELLCAST_SUCCEEDED")
15 | end
16 |
17 | core._2690.Events:SetScript("OnEvent", function(self, event, ...)
18 | return self[event] and self[event](self, event, ...)
19 | end)
20 |
21 | function core._2690:InitialSetup()
22 | core._2690.Events:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
23 | end
24 |
25 | function core._2690.Events:UNIT_SPELLCAST_SUCCEEDED(self, unitTarget, castGUID, spellID)
26 | --Successfully complete a Nerubian delve without spawning ambushers from Nerubian Webs or taking damage Nerubian Eggs from on Tier 8 or higher.
27 | if spellID == 432451 then
28 | core:getAchievementFailed(40453, true)
29 | end
30 | end
--------------------------------------------------------------------------------
/WarWithinDelves/EarthcrawlMines.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Earthcrawl Mines
9 | ------------------------------------------------------
10 | core._2680 = {}
11 | core._2680.Events = CreateFrame("Frame")
12 |
13 | function core._2680:InstanceCleanup()
14 | core._2680.Events:UnregisterEvent("UNIT_SPELLCAST_SUCCEEDED")
15 | end
16 |
17 | core._2680.Events:SetScript("OnEvent", function(self, event, ...)
18 | return self[event] and self[event](self, event, ...)
19 | end)
20 |
21 | function core._2680:InitialSetup()
22 | core._2680.Events:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
23 | end
24 |
25 | function core._2680.Events:UNIT_SPELLCAST_SUCCEEDED(self, unitTarget, castGUID, spellID)
26 | --Successfully complete a Nerubian delve without spawning ambushers from Nerubian Webs or taking damage Nerubian Eggs from on Tier 8 or higher.
27 | if spellID == 432451 then
28 | core:getAchievementFailed(40453, true)
29 | end
30 | end
--------------------------------------------------------------------------------
/WarWithinDelves/TheSpiralWeave.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- The Spiral Weave
9 | ------------------------------------------------------
10 | core._2688 = {}
11 | core._2688.Events = CreateFrame("Frame")
12 |
13 | function core._2688:InstanceCleanup()
14 | core._2688.Events:UnregisterEvent("UNIT_SPELLCAST_SUCCEEDED")
15 | end
16 |
17 | core._2688.Events:SetScript("OnEvent", function(self, event, ...)
18 | return self[event] and self[event](self, event, ...)
19 | end)
20 |
21 | function core._2688:InitialSetup()
22 | core._2688.Events:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
23 | end
24 |
25 | function core._2688.Events:UNIT_SPELLCAST_SUCCEEDED(self, unitTarget, castGUID, spellID)
26 | --Successfully complete a Nerubian delve without spawning ambushers from Nerubian Webs or taking damage Nerubian Eggs from on Tier 8 or higher.
27 | if spellID == 432451 then
28 | core:getAchievementFailed(40453, true)
29 | end
30 | end
--------------------------------------------------------------------------------
/WarWithinDelves/SkitteringBreach.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Skittering Breach
9 | ------------------------------------------------------
10 | core._2685 = {}
11 | core._2685.Events = CreateFrame("Frame")
12 |
13 | function core._2685:InstanceCleanup()
14 | core._2685.Events:UnregisterEvent("UNIT_SPELLCAST_SUCCEEDED")
15 | end
16 |
17 | core._2685.Events:SetScript("OnEvent", function(self, event, ...)
18 | return self[event] and self[event](self, event, ...)
19 | end)
20 |
21 | function core._2685:InitialSetup()
22 | core._2685.Events:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
23 | end
24 |
25 | function core._2685.Events:UNIT_SPELLCAST_SUCCEEDED(self, unitTarget, castGUID, spellID)
26 | --Successfully complete a Nerubian delve without spawning ambushers from Nerubian Webs or taking damage Nerubian Eggs from on Tier 8 or higher.
27 | if spellID == 432451 then
28 | core:getAchievementFailed(40453, true)
29 | end
30 | end
--------------------------------------------------------------------------------
/LegionDungeons/TheArcway.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- The Arcway Bosses
8 | ------------------------------------------------------
9 | core._1516 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Advisor Vandros
13 | ------------------------------------------------------
14 | local advisorVandrosKilled = false
15 |
16 | function core._1516:Ivanyr()
17 | if core.type == "SPELL_DAMAGE" and core.spellId == 220581 then
18 | core:getAchievementFailedPersonal()
19 | end
20 | end
21 |
22 | function core._1516:AdvisorVandros()
23 | --Check if boss is dead
24 | if core.type == "UNIT_DIED" and core.destID == "98208" then
25 | advisorVandrosKilled = true
26 | end
27 |
28 | --Timeless Wraith killed
29 | if core.type == "UNIT_DIED" and core.destID == "103130" and advisorVandrosKilled == false then
30 | core:getAchievementFailed()
31 | end
32 | end
33 |
34 | function core._1516:ClearVariables()
35 | end
--------------------------------------------------------------------------------
/LichKingDungeons/PitOfSaron.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Pit of Saron Bosses
8 | ------------------------------------------------------
9 | core._658 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Don't Look up
13 | ------------------------------------------------------
14 | local achievementFailed = false
15 |
16 | function core._658:ForgemasterGarfrost()
17 | if core.type == "SPELL_AURA_APPLIED_DOSE" and core.spellId == 68786 and core.amount >= 11 then
18 | core:getAchievementFailed()
19 | end
20 | end
21 |
22 | function core._658:TrackAdditional()
23 | --Don't Look up
24 | if core.Instances[core.expansion][core.instanceType][core.instance]["boss2"].enabled == true then
25 | if core.type == "SPELL_DAMAGE" and core.spellId == 69425 and achievementFailed == false then
26 | achievementFailed = true
27 | core:sendMessage(GetAchievementLink(4525) .. " FAILED! (" .. core.destName .. ")")
28 | end
29 | end
30 | end
31 |
32 | function core._658:ClearVariables()
33 | end
34 |
35 |
36 |
--------------------------------------------------------------------------------
/CataclysmDungeons/ShadowfangKeep.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Shadowfang Keep Bosses
8 | ------------------------------------------------------
9 | core._33 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Lord Godfrey
13 | ------------------------------------------------------
14 | local bloodthirstyGhoulCounter = 0
15 |
16 | function core._33:BaronAshbury()
17 | if core.type == "SPELL_HEAL" and core.spellId == 93706 then
18 | core:getAchievementFailed()
19 | end
20 | end
21 |
22 | function core._33:CommanderSpringvale()
23 | if core.type == "SPELL_CAST_SUCCESS" and core.spellId == 93844 and core.destID == "4278" then
24 | core:getAchievementFailed()
25 | end
26 | end
27 |
28 | function core._33:LordGodfrey()
29 | if core.type == "SPELL_DAMAGE" and core.spellId == 93564 and core.overkill > 0 then
30 | bloodthirstyGhoulCounter = bloodthirstyGhoulCounter + 1
31 | end
32 |
33 | if bloodthirstyGhoulCounter == 12 then
34 | core:getAchievementSuccess()
35 | end
36 | end
37 |
38 | function core._33:ClearVariables()
39 | end
--------------------------------------------------------------------------------
/CataclysmDungeons/HourOfTwilight.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Hour of Twilight Bosses
8 | ------------------------------------------------------
9 | core._940 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Archbishop Benedictus
13 | ------------------------------------------------------
14 | local twilightSparksCounter = 0
15 |
16 | function core._940:ArchbishopBenedictus()
17 | if (core.type == "SPELL_DAMAGE" or core.type == "RANGE_DAMAGE" or core.type == "SPELL_PERIODIC_DAMAGE") and core.destID == "55466" and core.overkill > 0 then
18 | twilightSparksCounter = twilightSparksCounter + 1
19 | elseif core.type == "SWING_DAMAGE" and core.destID == "55466" and core.overkill > 0 then
20 | twilightSparksCounter = twilightSparksCounter + 1
21 | end
22 |
23 | if twilightSparksCounter == 10 then
24 | core:getAchievementSuccess()
25 | end
26 | end
27 |
28 | function core._940:ClearVariables()
29 | ------------------------------------------------------
30 | ---- Archbishop Benedictus
31 | ------------------------------------------------------
32 | twilightSparksCounter = 0
33 | end
--------------------------------------------------------------------------------
/LichKingDungeons/TheOculus.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- The Oculus Bosses
8 | ------------------------------------------------------
9 | core._578 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Make it Count
13 | ------------------------------------------------------
14 | local timer
15 | local timerStarted = false
16 |
17 | function core._578:TrackAdditional()
18 | if core.Instances[core.expansion][core.instanceType][core.instance]["boss2"].enabled == true then
19 | if core.type == "UNIT_DIED" and core.destID == "27654" then
20 | core:sendMessage(core:getAchievement() .. " 20 Minutes to kill Ley-Guardian Eregos")
21 | if timerStarted == false then
22 | timerStarted = true
23 | timer = C_Timer.NewTimer(1200, function()
24 | core:sendMessage(GetAchievementLink(1868) .. " FAILED!")
25 | end)
26 | end
27 | end
28 |
29 | if core.type == "UNIT_DIED" and core.destID == "27656" then
30 | if timer ~= nil then
31 | timer:Cancel()
32 | end
33 | end
34 | end
35 | end
36 |
37 | function core._578:ClearVariables()
38 | end
--------------------------------------------------------------------------------
/ShadowlandsDungeons/HallsofAtonement.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Halls of Atonement
9 | ------------------------------------------------------
10 | core._2297 = {}
11 |
12 | function core._2297:Halkias()
13 | --Defeat Halkias after he absorbs all three Shards of Halkas in the Halls of Atonement on Mythic difficulty.
14 |
15 | if core:getBlizzardTrackingStatus(14567, 1) == true then
16 | core:getAchievementSuccess()
17 | end
18 | end
19 |
20 | function core._2297:Echelon()
21 | --Defeat Echelon after shatter 18 or more Undying Stonefiends at one time in the Halls of Atonement on Mythic difficulty.
22 |
23 | --Adds turned to stone
24 | core.MobCounter:Setup(18, 2, "164363")
25 | core.MobCounter:DetectSpawnedMobsEchelon()
26 | core.MobCounter:DetectKilledMobEchelon()
27 |
28 | if core:getBlizzardTrackingStatus(14284, 1) == true then
29 | core:getAchievementSuccess()
30 | end
31 | end
32 |
33 | function core._2297:LordChamberlain()
34 | --Defeat Lord Chamberlain with 3 Sinstone Statues in corners of the room in the Halls of Atonement on Mythic difficulty.
35 |
36 | if core:getBlizzardTrackingStatus(14352, 1) == true then
37 | core:getAchievementSuccess()
38 | end
39 | end
--------------------------------------------------------------------------------
/PandariaDungeons/MogushanPalace.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Mogushan Palace Bosses
8 | ------------------------------------------------------
9 | core._994 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Xin the Weaponmaster
13 | ------------------------------------------------------
14 | local achievementSuccess = false
15 | local timerStarted = false
16 |
17 | function core._994.XinTheWeaponmaster()
18 | --Achievement Success
19 | if core.type == "SPELL_DAMAGE" and core.spellId == 124527 then
20 | achievementSuccess = true
21 | end
22 |
23 | --Check if Achievement has Failed
24 | if core.type == "SPELL_CAST_SUCCESS" and core.spellId == 124537 then
25 | if timerStarted == false then
26 | timerStarted = true
27 | C_Timer.After(10, function()
28 | if achievementSuccess == false then
29 | core:getAchievementFailed()
30 | end
31 | end)
32 | end
33 | end
34 | end
35 |
36 | function core._994:ClearVariables()
37 | ------------------------------------------------------
38 | ---- Xin the Weaponmaster
39 | ------------------------------------------------------
40 | timerStarted = false
41 | achievementSuccess = false
42 | end
--------------------------------------------------------------------------------
/PandariaScenarios/GreenstoneVillage.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Greenstone Village
9 | ------------------------------------------------------
10 | core._1024 = {}
11 | local achievement1Failed = false
12 | local achievement2Failed = false
13 |
14 | function core._1024:TrackAdditional()
15 | --Return six stolen kegs without any being damaged in the Greenstone Village scenario.
16 | if (core.type == "SWING_DAMAGE" or core.type == "SPELL_DAMAGE" or core.type == "UNIT_DIED") and core.destID == "62682" then
17 | if achievement1Failed == false then
18 | core:sendMessage(GetAchievementLink(7267) .. " " .. L["Core_Failed"],true,"failed")
19 | achievement1Failed = true
20 | end
21 | end
22 |
23 | --Complete the Greenstone Village scenario without using any Volatile Greenstone Brew.
24 | if core.type == "SPELL_CAST_SUCCESS" and core.spellId == 119090 then
25 | if achievement2Failed == false then
26 | core:sendMessage(GetAchievementLink(7266) .. " " .. L["Core_Failed"] .. " (" .. core.sourceName .. ")",true,"failed")
27 | achievement2Failed = true
28 | end
29 | end
30 | end
31 |
32 | function core._1024:InstanceCleanup()
33 | achievement1Failed = false
34 | achievement2Failed = false
35 | end
--------------------------------------------------------------------------------
/LichKingDungeons/AhnkahetTheOldKingdom.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Ahn'kahet the Old Kingdom Bosses
8 | ------------------------------------------------------
9 | core._619 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Herald Volazj
13 | ------------------------------------------------------
14 | local timerStarted = false
15 | local timer
16 |
17 | function core._619:ElderNadox()
18 | if core.type == "UNIT_DIED" and core.destID == "30176" then
19 | core:getAchievementFailed()
20 | end
21 | end
22 |
23 | function core._619:JedogaShadowseeker()
24 | core:getAchievementToTrack()
25 |
26 | if core.type == "UNIT_DIED" and core.destID == "30385" then
27 | core:getAchievementFailed()
28 | end
29 | end
30 |
31 | function core._619:HeraldVolazj()
32 | if timerStarted == false then
33 | timerStarted = true
34 | timer = C_Timer.NewTimer(121, function()
35 | core:getAchievementFailed()
36 | end)
37 | end
38 | end
39 |
40 | function core._619:ClearVariables()
41 | ------------------------------------------------------
42 | ---- Herald Volazj
43 | ------------------------------------------------------
44 | timerStarted = false
45 | if timer ~= nil then
46 | timer:Cancel()
47 | end
48 | end
--------------------------------------------------------------------------------
/CataclysmDungeons/VortexPinnacle.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Vortex Pinnacle Bosses
8 | ------------------------------------------------------
9 | core._657 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Asaad
13 | ------------------------------------------------------
14 | local playersHit = {}
15 |
16 | function core._657:Asaad()
17 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 87618 then
18 | --If someone gets hit by the ability, check if they need the achievement or not
19 |
20 | if playersHit[core.destName] == nil then
21 | --Players has not been hit already
22 | --Check if the player actually needs the achievement
23 | if core:has_value(core.currentBosses[1].players, core.destName) then
24 | --Player needs achievement but has failed it
25 | core:sendMessage(core.destName .. " has failed " .. GetAchievementLink(core.achievementIDs[1]) .. " (Personal Achievement)")
26 | end
27 | playersHit[core.destName] = true
28 | end
29 | end
30 | end
31 |
32 | function core._657:ClearVariables()
33 | ------------------------------------------------------
34 | ---- Asaad
35 | ------------------------------------------------------
36 | playersHit = {}
37 | end
--------------------------------------------------------------------------------
/BattleForAzerothDungeons/TolDagor.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Tol Dagor Bosses
8 | ------------------------------------------------------
9 | core._1771 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Overseer Korgus
13 | ------------------------------------------------------
14 | local heartstopperVenomCounter = 0
15 |
16 | function core._1771:OverseerKorgus()
17 | --Gained Heartstopper venom stun
18 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 256474 then
19 | heartstopperVenomCounter = heartstopperVenomCounter + 1
20 |
21 | if heartstopperVenomCounter == core.groupSize then
22 | core:getAchievementSuccess()
23 | end
24 | end
25 |
26 | --Lost Heartstopper venom stun
27 | if core.type == "SPELL_AURA_REMOVED" and core.spellId == 256474 then
28 | heartstopperVenomCounter = heartstopperVenomCounter - 1
29 | end
30 | end
31 |
32 | function core._1771:KnightCaptainValyri()
33 | if core:getBlizzardTrackingStatus(12457) == false then
34 | core:getAchievementFailed()
35 | end
36 | end
37 |
38 | function core._1771:ClearVariables()
39 | ------------------------------------------------------
40 | ---- Overseer Korgus
41 | ------------------------------------------------------
42 | heartstopperVenomCounter = 0
43 | end
--------------------------------------------------------------------------------
/ShadowlandsDungeons/TazaveshTheVeiledMarket.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Tazavesh, the Veiled Market
9 | ------------------------------------------------------
10 | core._2441 = {}
11 |
12 | function core._2441:ZophexTheSentinel()
13 | --Defeat Zo'phex the Sentinel while covered in 4 different blended substances in Tazavesh, the Veiled Market on Mythic difficulty.
14 |
15 | --Blended Meat 356436
16 | --Blended Fruit 356397
17 | --Blended Toy 356484
18 | --Blended Glow Stick 356493
19 |
20 | if core:getBlizzardTrackingStatus(15109, 1) == true then
21 | core:getAchievementSuccess()
22 | end
23 | end
24 |
25 | -- function core._2441:MailroomMayhem()
26 | -- --Defeat the P.O.S.T. Master after passing all Unstable Goods to at least one other player before delivery in Tazavesh, the Veiled Market on Mythic difficulty.
27 |
28 | -- if core:getBlizzardTrackingStatus(15106, 1) == false then
29 | -- core:getAchievementFailed()
30 | -- end
31 | -- end
32 |
33 | -- function core._2441:Hylbrande()
34 | -- --Defeat Hylbrande after only inserting Bypass Codes while afflicted with Sanitizing Field in Tazavesh, the Veiled Market on Mythic Difficulty.
35 |
36 | -- if core:getBlizzardTrackingStatus(15179, 1) == true then
37 | -- core:getAchievementSuccess()
38 | -- end
39 | -- end
--------------------------------------------------------------------------------
/DragonflightDungeons/DawnOfTheInfinite.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Dawn of the Infinite Bosses
9 | ------------------------------------------------------
10 | core._2579 = {}
11 |
12 | function core._2579:Chronikar()
13 | --Defeat Chronikar after she shatters an Infused Hourglass with Eon Shatter in Dawn of the Infinite on Mythic difficulty.
14 |
15 | if core:getBlizzardTrackingStatus(18589, 1) == true then
16 | core:getAchievementSuccess()
17 | end
18 | end
19 |
20 | function core._2579:ManifestedTimeways()
21 | --Defeat Manifested Timeways after activating 3 Chaotic Time portals in Dawn of the Infinite on Mythic difficulty.
22 |
23 | if core:getBlizzardTrackingStatus(18556, 1) == true then
24 | core:getAchievementSuccess()
25 | end
26 | end
27 |
28 | function core._2579:BlightOfGalarond()
29 | --Defeat Blight of Galakrond after allowing a lost slime to hop on your back and then getting hit by Blight Reclamation in Dawn of the Infinites on Mythic difficulty.
30 |
31 | if core:getBlizzardTrackingStatus(18612, 1) == true then
32 | core:getAchievementSuccess()
33 | end
34 | end
35 |
36 | function core._2579:TyrTheInfiniteKeeper()
37 | --Defeat Tyr, the Infinite Keeper after closing 18 Time Rifts in Dawn of the Infinite on Mythic difficulty.
38 |
39 | if core:getBlizzardTrackingStatus(18539, 1) == true then
40 | core:getAchievementSuccess()
41 | end
42 | end
--------------------------------------------------------------------------------
/DragonflightDungeons/HallsOfInfusion.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Halls of Infusion Bosses
9 | ------------------------------------------------------
10 | core._2527 = {}
11 |
12 | function core._2527:GulpingGoliath()
13 | --Defeat the Gulping Goliath after forcing it to become Hangry and devour 10 Curious Swoglets in Halls of Infusion on Mythic difficulty.
14 |
15 | --TODO: Counter for number of Swoglets alive
16 | --TODO: Announce when boss is Hangry and when players have enough swoglets alive to bring to boss to get gulped
17 |
18 | if core:getBlizzardTrackingStatus(16426, 1) == true then
19 | core:getAchievementSuccess()
20 | end
21 | end
22 |
23 | function core._2527:PrimalTsunami()
24 | --Defeat the Primal Tsunami after slaying three Flow Control Units in Halls of Infusion on Mythic difficulty.
25 |
26 | if core:getBlizzardTrackingStatus(16427, 1) == true then
27 | core:getAchievementSuccess()
28 | end
29 | end
30 |
31 | function core._2527:TrackAdditional()
32 | --Toxicity Strike Team
33 | if core.Instances[core.expansion][core.instanceType][core.instance]["boss1"].enabled == true then
34 | if core.type == "SPELL_CAST_SUCCESS" and core.spellId == 391694 then
35 | if core.sourceName ~= nil then
36 | core:sendMessage(GetAchievementLink(16517) .. " " .. core.sourceName .. " " .. format(L["Shared_HasPressed"], C_Spell.GetSpellLink(391694)), true)
37 | end
38 | end
39 | end
40 | end
--------------------------------------------------------------------------------
/PandariaScenarios/CryptOfForgottenKings.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Crypt of Forgotten Kings
9 | ------------------------------------------------------
10 | core._1030 = {}
11 |
12 | function core._1030:AbominationOfAnger1()
13 | --Defeat the Abomination of Anger in the Crypt of Forgotten Kings scenario without anyone taking damage from the red clouds.
14 | if (core.type == "SPELL_DAMAGE" or core.type == "SPELL_MISSED" and core.spellId == 12074) and UnitIsPlayer(core.destName) then
15 | core:getAchievementFailedWithMessageAfter("(" .. core.destName .. ")", 2)
16 | end
17 | end
18 |
19 | function core._1030:AbominationOfAnger2()
20 | --Defeat the Abomination of Anger in the Crypt of Forgotten Kings scenario with 20 stacks of Uncontrolled Anger.
21 | for i=1,40 do
22 | local auraData = C_UnitAuras.GetDebuffDataByIndex("Player", i)
23 | if auraData ~= nil and auraData.spellId == 129025 then
24 | if auraData.applications == 20 then
25 | core:getAchievementSuccess()
26 | core.achievementsFailed[1] = false
27 | end
28 | end
29 | end
30 |
31 | --Debuff has fallen off during kill
32 | if core.type == "SPELL_AURA_REMOVED" and core.spellId == 129025 and core.achievementsCompleted[1] == true then
33 | core:getAchievementFailed()
34 | core.achievementsCompleted[1] = false
35 | end
36 | end
--------------------------------------------------------------------------------
/DragonflightDungeons/BrackenhideHollow.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Brackenhide Hollow Bosses
9 | ------------------------------------------------------
10 | core._2520 = {}
11 |
12 | function core._2520:HackclawsWarBand()
13 | --Defeat Hackclaw's War-Band after freeing Chief Softpaw, equipping her with a spear and shield, and making sure she survives in Brackenhide Hollow on Mythic difficulty.
14 |
15 | --TODO: Check for Fail? Can it be repeated.
16 |
17 | if core:getBlizzardTrackingStatus(16296, 1) == true then
18 | core:getAchievementSuccess()
19 | end
20 | end
21 |
22 | function core._2520:Treemouth()
23 | --Defeat Treemouth after every player has been consumed at least once in Brackenhide Hollow on Mythic difficulty.
24 |
25 | --TODO: If all at the same time. Announce which player/player got the debuff each time attempted
26 | --TODO: If at some point during the fight. InfoFrame + announce to chat who has completed so far
27 |
28 | if core:getBlizzardTrackingStatus(16430, 1) == true then
29 | core:getAchievementSuccess()
30 | end
31 | end
32 |
33 | function core._2520:DecatriarchWratheye()
34 | --Defeat Decatriarch Wratheye after finding and planting three Resilient Mushrooms, then destroying them with Decaystrike in Brackenhide Hollow on Mythic difficulty.
35 |
36 | if core:getBlizzardTrackingStatus(16404, 1) == true then
37 | core:getAchievementSuccess()
38 | end
39 | end
40 |
--------------------------------------------------------------------------------
/BattleForAzerothDungeons/Freehold.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Freehold Bosses
9 | ------------------------------------------------------
10 | core._1754 = {}
11 |
12 | ------------------------------------------------------
13 | ---- Harlan Sweete
14 | ------------------------------------------------------
15 | local chestsDestroyed = 0
16 | local chestUID = {}
17 |
18 | function core._1754:SkycapnKragg()
19 | if core.type == "UNIT_DIED" and core.destID == "138314" then
20 | core:getAchievementSuccess()
21 | end
22 | end
23 |
24 | function core._1754:HarlanSweete()
25 | --Defeat Harlan Sweete after destroying three Chests o' Booty in Freehold on Mythic Difficulty.
26 | if core.type == "SPELL_DAMAGE" and core.destID == "144596" and core.spellId == 257310 then
27 | if chestUID[core.spawn_uid_dest] == nil then
28 | chestUID[core.spawn_uid_dest] = core.spawn_uid_dest
29 | chestsDestroyed = chestsDestroyed + 1
30 | core:sendMessage(core:getAchievement() .. " " .. getNPCName(144596) .. " " .. L["Core_Counter"] .. " (" .. chestsDestroyed .. "/3)",true)
31 | end
32 | end
33 |
34 | if chestsDestroyed == 3 then
35 | core:getAchievementSuccess()
36 | end
37 | end
38 |
39 | function core._1754:ClearVariables()
40 | ------------------------------------------------------
41 | ---- Harlan Sweete
42 | ------------------------------------------------------
43 | chestsDestroyed = 0
44 | end
--------------------------------------------------------------------------------
/LichKingDungeons/Gundrak.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- _604 Bosses
8 | ------------------------------------------------------
9 | core._604 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Gal'darah
13 | ------------------------------------------------------
14 | local playersImpaled = {}
15 | local impaleCounter = 0
16 |
17 | function core._604:Sladran()
18 | --Boss does not fire Encounter Start
19 | core:getAchievementToTrack()
20 |
21 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 55126 then
22 | core:getAchievementFailed()
23 | end
24 | end
25 |
26 | function core._604:Moorabi()
27 | if core.type == "SPELL_CAST_SUCCESS" and core.spellId == 55098 then
28 | core:getAchievementFailed()
29 | end
30 | end
31 |
32 | function core._604:Galdarah()
33 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 59827 and core:has_value(playersImpaled, core.destName) == false then
34 | table.insert(playersImpaled, core.destName)
35 | impaleCounter = impaleCounter + 1
36 | core:sendMessage(core:getAchievement() .. core.destName .. " Impaled (" .. impaleCounter .. "/5)")
37 | end
38 |
39 | if impaleCounter == 5 then
40 | core:getAchievementSuccess()
41 | end
42 | end
43 |
44 | function core._604:ClearVariables()
45 | ------------------------------------------------------
46 | ---- Gal'darah
47 | ------------------------------------------------------
48 | playersImpaled = {}
49 | impaleCounter = 0
50 | end
--------------------------------------------------------------------------------
/LichKingDungeons/AzjolNerub.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Azjol-Nerub Bosses
8 | ------------------------------------------------------
9 | core._601 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Watch Him Die
13 | ------------------------------------------------------
14 | local achievementFailed = false
15 |
16 | ------------------------------------------------------
17 | ---- Anub'arak
18 | ------------------------------------------------------
19 | local timerStarted = false
20 | local timer
21 |
22 | function core._601:TrackAdditional()
23 | --Watch Him Die
24 | if core.Instances[core.expansion][core.instanceType][core.instance]["boss1"].enabled == true then
25 | if core.type == "UNIT_DIED" and (core.destID == "28729" or core.destID == "28730" or core.destID == "28731") and achievementFailed == false then
26 | achievementFailed = true
27 | core:sendMessage(GetAchievementLink(1296) .. " FAILED!")
28 | end
29 | end
30 | end
31 |
32 | function core._601:Anubarak()
33 | if timerStarted == false then
34 | timerStarted = true
35 | timer = C_Timer.NewTimer(241, function()
36 | core:getAchievementFailed()
37 | end)
38 | end
39 | end
40 |
41 | function core._601:ClearVariables()
42 | ------------------------------------------------------
43 | ---- Anub'arak
44 | ------------------------------------------------------
45 | timerStarted = false
46 | if timer ~= nil then
47 | timer:Cancel()
48 | end
49 | end
--------------------------------------------------------------------------------
/PandariaScenarios/ABrewingStorm.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- A Brewing Storm
9 | ------------------------------------------------------
10 | core._1005 = {}
11 | local achievement1Failed = false
12 | local achievement2Failed = false
13 |
14 | function core._1005:BorokhulaTheDestroyer()
15 | --Defeat Borokhula the Destroyer in A Brewing Storm without getting hit by his Swamp Smash.
16 | if (core.type == "SPELL_DAMAGE" or core.type == "SPELL_MISSED") and core.spellId == 115013 and UnitIsPlayer(core.destName) then
17 | core:getAchievementFailedWithMessageAfter("(" .. core.destName .. ")")
18 | end
19 | end
20 |
21 | function core._1005:TrackAdditional()
22 | --Brew the Boomer Brew without anyone in your party being hit by lightning during A Brewing Storm.
23 | if core:getBlizzardTrackingStatus(7261) == false then
24 | if achievement1Failed == false then
25 | core:sendMessage(GetAchievementLink(7261) .. " " .. L["Core_Failed"],true,"failed")
26 | achievement1Failed = true
27 | end
28 | end
29 |
30 | --Finish A Brewing Storm with all six Thunderpaw Guardians still alive.
31 | if core:getBlizzardTrackingStatus(7258) == false then
32 | if achievement2Failed == false then
33 | core:sendMessage(GetAchievementLink(7258) .. " " .. L["Core_Failed"],true,"failed")
34 | achievement2Failed = true
35 | end
36 | end
37 | end
38 |
39 | function core._1005:InstanceCleanup()
40 | achievement1Failed = false
41 | achievement2Failed = false
42 | end
--------------------------------------------------------------------------------
/LegionDungeons/DarkheartThicket.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Darkheart Thicket Bosses
8 | ------------------------------------------------------
9 | core._1466 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Shade of Xavius
13 | ------------------------------------------------------
14 | local shadeOfXaviusKilled = false
15 |
16 | function core._1466:Dresaron()
17 | if core.type == "UNIT_DIED" and core.destID == "111008" then
18 | core:getAchievementSuccess()
19 | end
20 | end
21 |
22 | function core._1466:ShadeOfXavius()
23 | --Check if boss has died
24 | if core.type == "UNIT_DIED" and core.destID == "99192" then
25 | shadeOfXaviusKilled = true
26 | end
27 |
28 | --Boss has 10 stacks of Apocalyptic Empowerment
29 | if core.type == "SPELL_AURA_APPLIED_DOSE" and core.amount == 10 and core.spellId == 221315 then
30 | core.achievementsFailed[1] = false
31 | core:getAchievementSuccess()
32 | end
33 |
34 | --Apocalyptic Empowerment fell off boss after requirements have been met
35 | if core.type == "SPELL_AURA_REMOVED" and core.spellId == 221315 and core.achievementsCompleted[1] == true and shadeOfXaviusKilled == false then
36 | core.achievementsCompleted[1] = false
37 | C_Timer.After(0.5, function()
38 | if shadeOfXaviusKilled == false then
39 | core:getAchievementFailedWithMessageAfter("Apocalyptic Empowerment stacks fallen off boss")
40 | end
41 | end)
42 | end
43 | end
44 |
45 |
46 | function core._1466:ClearVariables()
47 | end
--------------------------------------------------------------------------------
/LegionDungeons/MawOfSouls.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Maw of Souls Bosses
8 | ------------------------------------------------------
9 | core._1492 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Ymiron
13 | ------------------------------------------------------
14 | local risenWarriorsKilled = 0
15 | local defiantStrikeActive = false
16 |
17 | function core._1492:Ymiron()
18 | if core.type == "SPELL_AURA_APPLIED" and core.destID == "97200" and core.spellId == 195031 then
19 | defiantStrikeActive = true
20 | end
21 |
22 | if core.type == "SPELL_AURA_REMOVED" and core.destID == "97200" and core.spellId == 195031 then
23 | defiantStrikeActive = false
24 | risenWarriorsKilled = 0
25 | end
26 |
27 | --Only count UNIT_DIED kills when defiant strike is active
28 | if defiantStrikeActive == true and core.achievementsCompleted[1] == false then
29 | if core.type == "UNIT_DIED" and core.destID == "98246" and core.destFlags == 0xa48 then
30 | risenWarriorsKilled = risenWarriorsKilled + 1
31 | core:sendMessage(core:getAchievement() .. " Risen Warriors Killed (" .. risenWarriorsKilled .. "/6)")
32 | end
33 |
34 | if risenWarriorsKilled >= 6 then
35 | core:getAchievementSuccess()
36 | end
37 | end
38 | end
39 |
40 | function core._1492:ClearVariables()
41 | ------------------------------------------------------
42 | ---- Ymiron
43 | ------------------------------------------------------
44 | risenWarriorsKilled = 0
45 | defiantStrikeActive = false
46 | end
--------------------------------------------------------------------------------
/CataclysmDungeons/EndTime.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- End Time Bosses
8 | ------------------------------------------------------
9 | core._938 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Echo of Sylvanas
13 | ------------------------------------------------------
14 | local risenGhoulCounter = 0
15 |
16 | function core._938:EchoOfSylvanas()
17 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 100686 then
18 | risenGhoulCounter = 0
19 | end
20 |
21 | if core.type == "PARTY_KILL" and core.destID == "54191" then
22 | risenGhoulCounter = risenGhoulCounter + 1
23 | end
24 |
25 | if risenGhoulCounter == 2 then
26 | core:getAchievementSuccess()
27 | end
28 | end
29 |
30 | function core._938:EchoOfTyrande()
31 | -- if core.groupSize > 1 then
32 | -- --We are in a group
33 | -- local currentUnit
34 | -- core:detectGroupType()
35 | -- for i = 1, core.groupSize do
36 | -- if core.chatType == "PARTY" then
37 | -- if i < core.groupSize then
38 | -- currentUnit = "party" .. i
39 | -- else
40 | -- currentUnit = "player"
41 | -- end
42 | -- elseif core.chatType == "RAID" then
43 | -- currentUnit = "raid" .. i
44 | -- end
45 |
46 |
47 | -- end
48 | -- else
49 | -- currentUnit = "player"
50 |
51 | -- GetInspectSpecialization()
52 | -- end
53 | end
54 |
55 | function core._938:ClearVariables()
56 | ------------------------------------------------------
57 | ---- Echo of Sylvanas
58 | ------------------------------------------------------
59 | risenGhoulCounter = 0
60 | end
--------------------------------------------------------------------------------
/BattleForAzerothDungeons/KingsRest.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Kings Rest Bosses
8 | ------------------------------------------------------
9 | core._1762 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Mchimba The Embalmer
13 | ------------------------------------------------------
14 | local struggleUsed = false
15 |
16 | function core._1762:MchimbaTheEmbalmer()
17 | --Defeat Mchimba the Embalmer without him finishing a cast of Open Coffin and with entombed players using Struggle no more than once per cast of Entomb on Mythic Difficulty.
18 |
19 | --Boss has successfully cast Open Coffin so fail achievement
20 | if core.type == "SPELL_CAST_SUCCESS" and core.spellId == 271290 then
21 | core:getAchievementFailed()
22 | end
23 |
24 | --Reset Struggle counter since emtomb has been cast
25 | if core.type == "SPELL_CAST_SUCCESS" and core.spellId == 267702 then
26 | struggleUsed = false
27 | end
28 |
29 | --Check if player has used Struggle too many times.
30 | if core.type == "SPELL_CAST_SUCEESS" and core.spellId == 267764 and struggleUsed == false then
31 | struggleUsed = true
32 | elseif core.type == "SPELL_CAST_SUCEESS" and core.spellId == 267764 and struggleUsed == true then
33 | core:getAchievementFailed()
34 | end
35 |
36 | --Entomb 267702
37 | --Open Coffin 271290
38 | --Struggle 267764
39 | end
40 |
41 | function core._1762:ClearVariables()
42 | ------------------------------------------------------
43 | ---- Mchimba The Embalmer
44 | ------------------------------------------------------
45 | struggleUsed = false
46 | end
--------------------------------------------------------------------------------
/LichKingDungeons/HallsOfLightning.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Halls of Lightning Bosses
8 | ------------------------------------------------------
9 | core._602 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Volkhan
13 | ------------------------------------------------------
14 | local brittleGolemsShattered = 0
15 |
16 | ------------------------------------------------------
17 | ---- Loken
18 | ------------------------------------------------------
19 | local timer
20 | local timerStarted = false
21 |
22 | function core._602:GeneralBjarngrim()
23 | if core.type == "SPELL_AURA_REFRESH" and core.spellId == 52097 then
24 | core:getAchievementSuccess()
25 | end
26 | end
27 |
28 | function core._602:Volkhan()
29 | if core.type == "SPELL_CAST_SUCCESS" and core.spellId == 59527 then
30 | brittleGolemsShattered = brittleGolemsShattered + 1
31 | end
32 |
33 | if brittleGolemsShattered >= 4 then
34 | core:getAchievementFailed()
35 | end
36 | end
37 |
38 | function core._602:Loken()
39 | if timerStarted == false then
40 | timerStarted = true
41 | timer = C_Timer.NewTimer(121, function()
42 | core:getAchievementFailed()
43 | end)
44 | end
45 | end
46 |
47 | function core._602:ClearVariables()
48 | ------------------------------------------------------
49 | ---- Volkhan
50 | ------------------------------------------------------
51 | brittleGolemsShattered = 0
52 |
53 | ------------------------------------------------------
54 | ---- Loken
55 | ------------------------------------------------------
56 | timerStarted = false
57 | if timer ~= nil then
58 | timer:Cancel()
59 | end
60 | end
--------------------------------------------------------------------------------
/DraenorDungeons/GrimrailDepot.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Grimrail Depot Bosses
8 | ------------------------------------------------------
9 | core._1208 = {}
10 | core._1208.Events = CreateFrame("Frame")
11 |
12 | ------------------------------------------------------
13 | ---- Rocketspark and Borka
14 | ------------------------------------------------------
15 | local pricelessParaphernaliaCounter = 0
16 |
17 | function core._1208:RocketsparkAndBorka()
18 | if pricelessParaphernaliaCounter == 4 then
19 | core:getAchievementSuccess()
20 | end
21 | end
22 |
23 | function core._1208:ClearVariables()
24 | end
25 |
26 | function core._1208:InstanceCleanup()
27 | core._1208.Events:UnregisterEvent("CHAT_MSG_MONSTER_YELL")
28 | end
29 |
30 | function core._1208:InitialSetup()
31 | core._1208.Events:RegisterEvent("CHAT_MSG_MONSTER_YELL")
32 | end
33 |
34 | core._1208.Events:SetScript("OnEvent", function(self, event, ...)
35 | return self[event] and self[event](self, event, ...)
36 | end)
37 |
38 | function core._1208.Events:CHAT_MSG_MONSTER_YELL(self, message, sender, language, channelString, target, flags, unknown, channelNumber, channelName, unknown, counter, ...)
39 | if core.Instances[core.expansion][core.instanceType][core.instance]["boss1"].enabled == true then
40 | if message == "Gah! That was my last samophlange! Do you know how hard those are to get?" or message == "Hey dummy! How would you like it if I broke all your things?!" or message == "That was my entire collection of Hearthstone cards!" or message == "You big oaf! Quit breaking my things!" then
41 | pricelessParaphernaliaCounter = pricelessParaphernaliaCounter + 1
42 | core:sendMessage("Priceless Paraphernalia Counter (" .. pricelessParaphernaliaCounter .. "/4)")
43 | end
44 | end
45 | end
--------------------------------------------------------------------------------
/PandariaDungeons/ScarletHalls.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Scarlet Halls Bosses
9 | ------------------------------------------------------
10 | core._1001 = {}
11 |
12 | ------------------------------------------------------
13 | ---- Houndmaster Braun
14 | ------------------------------------------------------
15 | local dogsKilled = false
16 |
17 | ------------------------------------------------------
18 | ---- Armsmaster Harlan
19 | ------------------------------------------------------
20 | local bladesOfLightCounter = 0
21 |
22 | function core._1001:HoundmasterBraun()
23 | if core.type == "UNIT_DIED" and (core.destID == "58876" or core.destID == "58674" or core.destID == "59309") and dogsKilled == false and C_EncounterJournal.IsEncounterComplete(660) == false then
24 | core:sendMessage(GetAchievementLink(6684) .. " " .. L["Core_Failed"],true,"failed")
25 | dogsKilled = true
26 | end
27 | end
28 |
29 | function core._1001:ArmsmasterHarlan()
30 | if core.type == "SPELL_AURA_APPLIED" and core.destID ~= "58632" and core.spellId == 112955 then
31 | bladesOfLightCounter = bladesOfLightCounter + 1
32 | print(bladesOfLightCounter)
33 | elseif core.type == "SPELL_AURA_REMOVED" and core.destID ~= "58632" and core.spellId == 112955 then
34 | bladesOfLightCounter = bladesOfLightCounter - 1
35 | print(bladesOfLightCounter)
36 | end
37 |
38 | if bladesOfLightCounter >= 8 then
39 | core:getAchievementSuccess()
40 | end
41 | end
42 |
43 | function core._1001:ClearVariables()
44 | ------------------------------------------------------
45 | ---- Armsmaster Harlan
46 | ------------------------------------------------------
47 | bladesOfLightCounter = 0
48 | end
49 |
50 | function core._1001:InstanceCleanup()
51 | dogsKilled = false
52 | end
--------------------------------------------------------------------------------
/LegionDungeons/VaultOfTheWardens.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Vault of the Wardens Bosses
8 | ------------------------------------------------------
9 | core._1493 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Ash'Golm
13 | ------------------------------------------------------
14 | local playersFiredUp = 0
15 | local ashGolmKilled = false
16 |
17 | function core._1493:AshGolm()
18 | if core.type == "UNIT_DIED" and core.destID == "95886" then
19 | ashGolmKilled = true
20 | end
21 |
22 | if ashGolmKilled == false then
23 | --Gained Debuff
24 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 215478 then
25 | playersFiredUp = playersFiredUp + 1
26 | core:sendMessage(core.destName .. " has gained Fired Up debuff (" .. playersFiredUp .. "/" .. core.groupSize .. ")")
27 | end
28 |
29 | --Lost Debuff
30 | if core.type == "SPELL_AURA_REMOVED" and core.spellId == 215478 then
31 | playersFiredUp = playersFiredUp - 1
32 | if core.achievementsCompleted[1] == true then
33 | core:getAchievementFailedWithMessageAfter("(" .. core.destName .. ")")
34 | core.achievementsCompleted[1] = false
35 | end
36 | end
37 |
38 | --Achievement Success
39 | if playersFiredUp == core.groupSize then
40 | core:getAchievementSuccess()
41 | core.achievementsFailed[1] = false
42 | end
43 | end
44 | end
45 |
46 | function core._1493:Cordana()
47 | if core.type == "SPELL_DAMAGE" and core.spellId == 197506 then
48 | core:getAchievementFailedWithMessageAfter("(" .. core.destName .. ")")
49 | end
50 | end
51 |
52 | function core._1493:ClearVariables()
53 | end
54 |
55 | function core._1493:InstanceCleanup()
56 | ashGolmKilled = false
57 | end
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | # description of this workflow, can be anything you want
2 | name: Instance Achievement Tracker Packager
3 |
4 | # we need to let GitHub know _when_ we want to release, typically only when we create a new tag.
5 | # this will target only tags, and not all pushes to the master branch.
6 | # this part can be heavily customized to your liking, like targeting only tags that match a certain word,
7 | # other branches or even pullrequests.
8 | on:
9 | push:
10 | tags:
11 | - 'V5.*'
12 |
13 | # a workflow is built up as jobs, and within these jobs are steps
14 | jobs:
15 |
16 | # "release" here can be anything in one word
17 | release:
18 |
19 | # we can run our steps on pretty much anything, but the "ubuntu-latest" image is a safe bet
20 | runs-on: ubuntu-latest
21 |
22 | # specify the environment variables used by the packager, matching the secrets from the project on GitHub
23 | env:
24 | CF_API_KEY: ${{ secrets.CF_API_KEY }}
25 | WOWI_API_TOKEN: ${{ secrets.WOWI_API_TOKEN }}
26 | GITHUB_OAUTH: ${{ secrets.TOKEN_GITHUB }}
27 | WAGO_API_TOKEN: ${{ secrets.WAGO_API_TOKEN }}
28 |
29 | # "steps" holds a list of all the steps needed to package and release our AddOn
30 | steps:
31 |
32 | # we first have to clone the AddOn project, which is simple enough, and is a required step
33 | - name: Clone project
34 | uses: actions/checkout@v2
35 |
36 | # once cloned, we just run the GitHub Action for the packager project
37 | - name: Package and release
38 | uses: BigWigsMods/packager@master
39 | with:
40 | args: -g retail
41 |
42 |
43 | # once cloned, we just run the GitHub Action for the packager project
44 | - name: Package and release
45 | uses: BigWigsMods/packager@master
46 | with:
47 | args: -g cata
48 |
49 | # once cloned, we just run the GitHub Action for the packager project
50 | - name: Package and release
51 | uses: BigWigsMods/packager@master
52 | with:
53 | args: -g mists
54 |
--------------------------------------------------------------------------------
/CataclysmDungeons/ThroneOfTheTides.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Throne of the Tides Bosses
8 | ------------------------------------------------------
9 | core._643 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Ozumat
13 | ------------------------------------------------------
14 | local requirementsMetAnnounced = false
15 | local unyieldingBehemothAlive = false
16 |
17 | function core._643:LadyNazjar()
18 | if core.type == "SPELL_DAMAGE" and core.spellId == 94046 and core.overkill > 0 then
19 | core:getAchievementSuccess()
20 | end
21 | end
22 |
23 | function core._643:Ozumat()
24 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 76133 and unyieldingBehemothAlive == true and requirementsMetAnnounced == false then
25 | core:sendMessage(GetAchievementLink(core.achievementIDs[1]) .. " requirements have been met. Kill the Unyielding Behemoth now")
26 | requirementsMetAnnounced = true
27 | end
28 |
29 | if core.destName == "Unyielding Behemoth" then
30 | --print(core.type)
31 | end
32 |
33 | if core.destName == "Unyielding Behemoth" and core.type ~= "UNIT_DIED" then
34 | --print("Found")
35 | unyieldingBehemothAlive = true
36 | end
37 |
38 | if core.type == "UNIT_DIED" and core.destName == "Unyielding Behemoth" and requirementsMetAnnounced == true then
39 | --print("Success")
40 | core:getAchievementSuccess()
41 | elseif core.type == "UNIT_DIED" and core.destName == "Unyielding Behemoth" and requirementsMetAnnounced == false then
42 | unyieldingBehemothAlive = false
43 | core:getAchievementFailed()
44 | end
45 |
46 | end
47 |
48 | function core._643:ClearVariables()
49 | ------------------------------------------------------
50 | ---- Ozumat
51 | ------------------------------------------------------
52 | requirementsMetAnnounced = false
53 | unyieldingBehemothAlive = false
54 | end
--------------------------------------------------------------------------------
/LichKingDungeons/HallsOfStone.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Halls of Stone Bosses
8 | ------------------------------------------------------
9 | core._599 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Maiden of Grief
13 | ------------------------------------------------------
14 | local timer
15 | local timerStarted = false
16 |
17 | ------------------------------------------------------
18 | ---- Sjonnir The Ironshaper
19 | ------------------------------------------------------
20 | local ironSludgeKilled = 0
21 |
22 | function core._599:MaidenOfGrief()
23 | if timerStarted == false then
24 | timerStarted = true
25 | timer = C_Timer.NewTimer(60, function()
26 | core:getAchievementFailed()
27 | end)
28 | end
29 | end
30 |
31 | function core._599:TribunalOfAges()
32 | core:getAchievementToTrack()
33 |
34 | if (core.type == "SWING_DAMAGE" or core.type == "SPELL_DAMAGE") and core.destID == "28070" then
35 | core:getAchievementFailed()
36 | end
37 | end
38 |
39 | function core._599:SjonnirTheIronshaper()
40 | if core.type == "UNIT_DIED" and core.destID == "28165" and ironSludgeKilled < 5 then
41 | ironSludgeKilled = ironSludgeKilled + 1
42 | core:sendMessage(core:getAchievement() .. " Iron Sludge Killed (" .. ironSludgeKilled .. "/5)")
43 | end
44 |
45 | if ironSludgeKilled >= 5 then
46 | core:getAchievementSuccess()
47 | end
48 | end
49 |
50 | function core._599:ClearVariables()
51 | ------------------------------------------------------
52 | ---- Maiden of Grief
53 | ------------------------------------------------------
54 | timerStarted = false
55 | if timer ~= nil then
56 | timer:Cancel()
57 | end
58 |
59 | ------------------------------------------------------
60 | ---- Sjonnir The Ironshaper
61 | ------------------------------------------------------
62 | ironSludgeKilled = 0
63 | end
--------------------------------------------------------------------------------
/LichKingRaids/EyeOfEternity.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Eye of Eternity Bosses
8 | ------------------------------------------------------
9 | core._616 = {}
10 |
11 | ------------------------------------------------------
12 | ---- You Don't Have an Eternity
13 | ------------------------------------------------------
14 | local timer
15 | local timerStarted = false
16 |
17 | function core._616:YouDontHaveAnEternity()
18 | --Defeat Malygos in 6 minutes or less-Defeat Malygos in 6 minutes or less
19 |
20 | if timerStarted == false then
21 | timerStarted = true
22 | if core.difficultyID == 3 then
23 | core.MobCounter:SetupCountdown(360, 1874)
24 | elseif core.difficultyID == 4 then
25 | core.MobCounter:SetupCountdown(360, 1875)
26 | end
27 | end
28 | end
29 |
30 | function core._616:APokeInTheEye()
31 | if subtractionFailWarningAnnounced == false then
32 | subtractionFailWarningAnnounced = true
33 | if core.difficultyID == 3 then
34 | --10 Man
35 | if core.groupSize > 9 then
36 | core:sendMessage(GetAchievementLink(1869) .. " " .. L["Shared_WrongGroupConfig"])
37 | end
38 | elseif core.difficultyID == 4 then
39 | --25 Man
40 | if core.groupSize > 21 then
41 | core:sendMessage(GetAchievementLink(1870) .. " " .. L["Shared_WrongGroupConfig"])
42 | end
43 | end
44 | end
45 | end
46 |
47 | function core._616:DenyinTheScion()
48 | if core.type == "PARTY_KILL" and core.destID == "30249" and UnitControllingVehicle(core.sourceName) == true then
49 | core:getAchievementSuccessPersonal(3,"source")
50 | end
51 | end
52 |
53 | function core._616:ClearVariables()
54 | ------------------------------------------------------
55 | ---- You Don't Have an Eternity
56 | ------------------------------------------------------
57 | timerStarted = false
58 | end
--------------------------------------------------------------------------------
/LichKingDungeons/TheVioletHold.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Violet Hold Bosses
8 | ------------------------------------------------------
9 | core._608 = {}
10 | core._608.Events = CreateFrame("Frame")
11 |
12 | ------------------------------------------------------
13 | ---- Defenseless
14 | ------------------------------------------------------
15 | local defenselessFailed = false
16 |
17 | function core._608:ZuramatTheObliterator()
18 | if core.type == "UNIT_DIED" and core.destID == "29364" then
19 | core:getAchievementFailed()
20 | end
21 | end
22 |
23 | function core._608:ClearVariables()
24 | end
25 |
26 | function core._608:InstanceCleanup()
27 | core._608.Events:UnregisterEvent("UNIT_SPELLCAST_SUCCEEDED")
28 | end
29 |
30 | function core._608:InitialSetup()
31 | core._608.Events:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
32 | end
33 |
34 | core._608.Events:SetScript("OnEvent", function(self, event, ...)
35 | return self[event] and self[event](self, event, ...)
36 | end)
37 |
38 | function core._608.Events:UNIT_SPELLCAST_SUCCEEDED(self, unitID, lineID, spellID, ...)
39 | if core.Instances[core.expansion][core.instanceType][core.instance]["boss1"].enabled == true and defenselessFailed == false then
40 | --Check if player has clicked on a crystal
41 | if spellID == 6247 then
42 | core:sendMessage(GetAchievementLink(1816) .. " FAILED! Defense Control Crystal Used (" .. UnitName(unitID) .. ")")
43 | defenselessFailed = true
44 | end
45 | end
46 | end
47 |
48 | function core._608:TrackAdditional()
49 | if core.Instances[core.expansion][core.instanceType][core.instance]["boss1"].enabled == true and defenselessFailed == false then
50 | if core.type == "SPELL_CAST_SUCCESS" and core.spellId == 58040 then
51 | core:sendMessage(GetAchievementLink(1816) .. " FAILED! Prison Seal Integrity less than 100%")
52 | defenselessFailed = true
53 | end
54 | end
55 | end
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Instance Achievement Tracker
2 |
3 | # Download Links
4 |
5 | https://www.curseforge.com/wow/addons/instance-achievement-tracker
6 |
7 | http://www.wowinterface.com/downloads/info24756-InstanceAchievementTracker.html
8 |
9 | # DISCORD Channel!
10 |
11 | https://discord.gg/U6S7vjb
12 |
13 | Join the discord to get updates about the addon. You can also report bugs there too or suggest new features.
14 |
15 | WARNING: This addon is still a work in progress. I've added tracking for over 300 achievements, so there are bound to be some errors. If you come across any issues, It would great if you could report the issue in the comments below or on the discord server.
16 |
17 | # Overview:
18 | Instance Achievement Tracker helps track whether the criteria of achievements in raid or dungeons has been met or failed. All information is announced in the appropriate chat channel (raid, party, say) depending on the type of group you are in. Instance Achievement Tracker will also keep track of how many mobs are currently alive for achievements which require you to kill a certain amount of mobs in a time period. You can also easily see which players in the group are missing which achievements and announce tactics directly to the group chat.
19 |
20 | # Features:
21 | * Tracks when the criteria of instance achievements has been met and output this to chat
22 | * Tracks when the criteria of instance achievements has failed and outputs this to chat
23 | * Keeps track of achievements which require you to kill so many mobs within a certain time period. It will announce to chat when enough mobs have spawned.
24 | * Scans all players in the group to see which achievements each player is missing for the current instance
25 | * Announce to chat players who are missing achievements for certain bosses
26 | * Announce to chat tactics for a certain boss
27 |
28 | # Slash Commands:
29 | /iat - Open and closes the GUI
30 |
31 | # BFA & Legion Tactics:
32 | https://discord.gg/achievements
33 | Tactics kindly contributed by the Achievements Discord Server, the community where members can meet like-minded completionists and form groups for a variety of achievements.
34 |
--------------------------------------------------------------------------------
/DragonflightDungeons/TheNokhudOffensive.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- The Nokhud Offensive Bosses
9 | ------------------------------------------------------
10 | core._2516 = {}
11 |
12 | ------------------------------------------------------
13 | ---- Teera and Maruuk
14 | ------------------------------------------------------
15 | local teeraAndMaruukKilled = false
16 |
17 | function core._2516:RagingTempest()
18 | --Defeat the Raging Tempest after striking a single player with 5 Lightning Strikes simultaneously and defeating a Storm Elemental in The Nokhud Offensive on Mythic difficulty.
19 |
20 | --TODO: Announce when Storm Elemental has spawned
21 |
22 | if core.type == "SPELL_AURA_APPLIED" or core.type == "SPELL_AURA_APPLIED_DOSE" and core.spellId == 382628 then
23 | --TODO: Announce stacks of Storm Surge on player
24 | end
25 |
26 | if core:getBlizzardTrackingStatus(16447, 1) == true then
27 | core:getAchievementSuccess()
28 | end
29 | end
30 |
31 | function core._2516:TeeraAndMaruuk()
32 | --Defeat Teera and Maruuk while holding the Spear of Tolui, War Axe of Berke, and Bow of Sartaq in The Nokhud Offensive on Mythic difficulty.
33 |
34 | --TODO: Announce which player has which weapon
35 |
36 | if core.type == "UNIT_DIED" and (core.destID == "186339" or core.destID == "186338") then
37 | teeraAndMaruukKilled = true
38 | end
39 |
40 | if core:getBlizzardTrackingStatus(16456, 1) == false and teeraAndMaruukKilled == false then
41 | core:getAchievementFailed()
42 | end
43 | end
44 |
45 | function core._2516:BalakarKhan()
46 | --Defeat Balakar Khan after healing Ohn'ahra to full health in The Nokhud Offensive on Mythic difficulty.
47 |
48 | if core:getBlizzardTrackingStatus(16602, 1) == true then
49 | core:getAchievementSuccess()
50 | end
51 | end
52 |
53 | function core._2516:ClearVariables()
54 | ------------------------------------------------------
55 | ---- Teera and Maruuk
56 | ------------------------------------------------------
57 | teeraAndMaruukKilled = false
58 | end
59 |
60 |
--------------------------------------------------------------------------------
/CataclysmDungeons/Stonecore.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Stonecore Bosses
8 | ------------------------------------------------------
9 | core._725 = {}
10 |
11 | ------------------------------------------------------
12 | ---- High Priestess Azil
13 | ------------------------------------------------------
14 | local mobLimitReached = false
15 | local devoutFollowersKilled = 0
16 | local timerStarted = false
17 |
18 | function core._725:HighPriestessAzil()
19 | core:trackMob("42428", "Devout Follower", 60, "Kill the Devout Followers Now", 10, nil, nil)
20 |
21 | if core.mobCounter >= 10 then
22 | mobLimitReached = true
23 | end
24 |
25 | if core.type == "PARTY_KILL" and core.spellId ~= 79021 and core.spellId ~= 79249 then
26 | devoutFollowersKilled = devoutFollowersKilled + 1
27 | if mobLimitReached == true and timerStarted == false then
28 | timerStarted = true
29 | core:sendMessage(core:getAchievement() .. " Timer Started! 10 seconds remaining!")
30 | C_Timer.After(10, function()
31 | if devoutFollowersKilled >= 60 then
32 | core:getAchievementSuccess()
33 | else
34 | core:sendMessage(core:getAchievement() .. " FAILED! (" .. devoutFollowersKilled .. "/60) Devout Followers killed in time")
35 | mobLimitReached = false
36 | devoutFollowersKilled = 0
37 | timerStarted = false
38 | end
39 | end)
40 | elseif mobLimitReached == true and timerStarted == true then
41 | if devoutFollowersKilled >= 60 then
42 | core:getAchievementSuccess()
43 | end
44 | end
45 | end
46 | end
47 |
48 | function core._725:ClearVariables()
49 | ------------------------------------------------------
50 | ---- High Priestess Azil
51 | ------------------------------------------------------
52 | mobLimitReached = false
53 | devoutFollowersKilled = 0
54 | timerStarted = false
55 | end
--------------------------------------------------------------------------------
/PandariaScenarios/DaggerInTheDark.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Dagger in the Dark
9 | ------------------------------------------------------
10 | core._1095 = {}
11 | core._1095.Events = CreateFrame("Frame")
12 |
13 | ------------------------------------------------------
14 | ---- Darkhatched Lizard-Lord
15 | ------------------------------------------------------
16 | local addsKilled = 0
17 |
18 | function core._1095:DarkhatchedLizardLord()
19 | --Kill 3 of the Darkhatched Lizard-Lord's reinforcements using his Water Jets ability in the Dagger in the Dark Scenario.
20 |
21 | if core.type == "SPELL_DAMAGE" and core.spellId == 133121 and core.overkill > 0 then
22 | addsKilled = addsKilled + 1
23 | core:sendMessage(core:getAchievement() .. " " .. L["Shared_AddsKilled"] .. " (" .. addsKilled .. "/3)")
24 | end
25 |
26 | if addsKilled >= 3 then
27 | core:getAchievementSuccess()
28 | end
29 | end
30 |
31 | function core._1095:ClearVariables()
32 | ------------------------------------------------------
33 | ---- Darkhatched Lizard-Lord
34 | ------------------------------------------------------
35 | addsKilled = 0
36 | end
37 |
38 | function core._1095:InstanceCleanup()
39 | core._1095.Events:UnregisterEvent("UNIT_AURA")
40 | end
41 |
42 | function core._1095:InitialSetup()
43 | core._1095.Events:RegisterEvent("UNIT_AURA")
44 | end
45 |
46 | core._1095.Events:SetScript("OnEvent", function(self, event, ...)
47 | return self[event] and self[event](self, event, ...)
48 | end)
49 |
50 | function core._1095.Events:UNIT_AURA(self, unitID, ...)
51 | if next(core.currentBosses) ~= nil then
52 | if core.currentBosses[1].achievement == 7986 then
53 | for i=1,40 do
54 | local auraData = C_UnitAuras.GetBuffDataByIndex(unitID, i)
55 | if auraData ~= nil and auraData.spellId == 133004 then
56 | core:getAchievementFailedWithMessageAfter("(" .. UnitName(unitID) .. ")")
57 | end
58 | end
59 | end
60 | end
61 | end
--------------------------------------------------------------------------------
/LichKingDungeons/DrakTharonKeep.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Drak'Tharon Keep Bosses
9 | ------------------------------------------------------
10 | core._600 = {}
11 |
12 | ------------------------------------------------------
13 | ---- King Dred
14 | ------------------------------------------------------
15 | local drakkariKilled = 0
16 |
17 | function core._600:Trollgore()
18 | --Defeat Trollgore in Drak'Tharon Keep on Heroic Difficulty before Consume reaches ten stacks.
19 |
20 | if core.type == "SPELL_AURA_APPLIED_DOSE" and core.amount >= 10 and core.spellId == 59805 then
21 | core:getAchievementFailed()
22 | end
23 | end
24 |
25 | function core._600:NovosTheSummoner()
26 | --Defeat Novos the Summoner in Drak'Tharon Keep on Heroic Difficulty without allowing any undead minions to reach the floor.
27 |
28 | if core:getBlizzardTrackingStatus(2057) == false then
29 | core:getAchievementFailed()
30 | end
31 | end
32 |
33 | function core._600:KingDred()
34 | --Engage King Dred in Drak'Tharon Keep on Heroic Difficulty and slay 6 Drakkari Gutrippers or Drakkari Scytheclaw during his defeat.
35 |
36 | if core.type == "UNIT_DIED" and (core.destID == "26641" or core.destID == "26628") and drakkariKilled < 6 then
37 | drakkariKilled = drakkariKilled + 1
38 | if core.gameVersionMajor == 3 then
39 | core:sendMessage(core:getAchievement() .. " " .. getNPCNameClassic(26641) .. "/" .. getNPCNameClassic(26628) .. " " .. L["Shared_Killed"] .. " (" .. drakkariKilled .. "/6)",true)
40 | else
41 | core:sendMessage(core:getAchievement() .. " " .. getNPCName(26641) .. "/" .. getNPCName(26628) .. " " .. L["Shared_Killed"] .. " (" .. drakkariKilled .. "/6)",true)
42 | end
43 | end
44 |
45 | if drakkariKilled >= 6 then
46 | core:getAchievementSuccess()
47 | end
48 | end
49 |
50 | function core._600:ClearVariables()
51 | ------------------------------------------------------
52 | ---- King Dred
53 | ------------------------------------------------------
54 | drakkariKilled = 0
55 | end
--------------------------------------------------------------------------------
/DragonflightDungeons/RubyLifePools.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Ruby Life Pools Bosses
9 | ------------------------------------------------------
10 | core._2521 = {}
11 |
12 | ------------------------------------------------------
13 | ---- Melidrussa
14 | ------------------------------------------------------
15 | local infusedWhelpCounter = 0
16 |
17 | function core._2521:KyrakkaAndErkhartStormvein()
18 | --Defeat Kyrakka and Erkhart Stormvein after chilling, searing, tempering, and keeping alive the Nascent Ruby Egg in Ruby Life Pools on Mythic difficulty.
19 |
20 | --TODO: This is done throughout the whole dungeon so we need to add tracking for other fights too.
21 |
22 | if core:getBlizzardTrackingStatus(16440, 1) == false then
23 | core:getAchievementFailed()
24 | end
25 | end
26 |
27 | function core._2521:Melidrussa()
28 | --Defeat Melidrussa after defeating 40 of her chamber's Infused Whelps in Ruby Life Pools on Mythic difficulty.
29 |
30 | if core.type == "UNIT_DIED" and core.destID == "189893" then
31 | infusedWhelpCounter = infusedWhelpCounter + 1
32 | core:sendMessageDelay(getNPCName(189893) .. " " .. L["Shared_Killed"] .. " (" .. infusedWhelpCounter .. "/40)", infusedWhelpCounter, 5)
33 |
34 | core.IATInfoFrame:SetSubHeading1(L["MobCounter_TimeReamining"] .. ": " .. L["MobCounter_TimerNotApplicable"])
35 | core.IATInfoFrame:SetText1(format(L["MobCounter_MobsKilled"], getNPCName(tonumber(189893))) .. " (" .. infusedWhelpCounter .. "/40))","GameFontHighlightLarge")
36 | end
37 |
38 | if core:getBlizzardTrackingStatus(16402, 1) == true then
39 | core:getAchievementSuccess()
40 | end
41 | end
42 |
43 | function core._2521:KokiaBlazehoof()
44 | --Defeat Kokia Blazehoof after heating up 4 life pools with Molten Boulder in Ruby Life Pools on Mythic difficulty.
45 |
46 | if core:getBlizzardTrackingStatus(16320, 1) == true then
47 | core:getAchievementSuccess()
48 | end
49 | end
50 |
51 | function core._2521:ClearVariables()
52 | ------------------------------------------------------
53 | ---- Melidrussa
54 | ------------------------------------------------------
55 | infusedWhelpCounter = 0
56 | end
--------------------------------------------------------------------------------
/LichKingDungeons/ForgeOfSouls.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- The Forge of Souls Bosses
8 | ------------------------------------------------------
9 | core._632 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Bronjahm
13 | ------------------------------------------------------
14 | local corruptedSoulFragments = 0
15 |
16 |
17 | function core._632:Bronjahm()
18 | if core.type == "SPELL_SUMMON" and core.destID == "36535" then
19 | corruptedSoulFragments = corruptedSoulFragments + 1
20 | core:sendMessage(core:getAchievement() .. " Corrupted Soul Fragments Alive (" .. corruptedSoulFragments .. "/4)")
21 | end
22 |
23 | if core.type == "PARTY_KILL" and core.destID == "36535" then
24 | corruptedSoulFragments = corruptedSoulFragments - 1
25 |
26 | if core.achievementsCompleted[1] == true then
27 | core:getAchievementFailedWithMessageAfter(" This achievement can still be completed again by waiting for more Corrupted Soul Fragments")
28 | core.achievementsCompleted[1] = false
29 | end
30 | end
31 |
32 | if core.type == "SPELL_HEAL" and core.spellId == 68858 then
33 | corruptedSoulFragments = corruptedSoulFragments - 1
34 | core:sendMessage(core:getAchievement() .. " Corrupted Soul Fragments Alive (" .. corruptedSoulFragments .. "/4)")
35 |
36 | if core.achievementsCompleted[1] == true then
37 | core:getAchievementFailedWithMessageAfter(" This achievement can still be completed again by waiting for more Corrupted Soul Fragments")
38 | core.achievementsCompleted[1] = false
39 | end
40 | end
41 |
42 | if corruptedSoulFragments >= 4 then
43 | core:getAchievementSuccess()
44 | core.achievementsFailed[1] = false
45 | end
46 | end
47 |
48 | function core._632:DevourerOfSouls()
49 | if core.type == "SPELL_CAST_SUCCESS" and core.spellId == 68982 then
50 | core:getAchievementFailed()
51 | end
52 | end
53 |
54 | function core._632:ClearVariables()
55 | ------------------------------------------------------
56 | ---- Bronjahm
57 | ------------------------------------------------------
58 | corruptedSoulFragments = 0
59 | end
--------------------------------------------------------------------------------
/Libs/LibStub/LibStub.lua:
--------------------------------------------------------------------------------
1 | -- $Id: LibStub.lua 76 2007-09-03 01:50:17Z mikk $
2 | -- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info
3 | -- LibStub is hereby placed in the Public Domain
4 | -- Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
5 | local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
6 | local LibStub = _G[LIBSTUB_MAJOR]
7 |
8 | -- Check to see is this version of the stub is obsolete
9 | if not LibStub or LibStub.minor < LIBSTUB_MINOR then
10 | LibStub = LibStub or {libs = {}, minors = {} }
11 | _G[LIBSTUB_MAJOR] = LibStub
12 | LibStub.minor = LIBSTUB_MINOR
13 |
14 | -- LibStub:NewLibrary(major, minor)
15 | -- major (string) - the major version of the library
16 | -- minor (string or number ) - the minor version of the library
17 | --
18 | -- returns nil if a newer or same version of the lib is already present
19 | -- returns empty library object or old library object if upgrade is needed
20 | function LibStub:NewLibrary(major, minor)
21 | assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
22 | minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
23 |
24 | local oldminor = self.minors[major]
25 | if oldminor and oldminor >= minor then return nil end
26 | self.minors[major], self.libs[major] = minor, self.libs[major] or {}
27 | return self.libs[major], oldminor
28 | end
29 |
30 | -- LibStub:GetLibrary(major, [silent])
31 | -- major (string) - the major version of the library
32 | -- silent (boolean) - if true, library is optional, silently return nil if its not found
33 | --
34 | -- throws an error if the library can not be found (except silent is set)
35 | -- returns the library object if found
36 | function LibStub:GetLibrary(major, silent)
37 | if not self.libs[major] and not silent then
38 | error(("Cannot find a library instance of %q."):format(tostring(major)), 2)
39 | end
40 | return self.libs[major], self.minors[major]
41 | end
42 |
43 | -- LibStub:IterateLibraries()
44 | --
45 | -- Returns an iterator for the currently registered libraries
46 | function LibStub:IterateLibraries()
47 | return pairs(self.libs)
48 | end
49 |
50 | setmetatable(LibStub, { __call = LibStub.GetLibrary })
51 | end
52 |
--------------------------------------------------------------------------------
/InstanceAchievementTracker_Wrath.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 30405
2 | ## Notes: An addon for tracking the completion/faliure of instance achievements.
3 | ## Title:Instance Achievement Tracker
4 | ## Author: Whizzey
5 | ## Version: 5.24.0
6 | ## IconTexture: Interface/AddOns/InstanceAchievementTracker/Images/icon.jpg
7 | ## OptionalDeps: LibStub, CallbackHandler-1.0, LibDBIcon-1.0, LibInspect, LibWindow-1.1
8 | ## SavedVariables: AchievementTrackerOptions, AchievementTrackerDebug, AchievementTrackerNPCCache, AchievementTrackerNPCCacheClassic
9 | ## X-Curse-Project-ID: 286675
10 | ## X-WoWI-ID: 24756
11 | ## X-Wago-ID: RBKpXaKE
12 |
13 | Libs\LibStub\LibStub.lua
14 | Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua
15 | Libs\LibDataBroker-1.1\LibDataBroker-1.1.lua
16 | Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua
17 | Libs\UTF8\utf8.lua
18 | Libs\UTF8\utf8data.lua
19 | Libs\LibWindow-1.1\LibWindow-1.1.lua
20 | Libs\LibDetours-1.0\LibDetours-1.0.lua
21 | Libs\LibClassicInspector\LibClassicInspector.lua
22 | Libs\LibDBCompartment\LibDBCompartment-1.0.lua
23 | Libs\TaintLess\TaintLess.xml
24 |
25 | Localization.lua
26 | Localization.enUS.lua
27 | Localization.deDE.lua
28 | Localization.esES.lua
29 | Localization.frFR.lua
30 | Localization.ptBR.lua
31 | Localization.ruRU.lua
32 | Localization.zhCN.lua
33 | Localization.zhTW.lua
34 | Localization.koKR.lua
35 |
36 | LichKingRaids\Icecrown.lua
37 | LichKingRaids\EyeOfEternity.lua
38 | LichKingRaids\Naxxramas.lua
39 | LichKingRaids\ObsidianSanctum.lua
40 | LichKingRaids\OnyxiasLair.lua
41 | LichKingRaids\TrialOfTheCrusader.lua
42 | LichKingRaids\Ulduar.lua
43 | LichKingRaids\VaultOfArchavon.lua
44 |
45 | LichKingDungeons\AhnkahetTheOldKingdom.lua
46 | LichKingDungeons\AzjolNerub.lua
47 | LichKingDungeons\DrakTharonKeep.lua
48 | LichKingDungeons\ForgeOfSouls.lua
49 | LichKingDungeons\Gundrak.lua
50 | LichKingDungeons\HallsOfLightning.lua
51 | LichKingDungeons\HallsOfReflection.lua
52 | LichKingDungeons\HallsOfStone.lua
53 | LichKingDungeons\PitOfSaron.lua
54 | LichKingDungeons\TheCullingOfStratholme.lua
55 | LichKingDungeons\TheNexus.lua
56 | LichKingDungeons\TheOculus.lua
57 | LichKingDungeons\TheVioletHold.lua
58 | LichKingDungeons\TrialOfTheChampion.lua
59 | LichKingDungeons\UtgardeKeep.lua
60 | LichKingDungeons\UtgardePinnacle.lua
61 |
62 | Instances.lua
63 | ItemCache.lua
64 | NPCCache.lua
65 | InfoFrame.lua
66 | GUI.lua
67 | MobCounter.lua
68 | emotes.lua
69 | AchievementTrackerCore.lua
70 | Debug.lua
71 |
--------------------------------------------------------------------------------
/Libs/LibDBCompartment/Libs/LibStub/LibStub.lua:
--------------------------------------------------------------------------------
1 | -- $Id: LibStub.lua 103 2014-10-16 03:02:50Z mikk $
2 | -- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/addons/libstub/ for more info
3 | -- LibStub is hereby placed in the Public Domain
4 | -- Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
5 | local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
6 | local LibStub = _G[LIBSTUB_MAJOR]
7 |
8 | -- Check to see is this version of the stub is obsolete
9 | if not LibStub or LibStub.minor < LIBSTUB_MINOR then
10 | LibStub = LibStub or {libs = {}, minors = {} }
11 | _G[LIBSTUB_MAJOR] = LibStub
12 | LibStub.minor = LIBSTUB_MINOR
13 |
14 | -- LibStub:NewLibrary(major, minor)
15 | -- major (string) - the major version of the library
16 | -- minor (string or number ) - the minor version of the library
17 | --
18 | -- returns nil if a newer or same version of the lib is already present
19 | -- returns empty library object or old library object if upgrade is needed
20 | function LibStub:NewLibrary(major, minor)
21 | assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
22 | minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
23 |
24 | local oldminor = self.minors[major]
25 | if oldminor and oldminor >= minor then return nil end
26 | self.minors[major], self.libs[major] = minor, self.libs[major] or {}
27 | return self.libs[major], oldminor
28 | end
29 |
30 | -- LibStub:GetLibrary(major, [silent])
31 | -- major (string) - the major version of the library
32 | -- silent (boolean) - if true, library is optional, silently return nil if its not found
33 | --
34 | -- throws an error if the library can not be found (except silent is set)
35 | -- returns the library object if found
36 | function LibStub:GetLibrary(major, silent)
37 | if not self.libs[major] and not silent then
38 | error(("Cannot find a library instance of %q."):format(tostring(major)), 2)
39 | end
40 | return self.libs[major], self.minors[major]
41 | end
42 |
43 | -- LibStub:IterateLibraries()
44 | --
45 | -- Returns an iterator for the currently registered libraries
46 | function LibStub:IterateLibraries()
47 | return pairs(self.libs)
48 | end
49 |
50 | setmetatable(LibStub, { __call = LibStub.GetLibrary })
51 | end
52 |
--------------------------------------------------------------------------------
/LichKingDungeons/TheCullingOfStratholme.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- The Culling of Stratholme Bosses
8 | ------------------------------------------------------
9 | core._595 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Zombiefest
13 | ------------------------------------------------------
14 | local timerStarted = false
15 | local zombieKilled = 0
16 | local zombieCounterReached = false
17 | local achievementCompleted = false
18 |
19 | function core._595:ZombieFest()
20 | core:trackMob("27737", "Risen Zombie", 100, " 100 Risen Zombies Spawned!", 10, nil, nil)
21 |
22 | if core.mobCounter >= 100 then
23 | zombieCounterReached = true
24 | end
25 |
26 | if core.type == "UNIT_DIED" and core.destID == "27737" and zombieCounterReached == true then
27 | zombieKilled = zombieKilled + 1
28 | if timerStarted == false then
29 | core:sendMessage(GetAchievementLink(1872) .. " Timer Started! 60 seconds to kill Risen Zombies")
30 | timerStarted = true
31 | C_Timer.After(60, function()
32 | if zombieKilled >= 100 then
33 | if achievementCompleted == false then
34 | core:sendMessage(GetAchievementLink(1872) .. " Criteria Met!")
35 | achievementCompleted = true
36 | end
37 | else
38 | if achievementCompleted == false then
39 | core:sendMessage(GetAchievementLink(1872) .. " (" .. zombieKilled .. "/100) Risen Zombies killed in time")
40 | zombieKilled = 0
41 | zombieCounterReached = false
42 | achievementCompleted = false
43 | end
44 | end
45 | end)
46 | else
47 | if zombieKilled >= 100 and achievementCompleted == false then
48 | core:sendMessage(GetAchievementLink(1872) .. " Criteria Met!")
49 | achievementCompleted = true
50 | end
51 | end
52 | end
53 | end
54 |
55 | function core._595:ClearVariables()
56 | ------------------------------------------------------
57 | ---- Zombiefest
58 | ------------------------------------------------------
59 | timerStarted = false
60 | zombieKilled = 0
61 | zombieCounterReached = false
62 | end
--------------------------------------------------------------------------------
/PandariaDungeons/GateOfTheSettingSun.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Gate of the Setting Sun Bosses
8 | ------------------------------------------------------
9 | core._962 = {}
10 | core._962.Events = CreateFrame("Frame")
11 |
12 | local f = CreateFrame("Frame")
13 |
14 | ------------------------------------------------------
15 | ---- Saboteur Kip'tilak
16 | ------------------------------------------------------
17 | local stableMunitionsCounter = 0
18 | local tempStore = {}
19 |
20 | function core._962:SaboteurKiptilak()
21 | if core.type == "SPELL_CAST_SUCCESS" and core.spellId == 107215 and core.spawn_uid_dest ~= nil then
22 | if core:has_value(tempStore, core.spawn_uid_dest) == false then
23 | if stableMunitionsCounter > 0 then
24 | stableMunitionsCounter = stableMunitionsCounter - 1
25 | end
26 | table.insert(tempStore, core.spawn_uid_dest)
27 | end
28 | end
29 |
30 | if stableMunitionsCounter >= 15 then
31 | core:getAchievementSuccessWithCustomMessage("","15 Stable Munitions Bombs Active. DPS boss down to 70% to complete achievement")
32 | end
33 | end
34 |
35 | function core._962:Raigonn()
36 | if core.type == "UNIT_DIED" and (core.destID == "56929" or core.destID == "56930" or core.destID == "56912") then
37 | core:getAchievementFailed()
38 | end
39 | end
40 |
41 | function core._962:ClearVariables()
42 | ------------------------------------------------------
43 | ---- Saboteur Kip'tilak
44 | ------------------------------------------------------
45 | stableMunitionsCounter = 0
46 | tempStore = {}
47 | end
48 |
49 | function core._962:InstanceCleanup()
50 | core._962.Events:UnregisterEvent("UNIT_SPELLCAST_SUCCEEDED")
51 | end
52 |
53 | function core._962:InitialSetup()
54 | core._962.Events:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
55 | end
56 |
57 | core._962.Events:SetScript("OnEvent", function(self, event, ...)
58 | return self[event] and self[event](self, event, ...)
59 | end)
60 |
61 | function core._962.Events:UNIT_SPELLCAST_SUCCEEDED(self, unitID, lineID, spellID, ...)
62 | if core.Instances[core.expansion][core.instanceType][core.instance]["boss1"].enabled == true then
63 | --Plant Munitions
64 | if spellID == 114288 then
65 | stableMunitionsCounter = stableMunitionsCounter + 1
66 | end
67 | end
68 | end
69 |
70 |
--------------------------------------------------------------------------------
/PandariaDungeons/TempleOfTheJadeSerpent.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Temple of the Jade Serpent Bosses
8 | ------------------------------------------------------
9 | core._960 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Wise Mari
13 | ------------------------------------------------------
14 | local playersHit = {}
15 |
16 | ------------------------------------------------------
17 | ---- Sha of Doubt
18 | ------------------------------------------------------
19 | local ShaOfDoubtCounter = 0
20 |
21 | function core._960:WiseMari()
22 | if core.spellId == 115167 then
23 | --If someone gets hit by the ability, check if they need the achievement or not
24 |
25 | if playersHit[core.destName] == nil then
26 | --Players has not been hit already
27 | --Check if the player actually needs the achievement
28 | if core:has_value(core.currentBosses[1].players, core.destName) then
29 | --Player needs achievement but has failed it
30 | core:sendMessage(core.destName .. " has failed " .. GetAchievementLink(core.achievementIDs[1]) .. " (Personal Achievement)")
31 | end
32 | playersHit[core.destName] = true
33 | end
34 | end
35 | end
36 |
37 | function core._960:ShaOfDoubt()
38 | local name, realm = UnitName("Player")
39 | if (core.type == "SPELL_AURA_APPLIED" or core.type == "SPELL_AURA_APPLIED_DOSE") and core.spellId == 123916 and core.destName == name then
40 | for i=1,40 do
41 | local auraData = C_UnitAuras.GetDebuffDataByIndex("Player", i)
42 | if auraData ~= nil and auraData.spellId == 123916 then
43 | ShaOfDoubtCounter = auraData.applications
44 | core:sendMessage(GetAchievementLink(core.achievementIDs[2]) .. " Sha of Doubt Counter (" .. ShaOfDoubtCounter .. "/4)")
45 | end
46 | end
47 | end
48 |
49 | if ShaOfDoubtCounter == 4 then
50 | core:getAchievementSuccess()
51 | end
52 | end
53 |
54 | function core._960:ShaOfDoubt2()
55 | for i=1,40 do
56 | local auraData = C_UnitAuras.GetAuraDataByIndex("Player", i)
57 | if auraData ~= nil and auraData.spellId == 118714 then
58 | core:getAchievementFailed(2)
59 | end
60 | end
61 | end
62 |
63 | function core._960:ClearVariables()
64 | ------------------------------------------------------
65 | ---- Wise Mari
66 | ------------------------------------------------------
67 | playersHit = {}
68 | end
--------------------------------------------------------------------------------
/DragonflightDungeons/UldamanLegacyOfTyr.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Uldaman: Legacy of Tyr Bosses
9 | ------------------------------------------------------
10 | core._2451 = {}
11 |
12 | ------------------------------------------------------
13 | ---- Sentinel Talondras
14 | ------------------------------------------------------
15 | local stunCounter = 0
16 | local stunUID = {}
17 |
18 | function core._2451:Bromach()
19 | --Defeat Bromach while 10 or more Stonevault Troggs are still alive in Uldaman: Legacy of Tyr on Mythic difficulty.
20 |
21 | --TODO: InfoFrame to show how many Stonevault Troggs are alive
22 |
23 | if core:getBlizzardTrackingStatus(16337, 1) == true then
24 | core:getAchievementSuccess()
25 | end
26 | end
27 |
28 | function core._2451:SentinelTalondras()
29 | --Defeat Sentinel Talondras after simultaneously stunning both Sentinel Talondras and all party members in Uldaman: Legacy of Tyr on Mythic difficulty.
30 |
31 | --TODO: Set all players green when completed
32 | --TODO: Show boss on the InfoFrame
33 |
34 | -- InfoFrame_UpdatePlayersOnInfoFrame()
35 | -- InfoFrame_SetHeaderCounter(L["Shared_PlayersWithBuff"],stunCounter,core.groupSize)
36 |
37 | -- if core.type == "SPELL_AURA_APPLIED" and core.spellId == 372652 and core.destID ~= nil then
38 | -- if stunUID[core.destName] == nil then
39 | -- stunCounter = stunCounter + 1
40 | -- stunUID[core.destName] = core.destName
41 | -- InfoFrame_SetPlayerComplete(core.destName)
42 | -- end
43 | -- end
44 |
45 | -- if core.type == "SPELL_AURA_REMOVED" and core.spellId == 372652 then
46 | -- if stunUID[core.destName] ~= nil then
47 | -- stunCounter = stunCounter - 1
48 | -- stunUID[core.destName] = nil
49 | -- InfoFrame_SetPlayerFailed(core.destName)
50 | -- end
51 | -- end
52 |
53 | if core:getBlizzardTrackingStatus(16282, 1) == true then
54 | core:getAchievementSuccess()
55 | end
56 | end
57 |
58 | function core._2451:ChronoLordDeios()
59 | --Defeat Chrono-Lord Deios after catching every Eternity Orb as it falls to the ground in Uldaman: Legacy of Tyr on Mythic difficulty.
60 | if core:getBlizzardTrackingStatus(16281, 1) == true then
61 | core:getAchievementSuccess()
62 | end
63 | end
64 |
65 | function core._2451:ClearVariables()
66 | ------------------------------------------------------
67 | ---- Sentinel Talondras
68 | ------------------------------------------------------
69 | stunCounter = 0
70 | stunUID = {}
71 | end
--------------------------------------------------------------------------------
/LegionDungeons/SeatOfTheTriumvirate.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Seat of the Triumvirate Bosses
9 | ------------------------------------------------------
10 | core._1753 = {}
11 |
12 | ------------------------------------------------------
13 | ---- L'ura
14 | ------------------------------------------------------
15 | local crushingDarknessCounter = 0
16 | local crushingDarknessUID = {}
17 | local luraKilled = false
18 |
19 | function core._1753:ZuraalTheAscended()
20 | if core.type == "UNIT_DIED" and core.destID == "126283" then
21 | core:getAchievementSuccess()
22 | end
23 | end
24 |
25 | function core._1753:Saprish()
26 | --Have Darkfang destroy 4 Sealed Void Caches using Shadow Pounce, then defeat Saprish in Seat of the Triumvirate on Mythic Difficulty.
27 | if core:getBlizzardTrackingStatus(12005) == true then
28 | core:getAchievementSuccess()
29 | end
30 | end
31 |
32 | function core._1753:Lura()
33 | if core.type == "UNIT_DIED" and core.destID == "124729" then
34 | luraKilled = true
35 | end
36 |
37 | if core.type == "SPELL_AURA_REMOVED" and core.spellId == 250821 and luraKilled == false then
38 | core:getAchievmentFailed()
39 | end
40 | end
41 |
42 | function core._1753:TrackAdditional()
43 | if core.Instances[core.expansion][core.instanceType][core.instance]["boss3"].enabled == true then
44 | --Gained Crushing Darkness
45 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 250821 then
46 | if crushingDarknessUID[core.spawn_uid_dest_Player] == nil then
47 | crushingDarknessUID[core.spawn_uid_dest_Player] = core.spawn_uid_dest_Player
48 | crushingDarknessCounter = crushingDarknessCounter + 1
49 | core:sendMessage(core.destName .. " " .. L["Shared_HasGained"] .. " " .. C_Spell.GetSpellLink(250821) .. " (" .. crushingDarknessCounter .. "/" .. core.groupSize .. ")")
50 | end
51 | end
52 |
53 | --Lost Crushing Darkness
54 | if core.type == "SPELL_AURA_REMOVED" and core.spellId == 250821 and luraKilled == false then
55 | if crushingDarknessUID[core.spawn_uid_dest_Player] ~= nil then
56 | crushingDarknessUID[core.spawn_uid_dest_Player] = nil
57 | crushingDarknessCounter = crushingDarknessCounter - 1
58 | core:sendMessage(core.destName .. " " .. L["Shared_HasLost"] .. " " .. C_Spell.GetSpellLink(250821) .. " (" .. crushingDarknessCounter .. "/" .. core.groupSize .. ")")
59 | end
60 | end
61 | end
62 | end
63 |
64 | function core._1753:ClearVariables()
65 | end
--------------------------------------------------------------------------------
/CataclysmDungeons/BlackrockCaverns.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Blackrock Caverns Bosses
9 | ------------------------------------------------------
10 | core._645 = {}
11 |
12 | ------------------------------------------------------
13 | ---- Blackrock Caverns Bosses
14 | ------------------------------------------------------
15 | local angeredEarthKilled = 0
16 | local angeredEarthUID = {}
17 |
18 | ------------------------------------------------------
19 | ---- Blackrock Caverns Bosses
20 | ------------------------------------------------------
21 | local evolvedTwilightZealotKilled = 0
22 |
23 | function core._645:RomoggBonecrusher()
24 | if core.type == "SPELL_DAMAGE" and core.destID == "50376" and core.spellId == 75428 and core.overkill > 0 and angeredEarthUID[core.spawn_uid_dest] == nil then
25 | angeredEarthKilled = angeredEarthKilled + 1
26 | angeredEarthUID[core.spawn_uid_dest] = core.spawn_uid_dest
27 | core:sendMessage(GetAchievementLink(core.achievementIDs[1]) .. " " .. format(L["Shared_AddKillCounter"], getNPCName(50376)) .. " (" .. angeredEarthKilled .. "/10)")
28 | end
29 |
30 | if angeredEarthKilled == 10 then
31 | core:getAchievementSuccess()
32 | end
33 | end
34 |
35 | function core._645:Corla()
36 | if core.type == "UNIT_DIED" and core.destName == "Evolved Twilight Zealot" then
37 | evolvedTwilightZealotKilled = evolvedTwilightZealotKilled + 1
38 | core:sendMessage(GetAchievementLink(core.achievementIDs[1]) .. " " .. format(L["Shared_AddKillCounter"], getNPCName(39987)) .. " (" .. evolvedTwilightZealotKilled .. "/3)")
39 | end
40 |
41 | if evolvedTwilightZealotKilled == 3 then
42 | core:getAchievementSuccess()
43 | end
44 | end
45 |
46 | function core._645:KarshSteelbender()
47 | if core.type == "SPELL_AURA_APPLIED_DOSE" and core.spellId == 75846 and core.amount == 15 then
48 | core:getAchievementSuccess()
49 | end
50 | end
51 |
52 | function core._645:AscendantLordObsidius()
53 | if core.type == "SPELL_AURA_APPLIED_DOSE" and core.spellId == 76189 and core.amount == 4 then
54 | core:getAchievementFailed()
55 | end
56 | end
57 |
58 | function core._645:ClearVariables()
59 | ------------------------------------------------------
60 | ---- Blackrock Caverns Bosses
61 | ------------------------------------------------------
62 | angeredEarthKilled = 0
63 | angeredEarthUID = {}
64 |
65 | ------------------------------------------------------
66 | ---- Blackrock Caverns Bosses
67 | ------------------------------------------------------
68 | evolvedTwilightZealotKilled = 0
69 | end
--------------------------------------------------------------------------------
/ShadowlandsDungeons/MistsofTirnaScithe.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Mists of Tirna Scithe
9 | ------------------------------------------------------
10 | core._2290 = {}
11 |
12 | ------------------------------------------------------
13 | ---- Tredova
14 | ------------------------------------------------------
15 | local announceKillAdd = false
16 |
17 | ------------------------------------------------------
18 | ---- IngraMaloch
19 | ------------------------------------------------------
20 | local announceKillOvergrownHydra = false
21 | local hydraSeedCounter = 0
22 |
23 | function core._2290:IngraMaloch()
24 | --Defeat Ingra Maloch after defeating an Overgrown Hydra on in thie Mists of Tirna Scithe on Mythic difficulty.
25 |
26 | --Hydra Seed Nourised stacks
27 | if (core.type == "SPELL_AURA_APPLIED" or core.type == "SPELL_AURA_APPLIED_DOSE") and core.spellId == 338349 and core.destID == "172995" then
28 | hydraSeedCounter = hydraSeedCounter + 1
29 | core:sendMessage(core:getAchievement() .. " " .. getNPCName(172995) .. " " .. L["Core_Counter"] .. " (" .. hydraSeedCounter .. "/9)",true)
30 | end
31 |
32 | --Detect when Overgrown Hydra has spawned
33 | if core.sourceID == "172992" or core.destID == "172992" and announceKillOvergrownHydra == false then
34 | core:sendMessage(format(L["Shared_KillTheAddNow"], getNPCName(172992)),true)
35 | announceKillOvergrownHydra = true
36 | end
37 |
38 | if core:getBlizzardTrackingStatus(14503, 1) == true then
39 | core:getAchievementSuccess()
40 | end
41 | end
42 |
43 | function core._2290:Tredova()
44 | --Defeat Tred'ova after defeating an Elightened Spinemaw Gorger in the Mists of Tirna Scithe on Mythic difficulty.
45 |
46 | --Detect when add get enlightenment
47 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 336407 and core.destID == "172312" and announceKillAdd == false then
48 | core:sendMessage(format(L["Shared_KillTheAddNow"], getNPCName(172312)),true)
49 | announceKillAdd = true
50 | end
51 |
52 | if core:getBlizzardTrackingStatus(14375, 1) == true then
53 | core:getAchievementSuccess()
54 | end
55 | end
56 |
57 | function core._2290:ClearVariables()
58 | ------------------------------------------------------
59 | ---- Tredova
60 | ------------------------------------------------------
61 | announceKillAdd = false
62 |
63 | ------------------------------------------------------
64 | ---- IngraMaloch
65 | ------------------------------------------------------
66 | announceKillOvergrownHydra = false
67 | hydraSeedCounter = 0
68 | end
--------------------------------------------------------------------------------
/PandariaDungeons/ShadoPanMonastery.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Shado-Pan Monastery Bosses
8 | ------------------------------------------------------
9 | core._959 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Sha of Violence
13 | ------------------------------------------------------
14 | local destroyingShaCounter = 0
15 | local shaManifestationCounter = 0
16 | local volatileEnergyCounter = 0
17 |
18 | ------------------------------------------------------
19 | ---- Taran Zhu
20 | ------------------------------------------------------
21 | local hazeOfHateCounter = 0
22 |
23 | function core._959:ShaOfViolence()
24 | if core.type == "UNIT_DIED" and core.destID == "56765" then
25 | destroyingShaCounter = destroyingShaCounter + 1
26 | --print("Destroying Sha: " .. destroyingShaCounter)
27 | elseif core.type == "UNIT_DIED" and core.destID == "58201" then
28 | shaManifestationCounter = shaManifestationCounter + 1
29 | --print("Sha Manifestation: " .. shaManifestationCounter)
30 | elseif core.type == "UNIT_DIED" and core.destID == "56766" then
31 | volatileEnergyCounter = volatileEnergyCounter + 1
32 | --print("Volatile Energy: " .. volatileEnergyCounter)
33 | end
34 |
35 | if destroyingShaCounter == 2 and shaManifestationCounter == 1 and volatileEnergyCounter == 5 then
36 | core:getAchievementSuccess()
37 | end
38 | end
39 |
40 | function core._959:TaranZhu()
41 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 107087 then
42 | hazeOfHateCounter = hazeOfHateCounter + 1
43 | core:sendMessage(core.destName .. " is at maximum hatred (" .. hazeOfHateCounter .. "/" .. core.groupSize .. ")")
44 | elseif core.type == "SPELL_AURA_REMOVED" and core.spellId == 107087 then
45 | hazeOfHateCounter = hazeOfHateCounter - 1
46 | core:sendMessage(core.destName .. " is not longer at maximum hatred. DO NOT KILL BOSS! (" .. hazeOfHateCounter .. "/" .. core.groupSize .. ")")
47 | core.achievementCompleted = false
48 | end
49 |
50 | if hazeOfHateCounter == core.groupSize then
51 | core:getAchievementSuccess()
52 | end
53 | end
54 |
55 | function core._959:ClearVariables()
56 | ------------------------------------------------------
57 | ---- Sha of Violence
58 | ------------------------------------------------------
59 | destroyingShaCounter = 0
60 | shaManifestationCounter = 0
61 | volatileEnergyCounter = 0
62 |
63 | ------------------------------------------------------
64 | ---- Taran Zhu
65 | ------------------------------------------------------
66 | hazeOfHateCounter = 0
67 | end
--------------------------------------------------------------------------------
/LegionDungeons/ReturnToKarazhan.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Return To Karazhan Bosses
8 | ------------------------------------------------------
9 | core._1651 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Shade of Medivh
13 | ------------------------------------------------------
14 | local paranoidCounter = 0
15 | local paranoidPlayers = {}
16 |
17 | function core._1651:ShadeOfMedivh()
18 | --Defeat the Shade of Medivh while all party members have Paranoid on Mythic difficulty in Return to Karazhan
19 |
20 | --On pull check who in the group has the debuff
21 |
22 | if core.type == "UNIT_DIED" and core.destID ~= nil then
23 | local name, realm = strsplit("-", core.destID)
24 | if UnitIsPlayer(name) then
25 | --If the player was holding a parasite then reduce counter by 1
26 | if paranoidPlayers[core.spawn_uid_dest_Player] ~= nil then
27 | paranoidCounter = paranoidCounter - 1
28 | paranoidPlayers[core.spawn_uid_dest_Player] = nil
29 |
30 | --If achievement had already completed then fail it
31 | if core.achievementsCompleted[1] == true then
32 | core:getAchievementFailed()
33 | core.achievementsCompleted[1] = false
34 | end
35 | end
36 | end
37 | end
38 |
39 | --If player is in a group
40 | if core.groupSize > 1 then
41 | for i = 1, core.groupSize do
42 | local unit = nil
43 | if core.chatType == "PARTY" then
44 | if i < core.groupSize then
45 | unit = "party" .. i
46 | else
47 | unit = "player"
48 | end
49 | elseif core.chatType == "RAID" then
50 | unit = "raid" .. i
51 | end
52 |
53 | if unit ~= nil then
54 | local unitType, destID, spawn_uid_dest = strsplit("-",UnitGUID(unit));
55 | for i=1,40 do
56 | local auraData = C_UnitAuras.GetDebuffDataByIndex(unit, i)
57 | if auraData ~= nil and auraData.spellId == 232658 and paranoidPlayers[spawn_uid_dest] == nil then
58 | paranoidCounter = paranoidCounter + 1
59 | core:sendMessage(UnitName(unit) .. " " .. L["Shared_HasGained"] .. " " .. C_Spell.GetSpellLink(232658) .. " (" .. paranoidCounter .. "/5)")
60 | paranoidPlayers[spawn_uid_dest] = spawn_uid_dest
61 | end
62 | end
63 | end
64 | end
65 | end
66 |
67 | if paranoidCounter == 5 then --Can only be earned in a group of 5 players
68 | core:getAchievementSuccess()
69 | core.achievementsFailed[1] = false
70 | end
71 | end
72 |
73 | function core._1651:ClearVariables()
74 | paranoidCounter = 0
75 | paranoidPlayers = {}
76 | end
--------------------------------------------------------------------------------
/LichKingDungeons/TheNexus.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- The Nexus Bosses
8 | ------------------------------------------------------
9 | core._576 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Grand Magus Telestra
13 | ------------------------------------------------------
14 | local mob1Killed = false
15 | local mob2Killed = false
16 | local mob3Killed = false
17 | local imageCounter = 0
18 | local timerStarted = false
19 |
20 | function core._576:GrandMagusTelestra()
21 | if core.overkill ~= nil then
22 | if core.overkill > 0 then
23 | if core.destID == "26928" and mob1Killed == false then
24 | --print("Mob 1 Killed")
25 | mob1Killed = true
26 | imageCounter = imageCounter + 1
27 | elseif core.destID == "26929" and mob2Killed == false then
28 | --print("Mob 2 Killed")
29 | mob2Killed = true
30 | imageCounter = imageCounter + 1
31 | elseif core.destID == "26930" and mob3Killed == false then
32 | --print("Mob 3 Killed")
33 | mob3Killed = true
34 | imageCounter = imageCounter + 1
35 | end
36 |
37 | if imageCounter >= 1 and timerStarted == false then
38 | timerStarted = true
39 | C_Timer.After(5, function()
40 | if imageCounter == 3 then
41 | core:getAchievementSuccess()
42 | else
43 | core:sendMessage(core:getAchievement() .. " (" .. imageCounter .. "/3) Images killed in time")
44 | timerStarted = false
45 | imageCounter = 0
46 | C_Timer.After(5, function ()
47 | mob1Killed = false
48 | mob2Killed = false
49 | mob3Killed = false
50 | end)
51 | end
52 | end)
53 | end
54 | end
55 | end
56 | end
57 |
58 | function core._576:Anomalus()
59 | if core.type == "UNIT_DIED" and core.destID == "26918" then
60 | core:getAchievementFailed()
61 | end
62 | end
63 |
64 | function core._576:Keristrasza()
65 | if core.type == "SPELL_AURA_APPLIED_DOSE" and core.amount > 2 then
66 | core:getAchievementFailedPersonal()
67 | end
68 | end
69 |
70 | function core._576:ClearVariables()
71 | ------------------------------------------------------
72 | ---- Grand Magus Telestra
73 | ------------------------------------------------------
74 | mob1Killed = false
75 | mob2Killed = false
76 | mob3Killed = false
77 | imageCounter = 0
78 | timerStarted = false
79 | end
--------------------------------------------------------------------------------
/LichKingRaids/OnyxiasLair.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Onyxia's Lair Bosses
8 | ------------------------------------------------------
9 | core._249 = {}
10 | -- core._249.Events = CreateFrame("Frame")
11 |
12 | ------------------------------------------------------
13 | ---- Onyxia
14 | ------------------------------------------------------
15 | local timerStarted = false
16 | local timer
17 | -- local whelpsUID = {}
18 | -- local whelpsCounter = 0
19 |
20 |
21 | function core._249:Onyxia1()
22 | if core.type == "SPELL_DAMAGE" and core.spellName == "Breath" then
23 | core:getAchievementFailedWithMessageAfter("(" .. core.destName .. ")", 2)
24 | end
25 | end
26 |
27 | function core._249:Onyxia2()
28 | if timerStarted == false then
29 | timerStarted = true
30 | timer = C_Timer.NewTimer(300, function()
31 | core:getAchievementFailed(1)
32 | end)
33 | end
34 | end
35 |
36 | function core._249:ClearVariables()
37 | ------------------------------------------------------
38 | ---- Onyxia
39 | ------------------------------------------------------
40 | --whelpsUID = {}
41 | --whelpsCounter = 0
42 | timerStarted = false
43 |
44 | if timer ~= nil then
45 | timer:Cancel()
46 | end
47 | end
48 |
49 | -- function core._249:InitialSetup()
50 | -- core._249.Events:RegisterEvent("NAME_PLATE_UNIT_ADDED")
51 | -- end
52 |
53 | -- core._249.Events:SetScript("OnEvent", function(self, event, ...)
54 | -- return self[event] and self[event](self, event, ...)
55 | -- end)
56 |
57 | -- function core._249.Events:NAME_PLATE_UNIT_ADDED(self, unitID, ...)
58 |
59 |
60 | -- local unitType, _, _, _, _, unitIDCreature, unitUID = strsplit("-", UnitGUID(unitID))
61 |
62 | -- --print(unitType)
63 |
64 | -- if unitType == "Creature" and unitIDCreature == "11262" then
65 | -- --print("HERE")
66 | -- if whelpsUID[unitUID] == nil then
67 | -- whelpsUID[unitUID] = unitUID
68 | -- whelpsCounter = whelpsCounter + 1
69 | -- core:sendMessageDelay(core:getAchievement() .. " Whelps Hatched (" .. whelpsCounter .. "/50)", whelpsCounter, 5)
70 |
71 | -- if timerStarted == false then
72 | -- timerStarted = true
73 | -- core:sendMessage("Timer Started! 10 seconds remaining")
74 |
75 | -- C_Timer.After(10, function()
76 | -- if whelpsCounter >= 50 then
77 | -- core:getAchievementSuccess()
78 | -- else
79 | -- core:getAchievementFailedWithMessageAfter("(" .. whelpsCounter .. "/50) Whelps killed in time")
80 | -- end
81 | -- end)
82 | -- end
83 | -- end
84 | -- end
85 | -- end
--------------------------------------------------------------------------------
/DraenorDungeons/IronDocks.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Iron Docks Bosses
8 | ------------------------------------------------------
9 | core._1195 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Fleshrender Nok'gar
13 | ------------------------------------------------------
14 | local SiegemasterOlugarFound = false
15 | local PitwardenGwarnokFound = false
16 | local ChampionDrunaFound = false
17 | local fleshrenderKilled = false
18 |
19 |
20 | function core._1195:FleshrenderNokgar()
21 | --If Fleshrender Nok'gar has died then stop tracking
22 | if core.type == "UNIT_DIED" and core.destID == "81305" then
23 | fleshrenderKilled = true
24 | end
25 |
26 | if fleshrenderKilled == false then
27 | --Siegemaster Olugar
28 | if (core.sourceID == "83026" or core.destID == "83026") and SiegemasterOlugarFound == false then
29 | SiegemasterOlugarFound = true
30 | end
31 |
32 | --Pitwarden Gwarnok
33 | if (core.sourceID == "84520" or core.destID == "84520") and PitwardenGwarnokFound == false then
34 | PitwardenGwarnokFound = true
35 | end
36 |
37 | --Champion Druna
38 | if (core.sourceID == "81603" or core.destID == "81603") and ChampionDrunaFound == false then
39 | ChampionDrunaFound = true
40 | end
41 |
42 | if core.type == "UNIT_DIED" and (core.destID == "83026" or core.destID == "84520" or core.destID == "81603") then
43 | local reason = nil
44 | if core.destID == "83026" then
45 | reason = "Siegemaster Olugar"
46 | elseif core.destID == "84520" then
47 | reason = "Pitwarden Gwarnok"
48 | elseif core.destID == "81603" then
49 | reason = "Champion Druna"
50 | end
51 | core:getAchievementFailedWithMessageAfter("(Reason: " .. reason .. " has died)")
52 | end
53 |
54 | if (core.sourceID == "81305" or core.destID == "81305") and SiegemasterOlugarFound == true and PitwardenGwarnokFound == true and ChampionDrunaFound == true then
55 | core:getAchievementSuccess()
56 | end
57 | end
58 | end
59 |
60 | function core._1195:Skulloc()
61 | if core.type == "SPELL_DAMAGE" and core.spellId == 168390 then
62 | core:getAchievementFailedWithMessageAfter("(" .. core.destName .. " got hit by Cannon Barrage)")
63 | elseif core.type == "SPELL_DAMAGE" and core.spellId == 169129 then
64 | core:getAchievementFailedWithMessageAfter("(" .. core.destName .. " got hit by Backdraft)")
65 | end
66 | end
67 |
68 | function core._1195:ClearVariables()
69 | ------------------------------------------------------
70 | ---- Fleshrender Nok'gar
71 | ------------------------------------------------------
72 | SiegemasterOlugarFound = false
73 | PitwardenGwarnokFound = false
74 | ChampionDrunaFound = false
75 | end
--------------------------------------------------------------------------------
/DraenorDungeons/TheEverbloom.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- The Everbloom Bosses
8 | ------------------------------------------------------
9 | core._1279 = {}
10 | --local events = CreateFrame("Frame")
11 |
12 | -- ------------------------------------------------------
13 | -- ---- Yalnu
14 | -- ------------------------------------------------------
15 | -- local enableNameplates = false
16 | -- local npcUID = {}
17 |
18 | function core._1279:Witherbark()
19 | if core.type == "SPELL_ENERGIZE" and core.spellId == 164438 then
20 | core:getAchievementFailed()
21 | end
22 | end
23 |
24 | -- function core._1279:Yalnu()
25 | -- --print(GetCVar("nameplateShowFriends"))
26 | -- if GetCVar("nameplateShowFriends") == "0" and enableNameplates == false then
27 | -- print("Enabling Friendly Nameplates")
28 | -- SetCVar("nameplateShowFriends", 1-GetCVar("nameplateShowFriends"))
29 | -- events:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
30 | -- enableNameplates = true
31 | -- elseif GetCVar("nameplateShowFriends") == "1" and enableNameplates == false then
32 | -- print("Friendly Nameplates already enabled")
33 | -- events:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
34 | -- enableNameplates = true
35 | -- end
36 |
37 | -- --Loop through each of the UID and check whether the unit exists. If they don't then one of the npc must have died
38 | -- for i = 1, #npcUID do
39 | -- --
40 | -- local name, realm = UnitName(npcUID[i])
41 | -- if name ~= nil and UnitHealth(npcUID[i]) == 0 then
42 | -- core:getAchievementFailed()
43 | -- elseif name ~= nil then
44 | -- print(UnitName(npcUID[i]) .. " : " .. UnitHealth(npcUID[i]))
45 | -- end
46 | -- end
47 | -- end
48 |
49 | function core._1279:ClearVariables()
50 | -- ------------------------------------------------------
51 | -- ---- Yalnu
52 | -- ------------------------------------------------------
53 | -- enableNameplates = false
54 | -- npcUID = {}
55 | -- events:UnregisterEvent("UNIT_SPELLCAST_SUCCEEDED")
56 | end
57 |
58 | -- events:SetScript("OnEvent", function(self, event, ...)
59 | -- return self[event] and self[event](self, event, ...) --Allow event arguments to be called from seperate functions
60 | -- end)
61 |
62 | -- function events:UNIT_SPELLCAST_SUCCEEDED(self, ...)
63 | -- local unitID, spell, rank, lineID, spellID = ...
64 |
65 | -- local unitTypeSrc, _, _, _, _, sourceID, spawn_uid = strsplit("-", UnitGUID(unitID))
66 | -- if unitTypeSrc == "Creature" and sourceID == "84329" then
67 | -- if core:has_value(npcUID, unitID) == false then
68 | -- print(UnitGUID(unitID) .. " : " .. UnitName(unitID) .. " : " .. spell .. " : " .. spellID)
69 | -- table.insert(npcUID, unitID)
70 | -- end
71 | -- end
72 |
73 | -- -- if spellID == 166930 then
74 | -- -- print("Battle Mage Died")
75 | -- -- end
76 | -- end
--------------------------------------------------------------------------------
/LichKingRaids/ObsidianSanctum.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Obsidian Sanctum Bosses
9 | ------------------------------------------------------
10 | core._615 = {}
11 | core._615.Events = CreateFrame("Frame")
12 |
13 | ------------------------------------------------------
14 | ---- Gonna Go When The Volcano Blows
15 | ------------------------------------------------------
16 | local playersWhoHaveNotFailed = nil
17 | local initialSetup = false
18 |
19 | function core._615:GonnaGoWhenTheVolcanoBlows()
20 | --Defeat Sartharion the Onyx Guardian without getting hit by Lava Strike.
21 |
22 | if playersWhoHaveNotFailed == nil then
23 | playersWhoHaveNotFailed = #core.currentBosses[1].players,#core.currentBosses[1]
24 | end
25 |
26 | InfoFrame_UpdatePlayersOnInfoFramePersonal()
27 | InfoFrame_SetHeaderCounter(L["Shared_PlayersMetCriteria"],playersWhoHaveNotFailed,#core.currentBosses[1].players)
28 |
29 | if initialSetup == false then
30 | --Set every player to complete on pulling the boss
31 | print("HERE")
32 | initialSetup = true
33 | for player,status in pairs(core.InfoFrame_PlayersTable) do
34 | InfoFrame_SetPlayerComplete(player)
35 | end
36 | end
37 |
38 | if core.destName ~= nil then
39 | local name, realm = UnitName(core.destName)
40 | if core:has_value(core.Instances[core.expansion][core.instanceType][core.instance]["boss2"].players, name) == true then
41 | if (core.type == "SPELL_DAMAGE" or core.type == "SPELL_MISSED" or core.type == "SPELL_ABSORBED") and core.spellId == 57591 then
42 | if core.destName ~= nil then
43 | if UnitIsPlayer(core.destName) then
44 | if InfoFrame_GetPlayerFailed(core.destName) == false then
45 | InfoFrame_SetPlayerFailed(core.destName)
46 | if core.gameVersionMajor > 4 then
47 | core:sendMessage(format(L["Shared_FailedPersonalAchievement"], core.destName, GetAchievementLink(core.achievementIDs[1]), format(L["Shared_DamageFromAbility"], C_Spell.GetSpellLink(57591))),true)
48 | else
49 | core:sendMessage(format(L["Shared_FailedPersonalAchievement"], core.destName, GetAchievementLink(core.achievementIDs[1]), format(L["Shared_DamageFromAbility"], GetSpellLink(57591))),true)
50 | end
51 | playersWhoHaveNotFailed = playersWhoHaveNotFailed - 1
52 | end
53 | end
54 | end
55 | end
56 | end
57 | end
58 | end
59 |
60 | function core._615:ClearVariables()
61 | ------------------------------------------------------
62 | ---- Gonna Go When The Volcano Blows
63 | ------------------------------------------------------
64 | playersWhoHaveNotFailed = nil
65 | initialSetup = false
66 | end
--------------------------------------------------------------------------------
/PandariaDungeons/ScarletMonastery.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Scarlet Monastery Bosses
8 | ------------------------------------------------------
9 | core._1004 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Thalnos the Soulrender
13 | ------------------------------------------------------
14 | local empoweredZombieCounter = 0
15 | local empoweredZombieTable = {}
16 |
17 | ------------------------------------------------------
18 | ---- High Inquisitor Whitemane
19 | ------------------------------------------------------
20 | local scarletJudicatorCounter = 0
21 |
22 | function core._1004:BrotherKorloff()
23 | --Blizzard tracking gone red so green so complete achievement
24 | if core:getBlizzardTrackingStatus(6928) == true then
25 | core:getAchievementSuccess()
26 | end
27 | end
28 |
29 | function core._1004:ThalnosTheSoulrender()
30 | if core.type == "SPELL_SUMMON" and core.destID == "59930" and empoweredZombieTable[core.spawn_uid_dest] == nil then
31 | empoweredZombieCounter = empoweredZombieCounter + 1
32 | empoweredZombieTable[core.spawn_uid_dest] = core.spawn_uid_dest
33 |
34 | if empoweredZombieCounter < 3 then
35 | core:sendMessage("Empowered Zombie Counter (" .. empoweredZombieCounter .. "/3)")
36 | end
37 | end
38 |
39 | if core.type == "UNIT_DIED" and core.destID == "59930" then
40 | empoweredZombieCounter = empoweredZombieCounter - 1
41 | empoweredZombieTable[core.spawn_uid_dest] = nil
42 |
43 | if empoweredZombieCounter < 3 then
44 | core:sendMessage("Empowered Zombie Counter (" .. empoweredZombieCounter .. "/3)")
45 | end
46 |
47 | if core.achievementCompleted == true and empoweredZombieCounter < 3 then
48 | core:sendMessage("Empowered Zombie has died. DO NOT KILL BOSS (" .. empoweredZombieCounter .. "/3)")
49 | core.achievementCompleted = false
50 | end
51 | end
52 |
53 | if empoweredZombieCounter == 3 then
54 | core:getAchievementSuccess()
55 | end
56 | end
57 |
58 | function core._1004:HighInquisitorWhitemane()
59 | if core.type == "UNIT_DIED" and core.destID == "58605" then
60 | scarletJudicatorCounter = scarletJudicatorCounter + 1
61 | if scarletJudicatorCounter <= 13 then
62 | core:sendMessage("Scarlet Judicator Counter (" .. scarletJudicatorCounter .. "/13)")
63 | end
64 | end
65 |
66 | if scarletJudicatorCounter == 13 then
67 | core:getAchievementSuccess()
68 | end
69 | end
70 |
71 | function core._1004:ClearVariables()
72 | ------------------------------------------------------
73 | ---- Thalnos the Soulrender
74 | ------------------------------------------------------
75 | empoweredZombieCounter = 0
76 |
77 | ------------------------------------------------------
78 | ---- High Inquisitor Whitemane
79 | ------------------------------------------------------
80 | scarletJudicatorCounter = 0
81 | end
--------------------------------------------------------------------------------
/InstanceAchievementTracker_Cata.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 40402
2 | ## Notes: An addon for tracking the completion/faliure of instance achievements.
3 | ## Title:Instance Achievement Tracker
4 | ## Author: Whizzey
5 | ## Version: 5.26.0
6 | ## IconTexture: Interface/AddOns/InstanceAchievementTracker/Images/icon.jpg
7 | ## OptionalDeps: LibStub, CallbackHandler-1.0, LibDBIcon-1.0, LibInspect, LibWindow-1.1
8 | ## SavedVariables: AchievementTrackerOptions, AchievementTrackerDebug, AchievementTrackerNPCCache, AchievementTrackerNPCCacheClassic
9 | ## X-Curse-Project-ID: 286675
10 | ## X-WoWI-ID: 24756
11 | ## X-Wago-ID: RBKpXaKE
12 |
13 | Libs\LibStub\LibStub.lua
14 | Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua
15 | Libs\LibDataBroker-1.1\LibDataBroker-1.1.lua
16 | Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua
17 | Libs\UTF8\utf8.lua
18 | Libs\UTF8\utf8data.lua
19 | Libs\LibWindow-1.1\LibWindow-1.1.lua
20 | Libs\LibDetours-1.0\LibDetours-1.0.lua
21 | Libs\LibClassicInspector\LibClassicInspector.lua
22 | Libs\LibDBCompartment\LibDBCompartment-1.0.lua
23 | Libs\TaintLess\TaintLess.xml
24 |
25 | Localization.lua
26 | Localization.enUS.lua
27 | Localization.deDE.lua
28 | Localization.esES.lua
29 | Localization.frFR.lua
30 | Localization.ptBR.lua
31 | Localization.ruRU.lua
32 | Localization.zhCN.lua
33 | Localization.zhTW.lua
34 | Localization.koKR.lua
35 |
36 | CataclysmRaids\BastionOfTwilight.lua
37 | CataclysmRaids\BlackwingDescent.lua
38 | CataclysmRaids\DragonSoul.lua
39 | CataclysmRaids\Firelands.lua
40 | CataclysmRaids\ThroneOfTheFourWinds.lua
41 |
42 | CataclysmDungeons\BlackrockCaverns.lua
43 | CataclysmDungeons\EndTime.lua
44 | CataclysmDungeons\GrimBatol.lua
45 | CataclysmDungeons\HallsOfOrigination.lua
46 | CataclysmDungeons\HourOfTwilight.lua
47 | CataclysmDungeons\LostCityOfTolvir.lua
48 | CataclysmDungeons\ShadowfangKeep.lua
49 | CataclysmDungeons\Stonecore.lua
50 | CataclysmDungeons\TheDeadmines.lua
51 | CataclysmDungeons\ThroneOfTheTides.lua
52 | CataclysmDungeons\VortexPinnacle.lua
53 | CataclysmDungeons\WellOfEternity.lua
54 | CataclysmDungeons\ZulAman.lua
55 | CataclysmDungeons\ZulGurub.lua
56 |
57 | LichKingRaids\Icecrown.lua
58 | LichKingRaids\EyeOfEternity.lua
59 | LichKingRaids\Naxxramas.lua
60 | LichKingRaids\ObsidianSanctum.lua
61 | LichKingRaids\OnyxiasLair.lua
62 | LichKingRaids\TrialOfTheCrusader.lua
63 | LichKingRaids\Ulduar.lua
64 | LichKingRaids\VaultOfArchavon.lua
65 |
66 | LichKingDungeons\AhnkahetTheOldKingdom.lua
67 | LichKingDungeons\AzjolNerub.lua
68 | LichKingDungeons\DrakTharonKeep.lua
69 | LichKingDungeons\ForgeOfSouls.lua
70 | LichKingDungeons\Gundrak.lua
71 | LichKingDungeons\HallsOfLightning.lua
72 | LichKingDungeons\HallsOfReflection.lua
73 | LichKingDungeons\HallsOfStone.lua
74 | LichKingDungeons\PitOfSaron.lua
75 | LichKingDungeons\TheCullingOfStratholme.lua
76 | LichKingDungeons\TheNexus.lua
77 | LichKingDungeons\TheOculus.lua
78 | LichKingDungeons\TheVioletHold.lua
79 | LichKingDungeons\TrialOfTheChampion.lua
80 | LichKingDungeons\UtgardeKeep.lua
81 | LichKingDungeons\UtgardePinnacle.lua
82 |
83 | Templates.xml
84 |
85 | InstancesCataclysm.lua
86 | ItemCache.lua
87 | NPCCache.lua
88 | InfoFrame.lua
89 | Options.lua
90 | GUI.lua
91 | MobCounter.lua
92 | emotes.lua
93 | AchievementTrackerCore.lua
94 | Debug.lua
95 |
--------------------------------------------------------------------------------
/BattleForAzerothDungeons/ShrineOfTheStorm.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Shrine of the Storm Bosses
8 | ------------------------------------------------------
9 | core._1864 = {}
10 | local L = core.L
11 |
12 | ------------------------------------------------------
13 | ---- Vol'zith the Whisperer
14 | ------------------------------------------------------
15 | local maddeningDreamCount = 0
16 | local maddeningDreamPlayersUID = {}
17 | local volzithKilled = false
18 |
19 | function core._1864:TrackAdditional()
20 | if core.Instances[core.expansion][core.instanceType][core.instance]["boss2"].enabled == true then
21 | if core.type == "UNIT_DIED" and core.destID == "134069" then
22 | volzithKilled = true
23 | end
24 |
25 | if volzithKilled == false then
26 | --Player gains Maddening Dreams
27 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 275690 then
28 | if maddeningDreamPlayersUID[core.destName] == nil then
29 | maddeningDreamCount = maddeningDreamCount + 1
30 | maddeningDreamPlayersUID[core.destName] = core.destName
31 | core:sendMessage(core.destName .. " " .. L["Shared_HasGained"] .. " " .. C_Spell.GetSpellLink(275690) .. " (" .. maddeningDreamCount .. "/" .. core.groupSize .. ")")
32 | end
33 | end
34 |
35 | --Player looses Maddening Dreams
36 | if core.type == "SPELL_AURA_REMOVED" and core.spellId == 275690 then
37 | if maddeningDreamPlayersUID[core.destName] ~= nil then
38 | maddeningDreamCount = maddeningDreamCount - 1
39 | maddeningDreamPlayersUID[core.destName] = nil
40 | core:sendMessage(core.destName .. " " .. L["Shared_HasLost"] .. " " .. C_Spell.GetSpellLink(275690) .. " (" .. maddeningDreamCount .. "/" .. core.groupSize .. ")")
41 |
42 | --If achievement was already completed then fail it
43 | if core.achievementsCompleted[1] == true then
44 | core:getAchievementFailed()
45 | core.achievementsCompleted[1] = false
46 | end
47 | end
48 | end
49 | end
50 | end
51 | end
52 |
53 | function core._1864:VolzithTheWhisperer()
54 | --Defeat Vol'zith the Whisperer while all party members are afflicted with Maddening Dreams in Shrine of the Storm on Mythic difficulty.
55 | --Check if all players have Maddening Dreams
56 | if maddeningDreamCount == core.groupSize then
57 | core:getAchievementSuccess()
58 | core.achievementsFailed[1] = false
59 | end
60 | end
61 |
62 | function core._1864:LordStormsong()
63 | --Defeat Lord Stormsong without coming into contact with any Awoken Void in Shrine of the Storm on Mythic difficulty.
64 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 269104 then
65 | core:getAchievementFailedWithMessageAfter("(" .. core.destName .. ")")
66 | end
67 | end
68 |
69 | function core._1864:ClearVariables()
70 | end
--------------------------------------------------------------------------------
/LegionDungeons/EyeOfAzshara.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Eye of Azshara Bosses
8 | ------------------------------------------------------
9 | core._1456 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Lady Hatecoil
13 | ------------------------------------------------------
14 | local timerStarted = false
15 | local saltseaGlobulesCounter = 0
16 |
17 | ------------------------------------------------------
18 | ---- Wrath of Azshara
19 | ------------------------------------------------------
20 | local playersHit = {}
21 |
22 |
23 | function core._1456:WarlordParjesh()
24 | if core.type == "UNIT_DIED" and core.destID == "97264" then
25 | core:getAchievementFailed()
26 | end
27 | end
28 |
29 | function core._1456:LadyHatecoil()
30 | core:trackMob("98293", "Saltsea Globule", 11, "Kill the Salsea Globules with Curse of The Witch Now", 1, nil, nil)
31 |
32 | if core.type == "SPELL_AURA_REMOVED" and core.spellId == 193698 then
33 | timerStarted = true
34 | C_Timer.After(3, function()
35 | timerStarted = false
36 | if saltseaGlobulesCounter >= 11 then
37 | core:getAchievementSuccess()
38 | else
39 | if saltseaGlobulesCounter > 0 then
40 | core:sendMessage(saltseaGlobulesCounter .. "/11 Saltsea Globules killed with Curse of the Witch")
41 | end
42 | saltseaGlobulesCounter = 0
43 | end
44 | end)
45 | end
46 |
47 | if core.type == "UNIT_DIED" and core.destID == "98293" then
48 | if timerStarted == true and core.destFlags == 0xa48 then
49 | saltseaGlobulesCounter = saltseaGlobulesCounter + 1
50 | end
51 | end
52 | end
53 |
54 | function core._1456:WrathOfAzshara()
55 | local failed = false
56 |
57 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 196665 or core.spellId == 196666 then
58 | failed = true
59 | end
60 |
61 | if failed == true then
62 | if playersHit[core.destName] == nil then
63 | --Players has not been hit already
64 | --Check if the player actually needs the achievement
65 | if core:has_value(core.Instances[core.expansion][core.instanceType][core.instance]["boss3"].players, core.destName) then
66 | --Player needs achievement but has failed it
67 | core:sendMessage(core.destName .. " has failed " .. GetAchievementLink(core.currentAchievementID) .. " (Personal Achievement)")
68 | end
69 | playersHit[core.destName] = true
70 | end
71 | end
72 | end
73 |
74 | function core._1456:ClearVariables()
75 | ------------------------------------------------------
76 | ---- Lady Hatecoil
77 | ------------------------------------------------------
78 | timerStarted = false
79 | saltseaGlobulesCounter = 0
80 |
81 | ------------------------------------------------------
82 | ---- Wrath of Azshara
83 | ------------------------------------------------------
84 | playersHit = {}
85 | end
--------------------------------------------------------------------------------
/BattleForAzerothDungeons/TheMotherlode.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- The Motherlode Bosses
9 | ------------------------------------------------------
10 | core._1594 = {}
11 |
12 | ------------------------------------------------------
13 | ---- Mogul Razdunk
14 | ------------------------------------------------------
15 | local playersHit = {}
16 |
17 | function core._1594:CoinOperatedCrowdPummeler()
18 | if core.type == "UNIT_DIED" and core.destID == "142625" then
19 | core:getAchievementSuccess()
20 | end
21 | end
22 |
23 | function core._1594:MogulRazdunk()
24 | --Defeat Mogul Razdunk without being struck by Gatling Gun, Micro Missiles, Big Red Rocket, or a direct hit from Drill Smash in The MOTHERLODE!! on Mythic difficulty.
25 | --Gatling Gun 260279
26 | --Micro Missiles 276234
27 | --Drill Smash 270926
28 | --Big Red Rocket 270277
29 |
30 | if (core.type == "SPELL_AURA_APPLIED" and core.spellId == 260279) or (core.type == "SPELL_DAMAGE" and core.spellId == 276234) or (core.type == "SPELL_DAMAGE" and core.spellId == 270926) or (core.type == "SPELL_DAMAGE" and core.spellId == 270277) then
31 | --If someone gets hit by the ability, check if they need the achievement or not
32 | if core.destName ~= nil then
33 | local name, realm = strsplit("-", core.destName)
34 | if UnitIsPlayer(name) then
35 | --Detect the reason the player has failed the achievement
36 | local reason = ""
37 | if core.spellId == 260279 then
38 | reason = format(L["Shared_DamageFromAbility"], C_Spell.GetSpellLink(260279))
39 | elseif core.spellId == 276234 then
40 | reason = format(L["Shared_DamageFromAbility"], C_Spell.GetSpellLink(276234))
41 | elseif core.spellId == 270926 then
42 | reason = format(L["Shared_DirectHitFromAbility"], C_Spell.GetSpellLink(270926))
43 | elseif core.spellId == 270277 then
44 | reason = format(L["Shared_DirectHitFromAbility"], C_Spell.GetSpellLink(270277))
45 | end
46 | if playersHit[core.destName] == nil then
47 | --Players has not been hit already
48 | --Check if the player actually needs the achievement
49 | if core:has_value(core.currentBosses[1].players, core.destName) then
50 | --Player needs achievement but has failed it
51 | core:sendMessage(format(L["Shared_FailedPersonalAchievement"], core.destName, GetAchievementLink(core.achievementIDs[1]), reason))
52 | end
53 | playersHit[core.destName] = true
54 | end
55 | else
56 | --print(core.destName .. " is not a player")
57 | end
58 | else
59 | --print("core.destName is nil")
60 | end
61 | end
62 | end
63 |
64 | function core._1594:ClearVariables()
65 | ------------------------------------------------------
66 | ---- Mogul Razdunk
67 | ------------------------------------------------------
68 | playersHit = {}
69 | end
--------------------------------------------------------------------------------
/LichKingDungeons/UtgardePinnacle.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Utgarde Pinnacle Bosses
8 | ------------------------------------------------------
9 | core._575 = {}
10 | core._575.Events = CreateFrame("Frame")
11 |
12 | ------------------------------------------------------
13 | ---- Skadi the Ruthless
14 | ------------------------------------------------------
15 | local timer
16 | local harpoonRange = false
17 | local harpoonFired = false
18 |
19 | function core._575:SvalaSorrowgrave()
20 | --TODO: have another look at this one. Not working
21 | -- if (core.type == "SPELL_PERIODIC_DAMAGE" or core.type == "SPELL_DAMAGE") and core.destID == "26555" and core.spellId == 59930 and core.overkill > 0 then
22 | -- core:getAchievementSuccess()
23 | -- end
24 | end
25 |
26 | function core._575:SkadiTheRuthless()
27 | core:getAchievementToTrack()
28 | end
29 |
30 | function core._575:KingYmiron()
31 | if (core.type == "SPELL_DAMAGE" or core.type == "SPELL_MISSED") and (core.spellId == 48295 or core.spellId == 59302) then
32 | --print("Failed")
33 | core:getAchievementFailed()
34 | end
35 | end
36 |
37 | function core._575:ClearVariables()
38 | ------------------------------------------------------
39 | ---- Skadi the Ruthless
40 | ------------------------------------------------------
41 | if timer ~= nil then
42 | --print("Timer Cancelled")
43 | timer:Cancel()
44 | end
45 | end
46 |
47 | function core._575:InstanceCleanup()
48 | core._575.Events:UnregisterEvent("CHAT_MSG_MONSTER_YELL")
49 | end
50 |
51 | function core._575:InitialSetup()
52 | core._575.Events:RegisterEvent("CHAT_MSG_MONSTER_YELL")
53 | --core._575.Events:RegisterEvent("CHAT_MSG_RAID_BOSS_EMOTE")
54 | --core._575.Events:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
55 | end
56 |
57 | core._575.Events:SetScript("OnEvent", function(self, event, ...)
58 | return self[event] and self[event](self, event, ...)
59 | end)
60 |
61 | function core._575.Events:CHAT_MSG_MONSTER_YELL(self, message, sender, language, channelString, target, flags, unknown, channelNumber, channelName, unknown, counter, ...)
62 | if string.match(message, "What mongrels dare intrude here") then
63 | timer = C_Timer.NewTimer(180, function()
64 | core:getAchievementFailed()
65 | end)
66 | end
67 | end
68 |
69 | function core._575.Events:CHAT_MSG_RAID_BOSS_EMOTE(self, message, sender, language, channelString, target, flags, unknown, channelNumber, channelName, unknown, counter, ...)
70 | -- print(message)
71 |
72 | --If boss is in range of harpoons
73 | --If player launches harpoon
74 | --If boss comes down before next message
75 | --Complete achievement
76 |
77 | -- if string.match(message, "range of the harpoon launchers!") then
78 | -- harpoonRange = true
79 | -- end
80 |
81 | -- if string.match(message, "takes a deep breath") and harpoonFired == true then
82 | -- core:getAchievementFailed()
83 | -- end
84 | end
85 |
86 | function core._575.Events:UNIT_SPELLCAST_SUCCEEDED(self, unitID, lineID, spellID, ...)
87 | -- if spell == "Summon Harpoon" and harpoonRange == true then
88 | -- harpoonFired = true
89 | -- end
90 | end
91 |
92 |
--------------------------------------------------------------------------------
/API.lua:
--------------------------------------------------------------------------------
1 | local _, core = ...
2 |
3 | local lastAchievementID, lastExpansion, lastInstanceType, lastInstance;
4 | function IAT_HasAchievement(achievementID)
5 | lastAchievementID, lastExpansion, lastInstanceType, lastInstance = achievementID, nil, nil, nil
6 |
7 | -- Check if IAT has the achievement
8 | for expansion, _ in pairs(core.Instances) do
9 | for instanceType, _ in pairs(core.Instances[expansion]) do
10 | for instance, _ in pairs(core.Instances[expansion][instanceType]) do
11 | for boss, _ in pairs(core.Instances[expansion][instanceType][instance]) do
12 | if string.match(boss, "boss") then
13 | if core.Instances[expansion][instanceType][instance][boss].achievement == achievementID then
14 | -- Achievement found
15 | lastExpansion, lastInstanceType, lastInstance = expansion, instanceType, instance
16 | return true
17 | end
18 | end
19 | end
20 | end
21 | end
22 | end
23 | -- No achievement with this ID
24 |
25 | return false
26 | end
27 |
28 | function IAT_DisplayAchievement(achievementID)
29 | -- Open IAT Gui and display the specific achievement
30 |
31 | -- Check here if IAT_HasAchievement has already been called for the same achievement ID
32 | local valid = lastAchievementID == achievementID;
33 | if not valid then
34 | valid = IAT_HasAchievement(achievementID)
35 | end
36 | -- If valid and none of the other 3 are nil, show the tactics
37 | if valid and lastExpansion and lastInstanceType and lastInstance then
38 | print(lastAchievementID, lastExpansion, lastInstanceType, lastInstance)
39 |
40 | --Select correct tab for instance
41 | for tabIndex, tabData in ipairs(core.Config.tabDataProvider) do
42 | if lastExpansion == tabData.ExpansionID then
43 | PanelTemplates_SetTab(core.Config.UI, tabIndex)
44 | core.Config:ShowInstancesForTab(tabIndex)
45 | end
46 | end
47 |
48 | --Select instance tied to achievement
49 | local function FindInstance(item)
50 | return item.id == lastInstance
51 | end
52 | local foundItem = core.Config.InstanceListDataProvider:FindElementDataByPredicate(FindInstance)
53 |
54 | if foundItem ~= nil then
55 | core.Config:ToggleOn()
56 |
57 | core.Config:ShowContentForInstance(foundItem)
58 |
59 | local function FindBoss(item)
60 | return item.boss.achievement == lastAchievementID
61 | end
62 |
63 | --Scroll to the selected element
64 | core.Config.UI.ExpansionLayoutContainer.BossListScrollContainer.ScrollBox:ScrollToElementDataByPredicate(FindBoss, ScrollBoxConstants.AlignCenter, nil, ScrollBoxConstants.NoScrollInterpolation);
65 |
66 | local elementData = core.Config.UI.ExpansionLayoutContainer.BossListScrollContainer.ScrollBox:FindElementDataByPredicate(FindBoss);
67 |
68 | if elementData ~= nil then
69 | local button = core.Config.UI.ExpansionLayoutContainer.BossListScrollContainer.ScrollBox:FindFrame(elementData)
70 | if button then
71 | core.Config.g_achievementSelectionBehavior:ToggleSelect(button);
72 | end
73 | end
74 | end
75 | end
76 |
77 | return nil
78 | end
--------------------------------------------------------------------------------
/Libs/LibDataBroker-1.1/LibDataBroker-1.1.lua:
--------------------------------------------------------------------------------
1 |
2 | assert(LibStub, "LibDataBroker-1.1 requires LibStub")
3 | assert(LibStub:GetLibrary("CallbackHandler-1.0", true), "LibDataBroker-1.1 requires CallbackHandler-1.0")
4 |
5 | local lib, oldminor = LibStub:NewLibrary("LibDataBroker-1.1", 4)
6 | if not lib then return end
7 | oldminor = oldminor or 0
8 |
9 |
10 | lib.callbacks = lib.callbacks or LibStub:GetLibrary("CallbackHandler-1.0"):New(lib)
11 | lib.attributestorage, lib.namestorage, lib.proxystorage = lib.attributestorage or {}, lib.namestorage or {}, lib.proxystorage or {}
12 | local attributestorage, namestorage, callbacks = lib.attributestorage, lib.namestorage, lib.callbacks
13 |
14 | if oldminor < 2 then
15 | lib.domt = {
16 | __metatable = "access denied",
17 | __index = function(self, key) return attributestorage[self] and attributestorage[self][key] end,
18 | }
19 | end
20 |
21 | if oldminor < 3 then
22 | lib.domt.__newindex = function(self, key, value)
23 | if not attributestorage[self] then attributestorage[self] = {} end
24 | if attributestorage[self][key] == value then return end
25 | attributestorage[self][key] = value
26 | local name = namestorage[self]
27 | if not name then return end
28 | callbacks:Fire("LibDataBroker_AttributeChanged", name, key, value, self)
29 | callbacks:Fire("LibDataBroker_AttributeChanged_"..name, name, key, value, self)
30 | callbacks:Fire("LibDataBroker_AttributeChanged_"..name.."_"..key, name, key, value, self)
31 | callbacks:Fire("LibDataBroker_AttributeChanged__"..key, name, key, value, self)
32 | end
33 | end
34 |
35 | if oldminor < 2 then
36 | function lib:NewDataObject(name, dataobj)
37 | if self.proxystorage[name] then return end
38 |
39 | if dataobj then
40 | assert(type(dataobj) == "table", "Invalid dataobj, must be nil or a table")
41 | self.attributestorage[dataobj] = {}
42 | for i,v in pairs(dataobj) do
43 | self.attributestorage[dataobj][i] = v
44 | dataobj[i] = nil
45 | end
46 | end
47 | dataobj = setmetatable(dataobj or {}, self.domt)
48 | self.proxystorage[name], self.namestorage[dataobj] = dataobj, name
49 | self.callbacks:Fire("LibDataBroker_DataObjectCreated", name, dataobj)
50 | return dataobj
51 | end
52 | end
53 |
54 | if oldminor < 1 then
55 | function lib:DataObjectIterator()
56 | return pairs(self.proxystorage)
57 | end
58 |
59 | function lib:GetDataObjectByName(dataobjectname)
60 | return self.proxystorage[dataobjectname]
61 | end
62 |
63 | function lib:GetNameByDataObject(dataobject)
64 | return self.namestorage[dataobject]
65 | end
66 | end
67 |
68 | if oldminor < 4 then
69 | local next = pairs(attributestorage)
70 | function lib:pairs(dataobject_or_name)
71 | local t = type(dataobject_or_name)
72 | assert(t == "string" or t == "table", "Usage: ldb:pairs('dataobjectname') or ldb:pairs(dataobject)")
73 |
74 | local dataobj = self.proxystorage[dataobject_or_name] or dataobject_or_name
75 | assert(attributestorage[dataobj], "Data object not found")
76 |
77 | return next, attributestorage[dataobj], nil
78 | end
79 |
80 | local ipairs_iter = ipairs(attributestorage)
81 | function lib:ipairs(dataobject_or_name)
82 | local t = type(dataobject_or_name)
83 | assert(t == "string" or t == "table", "Usage: ldb:ipairs('dataobjectname') or ldb:ipairs(dataobject)")
84 |
85 | local dataobj = self.proxystorage[dataobject_or_name] or dataobject_or_name
86 | assert(attributestorage[dataobj], "Data object not found")
87 |
88 | return ipairs_iter, attributestorage[dataobj], 0
89 | end
90 | end
91 |
--------------------------------------------------------------------------------
/PandariaDungeons/SiegeOfNiuzaoTemple.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Siege of Niuzao-Temple Bosses
8 | ------------------------------------------------------
9 | core._1011 = {}
10 |
11 | ------------------------------------------------------
12 | ---- General Pa'valak Bosses
13 | ------------------------------------------------------
14 | local detonateCounter = 0
15 |
16 | ------------------------------------------------------
17 | ---- Wing Leader Ner'onok
18 | ------------------------------------------------------
19 | local TenwusResolveCounter = 0
20 | local TenwusPlayerTrack = {}
21 |
22 | function core._1011:CommanderVojak()
23 | if core.type == "UNIT_DIED" and core.destID == "61699" then
24 | core:getAchievementSuccess()
25 | end
26 | end
27 |
28 | function core._1011:GeneralPaValak()
29 | if (core.type == "SPELL_AURA_APPLIED" or core.type == "SPELL_AURA_APPLIED_DOSE") and core.destID == "61485" and core.spellId == 119395 then
30 | detonateCounter = detonateCounter + 1
31 | end
32 |
33 | if detonateCounter >= 20 then
34 | core:getAchievementSuccess()
35 | end
36 | end
37 |
38 | function core._1011:WingLeaderNeronok()
39 | --Recieved Buff
40 | if (core.type == "SPELL_AURA_APPLIED" or core.type == "SPELL_AURA_REFRESH") and core.spellId == 125146 then
41 | if core:has_value(core.Instances[core.expansion][core.instanceType][core.instance]["boss3"].players, core.destName) then
42 | --Player needs achievement but has failed it
43 | TenwusResolveCounter = TenwusResolveCounter + 1
44 | core:sendMessage(core.destName .. " has recieved Tenwu's Resolve (" .. TenwusResolveCounter .. "/" .. #core.Instances[core.expansion][core.instanceType][core.instance]["boss3"].players .. ") (Personal Achievement)")
45 | TenwusPlayerTrack[core.destName] = true
46 | end
47 | end
48 |
49 | --Lost Buff
50 | if core.type == "SPELL_AURA_REMOVED" and core.spellId == 125146 and TenwusPlayerTrack[core.destName] ~= nil then
51 | if core:has_value(core.Instances[core.expansion][core.instanceType][core.instance]["boss3"].players, core.destName) then
52 | --Player needs achievement but has failed it
53 | TenwusResolveCounter = TenwusResolveCounter - 1
54 | core:sendMessage(core.destName .. " has LOST Tenwu's Resolve. DO NOT KILL BOSS! (" .. TenwusResolveCounter .. "/" .. #core.Instances[core.expansion][core.instanceType][core.instance]["boss3"].players .. ") (Personal Achievement)")
55 | core.achievementCompleted = false
56 | TenwusPlayerTrack[core.destName] = false
57 | end
58 | end
59 |
60 | --Everyone who needs achievement has got it
61 | if TenwusResolveCounter == #core.Instances[core.expansion][core.instanceType][core.instance]["boss3"].players then
62 | core:getAchievementSuccess()
63 | end
64 | end
65 |
66 | function core._1011:ClearVariables()
67 | ------------------------------------------------------
68 | ---- General Pa'valak Bosses
69 | ------------------------------------------------------
70 | detonateCounter = 0
71 |
72 | ------------------------------------------------------
73 | ---- Wing Leader Ner'onok
74 | ------------------------------------------------------
75 | TenwusResolveCounter = 0
76 | TenwusPlayerTrack = {}
77 | end
78 |
79 |
--------------------------------------------------------------------------------
/Libs/LibDBCompartment/Libs/LibDataBroker-1.1/LibDataBroker-1.1.lua:
--------------------------------------------------------------------------------
1 |
2 | assert(LibStub, "LibDataBroker-1.1 requires LibStub")
3 | assert(LibStub:GetLibrary("CallbackHandler-1.0", true), "LibDataBroker-1.1 requires CallbackHandler-1.0")
4 |
5 | local lib, oldminor = LibStub:NewLibrary("LibDataBroker-1.1", 4)
6 | if not lib then return end
7 | oldminor = oldminor or 0
8 |
9 |
10 | lib.callbacks = lib.callbacks or LibStub:GetLibrary("CallbackHandler-1.0"):New(lib)
11 | lib.attributestorage, lib.namestorage, lib.proxystorage = lib.attributestorage or {}, lib.namestorage or {}, lib.proxystorage or {}
12 | local attributestorage, namestorage, callbacks = lib.attributestorage, lib.namestorage, lib.callbacks
13 |
14 | if oldminor < 2 then
15 | lib.domt = {
16 | __metatable = "access denied",
17 | __index = function(self, key) return attributestorage[self] and attributestorage[self][key] end,
18 | }
19 | end
20 |
21 | if oldminor < 3 then
22 | lib.domt.__newindex = function(self, key, value)
23 | if not attributestorage[self] then attributestorage[self] = {} end
24 | if attributestorage[self][key] == value then return end
25 | attributestorage[self][key] = value
26 | local name = namestorage[self]
27 | if not name then return end
28 | callbacks:Fire("LibDataBroker_AttributeChanged", name, key, value, self)
29 | callbacks:Fire("LibDataBroker_AttributeChanged_"..name, name, key, value, self)
30 | callbacks:Fire("LibDataBroker_AttributeChanged_"..name.."_"..key, name, key, value, self)
31 | callbacks:Fire("LibDataBroker_AttributeChanged__"..key, name, key, value, self)
32 | end
33 | end
34 |
35 | if oldminor < 2 then
36 | function lib:NewDataObject(name, dataobj)
37 | if self.proxystorage[name] then return end
38 |
39 | if dataobj then
40 | assert(type(dataobj) == "table", "Invalid dataobj, must be nil or a table")
41 | self.attributestorage[dataobj] = {}
42 | for i,v in pairs(dataobj) do
43 | self.attributestorage[dataobj][i] = v
44 | dataobj[i] = nil
45 | end
46 | end
47 | dataobj = setmetatable(dataobj or {}, self.domt)
48 | self.proxystorage[name], self.namestorage[dataobj] = dataobj, name
49 | self.callbacks:Fire("LibDataBroker_DataObjectCreated", name, dataobj)
50 | return dataobj
51 | end
52 | end
53 |
54 | if oldminor < 1 then
55 | function lib:DataObjectIterator()
56 | return pairs(self.proxystorage)
57 | end
58 |
59 | function lib:GetDataObjectByName(dataobjectname)
60 | return self.proxystorage[dataobjectname]
61 | end
62 |
63 | function lib:GetNameByDataObject(dataobject)
64 | return self.namestorage[dataobject]
65 | end
66 | end
67 |
68 | if oldminor < 4 then
69 | local next = pairs(attributestorage)
70 | function lib:pairs(dataobject_or_name)
71 | local t = type(dataobject_or_name)
72 | assert(t == "string" or t == "table", "Usage: ldb:pairs('dataobjectname') or ldb:pairs(dataobject)")
73 |
74 | local dataobj = self.proxystorage[dataobject_or_name] or dataobject_or_name
75 | assert(attributestorage[dataobj], "Data object not found")
76 |
77 | return next, attributestorage[dataobj], nil
78 | end
79 |
80 | local ipairs_iter = ipairs(attributestorage)
81 | function lib:ipairs(dataobject_or_name)
82 | local t = type(dataobject_or_name)
83 | assert(t == "string" or t == "table", "Usage: ldb:ipairs('dataobjectname') or ldb:ipairs(dataobject)")
84 |
85 | local dataobj = self.proxystorage[dataobject_or_name] or dataobject_or_name
86 | assert(attributestorage[dataobj], "Data object not found")
87 |
88 | return ipairs_iter, attributestorage[dataobj], 0
89 | end
90 | end
91 |
--------------------------------------------------------------------------------
/DraenorDungeons/Skyreach.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- _1209 Bosses
8 | ------------------------------------------------------
9 | core._1209 = {}
10 | core._1209.Events = CreateFrame("Frame")
11 |
12 | ------------------------------------------------------
13 | ---- Ranjit
14 | ------------------------------------------------------
15 | local playersHit = {}
16 |
17 | ------------------------------------------------------
18 | ---- Rukhran
19 | ------------------------------------------------------
20 | local lastTime = nil
21 | local birdCounter = 0
22 |
23 | function core._1209:Ranjit()
24 | local playerHit = false
25 | local reason = nil
26 |
27 | --Spinning Blade
28 | if core.spellId == 153123 then
29 | playerHit = true
30 | reason = "Spinning Blade"
31 | end
32 |
33 | --Windwall
34 | if core.spellId == 153759 then
35 | playerHit = true
36 | reason = "Windwall"
37 | end
38 |
39 | --Four Winds
40 | if core.spellId == 153139 then
41 | playerHit = true
42 | reason = "Four Winds"
43 | end
44 |
45 | --Lens Flare
46 | if core.spellId == 154043 then
47 | playerHit = true
48 | reason = "Lens Flare"
49 | end
50 |
51 | if playerHit == true then
52 | if playersHit[core.destName] == nil then
53 | --Players has not been hit already
54 | --Check if the player actually needs the achievement
55 | if core:has_value(core.Instances[core.expansion][core.instanceType][core.instance]["boss1"].players, core.destName) then
56 | --Player needs achievement but has failed it
57 | core:sendMessage(core.destName .. " has failed " .. GetAchievementLink(core.currentAchievementID) .. " (Personal Achievement) (Reason: Damage from " .. reason .. ")")
58 | end
59 | playersHit[core.destName] = true
60 | end
61 | end
62 | end
63 |
64 | function core._1209:HighSageViryx()
65 | if core.type == "UNIT_DIED" and core.destID == "76292" then
66 | core:getAchievementFailed()
67 | end
68 | end
69 |
70 | function core._1209:InstanceCleanup()
71 | core._1209.Events:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
72 | end
73 |
74 | core._1209.Events:SetScript("OnEvent", function(self, event, ...)
75 | return self[event] and self[event](self, event, ...)
76 | end)
77 |
78 | function core._1209:InitialSetup()
79 | core._1209.Events:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
80 | end
81 |
82 | function core._1209.Events:UNIT_SPELLCAST_SUCCEEDED(self, unit, castGUID, spellID)
83 | if spellID == 153828 then
84 | if lastTime == nil or lastTime == GetTime() then
85 | birdCounter = birdCounter + 1
86 | else
87 | birdCounter = 1
88 | end
89 | lastTime = GetTime()
90 | end
91 |
92 | if birdCounter >= 3 then
93 | C_Timer.After(1, function()
94 | core:getAchievementSuccess()
95 | end)
96 | end
97 | end
98 |
99 | function core._1209:ClearVariables()
100 | ------------------------------------------------------
101 | ---- Ranjit
102 | ------------------------------------------------------
103 | playersHit = {}
104 |
105 | ------------------------------------------------------
106 | ---- Rukhran
107 | ------------------------------------------------------
108 | lastTime = nil
109 | birdCounter = 0
110 | end
--------------------------------------------------------------------------------
/ItemCache.lua:
--------------------------------------------------------------------------------
1 | local _, core = ...
2 |
3 | core.ItemCache = {
4 | [42780] = 42780, --Relic of Ulduar
5 | [42780] = 42780, --Relic of Ulduar
6 | [42780] = 42780, --Relic of Ulduar
7 | [42780] = 42780, --Relic of Ulduar
8 | [43499] = 43499, --Iron Boot Flask
9 | [43499] = 43499, --Iron Boot Flask
10 | [43499] = 43499, --Iron Boot Flask
11 | [43499] = 43499, --Iron Boot Flask
12 | [44606] = 44606, --Toy Train Set
13 | [44606] = 44606, --Toy Train Set
14 | [44606] = 44606, --Toy Train Set
15 | [44606] = 44606, --Toy Train Set
16 | [45057] = 45057, --Wind-Up Train Wrecker
17 | [45057] = 45057, --Wind-Up Train Wrecker
18 | [45057] = 45057, --Wind-Up Train Wrecker
19 | [45057] = 45057, --Wind-Up Train Wrecker
20 | [64482] = 64482, --Puzzle Box of Yogg-Saron
21 | [64482] = 64482, --Puzzle Box of Yogg-Saron
22 | [64482] = 64482, --Puzzle Box of Yogg-Saron
23 | [64482] = 64482, --Puzzle Box of Yogg-Saron
24 | [80313] = 80313, --Ling-Ting's Favorite Tea
25 | [80313] = 80313, --Ling-Ting's Favorite Tea
26 | [80313] = 80313, --Ling-Ting's Favorite Tea
27 | [80313] = 80313, --Ling-Ting's Favorite Tea
28 | [87214] = 87214, --Blingtron 4000
29 | [87214] = 87214, --Blingtron 4000
30 | [87214] = 87214, --Blingtron 4000
31 | [87214] = 87214, --Blingtron 4000
32 | [111821] = 111821, --Blingtron 5000
33 | [111821] = 111821, --Blingtron 5000
34 | [111821] = 111821, --Blingtron 5000
35 | [111821] = 111821, --Blingtron 5000
36 | [118938] = 118938, --Manastorm's Duplicator
37 | [118938] = 118938, --Manastorm's Duplicator
38 | [118938] = 118938, --Manastorm's Duplicator
39 | [118938] = 118938, --Manastorm's Duplicator
40 | [119210] = 119210, --Hearthstone Board
41 | [119210] = 119210, --Hearthstone Board
42 | [119210] = 119210, --Hearthstone Board
43 | [119210] = 119210, --Hearthstone Board
44 | [129207] = 129207, --Aegis of Aggramar
45 | [129207] = 129207, --Aegis of Aggramar
46 | [129207] = 129207, --Aegis of Aggramar
47 | [129207] = 129207, --Aegis of Aggramar
48 | [132523] = 132523, --Reaves Battery
49 | [132523] = 132523, --Reaves Battery
50 | [132523] = 132523, --Reaves Battery
51 | [132523] = 132523, --Reaves Battery
52 | [140212] = 140212, --Ketchum Tablet
53 | [140212] = 140212, --Ketchum Tablet
54 | [140212] = 140212, --Ketchum Tablet
55 | [140212] = 140212, --Ketchum Tablet
56 | [143660] = 143660, --Mrgrglhjorn
57 | [143660] = 143660, --Mrgrglhjorn
58 | [143660] = 143660, --Mrgrglhjorn
59 | [143660] = 143660, --Mrgrglhjorn
60 | [144341] = 144341, --Rechargeable Reaves Battery
61 | [144341] = 144341, --Rechargeable Reaves Battery
62 | [144341] = 144341, --Rechargeable Reaves Battery
63 | [144341] = 144341, --Rechargeable Reaves Battery
64 | [180052] = 180052, --Left Gem eye
65 | [180052] = 180052, --Left Gem eye
66 | [180052] = 180052, --Left Gem eye
67 | [180052] = 180052, --Left Gem eye
68 | [180053] = 180053, --Right Gem Eye
69 | [180053] = 180053, --Right Gem Eye
70 | [180053] = 180053, --Right Gem Eye
71 | [180053] = 180053, --Right Gem Eye
72 | [187171] = 187171, --Organic Melon
73 | [187171] = 187171, --Organic Melon
74 | [187171] = 187171, --Organic Melon
75 | [187171] = 187171, --Organic Melon
76 | [187173] = 187173, --Wriggling Tentacle
77 | [187173] = 187173, --Wriggling Tentacle
78 | [187173] = 187173, --Wriggling Tentacle
79 | [187173] = 187173, --Wriggling Tentacle
80 | [187178] = 187178, --Sc'ootie's Favorite Plushie
81 | [187178] = 187178, --Sc'ootie's Favorite Plushie
82 | [187178] = 187178, --Sc'ootie's Favorite Plushie
83 | [187178] = 187178, --Sc'ootie's Favorite Plushie
84 | [187179] = 187179, --Glow Sticks
85 | [187179] = 187179, --Glow Sticks
86 | [187179] = 187179, --Glow Sticks
87 | [187179] = 187179, --Glow Sticks
88 | }
89 |
--------------------------------------------------------------------------------
/ShadowlandsDungeons/TheaterofPain.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Theater of Pain
9 | ------------------------------------------------------
10 | core._2293 = {}
11 |
12 | ------------------------------------------------------
13 | ---- Mordretha
14 | ------------------------------------------------------
15 | local announceChallenge = false
16 | local ghostlyContenderCounter = 0
17 |
18 | ------------------------------------------------------
19 | ---- Affront of Challengers
20 | ------------------------------------------------------
21 | local parceranKilled = false
22 | local sathelKilled = false
23 | local dessiaKilled = false
24 |
25 | function core._2293:Gorechop()
26 | --Defeat Gorechop after tenderizing 2 hunks of meat with Tenderizing Smash in the Theater of Pain on Mythic difficulty.
27 |
28 | if core:getBlizzardTrackingStatus(14607, 1) == true then
29 | core:getAchievementSuccess()
30 | end
31 | end
32 |
33 | function core._2293:Mordretha()
34 | --Defeat Mordretha, the Endless Empress, after performing a /challenge and defeating 2 Ghostly Contenders in the Theater of Pain on Mythic difficulty.
35 |
36 | if core:getHealthPercent("boss1") <= 50 and announceChallenge == false then
37 | core:sendMessage(format(L["TheaterOfPain_ChallengeNow"], getNPCName(173675)),true)
38 | announceChallenge = true
39 | end
40 |
41 | if core.type == "UNIT_DIED" and (core.destID == "173675" or core.destID == "173667") then
42 | ghostlyContenderCounter = ghostlyContenderCounter + 1
43 | core:sendMessage(core:getAchievement() .. " " .. getNPCName(173675) .. " " .. L["Shared_Killed"] .. " (" .. ghostlyContenderCounter .. "/2)",true)
44 | end
45 |
46 | if core:getBlizzardTrackingStatus(14533, 1) == true then
47 | core:getAchievementSuccess()
48 | end
49 | end
50 |
51 | function core._2293:AffrontOfChallengers()
52 | --Defeat each of the combatants last throughout multiple completions of the Affront of Challengers encounter in the Theater of Pain on Mythic difficulty.
53 |
54 | if core.type == "UNIT_DIED" and core.destID == "164463" then
55 | parceranKilled = true
56 | elseif core.type == "UNIT_DIED" and core.destID == "164461" then
57 | sathelKilled = true
58 | elseif core.type == "UNIT_DIED" and core.destID == "164451" then
59 | dessiaKilled = true
60 | end
61 |
62 | if parceranKilled == true and sathelKilled == true then
63 | core:getAchievementSuccessWithCustomMessage(format(L["TerraceOfEndlessSpring_DefeatedLast"], getNPCName(164451)), L["Shared_CompletedBossKill"])
64 | elseif parceranKilled == true and dessiaKilled == true then
65 | core:getAchievementSuccessWithCustomMessage(format(L["TerraceOfEndlessSpring_DefeatedLast"], getNPCName(164461)), L["Shared_CompletedBossKill"])
66 | elseif sathelKilled == true and dessiaKilled == true then
67 | core:getAchievementSuccessWithCustomMessage(format(L["TerraceOfEndlessSpring_DefeatedLast"], getNPCName(164463)), L["Shared_CompletedBossKill"])
68 | end
69 | end
70 |
71 | function core._2293:ClearVariables()
72 | ------------------------------------------------------
73 | ---- Mordretha
74 | ------------------------------------------------------
75 | announceChallenge = false
76 | ghostlyContenderCounter = 0
77 |
78 | ------------------------------------------------------
79 | ---- Affront of Challengers
80 | ------------------------------------------------------
81 | parceranKilled = false
82 | sathelKilled = false
83 | dessiaKilled = false
84 | end
--------------------------------------------------------------------------------
/LegionDungeons/CathedralOfEternalNight.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 | local L = core.L
6 |
7 | ------------------------------------------------------
8 | ---- Cathedral of Eternal Night Bosses
9 | ------------------------------------------------------
10 | core._1677 = {}
11 |
12 | ------------------------------------------------------
13 | ---- Thrashbite the Scornful
14 | ------------------------------------------------------
15 | local buff1Counter = 0
16 | local buff2Counter = 0
17 | local buff3Counter = 0
18 | local buff4Counter = 0
19 | local playerCounter = {}
20 |
21 | function core._1677:ThrashbiteTheScornful()
22 | --Volume 1: 121776 Voume 2: 121783 Volume 3: 121784 Voume 4: 121785
23 | --Buff 1: 243256 Buff 2: 243258 Buff 3: 243259 Buff 4: 243261
24 |
25 | InfoFrame_UpdatePlayersOnInfoFrameWithAdditionalInfo()
26 | InfoFrame_SetHeaderCounter(L["Shared_PlayersWithBuff"],buff4Counter,5)
27 |
28 | --Check if all players in group have read books
29 | if core.destName ~= nil then
30 | if core.type == "SPELL_AURA_APPLIED" and core.spellId == 243256 then
31 | buff1Counter = buff1Counter + 1
32 | playerCounter[core.destName] = 1
33 | core:sendMessage(core:getAchievement() .. " " .. core.destName .. " " .. L["Core_Counter"] .. " (" .. playerCounter[core.destName] .. "/5)",true)
34 | InfoFrame_SetPlayerNeutralWithMessage(core.destName, playerCounter[core.destName])
35 | elseif core.type == "SPELL_AURA_APPLIED" and core.spellId == 243258 then
36 | buff2Counter = buff2Counter + 1
37 | playerCounter[core.destName] = playerCounter[core.destName] + 1
38 | core:sendMessage(core:getAchievement() .. " " .. core.destName .. " " .. L["Core_Counter"] .. " (" .. playerCounter[core.destName] .. "/5)",true)
39 | InfoFrame_SetPlayerNeutralWithMessage(core.destName, playerCounter[core.destName])
40 | elseif core.type == "SPELL_AURA_APPLIED" and core.spellId == 243259 then
41 | buff3Counter = buff3Counter + 1
42 | playerCounter[core.destName] = playerCounter[core.destName] + 1
43 | core:sendMessage(core:getAchievement() .. " " .. core.destName .. " " .. L["Core_Counter"] .. " (" .. playerCounter[core.destName] .. "/5)",true)
44 | InfoFrame_SetPlayerNeutralWithMessage(core.destName, playerCounter[core.destName])
45 | elseif core.type == "SPELL_AURA_APPLIED" and core.spellId == 243261 then
46 | buff4Counter = buff4Counter + 1
47 | playerCounter[core.destName] = playerCounter[core.destName] + 1
48 | core:sendMessage(core:getAchievement() .. " " .. core.destName .. " " .. L["Core_Counter"] .. " (" .. playerCounter[core.destName] .. "/5)",true)
49 | InfoFrame_SetPlayerCompleteWithMessage(core.destName, playerCounter[core.destName])
50 |
51 | if buff4Counter == 5 then
52 | core:getAchievementSuccess()
53 | end
54 | end
55 | end
56 | end
57 |
58 | function core._1677:Mephistroth()
59 | --Defeat Mephistroth within the Cathedral of Eternal Night after blocking 20 Shadow Blasts with the Aegis of Aggramar on Mythic difficulty.
60 | if core:getBlizzardTrackingStatus(11703) == true then
61 | core:getAchievementSuccess()
62 | end
63 | end
64 |
65 | function core._1677:ClearVariables()
66 | ------------------------------------------------------
67 | ---- Thrashbite the Scornful
68 | ------------------------------------------------------
69 | buff1Counter = 0
70 | buff2Counter = 0
71 | buff3Counter = 0
72 | buff4Counter = 0
73 | end
--------------------------------------------------------------------------------
/DraenorDungeons/ShadowmoonBurialGrounds.lua:
--------------------------------------------------------------------------------
1 | --------------------------------------
2 | -- Namespaces
3 | --------------------------------------
4 | local _, core = ...
5 |
6 | ------------------------------------------------------
7 | ---- Shadowmoon Burial Grounds Bosses
8 | ------------------------------------------------------
9 | core._1176 = {}
10 |
11 | ------------------------------------------------------
12 | ---- Bonemaw
13 | ------------------------------------------------------
14 | local corpseSkitterlingUID = {}
15 | local corpseSkitterlingCounter = 0
16 | local corpseSkitterlingAnnounced = false
17 |
18 | ------------------------------------------------------
19 | ---- Ner'zhul
20 | ------------------------------------------------------
21 | local ritualOfBonesCounter = 0
22 | local timerStarted = false
23 |
24 | function core._1176:SadanaBloodfury()
25 | if core:getBlizzardTrackingStatus(9018) == true then
26 | core:getAchievementSuccess()
27 | end
28 | end
29 |
30 | function core._1176:Bonemaw()
31 | --Corpse Skitterlings Alive
32 | if (core.type == "SWING_DAMAGE" or core.type == "SWING_MISSED") and core.sourceID == "77006" then
33 | if corpseSkitterlingUID[core.spawn_uid] == nil then
34 | corpseSkitterlingUID[core.spawn_uid] = core.spawn_uid
35 | corpseSkitterlingCounter = corpseSkitterlingCounter + 1
36 | --print(core.spawn_uid .. " : " .. corpseSkitterlingCounter)
37 | end
38 | end
39 |
40 | --Corpse Skitterlings Dead
41 | if core.type == "UNIT_DIED" and core.destID == "77006" then
42 | corpseSkitterlingUID[core.spawn_uid_dest] = false
43 | corpseSkitterlingCounter = corpseSkitterlingCounter - 1
44 | --print(core.spawn_uid_dest .. " : " .. corpseSkitterlingCounter)
45 | end
46 |
47 | --Corpse Skitterlings Sucked up by boss
48 | if core.type == "SPELL_AURA_REMOVED" and core.spellId == 153804 then
49 | C_Timer.After(5, function()
50 | core:sendMessage(GetAchievementLink(9025) .. " " .. corpseSkitterlingCounter .. " /25 Corpse Skitterlings inhaled by the boss")
51 | if corpseSkitterlingCounter >= 25 then
52 | core:getAchievementSuccess()
53 | else
54 | core:getAchievementFailed()
55 | end
56 | end)
57 | end
58 |
59 | --25 Corpse Skitterlings collected before boss
60 | if corpseSkitterlingCounter > 25 and corpseSkitterlingAnnounced == false then
61 | corpseSkitterlingAnnounced = true
62 | core:sendMessage(GetAchievementLink(9025) .. " 25 Corpse Skitterlings have been engaged. You can now pull boss and wait for Inhale")
63 | end
64 | end
65 |
66 | function core._1176:Nerzhul()
67 | if core.type == "UNIT_DIED" and core.destID == "76518" then
68 | ritualOfBonesCounter = ritualOfBonesCounter + 1
69 | if timerStarted == false then
70 | timerStarted = true
71 | C_Timer.After(5, function()
72 | if ritualOfBonesCounter >= 2 then
73 | core:getAchievementSuccess()
74 | else
75 | ritualOfBonesCounter = 0
76 | end
77 | end)
78 | end
79 | end
80 | end
81 |
82 | function core._1176:ClearVariables()
83 | ------------------------------------------------------
84 | ---- Bonemaw
85 | ------------------------------------------------------
86 | corpseSkitterlingUID = {}
87 | corpseSkitterlingCounter = 0
88 | corpseSkitterlingAnnounced = false
89 |
90 | ------------------------------------------------------
91 | ---- Ner'zhul
92 | ------------------------------------------------------
93 | ritualOfBonesCounter = 0
94 | timerStarted = false
95 | end
--------------------------------------------------------------------------------