• 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

BuffBot2 2.0

Download now:  Join us with Level 2 access or earn your way in with  RedCents.
This macro’s flexibility lies in how you configure the INI, but you can screw up the macro if you do stupid things in the INI. So if you get strange results, do not immediately assume the macro is broken; most likely the problem will correspond to something you configured in the INI (i.e., a conflicting command).

To help you get started, the download includes a sample .INI BuffBot2.ini and a sample .INC BuffBot2SpecialTask.inc file.

The sample .INI has multiple buffs for several classes, but it is not a complete buff database for all buffs/classes. The .INC file is available for those who want to create custom subroutines to run while the macro operates.

Ensure the .INI and .INC files are in your macro folder with BuffBot2.mac

As this is a voluntary work, not a work for hire on my part, there is some stuff you need to do, like taking the time to build your INI the way you want. But you can help other users if you share your INI to this Discussion, which I'm certain would be appreciated.

The .INI is organized into a [General] category and [CLASS] specific subcategories, defined below.

[General]
  • BuffZoneCheck = [TRUE or FALSE] to limit the macro’s operation to a zone listed in BuffZoneShortNames. Default in the sample INI is FALSE.
  • BuffZoneShortNames = use the short name of the zone(s) you want to allow the macro to operate, separating each short-zone-name with a comma.
  • BuffZoneNotEqualAction = If you enable BuffZoneCheck and your bot is not in one of the listed zones, this is the command you want to execute (e.g., /end, /q, /echo, whatever you want).
  • SpellSet = Name of one Spell Set you want to load.
  • VerifyPCToggle = [Allow or Deny] This controls how you want use the VerifyPCList variable, as an Allow list or a Deny list. If you want to understand the order of precedence, review the Access Control Hierarchy flowchart at the bottom of this page.
  • VerifyPCList = This is a list of PCs you want to Allow or Deny. Separate each name with a comma.
  • VerifyGuildToggle = [Allow or Deny] This controls how you want use the VerifyGuildList variable, as an Allow list or a Deny list. If you want to understand the order of precedence, review the Access Control Hierarchy flowchart at the bottom of this page.
  • VerifyGuildList = This is a list of Guilds you want to Allow or Deny. Separate each name with a comma.
  • BuffGuildOnly = [TRUE or FALSE] if you want to limit buffs to members of your guild (i.e., the guild you have the buff bot as a member). The macro is also hard coded not to respond to any AFK responses or to non LOS PCs. Default in the sample INI is FALSE.
  • IgnoredPCs = List of PCs, separated by a comma, that you refuse to buff (or reply to).
  • StartupAnnounceMessage = If you start the macro with the TRUE flag (i.e., /mac buffbot true) this is the announce. message you want to send at macro start. Include the way you want to display the message in the message string (e.g., start with /gu, /say, /ooc, whatever).
  • StartupClearWindows = [TRUE or FALSE] Do you want to clear the MQ2 and EQ windows when the macro starts. Default in the sample INI is FALSE.
  • UseLogging = [TRUE or FALSE] Controls logging, handy when testing or if you want to keep track of dumbasses sending stupid tells. Default in the sample INI is TRUE.
  • ListChat = The command you want to use to respond to the list command. Default in the sample INI is /say
  • ListChatDelay = The delay (in tenths of a second) between chat lines (i.e., listing your spells). Default in the sample INI is 3
  • ListCommandsPerChatLine = the number of commands per line displayed following the list command. Default in the sample INI is 2.
  • PCChat = The command you want to use to communicate directly with the person asking for buffs. Default in the sample INI is /t
  • PCChatDelay = The delay (in tenths of a second) between your lines of tell. Default in the sample INI is 5
  • SpellRefreshWarning = An integer. If the refresh (cool down) time of a spell is greater than the integer defined for this variable, a warning message will be sent to the recipient (buff target) telling them to be patient and that they need to wait # seconds before the buff is cast. A suggested setting is 10. Setting to zero will disable this spell refresh warning capability.
  • GroupInviteWaitTime = An integer set to the number of seconds the BuffBot will wait for the recipient to accept the BuffBot’s group invitation. A suggested setting is 15.
  • CastMaxAttempts= number of attempts to cast a spell before giving up. Default in the sample INI is 3
  • CastGiveUpTime = time (seconds) allocated to casting a spell before giving up. Default in the sample INI is75
  • AutoInventoryMaxAttempts = number of attempts for /autoinventory to clear cursor before terminating the macro. Default in the sample INI is 5.
  • ReagentDataset = A list of common Reagents required by certain buffs. The format is FIRST the Reagent-ID then the Reagent-Name, each must be separated by a comma. See the sample INI.
  • AcceptedItems = a list of items, separated by comma, that you will accept in trade. Use this variable to ensure your buff bot does not turn into a garbage dump.
