Sub Main
| Ensure required plugins are loaded...
/if (!${Plugin[mq2mmowarp].Name.Equal[mq2mmowarp]}) /plugin mq2mmowarp
/if (!${Plugin[mq2piggyzone].Name.Equal[mq2piggyzone]}) /plugin mq2piggyzone
/if (!${Plugin[mq2stealth].Name.Equal[mq2stealth]}) /plugin mq2stealth
/if (!${Plugin[mq2reachit].Name.Equal[mq2reachit]}) /plugin mq2reachit
/call Paranoia
/squelch /warp loc -2042.28 -2217.93 186.19
/delay 2s
/stealth on
/call GetTarget "where the red flower grows"
/call GetTarget "moss-covered rock"
/call GetTarget "pile of dusty rocks"
/call GetTarget "ancient rock"
/stealth Return
/delay 1s
/stealth off
/call Paranoia
/zone stonehive
/call Zoning
/call GetTarget "rustling banebloom"
/stealth Return
/delay 1s
/stealth off
/call Paranoia
/zone mesa
/call Zoning
/call Paranoia
/warp loc -437.35, 1977.32, 49.86
/delay 3s
/stealth on
/call GetTarget "age-old stones"
/call GetTarget "waving woodblossom"
/call GetTarget "silverspun petals"
/call GetTarget "old tuffein lockbox"
/call GetTarget "storage crate"
/call GetTarget "forgotten bones"
/call GetTarget "algae-covered stone"
/stealth Return
/delay 1s
/stealth off
/call Paranoia
/zone roost
/call Zoning
/call Paranoia
/stealth on
/call GetTarget "feathered fernstem"
/stealth Return
/delay 1s
/stealth off
/call Paranoia
/zone steppes
/call Zoning
/call Paranoia
/warp loc -1416.38, -1883.31, 39.12
/delay 2s
/stealth on
/call GetTarget "a worn jug"
/stealth Return
/delay 1s
/stealth off
/call Paranoia
/zone icefall
/call Zoning
/call Paranoia
/stealth on
/delay 2s
/warp loc -2044.24 -1158.79 29.03
/itemtarget
/gank
/stealth Return
/delay 1s
/stealth off
/call Paranoia
/zone crescent
/call Zoning
/call Paranoia
/warp loc -1603.44 -1511.66 -67.69
/delay 2s
/stealth on
/call GetTarget "discarded bones"
/call GetTarget "pile of bones"
/stealth Return
/delay 1s
/stealth off
/echo Get the book off the table.
/popup Get the book off the table.
/delay 4s
/target Librarian Hemfar
/echo Head for your target and turn items in.
/popup Head for your target and turn items in.
/delay 3s
/echo Thanks for using Macro's by Toppers.
/return
Sub GetTarget(string Wanted)
/declare Timeout timer local 1s
/declare LootTotal int local 0
/declare i int local 0
/call Paranoia
/if (!${Defined[Wanted]}) /goto :End
:Target1
/squelch /target ${Wanted}
/delay 5
/if (!${Target.ID}) /goto :Target1
/faropen
/delay 2s
:Target2
/squelch /target ${Wanted}
/delay 5
/if (!${Target.ID}) /goto :Target2
/squelch /warp Target
/squelch /warp target
/delay 1s
:LootLag
/loot
/varset Timeout ${Timeout.OriginalValue}
:WaitForOpen
/doevents
/delay 1s (${Window[LootWnd].Open} || !${Timeout})
/if (!${Timeout}) /goto :End
/if (!${Window[LootWnd].Open}) /goto :WaitForOpen
/delay 1
/if (${LootTotal} != ${Corpse.Items}) {
/varset LootTotal ${Corpse.Items}
/delay 1s
/goto :LootLag
}
/for i 1 to ${LootTotal}
:LootItem
/delay 2
/itemnotify loot${i} LeftMouseUp
/delay 5 (!${Corpse.Item[${i}].ID})
/if (${Corpse.Item[${i}].ID}) /goto :LootItem
/varset Timeout ${Timeout.OriginalValue}
:Cursor
/delay 1
/if (${Timeout} && ${Cursor.ID}) /goto :Cursor
/if (${Cursor.ID}) /autoinventory
/next i
/if (${Corpse.Items}) /goto :LootLag
/notify LootWnd DoneButton LeftMouseUp
:WaitForClose
/delay 1 (!${Window[LootWnd].Open})
/if (${Window[LootWnd].Open}) /goto :WaitForClose
:End
/return
Sub Paranoia
:Wait
/call SafetyCheck 0
/if (${Macro.Return.NotEqual[OK]}) {
/delay 1s
/goto :Wait
}
/return
Sub Zoning
:Fading
/delay 3s
/squelch /target myself
/If (!${Target.ID}) /goto :Fading
/delay 5s
/squelch /target clear
/return
Sub SafetyCheck(int Radius, int Exclude)
/declare i int local 0
/declare c int local 0
/if (!${Defined[Radius]}) /declare Radius int local -1
/declare SafeSearch string local pc ${If[${Radius} > -1,radius ${Radius} zradius 50,]} notid ${Me.ID}
/if (${Defined[Exclude]}) /varset SafeSearch ${SafeSearch} noalert ${Exclude}
/if (${SpawnCount[${SafeSearch}]} || ${SpawnCount[gm]}) {
/if (${SpawnCount[gm]}) {
/return GM
} else {
/for i 1 to ${SpawnCount[${SafeSearch}]}
/if (${Group.Member[${NearestSpawn[${i}, ${SafeSearch}]}]}) /goto :Continue
/return PC
:Continue
/next i
}
}
/return OK