MMOBugs MQ2 For EQMac PC Client - Beta Release

Latest News:
I have uploaded a fix for the spell menu ctd.
I tested many times, but I'm not 100% sure it's fixed, perhaps more testing is needed, it's a very difficult bug to nail as I don't get a good enough crash dump when it ctd.

Just fyi for testing purposes, I CTD'd just now when loading a spell set. CTD on 4th spell memmed. Appreciate the work on it, tho.
 
well, I cant tell you how much that sucks, I just cant seem to get a good dump of the crash, Ill continue looking through the code and see if I can figure it out...
 
TBH, no big deal to me. I'm fine clicking the spells in manually. Just testing it for ya since you worked on it.
 
I wish there where more like you, I need testers.
 
I noticed somewhere in the updates that you made it so that you can talk in the chat window at any time. Any chance this could maybe be reverted or just have it as an option? Normally you can be holding your forward button and hit enter, and it basically puts you in autorun mode... definitely missing this, anyway, just my suggestion
 
Well, that thing is a bug and I just fixed it... It's how it works on live servers... anyway I will make it optional, until I do perhaps you can create a hot key for autorun with /keypress forward hold
 
is mq2twist supposed to stop the twist when you get stunned? not sure, but seems to be the case with me.
 
is mq2twist supposed to stop the twist when you get stunned? not sure, but seems to be the case with me.

When I get stunned it carries soon as stun has gone, is ths what you mean or does yours completely stop?
 
Yes absolutely, I can look into that unless htw is already doing it
 
New version has been checked in that has the new targetbuffs.
Htw will push update.
Note that if you are using a custom UI, you might want to update it to take advantage of the new buffsystem.
EQUI_TargetWindow.XML has been changed to make this work.

All Spellicons can be rightclickheld and a infowindow will pop.
If you hold mousepointer over buff, a tooltip with time left and buffname will show up.
I am not 100% happy about the actual time left, there seem to be some difference between whats shown and what it really should be, perhaps if I get more time with it, I can figure out a better formulae, but this sure beats having nothing at all, and its still close enough to be useful. I pretty much have to use the default time a buff should last...
 
Last edited:
Made macs for Fetid Essence and Mistletoe Temper, both brewing. Used them myself to go from 1 to 136 without issue, both simple edits of the Paeala mac posted early in the thread. Thought someone else might find them useful.

Code:
| - PutridEssnce.mac - Idea from kiola.mac
| - Version 1.0
| - This will take you to skill 122 in Brewing
| 
| Open a brew barrel and your bags before you start this macro.

#turbo
#event CombineFail "You lacked the skills to fashion the items together."
#event CombineSucceed "You have fashioned the items together to create something new!"

Sub Main

/declare v61 int outer 0
/declare t9 timer
/declare slotfound int outer
/declare WAITCOUNTER int outer 0

:MakeEssence
   :DoWaterFlask
      /varset slotfound ${FindItem[=Water Flask].InvSlot}
      /if (${slotfound}!=NULL) {
          /echo we found a Water Flask in slot ${slotfound} 
      } else {
          /echo out of Water Flasks
          /goto :Done
      }
      :retrywater
      /varset WAITCOUNTER 0
      /ctrl /itemnotify ${slotfound} leftmouseup
      :WaitforCursorWater
      /if (!${Cursor.ID}) {
          /varcalc WAITCOUNTER (${WAITCOUNTER} + 1)
          /if (${WAITCOUNTER}>5) {
              /echo wait for Water Flask timed out
              /goto :retrywater
          }
          /delay 1s
          /echo waiting for Water Flask...
          /goto :WaitforCursorWater
      }
      /if (${Cursor.Name.Equal[Water Flask]}) {
          /echo wait finished we got ${Cursor.Name} on the cursor
          |drop it into the enviro
          /itemnotify in enviro
      } else {
          |crap this shouldnt happen
          /echo we had a ${Cursor.Name} on the cursor...
          /echo dropping it in inventory
          /notify InventoryWindow IW_CharacterView leftmouseup
          /delay 1s
          /goto :DoWaterFlask
      }
   :DoFishingGrubs
      /varset slotfound ${FindItem[=Fishing Grubs].InvSlot}
      /if (${slotfound}!=NULL) {
          /echo we found a Fishing Grubs in slot ${slotfound}
      } else {
          /echo out of Fishing Grubs
          /goto :Done
      }
      :retryGrubs
      /varset WAITCOUNTER 0
      /ctrl /itemnotify ${slotfound} leftmouseup
      :WaitforCursorGrubs
      /if (!${Cursor.ID}) {
          /varcalc WAITCOUNTER (${WAITCOUNTER} + 1)
          /if (${WAITCOUNTER}>5) {
              /echo wait for Fishing Grubs timed out
              /goto :retryGrubs
          }
          /delay 1s
          /echo waiting...
          /goto :WaitforCursorGrubs
      }
      /if (${Cursor.Name.Equal[Fishing Grubs]}) {
          /echo wait finished we got ${Cursor.Name} on the cursor
          /itemnotify in enviro
      } else {
          /echo we had a ${Cursor.Name} on the cursor...
          /echo dropping it in inventory
          /notify InventoryWindow IW_CharacterView leftmouseup
          /delay 1s
          /goto :DoFishingGrubs
      }
   :DoCombine
      /varset v61 0 
      /doevents flush
      /varset t9 1s
      /combine enviro

   :DropEssence
      /doevents
      /if (${t9}==0) {
         /echo timer was 0
         /goto :MakeEssence
      }
      /if (${v61}==0) {
         /goto :DropEssence
      }
      /echo combine time 30 - ${t9} 
      /doevents flush
   :WaitCursorBack
      /if (!${Cursor.ID}) {
         /delay 0
         /goto :WaitCursorBack
      }
      /delay 2
   :retrydrop
      /varset t9 4s
      /notify InventoryWindow IW_CharacterView leftmouseup
      /delay 1
   :WaitCursorEmpty
      /if (${Cursor.ID}) {
         /if (${t9}==0) {
             /echo timed out waiting for empty cursor
             /goto :retrydrop
         }
         /delay 0
         /goto :WaitCursorEmpty
      }
      /goto :MakeEssence
   :Done
