• 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 --->
Schnook.mac - out of grp shm buffer simpleton

Utility Schnook.mac - out of grp shm buffer simpleton 1.0

Download now:  Join us with Level 2 access or earn your way in with  RedCents.
Software Requirements
Server Type
🏢 Live 🏘️ Emu TLP Test
Yeah I know there are a ton of buff bots out there, but many are old/outdated and this is extremely

Not tested since adding the comments - hope it still works... Written in a UTF-8 editor so spacing
and line-wraps could be fluxx0r'd by this forum.

Use at your own risk: If you are a mac n00b, I'd suggest passing - this was not written to be used
out-of-the-box. I am merely sharing something I wrote and use. Its a cut & paste job so can't ensure

Everything else that needs to be said is in the code notes:

Rich (BB code):
| Down and dirty buff simpleton - 2016 Incognito - I name it: Schnook.mac
| It aint pretty, it aint smart, but it will buff your out-of-group toons (/tgb).
| I wrote this cause I dint want my SHM leaching XP from inside the grp and
| the grp performs much better with his buffs (namely Shm Maw, Haste, etc).
| The Maw line, even with AA's extending it, lasts just under 2 minutes. But
| it procs like a beast for everyone and I've never seen it resisted. It increases
| grp output 30 to 50% (along with haste). I use this for out-of-grp PLing.
| This can be adapted for any buff lineup. I separated the Maw proc since it's
| such a short lasting buff and I wanted it always on, always first. You can remove the
| ShortBuff routine if you don't have a need for something like that.
| The LongBuff3 is like a 10 second (8? seconds w/AA's) cast so it issues a /bct pullername
| //backoff cmd. THIS MEANS you need eqbc logged in both toons or comment out that
| code. One day I might add a flag or a check but as I am always logged in eqbc it works for me.
| You can comment out the LongBuff3 routine if you don't have something that long. It works
| well, worst case is that there are some 8 seconds of puller dps loss but that is way
| better than the normal 'puller out of range' for buffs scenario. My monk puller very rarely
| gets ANY of the buffs when the SHM is in grp running KA since it is always out of camp
| pulling. I normally see the puller get the LongBuff3 between freshly returning to camp
| and the mob just entering camp, so it works well for me.
| Set DebugFlag to 1 to turn on MQ2Win notifications. If your buff spell is multi-word
| surround the name with quotes like I did. It is recommended to send MQ2Cast's /casting
| cmd the gemnumber along with the spell name. Make sure they are correct or go thru the
| code and omit them else MQ2Cast will be trying to mem spells during critical cast times.
| I have not tested MQ2Casts ability to do so. Docos say it will default to Gem5.
| MQ2Cast will throw up aborting msgs ocassionally. That's fine, it is self-correcting
| and the code will always catch up next cycle. Its largely due to puller running out of
| range during the cast.

| Use this as an example/template for your out-of-grp buffing needs. An alternative
| would be to use KA, and a raid feature with one of the extended target settings, but
| I have never done that...
Sub Main

    /declare TarName     string     outer     PullerName
    /declare DebugFlag     int      outer     1
    /declare ShortBuff     string     outer     "Talisman of the Lynx"
    /declare LongBuff1    string     outer    Champion
    /declare LongBuff2    string     outer    "Talisman of the Stalwart"
    /declare LongBuff3    string     outer    "Talisman of Unity"
    |/declare 3Dual     int     outer    1
    /declare 3DualName     string    outer    "Mammoth's Strength"
    /declare LongBuff4    string     outer    "Talisman of Celerity"
    /declare LongBuff5    string     outer    "Spirit of Bih`Li"
    /declare LongHeal    string     outer    "Halcyon Whisper"
    /declare Iteration    int        outer    1
    /declare GemNum        int        outer    0
    /declare WhisperFlag int    outer    0
    |/declare i          int local       1
    |/for i 1 to ${NumBuffs}
    |    /varset LongBuffs[${i}] |do somethign clever
    |/next i

    /while (1 < 2) {
        /if (!${Target.ID} || ${Target.Name.NotEqual[${TarName}]} && ${DebugFlag}) /echo Target Problems
        /if (!${Target.ID} || ${Target.Name.NotEqual[${TarName}]}) /tar ${TarName}
        /if (${Target.Distance} > 50) {
            /varcalc WhisperFlag 0
            /call WaitForPuller
        /if (${Target.ID} && ${Target.Distance} < 50 && !${Target.Buff[${ShortBuff}].ID}) {
            /varcalc GemNum 5
            /call DoShort ${ShortBuff} ${GemNum}
        /if (${Target.ID} && ${Target.Distance} < 50 && !${Target.Buff[${LongHeal}].ID} && !${WhisperFlag}) {
            /varcalc GemNum 10
            /call DoLong ${LongHeal} ${GemNum}
            |Only do this once per pull
            /varcalc WhisperFlag 1
        /if (${Target.ID} && ${Target.Distance} < 50 && !${Target.Buff[${LongBuff1}].ID} && ${Iteration} < 2) {
            /varcalc GemNum 2
            /call DoLong ${LongBuff1} ${GemNum}
            /varcalc Iteration ${Iteration} + 1
        /if (${Target.ID} && ${Target.Distance} < 50 && !${Target.Buff[${LongBuff2}].ID} && ${Iteration} < 2) {
            /varcalc GemNum 6
            /call DoLong ${LongBuff2} ${GemNum}
            /varcalc Iteration ${Iteration} + 1
        /if (${Target.ID} && ${Target.Distance} < 50 && !${Target.Buff[${3DualName}].ID} && ${Iteration} < 2) {
            /bct ${TarName} //backoff
            /delay 10
            /varcalc GemNum 8
            /call DoLong ${LongBuff3} ${GemNum}
            /varcalc Iteration ${Iteration} + 1
            /bct ${TarName} //backoff
        /if (${Target.ID} && ${Target.Distance} < 50 && !${Target.Buff[${LongBuff4}].ID} && ${Iteration} < 2) {
            /varcalc GemNum 9
            /call DoLong ${LongBuff4} ${GemNum}
            /varcalc Iteration ${Iteration} + 1
        /if (${Target.ID} && ${Target.Distance} < 50 && !${Target.Buff[${LongBuff5}].ID} && ${Iteration} < 2) {
            /varcalc GemNum 11
            /call DoLong ${LongBuff5} ${GemNum}
            |/varcalc Iteration ${Iteration} + 1
        /delay 50
        /varcalc GemNum 0
        /varcalc Iteration 1

Sub WaitForPuller
    /if (${DebugFlag}) /echo Entering WaitForPuller
    /while (${Target.Distance} > 50) {
        /delay 40
    |Puller now in camp - return for buffage
    /if (${DebugFlag}) /echo Exiting WaitForPuller

Sub DoShort(string ShortBuffName, int ShortGem)
    /if (${DebugFlag}) /echo Short Buffing ${ShortBuffName} Gem: ${ShortGem}
    /casting "${ShortBuffName}" ${ShortGem}
    /while (${Cast.Timing}) {
        | I've never seen this fire
        /if (${DebugFlag}) /echo Cast Timing Short
        /delay 5
    /delay 40

Sub DoLong(string BuffSThis, int GemNum)
    /if (${DebugFlag}) /echo Long Buffing ${BuffSThis} Gem: ${GemNum}
    /casting "${BuffSThis}" ${GemNum}
    /while (${Cast.Timing}) {
        | I've never seen this fire
        /if (${DebugFlag}) /echo Cast Timing
        /delay 5
    /delay 80

** MOVED from Level 1 to level 2 **

** Updated: removed comments that caused errors. Added simple heal/regen. Reinstated the WaitForPuller routine.
First release
Last update
0.00 star(s) 0 ratings

Share this resource