Работоспособность проверена на DBM версии 4.52 r4442 и сервере logon3 x1 PvE
Таймеры и способности в об и гер режимах иногда сильно различаются. Для выяснения текущей сложности инста в DBMе используется следующая функция:
Код:
function bossModPrototype:GetDifficulty()
local _, instanceType, difficulty, _, _, playerDifficulty, isDynamicInstance = GetInstanceInfo()
if instanceType == "raid" and isDynamicInstance then -- "new" instance (ICC)
if difficulty == 1 then -- 10 men
return playerDifficulty == 0 and "normal10" or playerDifficulty == 1 and "heroic10" or "unknown"
elseif difficulty == 2 then -- 25 men
return playerDifficulty == 0 and "normal25" or playerDifficulty == 1 and "heroic25" or "unknown"
end
else -- support for "old" instances
if GetInstanceDifficulty() == 1 then
return (self.modId == "DBM-Party-WotLK" or self.modId == "DBM-Party-BC") and "normal5" or
self.hasHeroic and "normal10" or "heroic10"
elseif GetInstanceDifficulty() == 2 then
return (self.modId == "DBM-Party-WotLK" or self.modId == "DBM-Party-BC") and "heroic5" or
self.hasHeroic and "normal25" or "heroic25"
elseif GetInstanceDifficulty() == 3 then
return "heroic10"
elseif GetInstanceDifficulty() == 4 then
return "heroic25"
end
end
end
где GetInstanceInfo() стандартная функция интерфейса WoW API, возвращающая подробную информацию об инсте.
Блок
Код:
if difficulty == 1 then -- 10 men
return playerDifficulty == 0 and "normal10" or playerDifficulty == 1 and "heroic10" or "unknown"
elseif difficulty == 2 then -- 25 men
return playerDifficulty == 0 and "normal25" or playerDifficulty == 1 and "heroic25" or "unknown"
end
возвращает значение сложности (normal10/normal25/heroic10/heroic25/unknown) для инстов ЦЛК/РС в зависимости от значений параметров difficulty и playerDifficulty. Всё было бы хорошо, если бы GetInstanceInfo() не возвращал значения 3 и 4 для параметра difficulty в инстах ЦЛК/РС 10гер/25гер. А так как эта часть кода не обрабатывает значения difficulty равные 3 и 4, то никакое значение обратно не передаётся. Чтобы всё заработало "как надо", следует подкорректировать данную функцию:
Код:
function bossModPrototype:GetDifficulty()
local _, instanceType, difficulty, _, _, playerDifficulty, isDynamicInstance = GetInstanceInfo()
if instanceType == "raid" and isDynamicInstance then -- "new" instance (ICC)
if difficulty == 1 or difficulty == 3 then -- 10 men
return playerDifficulty == 0 and "normal10" or playerDifficulty == 1 and "heroic10" or "unknown"
elseif difficulty == 2 or difficulty == 4 then -- 25 men
return playerDifficulty == 0 and "normal25" or playerDifficulty == 1 and "heroic25" or "unknown"
end
else -- support for "old" instances
if GetInstanceDifficulty() == 1 then
return (self.modId == "DBM-Party-WotLK" or self.modId == "DBM-Party-BC") and "normal5" or
self.hasHeroic and "normal10" or "heroic10"
elseif GetInstanceDifficulty() == 2 then
return (self.modId == "DBM-Party-WotLK" or self.modId == "DBM-Party-BC") and "heroic5" or
self.hasHeroic and "normal25" or "heroic25"
elseif GetInstanceDifficulty() == 3 then
return "heroic10"
elseif GetInstanceDifficulty() == 4 then
return "heroic25"
end
end
end
Сама функция находится в файле DBM-Core.lua каталога DBM-Core