/return

Sub Event_CombineFail
   /varset v61 0
/return 

Sub Event_CombineSucceed 
   /varset v61 1
/return

Code:
| - MistletoeTemper.mac
| - Version 1.0
| - This will take you to skill 136 in Brewing
| 
| Open a brew barrel and your bags before you start this macro.

#turbo
#event CombineFail "You lacked the skills to fashion the items together."
#event CombineSucceed "You have fashioned the items together to create something new!"

Sub Main

/declare v61 int outer 0
/declare t9 timer
/declare slotfound int outer
/declare WAITCOUNTER int outer 0

:MakeMistletoeTemper
   :DoCelestialEssence
      /varset slotfound ${FindItem[=Celestial Essence].InvSlot}
      /if (${slotfound}!=NULL) {
      } else {
          /goto :Done
      }
      :retryEssence
      /varset WAITCOUNTER 0
      /ctrl /itemnotify ${slotfound} leftmouseup
      :WaitforCursorEssence
      /if (!${Cursor.ID}) {
          /varcalc WAITCOUNTER (${WAITCOUNTER} + 1)
          /if (${WAITCOUNTER}>5) {
              /goto :retrywater
          }
          /delay 1s
          /goto :WaitforCursorWater
      }
      /if (${Cursor.Name.Equal[Celestial Essence]}) {
          /itemnotify in enviro
      } else {
          /notify InventoryWindow IW_CharacterView leftmouseup
          /delay 1s
          /goto :DoCelestialEssence
      }
   :DoMistletoe
      /varset slotfound ${FindItem[=Mistletoe].InvSlot}
      /if (${slotfound}!=NULL) {
      } else {
          /goto :Done
      }
      :retryMistletoe
      /varset WAITCOUNTER 0
      /ctrl /itemnotify ${slotfound} leftmouseup
      :WaitforCursorMistletoe
      /if (!${Cursor.ID}) {
          /varcalc WAITCOUNTER (${WAITCOUNTER} + 1)
          /if (${WAITCOUNTER}>5) {
              /goto :retryMistletoe
          }
          /delay 1s
          /goto :WaitforCursorMistletoe
      }
      /if (${Cursor.Name.Equal[Mistletoe]}) {
          /itemnotify in enviro
      } else {
          /notify InventoryWindow IW_CharacterView leftmouseup
          /delay 1s
          /goto :DoMistletoe
      }

    :DoElvenWine
      /varset slotfound ${FindItem[=Elven Wine].InvSlot}
      /if (${slotfound}!=NULL) {
      } else {
          /goto :Done
      }
      :retryElvenWine
      /varset WAITCOUNTER 0
      /ctrl /itemnotify ${slotfound} leftmouseup
      :WaitforCursorElvenWine
      /if (!${Cursor.ID}) {
          /varcalc WAITCOUNTER (${WAITCOUNTER} + 1)
          /if (${WAITCOUNTER}>5) {
              /goto :retryElvenWine
          }
          /delay 1s
          /goto :WaitforCursorElvenWine
      }
      /if (${Cursor.Name.Equal[Elven Wine]}) {
          /itemnotify in enviro
      } else {
          /notify InventoryWindow IW_CharacterView leftmouseup
          /delay 1s
          /goto :DoElvenWine
      }  

   :DoCombine
      /varset v61 0 
      /doevents flush
      /varset t9 1s
      /combine enviro

   :DropMistletoeTemper
      /doevents
      /if (${t9}==0) {
         /goto :MakeMistletoeTemper
      }
      /if (${v61}==0) {
         /goto :DropMistletoeTemper
      }
      /echo combine time 30 - ${t9} 
      /doevents flush

   :WaitCursorBack
      /if (!${Cursor.ID}) {
         /delay 0
         /goto :WaitCursorBack
      }
      /delay 2

   :retrydrop
      /varset t9 4s
      /notify InventoryWindow IW_CharacterView leftmouseup
      /delay 1

   :WaitCursorEmpty
      /if (${Cursor.ID}) {
         /if (${t9}==0) {
             /echo timed out waiting for empty cursor
             /goto :retrydrop
         }
         /delay 0
         /goto :WaitCursorEmpty
      }
      /goto :MakeMistletoeTemper
   :Done

/return

Sub Event_CombineFail
   /varset v61 0
/return 

Sub Event_CombineSucceed 
   /varset v61 1
/return
 
Last edited by a moderator:
Release is up. Also added MQ2EQBC and MQ2DoCrack. MQ2EQBC window functions are not available for those used to a dedicated BC ui chat window, but uses MQ2 chat window (same as not using window option in current live version). MQ2DoCrack entries are provided 'as is', and cannot be modifed or added to by the end user.

htw
 
MQ2DoCrack entries are provided 'as is', and cannot be modifed or added to by the end user.

Is MQ2DoCrack basically how that EQTrainer program functions? Seems like they offer the same types of things. Sorry if that's an overly newb question, trying to get a handle on some of this stuff.