[CLASS] (replace CLASS with a character class, full name, like Druid, Enchanter, Necromancer, Magician, etc.)
  • UseSpecialTask = [TRUE or FALSE] This flag controls the execution of the SpecialTask subroutine within the macro’s normal loop. The contents of the SpecialTask subroutine is stored in the external file BuffBot2SpecialTask.inc and is “pulled into” the macro using the #Include command.
  • HailResponse = Each bot can have its own hail response. The only hard coded command for this entire macro is list, all the other commands you configure within the INI (i.e., in the SpellInternalKey# variable).
  • SpellTotal = The total number of spells you want to cast. You then need to create the appropriate number of “spell variable sets” for each spell you want to cast. A spell variable set is denoted by a number at the end of the variable name. For example, SpellName1, SpellName2 and so on for each variable in that set. Below is a description of the six variables that make up a spell set.\

  • SpellName# = This is the name of the spell (buff) you want to cast. If you are NOT going to use SpellID# (below) then this must be the exact spell name but DO NOT include the Rank. BuffBot2 will automatically determine the correct Rank for your character.
  • SpellID# = In 99.99% of the time, set this to zero and just use SpellName# (above). You only need to use Spell ID if you are one of the few characters who has two spells with the exact same name for two different spells. Like the druid port Zephyr: Cobalt Scar to the old zone and Zephyr: Cobalt Scar to the new zone. They both have the same spell name BUT the Spell ID is different for each spell (port). If you use this variable, it can contain one of three types of IDs … the Spell ID of a spell, Item ID of an item and the AA ability (do not use the AA’s Spell-ID … use the AA ability number).
  • SpellType# = There are three types [gem# or item or alt] … gem# (# is the gem slot where you want to mem the spell), alt (for an AA ability) or item (for casting an item)
  • SpellInternalKey# = This is the internal list of command(s) or keyword(s) that will trigger the casting of this spell and is where you can create spell casting groups. This variable is not published to the users, that’s why it’s called the "Internal Key". For example, if you set this variable equal to buff,buffs,symbol a PC that sends you a tell with either the command buff, buffs or symbol will trigger the casting of this spell. Look closely at the sample INI for more real-world examples.
  • SpellExternalKey# = This is the external (published) list of command(s) or keyword(s) that will trigger the casting of this spell. When a PC sends a /tell list, wanting to see a list of commands, these are the "published" individual commands that will trigger the casting of this spell (displayed to the PC via /say). The PC never sees the Internal commands contained in the SpellInternalKey# variable. This command should be unique for each spell (i.e., don't use this command again for another spell) and for simplicity, you should only put one command in this list.
  • SpellMinTarget# = The minimum target level to receive the buff. If you fail to set this is to a positive integer (above zero), internal logic is used to estimate if the target level is acceptable. It is recommended you set this to a positive integer and do not leave it as zero.
  • SpellMaxTarget# = The maximum target level to receive the buff. If this is zero, you run the risk of wasting time and mana with your buff bot casting low level spells on high level characters, so it is recommended you set this to the applicable positive integer (above zero).
  • SpellMustGroup# = [TRUE or FALSE] if this spell requires the recipient to group with the BuffBot before casting.
  • SpellTargetCorpse# = [TRUE or FALSE] if this spell requires targeting the recipient’s corpse instead of the recipient.
  • SpellQuantity# = The number of times you want to cast the spell/buff. If you set to zero the spell will not cast, which is an easy way to deactivate without deleting the entire spell entry.
WARNING: If you screw something up in the INI, like creating conflicting commands, the problem/conflict will most likely be in the SpellInternalKey# and/or SpellExternalKey# variables. So it is important to understand these two variables, the relationship they have with each other and the macro as a whole.

Access Control Hierarchy
Setting the variables VerifyPCToggle, VerifyPCList, VerifyGuildToggle, and VerifyGuildList

BuffBot2-Verification-Flow.gif
Back
Top