Mercurial > wow > askmrrobot
comparison Export.lua @ 112:57c6cac5143c v52
7.3 update, preparation for reading crucible.
| author | yellowfive | 
|---|---|
| date | Mon, 28 Aug 2017 19:33:14 -0700 | 
| parents | e635cd648e01 | 
| children | 4cd98aa90d78 | 
   comparison
  equal
  deleted
  inserted
  replaced
| 111:2f78f6c96183 | 112:57c6cac5143c | 
|---|---|
| 267 end | 267 end | 
| 268 | 268 | 
| 269 Amr.db.char.Talents[specPos] = str | 269 Amr.db.char.Talents[specPos] = str | 
| 270 end | 270 end | 
| 271 | 271 | 
| 272 local function scanCrucible() | |
| 273 if not Amr.db or not Amr.db.char or not Amr.db.char.Artifacts or not C_ArtifactRelicForgeUI or not C_ArtifactRelicForgeUI.GetSocketedRelicTalents then return end | |
| 274 | |
| 275 local equipped = {} | |
| 276 local preview = nil | |
| 277 | |
| 278 for i = 1,4 do | |
| 279 local talents = nil | |
| 280 if i == 4 then | |
| 281 talents = C_ArtifactRelicForgeUI.GetPreviewRelicTalents() | |
| 282 --talents = nil | |
| 283 else | |
| 284 talents = C_ArtifactRelicForgeUI.GetSocketedRelicTalents(i) | |
| 285 | |
| 286 --[[ | |
| 287 if i == 1 then | |
| 288 talents = {} | |
| 289 table.insert(talents, { | |
| 290 powerID = 1739, | |
| 291 isChosen = true | |
| 292 }) | |
| 293 table.insert(talents, { | |
| 294 powerID = 1781, | |
| 295 isChosen = true | |
| 296 }) | |
| 297 table.insert(talents, { | |
| 298 powerID = 1770, | |
| 299 isChosen = false | |
| 300 }) | |
| 301 table.insert(talents, { | |
| 302 powerID = 791, | |
| 303 isChosen = false | |
| 304 }) | |
| 305 table.insert(talents, { | |
| 306 powerID = 786, | |
| 307 isChosen = false | |
| 308 }) | |
| 309 table.insert(talents, { | |
| 310 powerID = 1537, | |
| 311 isChosen = false | |
| 312 }) | |
| 313 end | |
| 314 ]] | |
| 315 end | |
| 316 | |
| 317 if talents then | |
| 318 local obj = { | |
| 319 Powers = {}, | |
| 320 Active = {} | |
| 321 } | |
| 322 | |
| 323 if i == 4 then | |
| 324 obj.ItemLink = C_ArtifactRelicForgeUI.GetPreviewRelicItemLink() | |
| 325 if not obj.ItemLink then | |
| 326 talents = nil | |
| 327 else | |
| 328 preview = obj | |
| 329 end | |
| 330 else | |
| 331 table.insert(equipped, obj) | |
| 332 end | |
| 333 | |
| 334 if talents then | |
| 335 for k,v in ipairs(talents) do | |
| 336 table.insert(obj.Powers, v.powerID) | |
| 337 table.insert(obj.Active, v.isChosen) | |
| 338 end | |
| 339 end | |
| 340 | |
| 341 elseif i ~= 4 then | |
| 342 table.insert(equipped, {}) | |
| 343 end | |
| 344 end | |
| 345 | |
| 346 | |
| 347 local itemID = C_ArtifactUI.GetArtifactInfo() | |
| 348 local spec = Amr.ArtifactIdToSpecNumber[itemID] | |
| 349 | |
| 350 if spec then | |
| 351 | |
| 352 -- sometimes this event can fire when no crucible data is available, don't overwrite non-blank crucible data with blank crucible data | |
| 353 if Amr.db.char.Artifacts[spec] then | |
| 354 local oldCrucible = Amr.db.char.Artifacts[spec].Crucible | |
| 355 if oldCrucible then | |
| 356 if #oldCrucible.Equipped > 0 and oldCrucible.Equipped[1] and not equipped[1] then | |
| 357 return | |
| 358 end | |
| 359 end | |
| 360 end | |
| 361 | |
| 362 local dataz = Amr.db.char.Artifacts[spec] | |
| 363 if not dataz then | |
| 364 dataz = {} | |
| 365 Amr.db.char.Artifacts[spec] = dataz | |
| 366 end | |
| 367 | |
| 368 if not dataz.Crucible then | |
| 369 dataz.Crucible = { | |
| 370 Equipped = {}, | |
| 371 Inventory = {} | |
| 372 } | |
| 373 end | |
| 374 | |
| 375 local crucible = dataz.Crucible | |
| 376 crucible.Equipped = equipped | |
| 377 if preview then | |
| 378 crucible.Inventory[preview.ItemLink] = preview | |
| 379 end | |
| 380 end | |
| 381 end | |
| 382 | |
| 272 local function scanArtifact() | 383 local function scanArtifact() | 
| 273 if not Amr.db or not Amr.db.char or not Amr.db.char.Artifacts then return end | 384 if not Amr.db or not Amr.db.char or not Amr.db.char.Artifacts then return end | 
| 274 | 385 | 
| 275 local powers = C_ArtifactUI.GetPowers() | 386 local powers = C_ArtifactUI.GetPowers() | 
| 276 if not powers then return end | 387 if not powers then return end | 
| 297 local itemID = C_ArtifactUI.GetArtifactInfo() | 408 local itemID = C_ArtifactUI.GetArtifactInfo() | 
| 298 local spec = Amr.ArtifactIdToSpecNumber[itemID] | 409 local spec = Amr.ArtifactIdToSpecNumber[itemID] | 
| 299 --local spec = GetSpecialization() | 410 --local spec = GetSpecialization() | 
| 300 | 411 | 
| 301 if spec then | 412 if spec then | 
| 302 Amr.db.char.Artifacts[spec] = { | 413 | 
| 303 Powers = powerRanks, | 414 -- sometimes this event can fire when no relic data is available, don't overwrite non-blank relic data with blank relic data | 
| 304 Relics = relicInfo | 415 if Amr.db.char.Artifacts[spec] then | 
| 305 } | 416 local oldRelics = Amr.db.char.Artifacts[spec].Relics | 
| 306 end | 417 if oldRelics then | 
| 418 for i = 1,3 do | |
| 419 if oldRelics[i] and oldRelics[i] ~= "" and (not relicInfo[i] or relicInfo[i] == "") then | |
| 420 relicInfo[i] = oldRelics[i] | |
| 421 end | |
| 422 end | |
| 423 end | |
| 424 end | |
| 425 | |
| 426 local dataz = Amr.db.char.Artifacts[spec] | |
| 427 if not dataz then | |
| 428 dataz = {} | |
| 429 Amr.db.char.Artifacts[spec] = dataz | |
| 430 end | |
| 431 | |
| 432 if not dataz.Crucible then | |
| 433 dataz.Crucible = { | |
| 434 Equipped = {}, | |
| 435 Inventory = {} | |
| 436 } | |
| 437 end | |
| 438 | |
| 439 dataz.Powers = powerRanks | |
| 440 dataz.Relics = relicInfo | |
| 441 | |
| 442 end | |
| 443 | |
| 444 --scanCrucible() | |
| 307 end | 445 end | 
| 308 | 446 | 
| 309 -- Returns a data object containing all information about the current player needed for an export: | 447 -- Returns a data object containing all information about the current player needed for an export: | 
| 310 -- gear, spec, reputations, bag, bank, and void storage items. | 448 -- gear, spec, reputations, bag, bank, and void storage items. | 
| 311 function Amr:ExportCharacter() | 449 function Amr:ExportCharacter() | 
| 342 Amr:AddEventHandler("VOID_STORAGE_DEPOSIT_UPDATE", scanVoid) | 480 Amr:AddEventHandler("VOID_STORAGE_DEPOSIT_UPDATE", scanVoid) | 
| 343 Amr:AddEventHandler("VOID_STORAGE_UPDATE", scanVoid) | 481 Amr:AddEventHandler("VOID_STORAGE_UPDATE", scanVoid) | 
| 344 | 482 | 
| 345 Amr:AddEventHandler("PLAYER_TALENT_UPDATE", scanTalents) | 483 Amr:AddEventHandler("PLAYER_TALENT_UPDATE", scanTalents) | 
| 346 Amr:AddEventHandler("ARTIFACT_UPDATE", scanArtifact) | 484 Amr:AddEventHandler("ARTIFACT_UPDATE", scanArtifact) | 
| 485 Amr:AddEventHandler("ARTIFACT_RELIC_FORGE_UPDATE", scanCrucible) | |
| 486 Amr:AddEventHandler("ARTIFACT_RELIC_FORGE_PREVIEW_RELIC_CHANGED", scanCrucible) | 
