From 187f5aac19c3fa30d569659562ee715fd55e36cc Mon Sep 17 00:00:00 2001 From: qyh214 Date: Mon, 1 Dec 2014 18:20:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8F=92=E4=BB=B6=E5=88=B0?= =?UTF-8?q?=E6=9C=80=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AddOns/AdiBags/AdiBags.toc | 6 +- AddOns/AdiBags/Changelog-AdiBags-v1.7.12.txt | 12 + AddOns/AdiBags/config/Options.lua | 7 +- AddOns/AdiBags/core/Core.lua | 2 +- AddOns/AdiBags/core/Filters.lua | 61 +- AddOns/AdiBags/core/Utility.lua | 34 - AddOns/AdiBags/modules/ItemLevel.lua | 11 +- AddOns/AdiBags/modules/NewItemTracking.lua | 3 - AddOns/AdiBags/widgets/ContainerFrame.lua | 35 +- AddOns/AdiBags/widgets/ItemButton.lua | 9 +- AddOns/AdiBags_Config/AdiBags_Config.toc | 6 +- AddOns/BagSync/BagSync.toc | 4 +- AddOns/BagSync/BagSync_Search.lua | 1 + AddOns/BagSync/Changelog-BagSync-v8.0.txt | 12 + AddOns/BagSync/localization/localization.lua | 4 + AddOns/Castbars/Castbars.lua | 30 +- AddOns/Castbars/Castbars.toc | 2 +- AddOns/Castbars/Changelog-Castbars-3.44.txt | 19 + .../AceConfigDialog-3.0.lua | 16 +- AddOns/Castbars/Libs/AceDB-3.0/AceDB-3.0.lua | 6 +- .../widgets/AceGUIContainer-TreeGroup.lua | 4 +- .../widgets/AceGUIContainer-TreeGroup.lua | 4 +- .../DBM-BlackrockFoundry.toc | 2 +- AddOns/DBM-Brawlers/DBM-Brawlers.toc | 2 +- AddOns/DBM-Core/Changelog-DBM-Core-6.0.5.txt | 68 + AddOns/DBM-Core/DBM-Core.lua | 47 +- AddOns/DBM-Core/DBM-Core.toc | 4 +- AddOns/DBM-Core/DBM-HudMap.lua | 2 +- AddOns/DBM-Core/DBM-RangeCheck.lua | 2 +- AddOns/DBM-Core/localization.cn.lua | 8 +- AddOns/DBM-Core/localization.en.lua | 2 + AddOns/DBM-Core/localization.tw.lua | 8 +- AddOns/DBM-DMF/DBM-DMF.toc | 2 +- AddOns/DBM-DMF/localization.kr.lua | 10 + AddOns/DBM-DMF/localization.tw.lua | 9 + AddOns/DBM-DefaultSkin/DBM-DefaultSkin.toc | 2 +- AddOns/DBM-Draenor/DBM-Draenor.toc | 2 +- AddOns/DBM-DragonSoul/DBM-DragonSoul.toc | 13 +- AddOns/DBM-DragonSoul/SpineDeathwing.lua | 2 +- AddOns/DBM-Firelands/Baleroc.lua | 6 +- AddOns/DBM-Firelands/DBM-Firelands.toc | 15 +- AddOns/DBM-GUI/DBM-GUI.toc | 2 +- AddOns/DBM-GUI/localization.tw.lua | 2 +- AddOns/DBM-HeartofFear/DBM-HeartofFear.toc | 11 +- AddOns/DBM-HeartofFear/Meljarak.lua | 4 +- AddOns/DBM-HeartofFear/Shekzeer.lua | 10 +- AddOns/DBM-HeartofFear/Unsok.lua | 4 +- AddOns/DBM-Highmaul/DBM-Highmaul.toc | 2 +- AddOns/DBM-Icecrown/DBM-Icecrown.toc | 17 +- AddOns/DBM-MC/DBM-MC.toc | 31 + AddOns/DBM-MC/Garr.lua | 39 + AddOns/DBM-MC/Geddon.lua | 80 + AddOns/DBM-MC/Gehennas.lua | 61 + AddOns/DBM-MC/Golemagg.lua | 20 + AddOns/DBM-MC/Lucifron.lua | 39 + AddOns/DBM-MC/Magmadar.lua | 49 + AddOns/DBM-MC/Majordomo.lua | 39 + AddOns/DBM-MC/Ragnaros.lua | 78 + AddOns/DBM-MC/Shazzrah.lua | 66 + AddOns/DBM-MC/Sulfuron.lua | 55 + AddOns/DBM-MC/localization.cn.lua | 114 + AddOns/DBM-MC/localization.en.lua | 113 + AddOns/DBM-MC/localization.tw.lua | 114 + .../DBM-MogushanVaults/DBM-MogushanVaults.toc | 12 +- AddOns/DBM-MogushanVaults/Elegon.lua | 2 +- AddOns/DBM-MogushanVaults/Feng.lua | 2 +- AddOns/DBM-MogushanVaults/SpiritKings.lua | 10 +- AddOns/DBM-Pandaria/DBM-Pandaria.toc | 19 +- AddOns/DBM-Pandaria/Oondasta.lua | 2 +- AddOns/DBM-Pandaria/Zandalari.lua | 68 + AddOns/DBM-Party-MoP/DBM-Party-MoP.toc | 21 +- AddOns/DBM-Party-WoD/Auchindoun/Azzakel.lua | 4 +- AddOns/DBM-Party-WoD/Auchindoun/Nyami.lua | 12 +- .../Auchindoun/ProtectorOfAuch.lua | 4 +- AddOns/DBM-Party-WoD/DBM-Party-WoD.toc | 5 +- .../DBM-Party-WoD/EverBloom/ArchmageSol.lua | 2 +- AddOns/DBM-Party-WoD/EverBloom/Xeritac.lua | 10 +- AddOns/DBM-Party-WoD/EverBloom/Yalnu.lua | 6 +- .../BlackrockAssaultCommander.lua | 8 +- .../GrimRailDepot/ThunderlordGeneral.lua | 6 +- .../IronDocks/GrimrailEnforcers.lua | 10 +- AddOns/DBM-Party-WoD/IronDocks/Oshir.lua | 4 +- AddOns/DBM-Party-WoD/IronDocks/Skulloc.lua | 2 +- .../DBM-Party-WoD/SMBurialGrounds/Bonemaw.lua | 11 +- .../SMBurialGrounds/Nhallish.lua | 1 + .../SMBurialGrounds/SadanaBloodfury.lua | 3 +- AddOns/DBM-Party-WoD/Skyreach/Araknath.lua | 4 +- AddOns/DBM-Party-WoD/Skyreach/Ranjit.lua | 4 +- AddOns/DBM-Party-WoD/Skyreach/Rukhran.lua | 18 +- AddOns/DBM-Party-WoD/Skyreach/Viryx.lua | 7 +- AddOns/DBM-Party-WoD/UBRS/Gorashan.lua | 14 +- AddOns/DBM-Party-WoD/UBRS/Kyrak.lua | 59 +- AddOns/DBM-Party-WoD/UBRS/Ragewing.lua | 3 - AddOns/DBM-Party-WoD/UBRS/UBRSTrash.lua | 129 ++ AddOns/DBM-Party-WoD/UBRS/Zaela.lua | 9 +- AddOns/DBM-Party-WoD/localization.en.lua | 9 + .../DBM-ProvingGrounds/DBM-ProvingGrounds.toc | 22 + AddOns/DBM-ProvingGrounds/PGWhiteTiger.lua | 216 ++ AddOns/DBM-ProvingGrounds/localization.cn.lua | 7 + AddOns/DBM-ProvingGrounds/localization.en.lua | 11 + AddOns/DBM-ProvingGrounds/localization.tw.lua | 7 + .../DBM-StatusBarTimers.toc | 2 +- .../DBM-TerraceofEndlessSpring.toc | 10 +- .../ProtectorsofEndless.lua | 18 +- .../DBM-TerraceofEndlessSpring/ShaofFear.lua | 16 +- .../DBM-ThroneFourWinds.toc | 2 +- .../DBM-ThroneofThunder/CouncilofElders.lua | 4 +- .../DBM-ThroneofThunder.toc | 13 +- AddOns/DBM-ThroneofThunder/DarkAnimus.lua | 4 +- AddOns/DBM-ThroneofThunder/Durumu.lua | 32 +- AddOns/DBM-ThroneofThunder/Horridon.lua | 10 +- AddOns/DBM-ThroneofThunder/JiKun.lua | 8 +- AddOns/DBM-ThroneofThunder/Jinrokh.lua | 14 +- AddOns/DBM-ThroneofThunder/LeiShen.lua | 10 +- AddOns/DBM-ThroneofThunder/Megaera.lua | 6 +- AddOns/DBM-ThroneofThunder/Primordius.lua | 4 +- AddOns/DBM-ThroneofThunder/ToTTrash.lua | 2 +- AddOns/DBM-ThroneofThunder/Tortos.lua | 8 +- AddOns/DBM-Ulduar/Algalon.lua | 10 +- AddOns/DBM-Ulduar/DBM-Ulduar.toc | 14 +- AddOns/DBM-WorldEvents/DBM-WorldEvents.toc | 2 +- AddOns/DBM-Yike/153804.ogg | Bin 0 -> 8784 bytes AddOns/DBM-Yike/160702.ogg | Bin 0 -> 7356 bytes AddOns/DBM-Yike/164974.ogg | Bin 0 -> 9949 bytes AddOns/DBM-Yike/20619.ogg | Bin 0 -> 11546 bytes AddOns/DBM-Yike/DBM-Yike.toc | 4 +- AddOns/DBM-Yike/dispelboss.ogg | Bin 17370 -> 8227 bytes AddOns/ExtraCD/Changelog-ExtraCD-1.3.2.txt | 38 + AddOns/ExtraCD/ExtraCD.lua | 4 +- AddOns/ExtraCD/ExtraCD.toc | 8 +- AddOns/ExtraCD/Libs/LibStub/LibStub.toc | 2 +- AddOns/ExtraCD/data.lua | 301 ++- AddOns/GarrisonCommander/CHANGELOG.txt | 18 + .../GarrisonCommander/GarrisonCommander.lua | 581 +++++ .../GarrisonCommander/GarrisonCommander.toc | 28 + .../GarrisonCommander/GarrisonCommander.xml | 4 + AddOns/GarrisonCommander/RelNotes.lua | 53 + AddOns/GarrisonCommander/embeds.xml | 17 + AddOns/GarrisonCommander/libs/Ace3/Ace3.lua | 110 + AddOns/GarrisonCommander/libs/Ace3/Ace3.toc | 31 + .../libs/Ace3/AceAddon-3.0/AceAddon-3.0.lua | 674 ++++++ .../libs/Ace3/AceAddon-3.0/AceAddon-3.0.xml | 4 + .../libs/Ace3/AceBucket-3.0/AceBucket-3.0.lua | 293 +++ .../libs/Ace3/AceBucket-3.0/AceBucket-3.0.xml | 4 + .../libs/Ace3/AceComm-3.0/AceComm-3.0.lua | 302 +++ .../libs/Ace3/AceComm-3.0/AceComm-3.0.xml | 5 + .../libs/Ace3/AceComm-3.0/ChatThrottleLib.lua | 524 +++++ .../libs/Ace3/AceConfig-3.0/AceConfig-3.0.lua | 57 + .../libs/Ace3/AceConfig-3.0/AceConfig-3.0.xml | 8 + .../AceConfigCmd-3.0/AceConfigCmd-3.0.lua | 794 +++++++ .../AceConfigCmd-3.0/AceConfigCmd-3.0.xml | 4 + .../AceConfigDialog-3.0.lua | 1955 +++++++++++++++++ .../AceConfigDialog-3.0.xml | 4 + .../AceConfigRegistry-3.0.lua | 348 +++ .../AceConfigRegistry-3.0.xml | 4 + .../Ace3/AceConsole-3.0/AceConsole-3.0.lua | 250 +++ .../Ace3/AceConsole-3.0/AceConsole-3.0.xml | 4 + .../libs/Ace3/AceDB-3.0/AceDB-3.0.lua | 745 +++++++ .../libs/Ace3/AceDB-3.0/AceDB-3.0.xml | 4 + .../AceDBOptions-3.0/AceDBOptions-3.0.lua | 440 ++++ .../AceDBOptions-3.0/AceDBOptions-3.0.xml | 4 + .../libs/Ace3/AceEvent-3.0/AceEvent-3.0.lua | 126 ++ .../libs/Ace3/AceEvent-3.0/AceEvent-3.0.xml | 4 + .../libs/Ace3/AceGUI-3.0/AceGUI-3.0.lua | 813 +++++++ .../libs/Ace3/AceGUI-3.0/AceGUI-3.0.xml | 28 + .../AceGUIContainer-BlizOptionsGroup.lua | 138 ++ .../widgets/AceGUIContainer-DropDownGroup.lua | 157 ++ .../widgets/AceGUIContainer-Frame.lua | 311 +++ .../widgets/AceGUIContainer-InlineGroup.lua | 103 + .../widgets/AceGUIContainer-ScrollFrame.lua | 204 ++ .../widgets/AceGUIContainer-SimpleGroup.lua | 69 + .../widgets/AceGUIContainer-TabGroup.lua | 350 +++ .../widgets/AceGUIContainer-TreeGroup.lua | 707 ++++++ .../widgets/AceGUIContainer-Window.lua | 331 +++ .../widgets/AceGUIWidget-Button.lua | 109 + .../widgets/AceGUIWidget-CheckBox.lua | 295 +++ .../widgets/AceGUIWidget-ColorPicker.lua | 188 ++ .../widgets/AceGUIWidget-DropDown-Items.lua | 471 ++++ .../widgets/AceGUIWidget-DropDown.lua | 737 +++++++ .../widgets/AceGUIWidget-EditBox.lua | 261 +++ .../widgets/AceGUIWidget-Heading.lua | 78 + .../AceGUI-3.0/widgets/AceGUIWidget-Icon.lua | 144 ++ .../widgets/AceGUIWidget-InteractiveLabel.lua | 101 + .../widgets/AceGUIWidget-Keybinding.lua | 239 ++ .../AceGUI-3.0/widgets/AceGUIWidget-Label.lua | 166 ++ .../widgets/AceGUIWidget-MultiLineEditBox.lua | 368 ++++ .../widgets/AceGUIWidget-Slider.lua | 285 +++ .../libs/Ace3/AceHook-3.0/AceHook-3.0.lua | 511 +++++ .../libs/Ace3/AceHook-3.0/AceHook-3.0.xml | 4 + .../libs/Ace3/AceLocale-3.0/AceLocale-3.0.lua | 137 ++ .../libs/Ace3/AceLocale-3.0/AceLocale-3.0.xml | 4 + .../AceSerializer-3.0/AceSerializer-3.0.lua | 283 +++ .../AceSerializer-3.0/AceSerializer-3.0.xml | 4 + .../libs/Ace3/AceTab-3.0/AceTab-3.0.lua | 452 ++++ .../libs/Ace3/AceTab-3.0/AceTab-3.0.xml | 4 + .../libs/Ace3/AceTimer-3.0/AceTimer-3.0.lua | 276 +++ .../libs/Ace3/AceTimer-3.0/AceTimer-3.0.xml | 4 + .../GarrisonCommander/libs/Ace3/Bindings.xml | 5 + .../CallbackHandler-1.0.lua | 240 ++ .../CallbackHandler-1.0.xml | 4 + .../GarrisonCommander/libs/Ace3/LICENSE.txt | 29 + .../libs/Ace3/LibStub/LibStub.lua | 30 + .../GarrisonCommander/libs/Ace3/changelog.txt | 364 +++ .../libs/AlarShared-3.0/AlarCore-3.0.lua | 1638 ++++++++++++++ .../libs/AlarShared-3.0/AlarCrayon-3.0.lua | 224 ++ .../libs/AlarShared-3.0/AlarFrames-3.0.lua | 1912 ++++++++++++++++ .../libs/AlarShared-3.0/AlarFrames-3.0.xml | 6 + .../libs/AlarShared-3.0/AlarLoader-3.0.lua | 154 ++ .../libs/AlarShared-3.0/AlarWidgets-3.0.lua | 291 +++ .../libs/AlarShared-3.0/AlarWidgets-3.0.xml | 17 + .../AlarShared-3.0/AlarWidgets/AlarCast.lua | 373 ++++ .../AlarWidgets/AlarCastButton.lua | 87 + .../AlarWidgets/AlarCastHeader.lua | 101 + .../AlarWidgets/AlarCastSingleButton.lua | 137 ++ .../AlarShared-3.0/AlarWidgets/AlarConfig.lua | 88 + .../AlarShared-3.0/AlarWidgets/AlarHeader.lua | 126 ++ .../AlarWidgets/AlarInteractiveLabel.lua | 102 + .../AlarShared-3.0/AlarWidgets/AlarLabel.lua | 191 ++ .../AlarWidgets/AlarMinimapButton.lua | 261 +++ .../AlarShared-3.0/AlarWidgets/AlarPanel.lua | 229 ++ .../AlarWidgets/AlarTransparent.lua | 64 + .../libs/AlarShared-3.0/Buttons.blp | Bin 0 -> 33940 bytes .../libs/AlarShared-3.0/core.xml | 9 + .../libs/AlarShared-3.0/coregui.xml | 7 + .../libs/AlarShared-3.0/icon.tga | Bin 0 -> 1810 bytes .../libs/AlarShared-3.0/lib.xml | 8 + .../libs/AlarShared-3.0/libs/Ace3/Ace3.lua | 110 + .../libs/AlarShared-3.0/libs/Ace3/Ace3.toc | 31 + .../libs/Ace3/AceAddon-3.0/AceAddon-3.0.lua | 674 ++++++ .../libs/Ace3/AceAddon-3.0/AceAddon-3.0.xml | 4 + .../libs/Ace3/AceBucket-3.0/AceBucket-3.0.lua | 293 +++ .../libs/Ace3/AceBucket-3.0/AceBucket-3.0.xml | 4 + .../libs/Ace3/AceComm-3.0/AceComm-3.0.lua | 302 +++ .../libs/Ace3/AceComm-3.0/AceComm-3.0.xml | 5 + .../libs/Ace3/AceComm-3.0/ChatThrottleLib.lua | 524 +++++ .../libs/Ace3/AceConfig-3.0/AceConfig-3.0.lua | 57 + .../libs/Ace3/AceConfig-3.0/AceConfig-3.0.xml | 8 + .../AceConfigCmd-3.0/AceConfigCmd-3.0.lua | 794 +++++++ .../AceConfigCmd-3.0/AceConfigCmd-3.0.xml | 4 + .../AceConfigDialog-3.0.lua | 1955 +++++++++++++++++ .../AceConfigDialog-3.0.xml | 4 + .../AceConfigRegistry-3.0.lua | 348 +++ .../AceConfigRegistry-3.0.xml | 4 + .../Ace3/AceConsole-3.0/AceConsole-3.0.lua | 250 +++ .../Ace3/AceConsole-3.0/AceConsole-3.0.xml | 4 + .../libs/Ace3/AceDB-3.0/AceDB-3.0.lua | 745 +++++++ .../libs/Ace3/AceDB-3.0/AceDB-3.0.xml | 4 + .../AceDBOptions-3.0/AceDBOptions-3.0.lua | 440 ++++ .../AceDBOptions-3.0/AceDBOptions-3.0.xml | 4 + .../libs/Ace3/AceEvent-3.0/AceEvent-3.0.lua | 126 ++ .../libs/Ace3/AceEvent-3.0/AceEvent-3.0.xml | 4 + .../libs/Ace3/AceGUI-3.0/AceGUI-3.0.lua | 813 +++++++ .../libs/Ace3/AceGUI-3.0/AceGUI-3.0.xml | 28 + .../AceGUIContainer-BlizOptionsGroup.lua | 138 ++ .../widgets/AceGUIContainer-DropDownGroup.lua | 157 ++ .../widgets/AceGUIContainer-Frame.lua | 311 +++ .../widgets/AceGUIContainer-InlineGroup.lua | 103 + .../widgets/AceGUIContainer-ScrollFrame.lua | 204 ++ .../widgets/AceGUIContainer-SimpleGroup.lua | 69 + .../widgets/AceGUIContainer-TabGroup.lua | 350 +++ .../widgets/AceGUIContainer-TreeGroup.lua | 707 ++++++ .../widgets/AceGUIContainer-Window.lua | 331 +++ .../widgets/AceGUIWidget-Button.lua | 109 + .../widgets/AceGUIWidget-CheckBox.lua | 295 +++ .../widgets/AceGUIWidget-ColorPicker.lua | 188 ++ .../widgets/AceGUIWidget-DropDown-Items.lua | 471 ++++ .../widgets/AceGUIWidget-DropDown.lua | 737 +++++++ .../widgets/AceGUIWidget-EditBox.lua | 261 +++ .../widgets/AceGUIWidget-Heading.lua | 78 + .../AceGUI-3.0/widgets/AceGUIWidget-Icon.lua | 144 ++ .../widgets/AceGUIWidget-InteractiveLabel.lua | 101 + .../widgets/AceGUIWidget-Keybinding.lua | 239 ++ .../AceGUI-3.0/widgets/AceGUIWidget-Label.lua | 166 ++ .../widgets/AceGUIWidget-MultiLineEditBox.lua | 368 ++++ .../widgets/AceGUIWidget-Slider.lua | 285 +++ .../libs/Ace3/AceHook-3.0/AceHook-3.0.lua | 511 +++++ .../libs/Ace3/AceHook-3.0/AceHook-3.0.xml | 4 + .../libs/Ace3/AceLocale-3.0/AceLocale-3.0.lua | 137 ++ .../libs/Ace3/AceLocale-3.0/AceLocale-3.0.xml | 4 + .../AceSerializer-3.0/AceSerializer-3.0.lua | 283 +++ .../AceSerializer-3.0/AceSerializer-3.0.xml | 4 + .../libs/Ace3/AceTab-3.0/AceTab-3.0.lua | 452 ++++ .../libs/Ace3/AceTab-3.0/AceTab-3.0.xml | 4 + .../libs/Ace3/AceTimer-3.0/AceTimer-3.0.lua | 276 +++ .../libs/Ace3/AceTimer-3.0/AceTimer-3.0.xml | 4 + .../AlarShared-3.0/libs/Ace3/Bindings.xml | 5 + .../CallbackHandler-1.0.lua | 240 ++ .../CallbackHandler-1.0.xml | 4 + .../libs/AlarShared-3.0/libs/Ace3/LICENSE.txt | 29 + .../libs/Ace3/LibStub/LibStub.lua | 30 + .../AlarShared-3.0/libs/Ace3/changelog.txt | 364 +++ .../libs/AlarShared-3.0/locale.lua | 123 ++ AddOns/GarrisonCommander/localization.lua | 55 + AddOns/Grid/CHANGELOG.txt | 49 +- AddOns/Grid/Core.lua | 10 +- AddOns/Grid/Frame.lua | 127 +- AddOns/Grid/Grid.toc | 11 +- AddOns/Grid/Indicators/Bar.lua | 34 +- AddOns/Grid/Indicators/HealingBar.lua | 28 +- AddOns/Grid/Indicators/Icon.lua | 2 +- AddOns/Grid/Layout.lua | 12 +- AddOns/Grid/Libs/AceDB-3.0/AceDB-3.0.lua | 6 +- .../Libs/LibResInfo-1.0/LibResInfo-1.0.lua | 16 +- AddOns/Grid/Libs/UTF8/UTF8.toc | 14 +- AddOns/Grid/Locales/Locale-de.lua | 20 +- AddOns/Grid/Locales/Locale-fr.lua | 34 +- AddOns/Grid/Locales/Locale-zhCN.lua | 122 +- AddOns/Grid/Roster.lua | 14 +- AddOns/Grid/Status.lua | 27 +- AddOns/Grid/Statuses/Auras.lua | 23 +- AddOns/Grid/Statuses/Group.lua | 25 +- AddOns/Grid/Statuses/Mouseover.lua | 28 +- AddOns/Grid/Statuses/Role.lua | 31 +- .../HandyNotes_DraenorTreasures.lua | 401 ++-- .../HandyNotes_DraenorTreasures.toc | 2 +- AddOns/MasterPlan/GarrisonAPI.lua | 621 ++++++ AddOns/MasterPlan/GarrisonFollowers.lua | 340 +++ AddOns/MasterPlan/GarrisonMissions.lua | 1143 ++++++++++ AddOns/MasterPlan/Libs/Evie.lua | 73 + AddOns/MasterPlan/Locale.lua | 301 +++ AddOns/MasterPlan/MasterPlan.lua | 90 + AddOns/MasterPlan/MasterPlan.toc | 14 + AddOns/OmniCC/OmniCC.toc | 3 +- AddOns/OmniCC/core/cooldown.lua | 14 +- AddOns/OmniCC/main.lua | 54 +- AddOns/OmniCC/settings/groups.lua | 3 +- AddOns/OmniCC/settings/settings.lua | 33 +- AddOns/OmniCC_Config/mainPanel.lua | 1 + AddOns/OmniCC_Config/panels/rules.lua | 7 +- AddOns/OmniCC_Config/widgets/groupEditor.lua | 5 - AddOns/OmniCC_Config/widgets/listEditor.lua | 4 +- AddOns/Parrot/CHANGELOG.txt | 4 + AddOns/Parrot/Data/CombatEvents.lua | 8 +- AddOns/Parrot/Locales/deDE.lua | 2 +- AddOns/Parrot/Parrot.toc | 4 +- .../AceConfigDialog-3.0.lua | 14 +- .../AceConfigRegistry-3.0.lua | 11 +- AddOns/Parrot/libs/AceDB-3.0/AceDB-3.0.lua | 18 +- .../Libs/AceGUI-3.0/AceGUI-3.0.lua | 16 +- .../widgets/AceGUIContainer-TreeGroup.lua | 6 +- .../widgets/AceGUIWidget-Button.lua | 13 +- .../widgets/AceGUIWidget-ColorPicker.lua | 3 +- .../widgets/AceGUIWidget-DropDown.lua | 34 +- .../widgets/AceGUIWidget-EditBox.lua | 7 +- .../widgets/AceGUIWidget-Slider.lua | 6 +- .../prototypes.lua | 2 +- AddOns/Parrot/libs/AceGUI-3.0/AceGUI-3.0.lua | 16 +- .../widgets/AceGUIContainer-TreeGroup.lua | 4 +- .../widgets/AceGUIWidget-Button.lua | 13 +- .../widgets/AceGUIWidget-ColorPicker.lua | 3 +- .../widgets/AceGUIWidget-DropDown.lua | 34 +- .../widgets/AceGUIWidget-EditBox.lua | 7 +- .../widgets/AceGUIWidget-Slider.lua | 6 +- .../Parrot/libs/AceHook-3.0/AceHook-3.0.lua | 13 +- .../Parrot/libs/AceTimer-3.0/AceTimer-3.0.lua | 186 +- .../Localization/localization-deDE.lua | 2 +- .../Localization/localization-enEN.lua | 5 +- .../Localization/localization-esES.lua | 2 +- .../Localization/localization-esMX.lua | 2 +- .../Localization/localization-frFR.lua | 2 +- .../Localization/localization-koKR.lua | 2 +- .../Localization/localization-ptBR.lua | 2 +- .../Localization/localization-ruRU.lua | 2 +- .../Localization/localization-zhCN.lua | 2 +- .../Localization/localization-zhTW.lua | 2 +- AddOns/RaidAchievement/RaidAchievement.lua | 94 +- AddOns/RaidAchievement/RaidAchievement.xml | 25 +- .../RaidAchievement_WoDHeroics.lua | 587 +++++ .../RaidAchievement_WoDHeroics.toc | 12 + .../RaidAchievement_WoDHeroics.xml | 74 + .../RaidAchievement_WoDHeroicsbosses.lua | 93 + AddOns/RaidBuilder/API.lua | 200 +- AddOns/RaidBuilder/BatchApply.lua | 199 ++ AddOns/RaidBuilder/Cache/AppliedCache.lua | 56 +- AddOns/RaidBuilder/Cache/DataCache.lua | 18 - AddOns/RaidBuilder/Cache/Event.lua | 67 +- AddOns/RaidBuilder/Cache/GroupCache.lua | 5 +- AddOns/RaidBuilder/Cache/Member.lua | 31 +- AddOns/RaidBuilder/Cache/MemberCache.lua | 19 +- AddOns/RaidBuilder/Cache/WebEvent.lua | 4 +- AddOns/RaidBuilder/ChangeLog.lua | 130 +- AddOns/RaidBuilder/Data.lua | 124 +- AddOns/RaidBuilder/DataBroker.lua | 82 +- AddOns/RaidBuilder/EnglishRealm.lua | 361 +++ AddOns/RaidBuilder/EventData.lua | 76 +- AddOns/RaidBuilder/Invite.lua | 77 +- .../Libs/AceComm-3.0/ChatThrottleLib.lua | 62 +- .../AceConfigDialog-3.0.lua | 12 +- .../RaidBuilder/Libs/AceDB-3.0/AceDB-3.0.lua | 7 +- .../widgets/AceGUIWidget-ColorPicker.lua | 3 +- .../widgets/AceGUIWidget-DropDown.lua | 7 +- .../Libs/AceHook-3.0/AceHook-3.0.lua | 11 +- .../Libs/AceTimer-3.0/AceTimer-3.0.lua | 186 +- AddOns/RaidBuilder/Libs/Embeds.xml | 9 +- .../Libs/NetEaseGUI-1.0/Embed/Filter.lua | 40 +- .../Libs/NetEaseGUI-1.0/Embed/Menu.lua | 2 +- .../Libs/NetEaseGUI-1.0/Embed/Tab.lua | 9 +- .../Libs/NetEaseGUI-1.0/NetEaseGUI.lua | 176 +- .../Libs/NetEaseGUI-1.0/View/DataGridView.lua | 6 +- .../Libs/NetEaseGUI-1.0/Widget/AlphaFlash.lua | 46 + .../Libs/NetEaseGUI-1.0/Widget/Dropdown.lua | 19 +- .../Libs/NetEaseGUI-1.0/Widget/EditBox.lua | 19 +- .../Libs/NetEaseGUI-1.0/Widget/InputBox.lua | 66 +- .../Libs/NetEaseGUI-1.0/Widget/Panel.lua | 4 +- .../NetEaseGUI-1.0/Widget/QRCodeWidget.lua | 175 +- .../Libs/NetEaseGUI-1.0/Widget/SearchBox.lua | 41 +- .../NetEaseGUI-1.0/Widget/SummaryHtml.lua | 23 +- .../Libs/NetEaseGUI-1.0/Widget/Widget.xml | 8 +- .../NetEaseSocket-2.0/NetEaseSocket-2.0.lua | 48 + .../NetEaseSocket-2.0/NetEaseSocket-2.0.xml | 5 + .../NetEaseSocket-2.0/SocketHandler-2.0.lua | 352 +++ .../NetEaseSocketMiddleware-2.0.lua | 66 + .../NetEaseSocketMiddleware-2.0.xml | 4 + .../NetEaseSocketRepeater-2.0.lua | 84 + .../NetEaseSocketRepeater-2.0.xml | 4 + .../NetEaseTextFilter-1.0.lua | 2 +- AddOns/RaidBuilder/Load.xml | 4 +- AddOns/RaidBuilder/Localization/zhCN.lua | 118 +- AddOns/RaidBuilder/Logic.lua | 306 +-- AddOns/RaidBuilder/Main.lua | 28 +- AddOns/RaidBuilder/Media/Logo.blp | Bin 0 -> 3220 bytes AddOns/RaidBuilder/Media/Mark/0.blp | Bin 0 -> 3220 bytes AddOns/RaidBuilder/Media/Mark/5.blp | Bin 0 -> 5268 bytes AddOns/RaidBuilder/MenuTable.lua | 309 ++- AddOns/RaidBuilder/MicroButton.lua | 115 + AddOns/RaidBuilder/Module/AboutPanel.lua | 25 + AddOns/RaidBuilder/Module/BatchPanel.lua | 329 +++ AddOns/RaidBuilder/Module/BrowsePanel.lua | 185 +- AddOns/RaidBuilder/Module/BrowseParent.lua | 32 + AddOns/RaidBuilder/Module/CreatePanel.lua | 170 +- AddOns/RaidBuilder/Module/CurrentPanel.lua | 6 +- AddOns/RaidBuilder/Module/EventPusher.lua | 62 +- AddOns/RaidBuilder/Module/FavoritePanel.lua | 121 +- AddOns/RaidBuilder/Module/MainPanel.lua | 548 +++-- AddOns/RaidBuilder/Module/MallPanel.lua | 39 +- AddOns/RaidBuilder/Module/Module.xml | 5 +- AddOns/RaidBuilder/Module/OptionPanel.lua | 93 +- AddOns/RaidBuilder/Module/RewardPanel.lua | 8 +- AddOns/RaidBuilder/Module/WaitPanel.lua | 2 +- AddOns/RaidBuilder/Panel/RolePanel.lua | 127 +- AddOns/RaidBuilder/Panel/SharePanel.lua | 10 +- AddOns/RaidBuilder/Profile.lua | 141 +- AddOns/RaidBuilder/RaidBuilder.toc | 2 +- .../RaidBuilder/Widget/MallCategoryItem.lua | 4 +- AddOns/RaidBuilder/Widget/MallItem.lua | 33 +- AddOns/RaidBuilder/Widget/ModelItem.lua | 39 +- AddOns/RaidBuilder/Widget/Widget.xml | 2 - AddOns/RaidBuilder/bindings.xml | 4 +- AddOns/SexyMap/Buttons.lua | 100 +- AddOns/SexyMap/Changelog-SexyMap-v2.4.21.txt | 15 + AddOns/SexyMap/HudMap.lua | 6 + .../AceConfigDialog-3.0.lua | 16 +- .../widgets/AceGUIContainer-TreeGroup.lua | 4 +- .../widgets/AceGUIContainer-TreeGroup.lua | 4 +- AddOns/SexyMap/SexyMap.toc | 4 +- AddOns/SexyMap/localization/ruRU.lua | 8 +- AddOns/SimpleILevel_Alts/CHANGELOG.txt | 3 + .../SimpleILevel_Alts/SimpleILevel_Alts.lua | 54 +- .../SimpleILevel_Alts/SimpleILevel_Alts.toc | 6 +- .../libs/LibQTip-1.0/LibQTip-1.0.lua | 48 +- .../libs/LibQTip-1.0/LibQTip-1.0.toc | 8 +- AddOns/Titan/Titan.toc | 4 +- AddOns/TitanBag/TitanBag.toc | 4 +- AddOns/TitanClock/TitanClock.lua | 7 +- AddOns/TitanClock/TitanClock.toc | 4 +- AddOns/TitanGold/TitanGold.toc | 4 +- AddOns/TitanLocation/TitanLocation.toc | 4 +- AddOns/TitanLootType/TitanLootType.toc | 4 +- AddOns/TitanPerformance/TitanPerformance.toc | 4 +- AddOns/TitanRepair/TitanRepair.toc | 4 +- AddOns/TitanVolume/TitanVolume.lua | 8 +- AddOns/TitanVolume/TitanVolume.toc | 4 +- AddOns/TitanXP/TitanXP.toc | 4 +- AddOns/WIM/ChangeLog.lua | 7 +- AddOns/WIM/Changelog-WIM-3.6.21.txt | 42 + .../CallbackHandler-1.0.lua | 6 +- .../Libs/ChatThrottleLib/ChatThrottleLib.toc | 5 +- .../LibSharedMedia-3.0/LibSharedMedia-3.0.lua | 14 +- AddOns/WIM/Libs/LibStub/LibStub.lua | 4 +- AddOns/WIM/Libs/LibStub/LibStub.toc | 6 +- .../CallbackHandler-1.0.lua | 6 +- .../Libs/LibWho-2.0/libs/LibStub/LibStub.lua | 4 +- .../Libs/LibWho-2.0/libs/LibStub/LibStub.toc | 6 +- AddOns/WIM/Modules/URLHandler.lua | 4 + AddOns/WIM/Skins/Default/skin.toc | 2 +- AddOns/WIM/Sources/ContextMenu.lua | 2 +- AddOns/WIM/Sources/MessageWindows.lua | 4 +- AddOns/WIM/Sources/Options/CoreOptions.lua | 10 +- AddOns/WIM/Sources/WindowHandler.lua | 2 +- AddOns/WIM/WIM.lua | 2 +- AddOns/WIM/WIM.toc | 4 +- .../Changelog-_NPCScan.Overlay-6.0.3.4.txt | 12 + AddOns/_NPCScan.Overlay/Constants.lua | 31 + .../Libs/LibQTip-1.0/LibQTip-1.0.lua | 48 +- .../Libs/LibQTip-1.0/LibQTip-1.0.toc | 6 +- .../_NPCScan.Overlay/Locales/Locale-deDE.lua | 30 +- .../_NPCScan.Overlay/Locales/Locale-enUS.lua | 373 +++- .../_NPCScan.Overlay/Locales/Locale-esES.lua | 8 + .../_NPCScan.Overlay/Locales/Locale-frFR.lua | 8 + .../_NPCScan.Overlay/Locales/Locale-itIT.lua | 8 + .../_NPCScan.Overlay/Locales/Locale-koKR.lua | 1176 +++++----- .../_NPCScan.Overlay/Locales/Locale-ptBR.lua | 8 + .../_NPCScan.Overlay/Locales/Locale-ruRU.lua | 20 +- .../_NPCScan.Overlay/Locales/Locale-zhCN.lua | 8 + .../_NPCScan.Overlay/Locales/Locale-zhTW.lua | 8 + AddOns/_NPCScan.Overlay/Overlay.lua | 10 + AddOns/_NPCScan.Overlay/PathData.lua | 270 +++ AddOns/_NPCScan.Overlay/_NPCScan.Overlay.toc | 6 +- .../_NPCScan/Changelog-_NPCScan-6.0.3.4.txt | 12 + AddOns/_NPCScan/Locales/Locale-deDE.lua | 252 +-- AddOns/_NPCScan/Locales/Locale-koKR.lua | 40 +- AddOns/_NPCScan/Locales/Locale-ruRU.lua | 18 +- AddOns/_NPCScan/Locales/Locale-zhCN.lua | 28 +- AddOns/_NPCScan/TargetButton.lua | 27 + AddOns/_NPCScan/_NPCScan.toc | 4 +- AddOns/idTip/core.lua | 29 +- AddOns/idTip/idTip.toc | 2 +- 517 files changed, 51170 insertions(+), 3666 deletions(-) create mode 100644 AddOns/AdiBags/Changelog-AdiBags-v1.7.12.txt create mode 100644 AddOns/BagSync/Changelog-BagSync-v8.0.txt create mode 100644 AddOns/Castbars/Changelog-Castbars-3.44.txt create mode 100644 AddOns/DBM-Core/Changelog-DBM-Core-6.0.5.txt create mode 100644 AddOns/DBM-MC/DBM-MC.toc create mode 100644 AddOns/DBM-MC/Garr.lua create mode 100644 AddOns/DBM-MC/Geddon.lua create mode 100644 AddOns/DBM-MC/Gehennas.lua create mode 100644 AddOns/DBM-MC/Golemagg.lua create mode 100644 AddOns/DBM-MC/Lucifron.lua create mode 100644 AddOns/DBM-MC/Magmadar.lua create mode 100644 AddOns/DBM-MC/Majordomo.lua create mode 100644 AddOns/DBM-MC/Ragnaros.lua create mode 100644 AddOns/DBM-MC/Shazzrah.lua create mode 100644 AddOns/DBM-MC/Sulfuron.lua create mode 100644 AddOns/DBM-MC/localization.cn.lua create mode 100644 AddOns/DBM-MC/localization.en.lua create mode 100644 AddOns/DBM-MC/localization.tw.lua create mode 100644 AddOns/DBM-Pandaria/Zandalari.lua create mode 100644 AddOns/DBM-Party-WoD/UBRS/UBRSTrash.lua create mode 100644 AddOns/DBM-ProvingGrounds/DBM-ProvingGrounds.toc create mode 100644 AddOns/DBM-ProvingGrounds/PGWhiteTiger.lua create mode 100644 AddOns/DBM-ProvingGrounds/localization.cn.lua create mode 100644 AddOns/DBM-ProvingGrounds/localization.en.lua create mode 100644 AddOns/DBM-ProvingGrounds/localization.tw.lua create mode 100644 AddOns/DBM-Yike/153804.ogg create mode 100644 AddOns/DBM-Yike/160702.ogg create mode 100644 AddOns/DBM-Yike/164974.ogg create mode 100644 AddOns/DBM-Yike/20619.ogg create mode 100644 AddOns/ExtraCD/Changelog-ExtraCD-1.3.2.txt create mode 100644 AddOns/GarrisonCommander/CHANGELOG.txt create mode 100644 AddOns/GarrisonCommander/GarrisonCommander.lua create mode 100644 AddOns/GarrisonCommander/GarrisonCommander.toc create mode 100644 AddOns/GarrisonCommander/GarrisonCommander.xml create mode 100644 AddOns/GarrisonCommander/RelNotes.lua create mode 100644 AddOns/GarrisonCommander/embeds.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/Ace3.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/Ace3.toc create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceAddon-3.0/AceAddon-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceAddon-3.0/AceAddon-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceBucket-3.0/AceBucket-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceBucket-3.0/AceBucket-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceComm-3.0/AceComm-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceComm-3.0/AceComm-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceComm-3.0/ChatThrottleLib.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceConfig-3.0/AceConfig-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceConfig-3.0/AceConfig-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceConsole-3.0/AceConsole-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceConsole-3.0/AceConsole-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceDB-3.0/AceDB-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceDB-3.0/AceDB-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceDBOptions-3.0/AceDBOptions-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceDBOptions-3.0/AceDBOptions-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceEvent-3.0/AceEvent-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceEvent-3.0/AceEvent-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/AceGUI-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/AceGUI-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-SimpleGroup.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-Window.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Button.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Label.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceHook-3.0/AceHook-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceHook-3.0/AceHook-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceLocale-3.0/AceLocale-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceLocale-3.0/AceLocale-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceSerializer-3.0/AceSerializer-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceSerializer-3.0/AceSerializer-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceTab-3.0/AceTab-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceTab-3.0/AceTab-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceTimer-3.0/AceTimer-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/AceTimer-3.0/AceTimer-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/Bindings.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/CallbackHandler-1.0/CallbackHandler-1.0.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/CallbackHandler-1.0/CallbackHandler-1.0.xml create mode 100644 AddOns/GarrisonCommander/libs/Ace3/LICENSE.txt create mode 100644 AddOns/GarrisonCommander/libs/Ace3/LibStub/LibStub.lua create mode 100644 AddOns/GarrisonCommander/libs/Ace3/changelog.txt create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarCore-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarCrayon-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarFrames-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarFrames-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarLoader-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarWidgets-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarWidgets-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarWidgets/AlarCast.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarWidgets/AlarCastButton.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarWidgets/AlarCastHeader.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarWidgets/AlarCastSingleButton.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarWidgets/AlarConfig.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarWidgets/AlarHeader.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarWidgets/AlarInteractiveLabel.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarWidgets/AlarLabel.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarWidgets/AlarMinimapButton.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarWidgets/AlarPanel.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/AlarWidgets/AlarTransparent.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/Buttons.blp create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/core.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/coregui.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/icon.tga create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/lib.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/Ace3.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/Ace3.toc create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceAddon-3.0/AceAddon-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceAddon-3.0/AceAddon-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceBucket-3.0/AceBucket-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceBucket-3.0/AceBucket-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceComm-3.0/AceComm-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceComm-3.0/AceComm-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceComm-3.0/ChatThrottleLib.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceConfig-3.0/AceConfig-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceConfig-3.0/AceConfig-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceConsole-3.0/AceConsole-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceConsole-3.0/AceConsole-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceDB-3.0/AceDB-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceDB-3.0/AceDB-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceDBOptions-3.0/AceDBOptions-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceDBOptions-3.0/AceDBOptions-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceEvent-3.0/AceEvent-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceEvent-3.0/AceEvent-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/AceGUI-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/AceGUI-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-SimpleGroup.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIContainer-Window.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Button.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Label.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceHook-3.0/AceHook-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceHook-3.0/AceHook-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceLocale-3.0/AceLocale-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceLocale-3.0/AceLocale-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceSerializer-3.0/AceSerializer-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceSerializer-3.0/AceSerializer-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceTab-3.0/AceTab-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceTab-3.0/AceTab-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceTimer-3.0/AceTimer-3.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/AceTimer-3.0/AceTimer-3.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/Bindings.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/CallbackHandler-1.0/CallbackHandler-1.0.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/CallbackHandler-1.0/CallbackHandler-1.0.xml create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/LICENSE.txt create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/LibStub/LibStub.lua create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/libs/Ace3/changelog.txt create mode 100644 AddOns/GarrisonCommander/libs/AlarShared-3.0/locale.lua create mode 100644 AddOns/GarrisonCommander/localization.lua create mode 100644 AddOns/MasterPlan/GarrisonAPI.lua create mode 100644 AddOns/MasterPlan/GarrisonFollowers.lua create mode 100644 AddOns/MasterPlan/GarrisonMissions.lua create mode 100644 AddOns/MasterPlan/Libs/Evie.lua create mode 100644 AddOns/MasterPlan/Locale.lua create mode 100644 AddOns/MasterPlan/MasterPlan.lua create mode 100644 AddOns/MasterPlan/MasterPlan.toc create mode 100644 AddOns/RaidAchievement_WoDHeroics/RaidAchievement_WoDHeroics.lua create mode 100644 AddOns/RaidAchievement_WoDHeroics/RaidAchievement_WoDHeroics.toc create mode 100644 AddOns/RaidAchievement_WoDHeroics/RaidAchievement_WoDHeroics.xml create mode 100644 AddOns/RaidAchievement_WoDHeroics/RaidAchievement_WoDHeroicsbosses.lua create mode 100644 AddOns/RaidBuilder/BatchApply.lua create mode 100644 AddOns/RaidBuilder/EnglishRealm.lua create mode 100644 AddOns/RaidBuilder/Libs/NetEaseGUI-1.0/Widget/AlphaFlash.lua create mode 100644 AddOns/RaidBuilder/Libs/NetEaseSocket-2.0/NetEaseSocket-2.0.lua create mode 100644 AddOns/RaidBuilder/Libs/NetEaseSocket-2.0/NetEaseSocket-2.0.xml create mode 100644 AddOns/RaidBuilder/Libs/NetEaseSocket-2.0/SocketHandler-2.0.lua create mode 100644 AddOns/RaidBuilder/Libs/NetEaseSocketMiddleware-2.0/NetEaseSocketMiddleware-2.0.lua create mode 100644 AddOns/RaidBuilder/Libs/NetEaseSocketMiddleware-2.0/NetEaseSocketMiddleware-2.0.xml create mode 100644 AddOns/RaidBuilder/Libs/NetEaseSocketRepeater-2.0/NetEaseSocketRepeater-2.0.lua create mode 100644 AddOns/RaidBuilder/Libs/NetEaseSocketRepeater-2.0/NetEaseSocketRepeater-2.0.xml create mode 100644 AddOns/RaidBuilder/Media/Logo.blp create mode 100644 AddOns/RaidBuilder/Media/Mark/0.blp create mode 100644 AddOns/RaidBuilder/Media/Mark/5.blp create mode 100644 AddOns/RaidBuilder/MicroButton.lua create mode 100644 AddOns/RaidBuilder/Module/AboutPanel.lua create mode 100644 AddOns/RaidBuilder/Module/BatchPanel.lua create mode 100644 AddOns/RaidBuilder/Module/BrowseParent.lua create mode 100644 AddOns/SexyMap/Changelog-SexyMap-v2.4.21.txt create mode 100644 AddOns/WIM/Changelog-WIM-3.6.21.txt create mode 100644 AddOns/_NPCScan.Overlay/Changelog-_NPCScan.Overlay-6.0.3.4.txt create mode 100644 AddOns/_NPCScan/Changelog-_NPCScan-6.0.3.4.txt diff --git a/AddOns/AdiBags/AdiBags.toc b/AddOns/AdiBags/AdiBags.toc index e99477ae1..e7a5afe1f 100644 --- a/AddOns/AdiBags/AdiBags.toc +++ b/AddOns/AdiBags/AdiBags.toc @@ -1,5 +1,5 @@ ## Interface: 60000 -## X-Curse-Packaged-Version: v1.7.10 +## X-Curse-Packaged-Version: v1.7.12 ## X-Curse-Project-Name: AdiBags ## X-Curse-Project-ID: adibags ## X-Curse-Repository-ID: wow/adibags/mainline @@ -7,9 +7,9 @@ ## Title: AdiBags ## Notes: Adirelle's bag addon. ## Author: Adirelle -## Version: v1.7.10 +## Version: v1.7.12 ## SavedVariables: AdiBagsDB -## X-Date: 2014-11-10T13:55:41Z +## X-Date: 2014-11-18T06:42:24Z ## OptionalDeps: LibStub, CallbackHandler-1.0, Ace3, LibBabble-Inventory-3.0, LibSharedMedia-3.0, LibItemUpgradeInfo-1.0, Scrap, BrainDead, !BugGrabber, SyLevel #@alpha@ # ## OptionalDeps: AdiDebug, BugSack, Swatter diff --git a/AddOns/AdiBags/Changelog-AdiBags-v1.7.12.txt b/AddOns/AdiBags/Changelog-AdiBags-v1.7.12.txt new file mode 100644 index 000000000..7d93c7de5 --- /dev/null +++ b/AddOns/AdiBags/Changelog-AdiBags-v1.7.12.txt @@ -0,0 +1,12 @@ +tag v1.7.12 +8c9c9b01224d3ac10403f8c68d18adf80b8010a3 +Adirelle +2014-11-18 07:42:33 +0100 + +Bugfix. + + +-------------------- + +Adirelle: + - Missing comma, whoopsy. diff --git a/AddOns/AdiBags/config/Options.lua b/AddOns/AdiBags/config/Options.lua index ee0383cae..3087ced90 100644 --- a/AddOns/AdiBags/config/Options.lua +++ b/AddOns/AdiBags/config/Options.lua @@ -146,6 +146,7 @@ do set = function(info, value) addon.db.profile[data.dbKey][name] = value if value then module:Enable() else module:Disable() end + self:UpdateFilters() end, }, } @@ -258,7 +259,7 @@ local function GetOptions() name = addonName..' DEV', --@end-debug@]===] --@non-debug@ - name = addonName..' v1.7.10', + name = addonName..' v1.7.12', --@end-non-debug@ type = 'group', handler = addon:GetOptionHandler(addon), @@ -633,9 +634,9 @@ local function GetOptions() }, plugins = {} } - addon.OnModuleCreated = OnModuleCreated + hooksecurefunc(addon, "OnModuleCreated", OnModuleCreated) for name, module in addon:IterateModules() do - addon:OnModuleCreated(module) + OnModuleCreated(addon, module) end UpdateFilterOrder() diff --git a/AddOns/AdiBags/core/Core.lua b/AddOns/AdiBags/core/Core.lua index 7560b2060..0350a4632 100644 --- a/AddOns/AdiBags/core/Core.lua +++ b/AddOns/AdiBags/core/Core.lua @@ -489,7 +489,7 @@ function addon:ShouldStack(slotData) end end elseif conf.others and unstack < 2 then - return true, tostring(self.GetDistinctItemID(slotData.link))..hintSuffix + return true, tostring(slotData.link)..hintSuffix end end diff --git a/AddOns/AdiBags/core/Filters.lua b/AddOns/AdiBags/core/Filters.lua index 8b834858d..0e32c47e1 100644 --- a/AddOns/AdiBags/core/Filters.lua +++ b/AddOns/AdiBags/core/Filters.lua @@ -31,14 +31,6 @@ local filterProto = setmetatable({ }, { __index = addon.moduleProto }) addon.filterProto = filterProto -function filterProto:OnEnable() - addon:UpdateFilters() -end - -function filterProto:OnDisable() - addon:UpdateFilters() -end - function filterProto:GetPriority() return addon.db.profile.filterPriorities[self.filterName] or self.priority or 0 end @@ -68,27 +60,46 @@ local function CompareFilters(a, b) end end -local activeFilters = {} -local allFilters = {} -function addon:UpdateFilters() - wipe(allFilters) - for name, filter in self:IterateModules() do - if filter.isFilter then - tinsert(allFilters, filter) +local GetAllFilters, GetActiveFilters +do + local activeFilters + local allFilters + + function addon:UpdateFilters() + activeFilters, allFilters = nil, nil + self:SendMessage('AdiBags_FiltersChanged') + end + + function GetAllFilters() + if allFilters then + return allFilters end + allFilters = {} + for name, filter in addon:IterateModules() do + if filter.isFilter then + tinsert(allFilters, filter) + end + end + tsort(allFilters, CompareFilters) + return allFilters end - tsort(allFilters, CompareFilters) - wipe(activeFilters) - for i, filter in ipairs(allFilters) do - if filter:IsEnabled() then - tinsert(activeFilters, filter) + + function GetActiveFilters() + if activeFilters then + return activeFilters + end + activeFilters = {} + for i, filter in ipairs(GetAllFilters()) do + if filter:IsEnabled() then + tinsert(activeFilters, filter) + end end + return activeFilters end - self:SendMessage('AdiBags_FiltersChanged') end function addon:IterateFilters() - return ipairs(allFilters) + return ipairs(GetAllFilters()) end function addon:RegisterFilter(name, priority, Filter, ...) @@ -106,13 +117,17 @@ function addon:RegisterFilter(name, priority, Filter, ...) return filter end +function addon:OnModuleCreated(module) + self:UpdateFilters() +end + -------------------------------------------------------------------------------- -- Filtering process -------------------------------------------------------------------------------- local safecall = addon.safecall function addon:Filter(slotData, defaultSection, defaultCategory) - for i, filter in ipairs(activeFilters) do + for i, filter in ipairs(GetActiveFilters()) do local sectionName, category = safecall(filter.Filter, filter, slotData) if sectionName then --[===[@alpha@ diff --git a/AddOns/AdiBags/core/Utility.lua b/AddOns/AdiBags/core/Utility.lua index c63bc66ae..27d5981be 100644 --- a/AddOns/AdiBags/core/Utility.lua +++ b/AddOns/AdiBags/core/Utility.lua @@ -139,40 +139,6 @@ function addon.IsValidItemLink(link) end end --------------------------------------------------------------------------------- --- Get distinct item IDs from item links --------------------------------------------------------------------------------- - -local function __GetDistinctItemID(link) - if not link or not addon.IsValidItemLink(link) then return end - if strmatch(link, "battlepet:") then - return link - else - local itemString, id, enchant, gem1, gem2, gem3, gem4, suffix, reforge = strmatch(link, '(item:(%-?%d+):(%-?%d+):(%-?%d+):(%-?%d+):(%-?%d+):(%-?%d+):(%-?%d+):%-?%d+:%-?%d+:(%-?%d+))') - id = tonumber(id) - local equipSlot = select(9, GetItemInfo(id)) - if equipSlot and equipSlot ~= "" and equipSlot ~= "INVTYPE_BAG" then - -- Rebuild an item link without noise - id = strjoin(':', 'item', id, enchant, gem1, gem2, gem3, gem4, suffix, "0", "0", reforge) - end - return id - end -end - -local distinctIDs = setmetatable({}, {__index = function(t, link) - local result = __GetDistinctItemID(link) - if result then - t[link] = result - return result - else - return link - end -end}) - -function addon.GetDistinctItemID(link) - return link and distinctIDs[link] -end - -------------------------------------------------------------------------------- -- Basic junk test -------------------------------------------------------------------------------- diff --git a/AddOns/AdiBags/modules/ItemLevel.lua b/AddOns/AdiBags/modules/ItemLevel.lua index b47d6dae3..1bfa72886 100644 --- a/AddOns/AdiBags/modules/ItemLevel.lua +++ b/AddOns/AdiBags/modules/ItemLevel.lua @@ -299,11 +299,12 @@ do end local maxLevelRanges = { - [60] = { 66, 92 }, - [70] = { 100, 164 }, - [80] = { 187, 284 }, - [85] = { 333, 416 }, - [90] = { 458, 580 } + [60] = { 66, 92 }, + [70] = { 100, 164 }, + [80] = { 187, 284 }, + [85] = { 333, 416 }, + [90] = { 458, 580 }, + [100] = { 615, 695 }, } local maxLevelColors = {} diff --git a/AddOns/AdiBags/modules/NewItemTracking.lua b/AddOns/AdiBags/modules/NewItemTracking.lua index ebeac876e..73e7aa412 100644 --- a/AddOns/AdiBags/modules/NewItemTracking.lua +++ b/AddOns/AdiBags/modules/NewItemTracking.lua @@ -56,15 +56,12 @@ function mod:OnEnable() self:RegisterMessage('AdiBags_UpdateButton', 'UpdateButton') self:RegisterEvent('BAG_NEW_ITEMS_UPDATED') - - addon.filterProto.OnEnable(self) end function mod:OnDisable() if self.button then self.button:Hide() end - addon.filterProto.OnDisable(self) end -------------------------------------------------------------------------------- diff --git a/AddOns/AdiBags/widgets/ContainerFrame.lua b/AddOns/AdiBags/widgets/ContainerFrame.lua index be3388a4e..1f70d00db 100644 --- a/AddOns/AdiBags/widgets/ContainerFrame.lua +++ b/AddOns/AdiBags/widgets/ContainerFrame.lua @@ -308,11 +308,7 @@ function containerProto:CreateReagentTabButton() self.BagSlotButton:SetChecked(False) end self.Title:SetText(self.isReagentBank and REAGENT_BANK or L["Bank"]) - self:PauseUpdates() - for bag in pairs(previousBags) do - self:UpdateContent(bag) - end - self:ResumeUpdates() + addon:SendMessage('AdiBags_BagSetupChanged') end, function(_, tooltip) if not IsReagentBankUnlocked() then @@ -391,6 +387,7 @@ function containerProto:OnShow() self:RegisterEvent('AUCTION_MULTISELL_UPDATE') self:RegisterEvent('AUCTION_MULTISELL_FAILURE', "ResumeUpdates") self:RegisterMessage('AdiBags_SpellIsTargetingChanged') + self:RegisterMessage('AdiBags_BagSetupChanged') self:ResumeUpdates() containerParentProto.OnShow(self) end @@ -408,7 +405,19 @@ function containerProto:ResumeUpdates() self.paused = false self:RegisterMessage('AdiBags_BagUpdated', 'BagsUpdated') self:Debug('ResumeUpdates') - for bag in pairs(self:GetBagIds()) do + return self:AdiBags_BagSetupChanged() +end + +function containerProto:PauseUpdates() + if self.paused then return end + self:Debug('PauseUpdates') + self:UnregisterMessage('AdiBags_BagUpdated') + self.paused = true +end + +function containerProto:AdiBags_BagSetupChanged() + self:Debug('BagSetupChanged') + for bag in pairs(self.content) do self:UpdateContent(bag) end if self.filtersChanged then @@ -419,13 +428,6 @@ function containerProto:ResumeUpdates() self:LayoutSections(true) end -function containerProto:PauseUpdates() - if self.paused then return end - self:Debug('PauseUpdates') - self:UnregisterMessage('AdiBags_BagUpdated') - self.paused = true -end - function containerProto:AUCTION_MULTISELL_UPDATE(event, current, total) if current == total then self:ResumeUpdates() @@ -554,9 +556,6 @@ end -- Bag content scanning -------------------------------------------------------------------------------- -local GetDistinctItemID = addon.GetDistinctItemID -local IsValidItemLink = addon.IsValidItemLink - function containerProto:UpdateContent(bag) self:Debug('UpdateContent', bag) local added, removed, changed = self.added, self.removed, self.changed @@ -567,7 +566,7 @@ function containerProto:UpdateContent(bag) for slot = 1, newSize do local itemId = GetContainerItemID(bag, slot) local link = GetContainerItemLink(bag, slot) - if not itemId or (link and IsValidItemLink(link)) then + if not itemId or (link and addon.IsValidItemLink(link)) then local slotData = content[slot] if not slotData then slotData = { @@ -589,7 +588,7 @@ function containerProto:UpdateContent(bag) link, count = false, 0 end - if GetDistinctItemID(slotData.link) ~= GetDistinctItemID(link) then + if slotData.link ~= link then removed[slotData.slotId] = slotData.link slotData.count = count slotData.link = link diff --git a/AddOns/AdiBags/widgets/ItemButton.lua b/AddOns/AdiBags/widgets/ItemButton.lua index 971a0ff9a..3eefa323d 100644 --- a/AddOns/AdiBags/widgets/ItemButton.lua +++ b/AddOns/AdiBags/widgets/ItemButton.lua @@ -63,6 +63,7 @@ function buttonProto:OnCreate() if self.NewItemTexture then self.NewItemTexture:Hide() end + self.SplitStack = nil -- Remove the function set up by the template end function buttonProto:OnAcquire(container, bag, slot) @@ -94,6 +95,10 @@ function buttonProto:IsLocked() return select(3, GetContainerItemInfo(self.bag, self.slot)) end +function buttonProto:SplitStack(split) + SplitContainerItem(self.bag, self.slot, split) +end + -------------------------------------------------------------------------------- -- Generic bank button sub-type -------------------------------------------------------------------------------- @@ -356,7 +361,7 @@ end function buttonProto:UpdateBorder(isolatedEvent) local texture, r, g, b, a, x1, x2, y1, y2, blendMode if self.hasItem then - texture, r, g, b, a, x1, x2, y1, y2, blendMode = GetBorder(self.bag, self.slot, self.itemId, addon.db.profile) + texture, r, g, b, a, x1, x2, y1, y2, blendMode = GetBorder(self.bag, self.slot, self.itemLink or self.itemId, addon.db.profile) end if not texture then self.IconQuestTexture:Hide() @@ -374,7 +379,7 @@ function buttonProto:UpdateBorder(isolatedEvent) border:Show() end if self.JunkIcon then - local quality = self.hasItem and select(3, GetItemInfo(self.itemId)) + local quality = self.hasItem and select(3, GetItemInfo(self.itemLink or self.itemId)) self.JunkIcon:SetShown(quality == LE_ITEM_QUALITY_POOR and addon:GetInteractingWindow() == "MERCHANT") end if isolatedEvent then diff --git a/AddOns/AdiBags_Config/AdiBags_Config.toc b/AddOns/AdiBags_Config/AdiBags_Config.toc index 762d4d407..687a07db6 100644 --- a/AddOns/AdiBags_Config/AdiBags_Config.toc +++ b/AddOns/AdiBags_Config/AdiBags_Config.toc @@ -1,5 +1,5 @@ ## Interface: 60000 -## X-Curse-Packaged-Version: v1.7.10 +## X-Curse-Packaged-Version: v1.7.12 ## X-Curse-Project-Name: AdiBags ## X-Curse-Project-ID: adibags ## X-Curse-Repository-ID: wow/adibags/mainline @@ -7,8 +7,8 @@ ## Title: AdiBags Configuration ## Notes: Adirelle's bag addon. ## Author: Adirelle -## Version: v1.7.10 -## X-Date: 2014-11-10T13:55:41Z +## Version: v1.7.12 +## X-Date: 2014-11-18T06:42:24Z ## X-Part-Of: AdiBags ## LoadOnDemand: 1 ## Dependencies: AdiBags diff --git a/AddOns/BagSync/BagSync.toc b/AddOns/BagSync/BagSync.toc index 1cae7663f..6583a09b0 100644 --- a/AddOns/BagSync/BagSync.toc +++ b/AddOns/BagSync/BagSync.toc @@ -2,10 +2,10 @@ ## Title: BagSync ## Notes: BagSync tracks your characters items and displays it within tooltips. ## Author: Xruptor -## Version: 7.9 +## Version: 8.0 ## OptionalDeps: tekDebug ## SavedVariables: BagSyncDB, BagSyncOpt, BagSyncGUILD_DB, BagSyncTOKEN_DB, BagSyncCRAFT_DB, BagSyncBLACKLIST_DB -## X-Curse-Packaged-Version: v7.9 +## X-Curse-Packaged-Version: v8.0 ## X-Curse-Project-Name: BagSync ## X-Curse-Project-ID: bagsync ## X-Curse-Repository-ID: wow/bagsync/mainline diff --git a/AddOns/BagSync/BagSync_Search.lua b/AddOns/BagSync/BagSync_Search.lua index 2e016eeb5..cc94e3792 100644 --- a/AddOns/BagSync/BagSync_Search.lua +++ b/AddOns/BagSync/BagSync_Search.lua @@ -187,6 +187,7 @@ local function DoSearch() ["void"] = 0, ["auction"] = 0, ["guild"] = 0, + ["reagentbank"] = 0, } if string.len(searchStr) > 1 and string.find(searchStr, "@") and allowList[string.sub(searchStr, 2)] ~= nil then playerSearch = true end diff --git a/AddOns/BagSync/Changelog-BagSync-v8.0.txt b/AddOns/BagSync/Changelog-BagSync-v8.0.txt new file mode 100644 index 000000000..c962a98ee --- /dev/null +++ b/AddOns/BagSync/Changelog-BagSync-v8.0.txt @@ -0,0 +1,12 @@ +tag v8.0 +e0edf927dbdcdb4c0ca95c876db80a8804ceb234 +Xruptor +2014-11-20 08:08:06 -0600 + +v8.0 + + +-------------------- + +Xruptor: + - -Added the Reagent Bank to the search routine. WHOOPS! -Added some more localizations for deDE and ptBR diff --git a/AddOns/BagSync/localization/localization.lua b/AddOns/BagSync/localization/localization.lua index 8a48d4b2b..a82384fe5 100644 --- a/AddOns/BagSync/localization/localization.lua +++ b/AddOns/BagSync/localization/localization.lua @@ -236,6 +236,7 @@ BAGSYNC_L = GetLocale() == "zhCN" and { ["Equipped: %d"] = "Angelegt: %d", ["Guild: %d"] = "Gilde: %d", ["Mailbox: %d"] = "Post: %d", + ["ReagentBank: %d"] = "Materiallager: %d", ["Search"] = "Suche", ["Total:"] = "Gesamt:", ["Tokens"] = "Abzeichen", @@ -266,6 +267,9 @@ BAGSYNC_L = GetLocale() == "zhCN" and { ["Equipped: %d"] = "Equipado: %d", ["Guild: %d"] = "Guilda: %d", ["Mailbox: %d"] = "Correio: %d", + ["Void: %d"] = "Cofre Etéreo: %d", + ["ReagentBank: %d"] = "Banco de Reagentes: %d", + ["AH: %d"] = "Casa de Leilão: %d", ["Search"] = "Pesquisar", ["Total:"] = "Total", ["Tokens"] = "Fichas", diff --git a/AddOns/Castbars/Castbars.lua b/AddOns/Castbars/Castbars.lua index 084fbead8..fe9f5b67f 100644 --- a/AddOns/Castbars/Castbars.lua +++ b/AddOns/Castbars/Castbars.lua @@ -1346,7 +1346,6 @@ function Castbars:OnInitialize() -- Register additional events on CastingBarFrame CastingBarFrame:RegisterEvent("UNIT_SPELLCAST_SENT"); CastingBarFrame:RegisterEvent("ACTIONBAR_UPDATE_COOLDOWN"); - CastingBarFrame:RegisterEvent("UPDATE_TRADESKILL_RECAST"); -- Setup table with all frames self.frames = {CastingBarFrame, PetCastingBarFrame, TargetCastingBarFrame, FocusCastingBarFrame, MirrorTimer1, MirrorTimer2, MirrorTimer3}; @@ -1408,24 +1407,16 @@ function Castbars:OnInitialize() end end - -- Hook DoTradeSkill - local orgDoTradeSkill = DoTradeSkill; - DoTradeSkill = function(index, num, ...) - orgDoTradeSkill(index, num, ...); - CastingBarFrame.mergingTradeSkill = true; - CastingBarFrame.countCurrent = 0; - CastingBarFrame.countTotal = tonumber(num) or 1; - end - self.CastingBarFrame_OnEvent = function(frame, event, ...) if (self.ConfigMode) then return end frame.Show = nil; -- Protect against addons that override the Show method if (event == "UNIT_SPELLCAST_SENT") then - local unit, _, _, targetName, id = ...; + local unit, spellName, _, targetName, id = ...; if (unit == "player") then frame.sentTime = GetTime(); frame.sentTargetName = targetName; frame.sentId = id; + frame.sentSpellName = spellName; end return; elseif (event == "ACTIONBAR_UPDATE_COOLDOWN") then @@ -1462,11 +1453,6 @@ function Castbars:OnInitialize() frame.configName = UnitIsPossessed("pet") and "CastingBarFrame" or "PetCastingBarFrame"; self:FrameLayoutRestore(frame); return; - elseif (event == "UPDATE_TRADESKILL_RECAST") then - if (frame.casting) then - frame.mergingTradeSkill = nil; - end - return; end CastingBarFrame_OnEvent(frame, event, ...); if ((event == "UNIT_SPELLCAST_START") or (event == "UNIT_SPELLCAST_CHANNEL_START")) then @@ -1475,7 +1461,11 @@ function Castbars:OnInitialize() if (self.db.profile.CastingBarFrame.Blacklist[spellName] or self.db.profile.CastingBarFrame.Blacklist[spellId]) then frame:Hide() end if (unit == "player") then frame.spellInSpellBook = self:IsSpellBookSpell(spellId); - frame.spellTargetName = id == frame.sentId and frame.sentTargetName or nil; + if (id == frame.sentId or (event == "UNIT_SPELLCAST_CHANNEL_START") and (spellName == frame.sentSpellName)) then + frame.spellTargetName = frame.sentTargetName; + else + frame.spellTargetName = nil; + end frame.spellTarget = self:NameToUnitID(frame.spellTargetName); frame.spellName = spellName; frame.spellInitialDelay = frame.sentTime and GetTime() - frame.sentTime; @@ -1487,6 +1477,12 @@ function Castbars:OnInitialize() if (frame.casting) then frame.startTime = GetTime() - (frame.value or 0); frame.delayTime = nil; + local repeatCount = GetTradeskillRepeatCount(); + if (not frame.mergingTradeSkill and repeatCount > 1) then + frame.mergingTradeSkill = true; + frame.countCurrent = 0; + frame.countTotal = repeatCount; + end if (frame.mergingTradeSkill) then frame.value = frame.value + frame.maxValue * frame.countCurrent; frame.maxValue = frame.maxValue * frame.countTotal; diff --git a/AddOns/Castbars/Castbars.toc b/AddOns/Castbars/Castbars.toc index 1eca20f47..b308597d8 100644 --- a/AddOns/Castbars/Castbars.toc +++ b/AddOns/Castbars/Castbars.toc @@ -5,7 +5,7 @@ ## OptionalDeps: Ace3, LibSharedMedia-3.0, AceGUI-3.0-SharedMediaWidgets, LibDualSpec-1.0 ## SavedVariables: CastbarsDB ## X-Category: Combat -## X-Curse-Packaged-Version: 3.42 +## X-Curse-Packaged-Version: 3.44 ## X-Curse-Project-Name: Castbars ## X-Curse-Project-ID: castbars ## X-Curse-Repository-ID: wow/castbars/mainline diff --git a/AddOns/Castbars/Changelog-Castbars-3.44.txt b/AddOns/Castbars/Changelog-Castbars-3.44.txt new file mode 100644 index 000000000..9fdb0791a --- /dev/null +++ b/AddOns/Castbars/Changelog-Castbars-3.44.txt @@ -0,0 +1,19 @@ +------------------------------------------------------------------------ +r224 | xbeeps | 2014-11-30 21:39:27 +0000 (Sun, 30 Nov 2014) | 1 line +Changed paths: + A /tags/3.44 (from /trunk:223) + +Tagging as 3.44 +------------------------------------------------------------------------ +r223 | xbeeps | 2014-11-30 21:38:48 +0000 (Sun, 30 Nov 2014) | 1 line +Changed paths: + M /trunk/Castbars.lua + +Fix target of channeled spells not showing +------------------------------------------------------------------------ +r221 | xbeeps | 2014-11-24 19:59:15 +0000 (Mon, 24 Nov 2014) | 1 line +Changed paths: + M /trunk/Castbars.lua + +Rework the trade skill merge to avoid hooking DoTradeSkill which appears to be protected under certain circumstances. Also avoid the UPDATE_TRADESKILL_RECAST event which isn't needed anymore. +------------------------------------------------------------------------ diff --git a/AddOns/Castbars/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua b/AddOns/Castbars/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua index 8dbd1341e..820aea8c8 100644 --- a/AddOns/Castbars/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua +++ b/AddOns/Castbars/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua @@ -1,10 +1,10 @@ --- AceConfigDialog-3.0 generates AceGUI-3.0 based windows based on option tables. -- @class file -- @name AceConfigDialog-3.0 --- @release $Id: AceConfigDialog-3.0.lua 1113 2014-09-11 20:18:16Z nevcairiel $ +-- @release $Id: AceConfigDialog-3.0.lua 1126 2014-11-10 06:38:01Z nevcairiel $ local LibStub = LibStub -local MAJOR, MINOR = "AceConfigDialog-3.0", 59 +local MAJOR, MINOR = "AceConfigDialog-3.0", 60 local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR) if not AceConfigDialog then return end @@ -542,16 +542,16 @@ local function OptionOnMouseOver(widget, event) if descStyle and descStyle ~= "tooltip" then return end - GameTooltip:SetText(name, 1, .82, 0, 1) + GameTooltip:SetText(name, 1, .82, 0, true) if opt.type == "multiselect" then - GameTooltip:AddLine(user.text,0.5, 0.5, 0.8, 1) + GameTooltip:AddLine(user.text, 0.5, 0.5, 0.8, true) end if type(desc) == "string" then - GameTooltip:AddLine(desc, 1, 1, 1, 1) + GameTooltip:AddLine(desc, 1, 1, 1, true) end if type(usage) == "string" then - GameTooltip:AddLine("Usage: "..usage, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, 1) + GameTooltip:AddLine("Usage: "..usage, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, true) end GameTooltip:Show() @@ -1448,10 +1448,10 @@ local function TreeOnButtonEnter(widget, event, uniquevalue, button) GameTooltip:SetPoint("LEFT",button,"RIGHT") end - GameTooltip:SetText(name, 1, .82, 0, 1) + GameTooltip:SetText(name, 1, .82, 0, true) if type(desc) == "string" then - GameTooltip:AddLine(desc, 1, 1, 1, 1) + GameTooltip:AddLine(desc, 1, 1, 1, true) end GameTooltip:Show() diff --git a/AddOns/Castbars/Libs/AceDB-3.0/AceDB-3.0.lua b/AddOns/Castbars/Libs/AceDB-3.0/AceDB-3.0.lua index bb227ba75..a17c6f1c3 100644 --- a/AddOns/Castbars/Libs/AceDB-3.0/AceDB-3.0.lua +++ b/AddOns/Castbars/Libs/AceDB-3.0/AceDB-3.0.lua @@ -39,8 +39,8 @@ -- end -- @class file -- @name AceDB-3.0.lua --- @release $Id: AceDB-3.0.lua 1123 2014-10-14 19:48:04Z nevcairiel $ -local ACEDB_MAJOR, ACEDB_MINOR = "AceDB-3.0", 25 +-- @release $Id: AceDB-3.0.lua 1124 2014-10-27 21:00:07Z funkydude $ +local ACEDB_MAJOR, ACEDB_MINOR = "AceDB-3.0", 26 local AceDB, oldminor = LibStub:NewLibrary(ACEDB_MAJOR, ACEDB_MINOR) if not AceDB then return end -- No upgrade needed @@ -263,7 +263,7 @@ local factionrealmKey = factionKey .. " - " .. realmKey local localeKey = GetLocale():lower() local regionTable = { "US", "KR", "EU", "TW", "CN" } -local regionKey = _G["GetCurrentRegion"] and regionTable[GetCurrentRegion()] or string.sub(GetCVar("realmList"), 1, 2):upper() +local regionKey = regionTable[GetCurrentRegion()] local factionrealmregionKey = factionrealmKey .. " - " .. regionKey -- Actual database initialization function diff --git a/AddOns/Castbars/Libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua b/AddOns/Castbars/Libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua index 6fbe066e4..589201d71 100644 --- a/AddOns/Castbars/Libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua +++ b/AddOns/Castbars/Libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua @@ -2,7 +2,7 @@ TreeGroup Container Container that uses a tree control to switch between groups. -------------------------------------------------------------------------------]] -local Type, Version = "TreeGroup", 36 +local Type, Version = "TreeGroup", 37 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -212,7 +212,7 @@ local function Button_OnEnter(frame) if self.enabletooltips then GameTooltip:SetOwner(frame, "ANCHOR_NONE") GameTooltip:SetPoint("LEFT",frame,"RIGHT") - GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, 1) + GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, true) GameTooltip:Show() end diff --git a/AddOns/Castbars/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua b/AddOns/Castbars/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua index 6fbe066e4..589201d71 100644 --- a/AddOns/Castbars/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua +++ b/AddOns/Castbars/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua @@ -2,7 +2,7 @@ TreeGroup Container Container that uses a tree control to switch between groups. -------------------------------------------------------------------------------]] -local Type, Version = "TreeGroup", 36 +local Type, Version = "TreeGroup", 37 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -212,7 +212,7 @@ local function Button_OnEnter(frame) if self.enabletooltips then GameTooltip:SetOwner(frame, "ANCHOR_NONE") GameTooltip:SetPoint("LEFT",frame,"RIGHT") - GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, 1) + GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, true) GameTooltip:Show() end diff --git a/AddOns/DBM-BlackrockFoundry/DBM-BlackrockFoundry.toc b/AddOns/DBM-BlackrockFoundry/DBM-BlackrockFoundry.toc index cf9e993aa..c0bda2ddd 100644 --- a/AddOns/DBM-BlackrockFoundry/DBM-BlackrockFoundry.toc +++ b/AddOns/DBM-BlackrockFoundry/DBM-BlackrockFoundry.toc @@ -16,7 +16,7 @@ ## X-DBM-Mod-Has-Mythic : 1 ## X-DBM-Mod-Sort: 101 ## X-DBM-Mod-MapID: 1205 -## X-Curse-Packaged-Version: 6.0.4-31-g65bcc60 +## X-Curse-Packaged-Version: 6.0.5 ## X-Curse-Project-Name: Deadly Boss Mods ## X-Curse-Project-ID: deadly-boss-mods ## X-Curse-Repository-ID: wow/deadly-boss-mods/mainline diff --git a/AddOns/DBM-Brawlers/DBM-Brawlers.toc b/AddOns/DBM-Brawlers/DBM-Brawlers.toc index 2d628e012..021f1cb61 100644 --- a/AddOns/DBM-Brawlers/DBM-Brawlers.toc +++ b/AddOns/DBM-Brawlers/DBM-Brawlers.toc @@ -26,7 +26,7 @@ ## X-DBM-Mod-Name-ruRU: Бойцовская гильдия ## X-DBM-Mod-Sort: 135 ## X-DBM-Mod-MapID: 369,1043 -## X-Curse-Packaged-Version: 6.0.4-31-g65bcc60 +## X-Curse-Packaged-Version: 6.0.5 ## X-Curse-Project-Name: Deadly Boss Mods ## X-Curse-Project-ID: deadly-boss-mods ## X-Curse-Repository-ID: wow/deadly-boss-mods/mainline diff --git a/AddOns/DBM-Core/Changelog-DBM-Core-6.0.5.txt b/AddOns/DBM-Core/Changelog-DBM-Core-6.0.5.txt new file mode 100644 index 000000000..eed652019 --- /dev/null +++ b/AddOns/DBM-Core/Changelog-DBM-Core-6.0.5.txt @@ -0,0 +1,68 @@ +tag 6.0.5 +9709a21a08d13baffcae2b4c4baab1b6c822aaeb +subversion +2014-11-22 21:47:10 +0100 + +Tagging as 6.0.5 + + +-------------------- + +subversion: + - increment version number to 6.0.5 + - Omega via svn r11873: CN update + - Omega via svn r11872: Advertise molten core mod if it's not installed (only once). + - Omega via svn r11871: add a simple IsEvent check + - Omega via svn r11870: Fix combat rez timer showing in Molten core, (well, all event5 and event40 dungeons actually). + - nbluewiz via svn r11869: # koKR update. + - Omega via svn r11868: fix lua error + - ultrashining via svn r11867: zhTW update + - Omega via svn r11866: disable time to feed timer, it's quite wrong now. need more data to enable a new better one. + - Omega via svn r11865: First flame slash is 5 seconds, not 8 + - Omega via svn r11864: Health based, no timer + - Omega via svn r11863: more toc. not sure this will 100% work though + - Omega via svn r11862: TOC Fix + - Omega via svn r11861: First pass at dungeon fixes, I'm not going to list all of them in change log + - Omega via svn r11860: use DBM:GetNumRealGroupMembers() for more accuracy in icons and rangeframe. Make sure to set map to current zone in the very last function in dbm that still uses mapIDs + - ebmor via svn r11859: deDE update + - Omega via svn r11858: Arrow no longer relies on map so no reason for this restriction + - Omega via svn r11857: Text tweaks + - Omega via svn r11856: I'm confident there is no loadmod bug, and it's all user error, this last debug will pretty much prove it in all cases + - Omega via svn r11855: fix some screwups + - Omega via svn r11854: Add fire ring challenge + - nbluewiz via svn r11853: # koKR update. + - ultrashining via svn r11852: zhTW update + - Omega via svn r11851: More Frame names + - TOM_RUS via svn r11850: Add name to arrow frame + - tandanu via svn r11849: and now we need some empty commits as I should have done the last commit in three different commits and not in one... + - tandanu via svn r11848: svn server had a disk failure and crashed. that somehow corrupted the metadata for the last few commits (thanks, svn!) + the simplest way to fix this seemed to be to apply the diffs for these commits by hand and remove the bad revision from the server + + here are the old commit messages: + Log: + Improve note, since I actually got not one but "two" bug reports about getting "taunt" warnings when not tank spec, when disabling this filter. Um that's the point?. An on by default filter and on by default taunt warnings allows tanks that very frequently switch between dps/tank to not have to worry about if they remembered to enable/disable the taunt alerts. They "just work". don't complain if you disable the filter and keep getting told to taunt the boss. :P + + Log: + # clean. + + Log: + Fix missing icon + - Omega via svn r11849: Improve note, since I actually got not one but "two" bug reports about getting "taunt" warnings when not tank spec, when disabling this filter. Um that's the point?. An on by default filter and on by default taunt warnings allows tanks that very frequently switch between dps/tank to not have to worry about if they remembered to enable/disable the taunt alerts. They "just work". don't complain if you disable the filter and keep getting told to taunt the boss. :P + - nbluewiz via svn r11848: # clean. + - Omega via svn r11847: Fix missing icon + - nbluewiz via svn r11846: # Fix non-working debuglevel cmd + - nbluewiz via svn r11845: # Better code. + - Omega via svn r11844: Missed this. transcriptor running always override debug level + - Omega via svn r11843: make 3 diff levels of debug. with 1 default. 2 being extra out of combat events, 3 being extra in combat events. + - nbluewiz via svn r11842: # Remove unneeded code from version check. # Added debug code. + - nbluewiz via svn r11841: # Fix strange lua error. (should never happen) + - Omega via svn r11840: Fix difficulty always returning "normal" when getting syncs that don't have difficultyID + - ebmor via svn r11839: deDE update + - ultrashining via svn r11838: zhTW update + - Omega via svn r11837: make sure a person is never added to caustic table more than once. + - Omega via svn r11836: Fix quake delay code Add timer for first whirlwind + - Omega via svn r11835: no idea how this happened, but DontShowPT should NOT be enabled by default. force reset it + - Omega via svn r11834: Fix another highmaul error + - Omega via svn r11833: Fix error + - TOM_RUS via svn r11832: ruRU update + - tandanu via svn r11831: increment alpha version number diff --git a/AddOns/DBM-Core/DBM-Core.lua b/AddOns/DBM-Core/DBM-Core.lua index 50df375f1..7f2440820 100644 --- a/AddOns/DBM-Core/DBM-Core.lua +++ b/AddOns/DBM-Core/DBM-Core.lua @@ -45,21 +45,14 @@ -- * Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). (A link to http://www.deadlybossmods.com is sufficient) -- * Noncommercial. You may not use this work for commercial purposes. -- * Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one. --- - ---情人节 = 214 ---七夕 = 77 ---猜疑 = 妒忌 = 隐瞒 = true, ---承诺 = true; ---光棍节 = ((情人节 - 七夕)<<猜疑<<妒忌<<隐瞒) + ((承诺<<承诺<<承诺<<承诺<<承诺) - 承诺) ------------------------------- -- Globals/Default Options -- ------------------------------- DBM = { - Revision = tonumber(("$Revision: 11855 $"):sub(12, -3)), - DisplayVersion = "6.0.5 VE", -- the string that is shown as version - ReleaseRevision = 11829 -- the revision of the latest stable version that is available + Revision = tonumber(("$Revision: 11888 $"):sub(12, -3)), + DisplayVersion = "6.0.6 VE", -- the string that is shown as version + ReleaseRevision = 11873 -- the revision of the latest stable version that is available } -- Legacy crap; that stupid "Version" field was never a good idea. @@ -198,6 +191,7 @@ DBM.DefaultOptions = { SettingsMessageShown = false, ForumsMessageShown = false, PGMessageShown = false, + MCMessageShown = false, AlwaysShowSpeedKillTimer = true, CRT_Enabled = false, -- HelpMessageShown = false, @@ -1976,6 +1970,7 @@ do raidUIds[v.id] = nil raidGuids[v.guid] = nil raid[i] = nil + removeEntry(newerVersionPerson, i) fireEvent("raidLeave", i) else v.updated = nil @@ -2038,6 +2033,7 @@ do raidUIds[v.id] = nil raidGuids[v.guid] = nil raid[i] = nil + removeEntry(newerVersionPerson, i) fireEvent("partyLeave", i) else v.updated = nil @@ -2059,6 +2055,7 @@ do enableIcons = true fireEvent("raidLeave", playerName) twipe(raid) + twipe(newerVersionPerson) -- restore playerinfo into raid table on raidleave. (for solo raid) raid[playerName] = {} raid[playerName].name = playerName @@ -2633,6 +2630,9 @@ do if not DBM.Options.PGMessageShown and LastInstanceMapID == 1148 and not GetAddOnInfo("DBM-ProvingGrounds") then DBM.Options.PGMessageShown = true DBM:AddMsg(DBM_CORE_PROVINGGROUNDS_AD) + elseif not DBM.Options.MCMessageShown and LastInstanceMapID == 409 and not GetAddOnInfo("DBM-MC") then + DBM.Options.MCMessageShown = true + DBM:AddMsg(DBM_CORE_MOLTENCORE_AD) end end --Faster and more accurate loading for instances, but useless outside of them @@ -2643,11 +2643,16 @@ do end function DBM:LoadModsOnDemand(checkTable, checkValue) + DBM:Debug("LoadModsOnDemand fired") for i, v in ipairs(DBM.AddOns) do local modTable = v[checkTable] local enabled = GetAddOnEnableState(playerName, v.modId) - if enabled ~= 0 and not IsAddOnLoaded(v.modId) and modTable and checkEntry(modTable, checkValue) then - self:LoadMod(v) + if not IsAddOnLoaded(v.modId) and modTable and checkEntry(modTable, checkValue) then + if enabled ~= 0 then + self:LoadMod(v) + else + DBM:Debug("Not loading "..v.name.." because it is not enabled") + end end end DBM:ScenarioCheck()--Do not filter. Because ScenarioCheck function includes filter. @@ -2691,8 +2696,9 @@ function DBM:LoadMod(mod, force) end return end + DBM:Debug("LoadAddOn should have fired for "..mod.name) local loaded, reason = LoadAddOn(mod.modId) - DBM:Debug("LoadMod should have fired LoadAddOn for "..mod.name) + DBM:Debug("LoadAddOn should have succeeded for "..mod.name, 2) if not loaded then if reason then self:AddMsg(DBM_CORE_LOAD_MOD_ERROR:format(tostring(mod.name), tostring(_G["ADDON_"..reason or ""]))) @@ -4144,7 +4150,7 @@ function DBM:StartCombat(mod, delay, event, synced, syncedStartHp) speedTimer:Start() end end - if DBM.Options.CRT_Enabled and difficultyIndex >= 14 then--14-17 difficulties, all of the difficulty sizes of WoD. + if DBM.Options.CRT_Enabled and difficultyIndex >= 14 and difficultyIndex < 18 then--14-17 difficulties, all of the difficulty sizes of WoD. local time = 90/LastGroupSize time = time * 60 loopCRTimer(time, mod) @@ -4866,6 +4872,7 @@ do local function getNumRealAlivePlayers() local alive = 0 + SetMapToCurrentZone() local currentMapId = GetCurrentMapAreaID() local currentMapName = GetMapNameByID(currentMapId) if IsInRaid() then @@ -5436,6 +5443,14 @@ function bossModPrototype:IsMythic() return false end +function bossModPrototype:IsEvent() + local diff = DBM:GetCurrentInstanceDifficulty() + if diff == "event5" or diff == "event20" or diff == "event40" then + return true + end + return false +end + function bossModPrototype:IsTrivial(level) if UnitLevel("player") >= level then return true @@ -7882,7 +7897,7 @@ function bossModPrototype:SetIcon(target, icon, timer) self:UnscheduleMethod("SetIcon", target) icon = icon and icon >= 0 and icon <= 8 and icon or 8 local uId = DBM:GetRaidUnitId(target) - if uId and UnitIsUnit(uId, "player") and not IsInGroup() then return end--Solo raid, no reason to put icon on yourself. + if uId and UnitIsUnit(uId, "player") and DBM:GetNumRealGroupMembers() < 2 then return end--Solo raid, no reason to put icon on yourself. if uId or UnitExists(target) then--target accepts uid, unitname both. uId = uId or target --save previous icon into a table. @@ -8401,4 +8416,4 @@ do end end ---Sound Driver by Mini_Dragon (Brilla@金色平原) \ No newline at end of file +--Sound Driver by Mini_Dragon (Brilla@金色平原) diff --git a/AddOns/DBM-Core/DBM-Core.toc b/AddOns/DBM-Core/DBM-Core.toc index 1b1ba24aa..f6be8f79b 100644 --- a/AddOns/DBM-Core/DBM-Core.toc +++ b/AddOns/DBM-Core/DBM-Core.toc @@ -10,18 +10,20 @@ ## Title-frFR:|cffffd200Deadly Boss Mods|r |cff69ccf0Noyau|r ## Notes: Deadly Boss Mods ## Dependencies: DBM-StatusBarTimers -## OptionalDependencies: LibSharedMedia-3.0, LibChatAnims +## OptionalDependencies: LibStub, CallbackHandler-1.0, LibSharedMedia-3.0, LibChatAnims ## SavedVariablesPerCharacter: DBM_SavedOptions, DBT_SavedOptions ## LoadOnDemand: 0 ## DefaultState: enabled ## Author: Tandanu and Nitram ## X-Website: http://www.deadlybossmods.com +#@no-lib-strip@ embeds.xml Libs\LibStub\LibStub.lua Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml Libs\LibChatAnims\LibChatAnims.xml Libs\LibSharedMedia-3.0\lib.xml +#@end-no-lib-strip@ localization.en.lua localization.de.lua localization.cn.lua diff --git a/AddOns/DBM-Core/DBM-HudMap.lua b/AddOns/DBM-Core/DBM-HudMap.lua index 35c80a775..e4a94c338 100644 --- a/AddOns/DBM-Core/DBM-HudMap.lua +++ b/AddOns/DBM-Core/DBM-HudMap.lua @@ -1252,7 +1252,7 @@ function mod:UpdateZoneData() end -- Do we need to clear zoneScale if we don't have a map? - if not m then return end + if type(m) ~= "number" or m < 0 or type(l) ~= "number" then return end local _, _, w, h = Astrolabe:GetMapInfo(m, l or 0) --return system, systemParent, mapData.width, mapData.height, mapData.xOffset, mapData.yOffset=GetMapInfo( mapID, mapFloor ); if(w and h) then diff --git a/AddOns/DBM-Core/DBM-RangeCheck.lua b/AddOns/DBM-Core/DBM-RangeCheck.lua index 54dba3a22..3ead9aa65 100644 --- a/AddOns/DBM-Core/DBM-RangeCheck.lua +++ b/AddOns/DBM-Core/DBM-RangeCheck.lua @@ -623,7 +623,7 @@ end -- Methods -- --------------- function rangeCheck:Show(range, filter, forceshow, redCircleNumPlayers) - if (not IsInGroup() or DBM.Options.DontShowRangeFrame) and not forceshow then return end + if (DBM:GetNumRealGroupMembers() < 2 or DBM.Options.DontShowRangeFrame) and not forceshow then return end if type(range) == "function" then -- the first argument is optional return self:Show(nil, range) end diff --git a/AddOns/DBM-Core/localization.cn.lua b/AddOns/DBM-Core/localization.cn.lua index bb0aed0c4..8142a9bde 100644 --- a/AddOns/DBM-Core/localization.cn.lua +++ b/AddOns/DBM-Core/localization.cn.lua @@ -2,7 +2,7 @@ -- Diablohu(diablohudream@gmail.com) -- yleaf(yaroot@gmail.com) -- Mini_Dragon(projecteurs@gmail.com) --- Last update: Oct 19, 2014@11805 +-- Last update: Nov 22, 2014@11872 if GetLocale() ~= "zhCN" then return end @@ -21,7 +21,7 @@ DBM_CORE_LOAD_GUI_COMBAT = "DBM无法在战斗中初始化图形界面。请 DBM_CORE_LOAD_SKIN_COMBAT = "DBM无法在战斗中更换皮肤。请先在非战斗状态更换好皮肤,并重载界面。" DBM_CORE_BAD_LOAD = "DBM检测到由于你在战斗过程中载入模块,有些计时器可能会错误。请在离开战斗后马上重载界面。" -DBM_CORE_BLIZZ_BUGS = "6.0中的暴雪的插件bug:\n1. 如果你开启音效,你的插件可能会在战斗时丢失声音,因为插件的优先权被下降了而声音通道有限。请在您的“主菜单-系统-声音”菜单中,将“声道”选项调为“中(32)”或“高(64)”。\n2. 插件为每个角色单独保存设置,如果名字中有特殊字符,可能会导致错误。" +DBM_CORE_BLIZZ_BUGS = "6.0中的暴雪的插件bug:\n1. 如果你开启音效,你的插件可能会在战斗时丢失声音,因为插件的优先权被下降了而声音通道有限。DBM已经强制将声音通道数设置为64。在这种情况下还丢失报警声音,你可以考虑关闭游戏音效。" DBM_CORE_DYNAMIC_DIFFICULTY_CLUMP = "由于玩家数量不足,DBM 无法开启动态距离检测。" DBM_CORE_DYNAMIC_ADD_COUNT = "由于玩家数量不足,DBM 无法开启倒计时。" @@ -33,6 +33,8 @@ DBM_CORE_BIGWIGS_ICON_CONFLICT = "DBM检测到你同时开启了Bigwigs,请关 DBM_CORE_PROVINGGROUNDS_AD = "6.0 版本的 DBM-ProvingGrounds (白虎寺挑战模块) 已经上线了. 旧的模块 DBM-ProvingGrounds-MoP 已经被禁用. 你可以删除旧版本并且在 deadlybossmods.com 或 Curse 上找到新版本。本消息只显示一次。" +DBM_CORE_MOLTENCORE_AD = "DBM-MC (熔火之心模块) 已经为100级40人随机模式适配。你可以在 deadlybossmods.com 上找到新版本。本消息只显示一次。" + DBM_CORE_COMBAT_STARTED = "%s作战开始,祝你走运 :)" DBM_CORE_COMBAT_STARTED_IN_PROGRESS = "已进行的战斗-%s正在作战。祝你走运 :)" DBM_CORE_GUILD_COMBAT_STARTED = "工会版%s作战开始" @@ -297,7 +299,7 @@ DBM_CORE_AUTO_COUNTDOWN_OPTION_TEXT = "声音警报:$spell:%s的冷却时间 DBM_CORE_AUTO_COUNTDOWN_OPTION_TEXT2 = "声音警报:$spell:%s消失时" DBM_CORE_AUTO_COUNTOUT_OPTION_TEXT = "声音警报:$spell:%s的持续时间正计时" DBM_CORE_AUTO_YELL_OPTION_TEXT = "当你受到$spell:%s影响时时大喊" -DBM_CORE_AUTO_YELL_ANNOUNCE_TEXT = UnitName("player") .. " 中了 %s!!!" +DBM_CORE_AUTO_YELL_ANNOUNCE_TEXT = UnitName("player") .. " 中了 %s!" DBM_CORE_AUTO_RANGE_OPTION_TEXT = "距离监视(%s):$spell:%s"--string used for range so we can use things like "5/2" as a value for that field DBM_CORE_AUTO_RANGE_OPTION_TEXT_SHORT = "距离监视(%s)"--For when a range frame is just used for more than one thing DBM_CORE_AUTO_INFO_FRAME_OPTION_TEXT = "信息框:$spell:%s" diff --git a/AddOns/DBM-Core/localization.en.lua b/AddOns/DBM-Core/localization.en.lua index 5cc47fe10..ccdb99e47 100644 --- a/AddOns/DBM-Core/localization.en.lua +++ b/AddOns/DBM-Core/localization.en.lua @@ -26,6 +26,8 @@ DBM_CORE_BIGWIGS_ICON_CONFLICT = "DBM has detected that you have raid icons tur DBM_CORE_PROVINGGROUNDS_AD = "DBM-ProvingGrounds is available for this content. You can find on deadlybossmods.com or on Curse. This message will only display once." +DBM_CORE_MOLTENCORE_AD = "DBM-MC is available for this content. You can find more information on deadlybossmods.com. This message will only display once." + DBM_CORE_COMBAT_STARTED = "%s engaged. Good luck and have fun! :)" DBM_CORE_COMBAT_STARTED_IN_PROGRESS = "Engaged an in progress fight against %s. Good luck and have fun! :)" DBM_CORE_GUILD_COMBAT_STARTED = "%s has been engaged by guild" diff --git a/AddOns/DBM-Core/localization.tw.lua b/AddOns/DBM-Core/localization.tw.lua index 65ea9ba1b..a8efe3a12 100644 --- a/AddOns/DBM-Core/localization.tw.lua +++ b/AddOns/DBM-Core/localization.tw.lua @@ -4,7 +4,7 @@ DBM_CORE_NEED_SUPPORT = "你是否擁有良好的程式開發或語言能力? DBM_CORE_NEED_LOGS = "DBM需要Transcriptor (http://www.wowace.com/addons/transcriptor/) 去紀錄測試伺服器的戰鬥紀錄讓插件更加完美。如果你願意幫忙,請使用transcriptor去紀錄這些戰鬥過程然後將記錄發佈在http://forums.elitistjerks.com/topic/132677-deadly-boss-mods-60-testing/ (請壓縮這些紀錄檔,這些檔案會很龐大)。僅需要6.0的團隊戰鬥紀錄,不需要五人副本的紀錄。" DBM_HOW_TO_USE_MOD = "歡迎使用DBM。在聊天頻道輸入 /dbm 打開設定開始設定。你可以載入特定區域後為任何首領設定你喜歡的特別設置。DBM會在第一次啟動時嘗試掃描你的職業天賦,但有些選項你可能想打開。" -DBM_FORUMS_MESSAGE = "發現臭蟲或錯誤的計時器?你希望要讓某些模組有新的警告,計時器或是特別功能?\n拜訪新的Deadly Boss Mods討論,臭蟲回報與功能要求論壇 |HDBM:forums|h|cff3588ffhttp://www.deadlybossmods.com|r (你可以點擊連結去複製網址)" +DBM_FORUMS_MESSAGE = "發現臭蟲或錯誤的計時器?你希望要讓某些模組有新的警告,計時器或是特別功能?\nDeadly Boss Mods討論,臭蟲回報與功能要求論壇 |HDBM:forums|h|cff3588ffhttp://www.deadlybossmods.com|r (你可以點擊連結去複製網址)" DBM_FORUMS_COPY_URL_DIALOG = "來拜訪我們新的討論與支援論壇\r\n(代管於Elitist Jerks!)" DBM_CORE_LOAD_MOD_ERROR = "載入%s模組時發生錯誤:%s" @@ -25,7 +25,7 @@ DBM_CORE_LOOT_SPEC_REMINDER = "你目前的專精為:%s。而你目前的拾 DBM_CORE_BIGWIGS_ICON_CONFLICT = "DBM偵測到你同時開啟BigWigs和DBM的團隊圖示。請關閉其中之一的團隊圖示功能以免與你的隊伍隊長產生衝突。" -DBM_CORE_PROVINGGROUNDS_AD = "試煉之地的DBM插件已經可供使用。你可以在deadlybossmods.com或Curse找到。此訊息只會顯示一次。" +DBM_CORE_PROVINGGROUNDS_AD = "試煉之地的DBM插件已經可供使用。你可以在deadlybossmods.com或Curse上找到。此訊息只會顯示一次。" DBM_CORE_COMBAT_STARTED = "%s開戰。祝好運與盡興! :)" DBM_CORE_COMBAT_STARTED_IN_PROGRESS = "與%s開戰已進行的戰鬥。祝好運與盡興! :)" @@ -50,8 +50,8 @@ DBM_CORE_COMBAT_STATE_RECOVERED = "%s的戰鬥在%s前開始,恢復計時器 DBM_CORE_TRANSCRIPTOR_LOG_START = "Transcriptor開始記錄。" DBM_CORE_TRANSCRIPTOR_LOG_END = "Transcriptor結束紀錄。" -DBM_CORE_WORLDBOSS_ENGAGED = "在你的伺服器上的%s可能已在%s時開戰(%s發送)。" -DBM_CORE_WORLDBOSS_DEFEATED = "在你的伺服器上的%s可能已被擊敗(%s發送)。" +DBM_CORE_WORLDBOSS_ENGAGED = "在你的伺服器上的%s已在百分之%s時開戰(%s發送)。" +DBM_CORE_WORLDBOSS_DEFEATED = "在你的伺服器上的%s已被擊敗(%s發送)。" DBM_CORE_TIMER_FORMAT_SECS = "%d秒" DBM_CORE_TIMER_FORMAT_MINS = "%d分鐘" diff --git a/AddOns/DBM-DMF/DBM-DMF.toc b/AddOns/DBM-DMF/DBM-DMF.toc index e0636b4de..fefb067b1 100644 --- a/AddOns/DBM-DMF/DBM-DMF.toc +++ b/AddOns/DBM-DMF/DBM-DMF.toc @@ -18,7 +18,7 @@ ## X-DBM-Mod-Has-Single-Format: 1 ## X-DBM-Mod-MapID: 974 ## X-DBM-Mod-Sort: 155 -## X-Curse-Packaged-Version: 6.0.4-31-g65bcc60 +## X-Curse-Packaged-Version: 6.0.5 ## X-Curse-Project-Name: Deadly Boss Mods ## X-Curse-Project-ID: deadly-boss-mods ## X-Curse-Repository-ID: wow/deadly-boss-mods/mainline diff --git a/AddOns/DBM-DMF/localization.kr.lua b/AddOns/DBM-DMF/localization.kr.lua index c0e39dba2..2758d104a 100644 --- a/AddOns/DBM-DMF/localization.kr.lua +++ b/AddOns/DBM-DMF/localization.kr.lua @@ -56,6 +56,16 @@ L:SetGeneralLocalization({ name = "통통 전차 게임" }) +--------------------------- +-- Fire Ring Challenge -- +--------------------------- +L = DBM:GetModLocalization("Rings") + +L:SetGeneralLocalization({ + name = "불새의 도전" +}) + + ----------------------- -- Darkmoon Rabbit -- ----------------------- diff --git a/AddOns/DBM-DMF/localization.tw.lua b/AddOns/DBM-DMF/localization.tw.lua index 9b7b51dcb..4ef2498c8 100644 --- a/AddOns/DBM-DMF/localization.tw.lua +++ b/AddOns/DBM-DMF/localization.tw.lua @@ -56,6 +56,15 @@ L:SetGeneralLocalization({ name = "坦克大戰" }) +--------------------------- +-- Fire Ring Challenge -- +--------------------------- +L = DBM:GetModLocalization("Rings") + +L:SetGeneralLocalization({ + name = "火鳥的挑戰" +}) + ----------------------- -- Darkmoon Rabbit -- ----------------------- diff --git a/AddOns/DBM-DefaultSkin/DBM-DefaultSkin.toc b/AddOns/DBM-DefaultSkin/DBM-DefaultSkin.toc index 9cfb332ca..1d0615b6f 100644 --- a/AddOns/DBM-DefaultSkin/DBM-DefaultSkin.toc +++ b/AddOns/DBM-DefaultSkin/DBM-DefaultSkin.toc @@ -10,7 +10,7 @@ ## X-DBM-Timer-Skin-Name: Classic ## X-DBM-Timer-Skin-Textures: Interface\AddOns\DBM-DefaultSkin\textures\default.tga ## X-DBM-Timer-Skin-Texture-Names: Default -## X-Curse-Packaged-Version: 6.0.4-31-g65bcc60 +## X-Curse-Packaged-Version: 6.0.5 ## X-Curse-Project-Name: Deadly Boss Mods ## X-Curse-Project-ID: deadly-boss-mods ## X-Curse-Repository-ID: wow/deadly-boss-mods/mainline diff --git a/AddOns/DBM-Draenor/DBM-Draenor.toc b/AddOns/DBM-Draenor/DBM-Draenor.toc index 301fc769f..2a02f1e86 100644 --- a/AddOns/DBM-Draenor/DBM-Draenor.toc +++ b/AddOns/DBM-Draenor/DBM-Draenor.toc @@ -17,7 +17,7 @@ ## X-DBM-Mod-Sort: 106 ## X-DBM-Mod-MapID: 1116 ## X-DBM-Mod-LoadCID: 83746, 81535, 81252 -## X-Curse-Packaged-Version: 6.0.4-31-g65bcc60 +## X-Curse-Packaged-Version: 6.0.5 ## X-Curse-Project-Name: Deadly Boss Mods ## X-Curse-Project-ID: deadly-boss-mods ## X-Curse-Repository-ID: wow/deadly-boss-mods/mainline diff --git a/AddOns/DBM-DragonSoul/DBM-DragonSoul.toc b/AddOns/DBM-DragonSoul/DBM-DragonSoul.toc index a6d670614..e4609975a 100644 --- a/AddOns/DBM-DragonSoul/DBM-DragonSoul.toc +++ b/AddOns/DBM-DragonSoul/DBM-DragonSoul.toc @@ -1,8 +1,9 @@ -## Interface: 50400 -## X-Min-Interface: 50001 -## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Dragon Soul|r -## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0巨龍之魂|r -## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0巨龙之魂|r +## Interface: 60000 +## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r Dragon Soul +## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 巨龙之魂 +## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 巨龍之魂 +## Notes-zhCN: |cff00ff00DBM-DragonSoul|r +## Notes-zhTW: |cff00ff00DBM-DragonSoul|r ## Author: MysticalOS ## LoadOnDemand: 1 ## RequiredDeps: DBM-Core @@ -13,9 +14,11 @@ ## X-DBM-Mod-Has-LFR : 1 ## X-DBM-Mod-MapID: 967 ## X-DBM-Mod-Sort: 100 + localization.en.lua localization.cn.lua localization.tw.lua + Morchok.lua Zonozz.lua Yorsahj.lua diff --git a/AddOns/DBM-DragonSoul/SpineDeathwing.lua b/AddOns/DBM-DragonSoul/SpineDeathwing.lua index 5e114138c..68767c7c3 100644 --- a/AddOns/DBM-DragonSoul/SpineDeathwing.lua +++ b/AddOns/DBM-DragonSoul/SpineDeathwing.lua @@ -79,7 +79,7 @@ end local function warningResidue() if mod.Options.InfoFrame and residueNum >= 0 then DBM.InfoFrame:SetHeader(L.BloodCount) - DBM.InfoFrame:Show(1, "texts", residueNum, nil, nil, L.BloodCount) + -- DBM.InfoFrame:Show(1, "texts", residueNum, nil, nil, L.BloodCount) end end diff --git a/AddOns/DBM-Firelands/Baleroc.lua b/AddOns/DBM-Firelands/Baleroc.lua index 2179c5710..1438e624e 100644 --- a/AddOns/DBM-Firelands/Baleroc.lua +++ b/AddOns/DBM-Firelands/Baleroc.lua @@ -107,7 +107,7 @@ function mod:OnCombatStart(delay) DBM.InfoFrame:Show(5, "playerbuffstacks", 99262, 99263, 1) else DBM.InfoFrame:SetHeader(tormented) - DBM.InfoFrame:Show(5, "playerdebuffstacks", 100231) + -- DBM.InfoFrame:Show(5, "playerdebuffstacks", 100231) end end end @@ -216,12 +216,12 @@ function mod:SPELL_AURA_APPLIED_DOSE(args) else if args.amount == 11 or args.amount == 13 or args.amount == 18 then specWarnTorment:Show(args.amount) - if args.amount == 12 then + if args.amount == 12 then sndWOP:Play("awayshard") end end end - end + end end end diff --git a/AddOns/DBM-Firelands/DBM-Firelands.toc b/AddOns/DBM-Firelands/DBM-Firelands.toc index 68d5286ed..02f8e329b 100644 --- a/AddOns/DBM-Firelands/DBM-Firelands.toc +++ b/AddOns/DBM-Firelands/DBM-Firelands.toc @@ -1,8 +1,9 @@ -## Interface: 50400 -## X-Min-Interface: 50001 -## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Firelands|r -## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0火源之界|r -## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0火焰之地|r +## Interface: 60000 +## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r Firelands +## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 火焰之地 +## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 火源之界 +## Notes-zhCN: |cff00ff00DBM-Firelands|r +## Notes-zhTW: |cff00ff00DBM-Firelands|r ## Author: MysticalOS ## LoadOnDemand: 1 ## RequiredDeps: DBM-Core @@ -15,9 +16,11 @@ ## X-DBM-Mod-Name-zhCN: 火焰之地 ## X-DBM-Mod-Sort: 101 ## X-DBM-Mod-MapID: 720,951 + localization.en.lua -localization.tw.lua localization.cn.lua +localization.tw.lua + Bethtilac.lua Rhyolith.lua Alysrazor.lua diff --git a/AddOns/DBM-GUI/DBM-GUI.toc b/AddOns/DBM-GUI/DBM-GUI.toc index cb8dfec45..43ed2256e 100644 --- a/AddOns/DBM-GUI/DBM-GUI.toc +++ b/AddOns/DBM-GUI/DBM-GUI.toc @@ -25,7 +25,7 @@ ## DefaultState: enabled ## Author: Nitram and Tandanu ## URL: http://www.deadlybossmods.com -## X-Curse-Packaged-Version: 6.0.4-31-g65bcc60 +## X-Curse-Packaged-Version: 6.0.5 ## X-Curse-Project-Name: Deadly Boss Mods ## X-Curse-Project-ID: deadly-boss-mods ## X-Curse-Repository-ID: wow/deadly-boss-mods/mainline diff --git a/AddOns/DBM-GUI/localization.tw.lua b/AddOns/DBM-GUI/localization.tw.lua index 6c2825da6..3b626b86d 100644 --- a/AddOns/DBM-GUI/localization.tw.lua +++ b/AddOns/DBM-GUI/localization.tw.lua @@ -6,7 +6,7 @@ L.MainFrame = "Deadly Boss Mods" L.TranslationByPrefix = "翻譯:" L.TranslationBy = "Imbav@聖光之願" -L.Website = "拜訪我們新的討論與支援論壇:|cFF73C2FBwww.deadlybossmods.com|r (代管於Elitist Jerks!)" +L.Website = "拜訪我們的討論與支援論壇:|cFF73C2FBwww.deadlybossmods.com|r (代管於Elitist Jerks!)" L.WebsiteButton = "論壇" L.OTabBosses = "首領模組" diff --git a/AddOns/DBM-HeartofFear/DBM-HeartofFear.toc b/AddOns/DBM-HeartofFear/DBM-HeartofFear.toc index d9958cad5..3ca0bfcd3 100644 --- a/AddOns/DBM-HeartofFear/DBM-HeartofFear.toc +++ b/AddOns/DBM-HeartofFear/DBM-HeartofFear.toc @@ -1,8 +1,10 @@ -## Interface: 50400 -## X-Min-Interface: 50001 -## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Heart of Fear|r +## Interface: 60000 +## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r Heart of Fear +## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 恐惧之心 +## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 恐懼之心 +## Notes-zhCN: |cff00ff00DBM-HeartofFear|r +## Notes-zhTW: |cff00ff00DBM-HeartofFear|r ## Author: MysticalOS -## RequiredDeps: DBM-Core ## SavedVariablesPerCharacter: DBMHeartofFear_SavedVars, DBMHeartofFear_SavedStats ## X-DBM-Mod: 1 ## X-DBM-Mod-Type: RAID @@ -17,6 +19,7 @@ localization.en.lua localization.tw.lua localization.cn.lua + Zorlok.lua Tayak.lua Garalon.lua diff --git a/AddOns/DBM-HeartofFear/Meljarak.lua b/AddOns/DBM-HeartofFear/Meljarak.lua index 6b434e270..3379e9d86 100644 --- a/AddOns/DBM-HeartofFear/Meljarak.lua +++ b/AddOns/DBM-HeartofFear/Meljarak.lua @@ -420,7 +420,7 @@ function mod:SPELL_DAMAGE(_, _, _, _, destGUID, destName, _, _, spellId) if destGUID == UnitGUID("player") and self:AntiSpam(3, 4) then specWarnWindBomb:Show() yellWindBomb:Yell() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("runaway")--快躲開 end elseif spellId == 122125 and destGUID == UnitGUID("player") and self:AntiSpam(3, 5) then @@ -498,7 +498,7 @@ function mod:UNIT_AURA_UNFILTERED(uId) if UnitDebuff("player", strikeTarget) and not strikeWarned then--Warn you that you have a meteor sndWOP:Play("holdit")--自保技能 specWarnKorthikStrike:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) yellKorthikStrike:Yell() strikeWarned = true self:SendSync("KorthikStrikeTarget", UnitGUID("player"))--Screw target scanning, this way is much better, never wrong. diff --git a/AddOns/DBM-HeartofFear/Shekzeer.lua b/AddOns/DBM-HeartofFear/Shekzeer.lua index a09a4f691..b9766ad47 100644 --- a/AddOns/DBM-HeartofFear/Shekzeer.lua +++ b/AddOns/DBM-HeartofFear/Shekzeer.lua @@ -342,7 +342,7 @@ function mod:SPELL_AURA_APPLIED(args) timerCryOfTerrorCD:Start() if args:IsPlayer() then specwarnCryOfTerror:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_mop_kjyy") --快進音域 end elseif args:IsSpellID(124748) then @@ -354,7 +354,7 @@ function mod:SPELL_AURA_APPLIED(args) warnFixate:Show(args.destName) if args:IsPlayer() then specwarnFixate:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("justrun") --快跑 end elseif args:IsSpellID(124862) then @@ -362,7 +362,7 @@ function mod:SPELL_AURA_APPLIED(args) if args:IsPlayer() then specwarnVisions:Show() yellVisions:Yell() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("runout") --離開人群 sndWOP:Schedule(1.5, "countthree") sndWOP:Schedule(2.5, "counttwo") @@ -404,7 +404,7 @@ function mod:SPELL_AURA_APPLIED(args) elseif args:IsSpellID(124097) then if args:IsPlayer() and self:AntiSpam(5, 2) then --prevent spam in heroic specwarnStickyResin:Show() - DBM.Flash:Shake(1, 1, 0) + -- DBM.Flash:Shake(1, 1, 0) yellStickyResin:Yell() sndWOP:Play("ex_mop_szkp") --樹脂 end @@ -550,7 +550,7 @@ function mod:SPELL_CAST_START(args) specWarnConsumingTerror:Show() timerConsumingTerrorCD:Start() if mod:IsTank() then - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) end sndWOP:Play("ex_mop_kjts")--恐懼吞噬 end diff --git a/AddOns/DBM-HeartofFear/Unsok.lua b/AddOns/DBM-HeartofFear/Unsok.lua index 605f55e32..2d8f9d64b 100644 --- a/AddOns/DBM-HeartofFear/Unsok.lua +++ b/AddOns/DBM-HeartofFear/Unsok.lua @@ -346,7 +346,7 @@ function mod:SPELL_AURA_APPLIED(args) warnAmberGlob:Show(args.destName) if args:IsPlayer() then specwarnAmberGlob:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("orbrun") --寶珠快跑 end end @@ -419,7 +419,7 @@ function mod:SPELL_CAST_START(args) self:Schedule(0.5, warnAmberExplosionCast, 122398)--Always check available interrupts and special warn if not elseif args.sourceGUID == UnitGUID("player") then--Cast by YOU specwarnAmberExplosionYou:Show(args.spellName) - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("stopcast") --停止施法 timerAmberExplosionCD:Start(13, args.sourceName)--Only player needs to see this, they are only person who can do anything about it. end diff --git a/AddOns/DBM-Highmaul/DBM-Highmaul.toc b/AddOns/DBM-Highmaul/DBM-Highmaul.toc index 8d78f242e..afa785490 100644 --- a/AddOns/DBM-Highmaul/DBM-Highmaul.toc +++ b/AddOns/DBM-Highmaul/DBM-Highmaul.toc @@ -16,7 +16,7 @@ ## X-DBM-Mod-Has-Mythic : 1 ## X-DBM-Mod-Sort: 102 ## X-DBM-Mod-MapID: 1228 -## X-Curse-Packaged-Version: 6.0.4-31-g65bcc60 +## X-Curse-Packaged-Version: 6.0.5 ## X-Curse-Project-Name: Deadly Boss Mods ## X-Curse-Project-ID: deadly-boss-mods ## X-Curse-Repository-ID: wow/deadly-boss-mods/mainline diff --git a/AddOns/DBM-Icecrown/DBM-Icecrown.toc b/AddOns/DBM-Icecrown/DBM-Icecrown.toc index 03356fead..5bcd762de 100644 --- a/AddOns/DBM-Icecrown/DBM-Icecrown.toc +++ b/AddOns/DBM-Icecrown/DBM-Icecrown.toc @@ -1,6 +1,9 @@ -## Interface: 50400 -## X-Min-Interface: 50001 -## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Icecrown Citadel|r +## Interface: 60000 +## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r Icecrown Citadel +## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 冰冠堡垒 +## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 冰冠城塞 +## Notes-zhCN: |cff00ff00DBM-Icecrown|r +## Notes-zhTW: |cff00ff00DBM-Icecrown|r ## Author: MysticalOS ## LoadOnDemand: 1 ## RequiredDeps: DBM-Core @@ -11,22 +14,28 @@ ## X-DBM-Mod-SubCategories: The Lower Spire, The Plagueworks, The Crimson Hall, Frostwing Halls, The Frozen Throne ## X-DBM-Mod-MapID: 631 ## X-DBM-Mod-Sort: 200 + localization.en.lua -localization.tw.lua localization.cn.lua +localization.tw.lua + TheLowerSpire\LordMarrowgar.lua TheLowerSpire\Deathwhisper.lua TheLowerSpire\GunshipBattle.lua TheLowerSpire\Deathbringer.lua TheLowerSpire\LowerSpireTrash.lua + ThePlagueworks\Festergut.lua ThePlagueworks\Rotface.lua ThePlagueworks\Putricide.lua ThePlagueworks\PlagueworksTrash.lua + TheCrimsonHall\BPCouncil.lua TheCrimsonHall\Lanathel.lua TheCrimsonHall\CrimsonHallTrash.lua + FrostwingHalls\Valithria.lua FrostwingHalls\Sindragosa.lua FrostwingHalls\FrostwingHallTrash.lua + TheFrozenThrone\LichKing.lua diff --git a/AddOns/DBM-MC/DBM-MC.toc b/AddOns/DBM-MC/DBM-MC.toc new file mode 100644 index 000000000..85e01c1bf --- /dev/null +++ b/AddOns/DBM-MC/DBM-MC.toc @@ -0,0 +1,31 @@ +## Interface: 60000 +## X-Min-Interface: 50001 +## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Molten Core|r +## Title-esES:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Núcleo de Magma|r +## Title-ruRU:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Огненные Недра|r +## Title-deDE:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Geschmolzener Kern|r +## Title-koKR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0화산 심장부|r +## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0熔火之心|r +## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0熔火之心|r +## LoadOnDemand: 1 +## RequiredDeps: DBM-Core +## SavedVariablesPerCharacter: DBMMC_SavedVars, DBMMC_SavedStats +## X-DBM-Mod: 1 +## X-DBM-Mod-Type: RAID +## X-DBM-Mod-Category: Classic +## X-DBM-Mod-Has-Single-Format: 1 +## X-DBM-Mod-MapID: 409 +## X-DBM-Mod-Sort: 600 +localization.en.lua +localization.tw.lua +localization.cn.lua +Lucifron.lua +Magmadar.lua +Gehennas.lua +Garr.lua +Geddon.lua +Shazzrah.lua +Sulfuron.lua +Golemagg.lua +Majordomo.lua +Ragnaros.lua diff --git a/AddOns/DBM-MC/Garr.lua b/AddOns/DBM-MC/Garr.lua new file mode 100644 index 000000000..047ea1370 --- /dev/null +++ b/AddOns/DBM-MC/Garr.lua @@ -0,0 +1,39 @@ +local mod = DBM:NewMod("Garr-Classic", "DBM-MC", 1) +local L = mod:GetLocalizedStrings() +local Yike = mod:SoundMM("SoundWOP") + +mod:SetRevision(("$Revision: 549 $"):sub(12, -3)) +mod:SetCreatureID(12057)--, 12099 +--mod:SetEncounterID(666) +mod:SetModelID(12110) +mod:RegisterCombat("combat") + +mod:RegisterEvents( + "SPELL_AURA_APPLIED 15732", + "SPELL_CAST_SUCCESS 19492" +) + +local warnAntiMagicPulse = mod:NewSpellAnnounce(19492, 2) +local warnImmolate = mod:NewTargetAnnounce("OptionVersion2", 15732, 2, nil, mod:IsHealer()) + +local timerAntiMagicPulseCD = mod:NewCDTimer(16, 19492)--16-20 variation + +function mod:OnCombatStart(delay) + timerAntiMagicPulseCD:Start(10-delay) +end + +function mod:SPELL_AURA_APPLIED(args) + if args.spellId == 15732 and self:IsInCombat() then + warnImmolate:CombinedShow(1, args.destName) + if mod:IsHealer() then + Yike:Play("dispelnow") + end + end +end + +function mod:SPELL_CAST_SUCCESS(args) + if args.spellId == 19492 then + warnAntiMagicPulse:Show() + timerAntiMagicPulseCD:Start() + end +end diff --git a/AddOns/DBM-MC/Geddon.lua b/AddOns/DBM-MC/Geddon.lua new file mode 100644 index 000000000..702fa62a8 --- /dev/null +++ b/AddOns/DBM-MC/Geddon.lua @@ -0,0 +1,80 @@ +local mod = DBM:NewMod("Geddon", "DBM-MC", 1) +local L = mod:GetLocalizedStrings() +local Yike = mod:SoundMM("SoundWOP") + +mod:SetRevision(("$Revision: 550 $"):sub(12, -3)) +mod:SetCreatureID(12056) +--mod:SetEncounterID(668) +mod:SetModelID(12129) +mod:SetUsedIcons(8) +mod:RegisterCombat("combat") + +mod:RegisterEvents( + "SPELL_AURA_APPLIED 20475", + "SPELL_AURA_REMOVED 20475", + "SPELL_CAST_SUCCESS 19695 19659 20478" +) + +local warnInferno = mod:NewSpellAnnounce(19695, 3) +local warnIgnite = mod:NewSpellAnnounce(19659, 2) +local warnBomb = mod:NewTargetAnnounce(20475, 4) +local warnArmageddon = mod:NewSpellAnnounce(20478, 3) + +local specWarnBomb = mod:NewSpecialWarningYou(20475, nil, nil, nil, 3) +local yellBomb = mod:NewYell(20475) +local specWarnInferno = mod:NewSpecialWarningSpell(19695, nil, nil, nil, 2) + +local timerInferno = mod:NewBuffActiveTimer(8, 19695) +local timerBombCD = mod:NewCDTimer(16, 20475) +local timerBomb = mod:NewTargetTimer(8, 20475) +local timerArmageddon = mod:NewCastTimer(8, 20478) + +mod:AddSetIconOption("SetIconOnBombTarget", 20475) + +function mod:OnCombatStart(delay) + timerBombCD:Start(11-delay) +end + +function mod:SPELL_AURA_APPLIED(args) + if args.spellId == 20475 then + warnBomb:Show(args.destName) + timerBomb:Start(args.destName) + timerBombCD:Start() + if self.Options.SetIconOnBombTarget then + self:SetIcon(args.destName, 8) + end + if args:IsPlayer() then + specWarnBomb:Show() + if self:IsDifficulty("event40") then + yellBomb:Yell() + Yike:Play("runout") + end + end + end +end + +function mod:SPELL_AURA_REMOVED(args) + if args.spellId == 20475 then + timerBomb:Cancel(args.destName) + if self.Options.SetIconOnBombTarget then + self:SetIcon(args.destName, 0) + end + end +end + +function mod:SPELL_CAST_SUCCESS(args) + local spellId = args.spellId + if spellId == 19695 then + warnInferno:Show() + if self:IsDifficulty("event40") then + specWarnInferno:Show() + end + timerInferno:Start() + elseif spellId == 19659 then + warnIgnite:Show() + elseif spellId == 20478 then + warnArmageddon:Show() + timerArmageddon:Start() + end +end + diff --git a/AddOns/DBM-MC/Gehennas.lua b/AddOns/DBM-MC/Gehennas.lua new file mode 100644 index 000000000..e2979fa2a --- /dev/null +++ b/AddOns/DBM-MC/Gehennas.lua @@ -0,0 +1,61 @@ +local mod = DBM:NewMod("Gehennas", "DBM-MC", 1) +local L = mod:GetLocalizedStrings() +local Yike = mod:SoundMM("SoundWOP") + +mod:SetRevision(("$Revision: 549 $"):sub(12, -3)) +mod:SetCreatureID(12259)--, 11661 +--mod:SetEncounterID(665) +mod:SetModelID(13030) +mod:RegisterCombat("combat") + +mod:RegisterEvents( + "SPELL_CAST_SUCCESS 19716 19717", + "SPELL_AURA_APPLIED 20277" +) + +local warnRainFire = mod:NewSpellAnnounce(19717, 2, nil, false) +local warnCurse = mod:NewSpellAnnounce(19716, 3) +local warnFist = mod:NewTargetAnnounce("OptionVersion2", 20277, 2, nil, false) + +local specWarnRoF = mod:NewSpecialWarningMove(19717) + +local timerRoF = mod:NewCDTimer(6, 19717, nil, false) +local timerCurse = mod:NewNextTimer(30, 19716) +local timerFist = mod:NewBuffActiveTimer("OptionVersion2", 4, 20277, nil, false) + +function mod:OnCombatStart(delay) + timerCurse:Start(6-delay) + if self:IsDifficulty("event40") then--Only want to warn to move if level 100 version, not level 60 version. + self:RegisterShortTermEvents( + "SPELL_PERIODIC_DAMAGE 19717" + ) + end +end + +function mod:OnCombatEnd() + self:UnregisterShortTermEvents() +end + +function mod:SPELL_CAST_SUCCESS(args) + if args.spellId == 19716 then + timerCurse:Start() + warnCurse:Show() + elseif args.spellId == 19717 and self:IsInCombat() then + warnRainFire:Show() + timerRoF:Start() + end +end + +function mod:SPELL_AURA_APPLIED(args) + if args.spellId == 20277 and args:IsDestTypePlayer() then + warnFist:CombinedShow(0.3, args.destName) + end +end + +function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, destName, _, _, spellId) + if spellId == 19717 and destGUID == UnitGUID("player") and self:AntiSpam() then + specWarnRoF:Show() + Yike:Play("runaway") + end +end +mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE diff --git a/AddOns/DBM-MC/Golemagg.lua b/AddOns/DBM-MC/Golemagg.lua new file mode 100644 index 000000000..bbc9921e8 --- /dev/null +++ b/AddOns/DBM-MC/Golemagg.lua @@ -0,0 +1,20 @@ +local mod = DBM:NewMod("Golemagg", "DBM-MC", 1) +local L = mod:GetLocalizedStrings() + +mod:SetRevision(("$Revision: 549 $"):sub(12, -3)) +mod:SetCreatureID(11988)--, 11672 +--mod:SetEncounterID(670) +mod:SetModelID(11986) +mod:RegisterCombat("combat") + +mod:RegisterEvents( + "SPELL_CAST_SUCCESS 20553" +) + +local warnQuake = mod:NewSpellAnnounce(20553) + +function mod:SPELL_AURA_APPLIED(args) + if args.spellId == 20553 then + warnQuake:Show() + end +end diff --git a/AddOns/DBM-MC/Lucifron.lua b/AddOns/DBM-MC/Lucifron.lua new file mode 100644 index 000000000..edca39396 --- /dev/null +++ b/AddOns/DBM-MC/Lucifron.lua @@ -0,0 +1,39 @@ +local mod = DBM:NewMod("Lucifron", "DBM-MC", 1) +local L = mod:GetLocalizedStrings() + +mod:SetRevision(("$Revision: 549 $"):sub(12, -3)) +mod:SetCreatureID(12118)--, 12119 +--mod:SetEncounterID(663) +mod:SetModelID(13031) +mod:RegisterCombat("combat") + +mod:RegisterEvents( + "SPELL_CAST_SUCCESS 19702 19703", + "SPELL_AURA_APPLIED 20604" +) + +local warnDoom = mod:NewSpellAnnounce(19702, 2) +local warnCurse = mod:NewSpellAnnounce(19703, 3) +local warnMC = mod:NewTargetAnnounce(20604, 4) + +local timerCurseCD = mod:NewNextTimer(20.5, 19703) +local timerDoomCD = mod:NewCDTimer(20, 19702) +local timerDoom = mod:NewCastTimer(10, 19702) + +function mod:SPELL_CAST_SUCCESS(args) + local spellId = args.spellId + if spellId == 19702 then + warnDoom:Show() + timerDoom:Start() + timerDoomCD:Start() + elseif spellId == 19703 then + timerCurseCD:Start() + warnCurse:Show() + end +end + +function mod:SPELL_AURA_APPLIED(args) + if args.spellId == 20604 then + warnMC:CombinedShow(1, args.destName) + end +end \ No newline at end of file diff --git a/AddOns/DBM-MC/Magmadar.lua b/AddOns/DBM-MC/Magmadar.lua new file mode 100644 index 000000000..b2c627e78 --- /dev/null +++ b/AddOns/DBM-MC/Magmadar.lua @@ -0,0 +1,49 @@ +local mod = DBM:NewMod("Magmadar", "DBM-MC", 1) +local L = mod:GetLocalizedStrings() +local Yike = mod:SoundMM("SoundWOP") + +mod:SetRevision(("$Revision: 549 $"):sub(12, -3)) +mod:SetCreatureID(11982) +--mod:SetEncounterID(664) +mod:SetModelID(10193) +mod:RegisterCombat("combat") + +mod:RegisterEvents( + "SPELL_AURA_APPLIED 19451", + "SPELL_AURA_REMOVED 19451", + "SPELL_CAST_SUCCESS 19408" +) + +local warnPanic = mod:NewSpellAnnounce(19408, 2) +local warnEnrage = mod:NewTargetAnnounce(19451, 3, nil , mod:IsHealer() or mod:IsTank() or mod:CanRemoveEnrage()) + +local specWarnEnrage= mod:NewSpecialWarningDispel(19451, mod:CanRemoveEnrage()) + +--local timerPanicCD = mod:NewCDTimer(30, 19408) +local timerPanic = mod:NewBuffActiveTimer(8, 19408) +local timerEnrage = mod:NewBuffActiveTimer(8, 19451) + +function mod:SPELL_AURA_APPLIED(args) + if args.spellId == 19451 then + warnEnrage:Show(args.destName) + specWarnEnrage:Show(args.destName) + timerEnrage:Start() + if mod:CanRemoveEnrage() then + Yike:Play("trannow") + end + end +end + +function mod:SPELL_AURA_REMOVED(args) + if args.spellId == 19451 then + timerEnrage:Cancel() + end +end + +function mod:SPELL_CAST_SUCCESS(args) + if args.spellId == 19408 then + warnPanic:Show() + timerPanic:Start() +-- timerPanicCD:Start() + end +end \ No newline at end of file diff --git a/AddOns/DBM-MC/Majordomo.lua b/AddOns/DBM-MC/Majordomo.lua new file mode 100644 index 000000000..b6317410c --- /dev/null +++ b/AddOns/DBM-MC/Majordomo.lua @@ -0,0 +1,39 @@ +local mod = DBM:NewMod("Majordomo", "DBM-MC", 1) +local L = mod:GetLocalizedStrings() +local Yike = mod:SoundMM("SoundWOP") + +mod:SetRevision(("$Revision: 549 $"):sub(12, -3)) +mod:SetCreatureID(12018, 11663, 11664) +--mod:SetEncounterID(671) +mod:SetModelID(12029) +mod:RegisterCombat("combat") +mod:RegisterKill("yell", L.Kill) + +mod:RegisterEvents( + "SPELL_CAST_SUCCESS 20619 21075 20534" +) + +local warnMagicReflect = mod:NewSpellAnnounce(20619) +local warnDamageShield = mod:NewSpellAnnounce(21075) +local warnTeleport = mod:NewTargetAnnounce(20534) + +local specWarnMagicReflect = mod:NewSpecialWarningSpell(20619, not mod:IsMelee()) + +local timerMagicReflect = mod:NewBuffActiveTimer(10, 20619) +local timerDamageShield = mod:NewBuffActiveTimer(10, 21075) + +function mod:SPELL_CAST_SUCCESS(args) + local spellId = args.spellId + if spellId == 20619 then + warnMagicReflect:Show() + specWarnMagicReflect:Show() + timerMagicReflect:Start() + Yike:Play("20619") + Yike:Schedule(10, "shieldover") + elseif spellId == 21075 then + warnDamageShield:Show() + timerDamageShield:Start() + elseif spellId == 20534 then + warnTeleport:Show(args.destName) + end +end \ No newline at end of file diff --git a/AddOns/DBM-MC/Ragnaros.lua b/AddOns/DBM-MC/Ragnaros.lua new file mode 100644 index 000000000..57c5a17e2 --- /dev/null +++ b/AddOns/DBM-MC/Ragnaros.lua @@ -0,0 +1,78 @@ +local mod = DBM:NewMod("Ragnaros-Classic", "DBM-MC", 1) +local L = mod:GetLocalizedStrings() + +mod:SetRevision(("$Revision: 551 $"):sub(12, -3)) +mod:SetCreatureID(11502) +--mod:SetEncounterID(672) +mod:SetModelID(11121) +mod:RegisterCombat("combat") + +mod:RegisterEvents( + "SPELL_CAST_SUCCESS 20566", + "CHAT_MSG_MONSTER_YELL", + "UNIT_DIED" +) + +local warnWrathRag = mod:NewSpellAnnounce(20566, 3) +local warnSubmerge = mod:NewAnnounce("WarnSubmerge", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp", 2) +local warnEmerge = mod:NewAnnounce("WarnEmerge", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp", 2) + +local timerWrathRag = mod:NewCDTimer(25, 20566)--25-30 +local timerSubmerge = mod:NewTimer(180, "TimerSubmerge", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp") +local timerEmerge = mod:NewTimer(90, "TimerEmerge", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp") +local timerCombatStart = mod:NewCombatTimer(73) + +local addDied = 0 + +function mod:OnCombatStart(delay) + addDied = 0 + timerSubmerge:Start(-delay) + timerWrathRag:Start(27-delay) +end + +local function emerged() + timerEmerge:Cancel() + warnEmerge:Show() + timerSubmerge:Start() +-- timerWrathRag:Start()--need to find out what it is first. + addDied = 0 +end + +function mod:SPELL_CAST_SUCCESS(args) + if args.spellId == 20566 then + warnWrathRag:Show() + timerWrathRag:Start() + end +end + +function mod:CHAT_MSG_MONSTER_YELL(msg) + if msg == L.Submerge then + self:SendSync("Submerge") + --Could also use this instead + --"<37.8 22:36:31> [CLEU] SPELL_CAST_START#false#Creature-0-3137-409-16929-54404-00007003D3#Majordomo Executus#2584#0##nil#-2147483648#-2147483648#19774#Summon Ragnaros#4", -- [1677] + --"<38.0 22:36:31> [CHAT_MSG_MONSTER_YELL] CHAT_MSG_MONSTER_YELL#Impudent whelps! You've rushed headlong to your own deaths! See now, the master stirs!\r\n#Majordomo Executus###Shiramura + elseif msg == L.Pull then + timerCombatStart:Start() + end +end + +function mod:OnSync(msg) + if msg == "Submerge" then + self:Unschedule(emerged) + timerWrathRag:Cancel() + warnSubmerge:Show() + timerEmerge:Start() + self:Schedule(90, emerged) + end +end + +function mod:UNIT_DIED(args) + local cid = self:GetCIDFromGUID(args.destGUID) + if cid == 12143 then--Son of Flame + addDied = addDied + 1 + if addDied == 8 then--After all 8 die he emerges immediately + self:Unschedule(emerged) + emerged() + end + end +end \ No newline at end of file diff --git a/AddOns/DBM-MC/Shazzrah.lua b/AddOns/DBM-MC/Shazzrah.lua new file mode 100644 index 000000000..bfd8e03e3 --- /dev/null +++ b/AddOns/DBM-MC/Shazzrah.lua @@ -0,0 +1,66 @@ +local mod = DBM:NewMod("Shazzrah", "DBM-MC", 1) +local L = mod:GetLocalizedStrings() +local Yike = mod:SoundMM("SoundWOP") + +mod:SetRevision(("$Revision: 549 $"):sub(12, -3)) +mod:SetCreatureID(12264) +--mod:SetEncounterID(667) +mod:SetModelID(13032) +mod:RegisterCombat("combat") + +mod:RegisterEvents( + "SPELL_AURA_APPLIED 19714", + "SPELL_AURA_REMOVED 19714", + "SPELL_CAST_SUCCESS 19713 19715 23138" +) + +local warnCurse = mod:NewSpellAnnounce(19713) +local warnGrounding = mod:NewTargetAnnounce(19714, 2, nil, mod:IsMagicDispeller()) +local warnCntrSpell = mod:NewSpellAnnounce(19715) +local warnGate = mod:NewSpellAnnounce(23138) + +local specWarnGrounding = mod:NewSpecialWarningDispel(19714, mod:IsMagicDispeller()) +local specWarnGate = mod:NewSpecialWarningSpell(23138, mod:IsTank())--aggro wipe, needs fresh taunt + +local timerCurseCD = mod:NewCDTimer(20, 19713) +local timerGrounding = mod:NewBuffActiveTimer(30, 19714, nil, false) +local timerGateCD = mod:NewNextTimer(50, 23138) + +function mod:OnCombatStart(delay) + --Bad pull, transcriptor started late, times may be off 1-2 seconds + timerCurseCD:Start(10-delay) + timerGateCD:Start(30-delay) +end + +function mod:SPELL_AURA_APPLIED(args) + if args.spellId == 19714 and self:IsInCombat() and not args:IsDestTypePlayer() then + warnGrounding:Show(args.destName) + specWarnGrounding:Show(args.destName) + timerGrounding:Start() + if mod:IsMagicDispeller() then + Yike:Play("dispelboss") + end + end +end + +function mod:SPELL_AURA_REMOVED(args) + if args.spellId == 19714 then + timerGrounding:Cancel() + end +end + +function mod:SPELL_CAST_SUCCESS(args) + if args.spellId == 19713 and self:IsInCombat() then + warnCurse:Show() + timerCurseCD:Start() + elseif args.spellId == 19715 and self:IsInCombat() then + warnCntrSpell:Show() + elseif args.spellId == 23138 then + warnGate:Show() + specWarnGate:Show() + timerGateCD:Start() + if mod:IsTank() then + Yike:Play("tauntboss") + end + end +end \ No newline at end of file diff --git a/AddOns/DBM-MC/Sulfuron.lua b/AddOns/DBM-MC/Sulfuron.lua new file mode 100644 index 000000000..c7b7abac0 --- /dev/null +++ b/AddOns/DBM-MC/Sulfuron.lua @@ -0,0 +1,55 @@ +local mod = DBM:NewMod("Sulfuron", "DBM-MC", 1) +local L = mod:GetLocalizedStrings() +local Yike = mod:SoundMM("SoundWOP") + +mod:SetRevision(("$Revision: 549 $"):sub(12, -3)) +mod:SetCreatureID(12098)--, 11662 +--mod:SetEncounterID(669) +mod:SetModelID(13030) +mod:RegisterCombat("combat") + +mod:RegisterEvents( + "SPELL_AURA_APPLIED 19779 19780 19776 20294", + "SPELL_CAST_START 19775" +) + +local warnInspire = mod:NewTargetAnnounce(19779, 2, nil, mod:IsTank() or mod:IsHealer()) +local warnHandRagnaros = mod:NewTargetAnnounce("OptionVersion2", 19780, 2, nil, false) +local warnShadowPain = mod:NewTargetAnnounce("OptionVersion2", 19776, 2, nil, false) +local warnHeal = mod:NewCastAnnounce(19775, 3, nil, nil, false)--this may be spammy now that spellid is fixed +local warnImmolate = mod:NewTargetAnnounce("OptionVersion2", 20294, 2, nil, false) + +local specWarnHeal = mod:NewSpecialWarningInterrupt(19775) + +local timerInspireCD = mod:NewCDTimer(16, 19779, nil, mod:IsTank() or mod:IsHealer())--16-20 +local timerInspire = mod:NewTargetTimer(10, 19779, nil, mod:IsTank() or mod:IsHealer()) +local timerHeal = mod:NewCastTimer(2, 19775, nil, false)--this may be spammy now that spellid is fixed + +function mod:OnCombatStart(delay) + timerInspireCD:Start(-delay) +end + +function mod:SPELL_AURA_APPLIED(args) + if args.spellId == 19779 then + warnInspire:Show(args.destName) + timerInspire:Start(args.destName) + timerInspireCD:Start() + elseif args.spellId == 19780 and args:IsDestTypePlayer() then + warnHandRagnaros:CombinedShow(0.3, args.destName) + elseif args.spellId == 19776 then + warnShadowPain:CombinedShow(0.3, args.destName) + elseif args.spellId == 20294 then + warnImmolate:CombinedShow(0.3, args.destName) + end +end + +function mod:SPELL_CAST_START(args) + if args.spellId == 19775 then + warnHeal:Show() + timerHeal:Start() + if args.sourceGUID == UnitGUID("target") or args.sourceGUID == UnitGUID("focus") then--Only show warning/timer for your own target. + specWarnHeal:Show(args.sourceName) + end + Yike:Play("kickcast") + end +end \ No newline at end of file diff --git a/AddOns/DBM-MC/localization.cn.lua b/AddOns/DBM-MC/localization.cn.lua new file mode 100644 index 000000000..847000d6c --- /dev/null +++ b/AddOns/DBM-MC/localization.cn.lua @@ -0,0 +1,114 @@ +if GetLocale() ~= "zhCN" then return end +local L + +---------------- +-- Lucifron -- +---------------- +L = DBM:GetModLocalization("Lucifron") + +L:SetGeneralLocalization{ + name = "鲁西弗隆" +} + +---------------- +-- Magmadar -- +---------------- +L = DBM:GetModLocalization("Magmadar") + +L:SetGeneralLocalization{ + name = "玛格曼达" +} + +---------------- +-- Gehennas -- +---------------- +L = DBM:GetModLocalization("Gehennas") + +L:SetGeneralLocalization{ + name = "基赫纳斯" +} + +------------ +-- Garr -- +------------ +L = DBM:GetModLocalization("Garr-Classic") + +L:SetGeneralLocalization{ + name = "加尔" +} + +-------------- +-- Geddon -- +-------------- +L = DBM:GetModLocalization("Geddon") + +L:SetGeneralLocalization{ + name = "迦顿男爵" +} + +---------------- +-- Shazzrah -- +---------------- +L = DBM:GetModLocalization("Shazzrah") + +L:SetGeneralLocalization{ + name = "沙斯拉尔" +} + +---------------- +-- Sulfuron -- +---------------- +L = DBM:GetModLocalization("Sulfuron") + +L:SetGeneralLocalization{ + name = "萨弗隆先驱者" +} + +---------------- +-- Golemagg -- +---------------- +L = DBM:GetModLocalization("Golemagg") + +L:SetGeneralLocalization{ + name = "焚化者古雷曼格" +} + +----------------- +-- Majordomo -- +----------------- +L = DBM:GetModLocalization("Majordomo") + +L:SetGeneralLocalization{ + name = "管理者埃克索图斯" +} + +L:SetMiscLocalization{ + Kill = "不...不可能!等一下...我投降!我投降!" +} + +---------------- +-- Ragnaros -- +---------------- +L = DBM:GetModLocalization("Ragnaros-Classic") + +L:SetGeneralLocalization{ + name = "拉格纳罗斯" +} +L:SetWarningLocalization{ + WarnSubmerge = "隐没", + WarnEmerge = "现身" +} +L:SetTimerLocalization{ + TimerSubmerge = "隐没", + TimerEmerge = "现身" +} +L:SetOptionLocalization{ + WarnSubmerge = "为隐没显示警告", + TimerSubmerge = "为隐没显示计时器", + WarnEmerge = "为现身显示警告", + TimerEmerge = "为现身显示计时器" +} +L:SetMiscLocalization{ + Submerge = "出现吧,我的奴仆! 保卫你们的主人!", + Pull = "你这个莽撞的家伙!你简直是自寻死路!看吧,你惊动了主人!" +} \ No newline at end of file diff --git a/AddOns/DBM-MC/localization.en.lua b/AddOns/DBM-MC/localization.en.lua new file mode 100644 index 000000000..6a63a3965 --- /dev/null +++ b/AddOns/DBM-MC/localization.en.lua @@ -0,0 +1,113 @@ +local L + +---------------- +-- Lucifron -- +---------------- +L = DBM:GetModLocalization("Lucifron") + +L:SetGeneralLocalization{ + name = "Lucifron" +} + +---------------- +-- Magmadar -- +---------------- +L = DBM:GetModLocalization("Magmadar") + +L:SetGeneralLocalization{ + name = "Magmadar" +} + +---------------- +-- Gehennas -- +---------------- +L = DBM:GetModLocalization("Gehennas") + +L:SetGeneralLocalization{ + name = "Gehennas" +} + +------------ +-- Garr -- +------------ +L = DBM:GetModLocalization("Garr-Classic") + +L:SetGeneralLocalization{ + name = "Garr" +} + +-------------- +-- Geddon -- +-------------- +L = DBM:GetModLocalization("Geddon") + +L:SetGeneralLocalization{ + name = "Baron Geddon" +} + +---------------- +-- Shazzrah -- +---------------- +L = DBM:GetModLocalization("Shazzrah") + +L:SetGeneralLocalization{ + name = "Shazzrah" +} + +---------------- +-- Sulfuron -- +---------------- +L = DBM:GetModLocalization("Sulfuron") + +L:SetGeneralLocalization{ + name = "Sulfuron Harbinger" +} + +---------------- +-- Golemagg -- +---------------- +L = DBM:GetModLocalization("Golemagg") + +L:SetGeneralLocalization{ + name = "Golemagg the Incinerator" +} + +----------------- +-- Majordomo -- +----------------- +L = DBM:GetModLocalization("Majordomo") + +L:SetGeneralLocalization{ + name = "Majordomo Executus" +} + +L:SetMiscLocalization{ + Kill = "Impossible! Stay your attack, mortals... I submit! I submit!" +} + +---------------- +-- Ragnaros -- +---------------- +L = DBM:GetModLocalization("Ragnaros-Classic") + +L:SetGeneralLocalization{ + name = "Ragnaros" +} +L:SetWarningLocalization{ + WarnSubmerge = "Submerge", + WarnEmerge = "Emerge" +} +L:SetTimerLocalization{ + TimerSubmerge = "Submerge", + TimerEmerge = "Emerge" +} +L:SetOptionLocalization{ + WarnSubmerge = "Show warning for submerge", + TimerSubmerge = "Show timer for submerge", + WarnEmerge = "Show warning for emerge", + TimerEmerge = "Show timer for emerge" +} +L:SetMiscLocalization{ + Submerge = "COME FORTH, MY SERVANTS! DEFEND YOUR MASTER!", + Pull = "Impudent whelps! You've rushed headlong to your own deaths! See now, the master stirs!\r\n" +} \ No newline at end of file diff --git a/AddOns/DBM-MC/localization.tw.lua b/AddOns/DBM-MC/localization.tw.lua new file mode 100644 index 000000000..45ef58661 --- /dev/null +++ b/AddOns/DBM-MC/localization.tw.lua @@ -0,0 +1,114 @@ +if GetLocale() ~= "zhTW" then return end +local L + +---------------- +-- Lucifron -- +---------------- +L = DBM:GetModLocalization("Lucifron") + +L:SetGeneralLocalization{ + name = "魯西弗隆" +} + +---------------- +-- Magmadar -- +---------------- +L = DBM:GetModLocalization("Magmadar") + +L:SetGeneralLocalization{ + name = "瑪格曼達" +} + +---------------- +-- Gehennas -- +---------------- +L = DBM:GetModLocalization("Gehennas") + +L:SetGeneralLocalization{ + name = "基赫納斯" +} + +------------ +-- Garr -- +------------ +L = DBM:GetModLocalization("Garr-Classic") + +L:SetGeneralLocalization{ + name = "加爾" +} + +-------------- +-- Geddon -- +-------------- +L = DBM:GetModLocalization("Geddon") + +L:SetGeneralLocalization{ + name = "迦頓男爵" +} + +---------------- +-- Shazzrah -- +---------------- +L = DBM:GetModLocalization("Shazzrah") + +L:SetGeneralLocalization{ + name = "沙斯拉爾" +} + +---------------- +-- Sulfuron -- +---------------- +L = DBM:GetModLocalization("Sulfuron") + +L:SetGeneralLocalization{ + name = "薩弗隆先驅者" +} + +---------------- +-- Golemagg -- +---------------- +L = DBM:GetModLocalization("Golemagg") + +L:SetGeneralLocalization{ + name = "『焚化者』古雷曼格" +} + +----------------- +-- Majordomo -- +----------------- +L = DBM:GetModLocalization("Majordomo") + +L:SetGeneralLocalization{ + name = "管理者埃克索圖斯" +} + +L:SetMiscLocalization{ + Kill = "不...不可能!等一下...我投降!我投降!" +} + +---------------- +-- Ragnaros -- +---------------- +L = DBM:GetModLocalization("Ragnaros-Classic") + +L:SetGeneralLocalization{ + name = "拉格納羅斯" +} +L:SetWarningLocalization{ + WarnSubmerge = "隱沒", + WarnEmerge = "現身" +} +L:SetTimerLocalization{ + TimerSubmerge = "隱沒", + TimerEmerge = "現身" +} +L:SetOptionLocalization{ + WarnSubmerge = "為隱沒顯示警告", + TimerSubmerge = "為隱沒顯示計時器", + WarnEmerge = "為現身顯示警告", + TimerEmerge = "為現身顯示計時器" +} +L:SetMiscLocalization{ + Submerge = "出現吧,我的奴僕! 保衛你們的主人!", + Pull = "你這個莽撞的傢伙!你簡直是自尋死路!看吧,你驚動了主人!" +} \ No newline at end of file diff --git a/AddOns/DBM-MogushanVaults/DBM-MogushanVaults.toc b/AddOns/DBM-MogushanVaults/DBM-MogushanVaults.toc index ba1c07360..8203d831b 100644 --- a/AddOns/DBM-MogushanVaults/DBM-MogushanVaults.toc +++ b/AddOns/DBM-MogushanVaults/DBM-MogushanVaults.toc @@ -1,14 +1,15 @@ -## Interface: 50400 -## X-Min-Interface: 50001 -## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Mogu'shan Vaults|r +## Interface: 60000 +## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r Mogu'shan Vaults +## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 魔古山宝库 +## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 魔古山寶庫 +## Notes-zhCN: |cff00ff00DBM-MogushanVaults|r +## Notes-zhTW: |cff00ff00DBM-MogushanVaults|r ## Author: MysticalOS -## RequiredDeps: DBM-Core ## SavedVariablesPerCharacter: DBMMogushanVaults_SavedVars, DBMMogushanVaults_SavedStats ## X-DBM-Mod: 1 ## X-DBM-Mod-Type: RAID ## X-DBM-Mod-Category: MOP ## X-DBM-Mod-Has-LFR : 1 -## X-DBM-Mod-Name: Mogu'shan Vaults ## X-DBM-Mod-Sort: 5 ## X-DBM-Mod-MapID: 1008 ## LoadOnDemand: 1 @@ -17,6 +18,7 @@ localization.en.lua localization.tw.lua localization.cn.lua + StoneGuard.lua Feng.lua GarajalTheSpiritbinder.lua diff --git a/AddOns/DBM-MogushanVaults/Elegon.lua b/AddOns/DBM-MogushanVaults/Elegon.lua index ee0146e98..3c0330933 100644 --- a/AddOns/DBM-MogushanVaults/Elegon.lua +++ b/AddOns/DBM-MogushanVaults/Elegon.lua @@ -213,7 +213,7 @@ function mod:SPELL_AURA_APPLIED(args) end DBM.Arrow:Hide() specWarnCore:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) -- timerDespawnFloor:Start()--Should be pretty accurate, may need minor tweak elseif args:IsSpellID(119360) then if not mod:IsHealer() then diff --git a/AddOns/DBM-MogushanVaults/Feng.lua b/AddOns/DBM-MogushanVaults/Feng.lua index 778c7b016..96e7420e2 100644 --- a/AddOns/DBM-MogushanVaults/Feng.lua +++ b/AddOns/DBM-MogushanVaults/Feng.lua @@ -228,7 +228,7 @@ function mod:SPELL_AURA_APPLIED(args) if args:IsPlayer() then specWarnWildSpark:Show() yellWildSpark:Yell() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("firerun") --火焰點你 sndWOP:Schedule(1.5, "countfour") sndWOP:Schedule(2.5, "countthree") diff --git a/AddOns/DBM-MogushanVaults/SpiritKings.lua b/AddOns/DBM-MogushanVaults/SpiritKings.lua index a86b0cb34..b219a11e0 100644 --- a/AddOns/DBM-MogushanVaults/SpiritKings.lua +++ b/AddOns/DBM-MogushanVaults/SpiritKings.lua @@ -301,7 +301,7 @@ function mod:SPELL_CAST_START(args) if args.sourceGUID == UnitGUID("target") then specWarnSleightOfHand:Show(args.sourceName) sndWOP:Play("stopatk") --注意停手 - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) end timerSleightOfHand:Start() timerSleightOfHandCD:Start() @@ -347,11 +347,11 @@ function mod:SPELL_CAST_START(args) if args.sourceGUID == UnitGUID("target") then sndWOP:Play("stopatk") --注意停手 specWarnShieldOfDarkness:Show(args.sourceName) - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) elseif mod:IsMagicDispeller() then sndWOP:Play("ex_mop_zyhd") --注意护盾 specWarnShieldOfDarkness:Show(args.sourceName) - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) end if mod:IsMagicDispeller() then sndWOP:Schedule(1.5, "dispelnow") --快驅散 @@ -425,11 +425,11 @@ function mod:SPELL_CAST_START(args) if isDispellerZ then specWarnImperviousShield:Show(args.sourceName) sndWOP:Schedule(1.5, "dispelnow") - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) elseif args.sourceGUID == UnitGUID("target") then specWarnImperviousShield:Show(args.sourceName) sndWOP:Play("stopatk") --注意停手 - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) end end end diff --git a/AddOns/DBM-Pandaria/DBM-Pandaria.toc b/AddOns/DBM-Pandaria/DBM-Pandaria.toc index c28760e7a..fdcce63e4 100644 --- a/AddOns/DBM-Pandaria/DBM-Pandaria.toc +++ b/AddOns/DBM-Pandaria/DBM-Pandaria.toc @@ -1,22 +1,26 @@ -## Interface: 50400 -## X-Min-Interface: 50001 -## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Pandaria|r +## Interface: 60000 +## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r Pandaria +## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 野外首领-Mop +## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 野外首領-Mop +## Notes-zhCN: |cff00ff00DBM-Pandaria|r +## Notes-zhTW: |cff00ff00DBM-Pandaria|r ## Author: MysticalOS/nBlueWiz +## LoadOnDemand: 1 ## RequiredDeps: DBM-Core ## SavedVariablesPerCharacter: DBMPandaria_SavedVars, DBMPandaria_SavedStats ## X-DBM-Mod: 1 ## X-DBM-Mod-Type: RAID ## X-DBM-Mod-Category: MOP ## X-DBM-Mod-Has-Single-Format: 1 -## X-DBM-Mod-Sort: 6 +## X-DBM-Mod-World-Boss: 1 +## X-DBM-Mod-Sort: 206 ## X-DBM-Mod-MapID: 870,1064 -## X-DBM-Mod-LoadCID: 62346,60491,69161,69099,71952,71954,72057,71953,71955 -## LoadOnDemand: 1 -## Dependencies: DBM-Core +## X-DBM-Mod-LoadCID: 62346,60491,69161,69099,71952,71954,72057,71953,71955,69768,69769,69841,69842 localization.en.lua localization.tw.lua localization.cn.lua + Anger.lua Salyis.lua Nalak.lua @@ -26,3 +30,4 @@ Yulon.lua Niuzao.lua Xuen.lua Ordos.lua +Zandalari.lua diff --git a/AddOns/DBM-Pandaria/Oondasta.lua b/AddOns/DBM-Pandaria/Oondasta.lua index 30215e9ee..e52852333 100644 --- a/AddOns/DBM-Pandaria/Oondasta.lua +++ b/AddOns/DBM-Pandaria/Oondasta.lua @@ -65,7 +65,7 @@ function mod:SPELL_CAST_START(args) specWarnPiercingRoar:Show() timerPiercingRoarCD:Start() if mod:IsManaUser() and mod:IsRanged() then - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("stopcast") --停止施法 else sndWOP:Play("aesoon") diff --git a/AddOns/DBM-Pandaria/Zandalari.lua b/AddOns/DBM-Pandaria/Zandalari.lua new file mode 100644 index 000000000..2b352c566 --- /dev/null +++ b/AddOns/DBM-Pandaria/Zandalari.lua @@ -0,0 +1,68 @@ +local mod = DBM:NewMod("Zandalari", "DBM-Pandaria") +local L = mod:GetLocalizedStrings() + +mod:SetRevision(("$Revision: 2 $"):sub(12, -3)) +mod:SetCreatureID(69768, 69769, 69841, 69842) +mod:SetZone() +mod:DisableWBEngageSync() + +mod:RegisterCombat("combat") + +mod:RegisterEventsInCombat( + "SPELL_CAST_START 138040 138044 138036 138042 138043", + "UNIT_DIED" +) + +local warnHorrificVisage = mod:NewSpellAnnounce(138040, 3) +local warnMeteorShower = mod:NewSpellAnnounce(138042, 3) +local warnVengefulSpirit = mod:NewSpellAnnounce(138043, 4) +local warnScarabSwarm = mod:NewSpellAnnounce(138036, 2) + +local specwarnHorrificVisage = mod:NewSpecialWarningSpell(138040, nil, nil, nil, 2) +local specwarnHorrificVisageInt = mod:NewSpecialWarningInterrupt(138040) +local specwarnThunderCrush = mod:NewSpecialWarningMove(138044) +local specwarnVengefulSpirit = mod:NewSpecialWarningRun(138043, mod:IsMelee() and not mod:IsTank())--Assume a tank is just going to tank it, assume a melee needs to run away + +local timerThunderCrushCD = mod:NewCDTimer(7, 138044) +local timerHorrificVisageCD = mod:NewCDTimer(7, 138040) + +function mod:SPELL_CAST_START(args) + local spellId = args.spellId + if spellId == 138040 then + warnHorrificVisage:Show() + if args:GetSrcCreatureID() == 69768 then--Scout + specwarnHorrificVisageInt:Show(args.sourceName) + else--Non interruptable + specwarnHorrificVisage:Show() + end + elseif spellId == 138044 then + specwarnThunderCrush:Show() + timerThunderCrushCD:Start() + elseif spellId == 138042 then + warnMeteorShower:Show() + elseif spellId == 138043 then + warnVengefulSpirit:Show() + specwarnVengefulSpirit:Show() + elseif spellId == 138036 then + warnScarabSwarm:Show() + end +end + +--done this way because you may be fighting two zandalari at once, so we don't want to end combat when first dies. +--Instead, when any zandalari dies, we wait 3 seconds, check for combat, if no combat it's a victory. +local function checkforWin(firstCheck) + if not InCombatLockdown() then + DBM:EndCombat(mod) + if firstCheck then + mod:Schedule(3, checkforWin)--Check again in case a spirit was lingering around keeping in combat + end + end +end + +function mod:UNIT_DIED(args) + local cid = self:GetCIDFromGUID(args.destGUID) + if cid == 69768 or cid == 69769 or cid == 69841 or cid == 69842 then + self:Unschedule(checkforWin) + self:Schedule(3, checkforWin, true)--Allow 3 seconds to leave combat + end +end diff --git a/AddOns/DBM-Party-MoP/DBM-Party-MoP.toc b/AddOns/DBM-Party-MoP/DBM-Party-MoP.toc index 909df5d32..4b4ef2167 100644 --- a/AddOns/DBM-Party-MoP/DBM-Party-MoP.toc +++ b/AddOns/DBM-Party-MoP/DBM-Party-MoP.toc @@ -1,7 +1,9 @@ -## Interface: 50400 -## X-Min-Interface: 50001 -## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Party-MoP|r -## RequiredDeps: DBM-Core +## Interface: 60000 +## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r Party-MoP +## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 五人副本-MoP +## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 五人副本-MoP +## Notes-zhCN: |cff00ff00DBM-Party-MoP|r +## Notes-zhTW: |cff00ff00DBM-Party-MoP|r ## SavedVariablesPerCharacter: DBMPartyMoP_SavedVars, DBMPartyMoP_SavedStats ## X-DBM-Mod: 1 ## X-DBM-Mod-Type: PARTY @@ -13,42 +15,51 @@ ## X-DBM-Mod-Name-zhCN: 队伍首领 (熊猫人之谜) ## X-DBM-Mod-Sort: 25 ## X-DBM-Mod-MapID: 960,961,959,962,994,1011,1007,1001,1004 -## LoadOnDemand: 1 ## Dependencies: DBM-Core +## LoadOnDemand: 1 localization.en.lua localization.tw.lua localization.cn.lua + JadeSerpentTemple\WiseMari.lua JadeSerpentTemple\LibraryEvent.lua JadeSerpentTemple\LiuFlameheart.lua JadeSerpentTemple\ShaofDoubt.lua + StormstoutBrewery\OokOok.lua StormstoutBrewery\Hoptallus.lua StormstoutBrewery\YanZhu.lua + ShadoPanMonastery\GuCloudStrike.lua ShadoPanMonastery\Snowdrift.lua ShadoPanMonastery\ShaofViolence.lua ShadoPanMonastery\TaranZhu.lua + GateSettingSun\Kiptilak.lua GateSettingSun\Gadok.lua GateSettingSun\Rimok.lua GateSettingSun\Raigonn.lua + MogushanPalace\TrialoftheKing.lua MogushanPalace\Gekkan.lua MogushanPalace\WeaponmasterXin.lua + NiuzaoTemple\Jinbak.lua NiuzaoTemple\Vojak.lua NiuzaoTemple\Pavalak.lua NiuzaoTemple\Neronok.lua + Scholomance\Chillheart.lua Scholomance\JandiceBarov.lua Scholomance\Rattlegore.lua Scholomance\LillianVoss.lua Scholomance\DarkmasterGandling.lua + ScarletHalls\Braun.lua ScarletHalls\Harlan.lua ScarletHalls\FlameweaverKoegler.lua + ScarletCathedral\ThalnosSoulrender.lua ScarletCathedral\Korlof.lua ScarletCathedral\Durand.lua diff --git a/AddOns/DBM-Party-WoD/Auchindoun/Azzakel.lua b/AddOns/DBM-Party-WoD/Auchindoun/Azzakel.lua index ee4e4a091..d8c5f8eab 100644 --- a/AddOns/DBM-Party-WoD/Auchindoun/Azzakel.lua +++ b/AddOns/DBM-Party-WoD/Auchindoun/Azzakel.lua @@ -40,7 +40,7 @@ local specWarnFelSpark = mod:NewSpecialWarningMove(153726) local timerCurtainOfFlameCD = mod:NewNextTimer(20, 153396)--20sec cd but can be massively delayed by adds phases local timerFelLash = mod:NewTargetTimer(7.5, 153234) local timerClawsOfArgus = mod:NewBuffActiveTimer(18, 153764) -local timerClawsOfArgusCD = mod:NewNextTimer(60, 153764) +local timerClawsOfArgusCD = mod:NewNextTimer(70, 153764) mod:AddRangeFrameOption(5, 153396) @@ -59,7 +59,7 @@ function mod:OnCombatStart(delay) self.vb.debuffCount = 0 self.vb.firstFlameDone = false timerCurtainOfFlameCD:Start(15.5-delay) - timerClawsOfArgusCD:Start(27-delay) + timerClawsOfArgusCD:Start(32-delay) end function mod:OnCombatEnd() diff --git a/AddOns/DBM-Party-WoD/Auchindoun/Nyami.lua b/AddOns/DBM-Party-WoD/Auchindoun/Nyami.lua index 227ba8dd7..db941c231 100644 --- a/AddOns/DBM-Party-WoD/Auchindoun/Nyami.lua +++ b/AddOns/DBM-Party-WoD/Auchindoun/Nyami.lua @@ -14,7 +14,7 @@ mod:RegisterEventsInCombat( "SPELL_CAST_START 155327 153994" ) - +--TODO, soul vessel is probably wrong now. local warnSWP = mod:NewTargetAnnounce(154477, 2, nil, mod:IsHealer()) local warnSoulVessel = mod:NewSpellAnnounce(155327, 4) local warnTornSpirits = mod:NewSpellAnnounce(153991, 3) @@ -25,15 +25,15 @@ local specWarnSoulVesselEnd = mod:NewSpecialWarningEnd(155327) local specWarnTornSpirits = mod:NewSpecialWarningSwitch(153991, not mod:IsHealer()) local timerSoulVessel = mod:NewBuffActiveTimer(11.5, 155327) -local timerSoulVesselCD = mod:NewNextTimer(27, 155327) -local timerTornSpiritsCD = mod:NewNextTimer(22.5, 153991) +local timerSoulVesselCD = mod:NewCDTimer(27, 155327) +local timerTornSpiritsCD = mod:NewCDTimer(22.5, 153991) function mod:OnCombatStart(delay) timerSoulVesselCD:Start(6-delay) end function mod:SPELL_AURA_APPLIED(args) - if args.spellId == 154477 then + if args.spellId == 154477 and args:IsDestTypePlayer() then if mod:IsHealer() then sndWOP:Play("dispelnow") end @@ -51,7 +51,9 @@ function mod:SPELL_CAST_START(args) timerSoulVessel:Start() timerTornSpiritsCD:Start() timerSoulVesselCD:Start() - sndWOP:Play("findshadow") + if not mod:IsTank() then + sndWOP:Play("findshadow") + end elseif spellId == 153994 then sndWOP:Play("mobsoon") warnTornSpirits:Show() diff --git a/AddOns/DBM-Party-WoD/Auchindoun/ProtectorOfAuch.lua b/AddOns/DBM-Party-WoD/Auchindoun/ProtectorOfAuch.lua index 1b7f009a3..35dddc93b 100644 --- a/AddOns/DBM-Party-WoD/Auchindoun/ProtectorOfAuch.lua +++ b/AddOns/DBM-Party-WoD/Auchindoun/ProtectorOfAuch.lua @@ -40,7 +40,9 @@ function mod:ShieldTarget(targetname, uId) elseif self.Options.ShieldArrow then DBM.Arrow:ShowRunTo(targetname, 0, 8) end - sndWOP:Schedule(3, "findshield") + if not mod:IsTank() then + sndWOP:Schedule(3, "findshield") + end end function mod:OnCombatStart(delay) diff --git a/AddOns/DBM-Party-WoD/DBM-Party-WoD.toc b/AddOns/DBM-Party-WoD/DBM-Party-WoD.toc index 476006c93..2caf1096d 100644 --- a/AddOns/DBM-Party-WoD/DBM-Party-WoD.toc +++ b/AddOns/DBM-Party-WoD/DBM-Party-WoD.toc @@ -27,10 +27,6 @@ ## X-DBM-Mod-Name-zhCN: 队伍首领(德拉诺之王) ## X-DBM-Mod-Sort: 125 ## X-DBM-Mod-MapID: 1182, 1175, 1208, 1195, 1279, 1176, 1209, 1358 -## X-Curse-Packaged-Version: 6.0.4-31-g65bcc60 -## X-Curse-Project-Name: Deadly Boss Mods -## X-Curse-Project-ID: deadly-boss-mods -## X-Curse-Repository-ID: wow/deadly-boss-mods/mainline localization.en.lua localization.kr.lua localization.de.lua @@ -70,3 +66,4 @@ UBRS\Kyrak.lua UBRS\Tharbek.lua UBRS\Ragewing.lua UBRS\Zaela.lua +UBRS\UBRSTrash.lua diff --git a/AddOns/DBM-Party-WoD/EverBloom/ArchmageSol.lua b/AddOns/DBM-Party-WoD/EverBloom/ArchmageSol.lua index 6ca0d9aeb..532709365 100644 --- a/AddOns/DBM-Party-WoD/EverBloom/ArchmageSol.lua +++ b/AddOns/DBM-Party-WoD/EverBloom/ArchmageSol.lua @@ -36,7 +36,7 @@ function mod:SPELL_AURA_APPLIED(args) if spellId == 166492 and self:AntiSpam(12) then--Because the dumb spell has no cast Id, we can only warn when someone gets hit by one of rings. warnFireBloom:Show() specWarnFireBloom:Show() - elseif spellId == 166726 then--Because dumb spell has no cast Id, we can only warn when people get debuff from standing in it. + elseif spellId == 166726 and self:AntiSpam(10, args.destName) then--Because dumb spell has no cast Id, we can only warn when people get debuff from standing in it. warnFrozenRain:CombinedShow(0.5, args.destName) if args:IsPlayer() then sndWOP:Play("runaway") diff --git a/AddOns/DBM-Party-WoD/EverBloom/Xeritac.lua b/AddOns/DBM-Party-WoD/EverBloom/Xeritac.lua index ee14ca89b..f6f89d2c8 100644 --- a/AddOns/DBM-Party-WoD/EverBloom/Xeritac.lua +++ b/AddOns/DBM-Party-WoD/EverBloom/Xeritac.lua @@ -7,7 +7,7 @@ mod:SetCreatureID(84550) mod:SetEncounterID(1752)--TODO: VERIFY, "Boss 4" isn't descriptive enough mod:SetZone() -mod:RegisterCombat("combat_emote", L.Pull)--IEEU doesn't always work, so emote is fallback. +mod:RegisterCombat("combat_emote", L.Pull)--IEEU doesn't work, so emote is required. EDIT, emote doesn't work either wtf? mod:RegisterEventsInCombat( "SPELL_CAST_START 169248 169233 169382", @@ -16,6 +16,7 @@ mod:RegisterEventsInCombat( "UNIT_TARGETABLE_CHANGED" ) +--TODO, figure out why the hell emote pull doesn't work. Text is correct. local warnToxicSpiderling = mod:NewAddsLeftAnnounce("ej10492", 2) --local warnVenomCrazedPaleOne = mod:NewSpellAnnounce("ej10502", 3)--I can't find a way to detect these, at least not without flat out scanning all DAMAGE events but that's too much work. local warnInhale = mod:NewSpellAnnounce(169233, 3) @@ -27,9 +28,6 @@ local warnGaseousVolley = mod:NewSpellAnnounce(169248, 3) local specWarnConsume = mod:NewSpecialWarningSpell(169248) local specWarnGaseousVolley = mod:NewSpecialWarningSpell(169382, nil, nil, nil, 2) ---local timerConsumeCD = mod:NewCDTimer(34, 115297)--34-40 sec variation? is it even CD based? Health based? ---local timerGaseousVolleyCD = mod:NewCDTimer(25, 115297)--25-40. variation is too great, not using this timer until more data to find out why its all over place. - mod.vb.spiderlingCount = 8 mod.vb.phase2 = false @@ -45,14 +43,12 @@ function mod:SPELL_CAST_START(args) elseif spellId == 169248 then warnConsume:Show() specWarnConsume:Show() --- timerConsumeCD:Start() elseif spellId == 169382 then warnGaseousVolley:Show() specWarnGaseousVolley:Show() end end - function mod:UNIT_DIED(args) local cid = self:GetCIDFromGUID(args.destGUID) if cid == 84552 then @@ -70,7 +66,5 @@ function mod:UNIT_TARGETABLE_CHANGED() if not self.vb.phase2 then self.vb.phase2 = true warnPhase2:Show() --- timerGaseousVolleyCD:Start(18)--18 one pull 19 another. Very small sample size (2 pulls, needs verification) --- timerConsumeCD:Start()--38 one pull 43 next. Very small sample size (2 pulls, needs verification) end end diff --git a/AddOns/DBM-Party-WoD/EverBloom/Yalnu.lua b/AddOns/DBM-Party-WoD/EverBloom/Yalnu.lua index d0696d8c4..4fe2122ed 100644 --- a/AddOns/DBM-Party-WoD/EverBloom/Yalnu.lua +++ b/AddOns/DBM-Party-WoD/EverBloom/Yalnu.lua @@ -18,7 +18,7 @@ mod:RegisterEventsInCombat( local warnColossalBlow = mod:NewSpellAnnounce(169179, 2) local warnEntanglement = mod:NewSpellAnnounce(169251, 3) local warnFontofLife = mod:NewSpellAnnounce(169120, 3)--Does this need a switch warning too? -local warnGenesis = mod:NewSpellAnnounce(169251, 4) +local warnGenesis = mod:NewSpellAnnounce(169613, 4) local specWarnColossalBlow = mod:NewSpecialWarningSpell(169179, nil, nil, nil, 2) local specWarnEntanglement = mod:NewSpecialWarningSwitch(169251, mod:IsDps()) @@ -26,11 +26,11 @@ local specWarnGenesis = mod:NewSpecialWarningSwitch(169613)--Everyone. "Switch --Only timers that were consistent, others are all over the place. local timerFontOfLife = mod:NewNextTimer(15, 169120) -local timerGenesis = mod:NewNextTimer(60, 169613) +local timerGenesis = mod:NewNextTimer(60.5, 169613) function mod:OnCombatStart(delay) timerFontOfLife:Start(-delay) - timerGenesis:Start(30-delay) + timerGenesis:Start(25-delay) end function mod:SPELL_CAST_START(args) diff --git a/AddOns/DBM-Party-WoD/GrimRailDepot/BlackrockAssaultCommander.lua b/AddOns/DBM-Party-WoD/GrimRailDepot/BlackrockAssaultCommander.lua index c52d4ed93..894b113b5 100644 --- a/AddOns/DBM-Party-WoD/GrimRailDepot/BlackrockAssaultCommander.lua +++ b/AddOns/DBM-Party-WoD/GrimRailDepot/BlackrockAssaultCommander.lua @@ -14,7 +14,8 @@ mod:RegisterEventsInCombat( "SPELL_CAST_START 163550 160680", "SPELL_PERIODIC_DAMAGE 166570", "SPELL_PERIODIC_MISSED 166570", - "UNIT_TARGETABLE_CHANGED" + "UNIT_TARGETABLE_CHANGED", + "UNIT_DIED" ) local warnMortar = mod:NewSpellAnnounce(163550, 3) @@ -29,6 +30,7 @@ local yellSupressiveFire = mod:NewYell(160681) local specWarnSlagBlast = mod:NewSpecialWarningMove(166570) local timerSupressiveFire = mod:NewTargetTimer(10, 160681) +local boomer = mod:NewSpecialWarning("上炮台,快打炮!") local grenade = EJ_GetSectionInfo(9711) local mortar = EJ_GetSectionInfo(9712) @@ -52,6 +54,10 @@ function mod:SPELL_AURA_APPLIED(args) if args.spellId == 160681 and args:IsDestTypePlayer() then timerSupressiveFire:Start(args.destName) end + if args.spellId == 146703 and args:IsPlayer() and self:AntiSpam(10) and self.vb.phase == 2 then + sndWOP:Play("160702") + boomer:Show() + end end function mod:SPELL_CAST_START(args) diff --git a/AddOns/DBM-Party-WoD/GrimRailDepot/ThunderlordGeneral.lua b/AddOns/DBM-Party-WoD/GrimRailDepot/ThunderlordGeneral.lua index d4afb066f..33be06c5b 100644 --- a/AddOns/DBM-Party-WoD/GrimRailDepot/ThunderlordGeneral.lua +++ b/AddOns/DBM-Party-WoD/GrimRailDepot/ThunderlordGeneral.lua @@ -26,6 +26,7 @@ local specWarnFreezingSnareNear = mod:NewSpecialWarningClose(162066) local yellFreezingSnare = mod:NewYell(162066) local specWarnDiffusedEnergy = mod:NewSpecialWarningMove(161588) local specWarnMark = mod:NewSpecialWarningMoveAway(163447) +local yellMark = mod:NewYell(163447) local timerFreezingSnareCD = mod:NewNextTimer(20, 162066) local timerSpinningSpearCD = mod:NewNextTimer(20, 162058) @@ -64,6 +65,8 @@ function mod:SPELL_AURA_APPLIED(args) timerMarkCD:Start() if args:IsPlayer() then specWarnMark:Show() + yellMark:Yell() + sndWOP:Play("runout") end if self.Options.RangeFrame then if UnitDebuff("player", debuffCheck) then--You have debuff, show everyone @@ -92,9 +95,6 @@ function mod:SPELL_CAST_START(args) if spellId == 162066 then self:BossTargetScanner(80005, "FreezingSnareTarget", 0.04, 15) timerFreezingSnareCD:Start() - if mod:IsHealer() then - sndWOP:Play("dispelnow") - end elseif spellId == 162058 then warnSpinningSpear:Show() timerSpinningSpearCD:Start() diff --git a/AddOns/DBM-Party-WoD/IronDocks/GrimrailEnforcers.lua b/AddOns/DBM-Party-WoD/IronDocks/GrimrailEnforcers.lua index 644c6b9ff..5c31f7c29 100644 --- a/AddOns/DBM-Party-WoD/IronDocks/GrimrailEnforcers.lua +++ b/AddOns/DBM-Party-WoD/IronDocks/GrimrailEnforcers.lua @@ -27,14 +27,14 @@ local specWarnOgreTraps = mod:NewSpecialWarningSpell(163390, mod:IsRanged())-- local timerSanguineSphere = mod:NewTargetTimer(15, 163689) local timerSanguineSphereCD = mod:NewCDTimer(43.5, 163689) -local timerFlamingSlashCD = mod:NewCDTimer(43.5, 163665) -local timerOgreTrapsCD = mod:NewCDTimer(41, 163390)--41-45 variation. Usually 43, makes me wonder if those other 43s CAN be sooner. will have to see with more data. +local timerFlamingSlashCD = mod:NewCDTimer(29, 163665) +local timerOgreTrapsCD = mod:NewCDTimer(25, 163390)--41-45 variation. Usually 43, makes me wonder if those other 43s CAN be sooner. will have to see with more data. -local countdownFlamingSlash = mod:NewCountdown(43.5, 163665) +local countdownFlamingSlash = mod:NewCountdown(29, 163665) function mod:OnCombatStart(delay) - timerFlamingSlashCD:Start(8-delay) - countdownFlamingSlash:Start(8-delay) + timerFlamingSlashCD:Start(5-delay) + countdownFlamingSlash:Start(5-delay) timerOgreTrapsCD:Start(19.5-delay) timerSanguineSphereCD:Start(47-delay)--Cast is technically 45 but 47 is how long you have to kill before first shield which is what matters for high ranking CMs end diff --git a/AddOns/DBM-Party-WoD/IronDocks/Oshir.lua b/AddOns/DBM-Party-WoD/IronDocks/Oshir.lua index aac73bfae..63c10d462 100644 --- a/AddOns/DBM-Party-WoD/IronDocks/Oshir.lua +++ b/AddOns/DBM-Party-WoD/IronDocks/Oshir.lua @@ -25,14 +25,14 @@ local specWarnTimeToFeedOther = mod:NewSpecialWarningTarget(162415, mod:IsHealer local timerTimeToFeedCD = mod:NewCDTimer(22, 162415)--22 to 30 second variation. In CM targets random players, not just tank, so timer for all. function mod:OnCombatStart(delay) - timerTimeToFeedCD:Start(18-delay) + --timerTimeToFeedCD:Start(18-delay) end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 162415 then warnTimeToFeed:Show(args.destName) specWarnTimeToFeedOther:Show(args.destName) - timerTimeToFeedCD:Start() + --timerTimeToFeedCD:Start() if args:IsPlayer() then specWarnTimeToFeed:Show() end diff --git a/AddOns/DBM-Party-WoD/IronDocks/Skulloc.lua b/AddOns/DBM-Party-WoD/IronDocks/Skulloc.lua index 4c1d8628d..e715cd89a 100644 --- a/AddOns/DBM-Party-WoD/IronDocks/Skulloc.lua +++ b/AddOns/DBM-Party-WoD/IronDocks/Skulloc.lua @@ -39,7 +39,7 @@ end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 168398 then - warnRapidFire:Show(args.destname) + warnRapidFire:Show(args.destName) timerRapidFireCD:Start() if args:IsPlayer() then specWarnRapidFire:Show() diff --git a/AddOns/DBM-Party-WoD/SMBurialGrounds/Bonemaw.lua b/AddOns/DBM-Party-WoD/SMBurialGrounds/Bonemaw.lua index 31de8e881..6ed0d0bd1 100644 --- a/AddOns/DBM-Party-WoD/SMBurialGrounds/Bonemaw.lua +++ b/AddOns/DBM-Party-WoD/SMBurialGrounds/Bonemaw.lua @@ -24,8 +24,8 @@ local warnCorpseBreath = mod:NewSpellAnnounce(165578, 2) local specWarnBodySlam = mod:NewSpecialWarningSpell(154175, nil, nil, nil, 2) local specWarnInhale = mod:NewSpecialWarningRun(153804) -local timerBodySlamCD = mod:NewCDSourceTimer(32, 154175)--32-35 Variation -local timerCorpseBreathCD = mod:NewCDTimer(32, 165578, nil, false)--32-37 Variation, also not that important so off by default since there will already be up to 3 smash timers +local timerBodySlamCD = mod:NewCDSourceTimer(30, 154175)--32-35 Variation +local timerCorpseBreathCD = mod:NewCDTimer(28, 165578, nil, false)--32-37 Variation, also not that important so off by default since there will already be up to 3 smash timers local soundInhale = mod:NewSound(153804) @@ -41,14 +41,13 @@ function mod:SPELL_CAST_START(args) specWarnBodySlam:Show() end if args:GetSrcCreatureID() == 75452 then--Source is Bonemaw, not one of his adds - timerBodySlamCD:Start(32, args.sourceName, args.sourceGUID) + timerBodySlamCD:Start(30, args.sourceName, args.sourceGUID) else timerBodySlamCD:Start(14, args.sourceName, args.sourceGUID)--little guys use it more often. end elseif spellId == 165578 then warnCorpseBreath:Show() timerCorpseBreathCD:Start() - sndWOP:Play("breathsoon") end end @@ -61,9 +60,9 @@ end function mod:RAID_BOSS_EMOTE(msg) if msg:find("spell:153804") then--Slightly faster than combat log - sndWOP:Play("runaway") warnInhale:Show() specWarnInhale:Show() - soundInhale:Play() + --soundInhale:Play() + sndWOP:Play("153804") end end diff --git a/AddOns/DBM-Party-WoD/SMBurialGrounds/Nhallish.lua b/AddOns/DBM-Party-WoD/SMBurialGrounds/Nhallish.lua index ef8b80e80..a8dbc3a9a 100644 --- a/AddOns/DBM-Party-WoD/SMBurialGrounds/Nhallish.lua +++ b/AddOns/DBM-Party-WoD/SMBurialGrounds/Nhallish.lua @@ -43,6 +43,7 @@ function mod:SPELL_AURA_APPLIED(args) warnSoulShred:Show() specWarnSoulShred:Show() timerSoulShredCD:Start() + sndWOP:Play("killspirit") elseif spellId == 153067 then--SPELL_CAST_SUCCESS is usually missing so have to scan for debuffs warnVoidDevastation:Show() specWarnVoidDevastation:Show() diff --git a/AddOns/DBM-Party-WoD/SMBurialGrounds/SadanaBloodfury.lua b/AddOns/DBM-Party-WoD/SMBurialGrounds/SadanaBloodfury.lua index 7046c3930..87c17b02e 100644 --- a/AddOns/DBM-Party-WoD/SMBurialGrounds/SadanaBloodfury.lua +++ b/AddOns/DBM-Party-WoD/SMBurialGrounds/SadanaBloodfury.lua @@ -35,14 +35,15 @@ function mod:SPELL_CAST_SUCCESS(args) if spellId == 153240 then warnDaggerFall:Show() elseif spellId == 153153 then - sndWOP:Play("mobsoon") warnDarkCommunion:Show() specWarnDarkCommunion:Show() timerDarkCommunionCD:Start() countdownDarkCommunion:Start() + sndWOP:Play("mobsoon") elseif spellId == 164974 then specWarnDarkEclipse:Show() specWarnDarkEclipse:Show() timerDarkEclipseCD:Start() + sndWOP:Play("164974") end end diff --git a/AddOns/DBM-Party-WoD/Skyreach/Araknath.lua b/AddOns/DBM-Party-WoD/Skyreach/Araknath.lua index c40b08db8..b51f0ee8a 100644 --- a/AddOns/DBM-Party-WoD/Skyreach/Araknath.lua +++ b/AddOns/DBM-Party-WoD/Skyreach/Araknath.lua @@ -28,7 +28,7 @@ mod.vb.burstCount = 0 function mod:OnCombatStart(delay) self.vb.burstCount = 0 - timerBurstCD:Start(20-delay) + timerBurstCD:Start(20-delay, 1) end function mod:SPELL_CAST_START(args) @@ -45,7 +45,7 @@ function mod:SPELL_CAST_START(args) end function mod:SPELL_AURA_APPLIED(args) - if args.spellId == 154159 then + if args.spellId == 154159 and self:AntiSpam(2, 1) then warnEnergize:Show() timerEnergozeCD:Start() end diff --git a/AddOns/DBM-Party-WoD/Skyreach/Ranjit.lua b/AddOns/DBM-Party-WoD/Skyreach/Ranjit.lua index 613e06b39..36b022767 100644 --- a/AddOns/DBM-Party-WoD/Skyreach/Ranjit.lua +++ b/AddOns/DBM-Party-WoD/Skyreach/Ranjit.lua @@ -22,7 +22,8 @@ local warnPiercingRush = mod:NewTargetAnnounce(165731, 2)--EJ shows tank warnin local specWarnSpinningBlade = mod:NewSpecialWarningSpell(153544, false, nil, nil, 2) local specWarnFourWinds = mod:NewSpecialWarningSpell(156793, nil, nil, nil, 2) -local timerFourWinds = mod:NewCDTimer(30, 156793) +local timerFourWinds = mod:NewBuffActiveTimer(18, 156793) +local timerFourWindsCD = mod:NewCDTimer(30, 156793) function mod:OnCombatStart(delay) timerFourWinds:Start(-delay) @@ -37,6 +38,7 @@ function mod:SPELL_CAST_START(args) warnFourWinds:Show() specWarnFourWinds:Show() timerFourWinds:Start() + timerFourWindsCD:Start() sndWOP:Play("wwsoon") elseif spellId == 153315 then warnWindFall:Show() diff --git a/AddOns/DBM-Party-WoD/Skyreach/Rukhran.lua b/AddOns/DBM-Party-WoD/Skyreach/Rukhran.lua index 1cd68c6bf..620785b89 100644 --- a/AddOns/DBM-Party-WoD/Skyreach/Rukhran.lua +++ b/AddOns/DBM-Party-WoD/Skyreach/Rukhran.lua @@ -10,19 +10,25 @@ mod:SetZone() mod:RegisterCombat("combat") mod:RegisterEventsInCombat( - "SPELL_CAST_START 153810 153794" + "SPELL_CAST_START 153810 153794 159382" ) local warnSolarFlare = mod:NewSpellAnnounce(153810, 3) local warnPierceArmor = mod:NewSpellAnnounce(153794, 3, nil, mod:IsTank()) +local warnQuills = mod:NewSpellAnnounce(159382, 4) local specWarnSolarFlare = mod:NewSpecialWarningSwitch(153810, false)--Not everyone needs to, really just requires 1 person, unless it's harder on heroic/challenge mode and needs more, then i'll default all damage dealers local specWarnPierceArmor = mod:NewSpecialWarningSpell(153794, mod:IsTank()) +local specWarnQuills = mod:NewSpecialWarningSpell(159382, nil, nil, nil, 2) -local timerSolarFlare = mod:NewCDTimer(18, 153810) +local timerSolarFlareCD = mod:NewCDTimer(18, 153810) +local timerQuillsCD = mod:NewCDTimer(64, 159382)--Needs review function mod:OnCombatStart(delay) - timerSolarFlare:Start(11-delay) + timerSolarFlareCD:Start(11-delay) + if self:IsHeroic() then + timerQuillsCD:Start(33-delay)--Needs review + end end function mod:SPELL_CAST_START(args) @@ -30,7 +36,7 @@ function mod:SPELL_CAST_START(args) if spellId == 153810 then warnSolarFlare:Show() specWarnSolarFlare:Show() - timerSolarFlare:Start() + timerSolarFlareCD:Start() sndWOP:Play("mobsoon") if mod:IsDps() then sndWOP:Schedule(2, "mobkill") @@ -38,5 +44,9 @@ function mod:SPELL_CAST_START(args) elseif spellId == 153794 then warnPierceArmor:Show() specWarnPierceArmor:Show() + elseif spellId == 159382 then + warnQuills:Show() + specWarnQuills:Show() + timerQuillsCD:Start() end end diff --git a/AddOns/DBM-Party-WoD/Skyreach/Viryx.lua b/AddOns/DBM-Party-WoD/Skyreach/Viryx.lua index 75ebe27dc..4a1fd35db 100644 --- a/AddOns/DBM-Party-WoD/Skyreach/Viryx.lua +++ b/AddOns/DBM-Party-WoD/Skyreach/Viryx.lua @@ -30,7 +30,8 @@ local specWarnLensFlareCast = mod:NewSpecialWarningSpell(154032, nil, nil, nil, local specWarnLensFlare = mod:NewSpecialWarningMove(154043) local specWarnShielding = mod:NewSpecialWarningInterrupt(154055, mod:IsDps()) -local timerCastDownCD = mod:NewCDTimer(36, 153954) +local timerLenseFlareCD = mod:NewCDTimer(38, 154032) +local timerCastDownCD = mod:NewCDTimer(38, 153954) mod:AddSetIconOption("SetIconOnCastDown", 153954) @@ -38,6 +39,7 @@ mod.vb.lastGrab = nil function mod:OnCombatStart(delay) self.vb.lastGrab = nil + timerLenseFlareCD:Start(-delay) timerCastDownCD:Start(15-delay) end @@ -45,7 +47,7 @@ function mod:SPELL_AURA_APPLIED(args) if args.spellId == 154055 then if mod:IsTank() then sndWOP:Play("kickcast") - elseif (not mod:IsHealer()) then + else sndWOP:Play("helpkick") end warnShielding:Show(args.destName) @@ -102,5 +104,6 @@ function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, _, _, spellId) elseif spellId == 154032 then--Actual Lens Flare cast. 154043 is not cast, despite SUCCESS event. It only fires if beam makes contact with a player. Then SPELL_CAST_SUCCESS and SPELL_AURA_APPLIED fire warnLensFlare:Show() specWarnLensFlareCast:Show() + timerLenseFlareCD:Start() end end diff --git a/AddOns/DBM-Party-WoD/UBRS/Gorashan.lua b/AddOns/DBM-Party-WoD/UBRS/Gorashan.lua index 82b187f8f..2f664fbcf 100644 --- a/AddOns/DBM-Party-WoD/UBRS/Gorashan.lua +++ b/AddOns/DBM-Party-WoD/UBRS/Gorashan.lua @@ -21,12 +21,11 @@ mod:RegisterEventsInCombat( local warnPowerConduit = mod:NewCountAnnounce(166168, 3) local warnPowerConduitLeft = mod:NewAddsLeftAnnounce(166168, 2) -local specWarnPowerConduit = mod:NewSpecialWarningSpell(166168) - ---local timerPowerConduitCD = mod:NewCDTimer(20, 166168)--Data suggests it's probably health based because timing LOOKED consistent yet varied based on subtle dps differences +local specWarnPowerConduit = mod:NewSpecialWarningSpell(166168, nil, nil, nil, 2) +local specWarnPowerConduitEnded = mod:NewSpecialWarningEnd(166168) function mod:OnCombatStart(delay) --- timerPowerConduitCD:Start(-delay) + end function mod:SPELL_AURA_APPLIED(args) @@ -34,7 +33,6 @@ function mod:SPELL_AURA_APPLIED(args) warnPowerConduit:Cancel() warnPowerConduit:Schedule(0.5, args.amount or 1) specWarnPowerConduit:Show() --- timerPowerConduitCD:Start() end end function mod:SPELL_AURA_APPLIED_DOSE(args) @@ -46,7 +44,11 @@ end function mod:SPELL_AURA_REMOVED(args) if args.spellId == 166168 and self:IsInCombat() then - warnPowerConduitLeft:Show(args.amount or 0) + local amount = args.amount or 0 + warnPowerConduitLeft:Show(amount) + if amount == 0 then + specWarnPowerConduitEnded:Show() + end end end mod.SPELL_AURA_REMOVED_DOSE = mod.SPELL_AURA_REMOVED diff --git a/AddOns/DBM-Party-WoD/UBRS/Kyrak.lua b/AddOns/DBM-Party-WoD/UBRS/Kyrak.lua index 60d96e325..15328242d 100644 --- a/AddOns/DBM-Party-WoD/UBRS/Kyrak.lua +++ b/AddOns/DBM-Party-WoD/UBRS/Kyrak.lua @@ -2,7 +2,7 @@ local mod = DBM:NewMod(1227, "DBM-Party-WoD", 8, 559) local L = mod:GetLocalizedStrings() local sndWOP = mod:SoundMM("SoundWOP") -mod:SetRevision(("$Revision: 11380 $"):sub(12, -3)) +mod:SetRevision(("$Revision: 11886 $"):sub(12, -3)) mod:SetCreatureID(76021) mod:SetEncounterID(1758) mod:SetZone() @@ -11,28 +11,37 @@ mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_AURA_APPLIED 161203 162600", - "SPELL_CAST_START 161199 161203", + "SPELL_CAST_START 161199 161203 155037", "SPELL_PERIODIC_DAMAGE 161288", "SPELL_PERIODIC_MISSED 161288", - "UNIT_SPELLCAST_SUCCEEDED" + "UNIT_DIED", + "UNIT_SPELLCAST_SUCCEEDED boss1" ) -local warnDeblitatingFixation = mod:NewSpellAnnounce(161199, 2, nil, mod:IsTank()) +local warnDebilitatingFixation = mod:NewSpellAnnounce(161199, 4, nil, mod:IsTank()) +local warnEruption = mod:NewSpellAnnounce(155037, 4, nil, mod:IsTank()) local warnRejuvSerumCast = mod:NewCastAnnounce(161203, 3) local warnRejuvSerum = mod:NewTargetAnnounce(161203, 4, nil, mod:IsMagicDispeller()) local warnToxicFumes = mod:NewTargetAnnounce(162600, 3, nil, mod:IsHealer()) local warnVilebloodSerum = mod:NewSpellAnnounce(161209, 3)--Some may think this is spammy but the puddles tick literally instantly giving not much time to move before 2nd tick which may kill you. -local specWarnDeblitatingFixation = mod:NewSpecialWarningInterrupt(161199, mod:IsTank())--12 second cd, but tank can only interrupt every 15, hmm +local specWarnDebilitatingFixation = mod:NewSpecialWarningInterrupt(161199, mod:IsTank(), nil, nil, 3) +local specWarnEruption = mod:NewSpecialWarningMove(155037, mod:IsTank()) local specWarnRejuvSerum = mod:NewSpecialWarningDispel(161203, mod:IsMagicDispeller()) local specWarnToxicFumes = mod:NewSpecialWarningDispel(162600, mod:IsHealer()) local specWarnVilebloodSerum = mod:NewSpecialWarningMove(161288) +local timerDebilitatingCD = mod:NewNextTimer(20, 161199)--Every 20 seconds exactly, at least in challenge mode. +local timerEruptionCD = mod:NewCDTimer(10, 155037, nil, false)--10-15 sec variation. May be distracting or spammy since two of them --local timerRejuvSerumCD = mod:NewCDTimer(33, 161203, nil, mod:IsMagicDispeller())--33-40sec variation. Could also be health based so disabled for now. local timerVilebloodSerumCD = mod:NewCDTimer(9.5, 161209)--every 9-10 seconds +local countdownDebilitating = mod:NewCountdown(20, 161199, mod:IsTank()) + function mod:OnCombatStart(delay) --- timerRejuvSerumCD:Start(29-delay)--Insufficent sample size +-- timerRejuvSerumCD:Start(22.5-delay)--Insufficent sample size + timerDebilitatingCD:Start(12-delay)--Insufficent sample size + countdownDebilitating:Start(12-delay) end function mod:SPELL_AURA_APPLIED(args) @@ -40,10 +49,10 @@ function mod:SPELL_AURA_APPLIED(args) if spellId == 161203 and not args:IsDestTypePlayer() then warnRejuvSerum:Show(args.destName) specWarnRejuvSerum:Show(args.destName) - if mod:IsMagicDispeller() then - --sndWOP:Play("dispelboss") - end -- timerRejuvSerumCD:Start() + if mod:IsMagicDispeller() then + sndWOP:Play("dispelboss") + end elseif spellId == 162600 then warnToxicFumes:Show(args.destName) specWarnToxicFumes:Show(args.destName) @@ -54,37 +63,43 @@ function mod:SPELL_AURA_APPLIED(args) end function mod:SPELL_CAST_START(args) - if args.spellId == 161199 then - warnDeblitatingFixation:Show() - specWarnDeblitatingFixation:Show(args.sourceName) + local spellId = args.spellId + if spellId == 161199 then + warnDebilitatingFixation:Show() + specWarnDebilitatingFixation:Show(args.sourceName) + timerDebilitatingCD:Start() + countdownDebilitating:Start() if mod:IsTank() then sndWOP:Play("kickcast") - elseif (not mod:IsHealer()) then + else sndWOP:Play("helpkick") end - elseif args.spellId == 161203 then + elseif spellId == 161203 then warnRejuvSerumCast:Show() + elseif spellId == 155037 and self:IsInCombat() then + warnEruption:Show() + specWarnEruption:Show() + timerEruptionCD:Start(nil, args.sourceGUID) end end function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId) - if spellId == 161288 and destGUID == UnitGUID("player") and self:AntiSpam(3, 1) then--Goriona's Void zones + if spellId == 161288 and destGUID == UnitGUID("player") and self:AntiSpam(2, 1) then specWarnVilebloodSerum:Show() sndWOP:Play("runaway") end end mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE ---TODO, watch for blizzard to fix IEEU on this fight so we can use "boss1" instead -function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, _, _, spellId) --- "<58.9 23:54:07> [UNIT_SPELLCAST_SUCCEEDED] Drakonid Monstrosity [[target:Vileblood Serum::0:161209]]", -- [1996] - if spellId == 161209 and self:AntiSpam(3, 2) then - self:SendSync("VileSerum")--Syncing because IEEU is broken on fight and so there is no "boss1" +function mod:UNIT_DIED(args) + if self:GetCIDFromGUID(args.destGUID) == 82556 then + timerEruptionCD:Cancel(args.destGUID) end end -function mod:OnSync(event, arg) - if event == "VileSerum" then +function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, _, _, spellId) +-- "<58.9 23:54:07> [UNIT_SPELLCAST_SUCCEEDED] Drakonid Monstrosity [[target:Vileblood Serum::0:161209]]", -- [1996] + if spellId == 161209 and self:AntiSpam(3, 2) then warnVilebloodSerum:Show() timerVilebloodSerumCD:Start() end diff --git a/AddOns/DBM-Party-WoD/UBRS/Ragewing.lua b/AddOns/DBM-Party-WoD/UBRS/Ragewing.lua index fea1027e4..5fe5a2932 100644 --- a/AddOns/DBM-Party-WoD/UBRS/Ragewing.lua +++ b/AddOns/DBM-Party-WoD/UBRS/Ragewing.lua @@ -28,13 +28,11 @@ local specWarnEngulfingFire = mod:NewSpecialWarningSpell(154996, nil, nil, nil, local timerEngulfingFireCD = mod:NewCDTimer(22, 154996) local timerSwirlingWinds = mod:NewBuffActiveTimer(20, 167203) -local timerSwirlingWindsCD = mod:NewNextTimer(45, 167203) mod.vb.firstBreath = false function mod:OnCombatStart(delay) timerEngulfingFireCD:Start(13-delay)--Needs more data - timerSwirlingWindsCD:Start(40-delay)--Needs more data self.vb.firstBreath = false sndWOP:Schedule(12, "breathsoon") end @@ -56,7 +54,6 @@ mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED function mod:SPELL_AURA_REMOVED(args) if args.spellId == 167203 then - timerSwirlingWindsCD:Start() self.vb.firstBreath = false end end diff --git a/AddOns/DBM-Party-WoD/UBRS/UBRSTrash.lua b/AddOns/DBM-Party-WoD/UBRS/UBRSTrash.lua new file mode 100644 index 000000000..a3830206b --- /dev/null +++ b/AddOns/DBM-Party-WoD/UBRS/UBRSTrash.lua @@ -0,0 +1,129 @@ +local mod = DBM:NewMod("UBRSTrash", "DBM-Party-WoD", 8) +local L = mod:GetLocalizedStrings() +local Yike = mod:SoundMM("SoundWOP") + +mod:SetRevision(("$Revision: 11886 $"):sub(12, -3)) +--mod:SetModelID(47785) +mod:SetZone() + +mod.isTrashMod = true + +mod:RegisterEvents( + "SPELL_AURA_APPLIED 155586", + "SPELL_CAST_START 155505 169151 155572 155586 155588 154039 155037", + "UNIT_DIED", + "UNIT_SPELLCAST_SUCCEEDED" +) + +local warnDebilitatingRay = mod:NewCastAnnounce(155505, 4) +local warnSummonBlackIronVet = mod:NewCastAnnounce(169151, 4) +local warnVeilofShadow = mod:NewCastAnnounce(155586, 4)--Challenge mode only +local warnShadowBoltVolley = mod:NewCastAnnounce(155588, 3) +local warnEarthPounder = mod:NewSpellAnnounce(154749, 4, nil, mod:IsMelee()) +local warnSmash = mod:NewSpellAnnounce(155572, 4, nil, mod:IsTank()) +local warnFranticMauling = mod:NewSpellAnnounce(154039, 4, nil, mod:IsMelee()) +local warnEruption = mod:NewSpellAnnounce(155037, 4, nil, mod:IsTank()) + +local specWarnDebilitatingRay = mod:NewSpecialWarningInterrupt(155505, not mod:IsHealer()) +local specWarnSummonBlackIronVet = mod:NewSpecialWarningInterrupt(169151, not mod:IsHealer()) +local specWarnVeilofShadow = mod:NewSpecialWarningInterrupt(155586, not mod:IsHealer())--Challenge mode only +local specWarnVeilofShadowDispel = mod:NewSpecialWarningDispel(155586, mod:CanRemoveCurse()) +local specWarnShadowBoltVolley = mod:NewSpecialWarningInterrupt(155588, not mod:IsHealer()) +local specWarnSmash = mod:NewSpecialWarningMove(155572, mod:IsTank()) +local specWarnFranticMauling = mod:NewSpecialWarningMove(154039, mod:IsTank()) +local specWarnEruption = mod:NewSpecialWarningMove(155037, mod:IsTank()) + +local timerSmashCD = mod:NewCDTimer(13, 155572) +local timerEruptionCD = mod:NewCDTimer(10, 155037, nil, false)--10-15 sec variation. May be distracting or spammy since two of them + +mod:RemoveOption("HealthFrame") +mod:RemoveOption("SpeedKillTimer") + +function mod:SPELL_AURA_APPLIED(args) + if not self.Options.Enabled then return end + local spellId = args.spellId + if spellId == 155586 then + specWarnVeilofShadowDispel:Show(args.destName) + if mod:CanRemoveCurse() then + Yike:Play("dispelnow") + end + end +end + +function mod:SPELL_CAST_START(args) + if not self.Options.Enabled then return end + local spellId = args.spellId + if spellId == 155505 then + local sourceGUID = args.sourceGUID + warnDebilitatingRay:Show() + if sourceGUID == UnitGUID("target") or sourceGUID == UnitGUID("focus") then + specWarnDebilitatingRay:Show(args.sourceName) + if mod:IsTank() then + Yike:Play("kickcast") + else + Yike:Play("helpkick") + end + end + elseif spellId == 169151 then + warnSummonBlackIronVet:Show() + specWarnSummonBlackIronVet:Show(args.sourceName) + if mod:IsTank() then + Yike:Play("kickcast") + else + Yike:Play("helpkick") + end + elseif spellId == 155586 then + warnVeilofShadow:Show() + specWarnVeilofShadow:Show(args.sourceName) + if mod:IsTank() then + Yike:Play("kickcast") + else + Yike:Play("helpkick") + end + elseif spellId == 155588 then + warnShadowBoltVolley:Show() + specWarnShadowBoltVolley:Show(args.sourceName) + if mod:IsTank() then + Yike:Play("kickcast") + else + Yike:Play("helpkick") + end + elseif spellId == 155572 then + if self:AntiSpam(2, 1) then + warnSmash:Show() + specWarnSmash:Show() + if mod:IsTank() then + Yike:Play("runaway") + end + end + timerSmashCD:Start(nil, args.sourceGUID) + elseif spellId == 154039 and self:AntiSpam(2, 2) then + warnFranticMauling:Show() + specWarnFranticMauling:Show() + if mod:IsTank() then + Yike:Play("runaway") + end + elseif spellId == 155037 then + warnEruption:Show() + specWarnEruption:Show() + timerEruptionCD:Start(nil, args.sourceGUID) + if mod:IsTank() then + Yike:Play("runaway") + end + end +end + +function mod:UNIT_DIED(args) + local cid = self:GetCIDFromGUID(args.destGUID) + if cid == 77033 then + timerSmashCD:Cancel(args.destGUID) + elseif cid == 82556 then + timerEruptionCD:Cancel(args.destGUID) + end +end + +function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, _, _, spellId) + if spellId == 154749 and self:AntiSpam(2, 3) then + warnEarthPounder:Show() + end +end diff --git a/AddOns/DBM-Party-WoD/UBRS/Zaela.lua b/AddOns/DBM-Party-WoD/UBRS/Zaela.lua index 56064da5f..0c564722d 100644 --- a/AddOns/DBM-Party-WoD/UBRS/Zaela.lua +++ b/AddOns/DBM-Party-WoD/UBRS/Zaela.lua @@ -31,6 +31,8 @@ local timerZaelaReturns = mod:NewTimer(26.5, "timerZaelaReturns", 166041) local countdownDestructiveSmite = mod:NewCountdown(15.5, 155673) +local soundCyclone = mod:NewSound(155721) + function mod:OnCombatStart(delay) timerReboundingBladeCD:Start(-delay) timerDestructiveSmiteCD:Start(10-delay) @@ -50,7 +52,11 @@ function mod:SPELL_AURA_APPLIED(args) if args.spellId == 155721 then warnBlackIronCyclone:Show(args.destName) timerBlackIronCycloneCD:Start() - sndWOP:Play("runaway") + if args:IsPlayer() then + specWarnBlackIronCyclone:Show() + --soundCyclone:Play() + sndWOP:Play("runaway") + end end end @@ -65,6 +71,7 @@ function mod:UNIT_TARGETABLE_CHANGED() if UnitExists("boss1") then--Returning from air phase warnZaela:Show() specWarnZaela:Show() + timerBlackIronCycloneCD:Start(10) sndWOP:Play("phasechange") else--Leaving for air phase, may need to delay by a sec or so if boss1 still exists. timerZaelaReturns:Start() diff --git a/AddOns/DBM-Party-WoD/localization.en.lua b/AddOns/DBM-Party-WoD/localization.en.lua index 365188fbe..44cd25abf 100644 --- a/AddOns/DBM-Party-WoD/localization.en.lua +++ b/AddOns/DBM-Party-WoD/localization.en.lua @@ -205,3 +205,12 @@ L:SetTimerLocalization({ L:SetOptionLocalization({ timerZaelaReturns = "Show timer for when Zaela returns" }) + +------------- +-- UBRS Trash -- +------------- +L = DBM:GetModLocalization("UBRSTrash") + +L:SetGeneralLocalization({ + name = "UBRS Trash" +}) diff --git a/AddOns/DBM-ProvingGrounds/DBM-ProvingGrounds.toc b/AddOns/DBM-ProvingGrounds/DBM-ProvingGrounds.toc new file mode 100644 index 000000000..7ab598391 --- /dev/null +++ b/AddOns/DBM-ProvingGrounds/DBM-ProvingGrounds.toc @@ -0,0 +1,22 @@ +## Interface: 60000 +## X-Min-Interface: 50400 +## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Proving Grounds|r +## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0白虎試練場|r +## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0白虎试练场|r +## Author: MysticalOS +## LoadOnDemand: 1 +## RequiredDeps: DBM-Core +## SavedVariablesPerCharacter: DBMProvingGrounds_SavedVars, DBMProvingGrounds_SavedStats +## X-DBM-Mod: 1 +## X-DBM-Mod-Type: SCENARIO +## X-DBM-Mod-Category: WOD +## X-DBM-Mod-No-Statistics: 1 +## X-DBM-Mod-Name: Proving Grounds +## X-DBM-Mod-Name-zhTW: 白虎試練場 +## X-DBM-Mod-Name-zhCN: 白虎试练场 +## X-DBM-Mod-Sort: 140 +## X-DBM-Mod-MapID: 1148 +localization.en.lua +localization.tw.lua +localization.cn.lua +PGWhiteTiger.lua diff --git a/AddOns/DBM-ProvingGrounds/PGWhiteTiger.lua b/AddOns/DBM-ProvingGrounds/PGWhiteTiger.lua new file mode 100644 index 000000000..6d5cf376c --- /dev/null +++ b/AddOns/DBM-ProvingGrounds/PGWhiteTiger.lua @@ -0,0 +1,216 @@ +local mod = DBM:NewMod("d640", "DBM-ProvingGrounds", nil, nil, function(t) + if( GetLocale() == "deDE") then + return select(2, string.match(t, "(%S+): (%S+.%S+.%S+.%S+)")) -- "Feuerprobe: Tempel des Weißen Tigers QUEST nil" + else + return select(2, string.match(t, "(%S+.%S+): (%S+.%S+)")) or select(2, string.match(t, "(%S+.%S+):(%S+.%S+)")) + end +end) +local L = mod:GetLocalizedStrings() +local Yike = mod:SoundMM("SoundWOP") + +mod:SetRevision(("$Revision: 32 $"):sub(12, -3)) +mod:SetZone() + +--mod:RegisterCombat("scenario", 1148) + +mod:RegisterEvents( + "SPELL_CAST_START 147601 144374 144106 144401 142189 142238 145200", + "SPELL_AURA_APPLIED 144383 144404 145206", + "SPELL_AURA_APPLIED_DOSE 144383", + "SPELL_CAST_SUCCESS 144084 144091 144088 144086 144087 145260 142838 145198", + "UNIT_DIED", + "SCENARIO_UPDATE" +) + +--Tank +----Adds spawning +local warnRipperTank = mod:NewSpellAnnounce(144084, 2, nil, false)--145408 is healer version of mob +local warnFlamecallerTank = mod:NewSpellAnnounce(144091, 2)--145401 is healer version of mob +local warnWindGuard = mod:NewSpellAnnounce(144087, 3) +local warnAmbusher = mod:NewSpellAnnounce(144086, 4) +local warnConquerorTank = mod:NewSpellAnnounce(144088, 3)--145409 is healer version of mob +----Other Stuff +local warnPyroBlast = mod:NewCastAnnounce(147601, 3, 3)--Tooltip says 2 but it actually has 3 sec cast +local warnInvokeLava = mod:NewSpellAnnounce(144374, 3) +local warnWindBlast = mod:NewSpellAnnounce(144106, 4)--Threat wipe & knockback, must taunt, very important +local warnEnrage = mod:NewTargetAnnounce(144404, 3) +local warnPowerfulSlam = mod:NewSpellAnnounce(144401, 4) +--Damager +local warnBanshee = mod:NewSpellAnnounce(142838, 4) +local warnAmberGlobule = mod:NewSpellAnnounce(142189, 4) +local warnHealIllusion = mod:NewCastAnnounce(142238, 4) +--Healer +local warnStinger = mod:NewSpellAnnounce(145198, 3) +local warnSonicBlast = mod:NewSpellAnnounce(145200, 3) +local warnAquaBomb = mod:NewTargetAnnounce(145206, 3) +local warnBurrow = mod:NewTargetAnnounce(145260, 2) + +--Tank +local specWarnPyroBlast = mod:NewSpecialWarningInterrupt(147601, false) +local specWarnInvokeLava = mod:NewSpecialWarningSpell(144374, nil, nil, nil, 2) +local specWarnInvokeLavaSIS = mod:NewSpecialWarningMove(144383) +local specWarnWindBlast = mod:NewSpecialWarningSpell(144106) +local specWarnAmbusher = mod:NewSpecialWarningSwitch(144086) +local specWarnPowerfulSlam = mod:NewSpecialWarningMove(144401) +--Damager +local specWarnAmberGlob = mod:NewSpecialWarningSpell(142189) +local specWarnHealIllusion = mod:NewSpecialWarningInterrupt(142238) +local specWarnBanshee = mod:NewSpecialWarningSwitch(142838) +--Healer +local specWarnStinger = mod:NewSpecialWarningSpell(145198, false) +local specWarnSonicBlast = mod:NewSpecialWarningInterrupt(145200, false)--have to be pretty damn fast to interrupt this, off by default and for the very skilled mainly +local specWarnAquaBomb = mod:NewSpecialWarningTarget(145206)--It's cast too often to dispel them off, so it's better as a target warning. + +--Tank +local timerWindBlastCD = mod:NewNextTimer(21, 144106) +local timerPowerfulSlamCD = mod:NewCDTimer(15, 144401)--15-17sec variation +--Damager +local timerAmberGlobCD = mod:NewNextTimer(10.5, 142189) +local timerHealIllusionCD = mod:NewNextTimer(20, 142238) +--Healer +local timerAquaBombCD = mod:NewCDTimer(12, 145206, nil, false)--12-22 second variation? off by default do to this +local timerSonicBlastCD = mod:NewCDTimer(6, 145200)--8-11sec variation + +local countdownTimer = mod:NewCountdownFades(10, 141582) + +mod:RemoveOption("HealthFrame") +mod:RemoveOption("SpeedKillTimer") + +local started = false + +function mod:SPELL_CAST_START(args) + local spellId = args.spellId + if spellId == 147601 then + warnPyroBlast:Show() + specWarnPyroBlast:Show(args.sourceName) + elseif spellId == 144374 then + warnInvokeLava:Show() + specWarnInvokeLava:Show() + elseif spellId == 144106 and self:AntiSpam(2.5, 2) then + warnWindBlast:Show() + specWarnWindBlast:Show() + timerWindBlastCD:Start(args.sourceGUID) + elseif spellId == 144401 and self:AntiSpam(2.5, 3) then + warnPowerfulSlam:Show() + specWarnPowerfulSlam:Show() + timerPowerfulSlamCD:Start(args.sourceGUID) + elseif spellId == 142189 then + warnAmberGlobule:Show() + specWarnAmberGlob:Show() + timerAmberGlobCD:Start(args.sourceGUID) + elseif spellId == 142238 then + warnHealIllusion:Show() + specWarnHealIllusion:Show(args.sourceName) + timerHealIllusionCD:Start(args.sourceGUID) + elseif spellId == 145200 then + warnSonicBlast:Show() + specWarnSonicBlast:Show(args.sourceName) + timerSonicBlastCD:Start(args.sourceGUID) + end +end + +function mod:SPELL_AURA_APPLIED(args) + local spellId = args.spellId + if spellId == 144383 and args:IsPlayer() and self:AntiSpam(1.5, 1) then + specWarnInvokeLavaSIS:Show() + elseif spellId == 144404 then + warnEnrage:Show(args.destName) + elseif spellId == 145206 then + warnAquaBomb:Show(args.destName) + specWarnAquaBomb:Show(args.destName) + timerAquaBombCD:Start(args.sourceGUID) + Yike:Play("dispelnow") + end +end +mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED + +--[[ +--new Damager adds (at this time not worth adding that i can see. They don't spawn mid round like tank ones, they all spawn at wave start) +"<41.9 18:54:22> [CLEU] SPELL_CAST_SUCCESS#false#0xF131159C00001436#Large Illusionary Amber-Weaver#2632#0##nil#-2147483648#-2147483648#142835#Illusionary Amber-Weaver#1", -- [273] +"<41.9 18:54:22> [CLEU] SPELL_CAST_SUCCESS#false#0xF13116F600001437#Large Illusionary Banana-Tosser#2632#0##nil#-2147483648#-2147483648#142839#Illusionary Banana-Tosser#1", -- [274] +"<76.9 18:54:57> [CLEU] SPELL_CAST_SUCCESS#false#0xF13115A400001499#Small Illusionary Mystic#2632#0##nil#-2147483648#-2147483648#142833#Illusionary Mystic#1", -- [569] +--New Healer Adds +"<48.7 18:00:50> [CLEU] SPELL_CAST_SUCCESS#false#0xF1311A90000005B9#Small Illusionary Ripper#2632#0##nil#-2147483648#-2147483648#145408#Illusionary Ripper#1", -- [1183] +"<3.6 18:00:05> [CLEU] SPELL_CAST_SUCCESS#false#0xF1311A960000057D#Small Illusionary Hive-Singer#2632#0##nil#-2147483648#-2147483648#145198#Illusionary Hive-Singer#1", -- [96] +"<3.6 18:00:05> [CLEU] SPELL_CAST_SUCCESS#false#0xF1311A980000057E#Small Illusionary Aqualyte#2632#0##nil#-2147483648#-2147483648#145204#Illusionary Aqualyte#1", -- [97] +"<48.7 18:00:50> [CLEU] SPELL_CAST_SUCCESS#false#0xF1311AC2000005B8#Unknown#2632#0##nil#-2147483648#-2147483648#145258#Illusionary Tunneler#1", -- [1182] +"<208.5 18:03:30> [CLEU] SPELL_CAST_SUCCESS#false#0xF1311A9400000647#Unknown#2632#0##nil#-2147483648#-2147483648#145409#Illusionary Conqueror#1", -- [5867] +"<328.4 18:05:29> [CLEU] SPELL_CAST_SUCCESS#false#0xF1311A93000006C8#Large Illusionary Flamecaller#2632#0##nil#-2147483648#-2147483648#145401#Illusionary Flamecaller#1", -- [9132] +--]] +function mod:SPELL_CAST_SUCCESS(args) + local spellId = args.spellId + if spellId == 144084 and self:AntiSpam(2, 4) then + warnRipperTank:Show() + elseif spellId == 144091 and self:AntiSpam(2, 10) then + warnFlamecallerTank:Show() + elseif spellId == 144088 and self:AntiSpam(2, 5) then + warnConquerorTank:Show() + elseif spellId == 144086 and self:AntiSpam(2, 6) then + warnAmbusher:Show() + specWarnAmbusher:Show() + elseif spellId == 144087 and self:AntiSpam(2, 7) then + warnWindGuard:Show() + elseif spellId == 145260 and self:AntiSpam(2, 8) then + warnBurrow:Show(args.destName) + elseif spellId == 142838 and self:AntiSpam(2, 9) then + warnBanshee:Show() + specWarnBanshee:Show() + elseif spellId == 145198 and self:AntiSpam(2, 11) then + warnStinger:Show() + specWarnStinger:Show() + end +end + +function mod:UNIT_DIED(args) + local cid = self:GetCIDFromGUID(args.destGUID) + if cid == 71076 or cid == 71069 then--Illusionary Mystic + timerHealIllusionCD:Cancel(args.destGUID) + elseif cid == 71077 or cid == 71068 then--Illusionary Amber-Weave + timerAmberGlobCD:Cancel(args.destGUID) + elseif cid == 71834 or cid == 71833 then--Illusionary Wind-Guard + timerWindBlastCD:Cancel(args.destGUID) + elseif cid == 71842 or cid == 71841 then--Illusionary Conqueror (Tank version of mob) + timerPowerfulSlamCD:Cancel(args.destGUID) + elseif cid == 72344 or cid == 72346 then--Illusionary Aqualyte + timerAquaBombCD:Cancel(args.destGUID) + elseif cid == 72342 or cid == 72343 then--Illusionary Hive-Singer + timerSonicBlastCD:Cancel(args.destGUID) + end +end + +function mod:SCENARIO_UPDATE(newStep) + local diffID, currWave, maxWave, duration = C_Scenario.GetProvingGroundsInfo() + if diffID > 0 then + started = true + countdownTimer:Cancel() + countdownTimer:Start(duration) + if DBM.Options.AutoRespond then--Use global whisper option + self:RegisterShortTermEvents( + "CHAT_MSG_WHISPER" + ) + end + elseif started then + started = false + countdownTimer:Cancel() + self:UnregisterShortTermEvents() + end +end + +local mode = { + [1] = CHALLENGE_MODE_MEDAL1, + [2] = CHALLENGE_MODE_MEDAL2, + [3] = CHALLENGE_MODE_MEDAL3, + [4] = L.Endless, +} +function mod:CHAT_MSG_WHISPER(msg, name, _, _, _, status) + if status ~= "GM" then--Filter GMs + name = Ambiguate(name, "none") + local diffID, currWave, maxWave, duration = C_Scenario.GetProvingGroundsInfo() + local message = L.ReplyWhisper:format(UnitName("player"), mode[diffID], currWave) + if msg == "status" then + SendChatMessage(message, "WHISPER", nil, name) + elseif self:AntiSpam(20, name) then--If not "status" then auto respond only once per 20 seconds per person. + SendChatMessage(message, "WHISPER", nil, name) + end + end +end diff --git a/AddOns/DBM-ProvingGrounds/localization.cn.lua b/AddOns/DBM-ProvingGrounds/localization.cn.lua new file mode 100644 index 000000000..996566069 --- /dev/null +++ b/AddOns/DBM-ProvingGrounds/localization.cn.lua @@ -0,0 +1,7 @@ +if GetLocale() ~= "zhCN" then return end +local L + +------------------------ +-- White TIger Temple -- +------------------------ +L= DBM:GetModLocalization("d640") diff --git a/AddOns/DBM-ProvingGrounds/localization.en.lua b/AddOns/DBM-ProvingGrounds/localization.en.lua new file mode 100644 index 000000000..d02501682 --- /dev/null +++ b/AddOns/DBM-ProvingGrounds/localization.en.lua @@ -0,0 +1,11 @@ +local L + +------------------------ +-- White TIger Temple -- +------------------------ +L= DBM:GetModLocalization("d640") + +L:SetMiscLocalization({ + Endless = "Endless",--Could not find a global for this one. + ReplyWhisper = " %s is busy in Proving Grounds (Mode: %s Wave: %d)" +}) diff --git a/AddOns/DBM-ProvingGrounds/localization.tw.lua b/AddOns/DBM-ProvingGrounds/localization.tw.lua new file mode 100644 index 000000000..7ae5a1b92 --- /dev/null +++ b/AddOns/DBM-ProvingGrounds/localization.tw.lua @@ -0,0 +1,7 @@ +if GetLocale() ~= "zhTW" then return end +local L + +------------------------ +-- White TIger Temple -- +------------------------ +L= DBM:GetModLocalization("d640") diff --git a/AddOns/DBM-StatusBarTimers/DBM-StatusBarTimers.toc b/AddOns/DBM-StatusBarTimers/DBM-StatusBarTimers.toc index fc94dcccf..62eebd657 100644 --- a/AddOns/DBM-StatusBarTimers/DBM-StatusBarTimers.toc +++ b/AddOns/DBM-StatusBarTimers/DBM-StatusBarTimers.toc @@ -12,7 +12,7 @@ ## LoadOnDemand: 0 ## DefaultState: enabled ## X-Website: http://www.deadlybossmods.com -## X-Curse-Packaged-Version: 6.0.4-31-g65bcc60 +## X-Curse-Packaged-Version: 6.0.5 ## X-Curse-Project-Name: Deadly Boss Mods ## X-Curse-Project-ID: deadly-boss-mods ## X-Curse-Repository-ID: wow/deadly-boss-mods/mainline diff --git a/AddOns/DBM-TerraceofEndlessSpring/DBM-TerraceofEndlessSpring.toc b/AddOns/DBM-TerraceofEndlessSpring/DBM-TerraceofEndlessSpring.toc index 72cfe2918..24d1ea17e 100644 --- a/AddOns/DBM-TerraceofEndlessSpring/DBM-TerraceofEndlessSpring.toc +++ b/AddOns/DBM-TerraceofEndlessSpring/DBM-TerraceofEndlessSpring.toc @@ -1,6 +1,9 @@ -## Interface: 50400 -## X-Min-Interface: 50001 -## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Terrace of Endless Spring|r +## Interface: 60000 +## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r Terrace of Endless Spring +## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 永春台 +## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 豐泉台 +## Notes-zhCN: |cff00ff00DBM-TerraceofEndlessSpring|r +## Notes-zhTW: |cff00ff00DBM-TerraceofEndlessSpring|r ## Author: MysticalOS ## RequiredDeps: DBM-Core ## SavedVariablesPerCharacter: DBMTerraceofEndlessSpring_SavedVars, DBMTerraceofEndlessSpring_SavedStats, ShaAssistDB @@ -19,6 +22,7 @@ localization.en.lua localization.tw.lua localization.cn.lua + ProtectorsofEndless.lua Tsulong.lua LeiShi.lua diff --git a/AddOns/DBM-TerraceofEndlessSpring/ProtectorsofEndless.lua b/AddOns/DBM-TerraceofEndlessSpring/ProtectorsofEndless.lua index febf1349d..5f5934f4c 100644 --- a/AddOns/DBM-TerraceofEndlessSpring/ProtectorsofEndless.lua +++ b/AddOns/DBM-TerraceofEndlessSpring/ProtectorsofEndless.lua @@ -298,7 +298,7 @@ function mod:OnCombatStart(delay) if myGroup == 1 then outgroup = true specWarnYourGroup:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("mobsoon") --準備小怪 end end) @@ -392,9 +392,9 @@ function mod:SPELL_AURA_APPLIED(args) if args:IsPlayer() then if (args.amount or 1) >= 9 then specWarnCorruptedEssence:Show(args.amount) - self:Schedule(1, function() DBM.Flash:Shake(1, 0, 0) end) - self:Schedule(1.5, function() DBM.Flash:Shake(0, 0, 1) end) - self:Schedule(2, function() DBM.Flash:Shake(1, 0, 0) end) + -- self:Schedule(1, function() DBM.Flash:Shake(1, 0, 0) end) + -- self:Schedule(1.5, function() DBM.Flash:Shake(0, 0, 1) end) + -- self:Schedule(2, function() DBM.Flash:Shake(1, 0, 0) end) sndWOP:Schedule(1, "mobenough") --能量已滿 遠離小怪 end end @@ -537,7 +537,7 @@ function mod:SPELL_CAST_SUCCESS(args) if myGroup == 1 then outgroup = true specWarnYourGroup:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("mobsoon") end if myGroup ~= 1 and outgroup then @@ -553,7 +553,7 @@ function mod:SPELL_CAST_SUCCESS(args) if myGroup == 2 then outgroup = true specWarnYourGroup:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("mobsoon") --準備小怪 end if myGroup ~= 2 and outgroup then @@ -569,7 +569,7 @@ function mod:SPELL_CAST_SUCCESS(args) if myGroup == 3 then outgroup = true specWarnYourGroup:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("mobsoon") end if myGroup ~= 3 and outgroup then @@ -585,7 +585,7 @@ function mod:SPELL_CAST_SUCCESS(args) if myGroup == 4 then outgroup = true specWarnYourGroup:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("mobsoon") end if myGroup ~= 4 and outgroup then @@ -602,7 +602,7 @@ function mod:SPELL_CAST_SUCCESS(args) if myGroup == 5 then outgroup = true specWarnYourGroup:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("mobsoon") end if myGroup ~= 5 and outgroup then diff --git a/AddOns/DBM-TerraceofEndlessSpring/ShaofFear.lua b/AddOns/DBM-TerraceofEndlessSpring/ShaofFear.lua index a7f07a7d8..c9eb04d02 100644 --- a/AddOns/DBM-TerraceofEndlessSpring/ShaofFear.lua +++ b/AddOns/DBM-TerraceofEndlessSpring/ShaofFear.lua @@ -218,7 +218,7 @@ function mod:LeavePlatform() if not warnedBreath then warnedBreath = true sndWOP:Play("ex_mop_tenkj") --10秒後恐懼之息 - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Schedule(5.5, "countfive") sndWOP:Schedule(6.5, "countfour") sndWOP:Schedule(7.5, "countthree") @@ -274,7 +274,7 @@ function mod:OnCombatStart(delay) self:Schedule(23.3, function() if not onPlatform then sndWOP:Play("ex_mop_tenkj") --10秒後恐懼之息 - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Schedule(5.5, "countfive") sndWOP:Schedule(6.5, "countfour") sndWOP:Schedule(7.5, "countthree") @@ -306,7 +306,7 @@ function mod:SPELL_AURA_APPLIED(args) if (not onPlatform) and (phase == 1) and (not warnedBreath) then warnedBreath = true sndWOP:Play("ex_mop_tenkj") --10秒後恐懼之息 - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Schedule(5.5, "countfive") sndWOP:Schedule(6.5, "countfour") sndWOP:Schedule(7.5, "countthree") @@ -404,7 +404,7 @@ function mod:SPELL_AURA_APPLIED(args) specWarnshuipoYou:Show() yellshuipo:Yell() if not UnitBuff("player", GetSpellInfo(120268)) then - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("runout") end else @@ -433,7 +433,7 @@ function mod:SPELL_AURA_APPLIED(args) if lastyongshi then specWarnzyg:Show(lastyongshi) end - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_mop_zyg") --轉移光 end lastyongshi = args.destName @@ -532,7 +532,7 @@ function mod:SPELL_CAST_START(args) end elseif args:IsSpellID(119888) and MobID and MobID == args:GetSrcCreatureID() then specWarnDeathBlossom:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) self:ScheduleMethod(40, "CheckPlatformLeaved") sndWOP:Play("ex_mop_jykd") --劍雨快躲 elseif args:IsSpellID(120519) then @@ -549,7 +549,7 @@ function mod:SPELL_CAST_START(args) spout = 0 strike = 0 wsIcon = 7 - DBM.Flash:Shake(1, 1, 0) + -- DBM.Flash:Shake(1, 1, 0) sndWOP:Play("ex_mop_ymzb") elseif args:IsSpellID(120458) then --浮現 if yinmoCount == 1 then @@ -590,7 +590,7 @@ function mod:SPELL_CAST_START(args) spectimestart() elseif args:IsSpellID(120394) and self:AntiSpam(5, 1) then if UnitBuff("player", GetSpellInfo(120268)) then - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("stilldanger") end end diff --git a/AddOns/DBM-ThroneFourWinds/DBM-ThroneFourWinds.toc b/AddOns/DBM-ThroneFourWinds/DBM-ThroneFourWinds.toc index 37d5c31c5..95aed0e00 100644 --- a/AddOns/DBM-ThroneFourWinds/DBM-ThroneFourWinds.toc +++ b/AddOns/DBM-ThroneFourWinds/DBM-ThroneFourWinds.toc @@ -1,4 +1,4 @@ -## Interface: 50400 +## Interface: 60000 ## X-Min-Interface: 50001 ## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Throne of the Four Winds|r ## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0四風王座|r diff --git a/AddOns/DBM-ThroneofThunder/CouncilofElders.lua b/AddOns/DBM-ThroneofThunder/CouncilofElders.lua index c47fc5b0a..aa1a1530b 100644 --- a/AddOns/DBM-ThroneofThunder/CouncilofElders.lua +++ b/AddOns/DBM-ThroneofThunder/CouncilofElders.lua @@ -308,7 +308,7 @@ function mod:SPELL_CAST_START(args) warnTwistedFate:Show() specWarnTwistedFate:Show() timerTwistedFateCD:Start() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("killspirit") sndSpirit:Cancel("countthree") sndSpirit:Cancel("counttwo") @@ -515,7 +515,7 @@ function mod:SPELL_AURA_APPLIED(args) if args:IsPlayer() then specWarnMarkedSoul:Show() --BH DELETE soundMarkedSoul:Play() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("shadowrun") --快跑 暗影點你 end elseif args.spellId == 137166 then diff --git a/AddOns/DBM-ThroneofThunder/DBM-ThroneofThunder.toc b/AddOns/DBM-ThroneofThunder/DBM-ThroneofThunder.toc index afa035fa6..3fc614102 100644 --- a/AddOns/DBM-ThroneofThunder/DBM-ThroneofThunder.toc +++ b/AddOns/DBM-ThroneofThunder/DBM-ThroneofThunder.toc @@ -1,8 +1,10 @@ -## Interface: 50400 -## X-Min-Interface: 50200 -## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Throne of Thunder|r +## Interface: 60000 +## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r Throne of Thunder +## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 雷电王座 +## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 雷霆王座 +## Notes-zhCN: |cff00ff00DBM-ThroneofThunder|r +## Notes-zhTW: |cff00ff00DBM-ThroneofThunder|r ## Author: MysticalOS -## RequiredDeps: DBM-Core ## SavedVariablesPerCharacter: DBMThroneofThunder_SavedVars, DBMThroneofThunder_SavedStats ## X-DBM-Mod: 1 ## X-DBM-Mod-Type: RAID @@ -11,12 +13,13 @@ ## X-DBM-Mod-Name: Throne of Thunder ## X-DBM-Mod-Sort: 2 ## X-DBM-Mod-MapID: 1098 -## LoadOnDemand: 1 ## Dependencies: DBM-Core +## LoadOnDemand: 1 localization.en.lua localization.cn.lua localization.tw.lua + Jinrokh.lua Horridon.lua CouncilofElders.lua diff --git a/AddOns/DBM-ThroneofThunder/DarkAnimus.lua b/AddOns/DBM-ThroneofThunder/DarkAnimus.lua index 6cb810e94..f023f076e 100644 --- a/AddOns/DBM-ThroneofThunder/DarkAnimus.lua +++ b/AddOns/DBM-ThroneofThunder/DarkAnimus.lua @@ -145,7 +145,7 @@ function mod:SPELL_CAST_START(args) sndWOP:Cancel("counttwo") sndWOP:Cancel("countone") if mod:IsManaUser() and mod:IsRanged() then - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("stopcast") --停止施法 else sndWOP:Play("ex_tt_dfzj") --斷法震擊 @@ -296,7 +296,7 @@ function mod:RAID_BOSS_WHISPER(msg, npc) yellCrimsonWake:Yell() end ----BH DELETE soundCrimsonWake:Play() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("justrun") --快跑 self:SendSync("WakeTarget", UnitGUID("player")) end diff --git a/AddOns/DBM-ThroneofThunder/Durumu.lua b/AddOns/DBM-ThroneofThunder/Durumu.lua index 29a92f84e..0cb121a91 100644 --- a/AddOns/DBM-ThroneofThunder/Durumu.lua +++ b/AddOns/DBM-ThroneofThunder/Durumu.lua @@ -193,7 +193,7 @@ local function BeamEnded() sndWOP:Schedule(66, "countone") timerDisintegrationBeamCD:Start(186) mod:Schedule(176, function() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_tt_tenwj") --10秒後瓦解光束 sndWOP:Schedule(5, "countfive") sndWOP:Schedule(6, "countfour") @@ -209,7 +209,7 @@ local function BeamEnded() sndWOP:Schedule(39, "countone") timerDisintegrationBeamCD:Start() mod:Schedule(126, function() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_tt_tenwj") --10秒後瓦解光束 sndWOP:Schedule(5, "countfive") sndWOP:Schedule(6, "countfour") @@ -270,7 +270,7 @@ function mod:OnCombatStart(delay) timerLifeDrainCD:Start(151) timerDisintegrationBeamCD:Start(161-delay) self:Schedule(151, function() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_tt_tenwj") --10秒後瓦解光束 sndWOP:Schedule(5, "countfive") sndWOP:Schedule(6, "countfour") @@ -282,7 +282,7 @@ function mod:OnCombatStart(delay) timerLifeDrainCD:Start(210) timerDisintegrationBeamCD:Start(135-delay) self:Schedule(125, function() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_tt_tenwj") --10秒後瓦解光束 sndWOP:Schedule(5, "countfive") sndWOP:Schedule(6, "countfour") @@ -361,7 +361,7 @@ function mod:SPELL_CAST_SUCCESS(args) specWarnForceOfWill:Show() yellForceOfWill:Yell() if not self:IsDifficulty("lfr25") then - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("runaway") end else @@ -390,7 +390,7 @@ function mod:SPELL_CAST_SUCCESS(args) else specWarnBlueBeam:Show() end - DBM.Flash:Shake(0, 0, 1) + -- DBM.Flash:Shake(0, 0, 1) sndWOP:Play("ex_tt_lgzb") --藍光 end if self.Options.SetIconRays then @@ -401,7 +401,7 @@ function mod:SPELL_CAST_SUCCESS(args) lastRed = args.destName if args:IsPlayer() then specWarnRedBeam:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_tt_hgzb") --紅光 end if self.Options.SetIconRays then @@ -425,7 +425,7 @@ function mod:SPELL_CAST_SUCCESS(args) end if args:IsPlayer() then specWarnYellowBeam:Show() - DBM.Flash:Shake(1, 1, 0) + -- DBM.Flash:Shake(1, 1, 0) sndWOP:Play("ex_tt_hgsd") --黃光 end mod:Schedule(1.5, function() @@ -488,7 +488,7 @@ function mod:SPELL_AURA_APPLIED(args) self:Schedule(soundholdtime, function() if UnitDebuff("player", GetSpellInfo(133597)) then specWarnHold:Show(soundholdtime) - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("holdit") --快開自保 end end) @@ -528,7 +528,7 @@ function mod:SPELL_AURA_APPLIED(args) lingeringGazeTargets[#lingeringGazeTargets + 1] = args.destName if args:IsPlayer() then specWarnLingeringGaze:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_tt_xxns")--小心凝視 sndWOP:Schedule(1, "leavecenter") sndWOP:Schedule(2, "leavecenter") @@ -646,20 +646,20 @@ function mod:CHAT_MSG_MONSTER_EMOTE(msg, npc, _, _, target) --BH ADD if npc == azureFog then if lastBlue == UnitName("player") then - DBM.Flash:Shake(0, 0, 1) + -- DBM.Flash:Shake(0, 0, 1) sndWOP:Play("stopmove") --停止移動 else sndWOP:Play("ex_tt_lgcx") --蓝怪出現 end elseif npc == crimsonFog then if lastRed == UnitName("player") then - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("stopmove") --停止移動 else sndWOP:Play("ex_hong") --紅色快打 end elseif npc == amberFog then - DBM.Flash:Shake(1, 1, 0) + -- DBM.Flash:Shake(1, 1, 0) sndWOP:Play("ex_huang") --黃色快打 end --BH ADD END @@ -677,7 +677,7 @@ function mod:CHAT_MSG_MONSTER_EMOTE(msg, npc, _, _, target) end lifeDrained = true if target == UnitName("player") then - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) yellLifeDrainFix:Yell() sndWOP:Play("ex_tt_xxdn") --吸血點你 else @@ -747,7 +747,7 @@ function mod:UNIT_AURA(uId) else specWarnBlueBeam:Show() end - DBM.Flash:Shake(0, 0, 1) + -- DBM.Flash:Shake(0, 0, 1) sndWOP:Play("ex_tt_lgzb") --藍光 end --[[ if self.Options.SetIconRays then @@ -760,7 +760,7 @@ function mod:UNIT_AURA(uId) lastRed = name if name == UnitName("player") then specWarnRedBeam:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_tt_hgzb") --紅光 end --[[ if self.Options.SetIconRays then diff --git a/AddOns/DBM-ThroneofThunder/Horridon.lua b/AddOns/DBM-ThroneofThunder/Horridon.lua index 47add8e90..af96ac063 100644 --- a/AddOns/DBM-ThroneofThunder/Horridon.lua +++ b/AddOns/DBM-ThroneofThunder/Horridon.lua @@ -125,12 +125,12 @@ local function checksprange() if min and max then if min <= 8 then if mod:AntiSpam(1, 6) then - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWSP:Play("stilldanger") --危險 end elseif min <= 15 then if mod:AntiSpam(4, 5) then - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWSP:Play("killspirit") --靈魂快打 end -- elseif min >= 60 then @@ -342,7 +342,7 @@ function mod:SPELL_AURA_APPLIED(args) --BH MODIFY if mod.Options.ddyls then specWarnMending:Show(args.sourceName) - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("kickcast")--快打斷 end --BH MODIFY END @@ -373,7 +373,7 @@ function mod:SPELL_AURA_APPLIED(args) specWarnDireFixate:Show() --BH DELETE soundDireFixate:Play() -- BH ADD - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_tt_lhsd") sndWOP:Schedule(1,"ex_tt_lhsd") checksprange() @@ -520,7 +520,7 @@ function mod:OnSync(msg, target) if target == UnitName("player") then specWarnCharge:Show() yellCharge:Yell() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_tt_nbcf") sndWOP:Schedule(0.5,"ex_tt_nbcf") else diff --git a/AddOns/DBM-ThroneofThunder/JiKun.lua b/AddOns/DBM-ThroneofThunder/JiKun.lua index f27f21d82..06352c557 100644 --- a/AddOns/DBM-ThroneofThunder/JiKun.lua +++ b/AddOns/DBM-ThroneofThunder/JiKun.lua @@ -288,14 +288,14 @@ function mod:CHAT_MSG_MONSTER_EMOTE(msg, _, _, _, target) if MyAddDown(flockCount+1) then if self:IsDifficulty("normal10", "heroic10", "lfr25") then self:Schedule(34, function() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) end) specWarnFlock:Schedule(34, L.Lower, flockName, flockCount+1) sndWOP:Schedule(34, "ex_tt_xfxg") sndWOP:Schedule(40, "ex_tt_ddfh") else self:Schedule(24, function() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) end) specWarnFlock:Schedule(24, L.Lower, flockName, flockCount+1) sndWOP:Schedule(24, "ex_tt_xfxg") @@ -305,14 +305,14 @@ function mod:CHAT_MSG_MONSTER_EMOTE(msg, _, _, _, target) if MyAddUp(flockCount+1) then if self:IsDifficulty("normal10", "heroic10", "lfr25") then self:Schedule(34, function() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) end) specWarnFlock:Schedule(34, L.Upper, flockName, flockCount+1) sndWOP:Schedule(34, "ex_tt_sfxg") sndWOP:Schedule(40, "ex_tt_ddfh") else self:Schedule(24, function() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) end) specWarnFlock:Schedule(24, L.Upper, flockName, flockCount+1) sndWOP:Schedule(24, "ex_tt_sfxg") diff --git a/AddOns/DBM-ThroneofThunder/Jinrokh.lua b/AddOns/DBM-ThroneofThunder/Jinrokh.lua index 7e91a1183..7868b1e72 100644 --- a/AddOns/DBM-ThroneofThunder/Jinrokh.lua +++ b/AddOns/DBM-ThroneofThunder/Jinrokh.lua @@ -212,17 +212,17 @@ function mod:SPELL_AURA_APPLIED(args) inoizame = true sndWOP:Play("ex_tt_dlzh") --電離子化 if self.Options.SoundWOPIonM then - self:Schedule(7, function() DBM.Flash:Shake(1, 0, 0) end) - self:Schedule(7.5, function() DBM.Flash:Shake(0, 0, 1) end) - self:Schedule(8, function() DBM.Flash:Shake(1, 0, 0) end) + -- self:Schedule(7, function() DBM.Flash:Shake(1, 0, 0) end) + -- self:Schedule(7.5, function() DBM.Flash:Shake(0, 0, 1) end) + -- self:Schedule(8, function() DBM.Flash:Shake(1, 0, 0) end) sndIon:Schedule(7, "runout") sndIon:Schedule(8, "runout") else self:Schedule(16, function() if UnitDebuff("player", GetSpellInfo(138732)) then - DBM.Flash:Shake(1, 0, 0) - self:Schedule(0.5, function() DBM.Flash:Shake(0, 0, 1) end) - self:Schedule(1, function() DBM.Flash:Shake(1, 0, 0) end) + -- DBM.Flash:Shake(1, 0, 0) + -- self:Schedule(0.5, function() DBM.Flash:Shake(0, 0, 1) end) + -- self:Schedule(1, function() DBM.Flash:Shake(1, 0, 0) end) end end) sndIon:Schedule(16, "runout") --離開人群 @@ -322,7 +322,7 @@ function mod:RAID_BOSS_WHISPER(msg) DBM.RangeCheck:Show(8) end focusme = true - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_tt_sddn") --閃電點你 end end \ No newline at end of file diff --git a/AddOns/DBM-ThroneofThunder/LeiShen.lua b/AddOns/DBM-ThroneofThunder/LeiShen.lua index 36186e5c5..51969ba92 100644 --- a/AddOns/DBM-ThroneofThunder/LeiShen.lua +++ b/AddOns/DBM-ThroneofThunder/LeiShen.lua @@ -279,7 +279,7 @@ function mod:SPELL_CAST_START(args) warnThunderstruck:Show() specWarnThunderstruck:Show() timerThunderstruck:Start() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_tt_yllj") --遠離雷擊 if phase < 3 then timerThunderstruckCD:Start() @@ -306,14 +306,14 @@ function mod:SPELL_CAST_START(args) else timerLightningWhipCD:Start(30) end - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_tt_sdb") --閃電鞭 elseif args.spellId == 136478 then warnFusionSlash:Show() specWarnFusionSlash:Show() timerFussionSlashCD:Start() if UnitName("boss1target") == UnitName("player") then - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("carefly") --小心擊飛 elseif mod:IsTank() or mod:IsHealer() then sndWOP:Play("ex_tt_jlz") --巨雷斬 @@ -327,7 +327,7 @@ function mod:SPELL_AURA_APPLIED(args) timerDecapitateCD:Start() if args:IsPlayer() then specWarnDecapitate:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_tt_zs")--斬首快跑 else specWarnDecapitateOther:Show(args.destName) @@ -476,7 +476,7 @@ function mod:SPELL_AURA_APPLIED(args) timerCommandTarget:Start(args.destName) if args:IsPlayer() then specWarnHelmOfCommand:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("ex_tt_jtzy") --注意擊退 else local uId = DBM:GetRaidUnitId(args.destName) diff --git a/AddOns/DBM-ThroneofThunder/Megaera.lua b/AddOns/DBM-ThroneofThunder/Megaera.lua index bd55d0feb..3ec85efd3 100644 --- a/AddOns/DBM-ThroneofThunder/Megaera.lua +++ b/AddOns/DBM-ThroneofThunder/Megaera.lua @@ -153,7 +153,7 @@ local function warnTorrent(name) specWarnTorrentofIceYou:Show() timerTorrentofIce:Start() yellTorrentofIce:Yell() - DBM.Flash:Shake(0, 0, 1) + -- DBM.Flash:Shake(0, 0, 1) sndWOP:Play("justrun") --快跑 end else @@ -273,7 +273,7 @@ function mod:RAID_BOSS_WHISPER(msg) specWarnTorrentofIceYou:Show() timerTorrentofIce:Start() yellTorrentofIce:Yell() - DBM.Flash:Shake(0, 0, 1) + -- DBM.Flash:Shake(0, 0, 1) sndWOP:Play("justrun") --快跑 end end @@ -353,7 +353,7 @@ function mod:SPELL_AURA_APPLIED(args) specWarnCinders:Show() yellCinders:Yell() -- soundCinders:Play() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("firerun") --快跑 火焰點你 end if self.Options.HudMAP then diff --git a/AddOns/DBM-ThroneofThunder/Primordius.lua b/AddOns/DBM-ThroneofThunder/Primordius.lua index 9e9ba2357..b925d39e4 100644 --- a/AddOns/DBM-ThroneofThunder/Primordius.lua +++ b/AddOns/DBM-ThroneofThunder/Primordius.lua @@ -239,7 +239,7 @@ function mod:SPELL_AURA_APPLIED(args) if args:IsPlayer() then specWarnVolatilePathogen:Show() sndWOP:Play("holdit")--自保 - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) elseif mod:IsHealer() then sndWOP:Play("ex_tt_byt")--病原體出現 end @@ -260,7 +260,7 @@ function mod:SPELL_AURA_APPLIED(args) showspellinfo() elseif args.spellId == 140546 and args:IsPlayer() then specWarnFullyMutated:Show() - DBM.Flash:Shake(0, 1, 0) + -- DBM.Flash:Shake(0, 1, 0) timerFullyMutated:Start() sndWOP:Play("ex_tt_tbwc")--完美突變 end diff --git a/AddOns/DBM-ThroneofThunder/ToTTrash.lua b/AddOns/DBM-ThroneofThunder/ToTTrash.lua index 7e042f697..bbb26a87f 100644 --- a/AddOns/DBM-ThroneofThunder/ToTTrash.lua +++ b/AddOns/DBM-ThroneofThunder/ToTTrash.lua @@ -105,7 +105,7 @@ function mod:SPELL_AURA_APPLIED(args) stormEnergyTargets[#stormEnergyTargets + 1] = args.destName if args:IsPlayer() then specWarnStormEnergy:Show() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndWOP:Play("runout") else if self.Options.HudMAP then diff --git a/AddOns/DBM-ThroneofThunder/Tortos.lua b/AddOns/DBM-ThroneofThunder/Tortos.lua index 84a33c1f2..613851bd3 100644 --- a/AddOns/DBM-ThroneofThunder/Tortos.lua +++ b/AddOns/DBM-ThroneofThunder/Tortos.lua @@ -79,7 +79,7 @@ function mod:checkmydebuff() if not UnitIsDeadOrGhost("player") then if GetTime() - stomptime > 10 then specWarnCrystalShell:Show(shelldName) - DBM.Flash:Shake(1, 1, 0) + -- DBM.Flash:Shake(1, 1, 0) sndWOP:Play("ex_tt_sjsl")--水晶碎裂 end end @@ -133,7 +133,7 @@ function mod:OnCombatStart(delay) mod:checkmydebuff() else specWarnCrystalShell:Show(shelldName) - DBM.Flash:Shake(1, 1, 0) + -- DBM.Flash:Shake(1, 1, 0) sndWOP:Play("ex_tt_sjsl")--水晶碎裂 end end @@ -164,7 +164,7 @@ function mod:SPELL_CAST_START(args) specWarnStoneBreath:Show(args.sourceName) end timerBreathCD:Start() - DBM.Flash:Shake(1, 0, 0) + -- DBM.Flash:Shake(1, 0, 0) sndAE:Cancel("aesoon") sndAE:Cancel("countfive") sndAE:Cancel("countfour") @@ -249,7 +249,7 @@ function mod:SPELL_AURA_REMOVED(args) mod:checkmydebuff() else specWarnCrystalShell:Show(shelldName) - DBM.Flash:Shake(1, 1, 0) + -- DBM.Flash:Shake(1, 1, 0) sndWOP:Play("ex_tt_sjsl")--水晶碎裂 end end diff --git a/AddOns/DBM-Ulduar/Algalon.lua b/AddOns/DBM-Ulduar/Algalon.lua index b58d0e506..3a9b9407f 100644 --- a/AddOns/DBM-Ulduar/Algalon.lua +++ b/AddOns/DBM-Ulduar/Algalon.lua @@ -109,15 +109,7 @@ function mod:RAID_BOSS_EMOTE(msg) end function mod:CHAT_MSG_MONSTER_YELL(msg) - if msg == L.FirstPull or msg:find(L.FirstPull) then--Additional pull yell on first pull 11 seconds before actual combat, all timers +11, auto correct timers. - enrageTimer:Start(371) - timerNextBigBang:Start(101) - announcePreBigBang:Schedule(91) - timerCDCosmicSmash:Start(36) - timerNextCollapsingStar:Start(26) - timerCombatStart:Start(11) - warnFirstPull:Show() - elseif msg == L.Phase2 or msg:find(L.Phase2) then + if msg == L.Phase2 or msg:find(L.Phase2) then timerNextCollapsingStar:Cancel() warnPhase2:Show() end diff --git a/AddOns/DBM-Ulduar/DBM-Ulduar.toc b/AddOns/DBM-Ulduar/DBM-Ulduar.toc index b24ae932b..48131e416 100644 --- a/AddOns/DBM-Ulduar/DBM-Ulduar.toc +++ b/AddOns/DBM-Ulduar/DBM-Ulduar.toc @@ -1,10 +1,9 @@ -## Interface: 50400 -## X-Min-Interface: 50001 -## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Ulduar|r -## Title-ruRU:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Ульдуар|r -## Title-koKR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0울두아르|r -## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0奧杜亞|r -## Title-esES:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Ulduar|r +## Interface: 60000 +## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r Ulduar +## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 奥杜尔 +## Title-zhtw:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r 奧杜亞 +## Notes-zhCN: |cff00ff00DBM-Ulduar|r +## Notes-zhTW: |cff00ff00DBM-Ulduar|r ## Author: Nitram ## LoadOnDemand: 1 ## RequiredDeps: DBM-Core @@ -15,6 +14,7 @@ ## X-DBM-Mod-No-Heroic: 1 ## X-DBM-Mod-MapID: 603 ## X-DBM-Mod-Sort: 204 + localization.en.lua localization.de.lua localization.fr.lua diff --git a/AddOns/DBM-WorldEvents/DBM-WorldEvents.toc b/AddOns/DBM-WorldEvents/DBM-WorldEvents.toc index 04f0e9f5b..bbb1e8c6d 100644 --- a/AddOns/DBM-WorldEvents/DBM-WorldEvents.toc +++ b/AddOns/DBM-WorldEvents/DBM-WorldEvents.toc @@ -40,7 +40,7 @@ ## X-DBM-Mod-MapID: 230,189,33,547,1004, 1, 0 ## X-DBM-Mod-Sort: 150 ## X-DBM-Mod-LoadCID: 55003,54499,15467,15466,49687,15664 -## X-Curse-Packaged-Version: 6.0.4-31-g65bcc60 +## X-Curse-Packaged-Version: 6.0.5 ## X-Curse-Project-Name: Deadly Boss Mods ## X-Curse-Project-ID: deadly-boss-mods ## X-Curse-Repository-ID: wow/deadly-boss-mods/mainline diff --git a/AddOns/DBM-Yike/153804.ogg b/AddOns/DBM-Yike/153804.ogg new file mode 100644 index 0000000000000000000000000000000000000000..36c91fe6859ccdb97b59e9fb1334f516ee30e3b0 GIT binary patch literal 8784 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 PIL`*gYOg8)C2{Z{m&dL- literal 0 HcmV?d00001 diff --git a/AddOns/DBM-Yike/160702.ogg b/AddOns/DBM-Yike/160702.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8ddbdcd932c31ccc1577dbf17e240b0deceb5b85 GIT binary patch literal 7356 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 Gr2Gd6GR;r` literal 0 HcmV?d00001 diff --git a/AddOns/DBM-Yike/20619.ogg b/AddOns/DBM-Yike/20619.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0d40c41bb14b71c0c26a0e4ea0c92f7df86b5626 GIT binary patch literal 11546 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 literal 17370 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 diff --git a/AddOns/ExtraCD/Changelog-ExtraCD-1.3.2.txt b/AddOns/ExtraCD/Changelog-ExtraCD-1.3.2.txt new file mode 100644 index 000000000..7199d385e --- /dev/null +++ b/AddOns/ExtraCD/Changelog-ExtraCD-1.3.2.txt @@ -0,0 +1,38 @@ +------------------------------------------------------------------------ +r164 | superk521 | 2014-11-29 06:53:14 +0000 (Sat, 29 Nov 2014) | 5 lines +Changed paths: + A /tags/1.3.2 (from /trunk:163) + +tag as version 1.3.2 +update for wod enchants +update for wod trinkets +make the icon border right size +update addon description text +------------------------------------------------------------------------ +r163 | superk521 | 2014-11-29 06:52:12 +0000 (Sat, 29 Nov 2014) | 1 line +Changed paths: + M /trunk/ExtraCD.lua + +tag as version 1.3.2 +------------------------------------------------------------------------ +r162 | superk521 | 2014-11-29 06:51:13 +0000 (Sat, 29 Nov 2014) | 2 lines +Changed paths: + M /trunk/data.lua + +update for wod enchants + +------------------------------------------------------------------------ +r161 | superk521 | 2014-11-29 06:06:21 +0000 (Sat, 29 Nov 2014) | 1 line +Changed paths: + M /trunk/data.lua + +update for wod trinkets +------------------------------------------------------------------------ +r160 | superk521 | 2014-10-25 08:47:28 +0000 (Sat, 25 Oct 2014) | 2 lines +Changed paths: + M /trunk/ExtraCD.lua + M /trunk/ExtraCD.toc + +make the icon border right size +update addon description text +------------------------------------------------------------------------ diff --git a/AddOns/ExtraCD/ExtraCD.lua b/AddOns/ExtraCD/ExtraCD.lua index 7329f3a81..b9bcc3c0d 100644 --- a/AddOns/ExtraCD/ExtraCD.lua +++ b/AddOns/ExtraCD/ExtraCD.lua @@ -8,7 +8,7 @@ local mod = ExtraCD local tinsert, tremove = table.insert, table.remove local tonumber, tostring = tonumber, tostring local ECD_TEXT = "ExtraCD" -local ECD_VERSION = "1.3.1" +local ECD_VERSION = "1.3.2" local ECD_AUTHOR = "superk" local active = {} local equippedItems = {} @@ -290,7 +290,7 @@ function mod:CreateIcon(order, bar) -- size (width or height) of the square repeating background tiles (in pixels) tileSize = isize + 2, -- thickness of edge segments and square size of edge corners (in pixels) - edgeSize = 0.3 * isize, + edgeSize = 0.1 * isize, -- distance from the edges of the frame to those of the background texture (in pixels) --[[ insets = { left = 12, diff --git a/AddOns/ExtraCD/ExtraCD.toc b/AddOns/ExtraCD/ExtraCD.toc index 308b8025f..9ae739c25 100644 --- a/AddOns/ExtraCD/ExtraCD.toc +++ b/AddOns/ExtraCD/ExtraCD.toc @@ -1,12 +1,12 @@ ## Interface: 60000 ## Title: ExtraCD -## Notes: Internal CDs of Talent, Item and Enchant -## Notes-zhTW: 天賦,物品和附魔內置冷卻監視 -## Notes-zhCN: 天赋,物品和附魔内置冷却监视 +## Notes: Display internal cd or rppm of items, enchants, talents and abilities +## Notes-zhTW: 物品,附魔,天賦和技能的內置冷卻或RPPM監視 +## Notes-zhCN: 物品,附魔,天赋和技能的内置冷却或RPPM监视 ## Author: superk ## SavedVariables: ExtraCDDB ## Version: 1.3 -## X-Curse-Packaged-Version: 1.3.1 +## X-Curse-Packaged-Version: 1.3.2 ## X-Curse-Project-Name: ExtraCD ## X-Curse-Project-ID: extracd ## X-Curse-Repository-ID: wow/extracd/mainline diff --git a/AddOns/ExtraCD/Libs/LibStub/LibStub.toc b/AddOns/ExtraCD/Libs/LibStub/LibStub.toc index 2de5cdc96..a2e1f80dd 100644 --- a/AddOns/ExtraCD/Libs/LibStub/LibStub.toc +++ b/AddOns/ExtraCD/Libs/LibStub/LibStub.toc @@ -9,7 +9,7 @@ ## X-Curse-Project-Name: LibStub ## X-Curse-Project-ID: libstub ## X-Curse-Repository-ID: wow/libstub/mainline -## X-Curse-Packaged-Version: 1.3.1 +## X-Curse-Packaged-Version: 1.3.2 ## X-Curse-Project-Name: ExtraCD ## X-Curse-Project-ID: extracd ## X-Curse-Repository-ID: wow/extracd/mainline diff --git a/AddOns/ExtraCD/data.lua b/AddOns/ExtraCD/data.lua index 9df2fcb16..aebb1731b 100644 --- a/AddOns/ExtraCD/data.lua +++ b/AddOns/ExtraCD/data.lua @@ -1,7 +1,7 @@ local mod = ExtraCD function mod:GetDataVersion() - return 63 + return 66 end function mod:GetSpellData() @@ -119,6 +119,241 @@ function mod:GetSpellData() -- item -- type = "item" -- item = {the item id} + -- WOD 6.0 + [177063] = { + desc = "", + type = "item", + item = {113889}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Elementalist's Shielding Talisman + [177056] = { + desc = "", + type = "item", + item = {113893}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Blast Furnace Door + [177051] = { + desc = "", + type = "item", + item = {113931}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Darmac's Unstable Talisman + [177096] = { + desc = "", + type = "item", + item = {113983}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Forgemaster's Insignia + [177081] = { + desc = "", + type = "item", + item = {113984}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Blackiron Micro Crucible + [177067] = { + desc = "", + type = "item", + item = {113985}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Humming Blackiron Trigger + [177086] = { + desc = "", + type = "item", + item = {113986}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Auto-Repairing Autoclave + [177102] = { + desc = "", + type = "item", + item = {113987}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Battering Talisman + [177035] = { + desc = "", + type = "item", + item = {118114}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Meaty Dragonspine Trophy + [177060] = { + desc = "", + type = "item", + item = {119192}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Ironspike Chew Toy + [177042] = { + desc = "", + type = "item", + item = {119193}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Horn of Screaming Spirits + [177046] = { + desc = "", + type = "item", + item = {119194}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Goren Soul Repository + + [177053] = { + desc = "", + type = "item", + item = {113861}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Evergaze Arcane Eidolon + [177038] = { + desc = "", + type = "item", + item = {113612}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Scales of Doom + [177040] = { + desc = "", + type = "item", + item = {113645}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Tectus' Beating Heart + [165824] = { + desc = "", + type = "item", + item = {113663}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Petrified Flesh-Eating Spore + [176980] = { + desc = "", + type = "item", + item = {116315}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Furyheart Talisman + [176984] = { + desc = "", + type = "item", + item = {116314}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Blackheart Enforcer's Medallion + [176982] = { + desc = "", + type = "item", + item = {116318}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Stoneheart Idol + [176978] = { + desc = "", + type = "item", + item = {116291}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Immaculate Living Mushroom + [162915] = { + desc = "", + type = "item", + item = {112318}, + cd = 115, + duration = 20, + }, -- Skull of War + [162913] = { + desc = "", + type = "item", + item = {112317}, + cd = 115, + duration = 20, + }, -- Winged Hourglass + [162919] = { + desc = "", + type = "item", + item = {112320}, + cd = 115, + duration = 20, + }, -- Sandman's Pouch + [162917] = { + desc = "", + type = "item", + item = {112319}, + cd = 115, + duration = 20, + }, -- Knight's Badge + + [176974] = { + desc = "", + type = "item", + item = {116292}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Mote of the Mountain + + --WOD heroic + [165822] = { + desc = "", + type = "item", + item = {109999, 110014}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Witherbark's Branch, Spores of Alacrity + + [165832] = { + desc = "", + type = "item", + item = {110004}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Coagulated Genesaur Blood + [165833] = { + desc = "", + type = "item", + item = {110009}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Leaf of the Ancient Protectors + [165824] = { + desc = "", + type = "item", + item = {110019}, + cd = 0, + ppm = 0.92, + duration = 10, + }, -- Xeri'tac's Unhatched Egg Sac + -- MOP 5.4 -- Legendary cloak [148010] = { @@ -559,25 +794,26 @@ function mod:GetSpellData() duration = 20, }, -- H - -- pvp 550(H/L set) 522(H/L set) 496(H/L set) 496(H/L) 483 476 458 + + -- pvp 660(H/L Tournoment set) 660(H/L set) 620(H/L set) 550(H/L set) 522(H/L set) 496(H/L set) 496(H/L) 483 476 458 [126707] = { desc = "", type = "item", - item = {103347,102643,102840,103150,100586,100200,100026,99777,94356,91104,84935,91457,84349}, + item = {117730, 117931, 111223, 115750, 119927, 115150, 103347,102643,102840,103150,100586,100200,100026,99777,94356,91104,84935,91457,84349}, cd = 50, duration = 20, }, -- AGI [126705] = { desc = "", type = "item", - item = {103506,102766,102963,103309,100712,100491,100152,99938,94482,91401,84941,91754,84489}, + item = {117735, 117936, 111228, 115755, 119932, 115155, 103506,102766,102963,103309,100712,100491,100152,99938,94482,91401,84941,91754,84489}, cd = 50, duration = 20, }, -- SP [126700] = { desc = "", type = "item", - item = {103516,102699,102896,103319,100505,100645,100085,99948,94415,91415,84937,91768,84495}, + item = {117740, 117941, 111233, 115760, 119937, 115160, 103516,102699,102896,103319,100505,100645,100085,99948,94415,91415,84937,91768,84495}, cd = 50, duration = 20, }, -- STR @@ -821,6 +1057,61 @@ function mod:GetSpellData() cd = 0 }, -- River's Song + -- WOD + + [159675] = { + desc = "", + type = "enchant", + enchant = {5337}, + slot = 16, + ppm = 1.15, + duration = 20, + cd = 0 + }, -- Mark of Warsong + [159234] = { + desc = "", + type = "enchant", + enchant = {5330}, + slot = 16, + ppm = 2.5, + duration = 6, + cd = 0 + }, -- Mark of the Thunderlord + [159676] = { + desc = "", + type = "enchant", + enchant = {5334}, + slot = 16, + ppm = 3, + duration = 6, + cd = 0 + }, -- Mark of the Frostwolf + [159678] = { + desc = "", + type = "enchant", + enchant = {5335}, + slot = 16, + duration = 15, + cd = 40 + }, -- Mark of Shadowmoon + [173322] = { + desc = "", + type = "enchant", + enchant = {5384}, + slot = 16, + ppm = 2.3, + duration = 12, + cd = 0 + }, -- Mark of Bleeding Hollow + [159679] = { + desc = "", + type = "enchant", + enchant = {5336}, + slot = 16, + duration = 12, + cd = 40 + }, -- Mark of Blackrock + -- meta gems diff --git a/AddOns/GarrisonCommander/CHANGELOG.txt b/AddOns/GarrisonCommander/CHANGELOG.txt new file mode 100644 index 000000000..6f9c43b56 --- /dev/null +++ b/AddOns/GarrisonCommander/CHANGELOG.txt @@ -0,0 +1,18 @@ += GarrisonCommander helps you when choosing the right follower for the right mission = +* 1.1.3 +Fixed: When used for a long session of mission management, GarrisonCommander could starve with memory. Now it never go over 1M +Feature: Preview of 1.2.0 Chance of success is now permanently displayed on every mission. In this version it get updated ONLY when you hover on it +* 1.1.2 +Fixed: Solves a rare case of library incompatibility causing error ...rfaceGarrisonCommander\GarrisonCommander-1.1.1.lua:47: attempt to call method 'capitalize' (a nil value) +Feature: Removed signature in tooltip... it was annoying me too.. :) +* 1.1.1 +Fix for those who has MasterPlan installed. Master Plan was breaking GarrisonCommander, this patch fixes it +* 1.1.0 +Feature: Level added to follower line +Feature: All counterd traits listed on the same line +Feature: For "In mission" follower time letf is shown instead of "In mission" +Feature: Trait related lines are now silver, while abilities related are Blue +Feature: Mission panel can now optionally be relocked +Feature: You can select to ignore "busy" followers +Feature: possible party and success chance with that party +* 1.0.0 First release diff --git a/AddOns/GarrisonCommander/GarrisonCommander.lua b/AddOns/GarrisonCommander/GarrisonCommander.lua new file mode 100644 index 000000000..fc2528912 --- /dev/null +++ b/AddOns/GarrisonCommander/GarrisonCommander.lua @@ -0,0 +1,581 @@ +local __FILE__=tostring(debugstack(1,2,0):match("(.*):1:")) -- MUST BE LINE 1 +local toc=select(4,GetBuildInfo()) +local me, ns = ... +local pp=print +if (LibDebug) then LibDebug() end +local L=LibStub("AceLocale-3.0"):GetLocale(me,true) +local C=LibStub("AlarCrayon-3.0"):GetColorTable() +local addon=LibStub("AlarLoader-3.0")(__FILE__,me,ns):CreateAddon(me,true) --#Addon +local print=ns.print or print +local debug=ns.debug or print +local dump=ns.dump or print +--[===[@debug@ +ns.debugEnable('on') +local function tcopy(obj, seen) + if type(obj) ~= 'table' then return obj end + if seen and seen[obj] then return seen[obj] end + local s = seen or {} + local res = setmetatable({}, getmetatable(obj)) + s[obj] = res + for k, v in pairs(obj) do res[tcopy(k, s)] = tcopy(v, s) end + return res +end +--@end-debug@]===] +----------------------------------------------------------------- +-- Recycling function from ACE3 +----newcount, delcount,createdcount,cached = 0,0,0 + +local qualityColorEscape={} +for i = 0, 7 do + local r, g, b, hex = GetItemQualityColor(i) + qualityColorEscape[i]=hex + --print(i, '|c'..hex, _G["ITEM_QUALITY" .. i .. "_DESC"], string.sub(hex,3)) +end +local new, del, copy +do + local pool = setmetatable({},{__mode="k"}) + function new() + --newcount = newcount + 1 + local t = next(pool) + if t then + pool[t] = nil + return t + else + --createdcount = createdcount + 1 + return {} + end + end + function copy(t) + local c = new() + for k, v in pairs(t) do + c[k] = v + end + return c + end + function del(t) + --delcount = delcount + 1 + wipe(t) + pool[t] = true + end +-- function cached() +-- local n = 0 +-- for k in pairs(pool) do +-- n = n + 1 +-- end +-- return n +-- end +end +local function capitalize(s) + s=tostring(s) + return strupper(s:sub(1,1))..strlower(s:sub(2)) +end +local masterplan +local followers +local dirty +local successes={} +local requested={} +local availableFollowers=0 +local GMF +local GMFFollowers +local GMFMissions +local GMFTab1 +local GMFTab2 +local GMFMissionsTab1 +local GMFMissionsTab2 +local GARRISON_FOLLOWER_WORKING=GARRISON_FOLLOWER_WORKING -- "Working +local GARRISON_FOLLOWER_ON_MISSION=GARRISON_FOLLOWER_ON_MISSION -- "On Mission" +local GARRISON_FOLLOWER_INACTIVE=GARRISON_FOLLOWER_INACTIVE --"Inactive" +local GARRISON_FOLLOWER_EXHAUSTED=GARRISON_FOLLOWER_EXHAUSTED -- "Recovering (1 Day)" +local GARRISON_BUILDING_SELECT_FOLLOWER_TITLE=GARRISON_BUILDING_SELECT_FOLLOWER_TITLE -- "Select a Follower"; +local GARRISON_BUILDING_SELECT_FOLLOWER_TOOLTIP=GARRISON_BUILDING_SELECT_FOLLOWER_TOOLTIP -- "Click here to assign a Follower"; +local GARRISON_FOLLOWER_CAN_COUNTER=GARRISON_FOLLOWER_CAN_COUNTER -- "This follower can counter:" +local GARRISON_MISSION_SUCCESS=GARRISON_MISSION_SUCCESS -- "Success" +local GARRISON_MISSION_TOOLTIP_NUM_REQUIRED_FOLLOWERS=GARRISON_MISSION_TOOLTIP_NUM_REQUIRED_FOLLOWERS -- "%d Follower mission"; +local UNKNOWN_CHANCE=GARRISON_MISSION_PERCENT_CHANCE:gsub('%%d%%%%',UNKNOWN) +local GARRISON_MISSION_PERCENT_CHANCE=GARRISON_MISSION_PERCENT_CHANCE .. " (Estimated)" +local BUTTON_INFO=GARRISON_MISSION_TOOLTIP_NUM_REQUIRED_FOLLOWERS.. " " .. GARRISON_MISSION_PERCENT_CHANCE +local GARRISON_FOLLOWERS=GARRISON_FOLLOWERS -- "Followers" +local GARRISON_PARTY_NOT_FULL_TOOLTIP=GARRISON_PARTY_NOT_FULL_TOOLTIP -- "You do not have enough followers on this mission." +local AVAILABLE=AVAILABLE -- "Available" +local PARTY=PARTY -- "Party" +local ENVIRONMENT_SUBHEADER=ENVIRONMENT_SUBHEADER -- "Environment" +local SPELL_TARGET_TYPE4_DESC=capitalize(SPELL_TARGET_TYPE4_DESC) -- party member +local SPELL_TARGET_TYPE1_DESC=capitalize(SPELL_TARGET_TYPE1_DESC) -- any +local ANYONE='('..SPELL_TARGET_TYPE1_DESC..')' +local IGNORE_UNAIVALABLE_FOLLOWERS=IGNORE.. ' ' .. UNAVAILABLE .. ' ' .. GARRISON_FOLLOWERS +local IGNORE_UNAIVALABLE_FOLLOWERS_DETAIL=IGNORE.. ' ' .. GARRISON_FOLLOWER_INACTIVE .. ',' .. GARRISON_FOLLOWER_ON_MISSION ..',' .. GARRISON_FOLLOWER_WORKING.. ','.. GARRISON_FOLLOWER_EXHAUSTED .. ' ' .. GARRISON_FOLLOWERS +IGNORE_UNAIVALABLE_FOLLOWERS=capitalize(IGNORE_UNAIVALABLE_FOLLOWERS) +IGNORE_UNAIVALABLE_FOLLOWERS_DETAIL=capitalize(IGNORE_UNAIVALABLE_FOLLOWERS_DETAIL) +local GameTooltip=GameTooltip +local GetItemQualityColor=GetItemQualityColor +local timers={} +function addon:AddLine(icon,name,status,quality,...) + local r2,g2,b2=C.Red() + local q=ITEM_QUALITY_COLORS[quality or 1] or {} + if (status==AVAILABLE) then + r2,g2,b2=C.Green() + elseif (status==GARRISON_FOLLOWER_WORKING) then + r2,g2,b2=C.Orange() + end + --GameTooltip:AddDoubleLine(name, status or AVAILABLE,r,g,b,r2,g2,b2) + --GameTooltip:AddTexture(icon) + GameTooltip:AddDoubleLine(icon and "|T" .. tostring(icon) .. ":0|t " .. name or name, status,q.r,q.g,q.b,r2,g2,b2) +end +function addon:GetDifficultyColor(perc) + local difficulty='trivial' + if(perc >90) then + difficulty='standard' + elseif (perc >74) then + difficulty='difficult' + elseif(perc>49) then + difficulty='verydifficult' + elseif(perc >20) then + difficulty='impossible' + end + return QuestDifficultyColors[difficulty] +end +function addon:RestoreTooltip() + local self = GMF.MissionTab.MissionList; + local scrollFrame = self.listScroll; + local buttons = scrollFrame.buttons; + for i =1,#buttons do + buttons[i]:SetScript("OnEnter",GarrisonMissionButton_OnEnter) + end +end +-- This is a ugly hack while I rewrite this code for 2.0 +function addon:TooltipAdder(missionID,skipTT) +--[===[@debug@ + if (not skipTT) then GameTooltip:AddLine("ID:" .. tostring(missionID)) end +--@end-debug@]===] + local perc=select(4,C_Garrison.GetPartyMissionInfo(missionID)) + local q=self:GetDifficultyColor(perc) + if (not skipTT) then GameTooltip:AddDoubleLine(GARRISON_MISSION_SUCCESS,format(GARRISON_MISSION_PERCENT_CHANCE,perc),nil,nil,nil,q.r,q.g,q.b) end + local buffed=new() + local traited=new() + local buffs=new() + local traits=new() + local fellas=new() + availableFollowers=0 + self:GetRunningMissionData() + for id,d in pairs(C_Garrison.GetBuffedFollowersForMission(missionID)) do + buffed[id]=d + end + for id,d in pairs(C_Garrison.GetFollowersTraitsForMission(missionID)) do + for x,y in pairs(d) do +--[===[@debug@ + self.db.global.traits[y.traitID]=y.icon +--@end-debug@]===] + if (y.traitID~=236) then --Ignore hearthstone traits + traited[id]=d + break + end + end + end + local followerList=GarrisonMissionFrameFollowers.followersList + + for j=1,#followerList do + local index=followerList[j] + local follower=followers[index] + follower.rank=follower.level < 100 and follower.level or follower.iLevel + if (not follower.isCollected) then break end + if (not follower.status) then + availableFollowers=availableFollowers+1 + end + if (follower.status and self:GetBoolean('IGM')) then + else + local id=follower.followerID + local b=buffed[id] + local t=traited[id] + local followerBias = C_Garrison.GetFollowerBiasForMission(missionID,id); + follower.bias=followerBias + local formato=C("%3d","White") + if (followerBias==-1) then + formato=C("%3d","Red") + elseif (followerBias < 0) then + formato=C("%3d","Orange") + end + formato=formato.." %s" +--[===[@debug@ + formato=formato .. " 0x+(0*8) " .. id:sub(11) +--@end-debug@]===] + if (b) then + if (not buffs[id]) then + buffs[id]={rank=follower.rank,simple=follower.name,name=format(formato,follower.rank,follower.name),quality=follower.quality,status=(follower.status or AVAILABLE)} + end + for _,ability in pairs(b) do + buffs[id].name=buffs[id].name .. " |T" .. tostring(ability.icon) .. ":0|t" + if (not follower.status) then + local aname=ability.name + if (not fellas[aname]) then + fellas[aname]={} + end + fellas[aname]={id=follower.followerID,rank=follower.rank,level=follower.level,iLevel=follower.iLevel,name=follower.name} + end + end + end + if (t) then + if (not traits[id]) then + traits[id]={rank=follower.rank,simple=follower.name,name=format(formato,follower.rank,follower.name),quality=follower.quality,status=follower.status or AVAILABLE} + end + for _,ability in pairs(t) do + traits[id].name=traits[id].name .. " |T" .. tostring(ability.icon) .. ":0|t" + end + end + end + end + local added=new() + local maxfollowers=C_Garrison.GetMissionMaxFollowers(missionID) + requested[missionID]=maxfollowers + local partyshown=false + local perc=0 + if (next(traits) or next(buffs) ) then + if (not skipTT) then GameTooltip:AddLine(GARRISON_FOLLOWER_CAN_COUNTER) end + for id,v in pairs(buffs) do + local status=(v.status == GARRISON_FOLLOWER_ON_MISSION and (timers[id] or GARRISON_FOLLOWER_ON_MISSION)) or v.status + if (not skipTT) then self:AddLine(nil,v.name,status,v.quality) end + end + for id,v in pairs(traits) do + local status=(v.status == GARRISON_FOLLOWER_ON_MISSION and (timers[id] or GARRISON_FOLLOWER_ON_MISSION)) or v.status + if (not skipTT) then self:AddLine(nil,v.name,status,v.quality) end + end + if (not skipTT) then GameTooltip:AddLine(PARTY,C.White()) end + partyshown=true + local enemies = select(8,C_Garrison.GetMissionInfo(missionID)) + --local missionInfo=C_Garrison.GetBasicMissionInfo(missionID) +--[===[@debug@ + --DevTools_Dump(fellas) +--@end-debug@]===] + for _,enemy in pairs(enemies) do + for i,mechanic in pairs(enemy.mechanics) do +--[===[@debug@ + self.db.global.abilities[i .. '.' .. mechanic.name]=mechanic.description +--@end-debug@]===] + local menace=mechanic.name + local res + if (fellas[menace]) then + local followerID=fellas[menace].id + res=fellas[menace].name + local rc,code=pcall(C_Garrison.AddFollowerToMission,missionID,followerID) + if (rc and code) then + tinsert(added,followerID) + end + end + if (not skipTT) then + if (res) then + GameTooltip:AddDoubleLine(menace,res,0,1,0) + else + GameTooltip:AddDoubleLine(menace,' ',1,0,0) + end + end + end + end + perc=select(4,C_Garrison.GetPartyMissionInfo(missionID)) + if (perc < 100 and #added < maxfollowers and next(traits)) then + for id,v in pairs(traits) do + local rc,code=pcall(C_Garrison.AddFollowerToMission,missionID,id) + if (rc and code) then + tinsert(added,id) + if (not skipTT) then GameTooltip:AddDoubleLine(ENVIRONMENT_SUBHEADER,v.simple,v.quality) end + break + end + end + perc=select(4,C_Garrison.GetPartyMissionInfo(missionID)) + end + end + -- And then fill the roster + local partysize=#added + if (partysize < maxfollowers ) then + for j=1,#followerList do + local index=followerList[j] + local follower=followers[index] + if (not follower.isCollected) then + break + end + if (follower.status and self:GetBoolean('IGM')) then + else + local rc,code=pcall(C_Garrison.AddFollowerToMission,missionID,follower.followerID) + if (rc and code) then + if (not partyshown) then + if (not skipTT) then GameTooltip:AddLine(PARTY,1) end + partyshown=true + end + tinsert(added,follower.followerID) + if (not skipTT) then + GameTooltip:AddDoubleLine(SPELL_TARGET_TYPE4_DESC,follower.name,C.Orange.r,C.Orange.g,C.Orange.b)--SPELL_TARGET_TYPE1_DESC) + end + if (#added >= maxfollowers) then break end + else +--[===[@debug@ + print("Failed adding",follower.name,follower.followerID,rc,code) +--@end-debug@]===] + end + end + end + perc=select(4,C_Garrison.GetPartyMissionInfo(missionID)) + end + local q=self:GetDifficultyColor(perc) + if (not partyshown) then + if (not skipTT) then GameTooltip:AddDoubleLine(PARTY,ANYONE,C.White.r,C.White.g,C.White.b) end + end + if (not skipTT) then GameTooltip:AddDoubleLine(GARRISON_MISSION_SUCCESS,format(GARRISON_MISSION_PERCENT_CHANCE,perc),nil,nil,nil,q.r,q.g,q.b) end + local b=GameTooltip:GetOwner() + successes[missionID]=perc + if (availableFollowers < maxfollowers) then + if (not skipTT) then GameTooltip:AddLine(GARRISON_PARTY_NOT_FULL_TOOLTIP,C:Red()) end + else + end + if (not skipTT) then self:AddPerc(GameTooltip:GetOwner()) end + for _,id in pairs(added) do + local rc,code=pcall(C_Garrison.RemoveFollowerFromMission,missionID,id) +--[===[@debug@ + if (not rc) then print("Add",rc,code) end +--@end-debug@]===] + end + -- Add a signature + --local r,g,b=C:Silver() + --GameTooltip:AddDoubleLine("GarrisonCommander",self.version,r,g,b,r,g,b) + del(added) +--[===[@debug@ + --DevTools_Dump(fellas) +--@end-debug@]===] + del(buffed) + del(traited) + del(buffs) + del(traits) + del(fellas) +end +function addon:FillFollowersList() + if (GarrisonFollowerList_UpdateFollowers) then + GarrisonFollowerList_UpdateFollowers(GarrisonMissionFrame.FollowerList) + end +end +function addon:CacheFollowers() + followers=C_Garrison.GetFollowers() +end +function addon:GetRunningMissionData() + local list=GarrisonMissionFrame.MissionTab.MissionList + C_Garrison.GetInProgressMissions(list.inProgressMissions); + --C_Garrison.GetAvailableMissions(list.availableMissions); + if (#list.inProgressMissions > 0) then + for i,mission in pairs(list.inProgressMissions) do + for _,id in pairs(mission.followers) do + timers[id]=mission.timeLeft + end + end + end +end +function addon:ADDON_LOADED(event,addon) + if (addon=="Blizzard_GarrisonUI") then + self:UnregisterEvent("ADDON_LOADED") + self:Init() + end +end + +function addon:ApplyMOVEPANEL(value) + if (not GMF) then return end + if (value) then + GMF:SetMovable(true) + GMF:RegisterForDrag("LeftButton") + GMF:SetScript("OnDragStart",function(frame) frame:StartMoving() end) + GMF:SetScript("OnDragStop",function(frame) frame:StopMovingOrSizing() end) + else + GMF:SetScript("OnDragStart",nil) + GMF:SetScript("OnDragStop",nil) + GMF:ClearAllPoints() + GMF:SetPoint("CENTER",UIParent) + GMF:SetMovable(false) + end +end +function addon:OnInitialized() +--[===[@debug@ + LoadAddOn("Blizzard_DebugTools") +--@end-debug@]===] + self.OptionsTable.args.on=nil + self.OptionsTable.args.off=nil + self.OptionsTable.args.standby=nil + self:RegisterEvent("ADDON_LOADED") + self:AddToggle("MOVEPANEL",true,L["Makes Garrison Mission Panel Movable"]).width="full" + self:AddToggle("IGM",false,IGNORE_UNAIVALABLE_FOLLOWERS,IGNORE_UNAIVALABLE_FOLLOWERS_DETAIL).width="full" + self:loadHelp() + self.DbDefaults.global["*"]={} + self.db:RegisterDefaults(self.DbDefaults) + return true +end + +function addon:ScriptTrace(hook,frame,...) +--[===[@debug@ + print("Triggered " .. C(hook,"red").." script on",C(frame:GetName(),"Azure"),...) +--@end-debug@]===] +end +function addon:postHookScript(frame,hook,method) + if (method) then + self:HookScript(frame,hook, + function(frame,...) + local t={self.hooks[frame][hook](frame,...)} + self[method](self,frame,...) + return unpack(t) + end) + else + return self:SecureHookScript(frame,hook,function(...) addon:ScriptTrace(hook,...) end) + end +end +function addon:preHookScript(frame,hook,method) + if (method) then + self:HookScript(frame,hook, + function(frame,...) + self[method](self,frame,...) + return self.hooks[frame][hook](frame,...) + end) + else + return self:SecureHookScript(frame,hook,function(...) addon:ScriptTrace(hook,...) end) + end +end +function addon:AddPerc(b,...) + if (b and b.info and b.info.missionID and b.info.missionID ) then + if (GMF.MissionTab.MissionList.showInProgress) then + if (b.ProgressHidden) then + return + else + b.ProgressHidden=true + if (b.Success) then + b.Success:Hide() + end + if (b.NotEnough) then + b.NotEnough:Hide() + end + return + end + + end + local missionID=b.info.missionID + local Perc=successes[missionID] or -2 + if (not b.Success) then + b.Success=b:CreateFontString() + if (masterplan) then + b.Success:SetFontObject("GameFontNormal") + else + b.Success:SetFontObject("GameFontNormalLarge2") + end + b.Success:SetPoint("BOTTOMLEFT",b.Title,"TOPLEFT",0,3) + b.Perc=-1 + end + if (not b.NotEnough) then + b.NotEnough=b:CreateFontString() + if (masterplan) then + b.NotEnough:SetFontObject("GameFontNormal") + b.NotEnough:SetPoint("TOPLEFT",b.Title,"BOTTOMLEFT",150,-3) + else + b.NotEnough:SetFontObject("GameFontNormalSmall2") + b.NotEnough:SetPoint("TOPLEFT",b.Title,"BOTTOMLEFT",0,-3) + end + b.NotEnough:SetText("(".. GARRISON_PARTY_NOT_FULL_TOOLTIP .. ")") + b.NotEnough:SetTextColor(C:Red()) + end + + if (b.Perc==Perc) then return end + if (Perc>=0) then + if (masterplan) then + b.Success:SetFormattedText(GARRISON_MISSION_PERCENT_CHANCE,successes[missionID]) + else + b.Success:SetFormattedText(BUTTON_INFO,C_Garrison.GetMissionMaxFollowers(missionID),successes[missionID]) + end + local q=self:GetDifficultyColor(successes[missionID]) + b.Success:SetTextColor(q.r,q.g,q.b) + else + b.Success:SetText(UNKNOWN_CHANCE) + b.Success:SetTextColor(1,1,1) + end + b.Success:Show() + if (not requested[missionID]) then + requested[missionID]=C_Garrison.GetMissionMaxFollowers(missionID) + end + if (requested[missionID]>availableFollowers) then + b.NotEnough:Show() + else + b.NotEnough:Hide() + end + b.ProgressHidden=false + end +end +function addon:CleanUp() + collectgarbage("collect") +end +function addon:SetUp() + local start=GetTime() +--[===[@debug@ + print("Addon setup") +--@end-debug@]===] + self:CacheFollowers() + local list=GarrisonMissionFrame.MissionTab.MissionList + C_Garrison.GetAvailableMissions(list.availableMissions) + if (#list.availableMissions > 0) then + for i,mission in pairs(list.availableMissions) do + self:TooltipAdder(mission.missionID,true) + end + end +--[===[@debug@ + print("Done in",format("%.3f",GetTime()-start)) +--@end-debug@]===] + dirty=false +end +function addon:SetDirty(...) +--[===[@debug@ + print("Dirty",...) +--@end-debug@]===] + dirty=true +end +function addon:Init() + GMF=GarrisonMissionFrame + GMFFollowers=GarrisonMissionFrameFollowers + GMFMissions=GarrisonMissionFrameMissions + GMFTab1=GarrisonMissionFrameTab1 + GMFTab2=GarrisonMissionFrameTab2 + GMFMissionsTab1=GarrisonMissionFrameMissionsTab1 + GMFMissionsTab2=GarrisonMissionFrameMissionsTab2 + if (not GMF or not GMFFollowers or not GMFMissions or not GMFTab1 or not GMFTab2 or not GMFMissionsTab1 or not GMFMissionsTab2) then + print("Lagging badly, retrying in 2 seconds") + self:ScheduleTimer("Init",2) + return + end + self:FillFollowersList() + self:CacheFollowers() + self:SecureHook("GarrisonMissionButton_AddThreatsToTooltip",function(id) self:TooltipAdder(id) end) + self:SecureHook("GarrisonMissionButton_SetRewards","AddPerc") + --self:SecureHook("GarrisonFollowerList_UpdateFollowers","CacheFollowers") + local _,_,_,loadable,reason=GetAddOnInfo("MasterPlan") + if (loadable or reason=="DEMAND_LOADED") then + masterplan=true + self:SecureHook("GarrisonMissionList_Update","RestoreTooltip") + end + self:HookScript(GMFMissions,"OnShow","SetUp") + self:HookScript(GMF,"OnHide","CleanUp") + self:HookScript(GMF.MissionTab.MissionPage.CloseButton,"OnClick","SetUp") + self:HookScript(GMF.MissionComplete,"OnHide","SetUp") + self:ApplyMOVEPANEL(self:GetBoolean("MOVEPANEL")) + self:RegisterEvent("GARRISON_MISSION_BONUS_ROLL_LOOT","SetDirty") + self:RegisterEvent("GARRISON_MISSION_FINISHED","SetDirty") + self:RegisterEvent("GARRISON_MISSION_COMPLETE_RESPONSE","SetDirty") + self:RegisterEvent("GARRISON_MISSION_BONUS_ROLL_COMPLETE","SetDirty") + self:RegisterEvent("GARRISON_MISSION_LIST_UPDATE","SetUp") + self:RegisterEvent("GARRISON_MISSION_STARTED","SetDirty") +end + +function addon:GarrisonMissionListTab_OnClick(frame, button) + local id=frame:GetID() + if (id==1) then + self:CacheFollowers() + end + self.hooks[frame].OnClick(frame) + GarrisonMissionFrame_SelectTab(id); + if (true) then return end + if (id == 1) then + GMF:SetWidth(1600) + GMFMissions:SetWidth(890+1600-1250) + GMFFollowers:Show() + GMFMissions:ClearAllPoints() + GMFMissions:SetPoint("TOPLEFT",GMF,"TOPLEFT",GMFFollowers:GetWidth()+35,-65) + else + GMF:SetWidth(930) + end +end + diff --git a/AddOns/GarrisonCommander/GarrisonCommander.toc b/AddOns/GarrisonCommander/GarrisonCommander.toc new file mode 100644 index 000000000..d72bd2ae0 --- /dev/null +++ b/AddOns/GarrisonCommander/GarrisonCommander.toc @@ -0,0 +1,28 @@ +## Interface: 60000 +## Title: GarrisonCommander +## Notes: Helps you when choosing the right follower for the right mission +## Notes-itIT: Ti aiuta a scegliere il giusto seguace per la giusta missione +## Author: Alar of Daggerspine +## Version: 1.1.3 02a9c9e +## X-Version: 1.1.3 +## X-Revision: 02a9c9e +## eMail: alar@aspide.it +## URL: http://wow.aspide.it +## OptionalDeps: AlarArtRemover +## DefaultState: Enabled +## SavedVariables: dbGAC +## X-ID: GAC +## X-Database:dbGAC +## X-Category: Garrison +## X-License: GPL v3 +## X-eMail: alar@aspide.it +## X-Date: 2014-11-29T02:38:35Z +## X-Embeds: +## X-Curse-Packaged-Version: 1.1.3 +## X-Curse-Project-Name: GarrisonCommander +## X-Curse-Project-ID: garrisoncommander +## X-Curse-Repository-ID: wow/garrisoncommander/mainline +embeds.xml +localization.lua +GarrisonCommander.xml +RelNotes.lua diff --git a/AddOns/GarrisonCommander/GarrisonCommander.xml b/AddOns/GarrisonCommander/GarrisonCommander.xml new file mode 100644 index 000000000..ed5ab87c7 --- /dev/null +++ b/AddOns/GarrisonCommander/GarrisonCommander.xml @@ -0,0 +1,4 @@ + +