Mercurial > wow > icu
comparison ICU.lua @ 13:ed15bd476bbb beta
+ Added notification when checking is cancelled due to a disabled zone.
Fixed a bug causing players to sometimes show as away/not ready more than once (event fire a third time if player is targeted and in your raid sub-group).
Fixed chat filter for outgoing whispers sent by ICU.
author | Xiiph |
---|---|
date | Mon, 21 Feb 2011 23:58:36 +0100 |
parents | 2d952bc9897a |
children | 21cefa363c73 |
comparison
equal
deleted
inserted
replaced
12:2d952bc9897a | 13:ed15bd476bbb |
---|---|
44 }; | 44 }; |
45 | 45 |
46 | 46 |
47 local minFlaskDuration = 10; | 47 local minFlaskDuration = 10; |
48 local noFlask, noFood, hasLowDuration = {},{},{}; | 48 local noFlask, noFood, hasLowDuration = {},{},{}; |
49 local notReady, notReadyAFK, responders = {}, {}, {}; | 49 local notReady, notReadyAFK, responders = {},{},{}; |
50 local disabledZone = false; | |
50 | 51 |
51 local defaults = { | 52 local defaults = { |
52 profile = { | 53 profile = { |
53 checkFlask = true, | 54 checkFlask = true, |
54 checkFood = true, | 55 checkFood = true, |
374 -- Check if any zones have been disabled | 375 -- Check if any zones have been disabled |
375 if automatic and not self.db.profile.enableAllZones then | 376 if automatic and not self.db.profile.enableAllZones then |
376 local currentZone = GetRealZoneText(); | 377 local currentZone = GetRealZoneText(); |
377 for k,v in pairs(self.db.profile.disabledZones) do | 378 for k,v in pairs(self.db.profile.disabledZones) do |
378 if currentZone == raidMap[k] and v then | 379 if currentZone == raidMap[k] and v then |
379 return true | 380 disabledZone = true; |
381 return true; | |
380 end | 382 end |
381 end | 383 end |
382 end | 384 end |
383 | 385 |
384 local icuAd = ""; | 386 local icuAd = ""; |
430 end | 432 end |
431 | 433 |
432 function icu:announceReport(automatic) | 434 function icu:announceReport(automatic) |
433 SendChatMessage("---- "..L["ICU"].." "..L["Report"].." ----",self.db.profile.reportDestination,nil,nil); | 435 SendChatMessage("---- "..L["ICU"].." "..L["Report"].." ----",self.db.profile.reportDestination,nil,nil); |
434 | 436 |
435 -- Check flask | 437 -- Check if inspection got aborted due to the current zone being disabled |
436 if #noFlask > 0 and self.db.profile.checkFlask then | 438 if disabledZone then |
437 local reportFlaskMessage = L["Missing Flask"]..": " .. table.concat(noFlask, ", "); | 439 if self.db.profile.reportDestination == "SELF" then |
440 DEFAULT_CHAT_FRAME:AddMessage(L["No checking performed, zone disabled."]); | |
441 else | |
442 SendChatMessage(L["No checking performed, zone disabled."],self.db.profile.reportDestination,nil,nil); | |
443 end | |
444 else | |
445 -- Check flask | |
446 if #noFlask > 0 and self.db.profile.checkFlask then | |
447 local reportFlaskMessage = L["Missing Flask"]..": " .. table.concat(noFlask, ", "); | |
448 | |
449 if self.db.profile.reportDestination == "SELF" then | |
450 DEFAULT_CHAT_FRAME:AddMessage(reportFlaskMessage); | |
451 else | |
452 SendChatMessage(reportFlaskMessage,self.db.profile.reportDestination,nil,nil); | |
453 end | |
454 elseif self.db.profile.checkFlask then -- Nobody is missing a flask | |
455 if self.db.profile.reportDestination == "SELF" then | |
456 DEFAULT_CHAT_FRAME:AddMessage(L["Nobody is missing a proper flask."]); | |
457 else | |
458 SendChatMessage(L["Nobody is missing a proper flask."],self.db.profile.reportDestination,nil,nil); | |
459 end | |
460 end | |
438 | 461 |
439 if self.db.profile.reportDestination == "SELF" then | 462 -- Check food |
440 DEFAULT_CHAT_FRAME:AddMessage(reportFlaskMessage); | 463 if #noFood > 0 and self.db.profile.checkFood then |
441 else | 464 local reportFoodMessage = L["Missing Food"]..": " .. table.concat(noFood, ", "); |
442 SendChatMessage(reportFlaskMessage,self.db.profile.reportDestination,nil,nil); | 465 |
443 end | 466 if self.db.profile.reportDestination == "SELF" then |
444 elseif self.db.profile.checkFlask then -- Nobody is missing a flask | 467 DEFAULT_CHAT_FRAME:AddMessage(reportFoodMessage); |
445 if self.db.profile.reportDestination == "SELF" then | 468 else |
446 DEFAULT_CHAT_FRAME:AddMessage(L["Nobody is missing a proper flask."]); | 469 SendChatMessage(reportFoodMessage,self.db.profile.reportDestination,nil,nil); |
447 else | 470 end |
448 SendChatMessage(L["Nobody is missing a proper flask."],self.db.profile.reportDestination,nil,nil); | 471 elseif self.db.profile.checkFood then -- Nobody is missing a food buff |
449 end | 472 if self.db.profile.reportDestination == "SELF" then |
450 end | 473 DEFAULT_CHAT_FRAME:AddMessage(L["Nobody is missing a proper food buff."]); |
451 | 474 else |
452 -- Check food | 475 SendChatMessage(L["Nobody is missing a proper food buff."],self.db.profile.reportDestination,nil,nil); |
453 if #noFood > 0 and self.db.profile.checkFood then | 476 end |
454 local reportFoodMessage = L["Missing Food"]..": " .. table.concat(noFood, ", "); | 477 end |
455 | 478 end |
456 if self.db.profile.reportDestination == "SELF" then | |
457 DEFAULT_CHAT_FRAME:AddMessage(reportFoodMessage); | |
458 else | |
459 SendChatMessage(reportFoodMessage,self.db.profile.reportDestination,nil,nil); | |
460 end | |
461 elseif self.db.profile.checkFood then -- Nobody is missing a food buff | |
462 if self.db.profile.reportDestination == "SELF" then | |
463 DEFAULT_CHAT_FRAME:AddMessage(L["Nobody is missing a proper food buff."]); | |
464 else | |
465 SendChatMessage(L["Nobody is missing a proper food buff."],self.db.profile.reportDestination,nil,nil); | |
466 end | |
467 end | |
468 | |
469 -- Check ready | 479 -- Check ready |
470 if automatic and self.db.profile.announceReadyCheck then -- Check was initialized by ready check event | 480 if automatic and self.db.profile.announceReadyCheck then -- Check was initialized by ready check event |
471 if (#notReady > 0) or (#notReadyAFK > 0) then | 481 if (#notReady > 0) or (#notReadyAFK > 0) then |
472 local reportNotReady = L["Not Ready"]..": " .. table.concat(notReady, ", ") .. (#notReadyAFK > 0 and #notReady > 0 and ", " or "") .. table.concat(notReadyAFK, ", "); | 482 local reportNotReady = L["Not Ready"]..": " .. table.concat(notReady, ", ") .. (#notReadyAFK > 0 and #notReady > 0 and ", " or "") .. table.concat(notReadyAFK, ", "); |
473 | 483 |
506 if not hasFlask then | 516 if not hasFlask then |
507 for k,v in ipairs(flaskID) do | 517 for k,v in ipairs(flaskID) do |
508 if v == spellId then | 518 if v == spellId then |
509 hasFlask = true; | 519 hasFlask = true; |
510 -- Check if low duration | 520 -- Check if low duration |
511 if expirationTime and ((expirationTime-GetTime())/60) <= minFlaskDuration then | 521 if expirationTime and ((expirationTime-GetTime())/60) < minFlaskDuration then |
512 hasLowDuration = true; | 522 hasLowDuration = true; |
513 end | 523 end |
514 end | 524 end |
515 end | 525 end |
516 end | 526 end |
544 wipe(noFood); | 554 wipe(noFood); |
545 wipe(hasLowDuration); | 555 wipe(hasLowDuration); |
546 wipe(notReady); | 556 wipe(notReady); |
547 wipe(notReadyAFK); | 557 wipe(notReadyAFK); |
548 wipe(responders); | 558 wipe(responders); |
559 disabledZone = false; | |
549 end | 560 end |
550 | 561 |
551 function icu:READY_CHECK_FINISHED() | 562 function icu:READY_CHECK_FINISHED() |
552 --print("Ready check finish!"); | 563 --print("Ready check finish!"); |
553 self:UnregisterEvent("READY_CHECK_FINISHED"); | 564 self:UnregisterEvent("READY_CHECK_FINISHED"); |
565 end | 576 end |
566 end | 577 end |
567 | 578 |
568 function icu:READY_CHECK_CONFIRM(event,unit,status) | 579 function icu:READY_CHECK_CONFIRM(event,unit,status) |
569 local raider = UnitName(unit); | 580 local raider = UnitName(unit); |
570 -- Seeing we only check in raids, and this event fires twice for unites in your subgroup | 581 |
571 -- Such as Raid1, and Party1 == Same unit | 582 --@debug@ |
572 -- Dont parse the party event | 583 print(unit); |
573 if string.match(unit,"party") then | 584 --@end-debug@ |
574 return true; | 585 |
575 end | 586 -- Check if the latest entires contain the raider... |
587 -- The event fires twice for units in your party, | |
588 -- and may fire a THIRD time if you have the person targetted ... | |
589 if (responders[#responders] == raider or responders[#responders-1] == raider) then return end | |
576 | 590 |
577 -- Raider is NOT afk, but might not be ready | 591 -- Raider is NOT afk, but might not be ready |
578 responders[#responders+1] = raider; | 592 responders[#responders+1] = raider; |
579 | 593 |
580 -- 1 ready, 0 not ready | 594 -- 1 ready, 0 not ready |
635 | 649 |
636 local function filterChat(self, event, msg) | 650 local function filterChat(self, event, msg) |
637 local db = icu:getDB(); | 651 local db = icu:getDB(); |
638 if msg == db.profile.noFoodMessage or msg == db.profile.noFlaskMessage or msg == db.profile.lowFlaskDurationMessage or msg == (L["ICU"]..": "..db.profile.noFoodMessage) or msg == (L["ICU"]..": "..db.profile.noFlaskMessage) or msg == (L["ICU"]..": "..db.profile.lowFlaskDurationMessage) then return true end | 652 if msg == db.profile.noFoodMessage or msg == db.profile.noFlaskMessage or msg == db.profile.lowFlaskDurationMessage or msg == (L["ICU"]..": "..db.profile.noFoodMessage) or msg == (L["ICU"]..": "..db.profile.noFlaskMessage) or msg == (L["ICU"]..": "..db.profile.lowFlaskDurationMessage) then return true end |
639 end | 653 end |
640 ChatFrame_AddMessageEventFilter("CHAT_MSG_WHISPER_ICU_INFORM", filterChat) | 654 ChatFrame_AddMessageEventFilter("CHAT_MSG_WHISPER_INFORM", filterChat) |
641 | 655 |