AFK Provoke macro with automatic emergency recall if hits < 100

Melor Rend

Neophyte
Hello my fellow Bards-to-be.

I needed a macro to train up Provo at the Vesper GY against the Rotting Corpse and Bone Knight. Since I wanted to run it over night and already got attacked by (exceedingly terrible) PKs a few times during the evening, I came up with the idea to build in an automatic emergency recall into the macro in case my hit points drop below 100 at any time.

Disclaimer: this is by no means foolproof! A sufficiently non-bad PK will obviously still be able to kill you very easily but my experience was that most of the PKs that came by the Vesper GY were pretty terrible and expected to be able to kill the AFK provo macro'ers there without them even reacting. It saved me twice during the night and after that I already had Provo to 100 so it did its job for me.


What the macro does:
  1. Check that your hit points are full
  2. If your hit points are full, use a Lute in your backpack by Type, else initiate an emergency recall (see step 8)
  3. Then use Provocation on a Rotting Corpse (or whatever target your like) by Type
  4. Provoke the target onto yourself
  5. Wait for the cooldown of Provocation to finish
  6. While waiting, constantly check that your hit points remain full
  7. If your hit points drop below 100, initiate an emergency recall (see step 8), else continue to wait out the cooldown of Provocation
  8. If emergency recall is required:
  9. Open your Runebook
  10. Select the first entry in the book and recall there (using a charge in the Runebook)
  11. Attempt to recall 2 extra times within 1,5 seconds in case you fizzle the first recall
  12. Once you successfully recall, wait for your hit points to regenerate back to 100
  13. Then wait an extra 3 minutes (just to ensure that the macro doesn't recall you back to your grinding spot while the PK is still close by)
  14. Once your hit points are full again and the 3 minutes are over, open the Runebook and recall back to the Provo grinding spot (6th entry in the book in my case)
  15. Once back at the grinding spot, wait an extra 3 seconds
  16. Now start over at the beginning of the macro again

What you need to make the macro work:

  • A good number of cheap instruments (6 or 7 should be enough)
  • A Runebook with recall-charges loaded into it (the more the better)
  • A safe location in the Runebook at position 1 (I used Brit Bank)
  • A rune to your Provo grinding spot in the Runebook at position 6 (I used a spot right at the fence of Vesper GY, close enough to be able to provoke the Rotting Corpse onto myself without having to move - this allows the macro to resume provocation after you recall back to the grinding spot - some experimentation may be required)
  • Obviously you can change the position of your runes in the Runebook as you see fit. You simply need to re-record the emergency recall part of the macro if you choose to do so (see below for information on what lines need to be changed).

Here's the code of the macro:
(colorful lines need to be adapted to your own character, Runebook and provo-target - see below for more detailed info)

!Loop

// If hit points are full, use Lute + Provo
Assistant.Macros.IfAction|0|1|100
Assistant.Macros.DoubleClickTypeAction|3763|True
Assistant.Macros.UseSkillAction|22
Assistant.Macros.WaitForTargetAction|30
Assistant.Macros.TargetTypeAction|True|155
Assistant.Macros.WaitForTargetAction|3
Assistant.Macros.AbsoluteTargetAction|0|0|337963|2725|888|0|400

// If Hits are not full, start emergency recall
Assistant.Macros.ElseAction
// Attempt to recall 3 times in case of unlucky fizzle
Assistant.Macros.ForAction|3
Assistant.Macros.DoubleClickAction|1092666184|8901
Assistant.Macros.WaitForGumpAction|1431013363|False|300

Assistant.Macros.GumpResponseAction|2|0|0
Assistant.Macros.PauseAction|00:00:00.7000000
Assistant.Macros.EndForAction

// After a successful recall, wait for hits to recover
Assistant.Macros.WaitForStatAction|0|1|100|360000

// Once hits recovered, wait 3 extra minutes
Assistant.Macros.PauseAction|00:03:00

// Recall back to the Provo grind spot
Assistant.Macros.DoubleClickAction|1092666184|8901
Assistant.Macros.WaitForGumpAction|1431013363|False|300

Assistant.Macros.GumpResponseAction|32|0|0
Assistant.Macros.PauseAction|00:00:03
Assistant.Macros.EndIfAction

// Wait for Provo to come off cooldown and check hit points constantly while waiting
Assistant.Macros.ForAction|18

// If hits are full, continue to wait
Assistant.Macros.IfAction|0|1|100
Assistant.Macros.PauseAction|00:00:00.1000000

// If hits are not full, start emergency recall
Assistant.Macros.ElseAction

// Attempt to recall 3 times in case of unlucky fizzle
Assistant.Macros.ForAction|3
Assistant.Macros.DoubleClickAction|1092666184|8901
Assistant.Macros.WaitForGumpAction|1431013363|False|300

Assistant.Macros.GumpResponseAction|2|0|0
Assistant.Macros.PauseAction|00:00:00.7000000
Assistant.Macros.EndForAction

// After a successful recall, wait for hits to recover
Assistant.Macros.WaitForStatAction|0|1|100|360000

// Once hits recovered, wait 3 extra minutes
Assistant.Macros.PauseAction|00:03:00

// Recall back to the Provo grind spot
Assistant.Macros.DoubleClickAction|1092666184|8901
Assistant.Macros.WaitForGumpAction|1431013363|False|300

Assistant.Macros.GumpResponseAction|32|0|0
Assistant.Macros.PauseAction|00:00:03
Assistant.Macros.EndIfAction
Assistant.Macros.EndForAction



Steps required to adapt the macro to your own character, Runebook and provo-target:

  1. Change all lines marked in Orange to double click your instrument of choice (by Type)
  2. Change all lines marked in Yellow to whatever target your wish to use provo on (by Type)
  3. Change all lines marked in Blue to target your own character
  4. Change all lines marked in Green to open your Runebook (you'll need to use "Begin Recording Here" in Razor for this step, go through the steps required to recall and then delete the excess lines in the macro)
  5. Change all lines marked in Light Green to whatever rune slot inside your Runebook that you want to use as your safe spot (again, you'll need to use "Begin Recording Here" and go through the recall process to get it right)
  6. Change all lines marked in Cyan to whatever rune slot inside your Runebook that you want to use as your provo grind spot (again, you'll need to use "Begin Recording Here" and go through the recall process to get it right)
  7. The two lines in Pink control how long the macro should wait between using Provocation again. It also controls how often the macro should check that your hit points are full while waiting. For me, 18 iterations (loops) with a waiting time of 0,1 seconds each resulted in the macro waiting just over 10 seconds before using Provocation again (and the macro performs 18 checks of your hit points during those 10 seconds waiting time = roughly 2 checks per second). Obviously you can play around with these two numbers if the macro is waiting too long or not long enough before using Provocation again. Perhaps the values also depend on the performance of your computer and your ping - you'll have to experiment a little. But for me, 18 x 0,1 seconds was the best compromise between duration (should be as close to 10 seconds as possible but never less then 10 seconds) and frequency of hit point checks (should be as low as possible to ensure the macro responds as quickly as possible to your character taking damage).

Further features that you can implement into the macro if you feel like it:
(I never got around to implementing any of these since I already got Provo to 100 before getting around to further improving the macro)
  • Auto-restock after emergency recall (for example to collect fresh instruments from the bank)
  • Auto-heal after emergency recall (possibly combined with auto-restock to collect bandages/reags from the bank as required)
  • Auto-reload of recall scrolls into your Runebook (again, combined with auto-restock)
  • Logic that automatically transports you back to a bank and restocks instruments when you've used all your instruments up (or they were stolen by a griefer). This could be done on a time-based trigger (pack the entire macro into a "For" and go restock every 500 or 1000 iterations) or on a sysmessage based system ("This is not a musical instrument" or "Out of range" or something like that).

I hope this helps you Bards out there!

Cheers,
Melor Rend
 
Last edited:

AreYouKidden

Grandmaster
Could up the trammel level a bit, and add an auto checker for criminal/grey in there, so you recall when he comes on screen, not after he's already attacking you..
 

Melor Rend

Neophyte
@blastro no, it‘s a Razor macro.

I didn‘t get around to using uosteam yet.

@AreYouKidden that‘s a mighty fine idea. Any idea how to build a grey/criminal detection system with Razor macros? I just came up with that macro in an evening when I was bored so I‘m sure it can be massively improved by anyone with more code monkey skills than me. :)

I‘m glad of any suggestions.
 

blastro

Novice
Wow I didn’t even know you could write macros like that for Razor, I got some reading to do! I have not tried Steam, I’m just used to Razor so I don’t think I will switch, but now I have some more options then I knew
 

AreYouKidden

Grandmaster
Ack - I just assumed steam, didn't even look at the code, but it's definitely not steam heh. I'm not sure if you can do the get enemy with Razor.. To be honest, don't even know you should be able to with Steam :)
 
Top