Mercurial > wow > wowdb-profiler
comparison Main.lua @ 336:cba0e57a71b7 WoD
Many updated WoD constants, added new WoD english locales, and consolidated two similar variables.
| author | MMOSimca <MMOSimca@gmail.com> |
|---|---|
| date | Fri, 05 Sep 2014 01:20:44 -0400 |
| parents | 5bc69e705add |
| children | 48f7f671fc77 |
comparison
equal
deleted
inserted
replaced
| 335:2ca6db4e2296 | 336:cba0e57a71b7 |
|---|---|
| 46 local PLAYER_FACTION = _G.UnitFactionGroup("player") | 46 local PLAYER_FACTION = _G.UnitFactionGroup("player") |
| 47 local PLAYER_GUID | 47 local PLAYER_GUID |
| 48 local PLAYER_NAME = _G.UnitName("player") | 48 local PLAYER_NAME = _G.UnitName("player") |
| 49 local PLAYER_RACE = _G.select(2, _G.UnitRace("player")) | 49 local PLAYER_RACE = _G.select(2, _G.UnitRace("player")) |
| 50 | 50 |
| 51 local SPELL_ID_CHI_WAVE = 132464 | 51 local CHI_WAVE_SPELL_ID = 132464 |
| 52 local SPELL_ID_DISGUISE = 121308 | 52 local DISGUISE_SPELL_ID = 121308 |
| 53 | |
| 54 -- Constant for duplicate boss data; a dirty hack to get around world bosses that cannot be identified individually and cannot be linked on wowdb because they are not in a raid | |
| 55 local DUPLICATE_WORLD_BOSS_IDS = { | |
| 56 [71952] = { 71953, 71954, 71955, }, | |
| 57 } | |
| 53 | 58 |
| 54 local ALLOWED_LOCALES = { | 59 local ALLOWED_LOCALES = { |
| 55 enUS = true, | 60 enUS = true, |
| 56 enGB = true, | 61 enGB = true, |
| 62 enTW = true, | |
| 63 enCN = true, | |
| 57 } | 64 } |
| 58 | 65 |
| 59 local DATABASE_DEFAULTS = { | 66 local DATABASE_DEFAULTS = { |
| 60 char = {}, | 67 char = {}, |
| 61 global = { | 68 global = { |
| 291 return math.floor(copper_cost / modifier) | 298 return math.floor(copper_cost / modifier) |
| 292 end | 299 end |
| 293 end -- do-block | 300 end -- do-block |
| 294 | 301 |
| 295 | 302 |
| 296 -- Constant for duplicate boss data; a dirty hack to get around world bosses that cannot be identified individually and cannot be linked on wowdb because they are not in a raid | |
| 297 local DUPLICATE_WORLD_BOSS_IDS = { | |
| 298 [71952] = { 71953, 71954, 71955, }, | |
| 299 } | |
| 300 | |
| 301 | |
| 302 -- Called on a timer | 303 -- Called on a timer |
| 303 local function ClearKilledNPC() | 304 local function ClearKilledNPC() |
| 304 killed_npc_id = nil | 305 killed_npc_id = nil |
| 305 end | 306 end |
| 306 | 307 |
| 310 WDP:CancelTimer(killed_boss_id_timer_handle) | 311 WDP:CancelTimer(killed_boss_id_timer_handle) |
| 311 killed_boss_id_timer_handle = nil | 312 killed_boss_id_timer_handle = nil |
| 312 end | 313 end |
| 313 | 314 |
| 314 table.wipe(boss_loot_toasting) | 315 table.wipe(boss_loot_toasting) |
| 315 private.raid_finder_boss_id = nil | 316 private.raid_boss_id = nil |
| 316 private.world_boss_id = nil | |
| 317 end | 317 end |
| 318 | 318 |
| 319 | 319 |
| 320 local function ClearLootToastContainerID() | 320 local function ClearLootToastContainerID() |
| 321 if loot_toast_container_timer_handle then | 321 if loot_toast_container_timer_handle then |
| 589 | 589 |
| 590 for line_index = 1, DatamineTT:NumLines() do | 590 for line_index = 1, DatamineTT:NumLines() do |
| 591 local current_line = _G["WDPDatamineTTTextLeft" .. line_index] | 591 local current_line = _G["WDPDatamineTTTextLeft" .. line_index] |
| 592 | 592 |
| 593 if not current_line then | 593 if not current_line then |
| 594 Debug("HandleItemUse: Item with ID %d and link %s had an invalid tooltip.", item_id, item_link, _G.ITEM_OPENABLE) | 594 Debug("HandleItemUse: Item with ID %d and link %s had an invalid tooltip.", item_id, item_link) |
| 595 return | 595 return |
| 596 end | 596 end |
| 597 | 597 |
| 598 if current_line:GetText() == _G.ITEM_OPENABLE then | 598 if current_line:GetText() == _G.ITEM_OPENABLE then |
| 599 table.wipe(current_action) | 599 table.wipe(current_action) |
| 973 | 973 |
| 974 for stat, amount in pairs(intermediary) do | 974 for stat, amount in pairs(intermediary) do |
| 975 item.upgrades[upgrade_id][stat] = amount | 975 item.upgrades[upgrade_id][stat] = amount |
| 976 end | 976 end |
| 977 end | 977 end |
| 978 end | 978 end -- do-block |
| 979 | |
| 980 -- do-block | |
| 981 | 979 |
| 982 | 980 |
| 983 local function RecordItemData(item_id, item_link, durability) | 981 local function RecordItemData(item_id, item_link, durability) |
| 984 local _, _, item_string = item_link:find("^|%x+|H(.+)|h%[.+%]") | 982 local _, _, item_string = item_link:find("^|%x+|H(.+)|h%[.+%]") |
| 985 local item | 983 local item |
| 1241 if not loot_type or (loot_type ~= "item" and loot_type ~= "money" and loot_type ~= "currency") then | 1239 if not loot_type or (loot_type ~= "item" and loot_type ~= "money" and loot_type ~= "currency") then |
| 1242 Debug("%s: loot_type is %s. Item link is %s, and quantity is %d.", event_name, loot_type, item_link, quantity) | 1240 Debug("%s: loot_type is %s. Item link is %s, and quantity is %d.", event_name, loot_type, item_link, quantity) |
| 1243 return | 1241 return |
| 1244 end | 1242 end |
| 1245 local container_id = private.loot_toast_container_id | 1243 local container_id = private.loot_toast_container_id |
| 1246 local npc_id = private.raid_finder_boss_id or private.world_boss_id | 1244 local npc_id = private.raid_boss_id |
| 1247 | 1245 |
| 1248 if npc_id then | 1246 if npc_id then |
| 1249 -- slightly messy hack to workaround duplicate world bosses | 1247 -- Slightly messy hack to workaround duplicate world bosses |
| 1250 local upper_limit = 0 | 1248 local upper_limit = 0 |
| 1251 if DUPLICATE_WORLD_BOSS_IDS[npc_id] then | 1249 if DUPLICATE_WORLD_BOSS_IDS[npc_id] then |
| 1252 upper_limit = #DUPLICATE_WORLD_BOSS_IDS[npc_id] | 1250 upper_limit = #DUPLICATE_WORLD_BOSS_IDS[npc_id] |
| 1253 end | 1251 end |
| 1254 for i = 0, upper_limit do | 1252 for i = 0, upper_limit do |
| 1365 function WDP:CHAT_MSG_LOOT(event_name, message) | 1363 function WDP:CHAT_MSG_LOOT(event_name, message) |
| 1366 local category | 1364 local category |
| 1367 | 1365 |
| 1368 if current_action.spell_label ~= "EXTRACT_GAS" then | 1366 if current_action.spell_label ~= "EXTRACT_GAS" then |
| 1369 category = AF.ZONE | 1367 category = AF.ZONE |
| 1370 elseif private.raid_finder_boss_id then | 1368 elseif private.raid_boss_id then |
| 1371 category = AF.NPC | 1369 category = AF.NPC |
| 1372 end | 1370 end |
| 1373 local update_func = CHAT_MSG_LOOT_UPDATE_FUNCS[category] | 1371 local update_func = CHAT_MSG_LOOT_UPDATE_FUNCS[category] |
| 1374 | 1372 |
| 1375 if not category or not update_func then | 1373 if not category or not update_func then |
| 1474 do | 1472 do |
| 1475 local FLAGS_NPC = bit.bor(_G.COMBATLOG_OBJECT_TYPE_GUARDIAN, _G.COMBATLOG_OBJECT_CONTROL_NPC) | 1473 local FLAGS_NPC = bit.bor(_G.COMBATLOG_OBJECT_TYPE_GUARDIAN, _G.COMBATLOG_OBJECT_CONTROL_NPC) |
| 1476 local FLAGS_NPC_CONTROL = bit.bor(_G.COMBATLOG_OBJECT_AFFILIATION_OUTSIDER, _G.COMBATLOG_OBJECT_CONTROL_NPC) | 1474 local FLAGS_NPC_CONTROL = bit.bor(_G.COMBATLOG_OBJECT_AFFILIATION_OUTSIDER, _G.COMBATLOG_OBJECT_CONTROL_NPC) |
| 1477 | 1475 |
| 1478 local function RecordNPCSpell(sub_event, source_guid, source_name, source_flags, dest_guid, dest_name, dest_flags, spell_id, spell_name) | 1476 local function RecordNPCSpell(sub_event, source_guid, source_name, source_flags, dest_guid, dest_name, dest_flags, spell_id, spell_name) |
| 1479 if not spell_id or spell_id == SPELL_ID_CHI_WAVE or spell_id == SPELL_ID_DISGUISE then | 1477 if not spell_id or spell_id == CHI_WAVE_SPELL_ID or spell_id == DISGUISE_SPELL_ID then |
| 1480 return | 1478 return |
| 1481 end | 1479 end |
| 1482 local source_type, source_id = ParseGUID(source_guid) | 1480 local source_type, source_id = ParseGUID(source_guid) |
| 1483 | 1481 |
| 1484 if not source_id or not UnitTypeIsNPC(source_type) then | 1482 if not source_id or not UnitTypeIsNPC(source_type) then |
| 2192 end | 2190 end |
| 2193 end -- do-block | 2191 end -- do-block |
| 2194 | 2192 |
| 2195 | 2193 |
| 2196 function WDP:PET_BAR_UPDATE(event_name) | 2194 function WDP:PET_BAR_UPDATE(event_name) |
| 2197 if current_action.spell_label ~= "MIND_CONTROL" then | 2195 if not private.NON_LOOT_SPELL_LABELS[current_action.spell_label] then |
| 2198 return | 2196 return |
| 2199 end | 2197 end |
| 2200 local unit_type, unit_idnum = ParseGUID(_G.UnitGUID("pet")) | 2198 local unit_type, unit_idnum = ParseGUID(_G.UnitGUID("pet")) |
| 2201 | 2199 |
| 2202 if not unit_idnum or not UnitTypeIsNPC(unit_type) then | 2200 if not unit_idnum or not UnitTypeIsNPC(unit_type) then |
| 2514 | 2512 |
| 2515 function WDP:SPELL_CONFIRMATION_PROMPT(event_name, spell_id, confirm_type, text, duration, currency_id_cost) | 2513 function WDP:SPELL_CONFIRMATION_PROMPT(event_name, spell_id, confirm_type, text, duration, currency_id_cost) |
| 2516 if private.RAID_BOSS_BONUS_SPELL_ID_TO_NPC_ID_MAP[spell_id] then | 2514 if private.RAID_BOSS_BONUS_SPELL_ID_TO_NPC_ID_MAP[spell_id] then |
| 2517 ClearKilledBossID() | 2515 ClearKilledBossID() |
| 2518 ClearLootToastContainerID() | 2516 ClearLootToastContainerID() |
| 2519 private.raid_finder_boss_id = private.RAID_BOSS_BONUS_SPELL_ID_TO_NPC_ID_MAP[spell_id] | 2517 private.raid_boss_id = private.RAID_BOSS_BONUS_SPELL_ID_TO_NPC_ID_MAP[spell_id] |
| 2520 elseif private.WORLD_BOSS_BONUS_SPELL_ID_TO_NPC_ID_MAP[spell_id] then | |
| 2521 ClearKilledBossID() | |
| 2522 ClearLootToastContainerID() | |
| 2523 private.world_boss_id = private.WORLD_BOSS_BONUS_SPELL_ID_TO_NPC_ID_MAP[spell_id] | |
| 2524 else | 2518 else |
| 2525 Debug("%s: Spell ID %d is not a known raid or world boss 'Bonus' spell.", event_name, spell_id) | 2519 Debug("%s: Spell ID %d is not a known raid boss 'Bonus' spell.", event_name, spell_id) |
| 2526 return | 2520 return |
| 2527 end | 2521 end |
| 2528 | 2522 |
| 2529 -- Assign existing loot data to boss if it exists | 2523 -- Assign existing loot data to boss if it exists |
| 2530 if loot_toast_data then | 2524 if loot_toast_data then |
| 2531 local npc_id = private.raid_finder_boss_id or private.world_boss_id | 2525 local npc_id = private.raid_boss_id |
| 2532 | 2526 |
| 2533 -- Slightly messy hack to workaround duplicate world bosses | 2527 -- Slightly messy hack to workaround duplicate world bosses |
| 2534 local upper_limit = 0 | 2528 local upper_limit = 0 |
| 2535 if DUPLICATE_WORLD_BOSS_IDS[npc_id] then | 2529 if DUPLICATE_WORLD_BOSS_IDS[npc_id] then |
| 2536 upper_limit = #DUPLICATE_WORLD_BOSS_IDS[npc_id] | 2530 upper_limit = #DUPLICATE_WORLD_BOSS_IDS[npc_id] |
