Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
Bug Fixes Minor Enhancements
- Fixed logic to resolve problem with some buffs not listed after "list" command.
- To shorten "list" message, removed .StacksTarget checking, original code remains but commented out.
- Deprecated the ListAll variable.
- Updated sample .ini to include latest buffs along with extra character classes.
Bug Fixes and Enhancements
- Added log message when no buffs stick.
- Fixed error for listing a buff with zero quantity.
- Reworked buff stick checking.
- Fixed bug when determining trade access (PC/Guild access verification).
- Removed event flushing.
Bug Fixes and Enhancements
- Added enhanced Allow/Deny logic to control who can access your Buff Bot. Deny takes precedence over Allow and the PC List takes precedence over the Guild List. This approach follows a security access methodology conceptually similar to file/folders security in an operating system (i.e., individual access vs group access). Review the Instructions for information about the variables and review the included logic flow diagram on the bottom of the Instructions page to better understand the order of precedence. To control this enhanced functionality, added new variables to the [General] section of the INI which include VerifyPCToggle, VerifyPCList, VerifyGuildToggle, and VerifyGuildList.
- Added a Special Task subroutine so you can create/include your own custom macro code to executed during the wait cycle (i.e., while the Buff Bot is waiting for a command). The contents of the SpecialTask subroutine (i.e., your custom macro code) are stored in the external file BuffBot2SpecialTask.inc and are incorporated into the macro using the #Include command. Added a new variable to each [CLASS] section of the INI called UseSpecialTask which controls the execution of the SpecialTask subroutine within the macro’s normal loop (i.e., you can turn ON/OFF the Special Task subroutine with your custom macro code).
- Fixed a bug that was calling an erroneous subroutine PCTell
Bug Fixes and Enhancements
WARNING: If you want to continue to use your existing INI file, you will need to add the new [General] category variables listed above and change all occurrences of the [CLASS] variables SpellSkip## to SpellQuantity## (which changed from a boolean variable to an integer variable). Read the link to Instructions for a definition of INI variables.
- Added variables CastMaxAttempts, CastGiveUpTime, AutoInventoryMaxAttempts, ListCommandsPerChatLine to [General] section in the INI.
- Variable CastMaxAttempts = number of attempts to cast a spell before giving up.
- Variable CastGiveUpTime = time (seconds) allocated to casting a spell before giving up.
- Variable AutoInventoryMaxAttempts = number of attempts for /autoinventory to clear cursor before terminating the macro.
- Variable ListCommandsPerChatLine = the number of commands per line displayed following the List request.
- Changed name/functionality of all [CLASS] variables from SpellSkip## to SpellQuantity##. You now set the number of casts you want for a particular spell/buff. Handy for casting Mage pet weapons or other items you want to cast multiple times. If you set to zero, the spell will not cast, handy if you want to take a spell out-of-service without deleting the spell entry.
- Improved in-zone checking, ignore buff requests from outside zone. Handy for asshats that request buffs from outside the zone.
- Warn PC if not LOS (line of sight) at time of buff request, terminate buffing if PC not LOS (moves away) after buffing starts. Handy for asshats that request buffs then move out of range.
- Added spell level 120 will-it-stick check for buff target levels 86 and up.
- Updated/Standardized numerous Log messages.
Bug Fixes and Minor Improvements
- Improved Reagent checking.
- Renamed INI [General] variable Reagents to ReagentDataset.
Version 1.5 includes additional features and a cleanup of the Cast subroutine.
- Added ability for a BuffBot to require grouping before casting a certain spell. This is useful for a Necromancer’s summon corpse ability. A new bool variable called SpellMustGroup# was added to the group of variables for each individual spell (buff) class in the INI. You set this variable to TRUE or FALSE.
- Added ability for a BuffBot to target a corpse. This is useful for a Cleric’s resurrection. A new bool variable called SpellTragetCorpse# was added to the group of variables for each individual spell (buff) class in the INI. You set this variable to TRUE or FALSE.
- Added GroupInviteWaitTime int variable to [General] section of the INI. If a spell (buff) is setup to require grouping with the BuffBot before casting and the recipient does not accept a BuffBot’s group invite within # seconds, then the BuffBot sends a message that it is finished waiting.
- Added the ability to message a targeted buff recipient if the recast (cool down) time of a spell is longer than # seconds. This is helpful for long recast spells like a Necromancer’s Summon Remains AA ability. You set the number of seconds in this integer SpellRefreshWarning variable found in the [General] section of the INI.
- Cleaned up logic in Sub Cast.
Version 1.4 includes some minor logic changes and the elimination of having to use Spell ID.
- A slight delay was added to the main loop.
- An /autoinventory routine was added to the main loop to keep items off the Buff Bot's cursor.
- Moved the AcceptedItems variable in the INI from the Class variable group to the General variable group.
- Fixed a bug related to reagent name not being properly communicated.
- Removed mandatory use of SpellID#. In game, there are a few spells that unfortunately use the exact same name but are two completely different spells. For example the Druid port Zephyr: Cobalt Scar to the old zone and Zephyr: Cobalt Scar to the new zone. They both use the same Spell Name BUT the Spell IDs are different. BuffBot2 was originally designed to require all spells to use Spell ID, which can be a hassel to configure. In version 1.4, you are no longer required to use Spell ID. If you set the SpellName# variable to the correct spell name AND you set SpellID# to zero, BuffBot2 will use SpellName# to cast the spell but you must set SpellID# to zero. Also, you don't have to worry about including the Rank of a spell in the name, just use the Spell Name and BuffBot2 will automatically determine the correct spell Rank. In those few instances where two spells have the exact same name, then set SpellID# to the correct Spell ID number and BuffBot2 will override what you set for SpellName# and use the Spell ID you configured.
Version 1.3 includes a number of logic changes, bug fixes and other changes that will impact your current INI file.
The download includes an updated sample INI file, so be careful not to overwrite your current INI until you have incorporated any of your settings into the new INI format. I suggest you unpack this download zip in a folder separate from your current BuffBot2.
If you discover any bugs or have suggestions, please post to the Discussion.
- The main change is the addition of per-spell minimum and maximum target level checking. Two new variables (SpellMinLevel# and SpellMaxLevel#) were added to the INI in the [CLASS] specific section(s). This allows you to set a minimum and/or maximum target level for your buff. So, if you send a generic command like ‘buff’ and assuming you properly configure your INI settings, your buff bot will not waste time / mana casting spells not applicable to your target. If you fail to set SpellMinLevel# and SpellMaxLevel# to a positive integer (don’t be an idiot and set to a negative number), the macro will automatically use built-in generic logic to test what buffs it thinks are out-of-level or will not stack. For reference, a few sample low level spells were added to the Shaman and Druid [CLASS] sections of the INI.
- Renamed [General] section variable BuffZoneNotEqualAction to BuffZoneErrorAction.
- Added INI variables ListChat and ListChatDelay in the [General] section to control response to the ‘list’ command. So, if you do not want list command results displayed as /say, you can change to /tell, but you might need to increase the delay as /tell sometimes works slower than /say (lines can get lost in the server or might be considered spam). Variables PCChat and PCChatDelay were also added to [General] to control PC communications (different from responding to the list command).
- Added variable ListAll to [General]. If you want your buffbot to respond to the list command with all its spells, set this to TRUE. If you only want to list the spells that will land on your target (based on SpellMinLevel# and SpellMaxLevel#), set this to FALSE so your buffbot does not waste time listing irrelevant spells. Be advised, there are conditions where your target might meet the Min/Max test but the listed buff may still not land because it does not stack with your target’s current buffs.
- Since some older spells require reagents, two additional reagents were added to the Reagents variable in the [General] section.
- The macro no longer requires any include files like MQ2Cast2.inc, but it still requires the MQ2Cast plugin.
- Some other new logic was included, some bugs were fixed, and a general rearrangement of the code was made.
Version 1.2 includes includes no changes to the macro, but it does include a more generic [General] section of the sample INI file. So you will need to set the [General] settings to suite your needs.
To prevent confusion or conflicts with other macros, the three files associated with this version of Buff Bot have been renamed to BuffBot2.mac, BuffBot2.ini, and MQ2Cast2.inc. This should prevent conflicts when you unpack/install these files in your macros folder.