• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->
Resource icon

Macro - Endless Mana for MQ2Mage (1 Viewer) 1.9

Maybe I described my wish in an uncomprehensively manner.
As the last version is written in Lua, it could do an infinitive loop, waiting for the mage to get l,ow on mana, and than start to recover the mana.
As far as I could unterstand, actually 1 call of MM will do 1 cycle of manarecovering and than end its service for this time.
To have it work all amgic, you need somethiong else to start it again, once you get low on mana.

As Lua it can run contemporary with all else running, so it could be extendet by a main-loop waiting for the mana to get low.
 
I set up a react for it a long time ago (I think it monitors mana level and combat state). But if you want to have it monitor mana and kick off the cycle at that point, feel free to have a go at the changes. I'm in the middle of another project and really don't have the time to tackle this. As hellfyre eludes to, some sort of config file will be necessary to keep track of the mana level. And probably also one for whether to do the mana recovery while in combat (maybe even taking into account if doing this in a raid/mission vs normal group grinding).
 
has anyone got this to work when using Hunter Tank mode on your mage? For me it will not trigger the macro. When Mage gets to the low mana threshold he just sits and meds. Is this because of how Hunter Tank works?
 
It works but the React doesn't for me. I made a /mac mm button so when I need mana I hit the button, it pauses my MQ2Mage and does what it is supposed to do.
 
