Code: Select all
|botcore.inc
|Bot core module.
|Version 12.10
|Date:04/28/2004 9:00 pm
|
||**
[botcore]
version=12.10
**||
|
#chat group
#chat tell
#chat chat
#Event CorpseTooFar "You are too far away to loot that corpse."
#event FollowOff "You are no longer auto-following"
#Event Zoned "LOADING, PLEASE WAIT..."
#Event Appear "You appear."
#Event Appearing "You feel yourself starting to appear."
#Event LosingLev "You feel as if you are about to fall"
#Event SelfEcho "[MQ2] "
Sub CoreCommands
/declare botcorearray[2,52] string outer UNDEFINED-ARRAY-ELEMENT
|For each command
|1,x Command Phrase to trigger bot - End User change change to suit prefferences
|2,x Sub Routine to execute in response to command
/varset botcorearray[1,1] accept
/varset botcorearray[2,1] Do-accept
/varset botcorearray[1,2] reject
/varset botcorearray[2,2] Do-reject
/varset botcorearray[1,3] invite
/varset botcorearray[2,3] Do-invite
/varset botcorearray[1,4] follow
/varset botcorearray[2,4] Do-follow
/varset botcorearray[1,5] stop
/varset botcorearray[2,5] Do-stop
/varset botcorearray[1,6] moveto
/varset botcorearray[2,6] Do-moveto
/varset botcorearray[1,7] sit
/varset botcorearray[2,7] Do-sit
/varset botcorearray[1,8] stand
/varset botcorearray[2,8] Do-stand
/varset botcorearray[1,9] camp
/varset botcorearray[2,9] Do-camp
/varset botcorearray[1,10] duck
/varset botcorearray[2,10] Do-duck
/varset botcorearray[1,11] norelay
/varset botcorearray[2,11] Do-norelay
/varset botcorearray[1,12] say
/varset botcorearray[2,12] Do-say
/varset botcorearray[1,13] tell
/varset botcorearray[2,13] Do-tell
/varset botcorearray[1,14] group
/varset botcorearray[2,14] Do-group
/varset botcorearray[1,15] cmds
/varset botcorearray[2,15] Do-cmds
/varset botcorearray[1,16] target
/varset botcorearray[2,16] Do-target
/varset botcorearray[1,17] notarget
/varset botcorearray[2,17] Do-notarget
/varset botcorearray[1,18] assist
/varset botcorearray[2,18] Do-assist
/varset botcorearray[1,19] saytarget
/varset botcorearray[2,19] Do-saytarget
/varset botcorearray[1,20] itemcast
/varset botcorearray[2,20] Do-itemcast
/varset botcorearray[1,21] lootup
/varset botcorearray[2,21] Do-lootup
/varset botcorearray[1,22] anchor
/varset botcorearray[2,22] Do-anchor
/varset botcorearray[1,23] trade
/varset botcorearray[2,23] Do-trade
/varset botcorearray[1,24] yesres
/varset botcorearray[2,24] Do-yes
/varset botcorearray[1,25] consent
/varset botcorearray[2,25] Do-consent
/varset botcorearray[1,26] reportbuffs
/varset botcorearray[2,26] Do-reportbuffs
/varset botcorearray[1,27] petattack
/varset botcorearray[2,27] Do-petattack
/varset botcorearray[1,28] petguard
/varset botcorearray[2,28] Do-petguard
/varset botcorearray[1,29] petback
/varset botcorearray[2,29] Do-petback
/varset botcorearray[1,30] relay
/varset botcorearray[2,30] Do-relay
/varset botcorearray[1,31] run
/varset botcorearray[2,31] Do-run
/varset botcorearray[1,32] door
/varset botcorearray[2,32] Do-door
/varset botcorearray[1,33] verbosity
/varset botcorearray[2,33] Do-verbosity
/varset botcorearray[1,34] chatin
/varset botcorearray[2,34] Do-chatin
/varset botcorearray[1,35] lootall
/varset botcorearray[2,35] Do-lootall
/varset botcorearray[1,36] face
/varset botcorearray[2,36] Do-face
/varset botcorearray[1,37] autoinv
/varset botcorearray[2,37] Do-autoinv
/varset botcorearray[1,38] anchorradius
/varset botcorearray[2,38] Do-anchorradius
/varset botcorearray[1,39] rmod
/varset botcorearray[2,39] Do-rmod
/varset botcorearray[1,40] rset
/varset botcorearray[2,40] Do-rset
/varset botcorearray[1,41] stay
/varset botcorearray[2,41] Do-stay
/varset botcorearray[1,42] pause
/varset botcorearray[2,42] Do-pause
/varset botcorearray[1,43] reload
/varset botcorearray[2,43] Do-reload
/varset botcorearray[1,44] mount
/varset botcorearray[2,44] Do-mount
/varset botcorearray[1,45] dismount
/varset botcorearray[2,45] Do-dismount
/varset botcorearray[1,46] random
/varset botcorearray[2,46] Do-random
/varset botcorearray[1,47] exp
/varset botcorearray[2,47] Do-exp
/varset botcorearray[1,48] Setvar
/varset botcorearray[2,48] Do-Setvar
/varset botcorearray[1,49] Rptvar
/varset botcorearray[2,49] Do-Rptvar
/varset botcorearray[1,50] afk
/varset botcorearray[2,50] Do-afk
/varset botcorearray[1,51] FollowMode
/varset botcorearray[2,51] Do-FollowMode
/varset botcorearray[1,52] MoveToMode
/varset botcorearray[2,52] Do-MoveToMode
/return
Sub TellCmds-core
/declare counter int local 0
/declare cmds local
/for counter 0 to ${botcorearray.Size[2]}
/varset cmds ${cmds}${botcorearray[1,${counter}]}},
/next counter
/call ChatOut 2 ${MasterName} "${cmds}"
/return
Sub SetupCoreVars
/declare AnchorX int outer 0
/declare AnchorY int outer 0
/declare IsAnchored bool outer FALSE
/declare LootTooFar int outer 0
/declare MasterName string outer ${MasterList.Arg[1,|]}
| /declare MyLastXLoc int outer 0
| /declare MyLastYLoc int outer 0
/declare ObstacleCheck int outer 0
/declare RangeMin int outer 10
/declare RangeMax int outer 12
/declare FastRange int outer 14
/declare FastMin int outer 6
/declare FollowTarget string outer
/declare Afollow int outer 0
/declare FollowMode int outer 1
/declare MoveToMode int outer 1
/declare CheckName bool outer FALSE
/declare Relaytells bool outer TRUE
/declare BreakOut bool outer FALSE
/declare Combatstatus bool outer FALSE
/declare ListenGroup bool outer FALSE
/declare ListenChat bool outer FALSE
/declare AttackOnAssist bool outer FALSE
/declare BehindOnAssist bool outer FALSE
/declare PetOnAssist bool outer FALSE
/declare Verbosity int outer 9
/declare ChatIn string outer Tell
/declare ChatInChannel int outer
/declare IgnGroupList string outer
/declare ListenChan string outer
/declare AnchorRadius int outer 10
/declare Supportstatus bool outer
/declare CurrCommand string outer
/declare CommandParam string outer
/declare advpath bool outer
/declare MountItem string outer
|Timers
/declare SitTimer timer
/varset RangeMin ${Ini[${IniFile},Core,RangeMin,99999]}
/if (${RangeMin}==99999) {
/ini ${IniFile} Core RangeMin 10
/varset RangeMin 10
}
/varset RangeMax ${Ini[${IniFile},Core,RangeMax,99999]}
/if (${RangeMax}==99999) {
/ini ${IniFile} Core RangeMax 12
/varset RangeMax 12
}
/varset FastRange ${Ini[${IniFile},Core,FastRange,99999]}
/if (${FastRange}==99999) {
/ini ${IniFile} Core FastRange 14
/varset FastRange 14
}
/varset FastMin ${Ini[${IniFile},Core,FastMin,99999]}
/if (${FastMin}==99999) {
/ini ${IniFile} Core FastMin 6
/varset FastMin 6
}
/varset Relaytells ${Ini[${IniFile},Core,Relaytells,1]}
/if (${Relaytells}==1) {
/ini ${IniFile} Core Relaytells 1
/varset Relaytells 1
}
/varset ListenGroup ${Ini[${IniFile},Core,ListenGroup,1]}
/if (${ListenGroup}==1) {
/ini ${IniFile} Core ListenGroup 1
/varset ListenGroup 1
}
/varset ListenChat ${Ini[${IniFile},Core,ListenChat,0]}
/if (${ListenChat}==0) {
/ini ${IniFile} Core ListenChat 0
/varset ListenChat 0
}
/varset ListenChan ${Ini[${IniFile},Core,ListenChan,NotFound]}
/if (${ListenChan.Equal[NotFound]}) {
/ini ${IniFile} Core ListenChan "Listen channel"
/varset ListenChan "Listen channel"
}
/varset AttackOnAssist ${Ini[${IniFile},Core,AttackOnAssist,0]}
/if (${AttackOnAssist}==0) {
/ini ${IniFile} Core AttackOnAssist 0
/varset AttackOnAssist 0
}
/varset BehindOnAssist ${Ini[${IniFile},Core,BehindOnAssist,0]}
/if (${BehindOnAssist}==0) {
/ini ${IniFile} Core BehindOnAssist 0
/varset BehindOnAssist 0
}
/varset PetOnAssist ${Ini[${IniFile},Core,PetOnAssist,0]}
/if (${PetOnAssist}==0) {
/ini ${IniFile} Core PetOnAssist 0
/varset PetOnAssist 0
}
/varset Verbosity ${Ini[${IniFile},Core,Verbosity,99999]}
/if (${Verbosity}==99999) {
/ini ${IniFile} Core Verbosity 9
/varset Verbosity 9
}
/varset ChatIn ${Ini[${IniFile},Core,ChatIn,NotFound]}
/if (${ChatIn.Equal[NotFound]}) {
/ini ${IniFile} Core ChatIn Tell
/varset ChatIn Tell
}
/varset ChatInChannel ${Ini[${IniFile},Core,ChatInChannel,0]}
/if (!${ChatInChannel}) {
/ini ${IniFile} Core ChatInChannel 0
/varset ChatInChannel 0
}
/varset MountItem ${Ini[${IniFile},Core,MountItem,NotFound]}
/if (${MountItem.Equal[NotFound]}) {
/ini ${IniFile} Core MountItem "Name of Bridle or Drum"
/varset MountItem "Name of Bridle or Drum"
}
/varset AnchorRadius ${Ini[${IniFile},Core,AnchorRadius,99999]}
/if (${AnchorRadius}==99999) {
/ini ${IniFile} Core AnchorRadius 6
/varset AnchorRadius 6
}
/varset IgnGroupList ${Ini[${IniFile},Core,IgnoreInGroup,NotFound]}
/if (${IgnGroupList.Equal[NotFound]}) {
/ini ${IniFile} Core IgnoreInGroup "duck|say|tell|group|cmds|trade|run|backstab|taunt|evade|slam|bash|kick|flyingkick|disarm|traps|puller||"
/varset IgnGroupList "duck|say|tell|group|cmds|trade|run|backstab|taunt|evade|slam|bash|kick|flyingkick|disarm|traps|puller||"
}
/varset FollowMode ${Ini[${IniFile},Core,FollowMode,1]}
/if (${FollowMode}==1) {
/ini ${IniFile} Core FollowMode 1
/varset FollowMode 1
}
/varset MoveToMode ${Ini[${IniFile},Core,MoveToMode,1]}
/if (${MoveToMode}==1) {
/ini ${IniFile} Core MoveToMode 1
/varset MoveToMode 1
}
/varset CheckName ${Ini[${IniFile},Core,CheckName,0]}
/if (${CheckName}==0) {
/ini ${IniFile} Core CheckName 0
/varset CheckName FLASE
}
/declare advpathv float local
/varset advpathv ${Ini[advpath.inc,advpath,version,99999]}
/if (${advpathv}==99999) {
/echo Advanced pathing NOT available.
/varset advpath 0
} else {
/if (${advpathv}>=1.24) {
/declare FaceFastini int local
/varset FaceFastini ${Ini[${IniFile},advpath,FaceFast,99999]}
/if (${FaceFastini}==99999) {
/ini ${IniFile} advpath FaceFast 1
/varset FaceFastini 1
}
/declare SpeedSenseini int local
/varset SpeedSenseini ${Ini[${IniFile},advpath,SpeedSense,99999]}
/if (${SpeedSenseini}==99999) {
/ini ${IniFile} advpath SpeedSense 15
/varset SpeedSenseini 15
}
/declare FollowDistanceini int local
/varset FollowDistanceini ${Ini[${IniFile},advpath,FollowDistance,99999]}
/if (${FollowDistanceini}==99999) {
/ini ${IniFile} advpath FollowDistance 20
/varset FollowDistanceini 20
}
/declare SilentFlagini int local
/varset SilentFlagini ${Ini[${IniFile},advpath,SilentFlag,99999]}
/if (${SilentFlagini}==99999) {
/ini ${IniFile} advpath SilentFlag 1
/varset SilentFlagini 1
}
/echo Advanced pathing v(${advpathv}) enabled.
/varset advpath TRUE
/call InitAPFVars ${FaceFastini} ${SpeedSenseini} ${FollowDistanceini}
/varset SilentFlag ${SilentFlagini}
} else {
/echo Minimum advpath.inc v(1.24) required - you have v(${advpathv})
/echo Advanced pathing found, but too old. Update it!
/varset advpath FALSE
}
}
/return
Sub CoreMain
/if (!${Combatstatus}) {
/if ((!${Supportstatus})&&(!${IsAnchored})) {
/if (${Afollow}) {
/target ${FollowTarget}
/call Do-moveto ${FollowTarget}
}
/if (${advpath}) /call AdvPathPoll
}
/if (${IsAnchored}) {
/if (${Math.Distance[${AnchorX},${AnchorY}]}>${AnchorRadius}) {
/call MoveToAnchor
} else {
/if ((${SitAfterCast})&&(${Me.Standing})) /sit
}
}
}
/return
Sub Event_Chat (string ChatType,string ChatSender,string ChatText)
/if (!${ChatType.Equal[GROUP]} && !${ChatType.Equal[${ListenChan}]}&& !${ChatType.Equal[TELL]}) {
/return
}
/if (${ChatType.Equal[GROUP]} && !${ListenGroup}) /return
/if (${ChatType.Equal[${ListenChan}]} && !${ListenChat}) /return
/if (${ChatType.Equal[${ListenChan}]} || ${ChatType.Equal[GROUP]}) {
/if (${CheckName} && ${ChatText.Arg[1].NotEqual[${Me.CleanName}]} /return
/if (${CheckName}) {
/declare NameLength int local ${Me.CleanName.Length}
/varcalc NameLength ${NameLength}+1
/varset ChatText ${ChatText.Right[-${NameLength}]}
} else {
/if ${IgnGroupList.Find[${ChatText.Arg[1]}]} /return
}
}
/if (${MasterList.Find[|${ChatSender}|]}) {
/varset MasterName ${ChatSender}
/call ExecCommand "${ChatText}"
}
/if (${Relaytells} && ${ChatType.Equal[TELL]}) /call ChatOut 1 ${MasterName} "${ChatSender} told me: ${ChatText}"
/return
Sub Event_SelfEcho (string EchoText)
/varset MasterName ${Me.ClearName}
/call ExecCommand ${EchoText}
/return
Sub ExecCommand (string CommandText)
/declare CommandLen int local
/declare counter int local
/varset CurrCommand ${CommandText.Arg[1]}
/varcalc CommandLen ${CommandText.Length}+1
/varset CommandParam
/if (${CommandText.Length} > ${CommandLen}) /varset CommandParam ${CommandText.Right[-${CommandLen}]}
/if (${Defined[botcorearray]}) {
/for counter 0 to ${botcorearray.Size[2]}
/if (${CurrCommand.Equal[${botcorearray[1,${counter}]}]}) {
/call ${botcorearray[2,${counter}]} ${CommandParam}
}
next counter
}
/if (${Defined[botcombatarray]}) {
/for counter 0 to ${botcombatarray.Size[2]}
/if (${CurrCommand.Equal[${botcombatarray[1,${counter}]}]}) {
/call ${botcombatarray[2,${counter}]} ${CommandParam}
}
next counter
}
/if (${Defined[botspellarray]}) {
/for counter 0 to ${botspellarray.Size[2]}
/if (${CurrCommand.Equal[${botspellarray[1,${counter}]}]}) {
/call ${botspellarray[2,${counter}]} ${CommandParam}
}
next counter
}
/if (${Defined[botHealarray]}) {
/for counter 0 to ${botHealarray.Size[2]}
/if (${CurrCommand.Equal[${botHealarray[1,${counter}]}]}) {
/call ${botHealarray[2,${counter}]} ${CommandParam}
}
next counter
}
/if (${Defined[botTogglearray]}) {
/for counter 0 to ${botTogglearray.Size[2]}
/if (${CurrCommand.Equal[${botTogglearray[1,${counter}]}]}) {
/call SetToggle ${counter} ${CommandParam}
}
next counter
}
/if (${Defined[shortcutsarray]}) {
/for counter 0 to ${ShortCuts}
/if (${CurrCommand.Equal[${shortcutsarray[1,${counter}]}]}) {
/call ShortCut ${counter} ${CommandParam}
}
next counter
}
/if (${Defined[BotPersonalsarray]}) {
/for counter 0 to ${BotPersonalsarray.Size[2]}
/if (${CurrCommand.Equal[${BotPersonalsarray[1,${counter}]}]}) {
/call ${BotPersonalsarray[2,${counter}]} ${CommandParam}
}
next counter
}
/return
Sub ChatOut(int ChatPriority,string ChatTarget, string ChatText)
/if (${ChatPriority}>${Verbosity}) /return
/if (${ChatTarget.Equal[GROUP]}) {
/g ${ChatText}
/return
}
/if (${ChatIn.Equal[tell]}) {
/tell ${ChatTarget} ${ChatText}
} else /if (${ChatIn.Equal[Group]}) {
/g ${ChatText}
} else /if (${ChatIn.Equal[Raid]}) {
/rs ${ChatText}
} else /if (${ChatIn.Equal[Say]}) {
/say ${ChatText}
} else /if (${ChatIn.Equal[Channel]}) {
/chat #${ChatInChannel} ${ChatText}
} else /if (${ChatIn.Equal[IRC]}) {
/irc ${ChatText}
}
/return
Sub Detectobst
/if ( ${MyLastXLoc}==${Me.X} && ${MyLastYLoc}==${Me.Y} ) /call Hitobst 5
/varset MyLastXLoc ${Me.X}
/varset MyLastYLoc ${Me.Y}
/return
Sub Hitobst (int HoldTime)
/keypress FORWARD
/keypress BACK hold
/if (${Math.Rand[100]}>50) {
/call Delay 2s
/keypress BACK
/keypress RIGHT hold
/call Delay ${HoldTime}
/keypress RIGHT
/keypress FORWARD hold
/call Delay 2s
/keypress FORWARD
} else {
/call Delay 2s
/keypress BACK
/keypress LEFT hold
/call Delay ${HoldTime}
/keypress LEFT
/keypress FORWARD hold
/call Delay 2s
/keypress FORWARD
}
/keypress LEFT
/keypress RIGHT
/return
sub Loot
/declare counter int local
/declare lootslot int local
/if (${Me.Combat}) /return
/if (!${Target.ID}) /target corpse radius 100
/if (${Target.State.NotEqual[DEAD]}) /return
/call Rangesub
/face look
/varset LootTooFar 0
/varset LootSlot 0
/lootn never
/loot
/varset counter 0
:CoreWaitLoot
/call Delay 5
/doevents
/varcalc counter ${counter}+1
/if (${BreakOut}) /goto :donelooting
/if (${counter}>12) /goto :donelooting
/if (!${Corpse.ID}) /goto :CoreWaitLoot
/call ChatOut 5 ${MasterName} "Looting ${Target.CleanName}."
:lootloop
/if (${LootTooFar}) /goto :donelooting
/if (!${Corpse.Items}) /goto :donelooting
/doevents
/itemnotify loot${LootSlot} rightmouseup
/call Delay 1s
/varcalc LootSlot ${LootSlot}+1
/doevents
/if (${Cursor.ID}) /goto :donelooting
/if (${BreakOut}) /goto :donelooting
/goto :lootloop
:donelooting
/lootn always
/notify LootWnd DoneButton leftmouseup
/return
sub LootAll
:LootAllCycle
/if (${Me.Combat}) /return
/if (!${Target.ID}) /target corpse radius 100
/if (!${Target.State.Equal[DEAD]}) /return
/call Loot
/goto :LootAllCycle
/return
|RangeSub
|Used to keep bot in combat range.
|Usage /call Rangesub
|Vars Used: RangeMax, RangeMin, FastRange
|RangeSub
|Used to keep bot in combat range.
|Usage /call Rangesub
|Vars Used: RangeMax, RangeMin, FastRange, FastMin
Sub Rangesub
/if (!${Target.ID}) /return
/if (${Target.CleanName.Equal[${Me.CleanName}]}) /return
/if (${Me.Sitting}) /stand
/face fast
/if (${Target.Distance}>=${FastRange}) /call Fastmove
/if (${Target.Distance}<=${FastMin}) /call FastBack
/if (${Target.Distance}>${RangeMax}) /keypress FORWARD
/if (${Target.Distance}<${RangeMin}) /keypress BACK
/return
Sub Fastback
/varset ObstacleCheck 0
/varset MyLastXLoc ${Me.X}
/varset MyLastYLoc ${Me.Y}
:fastbackloop
/doevents
/if (!${Target.ID}) {
/varset Combatstatus 0
/Keypress FORWARD
/if (${Me.Combat}) /attack off
/return
}
/if (${Me.Sitting}) /stand
/face fast
/if (${Target.Distance}<${FastMin}) /Keypress BACK hold
/if (${Target.Distance}>=${FastMin}) {
/Keypress FORWARD
/return
}
/if (${ObstacleCheck}>=8) {
/if ((${MyLastXLoc}==${Me.X})&&(${MyLastYLoc}==${Me.Y})) {
/if (${Math.Rand[100]}>50) {
/Keypress STRAFE_LEFT hold
/delay 1
/Keypress STRAFE_LEFT
/return
} else {
/Keypress STRAFE_RIGHT hold
/delay 1
/Keypress STRAFE_RIGHT
/return
}
}
/varset MyLastXLoc ${Me.X}
/varset MyLastYLoc ${Me.Y}
}
/varcalc ObstacleCheck ${ObstacleCheck}+1
/goto :fastbackloop
/return
|Fastmove
|Called by Rangesub for when mob is more than /keypress distance away.
|Usage: /call Fastmove
Sub Fastmove
/varset ObstacleCheck 0
/varset MyLastXLoc ${Me.X}
/varset MyLastYLoc ${Me.Y}
:fastmoveloop
/doevents
/if (!${Target.ID}) {
/varset Combatstatus 0
/keypress down
/if (${Me.Combat}) /attack off
/return
}
/if (${Me.Sitting}) /stand
/face fast
/if (${Target.Distance}>${FastRange}) /keypress up hold
/if (${Target.Distance}<=${FastRange}) {
/keypress down
/return
}
/if (${ObstacleCheck}>=30) {
/call Detectobst
/varset ObstacleCheck 0
}
/if (${Target.Distance}>=${Math.Calc[${FastRange}*3]}) /varcalc ObstacleCheck ${ObstacleCheck}+1
/goto :fastmoveloop
/return
Sub MoveToAnchor
/varset MyLastXLoc ${Me.X}
/varset MyLastYLoc ${Me.Y}
/varset ObstacleCheck 0
:AnchorMoveLoop
/if (!${IsAnchored}) {
/keypress BACK
/return
}
/doevents
/if (${Combatstatus}) {
/keypress down
/return
}
/if (${Me.Sitting}) /stand
/face nolook loc ${AnchorX},${AnchorY}
/if (${Math.Distance[${AnchorX},${AnchorY}]}>${AnchorRadius}) /keypress FORWARD hold
/if (${Math.Distance[${AnchorX},${AnchorY}]}<=${AnchorRadius}) {
/keypress FORWARD
/face away nolook loc ${AnchorX},${AnchorY}
/return
}
/if (${ObstacleCheck}>=3) {
/call Detectobst
/varset ObstacleCheck 0
}
/varcalc ObstacleCheck ${ObstacleCheck}+1
/goto :AnchorMoveLoop
/return
Sub Event_CorpseTooFar
/call ChatOut 5 ${MasterName} "I'm not close enough to loot ${Target.CleanName}."
/varset LootTooFar 1
/return
Sub Event_Zoned
/varset IsAnchored 0
/keypress FORWARD
/return
Sub Event_FollowOff
/target clear
/call Delay 5
/call ChatOut 5 ${MasterName} "Auto follow Off."
/return
Sub Event_timer (string TimerName,string OldValue)
/if (${TimerName.Equal[SitTimer]}) {
/if (${Me.Standing}) /sit
}
/if (${TimerName.Equal[ChainStunTime]}) {
/call NextStun
}
/if (${TimerName.Equal[BuffListAdvance]}) {
/declare counter local
/for counter 1 to ${BuffListCount}
/varcalc BuffList(${counter},3] ${BuffList(${counter},3]}-1
/if (${BuffList(${counter},3]}<5) {
/call StandardTarget "${BuffList(${counter},1]}"
/if (${Target.CleanName.Equal[${BuffList(${counter},1]}]}) {
/call SpellSub "${BuffList(${counter},2]}"
/if (${Macro.Return}==0) /varset BuffList(${counter},3] ${Spell[${BuffList(${counter},2]}].Duration.TotalSeconds}
}
}
/next counter
/varset BuffListAdvance 5s
}
/return
Sub Event_Appear
/call ChatOut 3 ${MasterName} "I'm no longer invis."
/return
Sub Event_Appearing
/call ChatOut 3 ${MasterName} "I'm starting to appear."
/return
Sub Event_LosingLev
/call ChatOut 3 ${MasterName} "I'm losing Levitate"
/return
Sub StandardTarget (string TargetName)
/if (!${Defined[TargetName]}) {
/assist ${MasterName}
} else /if (${TargetName.Length}==0) {
/assist ${MasterName}
} else /if (${TargetName.Equal[me]}) {
/target pc ${MasterName}
} else /if (${TargetName.Equal[yourself]}) {
/target myself
} else /if (${TargetName.Equal[${Me.CleanName}]}) {
/target myself
} else {
/target ${TargetName}
}
/return
||||||||||||Do-subs
Sub Do-target
/varset Supportstatus 1
/call StandardTarget "${CommandParam}"
/call ChatOut 5 ${MasterName} "My target is now ${Target.CleanName}."
/return
Sub Do-saytarget
/call ChatOut 5 ${MasterName} "my target is ${Target.CleanName}."
/return
Sub Do-assist (string AssistName)
/varset Supportstatus 1
/if (!${Defined[AssistName]}) {
/assist ${MasterName}
} else /if (${AssistName.Equal[me]}) {
/assist ${MasterName}
} else /if (${AssistName.Equal[yourself]}) {
/return
} else /if (${AssistName.Equal[${Me.CleanName}]}) {
/return
} else {
/assist ${CommandParam}
}
/call Delay 5
/if (!${Target.ID}) {
/call ChatOut 5 ${MasterName} "I failed to get a target."
} else {
/call ChatOut 5 ${MasterName} "My target is now ${Target.CleanName}."
/if (${AttackOnAssist}) /varset Combatstatus 1
/if (${BehindOnAssist}) /call do-getbehind
/if (${PetOnAssist}) {
/if (${Me.Sitting}) /Stand
/call Delay 5
/pet attack
/call Delay 5
/if (${SitAfterCast}==1 && ${Me.Standing}) /sit
}
}
/return
Sub Do-sit
/varset Afollow 0
/varset FollowTarget "NULL"
/if ((${advpath})&&(${FollowFlag})) /call StopFunction
/if (${Me.Standing}) /sit
/return
Sub Do-stand
/if (${Me.Sitting}) /Stand
/return
Sub Do-notarget
/target clear
/return
Sub Do-relay
/varset Relaytells 1
/return
Sub Do-norelay
/varset Relaytells 0
/return
Sub Do-afk
/if (!${Defined[Param0]}) {
/afk
} else {
/afk ${CommandParam}
}
/call ChatOut 3 ${MasterName} "Going afk."
/return
Sub Do-say
/if (!${Defined[Param0]}) {
/return
} else {
/say ${CommandParam}
}
/return
Sub Do-group
/if (!${Defined[Param0]}) {
/return
} else {
/g ${CommandParam}
}
/return
Sub Do-tell
/if (!${Defined[Param0]}) {
/return
} else {
/tell ${CommandParam}
}
/return
Sub Do-accept
/target clear
/invite
/return
Sub Do-reject
/target clear
/disband
/return
Sub Do-invite (string TargetName)
/if (!${Defined[Param0]}) {
/assist ${MasterName}
} else /if (${TargetName.Equal[me]}) {
/target pc ${MasterName}
} else /if (${TargetName.Equal[yourself]}) {
/return
} else /if (${TargetName.Equal[${Me.CleanName}]}) {
/return
} else {
/target pc ${CommandParam}
}
/call ChatOut 3 ${MasterName} "Inviting ${Target.CleanName}."
/invite
/return
Sub Do-face
/call StandardTarget "${CommandParam}"
/call ChatOut 5 ${MasterName} "Facing ${Target.CleanName}."
/if (${Me.Sitting}) /Stand
/call Delay 5
/face
/return
Sub Do-stop
/dismount
/varset Supportstatus 0
/varset BreakOut 1
/varset LootTooFar 1
/varset SpellFail 1
/varset Afollow 0
/if ((${advpath})&&(${FollowFlag})) /call StopFunction
/varset FollowTarget "NULL"
/call ChatOut 5 ${MasterName} "Stopping."
/keypress LEFT
/keypress RIGHT
/keypress DUCK
/keypress DUCK
/target clear
/keypress right
/return
Sub Do-stay
/varset Afollow 0
/varset FollowTarget "NULL"
/if ((${advpath})&&(${FollowFlag})) /call StopFunction
/keypress LEFT
/keypress RIGHT
/return
Sub Do-camp
/dismount
/varset Afollow 0
/if ((${advpath})&&(${FollowFlag})) /call StopFunction
/varset FollowTarget "NULL"
/keypress LEFT
/keypress RIGHT
/call ChatOut 3 ${MasterName} "Camping out."
/if (${Me.Standing}) /Sit
/camp desktop
/return
Sub Do-pause
/if (${advpath}) {
/if (!${PauseFlag}) {
/call ChatOut 5 ${MasterName} "Pausing."
} else {
/call ChatOut 5 ${MasterName} "Unpausing."
}
/call PauseFunction
}
/return
Sub Do-reload
/call ChatOut 5 ${MasterName} "Reload initiated."
/mac genbot.mac ${MasterName}
/return
Sub Do-duck
/keypress DUCK
/varset SpellFail 1
/varset CTimer 0
/return
Sub Do-cmds
/declare CommandTypes string local Core|Spell|Combat|Healer|Personal|Shortcuts
/if (${Defined[Param0]} && ${CommandTypes.Find[${Param0}]}) {
/call TellCmds-${Param0}
/return
} else {
/call ChatOut 3 ${MasterName} "Must specify one of ${CommandTypes}"
}
/return
Sub Do-moveto (string TargetName)
/if (${Me.Sitting}) /stand
/varset ObstacleCheck 0
/varset MyLastXLoc ${Me.X}
/varset MyLastYLoc ${Me.Y}
/if (!${Defined[Param0]}) {
/assist ${MasterName}
/call Delay 5
/varset CommandParam ${Target.CleanName}
} else /if (${String[${Param0}].Equal[me]}) {
/target ${MasterName}
/varset CommandParam ${Target.CleanName}
} else /if (${TargetName.Equal[yourself]}) {
/return
} else /if (${TargetName.Equal[${Me.CleanName}]}) {
/return
} else {
/target ${CommandParam}
}
/if (!${Target.ID}) /return
/doevents
/if (${MoveToMode}==1) {
/if (${Supportstatus}) /return
/call RangeSub
}
/if (${MoveToMode}==2) {
/call GotoFunction "${Target.Y}" "${Target.X}" "${Target.Z}"
}
/return
Sub Do-trade
/call ChatOut 5 ${MasterName} "Clicking trade."
/notify TradeWnd TRDW_Trade_Button LeftMouseUp
/call Delay 3
/return
Sub Do-yes
/call ChatOut 5 ${MasterName} "Clicking yes for res."
/notify ConfirmationDialogBox Yes_Button leftmouseup
/call Delay 3
/return
Sub Do-lootup
/if (!${Defined[Param0]}) {
/assist ${MasterName}
} else {
/target ${CommandParam}
}
/call Delay 5
/call Loot
/return
Sub Do-lootall
/if (!${Defined[Param0]}) {
/assist ${MasterName}
} else {
/target ${CommandParam}
}
/call Delay 5
/call LootAll
/return
Sub Do-petattack
/assist ${MasterName}
/call Delay 1s
/if (!${Target.ID}) /call ChatOut 5 ${MasterName} "I failed to get a target."
/pet attack
/return
Sub Do-petguard
/pet guard here
/return
Sub Do-petback
/pet back off
/return
Sub Do-anchor
/if (!${IsAnchored}) {
/varset IsAnchored 1
/varset AnchorX ${Me.Y}
/varset AnchorY ${Me.X}
/varset Afollow 0
/varset FollowTarget "NULL"
/if (${advpath} && ${FollowFlag}) /call StopFunction
/keypress LEFT
/keypress RIGHT
/call ChatOut 5 ${MasterName} "Created anchor at Loc: ${AnchorX},${AnchorY}."
/return
}
/if (${IsAnchored}) {
/varset IsAnchored 0
/call ChatOut 5 ${MasterName} "Removed Anchor."
}
/return
Sub Do-consent (string TargetName)
/if (!${Defined[TargetName]}) {
/assist ${MasterName}
/call Delay 5
/varset CommandParam ${Target.CleanName}
/consent ${Target.CleanName}
} else /if (${TargetName.Equal[me]}) {
/call ChatOut 3 ${MasterName} "I'm giving you consent."
/consent ${MasterName}
/varset CommandParam ${MasterName}
/return
} else /if (${TargetName.Equal[yourself]}) {
/return
} else /if (${TargetName.Equal[${Me.CleanName}]}) {
/return
} else {
/consent ${CommandParam}
}
/call ChatOut 3 ${MasterName} "I gave consent to ${CommandParam}"
/return
Sub Do-reportbuffs
/declare myBuffs string local Buffs:
/declare counter int local
/for counter 0 to 15
/varcat myBuffs " ${Me.Buff[${$counter}]}"
/next tempvar
/call ChatOut 1 ${MasterName} "${myBuffs}"
/return
Sub Do-run
/keypress ctrl+r
/return
Sub Do-verbosity (int NewVerbosity)
/if (!${Defined[NewVerbosity]}) {
/call ChatOut 1 ${MasterName} "My Verbosity is set to ${Verbosity}."
/return
}
/varset Verbosity ${NewVerbosity}
/call ChatOut 1 ${MasterName} "My Verbosity is set to ${Verbosity}."
/return
Sub Do-chatin
/if (!${Defined[Param0]}) {
/call ChatOut 1 ${MasterName} "My chat goes to ${ChatIn}."
/return
}
/varset ChatIn ${Param0}
/call ChatOut 1 ${MasterName} "My chat goes to ${ChatIn}."
/return
Sub Do-rmod (int RangeMod)
/if (!${Defined[RangeMod]}) {
/varcalc RangeMin ${RangeMin}+${RangeMod}
/varcalc RangeMax ${RangeMax}+${RangeMod}
/varcalc FastRange ${FastRange}+${RangeMod}
/varcalc FastMin ${FastMin}+${RangeMod}
/call ChatOut 3 ${MasterName} "New Ranges: FastMin=${FastMin} RangeMin=${RangeMin} RangeMax=${RangeMax} FastRange=${FastRange}"
/return
Sub Do-rset (int NewFastMin,int NewRangeMin,int NewRangeMax,int NewFastRange)
/if (!${Defined[NewFastMin]}) /return
/if (!${Defined[NewRangeMin]}) /return
/if (!${Defined[NewRangeMax]}) /return
/if (!${Defined[NewFastRange]}) /return
/if (${NewFastMin}>${NewRangeMin}) /return
/if (${NewRangeMin}>${NewRangeMax}) /return
/if (${NewRangeMax}>${NewFastRange}) /return
/varset FastMin ${NewFastMin}
/varset RangeMin ${NewRangeMin}
/varset RangeMax ${NewRangeMax}
/varset FastRange ${NewFastRange}
/call ChatOut 3 ${MasterName} "New Ranges: FastMin=${FastMin} RangeMin=${RangeMin} RangeMax=${RangeMax} FastRange=${FastRange}"
/return
Sub Do-anchorradius (int NewRadius)
/if (!${Defined[NewRadius]}) {
/call ChatOut 3 ${MasterName} "My anchor radius is ${AnchorRadius}."
}
/if (${NewRadius}<3) /return
/varset AnchorRadius ${NewRadius}
/call ChatOut 3 ${MasterName} "My new anchor radius is ${AnchorRadius}."
/return
Sub Do-follow
/if (${Me.Sitting}) /Stand
/varset IsAnchored 0
/if (!${Defined[Param0]}) {
/varset FollowTarget "${MasterName}"
} else /if (${CommandParam].Equal[me]}) {
/varset FollowTarget "${MasterName}"
} else /if (${CommandParam.Equal[yourself]}) {
/return
} else /if (${CommandParam.Equal[${Me.CleanName}]}) {
/return
} else {
/varset FollowTarget ${CommandParam}
}
/if (${FollowMode}==1) {
/target FollowTarget
/delay 1s
/varset Afollow TRUE
}
/if (${FollowMode}==2) {
/call FollowFunction "${FollowTarget}"
}
/if (${FollowMode}=3) {
/target FollowTarget
/delay 1s
/follow
}
/if (${Target.ID}) {
/call ChatOut 5 ${MasterName} "I am now following ${Target.CleanName}."
} else {
/call ChatOut 5 ${MasterName} "Unable to follow ${FollowTarget}."
/call StopFunction
/varset FollowTarget "NULL"
}
/return
Sub Do-Door
/doort
/face door
/keypress u
/return
Sub Do-autoinv
/autoinventory
/return
Sub Do-mount
/if (${Me.Sitting}) /stand
/cast item "${MountItem}"
/call ChatOut 5 ${MasterName} "Summoning my mount."
/return
Sub Do-dismount
/dismount
/call ChatOut 5 ${MasterName} "I got off my mount."
/return
Sub Do-random
/if (!${Defined[Param0]}) /return
/if (!${Defined[Param1]}) {
/random ${Param0}
} else {
/random ${Param0} ${Param1}
}
/return
Sub Do-exp
/call ChatOut 5 ${MasterName} "I am at ${Me.PctExp} percent exp.
/return
Sub Do-Setvar
/if (!${Defined[Param0]}) /return
/declare VarLen int local
/declare ValueLen int local
/declare VarName string Local
/varset VarName ${CommandParam.Arg[1]}
/varset VarLen ${CommandParam.Length}
/varset ValueLen ${CommandParam.Length}
/varcalc ValueLen ${ValueLen}-${VarLen}
/varset ${VarName} "${CommandParam.Right[${ValueLen}]}"
/call ChatOut 5 ${MasterName} "${Param0} is now equal to ${${Param0}}"
/return
Sub Do-Rptvar
/if (!${Defined[Param0]}) /return
/call ChatOut 5 ${MasterName} "${Param0} is equal to ${${Param0}}"
/return
Sub Do-FollowMode
/if (${Defined[Param0]) /return
/varset FollowMode ${Param0}
/return
Sub Do-MoveToMode
/if (${Defined[Param0]) /return
/varset MoveToMode ${Param0}
/return


