Skip to content

DRShmbot

dRShmbot

Author: DeathlyRanja Alias: dR~ Date: 12/05/2006

Credit where its due:

Basis of this script is Version: v0.5c by Hubba
Shambot Version 1.0c by Ranma
Version 2.0c by thread_001
Version 3.0+ to 3.3 by IonCache
Version 3.4+ to Current, By DeathlyRanja

dRShmbot is a fairly complex Shaman macro. It is not finish or in any way finalized, so many more updates will come.

This macro offers:
Intelligent Healing Code
Spell Gem Optimization
Dynamic Mana Preservation
Mob Debuffing(Malo/Slow/Cripple/Root/Nuke/Dot)
Self/Group Buffing(Panther/Avatar/Buffs)
TSS Regen Support
User Settings for almost all variables to customize
Pet Routines

Request Space

This area is reserved for user requests. Feel free to hit the edit button to your right and add to this. I will add as I can.

Requesting links for the below listed .inc - Could not find them with searches on MQ2 forums or wiki.

To Do List

To Do List:
Fix 'Spell Worn Off' for dots,buffs,debuffs,etc.
Add Command Queuing
Add Flee Routine
Fix Buff Stacking Issues and checks upon casting
Fix Healing Interrupts -- currently removed
Clean up code
Add GoM GoRM events and cast preferences during those events

Correct targetting issues with detrimental and beneficial spells.
Add a new targetting array
Add INI support

Future to do List

Specific Buffing Instructions Rework the targeting Sub Routine Add more targets to the targetting array and allow for user specified amount of targets to track

How To Use

To use this macro, you must have these files in your macros directory: DRShmbot.mac dREvents.inc dRSubs.inc

To start the macro, type: /mac DRShmbot.mac __

Tank Name and Master Name are optional. They are NOT required but must be set in the INI for the bot to function correctly if not provided.

The macro will create an INI file for you to customize called, dR_ToonsName.ini, in your macro directory. (Ex. dR_Bobshaman.ini)

After the INI file is created, it will end the macro and you MUST edit the new INI file. Then you can restart the macro(You will not need to edit it after it has been set once unless you need to change a setting.

This macro DOES NOT REQUIRE ANY PLUGIN but it will use MQ2EQBC if you want it to. However, there is no support for it on this macro at this time.

Commands and Aliases

None at this time.

Dynamic Mana

More to be posted later.

Spell Gem Optimization

Add to your macro before main loop:

/declare numGem int outer
/declare OWgem int outer
/call GemOpt

Subs for use within macro

/call GemMem ${SpellGem} ${SpellName} ${SpellGemState} ${MOWState}

ex. /call GemMem ${NukeGem} ${Nuke} ${NukeStatus} TRUE
/call GemMem 4 "Ice Spear of Solist" TRUE FALSE
/call GemMem 0 "Complete Healing" FALSE ${CHAlwaysOW}
/call GemMem 9 "Ancient: Hallowed Light" ${KeepAH} ${AHOverWrite}

  • SpellNameHere must be a string, SpellGemHere must be a integer, SpellGemState must be TRUE/FALSE
  • FALSE means that the spell will stay until a spell is memmed over top of it within the macro by the user or

    manually deleted.

  • TRUE flags the gem as switchable. Spells will be memmed to the least used switchable slot

  • SpellGemHere
  • when it equals 0, means that the sub will memorize into the first switchable gem it finds that is available.
  • If no gems are available, it finds the switchable gem that has not been cast in the longest time
  • Each timer for each switchable gem is set to a default of five minutes. Lowest timer will be overwritten, or

    first in list if multiple timers are at 0 * MOWState is just a TRUE/FALSE constant that tells the sub to overwrite it if no gems can be switched and you don't

want to use the OWgem

IF you want the timer function to work correctly, you must add this line directly after casts in your macro

/if (${Macro.Return.Equal[CAST_SUCCESS]}) /call GemTimer ${Me.Gem[<${SpellThatWasCast}>]}

/call GemEdit ${SpellName - OR - SpellGem}

ex. /if (${SpGem[1,2]}) /call GemEdit 1
/call GemEdit "Complete Healing"
/call GemEdit ${QuickHeal}
/if (${Nuke.Equal[${SpGem[${NukeGem},1]}]}) /call GemEdit ${NukeGem}

  • This sub is used to switch states of memorized spells or spell gems. IF the spell name isnt found, no change will

occur. This state will be changed next time a gem will be memorized, therefore no need to mindlessly call GemFind

dRShmbot Ini Settings

Sample Ini

[DRShmBot]
UseMq2EQBC=FALSE(TRUE if you want macro to use MQ2EQ Box Chat Plugin) -- You must also have the EQBCS server running.

[General]
UseMount=FALSE(TRUE if you want to use a mount)
MountItem=NULL(Set this to the name of the item you wish to use. Ex. MountItem=Small Black Drum)
MSRL=##(Set this value to the percent of Mana that bot will sit at when not in combat, TSS regen is active and mana is below the
set value)
HSRL=##(Set this value to the percent of HP that bot will sit at when not in combat, TSS regen is active and HP is below the set
value)
UseCanniAA=TRUE(Set to False if you do not wish to use canni AA, or do not have it yet.)
Verbose=FALSE(Set to TRUE if you want the bot to announce heals/debuffs/etc into group/channel.)
DoLoot=FALSE(Set to TRUE if you want the bot to loot for you)
AutoFollowDist=##(Set this value to distance that bot will stay within when following its AutoFollow Target)