So I ended up using the Lua from rouneq
I've expanded this to account for Mages leveling 115 -> 120. Since neither MS XIV nor Gather Vigor are available until 120, those mages below still need MS XIII and Gather Potency. I've also encountered issues getting the MS spell to load (sometimes it won't and I have to do it manually). Lastly, I've also added all the elemental staffs and it'll use the first one it finds in inventory. There's a few other changes, but those should be seen as more of a cleanup. Sharing in case anyone else is interested. And num1 can take them to use going forward. Much of the additions are taken from other macros I use, so I can't claim credit for the basic ideas behind them. Just the tweaks for this particular usage.
and a simple LEM to trigger it. Caveat, though, it gets weird when you are recovering from a death since (in my case) CWTN kicks in and wants to do Mage stuff and the MM Lua also wants to do it's thing. Here I the LEM code

INI:
cmV0dXJuIHsKIGxvYWQgPSB7CiAgYWx3YXlzID0gZmFsc2UsCiAgY2xhc3MgPSAiIiwKICB6b25lID0gIiIsCiB9LAogY29kZSA9ICJiRzlqWVd3Z2JYRWdQU0J5WlhGMWFYSmxLQ2R0Y1NjcENnb3RMUzFBY21WMGRYSnVJR0p2YjJ4bFlXNGdRRkpsZEhWeWJuTWdkSEoxWlNCcFppQjBhR1VnWVdOMGFXOXVJSE5vYjNWc1pDQm1hWEpsTENCdmRHaGxjbmRwYzJVZ1ptRnNjMlV1Q214dlkyRnNJR1oxYm1OMGFXOXVJR052Ym1ScGRHbHZiaWdwQ2lBZ0lDQnNiMk5oYkNCdGVWOWpiR0Z6Y3lBOUlHMXhMbFJNVHk1TlpTNURiR0Z6Y3k1VGFHOXlkRTVoYldVb0tRb2dJQ0FnYkc5allXd2diWGxmYldGdVlTQTlJRzF4TGxSTVR5NU5aUzVRWTNSTllXNWhLQ2tLSUNBZ0lHeHZZMkZzSUcxdFgzTjBZWFIxY3lBOUlHMXhMbFJNVHk1TWRXRXVVMk55YVhCMEtDZHRiU2NwTGxOMFlYUjFjeWdwQ2lBZ0lDQnlaWFIxY200Z2JYbGZZMnhoYzNNZ1BUMGdKMDFCUnljZ1lXNWtJRzE1WDIxaGJtRWdQQ0F4TlNCaGJtUWdiVzFmYzNSaGRIVnpJSDQ5SUNkU1ZVNU9TVTVISndwbGJtUUtDbXh2WTJGc0lHWjFibU4wYVc5dUlHRmpkR2x2YmlncENpQWdJQ0J0Y1M1amJXUW9KeTlzZFdFZ2NuVnVJRzF0SnlrS1pXNWtDZ3B5WlhSMWNtNGdlMk52Ym1SbWRXNWpQV052Ym1ScGRHbHZiaXdnWVdOMGFXOXVablZ1WXoxaFkzUnBiMjU5IiwKIGNhdGVnb3J5ID0gIiIsCiB0eXBlID0gImNvbmRpdGlvbnMiLAogbmFtZSA9ICJNYWdlTWFuYSIsCn0=
 
So I ended up using the Lua from rouneq

and a simple LEM to trigger it. Caveat, though, it gets weird when you are recovering from a death since (in my case) CWTN kicks in and wants to do Mage stuff and the MM Lua also wants to do it's thing. Here I the LEM code

INI:
cmV0dXJuIHsKIGxvYWQgPSB7CiAgYWx3YXlzID0gZmFsc2UsCiAgY2xhc3MgPSAiIiwKICB6b25lID0gIiIsCiB9LAogY29kZSA9ICJiRzlqWVd3Z2JYRWdQU0J5WlhGMWFYSmxLQ2R0Y1NjcENnb3RMUzFBY21WMGRYSnVJR0p2YjJ4bFlXNGdRRkpsZEhWeWJuTWdkSEoxWlNCcFppQjBhR1VnWVdOMGFXOXVJSE5vYjNWc1pDQm1hWEpsTENCdmRHaGxjbmRwYzJVZ1ptRnNjMlV1Q214dlkyRnNJR1oxYm1OMGFXOXVJR052Ym1ScGRHbHZiaWdwQ2lBZ0lDQnNiMk5oYkNCdGVWOWpiR0Z6Y3lBOUlHMXhMbFJNVHk1TlpTNURiR0Z6Y3k1VGFHOXlkRTVoYldVb0tRb2dJQ0FnYkc5allXd2diWGxmYldGdVlTQTlJRzF4TGxSTVR5NU5aUzVRWTNSTllXNWhLQ2tLSUNBZ0lHeHZZMkZzSUcxdFgzTjBZWFIxY3lBOUlHMXhMbFJNVHk1TWRXRXVVMk55YVhCMEtDZHRiU2NwTGxOMFlYUjFjeWdwQ2lBZ0lDQnlaWFIxY200Z2JYbGZZMnhoYzNNZ1BUMGdKMDFCUnljZ1lXNWtJRzE1WDIxaGJtRWdQQ0F4TlNCaGJtUWdiVzFmYzNSaGRIVnpJSDQ5SUNkU1ZVNU9TVTVISndwbGJtUUtDbXh2WTJGc0lHWjFibU4wYVc5dUlHRmpkR2x2YmlncENpQWdJQ0J0Y1M1amJXUW9KeTlzZFdFZ2NuVnVJRzF0SnlrS1pXNWtDZ3B5WlhSMWNtNGdlMk52Ym1SbWRXNWpQV052Ym1ScGRHbHZiaXdnWVdOMGFXOXVablZ1WXoxaFkzUnBiMjU5IiwKIGNhdGVnb3J5ID0gIiIsCiB0eXBlID0gImNvbmRpdGlvbnMiLAogbmFtZSA9ICJNYWdlTWFuYSIsCn0=
Do you use MQ2Boxr? One of the first things the script does after verifying the operating environment is workable (i.e., initialization logic) is to use /squelch /docommand /boxr pause. Later followed by a /boxr unpause before ending. This should stop any macro/plugin activity while MM is doing the work.
 
So I ended up using the Lua from rouneq

and a simple LEM to trigger it. Caveat, though, it gets weird when you are recovering from a death since (in my case) CWTN kicks in and wants to do Mage stuff and the MM Lua also wants to do it's thing. Here I the LEM code

INI:
cmV0dXJuIHsKIGxvYWQgPSB7CiAgYWx3YXlzID0gZmFsc2UsCiAgY2xhc3MgPSAiIiwKICB6b25lID0gIiIsCiB9LAogY29kZSA9ICJiRzlqWVd3Z2JYRWdQU0J5WlhGMWFYSmxLQ2R0Y1NjcENnb3RMUzFBY21WMGRYSnVJR0p2YjJ4bFlXNGdRRkpsZEhWeWJuTWdkSEoxWlNCcFppQjBhR1VnWVdOMGFXOXVJSE5vYjNWc1pDQm1hWEpsTENCdmRHaGxjbmRwYzJVZ1ptRnNjMlV1Q214dlkyRnNJR1oxYm1OMGFXOXVJR052Ym1ScGRHbHZiaWdwQ2lBZ0lDQnNiMk5oYkNCdGVWOWpiR0Z6Y3lBOUlHMXhMbFJNVHk1TlpTNURiR0Z6Y3k1VGFHOXlkRTVoYldVb0tRb2dJQ0FnYkc5allXd2diWGxmYldGdVlTQTlJRzF4TGxSTVR5NU5aUzVRWTNSTllXNWhLQ2tLSUNBZ0lHeHZZMkZzSUcxdFgzTjBZWFIxY3lBOUlHMXhMbFJNVHk1TWRXRXVVMk55YVhCMEtDZHRiU2NwTGxOMFlYUjFjeWdwQ2lBZ0lDQnlaWFIxY200Z2JYbGZZMnhoYzNNZ1BUMGdKMDFCUnljZ1lXNWtJRzE1WDIxaGJtRWdQQ0F4TlNCaGJtUWdiVzFmYzNSaGRIVnpJSDQ5SUNkU1ZVNU9TVTVISndwbGJtUUtDbXh2WTJGc0lHWjFibU4wYVc5dUlHRmpkR2x2YmlncENpQWdJQ0J0Y1M1amJXUW9KeTlzZFdFZ2NuVnVJRzF0SnlrS1pXNWtDZ3B5WlhSMWNtNGdlMk52Ym1SbWRXNWpQV052Ym1ScGRHbHZiaXdnWVdOMGFXOXVablZ1WXoxaFkzUnBiMjU5IiwKIGNhdGVnb3J5ID0gIiIsCiB0eXBlID0gImNvbmRpdGlvbnMiLAogbmFtZSA9ICJNYWdlTWFuYSIsCn0=
I can't seem to get the Lua from rouneq to work. Did you need to do any changes to that?
 
My Lua version. There is an issue if the "Gather" spell isn't available. Put in your lua folder. Extract into that folder (a couple files are put into lib).
I made some small changes on it, here is my version based on the Lua by @rouneq

MM Brute Force:
--- @type Mq
local mq = require('mq')
local Note = require('lib.Note')

Note.prefix = 'MonsterMana'
Note.loglevel = 'info'

local workingStates = { Active=true, Cooldown=true, Resting=true, }
local MonsterSummoning
local MonsterSummoningSpell
local GatherMana
local GatherManaSpell
local ReclaimSet
local ReclaimItem
local RetryCount = 5
local MiscSpellGem = 7
local IsMemorizing = false

--[[ local function delay(timeout, condition)
    if ((not timeout and not condition) or type(timeout) ~= "number") then
        return
    end

    if (not condition) then
        mq.delay(timeout)

        return
    end

    local function predicate()
        mq.doevents()

        return condition()
    end

    mq.delay(timeout, predicate)
end ]]

local function CheckPlugin(plugin)
    if (not mq.TLO.Plugin(plugin)()) then
        mq.cmdf('/squelch /plugin %s noauto', plugin)
        Note.Debug('\aw%s\ar not detected! \awThis script requires it! Loading ...', plugin)
    end
end

local function ChooseAbility(set)
    -- Create New spell holder as Outer if it doesn't already exist
    local chosenSpell
    local highestSpellLevel = 0

    -- Iterate throught the spell set
    for _, value in ipairs(set) do
        Note.Debug('spell: %s', value)
        local spellLevel = mq.TLO.Spell(value).Level()
        Note.Debug('spellLevel: %s', spellLevel)
        local spellRank = mq.TLO.Spell(value).RankName()
        Note.Debug('spellRank: %s', spellRank)

        -- Detect mispelled spells
        if (not spellRank) then
            Note.Info('\arSPELL NOT AVAILABLE: \ax%s', value)
        -- If we can cast the spell and its in our book, see if we should use it
        elseif (mq.TLO.Me.Book(spellRank)()) then
            -- If it's higher than the spell we've already set, use it.
            if (spellLevel > highestSpellLevel) then
                -- This is the value we use for casting and buff checking so must be BaseName. RankName is only
                -- for memorization and Me.Book checking.
                if (mq.TLO.Me.SpellRankCap() > 1) then
                    chosenSpell = mq.TLO.Spell(spellRank).RankName()
                else
                    chosenSpell = mq.TLO.Spell(spellRank).BaseName()
                end

                highestSpellLevel = spellLevel
            end
        end
    end

    Note.Debug('selected spell: %s', chosenSpell)

    return chosenSpell
end

local function ChooseItem(set)
    local reclaimItem

    -- Iterate throught the staff set
    for _, value in ipairs(set) do
        if (mq.TLO.FindItemCount(value)()>0) then
            reclaimItem = value

            break
        end
    end

    Note.Debug('reclaim item: %s', reclaimItem)

    return reclaimItem
end

local function Init()
    CheckPlugin('MQ2XAssist')
    CheckPlugin('MQ2AdvPath')
    CheckPlugin('MQ2MoveUtils')
    CheckPlugin('MQ2Boxr')

    MonsterSummoning = {
        "Monster Summoning XV",
        "Monster Summoning XIV",
        "Monster Summoning XIII",
    }

    MonsterSummoningSpell = ChooseAbility(MonsterSummoning)

    if (not MonsterSummoningSpell) then
        Note.Info('A monster summoning spell is not available')

        return false
    end

    GatherMana = {
        "Gather Vigor",
        "Gather Potency",
    }

    GatherManaSpell = ChooseAbility(GatherMana)

    if (not GatherManaSpell) then
        Note.Info('A gather mana spell is not available')

        return false
    end

    -- There are multiple instant cast "Reclaim Energy" items, if yours is different, add to the set below.
    ReclaimSet = {
        "Staff of Elemental Mastery: Earth",
        "Staff of Elemental Mastery: Fire",
        "Staff of Elemental Mastery: Air",
        "Staff of Elemental Mastery: Water",
        "Broom of Trilon",
        "Ancient Torch of Alna",
        "Gemmed Gloves of Guile",
        "Gloves of Dark Summoning",
        "Shovel of Ponz",
        "Stein of Ulissa",
        "Torch of Alna"
    }

    ReclaimItem = ChooseItem(ReclaimSet)

    if (not ReclaimItem) then
        Note.Info('An item to reclaim energy is not present in inventory')

        return false
    end

    return true
end

local function Event_BeginMemorizing(_, spellName)
    IsMemorizing = true
end

local Event_EndMemorizing = function(_, spellName)
    IsMemorizing = false
end

mq.event('BeginMemorizing', "#*#Beginning to memorize #1#...#*#", Event_BeginMemorizing)
mq.event('FinishMemorizing', "#*#You have finished memorizing #1##*#", Event_EndMemorizing)
mq.event('AbortMemorizing', "#*#Aborting memorization of spell.#*#", Event_EndMemorizing)

local function LoadSpellGem(spellToMem, requestedMemGem)
    if (mq.TLO.Me.Gem(spellToMem)()) then
        Note.Debug('Requested spell "%s" is already in a gem slot. Returning that gem slot number instead', spellToMem)

        return mq.TLO.Me.Gem(spellToMem)()
    end

    -- We want to pop out quickly if we're in combat or moving
    if ( mq.TLO.AdvPath.Following() or
        mq.TLO.MoveTo.Moving() or
        mq.TLO.Me.Moving() or
        -- mq.TLO.XAssist.XTFullHaterCount() > 0 or
        mq.TLO.Navigation.Active()) then
        Note.Info('Cannot mem a spell while moving')

        return
    end

    -- Need to use RankName with Me.Book and /memspell
    spellToMem = mq.TLO.Spell(spellToMem).RankName()

    if (spellToMem == nil or spellToMem == '') then
        Note.Info('Invalid spellToMem "%s"', spellToMem)

        return
    end

    if (not mq.TLO.Me.Book(spellToMem)()) then
        Note.Info('\awCould Not find the spell "%s" in the spell book.', spellToMem)

        return
    end

    if (not mq.TLO.Me.Gem(requestedMemGem)() and requestedMemGem ~= MiscSpellGem) then
        Note.Info('Requested gem slot, %s, is not available. Using default misc spell gem, %s, instead', requestedMemGem, MiscSpellGem)

        requestedMemGem = MiscSpellGem
    end

    Note.Info('\agMeming \aw"%s" in \agslot %s', spellToMem, requestedMemGem)
    mq.cmdf('/memspell %s "%s"', requestedMemGem, spellToMem)

    -- Client settle delay to avoid getting stuck in loading spell gems.
    mq.delay(2000, function()
        --return mq.TLO.Window('SpellBookWnd').Open() and IsMemorizing
        return IsMemorizing
    end)

    mq.delay(10000, function()
        return mq.TLO.Me.Gem(requestedMemGem).Name() == spellToMem or not IsMemorizing
    end)

    if (mq.TLO.Me.Gem(requestedMemGem).Name() ~= spellToMem) then
        --[[ if (mq.TLO.XAssist.XTFullHaterCount() > 0) then
            Note.Info('I was interruped by combat while waiting to memorize ${spellToMem}.')

            return
        end ]]

        if (not mq.TLO.Window('SpellBookWnd').Open()) then
            Note.Info('My Spellbook Window closed while I tried to memorize a spell.')

            return
        end
    end

    return requestedMemGem
end

local function ReclaimMana()
    Note.Info('Mana Loop Started')
    mq.cmd('/squelch /beepontells off')
    while (mq.TLO.Me.PctMana() < 90) do
        if (mq.TLO.Cursor.ID()) then
            mq.cmd('/autoinventory')
            mq.delay(2000)
            mq.cmd('/autoinventory')
        end
       
        -- move to MA

        if mq.TLO.Group.MainAssist() and mq.TLO.Group.MainAssist.Distance() > 40 then
            mq.cmdf('/squelch /nav id %s',mq.TLO.Group.MainAssist.ID())
            Note.Info('Catching up with MA')
            while mq.TLO.Navigation.Active() do mq.delay(100) end
            mq.delay(500)
        end

        -- Checking if mana is under 8%
        if (mq.TLO.Me.PctMana() < 8 and mq.TLO.Me.SpellReady(GatherManaSpell)()) then
            mq.cmdf('/cast "%s"', GatherManaSpell)
            mq.delay(20000, function() return mq.TLO.Me.Casting.ID() == nil end)
        elseif (mq.TLO.Me.CurrentMana() < mq.TLO.Spell(MonsterSummoningSpell).Mana()) then
            -- Sitting
            if (mq.TLO.Me.Standing() and not mq.TLO.Me.Casting.ID()) then
                mq.TLO.Me.Sit()
            end

            mq.delay(6050)
        else
            if (mq.TLO.Me.Sitting()) then
                mq.TLO.Me.Stand()
            end

            mq.delay(1000)

            Note.Debug('Request load spell "%s" to gem %s', MonsterSummoningSpell, MiscSpellGem)
            local actualSpellGem = LoadSpellGem(MonsterSummoningSpell, MiscSpellGem)

            if (not actualSpellGem) then
                Note.Info('Requested spell load failed...exting')

                return
            end
           
            mq.delay(500)

            if (mq.TLO.Me.SpellReady(MonsterSummoningSpell)()) then
                mq.cmdf('/cast %s', actualSpellGem)
            end
           
            mq.delay(7000, function() return not mq.TLO.Me.Casting.ID() end)
            mq.delay(500)
            if (mq.TLO.Me.Pet.ID() > 0) then
                mq.cmdf('/useitem %s', ReclaimItem)
            end

            mq.delay(500)
        end
        mq.delay(50)
    end
   
    mq.delay(1000)
    Note.Info('Mana Loop Ended')
    local counter = 0
    while (mq.TLO.Me.Pet.ID() > 0 and counter < RetryCount) do
        mq.cmdf('/useitem %s', ReclaimItem)
        mq.delay(500)
        counter = counter + 1
    end
end

local function Main()
    if (mq.TLO.Me.Class.ShortName() ~= 'MAG') then
        Note.Info('MonsterMana only works for Mage characters')

        return false
    end

    if (mq.TLO.Me.PctMana() > 95) then
        Note.Info('Mana is nearly full; nothing to do')

        return false
    end

    -- Sets up the operational domain including which version of monster to summon, basic mana recovery spell to use (if low on mana), and reclaim item to use from inventory
    if (not Init()) then
        Note.Info('Macro initialization unsuccessful')

        return false
    end

    mq.cmd('/squelch /docommand /boxr pause')
    mq.delay(300)
    mq.cmd('/squelch /attack off')
    -- added auto inventory
    local counter = 0
    while (mq.TLO.Cursor.ID() and counter < RetryCount) do
        mq.cmd('/autoinventory')
        mq.delay(500)
        mq.cmd('/autoinventory')
        counter = counter + 1
    end

    mq.delay(500)

    -- Section for if you already have a main pet summoned.
    if (mq.TLO.Me.Pet.ID() and mq.TLO.Me.Pet.ID() > 0) then
        Note.Info('Primary mana method started (with pet)!')

        -- Stores main pet using Suspend Companion to keep items/buffs on pet.
        Note.Info('Storing Pet')
        local counter = 0
        while (mq.TLO.Me.Pet.ID() > 0 and counter < RetryCount) do
            mq.cmd('/pet hold')
            mq.delay(300)
            mq.cmd('/pet back off')
            mq.delay(300)
            mq.cmd('/alt act 1215') --summon companion
            mq.delay(500)
            if (mq.TLO.Me.Pet.ID()> 0) then mq.cmd('/alt act 176') end -- suspend pet
            mq.delay(500)
            mq.delay(8000, function() return not mq.TLO.Me.Casting.ID() end)
            counter = counter + 1
        end

        ReclaimMana()

        -- Returns main pet from Suspend Companion
        Note.Info('Restoring Main Pet')
        local counter = 0
        while (mq.TLO.Me.Pet.ID() == 0 and counter < RetryCount) do
            Note.Info('resummon pet')
            mq.delay(300)
            mq.cmd('/alt act 176')
            mq.delay(300)
            mq.delay(6000, function() return not mq.TLO.Me.Casting.ID() end)
            mq.delay(300)
            counter = counter + 1
        end
    -- Secondary method for if you reciently died, have 0 mana and no main pet.
    else
        Note.Info('Primary mana method started (no pet)!')
        mq.delay(300)

        while (mq.TLO.Me.PctMana() < 8) do
            if (mq.TLO.Me.SpellReady(mq.TLO.Spell(GatherManaSpell).RankName())) then
                mq.cmdf('/cast "%s"', mq.TLO.Spell(GatherManaSpell).RankName())
                mq.delay(20000, function() return not mq.TLO.Me.Casting.ID() end)
            elseif (workingStates[mq.TLO.Me.CombatState()]) then
                -- Sitting
                if (mq.TLO.Me.Standing() and not mq.TLO.Me.Casting.ID()) then
                    mq.TLO.Me.Sit()
                end

                mq.delay(6050)
            end
            mq.delay(200)
        end

        ReclaimMana()
    end

    mq.delay(300)
    mq.cmd('/pet hold')
    mq.delay(300)
    mq.cmd('/squelch /docommand /boxr unpause')
    mq.delay(300)
    Note.Info('Mana Macro Ending')
    Note.Info('Mage Mana now: \ag%s', mq.TLO.Me.PctMana())
    mq.cmd('/squelch /beepontells on')
end

Main()

Also here is a LEM to trigger it:

cmV0dXJuIHsKIFsibmFtZSJdID0gIk1hZ2VNYW5hQnJ1dGVmb3JjZSIsCiBbImxvYWQiXSA9IHsKICBbInpvbmUiXSA9ICIiLAogIFsiY2xhc3MiXSA9ICIiLAogIFsiYWx3YXlzIl0gPSBmYWxzZSwKIH0sCiBbInR5cGUiXSA9ICJjb25kaXRpb25zIiwKIFsiY29kZSJdID0gImJHOWpZV3dnYlhFZ1BTQnlaWEYxYVhKbEtDZHRjU2NwQ2dvdExTMUFjbVYwZFhKdUlHSnZiMnhsWVc0Z1FGSmxkSFZ5Ym5NZ2RISjFaU0JwWmlCMGFHVWdZV04wYVc5dUlITm9iM1ZzWkNCbWFYSmxMQ0J2ZEdobGNuZHBjMlVnWm1Gc2MyVXVDbXh2WTJGc0lHWjFibU4wYVc5dUlHTnZibVJwZEdsdmJpZ3BDaUFnSUNCc2IyTmhiQ0J0ZVY5amJHRnpjeUE5SUcxeExsUk1UeTVOWlM1RGJHRnpjeTVUYUc5eWRFNWhiV1VvS1FvZ0lDQWdiRzlqWVd3Z2JYbGZiV0Z1WVNBOUlHMXhMbFJNVHk1TlpTNVFZM1JOWVc1aEtDa0tJQ0FnSUd4dlkyRnNJR05vWldOclgzQmhkWE5sWkNBOUlHMXhMbFJNVHk1RFYxUk9MbEJoZFhObFpDZ3BDaUFnSUNCc2IyTmhiQ0J0YlY5emRHRjBkWE1nUFNCdGNTNVVURTh1VEhWaExsTmpjbWx3ZENnblRVMWljblYwWlNjcExsTjBZWFIxY3lncENpQWdJQ0J5WlhSMWNtNGdiWGxmWTJ4aGMzTWdQVDBnSjAxQlJ5Y2dZVzVrSUcxNVgyMWhibUVnUENBeU1DQmhibVFnYlcxZmMzUmhkSFZ6SUg0OUlDZFNWVTVPU1U1SEp5QmhibVFnWTJobFkydGZjR0YxYzJWa0lEMDlJR1poYkhObENtVnVaQW9LYkc5allXd2dablZ1WTNScGIyNGdZV04wYVc5dUtDa0tJQ0FnSUcxeExtTnRaQ2duTDJ4MVlTQnlkVzRnVFUxaWNuVjBaU2NwQ21WdVpBb0tjbVYwZFhKdUlIdGpiMjVrWm5WdVl6MWpiMjVrYVhScGIyNHNJR0ZqZEdsdmJtWjFibU05WVdOMGFXOXVmUT09IiwKIFsiY2F0ZWdvcnkiXSA9ICJncmluZCIsCn0=
 

Attachments

  • Note.lua
    11.3 KB · Views: 0
Then they are underperforming what they are capable of or you are pulling 1 mob and have downtime between mobs. There's no way if those toons are pushing they are staying at 80%+ mana indeffinently.
I can't make the mobs come any faster in the missions. I'm killing as fast as I can. Maybe my ridiculous overcompensating for Mana Regen has something to do with it. I know you'll say it doesn't. But if you took my toons for a spin you would be surprised at how well they retain Mana.
 
I can't make the mobs come any faster in the missions. I'm killing as fast as I can. Maybe my ridiculous overcompensating for Mana Regen has something to do with it. I know you'll say it doesn't. But if you took my toons for a spin you would be surprised at how well they retain Mana.
Are you talking going through one mission and then dropping and medding or are you talking grind?
 
I can't make the mobs come any faster in the missions. I'm killing as fast as I can. Maybe my ridiculous overcompensating for Mana Regen has something to do with it. I know you'll say it doesn't. But if you took my toons for a spin you would be surprised at how well they retain Mana.
@RobRenfro my mages ftp or normal are usually tapped for mana no matter what…you need to nuke, pet swarm, and of many spell line constantly. You also need to learn to pull swarms (3+) mobs per pull so theres always something waiting to be hit and to fully utilize your enc or bard fully and to reduce downtime.

Rgmerc chain pull with ranger ranged is amazing if your tank plugin isn’t handling swarm pulls well. Give it a go you’ll see…this routine/Lua is amazing at reducing downtime and increasing dps output
 
I have 3 rezzers because I pull hard Louis Roberts hard. I'll sink your battleship then I'm going after the kayaker and your uncle's fishing canoe pulling. So I have 3 toons to save my bacon if I slide off the razor's edge.
 
Macro - Endless Mana for MQ2Mage

Users who are viewing this thread

Back
Top