• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Exp Macro (Mapping Suncrest Ridge)

oortcloud

Member
Joined
May 5, 2007
RedCents
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

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
 
Good work again. Thanks for contributing these two great Experience macros. RedCents to you. (When I spread around more reputation.
 
Can someone re-work this using a 70 warrior? i suck with macros, but i can get insta invis potions and i have 100k horse
 
I'm programming-challenged, can anyone re-work this for a 75 wizard and/or 70 cleric? I have the 100k horse, can cast improved invisibility on myself (with the wizard) or use insta-invis pots.
I'm /drool'ing over this one...
 
EDIT: NM i changed it so it didnt get the call thing insted it just /cast 2 (Travel Song) and it works now.. Wierd... well well guess im not supose to understand all =)

Now i just cant get a new one
 
It would help if you provided us with information on what changes you made :)
 
Sweet I am gonna give this a try with my bard later today.

Redcents to ya.
 
@Siddin
So i could use MQ2reward and replace:

Rich (BB code):
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

With:

Rich (BB code):
Sub FinishTask
	|### move off boat
	/look 0
	/call MoveTo -185 -570
	/call MoveTo -187 -422
	
	/call GotoBryndenSnow
	
	/hail

	/reward 1

/return

IS that right?
 
Rich (BB code):
Sub FinishTask
 	|### move off boat
 	/look 0
 	/call MoveTo -185 -570
 	/call MoveTo -187 -422
 	
 	/call GotoBryndenSnow
 	
 	/hail
 
 	/reward 1

|###  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
is what i'd use
 
If you want to make an ecumenical macro just make one that uses the rogue shroud.
 
This is a nice macro you have going here. However not everyone has the lute or greaves. You may consider adding song option / capability.


*EDIT* Disregard above I see you have this in your other macro post *EDIT*
 
Last edited:
Ok so I swapped out normal selos for SSoT, yet after getting task he continues to stand in the same spot. However if I use normal selos he'll move on to the boat ramp and wait, get on, etc..

What would be causing the freeze because he's invisible?
 
OK I think I found a work around, however I'm still stumped why it would not allow movement after getting the task. I'll post my findings once it runs successfully a few times.
 
To add to my above post on why I wasn't getting the task. I was trying to use MQ2Mouse unsuccessfully. This was causing me to finish the task but dump it before accepting a reward. Once I switched to MQ2Reward I was able to select reward option 1 and immediately gather another task and get back to mapping. Just an FYI for anyone finding themselves in this situation, check your rewards.

I still don't have a solution for why I was standing still when I would get the task and sing SSoT. Upon invis he wouldn't move. So if anyone has an idea, lets hear it.
 
Exp Macro (Mapping Suncrest Ridge)

Users who are viewing this thread

Back
Top
Cart