[DynMana]
DynManaTimer=50(This value is the time in deciseconds between mana checks before making changes to HP Stops/Starts)Default is
50dS or 5 Seconds
PercentCarry=60(This value is the percentage of carry-over from 1 Mana Tier to another. Do not alter this unless you understand
what you are doing. Read Dynamic Mana section if you want to further understand this function.)
DetriHPIncrease=20(Set this to the percentage that you want detrimental HP Increases to increase by. Ex. SPantherHP=70 but
increases by 20% on each tier.)
DetriHPDecrease=15(Same as above)
BeneHPIncrease=15(etc)
BeneHPDecrease=10(etc)

[PrimarySpells]
SwapGem=9(Set this to the gem number that you want to use for swapping spells. This may be removed in the near future with
the implementation of GemOpt.inc)
HP2MP=Ancestral Bargain Rk. II(Set this to the Canni spell you want to use. Quotes are not needed.)
HP2MPGem=1(Set this to the spell gem you want Canni to use.)
Slow=Balance of Discord(refer above)
SlowGem=2(refer above)
Malo=Malosinise(refer above)
MaloGem=3(refer above)
DoTOne=Juju(refer above)
DoTOneGem=4(refer above)
Nuke=Sting of the Queen(refer above)
NukeGem=5(refer above)
QuickHeal=Ahnkaul's Mending(refer above)
QuickHealGem=6(refer above)
HealOverTime=Halcyon Breeze(refer above)
HoTGem=7(refer above)
DoTTwo=Ahnkaul's Spear of Venom(refer above)
DoTTwoGem=8(refer above)
HP2MPState=FALSE(NEW VARS) -- FALSE means that the spell will not be switched out when another spell is called for memorization. TRUE means that if
the another spell is called for memorization, and there isnt a free gem available, the new spell will be memmed over
top of this one.
SlowState=FALSE
MaloState=TRUE
DoTState=TRUE
NukeState=TRUE
QuickHealState=FALSE
HoTState=FALSE
DoTTwoState=TRUE

SecondarySpells
Pet=Kyrah's Faithful
Cripple=Crippling Spasm
Root=Greater Immobilize
Panther=Spirit of the Leopard
GroupPanther=Talisman of the Panther Rk. II
Avatar=Ferine Avatar
GroupAvatar=Champion
Haste=Swift like the Wind
GroupHaste=Talisman of Celerity
Focus=Dire Focusing
GroupFocus=Talisman of the Dire
Charisma=Unfailing Reverance
Dexterity=Mortal Deftness
GroupDex=Talisman of the Raptor
Strength=Preternatural Foresight
GroupSTR=Talisman of Foresight
Agility=Preternatural Foresight
GroupAGI=Talisman of Foresight
Stamina=Spirit of Fortitude
GroupSTA=Talisman of Fortitude
Regen=Spirit of the Stoic One
GroupRegen=Talisman of the Stoic One
Primal=Primal Essence
PrDrResist=Protection of Wishka Rk. II
ArmorClass=Ancestral Bulwark
Movement=Spirit of Bih'li
Levitate=Levitation
Invis=Spirit Veil
Shrink=Shrink
GroupShrink=Tiny Terror
Grow=Grow
SeeInvis=Acumen
Gate=Gate
Food=Summon Food
Drink=Summon Drink

[CombatVars]
AssistRange=100(Set this to the distance MA must within for bot to assist for target)
StartCombatHP=98(Set this to the distance target npc must be within to start combat subs)
StartDoTHP=0(Set this to the value that mob HP must be under to start function)
EndDoTMP=100(Set this to the value that bot mp must be above in order to do this function)
StartRootHP=0(Set this to the value that mob HP must be under to start function)
EndRootMP=100(Set this to the value that bot mp must be above in order to do this function)
StartNukeHP=90(Set this to the value that mob HP must be under to start function)
EndNukeMP=50(Set this to the value that bot mp must be above in order to do this function)
EndPantherHP=100(Set this to the value that target hp must be above in order to do this function)
StartSitMP=0(Set this to the percent of MP bot must be below to sit)
EndBuffMP=100(Set this to the percent of MP bot must be above to buff)
StopCanniHP=3500(Set this to the amount of HP bot must be above to canni)
AssistDelay=3(Set this value to the delay in deciseconds before bot will assist main assist to get a target)
TimetoRecast=5s(Set this to a value in seconds that bot will continue to try to recast a spell)

Healing
UseQuickHeals=TRUE
UseHealOverTime=TRUE
UseGroupHoT=FALSE
DoHealTank=TRUE
DoHealGroup=TRUE
DoHealPets=FALSE
HealPriority=2(Healing modes -- 0 = Default, heal normally /\/\ 1 = Tank Priority, heal tank before all others /\/\
2 = Tank and Shaman Priority, heal self and tank before all others)
StartGroupHoTHP=0(Group HoT -- integer is the average hp level of the group)
CasterHealHP=50(start heal on class type when hp is below value)
CasterHoTHP=60
MeleeHealHP=40
MeleeHoTHP=60
TankHealHP=50
TankHoTHP=70
PetHealHP=30
PetHoTHP=50
SelfHealHP=50
SelfHoTHP=60

[Debuff]
UseMalo=TRUE
UseSlow=TRUE
UseCripple=FALSE
SlowOnlyOnce=FALSE(bot will only attempt to slow one time if TRUE)
MaxSlowAttempts=3
UseRoot=FALSE
UseDots=FALSE
UseNukes=TRUE

[Buffing]
UseBuffs=FALSE
UseRebuffs=TRUE
UsePanther=FALSE
UseGroupPanther=FALSE
PantherGroup=FALSE
PantherPets=FALSE
UseAvatar=TRUE
UseGroupAvatar=FALSE

[Pet-Familiar]
UsePet=TRUE
BuffMyPet=FALSE
BuffOtherPets=FALSE