psssssst add potion belt usage, loot bags first, click heal potion if ${Me.CombatState.Equal[COMBAT]}
Code: Select all
#turbo 40
#chat tell
#chat group
#chat guild
#Event Follow "#1#tells the#*#, '#2#follow'"
#Event MakeCamp "#*#tells the#*#, '#2#make camp'"
#Event Toggle "#1#guild, '#2#toggle#3#'"
#Event Movement "#1#guild, '#2#goto#3#'"
#include spell_routines.inc
Sub Main
/declare randomvariable string outer "thisisaglitch"
/declare mainassist string outer ${Param0}
/declare makecamploc string outer ${Me.Y},${Me.X}
/declare amrezzed int outer 0
/declare amnaked int outer 4
/declare ammoving int outer 0
/if (${Me.Class.Name.Equal[Bard]}) /squelch /twist off
/if (${Me.Class.Name.Equal[Bard]}) /declare dotwist int outer 0
/if (${Me.Class.Name.Equal[Bard]}) /declare didinvis int outer 0
/if (!${Defined[Param0]}) {
/echo no paramater of main assist set, defaulting to myself
/varset mainassist string outer ${Me.Name}
}
/if (${Defined[Param1]}) {
/if (${Param1} == 100) /varset amnaked 100
/if (${Param1} != 100 && ${Param1.NotEqual[NULL]}) {
/echo second paramater given! it is ${Param1}
/declare savedparamater int outer ${Param1}
}
}
/if (${Defined[Param2]}) {
/if (${Param2} == 100) /varset amnaked 100
/if (${Param2} != 100 && ${Param1.NotEqual[NULL]}) {
/echo third paramater given! it is ${Param2}
/if (${Defined[savedparamater]}) /declare savedparamatertwo int outer ${Param2}
/if (!${Defined[savedparamater]}) /declare savedparamater int outer ${Param2}
}
}
/if (${Defined[Param3]}) {
/if (${Param2} != 100 && ${Param1.NotEqual[NULL]}) {
/echo fourth paramater given! it is ${Param3}
/if (${Defined[savedparamatertwo]}) /declare savedparamaterthree int outer ${Param3}
/if (!${Defined[savedparamatertwo]}) /declare savedparamatertwo int outer ${Param3}
}
}
/echo **** -|_ Rez Macro Initiated _|- ****
:rezloop
/call waitrez
/call checkstuff
/if (${NearestSpawn[corpse radius 100 "${Me.Name}"].ID} && ${amrezzed}) /call lootcorpse
/delay 2
/doevents
/goto :rezloop
Sub waitrez
/if (${Window[ConfirmationDialogBox].Open} && !${Me.Casting.ID} && !${Cursor.ID}) {
/if (${Window[ConfirmationDialogBox].FirstChild.Next.Next.Next.Next.Text.Find[destroy]}) {
/nomodkey /notify ConfirmationDialogBox CD_No_Button leftmouseup
/return
}
/if (${Window[ConfirmationDialogBox].FirstChild.Next.Next.Next.Next.Text.Find[upon you.]}) {
/if (${Window[ConfirmationDialogBox].FirstChild.Next.Next.Next.Next.Text.Find[destroy]}) {
/nomodkey /notify ConfirmationDialogBox CD_No_Button leftmouseup
/return
}
/if (!${Cursor.ID}) /nomodkey /notify ConfirmationDialogBox CD_Yes_Button leftmouseup
/delay 1s
/if (!${Window[ConfirmationDialogBox].Open}) /varset amrezzed 1
}
}
/return
Sub checkstuff
/if (${Me.State.Equal[BIND]} && !${InvSlot[13].Item.ID} && !${Bool[${diedagain}]} && !${NearestSpawn[corpse radius 100 "${Me.Name}"].ID} && ${amrezzed}) {
/varset amrezzed 0
/declare diedagain int outer 1
/guildsay i died again
/echo i have died -- returning
/return
}
/if (${Cursor.Name.Equal[Rod of Mystical Transvergence]}) {
/autoinv
/call handledestroy "Rod of Mystical Transvergence"
}
/if (${Bool[${corpsedone}]} && ${InvSlot[13].Item.ID} && ${Bool[${abandoncorpse}]}) {
/if (${Me.Level} < 64) /docommand /mac pl ${mainassist} ${savedparamater}
/if (${Me.Class.Name.Equal[Beastlord]}) /docommand /mac beast ${mainassist} ${savedparamater} ${savedparamatertwo}
/if (${Me.Class.Name.Equal[Shadowknight]}) /docommand /mac sk ${mainassist} ${savedparamater}
/if (${Me.Class.Name.Equal[Magician]}) /docommand /mac mage ${mainassist} ${savedparamater} ${savedparamatertwo}
/if (${Me.Class.Name.Equal[Necromancer]}) /docommand /mac necro ${mainassist} ${savedparamater} ${savedparamatertwo}
/if (${Me.Class.Name.Equal[Wizard]}) /docommand /mac wiz ${mainassist} ${savedparamater}
/if (${Me.Class.Name.Equal[Enchanter]}) /docommand /mac ench ${mainassist} ${savedparamater}
/if (${Me.Class.Name.Equal[Bard]}) /docommand /mac bard ${mainassist} ${savedparamater}
/if (${Me.Class.Name.Equal[Cleric]}) /docommand /mac cleric ${mainassist} ${savedparamater}
/if (${Me.Class.Name.Equal[Shaman]}) /docommand /mac shaman ${mainassist} ${savedparamater} ${savedparamatertwo}
/if (${Me.Class.Name.Equal[Monk]}) /docommand /mac monk ${mainassist} ${savedparamater}
/if (${Me.Class.Name.Equal[Rogue]}) /docommand /mac rogue ${mainassist} ${savedparamater}
/if (${Me.Class.Name.Equal[Paladin]}) /docommand /mac paladin ${mainassist} ${savedparamater}
/if (${Me.Class.Name.Equal[Ranger]}) /docommand /mac ranger ${mainassist} ${savedparamater}
/if (${Me.Class.Name.Equal[Berserker]}) /docommand /mac berserker ${mainassist} ${savedparamater}
/if (${Me.Class.Name.Equal[Druid]}) /docommand /mac druid ${mainassist} ${savedparamater}
}
/if (${amrezzed} && !${NearestSpawn[1,corpse radius 100 "${Me.Name}"].ID} || ${NearestSpawn[1,corpse radius 100 "${Me.Name}"].ID} && ${Defined[stuffoncorpse]}) {
/if (!${NearestSpawn[2,corpse radius 100 "${Me.Name}"].ID}) {
/if (!${Defined[corpsedone]}) /declare corpsedone int outer 1
/if (!${Defined[abandoncorpse]}) /declare abandoncorpse int outer 1
}
}
/return
Sub lootcorpse
/declare i int local
/declare justaname string local
:lootcorpse
/target ${NearestSpawn[1,corpse radius 100 "${Me.Name}"].CleanName}
/delay 2
/if (${Target.Type.Equal[CORPSE]} && !${Cursor.ID}) {
/delay 1s
/loot
/if (${Window[LootWnd].Open}) {
/for i 1 to 30
:lootitem
/if (${InvSlot[loot31].Item.ID}) {
/echo there is still stuff on my corpse !
/guildsay !! There is still stuff on my corpse !!
/declare stuffoncorpse int outer 1
/declare abandoncorpse int outer 1
}
/if (${InvSlot[loot${i}].Item.ID}) {
/varset justaname (${InvSlot[loot${i}].Item.Name})
/varset justaname ${justaname.Right[-1].Left[-1]}
/nomodkey /itemnotify ${InvSlot[loot${i}]} rightmouseup
/delay 2
/if (!${FindItem[=${justaname}].ID}) {
/echo this fired in rez macro - ${justaname}
/goto :lootitem
}
/next i
}
/nomodkey /notify LootWnd LW_DoneButton leftmouseup
/delay 2
/if (${NearestSpawn[1,corpse radius 100 "${Me.Name}"].ID} && !${stuffoncorpse}) {
/goto :lootcorpse
}
/if (!${NearestSpawn[2,corpse radius 100 "${Me.Name}"].ID}) {
/if (!${Defined[corpsedone]}) /declare corpsedone int outer 1
/if (!${Defined[abandoncorpse]}) /declare abandoncorpse int outer 1
}
}
}
/return
Sub getids(string name)
/declare SpawnID int local
/declare SpawnName string local
/declare i int local
/for i 1 to 4
/varset SpawnID ${NearestSpawn[${i}, pc ${name}].ID}
/varset SpawnName ${NearestSpawn[${i}, pc ${name}]}
/if (${NearestSpawn[${i}, pc ${name}].Name.Equal[${name}]}) /return ${SpawnID}
/next i
/return 0
Sub Event_Follow(Line, FollowTarget, ChatText)
/if (!${Bool[${ChatText}]}) {
/varset FollowTarget ${FollowTarget.Right[-2].Left[-2]}
/call getids "${FollowTarget}"
/if (${Spawn[id ${Macro.Return}].ID} && ${Spawn[id ${Macro.Return}].Distance} < 200) {
/target ID ${Macro.Return}
/delay 2
/if (${Target.Type.Equal[PC]}) {
/varset ammoving 1
/keypress w
/face fast
/stick loose 5
}
}
/return
}
/if (${ChatText.Find[group]}) {
/varset ChatText ${ChatText.Right[-6]}
/call findgroup
/declare i int local
/for i 1 to ${Ini[toolismacro,Values,totalgroups]}
/if (${Macro.Return} == ${ChatText.Arg[${i},,]}) {
/varset FollowTarget ${FollowTarget.Right[-2].Left[-2]}
/call getids "${FollowTarget}"
/if (${Spawn[id ${Macro.Return}].ID} && ${Spawn[id ${Macro.Return}].Distance} < 200) {
/target ID ${Macro.Return}
/delay 2
/if (${Target.Type.Equal[PC]}) {
/varset ammoving 1
/keypress w
/face fast
/stick loose 5
}
}
}
/next i
/return
}
/if (${ChatText.Find[healers]}) {
/if (${Me.Class.HealerType}) {
/varset FollowTarget ${FollowTarget.Right[-2].Left[-2]}
/call getids "${FollowTarget}"
/if (${Spawn[id ${Macro.Return}].ID} && ${Spawn[id ${Macro.Return}].Distance} < 200) {
/target ID ${Macro.Return}
/delay 2
/if (${Target.Type.Equal[PC]}) {
/varset ammoving 1
/keypress w
/face fast
/stick loose 5
}
}
}
/return
}
/if (${ChatText.Find[${Me.Name}]}) {
/declare i int local
/for i 1 to 12
/if (${ChatText.Arg[${i},].Equal[${Me.Name}]}) {
/varset FollowTarget ${FollowTarget.Right[-2].Left[-2]}
/call getids "${FollowTarget}"
/if (${Spawn[id ${Macro.Return}].ID} && ${Spawn[id ${Macro.Return}].Distance} < 200) {
/target ID ${Macro.Return}
/delay 2
/if (${Target.Type.Equal[PC]}) {
/varset ammoving 1
/keypress w
/face fast
/stick loose 5
}
}
}
/next i
/return
}
/return
Sub Event_MakeCamp(Line, ChatText)
/if (${ChatText.Find[group]}) {
/varset ChatText ${ChatText.Right[-6]}
/call findgroup
/if (${Macro.Return.Equal[${ChatText}]}) {
/stick off
/varset ammoving 0
/varset didinvis 0
/varset makecamploc ${Me.Y},${Me.X}
}
/return
}
/stick off
/varset ammoving 0
/varset didinvis 0
/varset makecamploc ${Me.Y},${Me.X}
/return
Sub clickitem(ClickItem, ReplaceSlot)
/if (${ReplaceSlot.Find[inv]}) /declare targetslot string local 100
/if (!${ReplaceSlot.Find[inv]}) /declare targetslot int local ${ReplaceSlot}
/if (!${Defined[ClickItem]}) {
/echo target item not defined - returning
/return
}
/if (!${Defined[ReplaceSlot]}) {
/echo replace slot not defined - inv or slot # plz -returning
/return
}
/if (${Cursor.ID}) {
/guildsay trying to click item but stuff is on my cursor
/return
}
/if (${FindItem[=${ClickItem}].ID} && !${Cursor.ID}) {
/declare castingtime float local ${FindItem[=${ClickItem}].CastTime}
/declare slotnumber int local
/declare packnumber int local
/declare i int local
/declare j int local
/for i 1 to 8
/for j 1 to 10
/if (${InvSlot[Pack${i}].Item.Item[${j}].Name.Equal[${ClickItem}]}) {
/echo found item in bag
/varset packnumber ${i}
/varset slotnumber ${j}
/goto :click
}
/next j
/varset j 0
/next i
/varset i 0
/for i 1 to 8
/if (${InvSlot[${Math.Calc[22 + ${i}]}].Item.Name.Equal[${ClickItem}]}) {
/echo found item in main slot
/varset packnumber ${i}
/varset targetslot pack${packnumber}
/declare invitem int local 1
/goto :click
}
/next i
/varset i 0
:click
/if (!${Window[InventoryWindow].Open}) /keypress i
/if (!${Window[pack${packnumber}].Open} && !${Defined[invitem]}) /nomodkey /itemnotify pack${packnumber} rightmouseup
/delay 2
/if (!${Defined[invitem]}) /nomodkey /itemnotify in pack${packnumber} ${slotnumber} leftmouseup
/if (${Defined[invitem]}) {
/echo using ${ClickItem}
/nomodkey /itemnotify ${InvSlot[${Math.Calc[22 + ${packnumber}]}]} rightmouseup
/delay 2
/if (${castingtime} > 0.50) /delay ${Math.Calc[${castingtime} * 10]}
/keypress i
/deletevar invitem
/return
}
/delay 2
/if (${Cursor.Name.Equal[${ClickItem}]}) {
/echo Using ${ClickItem}
/if (${Defined[targetslot]}) /varset targetslot ${InvSlot[${targetslot}]}
/if (${targetslot} == 100) /varset targetslot pack${packnumber}
/nomodkey /itemnotify ${targetslot} leftmouseup
/delay 2
/nomodkey /itemnotify ${targetslot} rightmouseup
/if (${castingtime} > 0.50) /delay ${Math.Calc[${castingtime} * 10]}
/delay 4
/if (!${ReplaceSlot.Find[inv]}) /nomodkey /itemnotify ${InvSlot[${targetslot}]} leftmouseup
/if (${ReplaceSlot.Find[inv]}) /nomodkey /itemnotify ${InvSlot[${Math.Calc[22 + ${packnumber}]}]} leftmouseup
/delay 4
/if (${Cursor.Name.Equal[${ClickItem}]}) {
/nomodkey /itemnotify pack${packnumber} rightmouseup
/delay 2
/nomodkey /itemnotify in pack${packnumber} ${slotnumber} leftmouseup
/delay 2
/nomodkey /itemnotify pack${packnumber} rightmouseup
/delay 2
}
}
/keypress i
}
/return
Sub handledestroy(TargetItem)
/if (!${Defined[TargetItem]}) {
/echo target item not defined, returning
/return
}
/if (${FindItem[=${TargetItem}].ID} && !${Cursor.ID}) {
/declare slotnumber int local
/declare packnumber int local
/declare i int local
/declare j int local
/for i 1 to 8
/for j 1 to 10
/if (${InvSlot[Pack${i}].Item.Item[${j}].Name.Equal[${TargetItem}]}) {
/echo item is in pack
/varset packnumber ${i}
/varset slotnumber ${j}
/goto :destroy
}
/next j
/varset j 0
/next i
/varset i 0
/for i 1 to 8
/if (${InvSlot[${Math.Calc[22 + ${i}]}].Item.Name.Equal[${TargetItem}]}) {
/echo found item in main slot
/varset packnumber ${i}
/declare invitem int local 1
/goto :destroy
}
/next i
/varset i 0
:destroy
/if (!${Window[InventoryWindow].Open}) /keypress i
/if (!${Window[pack${packnumber}].Open} && !${Defined[invitem]}) /nomodkey /itemnotify pack${packnumber} rightmouseup
/delay 2
/if (!${Defined[invitem]}) /nomodkey /itemnotify in pack${packnumber} ${slotnumber} leftmouseup
/if (${Defined[invitem]}) /nomodkey /itemnotify pack${packnumber} leftmouseup
/delay 2
/if (${Cursor.Name.Equal[${TargetItem}]}) {
/echo destroying ${TargetItem}
/if (${Cursor.Name.Equal[${TargetItem}]}) {
/echo destroying ${Cursor.Name}
/destroy
/if (${Defined[invitem]}) /deletevar invitem
}
}
/if (${Window[pack${packnumber}].Open}) /nomodkey /itemnotify pack${packnumber} rightmouseup
/delay 2
/keypress i
}
/return
Sub Event_Toggle(Line, ChatSender, Targets, action)
/if (!${Bool[${action}]}) /return
/if (${Bool[${Targets}]}) {
/if (${Targets.Arg[1,].Equal[group]}) {
/if (${Targets.Arg[1,].Equal[group]}) {
/declare groupnumber int local
/call findgroup
/varset Targets ${Targets.Right[-6]}
/for groupnumber 1 to ${Ini[toolismacro,Values,totalgroups]}
/if (${Targets.Arg[${groupnumber},,]} == ${Macro.Return}) {
/goto :togglestuff
} else {
/next groupnumber
/return
}
}
}
/if (${Targets.Arg[1,].Equal[healers]}) {
/if (${Me.Class.HealerType}) /goto :togglestuff
/return
}
/if (${Targets.Arg[1,].Equal[casters]}) {
/if (${Me.Class.PureCaster}) /goto :togglestuff
/return
}
/declare name int local
/for name 1 to 12
/if (${Targets.Arg[${name},].Equal[${Me.Name}]}) /goto :togglestuff
/next name
/return
}
:togglestuff
/if (${action.Find[abort]}) {
/keypress forward
/varset didinvis 0
/guildsay !ABORTING!
/return abort
}
/if (${action.Arg[1,].Equal[leash]}) {
/varset action ${action.Right[-6]}
/if (${Bool[${Ini[movement,leash,${action}]}]}) {
/if (!${Defined[leashloc]}) /declare leashloc string outer
/declare i int local
/for i 1 to 10
/if (${Ini[movement,leash,zoneshortnames].Arg[${i},,].Equal[${Zone.ShortName}]}) {
/varset leashloc ${Ini[movement,leash,${action}]}
}
/next i
}
/return
}
/if (${action.Arg[1,].Equal[zoneout]}) {
/varset action ${action.Right[-8]}
/if (${Bool[${Ini[movement,zoneout,${action}]}]}) {
/if (!${Defined[zoneoutloc]}) /declare zoneoutloc string outer
/declare i int local
/for i 1 to 10
/if (${Ini[movement,zoneout,zoneshortnames].Arg[${i},,].Equal[${Zone.ShortName}]}) {
/if (!${Defined[zoneoutcommand]}) /declare zoneoutcommand string outer empty
/if (${Bool[${Ini[movement,zoneout,${action}command]}]}) /varset zoneoutcommand ${Ini[movement,zoneout,${action}command]}
/varset zoneoutloc ${Ini[movement,zoneout,${action}]}
/call gotoloc "${zoneoutloc}" "${zoneoutcommand}"
/return
}
/next i
}
/return
}
/if (${action.Arg[1,].Equal[leashoff]}) {
/if (${Defined[leashloc]}) /deletevar leashloc
/return
}
/if (${action.Arg[1,].Equal[tank]}) {
/if (${action.Arg[1,].Equal[tank]}) /varset action ${action.Right[-5]}
/varset mainassist ${action}
/return
}
/if (${action.Find[/mac]}) {
/varset action ${action.Right[-5]}
/if (${action.Arg[1,].Equal[start]}) {
/varset action ${action.Right[-6]}
/if (${Me.Level} < 60) /docommand /mac pl ${action} ${savedparamater}
/if (${Me.Class.Name.Equal[Beastlord]}) /docommand /mac beast ${action} ${savedparamater}
/if (${Me.Class.Name.Find[Shadow]}) /docommand /mac sk ${action} ${savedparamater}
/if (${Me.Class.Name.Equal[Magician]}) /docommand /mac mage ${action} ${savedparamater}
/if (${Me.Class.Name.Equal[Necromancer]}) /docommand /mac necro ${action} ${savedparamater}
/if (${Me.Class.Name.Equal[Wizard]}) /docommand /mac wiz ${action} ${savedparamater}
/if (${Me.Class.Name.Equal[Enchanter]}) /docommand /mac ench ${action} ${savedparamater}
/if (${Me.Class.Name.Equal[Bard]}) /docommand /mac bard ${action} ${savedparamater}
/if (${Me.Class.Name.Equal[Cleric]}) /docommand /mac cleric ${action} ${savedparamater}
/if (${Me.Class.Name.Equal[Shaman]}) /docommand /mac shaman ${action} ${savedparamater}
/if (${Me.Class.Name.Equal[Monk]}) /docommand /mac monk ${action} ${savedparamater}
/if (${Me.Class.Name.Equal[Rogue]}) /docommand /mac rogue ${action} ${savedparamater}
/if (${Me.Class.Name.Equal[Paladin]}) /docommand /mac paladin ${action} ${savedparamater}
/if (${Me.Class.Name.Equal[Ranger]}) /docommand /mac ranger ${action} ${savedparamater}
/if (${Me.Class.Name.Equal[Berserker]}) /docommand /mac berserker ${action} ${savedparamater}
/if (${Me.Class.Name.Equal[Druid]}) /docommand /mac druid ${action} ${savedparamater}
}
/declare i int local
/for i 1 to 15
/if (${Ini[toolismacro,Values,macros].Arg[${i},,].Equal[${action.Arg[1,]}]}) {
/docommand /mac ${action}
}
/next i
/varset i 0
/for i 1 to 10
/if (${Ini[toolismacro,Values,othermacros].Arg[${i},,].Equal[${action.Arg[1,]}]}) {
/docommand /mac ${action}
}
/next i
/echo Macro not found
/return
}
/if (${action.Find[mod rod]}) {
/if (${Cursor.ID}) {
/guildsay ITEM ON CURSOR - MOD RODS COMING
/return
}
/if (${Me.FreeInventory} < 1 && !${FindItem[=Rod of Mystical Transvergence].ID}) {
/guildsay NO ROOM IN BAGS - MOD RODS COMING
/return
}
/if (${FindItem[=Rod of Mystical Transvergence].ID} && ${FindItem[=Rod of Mystical Transvergence].Charges} < 3) /call handledestroy "Rod of Mystical Transvergence"
/return
}
/if (${action.Arg[1,].Equal[rez]}) {
/varset action ${action.Right[-4]}
/if (${Me.Gem["Reviviscence"]}) {
/if (!${Me.SpellReady["Reviviscence"]}) {
/guildsay rez not up yet, returning
/return
}
/target ${action}'s corpse
/delay 2
/call cast "Reviviscence" 1s
/if (${Macro.Return.Equal["CAST_SUCCESS"]}) /guildsay ${Target} rezzed!
}
/return
}
/if (${action.Find[consent]}) {
/varset action ${action.Right[-8]}
/consent ${action}
/return
}
/if (${action.Find[anon]}) {
/docommand /a
/return
}
/if (${action.Find[camp]}) {
/if (${Me.Trader}) /return
/if (${action.Find[desktop]}) {
/camp desktop
:action
/doevents toggle
/if (${Macro.Return.Equal[cancel]}) /return
/delay 2
/goto :action
/return
}
/camp
:action
/doevents toggle
/if (${Macro.Return.Equal[cancel]}) /return
/delay 2
/goto :action
/return
}
/if (${action.Find[cancel]}) {
/return cancel
}
/if (${action.Find[/ex]}) {
/if (${Me.Trader}) /return
/docommand /exit
}
/if (${action.Find[pagedown]}) {
/keypress Page_Down hold
/delay 1s
/keypress Page_Down
/return
}
/if (${action.Find[throne]}) {
/aa act Throne of Heroes
/return
}
/if (${action.Find[infusion]}) {
/aa act Infusion of the Faithful
/return
}
/if (${action.Find[lesson]}) {
/aa act Lesson of the Devoted
/return
}
/if (${action.Find[intensity]}) {
/aa act Intensity of the Resolute
/return
}
/if (${action.Find[expedient]} || ${action.Find[expediant]}) {
/aa act Expedient Recovery
/varset amrezzed 1
/return
}
/return
Sub page(direction, duration)
/if (${direction.Find[down]}) {
/keypress Page_Down hold
/delay ${duration}
/keypress Page_Down
}
/if (${direction.Find[up]}) {
/keypress Page_Up hold
/delay ${duration}
/keypress Page_Up
}
/return
Sub returntocamp
/if (${Bool[${makecamploc}]}) {
/call gotoloc "${makecamploc}"
/if (${Macro.Return} == 1) {
/if (${Me.Heading.Degrees} > 179) /face fast heading ${Math.Calc[${Me.Heading.Degrees} - 180]}
/if (${Me.Heading.Degrees} < 180) /face fast heading ${Math.Calc[${Me.Heading.Degrees} + 180]}
}
}
/return
Sub gotoloc(loc, command)
/declare locfrom string local
/declare zoneshortname string local ${Zone.ShortName}
/if (!${Bool[${loc}]}) /varset locfrom leashloc
/if (${Bool[${loc}]}) /varset locfrom loc
/declare nextlocationy string local ${${locfrom}.Arg[1,,]}
/declare nextlocationx string local ${${locfrom}.Arg[2,,]}
/declare nextlocationyhigh string local ${Math.Calc[${${locfrom}.Arg[1,,]} + 5]}
/declare nextlocationylow string local ${Math.Calc[${${locfrom}.Arg[1,,]} - 5]}
/declare nextlocationxhigh string local ${Math.Calc[${${locfrom}.Arg[2,,]} + 5]}
/declare nextlocationxlow string local ${Math.Calc[${${locfrom}.Arg[2,,]} - 5]}
/if (${nextlocationy.NotEqual[NULL]} && ${Me.Y} <= ${nextlocationyhigh} && ${Me.Y} >= ${nextlocationylow} && ${Me.X} <= ${nextlocationxhigh} && ${Me.X} >= ${nextlocationxlow}) {
/if (${command.NotEqual[empty]}) /call ${command}
/return
}
:travel
/keypress forward hold
/if (${nextlocationy.NotEqual[NULL]} && ${Me.Y} <= ${nextlocationyhigh} && ${Me.Y} >= ${nextlocationylow} && ${Me.X} <= ${nextlocationxhigh} && ${Me.X} >= ${nextlocationxlow}) {
/keypress forward
/if (!${Me.Class.PureCaster}) /varset didstick 0
/if (${command.NotEqual[empty]}) /call ${command}
/return 1
}
/if (${nextlocationy.NotEqual[NULL]}) {
/if (${Me.Y} <= ${nextlocationylow} || ${Me.X} <= ${nextlocationxlow} || ${Me.Y} >= ${nextlocationyhigh} || ${Me.X} >= ${nextlocationxhigh}) {
/face nolook fast loc ${nextlocationy},${nextlocationx}
}
}
/if (${zoneshortname.NotEqual[${Zone.ShortName}]}) {
/if (!${InvSlot[17].Item.ID}) {
/if (!${InvSlot[13].Item.ID} && !${Defined[amnaked]}) {
/guildsay - i died during movement -
/declare amnaked int outer 100
/keypress forward
/varset makecamploc ${Me.Y},${Me.X}
/return
}
}
}
/if (${zoneshortname.NotEqual[${Zone.ShortName}]}) {
/if (${InvSlot[17].Item.ID} || ${amnaked} == 100) {
/if (${InvSlot[13].Item.ID} && !${Defined[amnaked]} || !${InvSlot[13].Item.ID} && ${amnaked} == 100) {
/echo ~~ ${Zone.Name} ~~
/keypress forward
/deletevar zoneoutloc
/varset makecamploc ${Me.Y},${Me.X}
/return
}
}
/return
}
/delay 1
/goto :travel
/return
Sub zonedoor
/keypress forward
:doorloop
/keypress u
/delay 2
/keypress u
/delay 1s
/keypress u
/delay 2
/call viewing
/if (${zoneshortname.Equal[${Zone.ShortName}]}) /goto :doorloop
/return
Sub door
/keypress u
/if (!${Me.Moving}) {
/if (${Bool[${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}loc[${j}]door]}]}) {
/doortarget ${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}loc[${j}]door]}]}
/face door
/keypress u
}
}
/return
Sub viewing
/declare variable string local page_down
:viewing
/if (${zoneshortname.Equal[${Zone.ShortName}]}) {
/keypress ${variable} hold
/delay 2
/keypress ${variable}
/keypress u
/if (${zoneshortname.Equal[${Zone.ShortName}]}) {
/keypress ${variable} hold
/delay 4
/keypress ${variable}
/keypress u
/if (${zoneshortname.Equal[${Zone.ShortName}]}) {
/keypress ${variable} hold
/delay 4
/keypress ${variable}
/keypress u
/if (${variable.Equal[page_down]}) {
/varset variable page_up
/goto :viewing
}
/if (${variable.Equal[page_up]}) {
/varset variable page_down
/goto :viewing
}
}
}
}
/return
Sub findgroup
/declare totalgroups int local
/declare i int local
/declare j int local
/varset totalgroups ${Ini[toolismacro,Values,totalgroups]}
/for i 1 to ${totalgroups}
/for j 1 to 6
/if (${Ini[toolismacro,Group${i},member${j}].Equal[${Me.Name}]}) {
/return ${i}
}
/next j
/next i
/echo GROUP NOT FOUND ---- returning +1
/return ${Math.Calc[${totalgroups} + 1]}
Sub groupcheck
/declare i int local
/declare grpcheck int local 0
:checkgroup
/for i 0 to ${Group}
/if (${Group.Member[${i}].Distance} < 120 && ${Group.Member[${i}].ID}) /varset grpcheck ${Math.Calc[${grpcheck} + 1]}
/next i
/if (${grpcheck} == ${Group.GroupSize}) {
/delay 1s
/return 1
} else {
/varset grpcheck 0
/delay 2
/goto :checkgroup
}
/return
Sub Event_Movement(Line, SenderPerson, targetperson, TargetZone)
/if (${Bool[${targetperson}]}) {
/declare name int local
/declare force int local
/for force 1 to 10
/if (${targetperson.Arg[${force},].Equal[force]}) {
/declare forcemove bool local TRUE
}
/if (${targetperson.Arg[1,].Equal[force]} && !${Bool[${targetperson.Arg[2,]}]}) /goto :beginning
/next force
/if (${targetperson.Arg[1,].Equal[group]}) {
/if (${targetperson.Arg[1,].Equal[group]}) {
/declare groupnumber int local
/call findgroup
/varset targetperson ${targetperson.Right[-6]}
/if (${targetperson.Find[force]}) /varset targetperson ${targetperson.Left[-6]}
/for groupnumber 1 to ${Ini[toolismacro,Values,totalgroups]}
/if (${targetperson.Arg[${groupnumber},,]} == ${Macro.Return}) {
/goto :beginning
} else {
/next groupnumber
/return
}
}
}
/for name 1 to 10
/if (${targetperson.Arg[${name},].Equal[${Me.Name}]}) /goto :beginning
/next name
/return
}
:beginning
/if (!${Bool[${Ini[movement,${TargetZone},zoneshortnames].Arg[1,,]}]}) {
/echo Incorrect Destination
/return
}
/declare zoneshortname string local ${Zone.ShortName}
/declare savedtargetzone string local ${TargetZone}
/declare startlocation string local 0
/declare tempheading float local 0
/declare nextlocationx string local NULL
/declare nextlocationy string local NULL
/declare nextlocationxhigh string local
/declare nextlocationxlow string local
/declare nextlocationyhigh string local
/declare nextlocationylow string local
/declare i int local
/declare j int local
/declare junctions int local
/declare savedvariable int local 0
/if (${Me.Class.Name.NotEqual[Bard]}) /declare didinvis int local 0
/declare grpnumber int local 0
/echo - Starting -
/for junctions 1 to 12
/echo ${junctions} junctions
/for i 1 to 10
/echo ${i} i variable at i loop
:start
/if (${Bool[${Ini[movement,${TargetZone},junctions].Arg[${junctions},,]}]}) {
/echo ${Ini[movement,${TargetZone},junctions].Arg[${junctions},,]}
/varset TargetZone ${Ini[movement,${TargetZone},junctions].Arg[${junctions},,]}
/echo changed targetzone to ${TargetZone}
/echo ${Ini[movement,${TargetZone},junctions].Arg[${junctions},,]} targetzones junctions
/echo ${i} i variable in bool junctions
/varset i 1
}
/if (!${Bool[${Ini[movement,${savedtargetzone},junctions].Arg[${junctions},,]}]} && ${TargetZone.NotEqual[${savedtargetzone}]}) {
/varset TargetZone ${savedtargetzone}
/echo changed targetzone to savedtargetzone
/echo ${junctions} junctions
/echo ${i} i variable in not bool junctions
/echo ${j} j
/varset i 1
}
/if (${Bool[${Ini[movement,${savedtargetzone},junctions].Arg[${junctions},,]}]} && ${TargetZone.NotEqual[${Ini[movement,${savedtargetzone},junctions].Arg[${junctions},,]}]}) {
/varset TargetZone ${Ini[movement,${savedtargetzone},junctions].Arg[${junctions},,]}
/echo changed targetzone to savedtargetzone junction arg junctions
/echo ${junctions}
/echo ${i} i variable in bool junctions arg junctions
/echo ${j} j
/varset i 1
}
/if (${savedvariable} != 1) {
/if (${Bool[${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,].Equal[${Zone.ShortName}]}]} && ${startlocation.Equal[0]}) {
/echo found starting zone
/varset startlocation ${TargetZone},${i},
/echo ${startlocation}
/echo ${i} i variable
/echo ${j} j variable
}
/if (${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,].NotEqual[${Zone.ShortName}]} && ${startlocation.NotEqual[0]}) {
/echo found end of zones
/varset junctions 1
/varset savedvariable 1
/varset TargetZone ${startlocation.Arg[1,,]}
/varset i ${startlocation.Arg[2,,]}
}
}
/if (${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}].Arg[${j},,].Equal[finish]} && ${zoneshortname.Equal[${Zone.ShortName}]}) {
/keypress w
/varset didinvis 0
/echo i have reached my destination
/guildsay im at target destination
/return
}
/if (${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,].Equal[${Zone.ShortName}]}) {
/if (!${forcemove}) {
/if (${Me.Class.Name.Equal[Bard]} && !${didinvis}) {
/call groupcheck
}
/if (${Me.Class.Name.NotEqual[Bard]} && !${didinvis}) {
/call findgroup
/varset grpnumber ${Macro.Return}
:waitforinvis
/doevents Toggle
/if (${Macro.Return.Equal[abort]}) /return
/if (${Ini[toolismacro,Movement,group${grpnumber}ready].Equal[ready]}) {
/varset didinvis 1
}
/if (${Ini[toolismacro,Movement,group${grpnumber}ready].Equal[empty]}) {
/delay 2
/echo waiting for invis
/goto :waitforinvis
}
}
}
/if (${Me.Class.Name.Equal[Bard]} && !${didinvis}) {
/squelch /twist off
/varset didinvis 1
/varset dotwist 1
/if (!${Me.Gem[${travelsong}]} && !${Cursor.ID}) {
/guildsay sec memming travel song
/memspell ${travelsonggem} ${travelsong}
/delay 2s
}
/squelch /twist ${travelsonggem}
/delay 2s
/if (!${Me.Casting.ID}) {
/squelch /twist ${speedsonggem}
/delay 2s
/if (${Me.Casting.ID}) /delay 1s
/if (!${Me.Gem[${invissong}]} && !${Cursor.ID}) {
/guildsay sec memming invis song
/memspell ${travelsonggem} ${invissong}
/delay 2s
}
/squelch /twist ${travelsonggem}
/delay 3s
}
/if (${Me.Casting.ID}) /delay 2s
/call findgroup
/varset grpnumber ${Macro.Return}
/ini "toolismacro" "Movement" "group${grpnumber}ready" "ready"
/delay 6
/ini "toolismacro" "Movement" "group${grpnumber}ready" "empty"
}
/echo ${j} j (before for loop)
/for j 1 to 30
/echo ${j} j
/if (${Bool[${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}loc${j}]}]} && ${savedvariable} != 1) {
/varset savedvariable ${j}
/varset nextlocationy ${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}loc${j}].Arg[1,,]}
/varset nextlocationx ${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}loc${j}].Arg[2,,]}
/varset nextlocationyhigh ${Math.Calc[${nextlocationy} + 75]}
/varset nextlocationylow ${Math.Calc[${nextlocationy} - 75]}
/varset nextlocationxhigh ${Math.Calc[${nextlocationx} + 75]}
/varset nextlocationxlow ${Math.Calc[${nextlocationx} - 75]}
/if (${Me.Y} <= ${nextlocationyhigh} && ${Me.Y} >= ${nextlocationylow} && ${Me.X} <= ${nextlocationxhigh} && ${Me.X} >= ${nextlocationxlow}) {
/echo found correct loc
/varset savedvariable 1
/goto :end
}
/varset nextlocationyhigh ${Math.Calc[${nextlocationy} + 175]}
/varset nextlocationylow ${Math.Calc[${nextlocationy} - 175]}
/varset nextlocationxhigh ${Math.Calc[${nextlocationx} + 175]}
/varset nextlocationxlow ${Math.Calc[${nextlocationx} - 175]}
/if (${Me.Y} <= ${nextlocationyhigh} && ${Me.Y} >= ${nextlocationylow} && ${Me.X} <= ${nextlocationxhigh} && ${Me.X} >= ${nextlocationxlow}) {
/echo found nearest loc
/varset savedvariable 1
/goto :nearestlocloop
}
/echo this didnt work
/varset nextlocationy NULL
/if (${Bool[${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}loc${savedvariable}].Arg[1,,]}]}) {
/varset savedvariable ${Math.Calc[${j} + 1]}
/varset nextlocationy NULL
/if (${Bool[${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}loc${savedvariable}].Arg[1,,]}]}) {
/echo next j
/next j
}
/if (${Bool[${Ini[movement,${TargetZone},zoneshortnames].Arg[${Math.Calc[${i} + 1]},,]}]}) {
/varset j 0
/next i
}
/if (${Bool[${Ini[movement,${savedtargetzone},junctions].Arg[${junctions},,]}]}) {
/varset j 0
/echo next junctions instead of j
/varset TargetZone ${savedtargetzone}
/next junctions
}
}
/echo this fired
/varset savedvariable ${Math.Calc[${j} + 1]}
/delay 2
/next i
}
/if (!${Bool[${Ini[movement,${savedtargetzone},junctions].Arg[${junctions},,]}]} && ${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}].Arg[${j},,].Equal[junction]} || ${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}].Arg[${j},,].Equal[finish]}) {
/keypress w
/varset didinvis 0
/echo i have reached my destination
/guildsay im at target destination
/return
}
:end
/if (${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}].Arg[${j},,].Equal[junction]}) {
/keypress forward
/varset j 1
/varset TargetZone ${savedtargetzone}
/if (!${Bool[${Ini[movement,${savedtargetzone},junctions].Arg[${junctions},,]}]}) {
/varset TargetZone ${startlocation.Arg[1,,]}
/varset i ${startlocation.Arg[2,,]}
}
/if (${Bool[${Ini[movement,${TargetZone},junctions].Arg[${junctions},,]}]}) {
/echo changing junctions +1 from hitting a junction
/next junctions
}
}
/if (${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}].Arg[${j},,].Equal[zonedoor]} && ${nextlocationy.NotEqual[NULL]}) {
/keypress forward
/varset j 1
:doorloop
/keypress u
/delay 2
/keypress u
/delay 1s
/if (${Bool[${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}zonedoor]}]}) {
/face nolook loc ${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}zonedoor]}
/keypress u
}
/if (${zoneshortname.Equal[${Zone.ShortName}]}) /goto :doorloop
/varset nextlocationy NULL
}
/if (${zoneshortname.Equal[${Zone.ShortName}]}) {
/varset tempheading ${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}].Arg[${j},,]})
/if (${Math.Calc[(360 - ${tempheading}) + 45]} > 360 && ${Me.Heading.Degrees} <= ${Math.Calc[(360 - ${tempheading}) - 45]} || ${Math.Calc[(360 - ${tempheading}) + 45]} > 360 && ${Me.Heading.Degrees} <= ${Math.Calc[45 - (360 - ${tempheading})]}) {
/goto :headingdone
}
/if (${Math.Calc[(360 - ${tempheading}) - 45]} < 0 && ${Me.Heading.Degrees} <= ${Math.Calc[(360 - ${tempheading}) + 45]} || ${Math.Calc[(360 - ${tempheading}) - 45]} < 0 && ${Me.Heading.Degrees} <= ${Math.Calc[45 - (360 - ${tempheading})]}) {
/goto :headingdone
}
/if (${Math.Calc[${Me.Heading.Degrees}]} >= ${Math.Calc[360 - ${tempheading}]} && ${Math.Calc[${Me.Heading.Degrees}]} <= ${Math.Calc[(360 - ${tempheading}) + 45]} || ${Math.Calc[${Me.Heading.Degrees}]} >= ${Math.Calc[(360 - ${tempheading}) - 45]} && ${Math.Calc[${Me.Heading.Degrees}]} <= ${Math.Calc[360 - ${tempheading}]}) {
/goto :headingdone
}
/if (${tempheading} <= 180) {
/echo Tempheading < 180
/if (${Me.Heading.Degrees} >= ${Math.Calc[(360 - ${tempheading}) - 180]} && ${Me.Heading.Degrees} <= ${Math.Calc[360 - ${tempheading}]}) {
/varset tempheading ${Math.Calc[${tempheading} + 45]}
/goto :heading
} else {
/if (${tempheading} <= 45) {
/varset tempheading ${Math.Calc[315 + ${tempheading}]}
/goto :heading
}
/varset tempheading ${Math.Calc[${tempheading} - 45]}
/goto :heading
}
}
/if (${tempheading} > 180) {
/echo Tempheading > 180
/if (${Me.Heading.Degrees} <= ${Math.Calc[(360 - ${tempheading}) + 180]} && ${Me.Heading.Degrees} >= ${Math.Calc[360 - ${tempheading}]}) {
/varset tempheading ${Math.Calc[${tempheading} - 45]}
/goto :heading
} else {
/if (${tempheading} <= 315) {
/varset tempheading ${Math.Calc[${tempheading} + 45]}
/goto :heading
}
/varset tempheading ${Math.Calc[(360 - ${tempheading}) - 45]}
/goto :heading
}
}
:heading
/face heading ${tempheading}
:headingdone
/face fast heading ${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}].Arg[${j},,]}
}
/varset nextlocationy NULL
/varset nextlocationx NULL
/if (${Bool[${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}loc${j}]}]}) {
/varset nextlocationy ${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}loc${j}].Arg[1,,]}
/varset nextlocationx ${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}loc${j}].Arg[2,,]}
}
:nearestlocloop
/doevents Toggle
/if (${Macro.Return.Equal[abort]}) /return
/varset nextlocationyhigh ${Math.Calc[${nextlocationy} + 5]}
/varset nextlocationylow ${Math.Calc[${nextlocationy} - 5]}
/varset nextlocationxhigh ${Math.Calc[${nextlocationx} + 5]}
/varset nextlocationxlow ${Math.Calc[${nextlocationx} - 5]}
:movementloop
/keypress forward hold
/if (${nextlocationy.NotEqual[NULL]} && ${Me.Y} <= ${nextlocationyhigh} && ${Me.Y} >= ${nextlocationylow} && ${Me.X} <= ${nextlocationxhigh} && ${Me.X} >= ${nextlocationxlow}) {
/keypress forward
/delay 2
/if (${Bool[${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}loc${j}command]}]}) /call ${Ini[movement,${TargetZone},${Ini[movement,${TargetZone},zoneshortnames].Arg[${i},,]}loc${j}command]}
/next j
}
/if (${nextlocationy.NotEqual[NULL]}) {
/if (${Me.Y} <= ${nextlocationylow} || ${Me.X} <= ${nextlocationxlow} || ${Me.Y} >= ${nextlocationyhigh} || ${Me.X} >= ${nextlocationxhigh}) {
/face nolook fast loc ${nextlocationy},${nextlocationx}
}
}
/if (${zoneshortname.NotEqual[${Zone.ShortName}]}) {
/if (!${InvSlot[17].Item.ID}) {
/if (!${InvSlot[13].Item.ID} && !${Defined[amnaked]}) {
/guildsay - i died during movement -
/declare amnaked int outer 100
/return
}
}
/echo -- ${Zone.Name} --
/varset nextlocationy NULL
/keypress forward
/varset zoneshortname ${Zone.ShortName}
/varset didinvis 0
/varset j 1
/varset i 0
/delay 2
/next i
}
/delay 1
/goto :movementloop
}
/delay 2
/if (${Bool[${Ini[movement,${TargetZone},zoneshortnames].Arg[${Math.Calc[${i} + 1]},,]}]}) /next i
/varset i 0
/next junctions
/varset junctions 1
/varset savedvariable 1
/varset TargetZone ${startlocation.Arg[1,,]}
/varset i ${startlocation.Arg[2,,]}
/echo setting targetzone and zone im in
/next junctions
/echo returning
/return