Code: Select all
|botcore.inc
|Bot core module.
|Version 8.8
|Date:12/01/2003 7:00am
|
|
|
#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"
Sub CoreCommands
/varset Commands(1,0) afk
/varset Commands(1,1) accept
/varset Commands(1,2) reject
/varset Commands(1,3) invite
/varset Commands(1,4) follow
/varset Commands(1,5) stop
/varset Commands(1,6) moveto
/varset Commands(1,7) sit
/varset Commands(1,8) stand
/varset Commands(1,9) camp
/varset Commands(1,10) duck
/varset Commands(1,11) norelay
/varset Commands(1,12) say
/varset Commands(1,13) tell
/varset Commands(1,14) group
/varset Commands(1,15) cmds
/varset Commands(1,16) target
/varset Commands(1,17) notarget
/varset Commands(1,18) assist
/varset Commands(1,19) saytarget
/varset Commands(1,20) afollow
/varset Commands(1,21) itemcast
/varset Commands(1,22) lootup
/varset Commands(1,23) anchor
/varset Commands(1,24) trade
/varset Commands(1,25) yesres
/varset Commands(1,26) consent
/varset Commands(1,27) reportbuffs
/varset Commands(1,28) petattack
/varset Commands(1,29) petguard
/varset Commands(1,30) petback
/varset Commands(1,31) relay
/varset Commands(1,32) run
/varset Commands(1,33) door
/varset Commands(1,34) listengroup
/varset Commands(1,35) aona
/varset Commands(1,36) bona
/varset Commands(1,37) petona
/varset Commands(1,38) verbosity
/varset Commands(1,39) chatin
/varset Commands(1,40) lootall
/varset Commands(1,41) listenchat
/varset Commands(1,42) face
/varset Commands(1,43) autoinv
/varset Commands(1,44) anchorradius
/varset Commands(1,45) rmod
/varset Commands(1,46) rset
/varset Commands(1,47) stay
/varset ArrayCore 47
/return
Sub TellCmds-core
/declare counter local
/declare cmds local
/varset cmds ""
/for counter 0 to @ArrayCore
/varcat cmds "@Commands(1,@counter), "
/next counter
/call ChatOut 2 @MasterName "@cmds"
/return
Sub SetupCoreVars
|Arrays
/declare MName array
/declare Commands array2
/declare IgnGroup array
|Globals
/declare tempvar global
/declare CmdList-core global
/declare AnchorX global
/declare AnchorY global
/declare IsAnchored global
/declare LootSlot global
/declare LootTooFar global
/declare BotName global
/declare MasterName global
/declare CmdArrayNum global
/declare MyXLoc global
/declare MyYLoc global
/declare countdown global
/declare RangeMin global
/declare RangeMax global
/declare FastRange global
/declare FastMin global
/declare Remem global
/declare MyClass global
/declare FollowTarget global
/declare Afollow global
/declare Fail global
/declare ArrayCounter global
/declare Relaytells global
/declare BreakOut global
/declare Combatstatus global
/declare ListenGroup global
/declare ListenChat global
/declare AttackOnAssist global
/declare BehindOnAssist global
/declare PetOnAssist global
/declare Verbosity global
/declare ChatIn global
/declare IgnGroupList global
/declare IgnGroupNum global
/declare DelayBeforeSit global
/declare ListenChan global
/declare AnchorRadius global
/declare Supportstatus global
|Timers
/declare SitTimer timer
/declare StrafeTimer timer
|-------------------------------------
/varset BotName $char(name)
/varset Afollow 0
/varset Combatstatus 0
/varset RangeMin $ini(@IniFile,"Core",RangeMin)
/if "@RangeMin"=="NOTFOUND" {
/ini "@IniFile" Core RangeMin 10
/varset RangeMin 9
}
/varset RangeMax $ini(@IniFile,"Core",RangeMax)
/if "@RangeMax"=="NOTFOUND" {
/ini "@IniFile" Core RangeMax 12
/varset RangeMax 12
}
/varset FastRange $ini(@IniFile,"Core",FastRange)
/if "@FastRange"=="NOTFOUND" {
/ini "@IniFile" Core FastRange 14
/varset FastRange 14
}
/varset FastMin $ini(@IniFile,"Core",FastMin)
/if "@FastMin"=="NOTFOUND" {
/ini "@IniFile" Core FastMin 6
/varset FastMin 6
}
/varset Relaytells $ini(@IniFile,"Core",Relaytells)
/if "@Relaytells"=="NOTFOUND" {
/ini "@IniFile" Core Relaytells 1
/varset Relaytells 1
}
/varset ListenGroup $ini(@IniFile,"Core",ListenGroup)
/if "@ListenGroup"=="NOTFOUND" {
/ini "@IniFile" Core ListenGroup 1
/varset ListenGroup 1
}
/varset ListenChat $ini(@IniFile,"Core",ListenChat)
/if "@ListenChat"=="NOTFOUND" {
/ini "@IniFile" Core ListenChat 1
/varset ListenChat 0
}
/varset ListenChan $ini(@IniFile,"Core",ListenChan)
/if "@ListenChan"=="NOTFOUND" {
/ini "@IniFile" Core ListenChan "Listen channel"
/varset ListenChan "Listen channel"
}
/varset AttackOnAssist $ini(@IniFile,"Core",AttackOnAssist)
/if "@AttackOnAssist"=="NOTFOUND" {
/ini "@IniFile" Core AttackOnAssist 0
/varset AttackOnAssist 0
}
/varset BehindOnAssist $ini(@IniFile,"Core",BehindOnAssist)
/if "@BehindOnAssist"=="NOTFOUND" {
/ini "@IniFile" Core BehindOnAssist 0
/varset BehindOnAssist 0
}
/varset PetOnAssist $ini(@IniFile,"Core",PetOnAssist)
/if "@PetOnAssist"=="NOTFOUND" {
/ini "@IniFile" Core PetOnAssist 0
/varset PetOnAssist 0
}
/varset Verbosity $ini(@IniFile,"Core",Verbosity)
/if "@Verbosity"=="NOTFOUND" {
/ini "@IniFile" Core Verbosity 9
/varset Verbosity 9
}
/varset ChatIn $ini(@IniFile,"Core",ChatIn)
/if "@ChatIn"=="NOTFOUND" {
/ini "@IniFile" Core ChatIn Tell
/varset ChatIn Tell
}
/varset IgnGroupList $ini(@IniFile,"Core",IgnoreInGroup)
/if "@IgnGroupList"=="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 DelayBeforeSit $ini(@IniFile,"Core",DelayBeforeSit)
/if "@DelayBeforeSit"=="NOTFOUND" {
/ini "@IniFile" Core DelayBeforeSit 3s
/varset DelayBeforeSit 3s
}
/varset AnchorRadius $ini(@IniFile,"Core",AnchorRadius)
/if "@AnchorRadius"=="NOTFOUND" {
/ini "@IniFile" Core AnchorRadius 6
/varset AnchorRadius 6
}
/declare IniPosition local
/varset IniPosition 1
:ParseIgnGroupList
/if "$arg($int(@IniPosition),"@IgnGroupList",|)"!="" {
/varset IgnGroup($int(@IniPosition)) "$arg($int(@IniPosition),"@IgnGroupList",|)"
|/echo IgnGroup($int(@IniPosition)) @IgnGroup($int(@IniPosition))
/varadd IniPosition 1
/goto :ParseIgnGroupList
}
/varsub IniPosition 1
/varset IgnGroupNum $int(@IniPosition)
/varset IsAnchored 0
/return
Sub Event_Chat
/if "@Param0"!="GROUP" {
/if "@Param0"!="@ListenChan" {
/if "@Param0"!="TELL" {
/return
}
}
}
/if "@Param0"=="GROUP" {
/if n @ListenGroup==0 /return
}
/if "@Param0"=="@ListenChan" {
/if @ListenChat==0 /return
}
/for tempvar 0 to @MasterCount
/if @MName(@tempvar)==@Param1 /goto :SetupTime
/next tempvar
/if "@Param0"=="GROUP" /return
/if "@Param0"=="@ListenChan" /return
/if n @Relaytells==1 {
/if "@Param0"=="TELL" {
/call ChatOut 1 @MasterName "@Param1 told me: @Param2"
}
}
/return
:SetupTime
/varset MasterName @Param1
/if "@Param0"=="GROUP" {
/for tempvar 0 to @IgnGroupNum
/if "$arg(1,"@Param2")"=="@IgnGroup(@tempvar)" /return
/next tempvar
}
/if "@Param0"=="@ListenChan" {
/for tempvar 0 to @IgnGroupNum
/if "$arg(1,"@Param2")"=="@IgnGroup(@tempvar)" /return
/next tempvar
}
/if "$defined(ArrayCore)"=="TRUE" {
/for tempvar 0 to @ArrayCore
/if "$arg(1,"@Param2")"=="@Commands(botcore-array,@tempvar)" {
/call Do-@Commands(botcore-array,@tempvar) @Param2
/return
}
/next tempvar
}
/if "$defined(ArraySpell)"=="TRUE" {
/for tempvar 0 to @ArraySpell
/if "$arg(1,"@Param2")"=="@Commands(botspell-array,@tempvar)" {
/call Do-@Commands(botspell-array,@tempvar) @Param2
/return
}
/next tempvar
}
/if "$defined(ArrayComb)"=="TRUE" {
/for tempvar 0 to @ArrayComb
/if "$arg(1,"@Param2")"=="@Commands(botcombat-array,@tempvar)" {
/call Do-@Commands(botcombat-array,@tempvar) @Param2
/return
}
/next tempvar
}
/if "$defined(ArrayHeal)"=="TRUE" {
/for tempvar 0 to @ArrayHeal
/if "$arg(1,"@Param2")"=="@Commands(bothealer-array,@tempvar)" {
/call Do-@Commands(bothealer-array,@tempvar) @Param2
/return
}
/next tempvar
}
/if "$defined(ArrayPers)"=="TRUE" {
/for tempvar 0 to @ArrayPers
/if "$arg(1,"@Param2")"=="@Commands(personal-array,@tempvar)" {
/call Do-@Commands(personal-array,@tempvar) @Param2
/return
}
/next tempvar
}
/return
Sub ChatOut(ChatPriority,ChatTarget,ChatText)
/if n @ChatPriority>@Verbosity /return
/if "@ChatIn"=="IRC" {
/irc @ChatText
/return
}
/if @ChatTarget=="GROUP" {
/g @ChatText
/return
}
/if n @ChatPriority==1 {
/tell @ChatTarget @ChatText
/return
}
/if @ChatIn=="tell" {
/tell @ChatTarget @ChatText
} else /if @ChatIn=="Group" {
/g @ChatText
} else /if @ChatIn=="Raid" {
/rs @ChatText
} else /if @ChatIn=="Say" {
/say @ChatText
} else /if @ChatIn=="Channel" {
/1 @ChatText
}
/return
Sub Detectobst
/if n @MyXLoc==$char(x) /if @MyYLoc==$char(y) /call Hitobst 5
/varset MyXLoc $char(x)
/varset MyYLoc $char(y)
/return
Sub Hitobst
/sendkey up up
/sendkey down down
/if n $rand(99)>50 {
/delay 2s
/sendkey up down
/sendkey down Right
/delay @Param0
/sendkey up Right
/sendkey down up
/delay 2s
/sendkey up up
} else {
/delay 2s
/sendkey up down
/sendkey down left
/delay @Param0
/sendkey up left
/sendkey down up
/delay 2s
/sendkey up up
}
/sendkey up down
/sendkey up Right
/sendkey up Left
/sendkey down up
/return
sub Loot
/declare counter local
/if $combat==TRUE /return
/if "$target()"=="FALSE" {
/target corpse radius 100
}
/if $target(state)!=DEAD /return
/press down
/press down
/call Rangesub
/varset LootTooFar 0
/varset LootSlot 0
/lootn never
/loot
/varset counter 0
:CoreWaitLoot
/delay 5
/doevents
/varadd counter 1
/if @BreakOut==1 /goto :donelooting
/if n @counter>12 /goto :donelooting
/if $corpse()!=TRUE /goto :CoreWaitLoot
/call ChatOut 5 @MasterName "Looting $target(name,clean)."
:lootloop
/if n @LootSlot==10 /goto :donelooting
/if n @LootTooFar==1 /goto :donelooting
/if $corpse(empty)==TRUE /goto :donelooting
/doevents
/click right corpse @LootSlot
/delay 1s
/varadd LootSlot 1
/doevents
/if @BreakOut==1 /goto donelooting2
/goto :lootloop
:donelooting
/lootn always
/varset LootSlot 0
/press esc
/press esc
/press esc
/return
sub LootAll
/declare counter local
:LootAllCycle
/if $combat==TRUE /return
/if "$target()"=="FALSE" {
/target corpse radius 100
}
/if $target(state)!=DEAD /return
/press down
/press down
/call Rangesub
/varset LootTooFar 0
/varset LootSlot 0
/lootn never
/loot
/varset counter 0
:CoreWaitLoot2
/delay 5
/doevents
/varadd counter 1
/if @BreakOut==1 /goto :donelooting2
/if n @counter>12 /goto :donelooting2
/if $corpse()!=TRUE /goto :CoreWaitLoot2
/call ChatOut 5 @MasterName "Looting $target(name,clean)."
:lootloop2
/if n @LootSlot==10 /goto :donelooting2
/if n @LootTooFar==1 /goto :donelooting2
/if $corpse(empty)==TRUE /goto :donelooting2
/click right corpse @LootSlot
/delay 1s
/varadd LootSlot 1
/doevents
/if @BreakOut==1 /goto donelooting2
/goto :lootloop2
:donelooting2
/lootn always
/varset LootSlot 0
/press esc
/press esc
/press esc
/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()==FALSE /return
/if "$target(name,clean)"=="$char(name)" /return
/if "$char(state)"=="SIT" /stand
/face fast
/if n $target(distance)>=@FastRange /call Fastmove
/if n $target(distance)<=@FastMin /call FastBack
/if n $target(distance)>@RangeMax {
/press up
}
/if n $target(distance)<@RangeMin {
/press down
}
/return
Sub Fastback
/varset countdown 0
/varset MyXLoc $char(x)
/varset MyYLoc $char(y)
:fastbackloop
/doevents
/if $target()=="FALSE" {
/varset Combatstatus 0
/sendkey up down
/if $combat=="TRUE" {
/attack off
}
/return
}
/if "$char(state)"=="SIT" /stand
/face fast
/if n $target(distance)<@FastMin {
/sendkey down down
}
/if n $target(distance)>=@FastMin {
/sendkey up down
/return
}
/goto :fastbackloop
/if n @countdown>=3 {
/if n @MyXLoc==$char(x) {
/if @MyYLoc==$char(y) {
/sendkey up down
/return
}
}
/varset MyXLoc $char(x)
/varset MyYLoc $char(y)
}
/varadd countdown 1
/goto :fastbackloop
/return
|Fastmove
|Called by Rangesub for when mob is more than /press distance away.
|Usage: /call Fastmove
Sub Fastmove
/varset countdown 0
/varset MyXLoc $char(x)
/varset MyYLoc $char(y)
:fastmoveloop
/doevents
/if $target()=="FALSE" {
/varset Combatstatus 0
/sendkey up up
/if $combat=="TRUE" {
/attack off
}
/return
}
/if "$char(state)"=="SIT" /stand
/face fast
/if n $target(distance)>@FastRange {
/sendkey down up
}
/if n $target(distance)<=@FastRange {
/sendkey up up
/return
}
/if n @countdown>=3 {
/call Detectobst
/varset countdown 0
}
/if n $target(distance)=>$calc(@FastRange*3) /varadd countdown 1
/goto :fastmoveloop
/return
Sub MoveToAnchor
/varset MyXLoc $char(x)
/varset MyYLoc $char(y)
/varset countdown 0
:AnchorMoveLoop
/if @IsAnchored==0 {
/sendkey up up
/return
}
/doevents
/if n @Combatstatus==1 {
/sendkey up up
/return
}
/if "$char(state)"=="SIT" /stand
/face nolook loc @AnchorX,@AnchorY
/if n $distance(@AnchorX,@AnchorY)>@AnchorRadius /sendkey down up
/if n $distance(@AnchorX,@AnchorY)<=@AnchorRadius {
/sendkey up up
/if "$char(state)"=="SIT" /stand
/face away nolook loc @AnchorX,@AnchorY
/return
}
/if n @countdown>=3 {
/call Detectobst
/varset countdown 0
}
/varadd countdown 1
/goto :AnchorMoveLoop
/return
Sub Event_CorpseTooFar
/call ChatOut 5 @MasterName "I'm not close enough to loot $target(name,clean)."
/varset LootTooFar 1
/return
Sub Event_Zoned
/varset IsAnchored 0
/sendkey up up
/return
Sub Event_FollowOff
/press esc
/press esc
/delay 5
/call ChatOut 5 @MasterName "Auto follow Off."
/return
Sub Event_timer
/if "@Param0"=="SitTimer" {
/if $char(state)==STAND /sit
}
/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
||||||||||||Do-subs
Sub Do-target
/varset Supportstatus 1
/varset CmdArrayNum 0
/if $defined(Param1)==FALSE {
/assist @MasterName
} else /if "@Param1"=="me" {
/target pc @MasterName
} else /if "@Param1"=="yourself" {
/target myself
} else /if "@Param1"=="$char(name)" {
/target myself
} else {
/declare ParamString local
/declare ParamCount local
/varset ParamCount 2
/varset ParamString "@Param1"
:Do-targetParamLoop
/if $defined(Param$int(@ParamCount))==TRUE {
/varcat ParamString " @Param$int(@ParamCount)"
/varadd ParamCount 1
/goto :Do-targetParamLoop
}
/target @ParamString
}
/call ChatOut 5 @MasterName "My target is now $target(name,clean)."
/return
Sub Do-saytarget
/call ChatOut 5 @MasterName "my target is $target(name,clean)."
/return
Sub Do-assist
/varset Supportstatus 1
/varset CmdArrayNum 0
/if $defined(Param1)==FALSE {
/assist @MasterName
} else /if "@Param1"=="me" {
/assist @MasterName
} else /if "@Param1"=="yourself" {
/return
} else /if "@Param1"=="$char(name)" {
/return
} else {
/declare ParamString local
/declare ParamCount local
/varset ParamCount 2
/varset ParamString "@Param1"
:Do-assistParamLoop
/if $defined(Param$int(@ParamCount))==TRUE {
/varcat ParamString " @Param$int(@ParamCount)"
/varadd ParamCount 1
/goto :Do-assistParamLoop
}
/assist @ParamString
}
/delay 5
/if $target()==FALSE {
/call ChatOut 5 @MasterName "I failed to get a target."
} else {
/call ChatOut 5 @MasterName "My target is now $target(name,clean)."
/if @AttackOnAssist==1 /varset Combatstatus 1
/if @BehindOnAssist==1 /call do-getbehind
/if @PetOnAssist==1 /pet attack
}
/return
Sub Do-sit
/varset Afollow 0
/varset FollowTarget "NULL"
/if $char(state)==STAND /sit
/return
Sub Do-stand
/sit off
/return
Sub Do-notarget
/press esc
/press esc
/press esc
/return
Sub Do-relay
/varset Relaytells 1
/return
Sub Do-norelay
/varset Relaytells 0
/return
Sub Do-afk
/varset CmdArrayNum 0
/if $defined(Param1)==FALSE {
/afk
} else {
/declare ParamString local
/declare ParamCount local
/varset ParamCount 2
/varset ParamString "@Param1"
:Do-afkParamLoop
/if $defined(Param$int(@ParamCount))==TRUE {
/varcat ParamString " @Param$int(@ParamCount)"
/varadd ParamCount 1
/goto :Do-afkParamLoop
}
/afk @ParamString
}
/call ChatOut 3 @MasterName "Going afk."
/return
Sub Do-afollow
/varset CmdArrayNum 0
/if $defined(Param1)==FALSE {
/varset FollowTarget "@MasterName"
/varset Afollow 1
} else /if "@Param1"=="me" {
/varset FollowTarget "@MasterName"
/varset Afollow 1
} else /if "@Param1"=="yourself" {
/return
} else /if "@Param1"=="$char(name)" {
/return
} else {
/declare ParamString local
/declare ParamCount local
/varset ParamCount 2
/varset ParamString "@Param1"
:Do-afollowParamLoop
/if $defined(Param$int(@ParamCount))==TRUE {
/varcat ParamString " @Param$int(@ParamCount)"
/varadd ParamCount 1
/goto :Do-afollowParamLoop
}
/varset FollowTarget @ParamString
/varset Afollow 1
}
/target @FollowTarget
/call ChatOut 5 @MasterName "I am now following $target(name,clean)."
/return
Sub Do-say
/varset CmdArrayNum 0
/if $defined(Param1)==FALSE {
/return
} else {
/declare ParamString local
/declare ParamCount local
/varset ParamCount 2
/varset ParamString "@Param1"
:Do-sayParamLoop
/if $defined(Param$int(@ParamCount))==TRUE {
/varcat ParamString " @Param$int(@ParamCount)"
/varadd ParamCount 1
/goto :Do-sayParamLoop
}
/say @ParamString
}
/return
Sub Do-group
/varset CmdArrayNum 0
/if $defined(Param1)==FALSE {
/return
} else {
/declare ParamString local
/declare ParamCount local
/varset ParamCount 2
/varset ParamString "@Param1"
:Do-groupParamLoop
/if $defined(Param$int(@ParamCount))==TRUE {
/varcat ParamString " @Param$int(@ParamCount)"
/varadd ParamCount 1
/goto :Do-groupParamLoop
}
/g @ParamString
}
/return
Sub Do-tell
/varset CmdArrayNum 0
/if $defined(Param1)==FALSE {
/return
} else {
/declare ParamString local
/declare ParamCount local
/varset ParamCount 2
/varset ParamString "@Param1"
:Do-tellParamLoop
/if $defined(Param$int(@ParamCount))==TRUE {
/varcat ParamString " @Param$int(@ParamCount)"
/varadd ParamCount 1
/goto :Do-tellParamLoop
}
/tell @ParamString
}
/return
Sub Do-accept
/target clear
/invite
/return
Sub Do-reject
/target clear
/disband
/return
Sub Do-invite
/varset CmdArrayNum 0
/if $defined(Param1)==FALSE {
/assist @MasterName
} else /if "@Param1"=="me" {
/target pc @MasterName
} else /if "@Param1"=="yourself" {
/return
} else /if "@Param1"=="$char(name)" {
/return
} else {
/declare ParamString local
/declare ParamCount local
/varset ParamCount 2
/varset ParamString "@Param1"
:Do-inviteParamLoop
/if $defined(Param$int(@ParamCount))==TRUE {
/varcat ParamString " @Param$int(@ParamCount)"
/varadd ParamCount 1
/goto :Do-inviteParamLoop
}
/target pc @ParamString
}
/call ChatOut 3 @MasterName "Inviting $target(name,clean)."
/invite
/return
Sub Do-face
/varset CmdArrayNum 0
/if $defined(Param1)==FALSE {
/assist @MasterName
} else /if "@Param1"=="me" {
/target pc @MasterName
} else /if "@Param1"=="yourself" {
/return
} else /if "@Param1"=="$char(name)" {
/return
} else {
/declare ParamString local
/declare ParamCount local
/varset ParamCount 2
/varset ParamString "@Param1"
:Do-faceParamLoop
/if $defined(Param$int(@ParamCount))==TRUE {
/varcat ParamString " @Param$int(@ParamCount)"
/varadd ParamCount 1
/goto :Do-faceParamLoop
}
/target @ParamString
}
/call ChatOut 5 @MasterName "Facing $target(name,clean)."
/stand
/delay 5
/if "$char(state)"=="SIT" /stand
/face
/return
Sub Do-follow
/if $char(state)==SIT /stand
/varset Afollow 0
/varset FollowTarget "NULL"
/target pc @MasterName
/face
/follow
/call ChatOut 5 @MasterName "Autofollow on $target(name,clean)."
/return
Sub Do-stop
/dismount
/varset Supportstatus 0
/varset BreakOut 1
/varset LootTooFar 1
/varset Fail 1
/call ChatOut 5 @MasterName "Stoping."
/sendkey up up
/press d
/press d
/target clear
/press right
/return
Sub Do-stay
/varset Afollow 0
/varset FollowTarget "NULL"
/return
Sub Do-camp
/dismount
/varset Afollow 0
/varset FollowTarget "NULL"
/call ChatOut 3 @MasterName "Camping out."
/if $char(state)==STAND /sit
/camp desktop
/return
Sub Do-duck
/press d
/varset Fail 1
/varset CTimer 0
/return
Sub Do-cmds
/if $defined(Param1)==TRUE {
/if @Param1!=core {
/if @Param1!=spell {
/if @Param1!=combat {
/if @Param1!=healer {
/if @Param1!=personal {
/return
}
}
}
}
}
/call TellCmds-@Param1
}
/call ChatOut 3 @MasterName "Must specify core, healer, spell, combat, or personal."
/return
Sub Do-moveto
/sit off
/declare ParamString local
/declare ParamCount local
/varset countdown 0
/varset MyXLoc $char(x)
/varset MyYLoc $char(y)
/varset CmdArrayNum 0
/if $defined(Param1)==FALSE {
/assist @MasterName
/delay 5
/varset ParamString $target(name,clean)
} else /if "@Param1"=="me" {
/target @MasterName
/varset ParamString @MasterName
} else /if "@Param1"=="yourself" {
/return
} else /if "@Param1"=="$char(name)" {
/return
} else {
/varset ParamCount 2
/varset ParamString "@Param1"
:Do-movetoParamLoop
/if $defined(Param$int(@ParamCount))==TRUE {
/varcat ParamString " @Param$int(@ParamCount)"
/varadd ParamCount 1
/goto :Do-movetoParamLoop
}
/target @ParamString
}
/if "$target(name,clean)"==$char(name) /return
/if "$target(name,clean)"!="@ParamString" /target "@ParamString"
/if "$target()"==FALSE /return
/doevents
/if n @Supportstatus==1 /return
/call RangeSub
/return
Sub Do-trade
/call ChatOut 5 @MasterName "Clicking trade."
/click left button npctrade_give
/delay 3
/return
Sub Do-yesres
/call ChatOut 5 @MasterName "Clicking yes for res."
/click left button confirm_yes
/delay 3
/return
Sub Do-lootup
/varset CmdArrayNum 0
/if $defined(Param1)==FALSE {
/assist @MasterName
} else {
/declare ParamString local
/declare ParamCount local
/varset ParamCount 2
/varset ParamString "@Param1"
:Do-lootupParamLoop
/if $defined(Param$int(@ParamCount))==TRUE {
/varcat ParamString " @Param$int(@ParamCount)"
/varadd ParamCount 1
/goto :Do-lootupParamLoop
}
/target @ParamString
}
/delay 5
/call Loot
/return
Sub Do-lootall
/varset CmdArrayNum 0
/if $defined(Param1)==FALSE {
/assist @MasterName
} else {
/declare ParamString local
/declare ParamCount local
/varset ParamCount 2
/varset ParamString "@Param1"
:Do-lootupParamLoop
/if $defined(Param$int(@ParamCount))==TRUE {
/varcat ParamString " @Param$int(@ParamCount)"
/varadd ParamCount 1
/goto :Do-lootupParamLoop
}
/target @ParamString
}
/delay 5
/call LootAll
/return
Sub Do-petattack
/assist @MasterName
/delay 1s
/if $target()==FALSE {
/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 n @IsAnchored==0 {
/varset IsAnchored 1
/varset AnchorX $char(y)
/varset AnchorY $char(x)
/call ChatOut 5 @MasterName "Created anchor at Loc: @AnchorX,@AnchorY."
/return
}
/if n @IsAnchored==1 {
/varset IsAnchored 0
/call ChatOut 5 @MasterName "Removed Anchor."
}
/return
Sub Do-consent
/varset CmdArrayNum 0
/if $defined(Param1)==FALSE {
/assist @MasterName
} else /if "@Param1"=="me" {
/call ChatOut 3 @MasterName "I'm giving you consent."
/consent @MasterName
/return
} else /if "@Param1"=="yourself" {
/return
} else /if "@Param1"=="$char(name)" {
/return
} else {
/declare ParamString local
/declare ParamCount local
/varset ParamCount 2
/varset ParamString "@Param1"
:Do-consentParamLoop
/if $defined(Param$int(@ParamCount))==TRUE {
/varcat ParamString " @Param$int(@ParamCount)"
/varadd ParamCount 1
/goto :Do-consentParamLoop
}
/consent @ParamString
}
/call ChatOut 3 @MasterName "I gave consent to @ParamString"
/return
Sub Do-reportbuffs
/call ChatOut 1 @MasterName "Buffs: $char(buff,1), $char(buff,2), $char(buff,3), $char(buff,4), $char(buff,5), $char(buff,6), $char(buff,7), $char(buff,8), $char(buff,9), $char(buff,10), $char(buff,11), $char(buff,12), $char(buff,13), $char(buff,14), $char(buff,15)"
/return
Sub Do-run
/sendkey down ctrl
/press r
/sendkey up ctrl
/return
Sub Do-listengroup
/if $defined(Param1)==FALSE {
/if n @ListenGroup==0 /call ChatOut 3 @MasterName "I'll ignore group."
/if n @ListenGroup==1 /call ChatOut 3 @MasterName "I'll listen to group."
/return
}
/if "@Param1"=="off" {
/varset ListenGroup 0
/call ChatOut 5 @MasterName "I will now ignore group."
}
/if "@Param1"=="On" {
/varset ListenGroup 1
/call ChatOut 5 @MasterName "I will now listen to group."
}
/return
Sub Do-listenchat
/if $defined(Param1)==FALSE {
/if n @ListenChat==0 /call ChatOut 3 @MasterName "I will ignore chat."
/if n @ListenChat==1 /call ChatOut 3 @MasterName "I will listen to chat."
/return
}
/if "@Param1"=="off" {
/varset ListenChat 0
/call ChatOut 5 @MasterName "I will now ignore chat."
}
/if "@Param1"=="On" {
/varset ListenChat 1
/call ChatOut 5 @MasterName "I will now listen to chat."
}
/return
Sub Do-aona
/if $defined(Param1)==FALSE {
/if n @AttackOnAssist==0 /call ChatOut 3 @MasterName "I won't attack on assist."
/if n @AttackOnAssist==1 /call ChatOut 3 @MasterName "I will attack on assist."
/return
}
/if "@Param1"=="off" {
/varset AttackOnAssist 0
/call ChatOut 5 @MasterName "I won't attack on assist anymore."
}
/if "@Param1"=="On" {
/varset AttackOnAssist 1
/call ChatOut 5 @MasterName "I will attack On assist now."
}
/return
Sub Do-bona
/if $defined(Param1)==FALSE {
/if n @BehindOnAssist==0 /call ChatOut 3 @MasterName "I won't move behind on assist."
/if n @BehindOnAssist==1 /call ChatOut 3 @MasterName "I will move behind on assist."
/return
}
/if "@Param1"=="off" {
/varset BehindOnAssist 0
/call ChatOut 5 @MasterName "I won't get behind an assist anymore."
}
/if "@Param1"=="On" {
/varset BehindOnAssist 1
/call ChatOut 5 @MasterName "I will get behind On assist now."
}
/return
Sub Do-petona
/if $defined(Param1)==FALSE {
/if n @PetOnAssist==0 /call ChatOut 3 @MasterName "I won't send pet in on assist."
/if n @PetOnAssist==1 /call ChatOut 3 @MasterName "I will send pet in on assist."
/return
}
/if "@Param1"=="off" {
/varset PetOnAssist 0
/call ChatOut 5 @MasterName "I won't send pet in on assist anymore."
}
/if "@Param1"=="On" {
/varset PetOnAssist 1
/call ChatOut 5 @MasterName "I will send pet in on assist now.""
}
/return
Sub Do-verbosity
/if $defined(Param1)==FALSE {
/call ChatOut 1 @MasterName "My Verbosity is set to @Verbosity."
/return
}
/varset Verbosity @Param1
/call ChatOut 1 @MasterName "My Verbosity is set to @Verbosity."
/return
Sub Do-chatin
/if $defined(Param1)==FALSE {
/call ChatOut 1 @MasterName "My chat goes to @ChatIn."
/return
}
/varset ChatIn @Param1
/call ChatOut 1 @MasterName "My chat goes to @ChatIn."
/return
Sub Do-rmod
/if $defined(Param1)==FALSE /return
/varcalc RangeMin @RangeMin+@Param1
/varcalc RangeMax @RangeMax+@Param1
/varcalc FastRange @FastRange+@Param1
/varcalc FastMin @FastMin+@Param1
/call ChatOut 3 @MasterName "New Ranges: FastMin=@FastMin RangeMin=@RangeMin RangeMax=@RangeMax FastRange=@FastRange"
/return
Sub Do-rset
/if $defined(Param1)==FALSE /return
/if $defined(Param2)==FALSE /return
/if $defined(Param3)==FALSE /return
/if $defined(Param4)==FALSE /return
/if n @Param1>@Param2 /return
/if n @Param2>@Param3 /return
/if n @Param3>@Param4 /return
/varset FastMin @Param1
/varset RangeMin @Param2
/varset RangeMax @Param3
/varset FastRange @Param4
/call ChatOut 3 @MasterName "New Ranges: FastMin=@FastMin RangeMin=@RangeMin RangeMax=@RangeMax FastRange=@FastRange"
/return
Sub Do-anchorradius
/if $defined(Param1)==FALSE {
/call ChatOut 3 @MasterName "My anchor radius is @AnchorRadius."
}
/if n @Param1<3 /return
/varset AnchorRadius @Param1
/call ChatOut 3 @MasterName "My new anchor radius is @AnchorRadius."
/return