do local _detalhes = _G._detalhes _detalhes.EncounterInformation = {} local _ipairs = ipairs --> lua local ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> details api functions --> return if the player is inside a raid supported by details function _detalhes:IsInInstance() local _, _, _, _, _, _, _, zoneMapID = GetInstanceInfo() if (_detalhes.EncounterInformation [zoneMapID]) then return true else return false end end --> return the full table with all data for the instance function _detalhes:GetRaidInfoFromEncounterID (encounterID, encounterEJID) for id, raidTable in pairs (_detalhes.EncounterInformation) do if (encounterID) then local ids = raidTable.encounter_ids2 --combatlog if (ids) then if (ids [encounterID]) then return raidTable end end end if (encounterEJID) then local ejids = raidTable.encounter_ids --encounter journal if (ejids) then if (ejids [encounterEJID]) then return raidTable end end end end end --> return the ids of trash mobs in the instance function _detalhes:GetInstanceTrashInfo (mapid) return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].trash_ids end function _detalhes:GetInstanceIdFromEncounterId (encounterid) for id, instanceTable in pairs (_detalhes.EncounterInformation) do --combatlog encounter id local ids = instanceTable.encounter_ids2 if (ids) then if (ids [encounterid]) then return id end end --encounter journal id local ids_ej = instanceTable.encounter_ids if (ids) then if (ids_ej [encounterid]) then return id end end end end --> return the boss table using a encounter id function _detalhes:GetBossEncounterDetailsFromEncounterId (mapid, encounterid) if (not mapid) then local bossIndex, instance for id, instanceTable in pairs (_detalhes.EncounterInformation) do local ids = instanceTable.encounter_ids2 if (ids) then bossIndex = ids [encounterid] if (bossIndex) then instance = instanceTable break end end end if (instance) then local bosses = instance.encounters if (bosses) then return bosses [bossIndex], instance end end return end local bossindex = _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounter_ids and _detalhes.EncounterInformation [mapid].encounter_ids [encounterid] if (bossindex) then return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounters [bossindex], bossindex else local bossindex = _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounter_ids2 and _detalhes.EncounterInformation [mapid].encounter_ids2 [encounterid] if (bossindex) then return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounters [bossindex], bossindex end end end --> return the EJ boss id function _detalhes:GetEncounterIdFromBossIndex (mapid, index) return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounter_ids and _detalhes.EncounterInformation [mapid].encounter_ids [index] end --> return the table which contain information about the start of a encounter function _detalhes:GetEncounterStartInfo (mapid, encounterid) local bossindex = _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounter_ids and _detalhes.EncounterInformation [mapid].encounter_ids [encounterid] if (bossindex) then return _detalhes.EncounterInformation [mapid].encounters [bossindex] and _detalhes.EncounterInformation [mapid].encounters [bossindex].encounter_start end end --> return the table which contain information about the end of a encounter function _detalhes:GetEncounterEndInfo (mapid, encounterid) local bossindex = _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounter_ids and _detalhes.EncounterInformation [mapid].encounter_ids [encounterid] if (bossindex) then return _detalhes.EncounterInformation [mapid].encounters [bossindex] and _detalhes.EncounterInformation [mapid].encounters [bossindex].encounter_end end end --> return the function for the boss function _detalhes:GetEncounterEnd (mapid, bossindex) local t = _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounters [bossindex] if (t) then local _end = t.combat_end if (_end) then return unpack (_end) end end return end --> generic boss find function function _detalhes:GetRaidBossFindFunction (mapid) return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].find_boss_encounter end --> return if the boss need sync function _detalhes:GetEncounterEqualize (mapid, bossindex) return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounters [bossindex] and _detalhes.EncounterInformation [mapid].encounters [bossindex].equalize end --> return the function for the boss function _detalhes:GetBossFunction (mapid, bossindex) local func = _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounters [bossindex] and _detalhes.EncounterInformation [mapid].encounters [bossindex].func if (func) then return func, _detalhes.EncounterInformation [mapid].encounters [bossindex].funcType end return end --> return the boss table with information about name, adds, spells, etc function _detalhes:GetBossDetails (mapid, bossindex) return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounters [bossindex] end --> return a table with all names of boss enemies function _detalhes:GetEncounterActors (mapid, bossindex) end --> return a table with spells id of specified encounter function _detalhes:GetEncounterSpells (mapid, bossindex) local encounter = _detalhes:GetBossDetails (mapid, bossindex) local habilidades_poll = {} if (encounter.continuo) then for index, spellid in _ipairs (encounter.continuo) do habilidades_poll [spellid] = true end end local fases = encounter.phases if (fases) then for fase_id, fase in _ipairs (fases) do if (fase.spells) then for index, spellid in _ipairs (fase.spells) do habilidades_poll [spellid] = true end end end end return habilidades_poll end --> return a table with all boss ids from a raid instance function _detalhes:GetBossIds (mapid) return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].boss_ids end function _detalhes:InstanceIsRaid (mapid) return _detalhes:InstanceisRaid (mapid) end function _detalhes:InstanceisRaid (mapid) return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].is_raid end --> return a table with all encounter names present in raid instance function _detalhes:GetBossNames (mapid) return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].boss_names end --> return the encounter name function _detalhes:GetBossName (mapid, bossindex) return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].boss_names [bossindex] end --> same thing as GetBossDetails, just a alias function _detalhes:GetBossEncounterDetails (mapid, bossindex) return _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounters [bossindex] end function _detalhes:GetEncounterInfoFromEncounterName (EJID, encountername) DetailsFramework.EncounterJournal.EJ_SelectInstance (EJID) for i = 1, 20 do local name = DetailsFramework.EncounterJournal.EJ_GetEncounterInfoByIndex (i, EJID) if (not name) then return end if (name == encountername or name:find (encountername)) then return i, DetailsFramework.EncounterJournal.EJ_GetEncounterInfoByIndex (i, EJID) end end end --> return the wallpaper for the raid instance function _detalhes:GetRaidBackground (mapid) local bosstables = _detalhes.EncounterInformation [mapid] if (bosstables) then local bg = bosstables.backgroundFile if (bg) then return bg.file, unpack (bg.coords) end end end --> return the icon for the raid instance function _detalhes:GetRaidIcon (mapid, ejID, instanceType) local raidIcon = _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].icon if (raidIcon) then return raidIcon end if (ejID and ejID ~= 0) then local name, description, bgImage, buttonImage, loreImage, dungeonAreaMapID, link = DetailsFramework.EncounterJournal.EJ_GetInstanceInfo (ejID) if (name) then if (instanceType == "party") then return loreImage --bgImage elseif (instanceType == "raid") then return loreImage end end end return nil end function _detalhes:GetBossIndex (mapid, encounterCLID, encounterEJID, encounterName) local raidInfo = _detalhes.EncounterInformation [mapid] if (raidInfo) then local index = raidInfo.encounter_ids2 [encounterCLID] or raidInfo.encounter_ids [encounterEJID] if (not index) then for i = 1, #raidInfo.boss_names do if (raidInfo.boss_names [i] == encounterName) then index = i break end end end return index end end --> return the boss icon function _detalhes:GetBossIcon (mapid, bossindex) if (_detalhes.EncounterInformation [mapid]) then local line = math.ceil (bossindex / 4) local x = ( bossindex - ( (line-1) * 4 ) ) / 4 return x-0.25, x, 0.25 * (line-1), 0.25 * line, _detalhes.EncounterInformation [mapid].icons end end --> return the boss portrit function _detalhes:GetBossPortrait (mapid, bossindex, encounterName, ejID) if (mapid and bossindex) then local haveIcon = _detalhes.EncounterInformation [mapid] and _detalhes.EncounterInformation [mapid].encounters [bossindex] and _detalhes.EncounterInformation [mapid].encounters [bossindex].portrait if (haveIcon) then return haveIcon end end if (encounterName and ejID and ejID ~= 0) then local index, name, description, encounterID, rootSectionID, link = _detalhes:GetEncounterInfoFromEncounterName (ejID, encounterName) if (index and name and encounterID) then local id, name, description, displayInfo, iconImage = DetailsFramework.EncounterJournal.EJ_GetCreatureInfo (1, encounterID) if (iconImage) then return iconImage end end end return nil end --> return a list with names of adds and bosses function _detalhes:GetEncounterActorsName (EJ_EncounterID) --code snippet from wowpedia local actors = {} local stack, encounter, _, _, curSectionID = {}, DetailsFramework.EncounterJournal.EJ_GetEncounterInfo (EJ_EncounterID) if (not curSectionID) then return actors end repeat local title, description, depth, abilityIcon, displayInfo, siblingID, nextSectionID, filteredByDifficulty, link, startsOpen, flag1, flag2, flag3, flag4 = DetailsFramework.EncounterJournal.EJ_GetSectionInfo (curSectionID) if (displayInfo ~= 0 and abilityIcon == "") then actors [title] = {model = displayInfo, info = description} end table.insert (stack, siblingID) table.insert (stack, nextSectionID) curSectionID = table.remove (stack) until not curSectionID return actors end function _detalhes:GetInstanceEJID (mapid) mapid = mapid or select (8, GetInstanceInfo()) if (mapid) then local instance_info = _detalhes.EncounterInformation [mapid] if (instance_info) then return instance_info.ej_id or 0 end end return 0 end function _detalhes:GetCurrentDungeonBossListFromEJ() local mapID = C_Map.GetBestMapForUnit ("player") if (not mapID) then --print ("Details! exeption handled: zone has no map") return end local EJ_CInstance = DetailsFramework.EncounterJournal.EJ_GetInstanceForMap(mapID) if (EJ_CInstance and EJ_CInstance ~= 0) then if (_detalhes.encounter_dungeons [EJ_CInstance]) then return _detalhes.encounter_dungeons [EJ_CInstance] end DetailsFramework.EncounterJournal.EJ_SelectInstance (EJ_CInstance) local name, description, bgImage, buttonImage, loreImage, dungeonAreaMapID, link = DetailsFramework.EncounterJournal.EJ_GetInstanceInfo (EJ_CInstance) local boss_list = { [EJ_CInstance] = {name, description, bgImage, buttonImage, loreImage, dungeonAreaMapID, link} } for i = 1, 20 do local encounterName, description, encounterID, rootSectionID, link = DetailsFramework.EncounterJournal.EJ_GetEncounterInfoByIndex (i, EJ_CInstance) if (encounterName) then for o = 1, 6 do local id, creatureName, creatureDescription, displayInfo, iconImage = DetailsFramework.EncounterJournal.EJ_GetCreatureInfo (o, encounterID) if (id) then boss_list [creatureName] = {encounterName, encounterID, creatureName, iconImage, EJ_CInstance} else break end end else break end end _detalhes.encounter_dungeons [EJ_CInstance] = boss_list return boss_list end end function _detalhes:IsRaidRegistered (mapid) return _detalhes.EncounterInformation [mapid] and true end ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> core function _detalhes:InstallEncounter (InstanceTable) _detalhes.EncounterInformation [InstanceTable.id] = InstanceTable return true end end --functionas