oortcloud
Member
- Joined
- May 5, 2007
- RedCents
- 0¢
This one doesn't generate a huge amount of experience but in general is very safe and low key. As a bard it takes about 10 minutes to finish and generates 13-14% AA and 75pp at lvl 75. That works out to around 0.8 AA per hour. Casters like Druids can do it much faster because they can port in and gate out. I've seen a cleric do it many times, he takes the boat over then gates back. The boats cycle every 5 minutes approx.
The task giver is Brynden Snow in The Barren Coast, but the task takes place on an island in The Buried Sea. As a bard the only way I can do this is to take the boat.
You need invis and levitate for this (and preferably something to make you run fast). Other than that, it requires nothing. It's customized for a bard however, so if you're a different class you'll need to make a couple of changes.
Note that there are some mobs on the island that see invis but you wont get close enough with this macro, so don't worry about them.
Also, take a look at another macro I submitted for an explanation on how to automate the reward selection: http://www.redguides.com/community/showthread.php?t=17273
You will also need this include file. Its holds a lot of common functions I use in many of my macros. Save it as 'oc-utilities.inc' and place it in the same folder as your macros.
The task giver is Brynden Snow in The Barren Coast, but the task takes place on an island in The Buried Sea. As a bard the only way I can do this is to take the boat.
You need invis and levitate for this (and preferably something to make you run fast). Other than that, it requires nothing. It's customized for a bard however, so if you're a different class you'll need to make a couple of changes.
Note that there are some mobs on the island that see invis but you wont get close enough with this macro, so don't worry about them.
Also, take a look at another macro I submitted for an explanation on how to automate the reward selection: http://www.redguides.com/community/showthread.php?t=17273
Rich (BB code):
#turbo
#include oc-utilities.inc
#Event Reward "#*#You have successfully been granted your reward for: Mapping Suncrest Ridge#*#"
Sub Main
|### Change this to true of you have the /mmouse command and wish to automatically accept
|### the reward. You'll also need to properly set the 3 sets of X, Y coordinates below.
/declare do_reward bool outer false
|### The following 3 sets of coordinates are actually offsets from the location of
|### the "Select a Reward" window.
|### X, Y coordinate 1
|### This is where it needs to click "Option 4".
/declare xloc_1 int outer 30
/declare yloc_1 int outer 110
|### X, Y coordinate 2
|### This is where it needs to click "75p, 0g, 0s, 0c".
/declare xloc_2 int outer 230
/declare yloc_2 int outer 140
|### X, Y coordinate 3
|### This is where it needs to click the "Select Option" button.
/declare xloc_3 int outer 520
/declare yloc_3 int outer 540
|### no need to change any of these variables
/declare laps int outer 0
/declare aas float outer 0
/declare aas_hr float outer 0
/declare start_aaexp float outer ${Me.PctAAExp}
/declare start_aas int outer ${Me.AAPointsTotal}
/declare got_reward bool outer false
/declare mouseX int outer 0
/declare mouseY int outer 0
/moveto 20
:Loop
/call GetTask
/call GotoTheBuriedSea
/call GotoSuncrest
/call MapIsland
/call GotoBarrenCoast
/call FinishTask
/goto :Loop
/return
Sub GetTask
/call GotoBryndenSnow
/say obtaining
:Loop_1
/delay 1
/if (!${Window[TaskSelectWnd].Open}) /goto :Loop_1
/notify TaskSelectWnd TaskList leftmouseup
/notify TaskSelectWnd TaskList listselect ${Window[TaskSelectWnd].Child[TaskList].List[=Mapping Suncrest Ridge]}
/notify TaskSelectWnd AcceptButton leftmouseup
:Loop_2
/delay 1
/if (!${Window[TaskWnd].Open}) /goto :Loop_2
/squelch /windowstate TaskWnd close
|### selos and fade
/call PrepareRun
/return
Sub GotoTheBuriedSea
|### move to dock
/call MoveTo -187 -332
/call MoveTo -184 -480
|### sit and wait for boat
/delay 10
/sit
/call WaitForBoat -185 -548
|### get on boat and sit
/call MoveTo -185 -570
/call MoveTo -125 -565
/delay 10
/sit
|### wait for zone and dock arrival
:Loop_1
/delay 10
/if (${Zone.Name.NotEqual[the buried sea]}) /goto :Loop_1
/call WaitForBoat 147 2827
/return
Sub GotoSuncrest
|### move off boat
/look 0
/call MoveTo 147 2817
/call MoveTo 20 2980
|### selos and fade
/call PrepareRun
|### run south of katta island
/call MoveTo -1330 350
/return
Sub MapIsland
/call MoveTo -1330 -2437
/call MoveTo -1940 -2575
/call MoveTo -1880 -4130
/call MoveTo -1225 -3594
/call MoveTo -786 -2861
/call MoveTo 100 -3050
/return
Sub GotoBarrenCoast
|### run back to dock
/call MoveTo -1330 350
/call MoveTo 15 2981
/call MoveTo 100 2883
/alt activate 212
|### sit and wait for boat
/delay 10
/sit
/call WaitForBoat 147 2827
|### get on boat and sit
/call MoveTo 147 2817
/call MoveTo 210 2855
/delay 10
/sit
|### wait for zone and arrival at dock
:Loop_1
/delay 10
/if (${Zone.Name.NotEqual[barren coast]}) /goto :Loop_1
/call WaitForBoat -185 -548
/return
Sub FinishTask
|### move off boat
/look 0
/call MoveTo -185 -570
/call MoveTo -187 -422
/call GotoBryndenSnow
/hail
:Loop_1
/delay 1
/if (!${Window[RewardSelectionWnd].Open}) /goto :Loop_1
/if (${do_reward}) {
/varcalc mouseX ${Window[RewardSelectionWnd].X} + ${xloc_1} + 1920
/varcalc mouseY ${Window[RewardSelectionWnd].Y} + ${yloc_1}
/mmouseto ${mouseX} ${mouseY}
/click left
/delay 10
/varcalc mouseX ${Window[RewardSelectionWnd].X} + ${xloc_2} + 1920
/varcalc mouseY ${Window[RewardSelectionWnd].Y} + ${yloc_2}
/mmouseto ${mouseX} ${mouseY}
/click left
/delay 10
/varcalc mouseX ${Window[RewardSelectionWnd].X} + ${xloc_3} + 1920
/varcalc mouseY ${Window[RewardSelectionWnd].Y} + ${yloc_3}
/mmouseto ${mouseX} ${mouseY}
/click left
/varset got_reward false
:Loop_2
/delay 10
/doEvents
/if (!${got_reward}) /goto :Loop_2
}
/squelch /windowstate RewardSelectionWnd close
|### print progress
/varcalc aas (((${Me.AAPointsTotal} - ${start_aas}) * 100) + (${Me.PctAAExp} - ${start_aaexp})) / 100
/varcalc aas_hr ${aas} / (${Macro.RunTime} / 3600)
/varcalc laps ${laps} + 1
/echo Laps: ${laps} AA Exp: ${aas} AA Per Hour: ${aas_hr}
/return
Sub GotoBryndenSnow
/target brynden snow
:Loop_1
/delay 10
/if (${Target.CleanName.NotEqual[brynden snow]}) /goto :Loop_1
/face
/squelch /moveto id
:Loop_2
/delay 10
/if (${MoveTo.Moving}) /goto :Loop_2
/return
Sub WaitForBoat(int yloc, int xloc)
:Loop
/delay 10
/if (${Target.CleanName.NotEqual[isabeau]} || ${Target.Speed} != 0 || ${Target.Y.Int} != ${yloc} || ${Target.X.Int} != ${xloc}) {
/squelch /target isabeau
/goto :Loop
}
/return
Sub PrepareRun
/call StopTwistWait
/call CheckSwapCastWait "kelp-string lute of tide rituals" offhand 20
/equipset run
:Loop_1
/delay 1
/if (${InvSlot[legs].Item.Name.NotEqual[composers greaves]}) /goto :Loop_1
/cast item "composers greaves"
:Loop_2
/delay 1
/if (${Me.Casting.ID} != ${FindItem[composers greaves].Spell.ID}) /goto :Loop_2
:Loop_3
/delay 1
/if (!${Me.Buff[${FindItem[composers greaves].Spell}].ID}) /goto :Loop_3
/alt activate 212
/return
Sub Event_Reward
/varset got_reward true
/return
You will also need this include file. Its holds a lot of common functions I use in many of my macros. Save it as 'oc-utilities.inc' and place it in the same folder as your macros.
Rich (BB code):
#define DEBUG false
#define CAST_LAG 30
Sub CheckSwapCastWaitSwap(string itemName, string slot, int delay, swapItem)
/if (!${Me.Buff[${FindItem[${itemName}].Spell}].ID}) {
/call SwapCastWait "${itemName}" ${slot} ${delay}
/squelch /exchange "${swapItem}" ${slot}
}
/return
Sub CheckSwapCastWait(string itemName, string slot, int delay)
/if (!${Me.Buff[${FindItem[${itemName}].Spell}].ID}) {
/call SwapCastWait "${itemName}" ${slot} ${delay}
}
/return
Sub SwapCastWait(string itemName, string slot, int delay)
/squelch /exchange "${itemName}" ${slot}
/call CastWait "${itemName}" ${slot}
/return
Sub SwapCast(string itemName, string slot)
/squelch /exchange "${itemName}" ${slot}
/cast item "${itemName}"
/return
Sub CheckCastWait(string itemName, int delay)
/if (!${Me.Buff[${FindItem[${itemName}].Spell}].ID}) {
/call CastWait "${itemName}" ${delay}
}
/return
Sub CastWait(string itemName, int delay)
/declare tmp int local 0
/varcalc tmp ${delay} + CAST_LAG
/cast item "${itemName}"
/delay ${tmp} ${Me.Buff[${FindItem[${itemName}].Spell}].ID}
/return
Sub CastSongWait(string songName, int delay)
/declare tmp int local 0
/varcalc tmp ${delay} + CAST_LAG
/cast "${songName}"
/delay CAST_LAG ${Me.Casting.ID} == ${Spell[${songName}].ID}
/delay ${tmp} ${Me.Casting.ID} != ${Spell[${songName}].ID}
/return
Sub StopTwistWait
/squelch /twist off
:Loop
/delay 1
/if (${Me.Casting.ID} || !${Me.SpellReady[1]}) /goto :Loop
/return
Sub MoveTo(int yLoc, int xLoc)
/squelch /moveto loc ${yLoc} ${xLoc}
:MoveToLoop
/delay 1
/if (${MoveTo.Moving}) /goto :MoveToLoop
/squelch /moveto off
/return


