UOGamers Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

  • To obtain new Razor updates, please reinstall Razor from our new website.

UOSteam Macro - 5 Fletcher Quests at a Time

MB

Knight
With the change to heartwood quests requiring completing another quest before doing Lethal Darts again, I put together this macro to automate the 4 bowcrafting quests as well as the lethal dart quest. This macro will do quests 5 times faster than doing solely the bolt quest but at the cost of a lot of additional resources. Going through 5 quests with a max fletching talisman will cost approximately 330 boards and 10 bolts. With heartwood being 1 in 1,000 and yew 1 in 400, over a long period of time, that means per 65,000 boards and 2,000 bolts you will get an average of 1 heartwood and 2.5 yew. This macro could be nerfed to just do bows and bolts so that you would require 35,000 boards and 5,000 bolts per heartwood kit, but you would be acquiring at 40% of the speed of the full macro.


Either start here or at your dropoff location
startinglocation.png



@setalias 'FletcherDropoff' 0x411c61df
@setalias 'beetle' 0x133f10
@setalias 'FletcherRunebook' 0x41829f0b
//^^^set these 3 to yours
@removelist 'woodhue'
@removelist 'magechiv'
@removelist 'magechiv2'
@removelist 'bond'
@createlist 'woodhue'
@createlist 'magechiv'
@createlist 'magechiv2'
@createlist 'bond'
//plain=0, oak=2010, ash=1191 | mage=5,11 chiv = 7,13 | bond = 10, unbond = 9
@pushlist 'woodhue' 0
@pushlist 'magechiv' 5
@pushlist 'magechiv2' 11
@pushlist 'bond' 10
//1. Character needs Fletching and Tinkering, a Fletching Bonus talisman saves resources
//2. FletcherDropoff container needs bolts, ingots, boards in it
//3. FletcherRunebook needs 1st rune to be Dropoff location and 2nd rune near Heartwood entrance
//4. Start in Heartwood with a beetle full of only boards. Have crafted tinker tools, 40 ingots, and 200 bolts in your pack or start at your Dropoff location to restock these items
//5. Have meat in your pack to feed beetle, 1 meat used per hour
//6. If multiple stacks of boards at your dropoff, script will begin encountering errors when one of the stacks drop below 1600, combine them before this happens
@setalias 'Fletching Quest Giver' 0x117
@setalias 'Trash Barrel' 0x40053e83
if not listexists 'Talismans'
@createlist 'Talismans'
@pushlist 'Talismans' 0x2f58
@pushlist 'Talismans' 0x2f59
@pushlist 'Talismans' 0x2f5a
@pushlist 'Talismans' 0x2f5b
endif
if not listexists 'Slayers'
@createlist 'Slayers'
//@pushlist 'Slayers' 'Ice Slayer'
//@pushlist 'Slayers' 'Flame Slayer'
//@pushlist 'Slayers' 'Vermin Slayer'
//@pushlist 'Slayers' 'Mage Slayer'
//@pushlist 'Slayers' 'Bird Slayer'
endif
if not listexists 'Killers'
@createlist 'Killers'
//@pushlist 'Killers' 'Yamandon Killer'
//@pushlist 'Killers' 'Lich Killer'
//@pushlist 'Killers' 'Lich Lord Killer'
//@pushlist 'Killers' 'Dread Spider Killer'
//@pushlist 'Killers' 'Giant Black Widow Killer'
//@pushlist 'Killers' 'Eagle Killer'
endif
if not listexists 'Protection'
@createlist 'Protection'
//@pushlist 'Protection' 'Yamandon Protection'
@pushlist 'Protection' 'Lich Protection'
@pushlist 'Protection' 'Lich Lord Protection'
//@pushlist 'Protection' 'Dread Spider Protection'
//@pushlist 'Protection' 'Giant Black Widow Protection'
//@pushlist 'Protection' 'Silver Serpent Protection'
//@pushlist 'Protection' 'Eagle Protection'
endif
if not listexists 'Jewelry'
@createlist 'Jewelry'
@pushlist 'Jewelry' 0x108a
@pushlist 'Jewelry' 0x1f09
@pushlist 'Jewelry' 0x1086
@pushlist 'Jewelry' 0x1f06
endif
if not timerexists 'feedPet'
createtimer 'feedPet'
endif
//stop if you lack skills
if skill 'Tinkering' < 45
sysmsg 'You need 50+ tinkering to run this macro effectively.' 34
stop
elseif skill 'Bowcraft' < 90
sysmsg 'You need at least 90 (preferrably 100) bowcrafting to run this macro. You will also want a Fletching bonus talisman' 34
stop
endif
//stop macro if you forgot to restock bolts or ingots or have no tinker tools
if counttype 0x1bf2 0 'backpack' == 0 and not @inrange 'FletcherDropoff' 2
sysmsg 'Restock ingots before starting!' 33
stop
endif
if counttype 0x1bfb 0 'backpack' == 0 and counttype 0x1bfb 1258 'backpack' == 0
if not @inrange 'FletcherDropoff' 2
sysmsg 'Restock bolts before starting!' 33
stop
endif
endif
if @counttype 0x1eb8 0 'backpack' == 0
sysmsg 'Get crafted tinker tools (0x1eb8) before starting!' 33
stop
endif
// make tinker tools
while @counttype 0x1eb8 0 'backpack' < 2
usetype! 0x1eb8
waitforgump 0x38920abd 3000
replygump 0x38920abd 8
waitforgump 0x38920abd 3000
replygump 0x38920abd 23
endwhile
// make plain fletcher kits
while @counttype 0x1022 0 'backpack' < 3
usetype! 0x1eb8
waitforgump 0x38920abd 3000
replygump 0x38920abd 8
waitforgump 0x38920abd 3000
replygump 0x38920abd 142
endwhile
for 0 to 'magechiv'
for 0 to 'magechiv2'
for 0 to 'bond'
for 0 to 'woodhue'
//if starting macro from Dropoff location, then go through that same process as above to restock and navigate to Heartwood
if @inrange 'FletcherDropoff' 2
//open containers
useobject 'self'
pause 1000
useobject 'FletcherDropoff'
pause 1000
waitforcontext 'beetle' bond[] 15000
pause 1000
//unload jewels
while counttype 0x108a 'any' 'backpack' > 0
movetype 0x108a 'backpack' 'FletcherDropoff'
pause 500
endwhile
while counttype 0x1f09 'any' 'backpack' > 0
movetype 0x1f09 'backpack' 'FletcherDropoff'
pause 500
endwhile
while counttype 0x1f06 'any' 'backpack' > 0
movetype 0x1f06 'backpack' 'FletcherDropoff'
pause 500
endwhile
while counttype 0x1086 'any' 'backpack' > 0
movetype 0x1086 'backpack' 'FletcherDropoff'
pause 500
endwhile
//unload kits
while counttype 0x1022 1191 'backpack' > 0
movetype 0x1022 'backpack' 'FletcherDropoff' (0 0 0) 1191 1
pause 500
endwhile
while counttype 0x1022 2010 'backpack' > 0
movetype 0x1022 'backpack' 'FletcherDropoff' (0 0 0) 2010 1
pause 500
endwhile
while counttype 0x1022 1192 'backpack' > 0
movetype 0x1022 'backpack' 'FletcherDropoff' (0 0 0) 1192 1
pause 500
endwhile
while counttype 0x1022 1193 'backpack' > 0
movetype 0x1022 'backpack' 'FletcherDropoff' (0 0 0) 1193 1
pause 500
endwhile
//unload talismans
while counttype 0x2f58 0 'backpack' > 0
movetype 0x2f58 'backpack' 'FletcherDropoff' (0 0 0) 0 1
pause 500
endwhile
while counttype 0x2f59 0 'backpack' > 0
movetype 0x2f59 'backpack' 'FletcherDropoff' (0 0 0) 0 1
pause 500
endwhile
while counttype 0x2f5a 0 'backpack' > 0
movetype 0x2f5a 'backpack' 'FletcherDropoff' (0 0 0) 0 1
pause 500
endwhile
while counttype 0x2f5b 0 'backpack' > 0
movetype 0x2f5b 'backpack' 'FletcherDropoff' (0 0 0) 0 1
pause 500
endwhile
//get more bolts
if counttype 0x1bfb 0 'backpack' < 130
if counttype 0x1bfb 0 'FletcherDropoff' < 200
sysmsg 'Out of Bolts!' 33
useobject 'beetle'
stop
endif
movetype 0x1bfb 'FletcherDropoff' 'backpack' (0 0 0) 0 200
pause 1000
endif
// get ingots if low
if counttype 0x1bf2 0 'backpack' < 20
if counttype 0x1bf2 0 'FletcherDropoff' < 40
sysmsg 'Out of Ingots!' 33
useobject 'beetle'
stop
endif
movetype 0x1bf2 'FletcherDropoff' 'backpack' (0 0 0) 0 40
pause 1000
endif
//get boards on beetle and self
//first make sure beetle is empty, sometimes UOS won't pull 200 boards and you end up with odd number left behind
if counttype 0x1bd7 'any' 'beetle' > 0
while counttype 0x1bd7 'any' 'beetle' > 1599
movetype 0x1bd7 'beetle' 'FletcherDropoff' [(0 0 0)] 'any' 1600
pause 500
endwhile
while counttype 0x1bd7 'any' 'beetle' > 499
movetype 0x1bd7 'beetle' 'FletcherDropoff' [(0 0 0)] 'any' 500
pause 500
endwhile
while counttype 0x1bd7 'any' 'beetle' > 99
movetype 0x1bd7 'beetle' 'FletcherDropoff' [(0 0 0)] 'any' 100
pause 500
endwhile
while counttype 0x1bd7 'any' 'beetle' > 24
movetype 0x1bd7 'beetle' 'FletcherDropoff' [(0 0 0)] 'any' 25
pause 500
endwhile
while counttype 0x1bd7 'any' 'beetle' > 4
movetype 0x1bd7 'beetle' 'FletcherDropoff' [(0 0 0)] 'any' 5
pause 500
endwhile
while counttype 0x1bd7 'any' 'beetle' > 0
movetype 0x1bd7 'beetle' 'FletcherDropoff' [(0 0 0)] 'any' 1
pause 500
endwhile
endif
//stop if FletcherDropoff is out of boards
if counttype 0x1bd7 woodhue[] 'FletcherDropoff' < 1900
sysmsg 'Out of Boards!' 33
useobject 'beetle'
//@playmacro 'Lumberjacking'
while counttype 0x1bd7 woodhue[] 'FletcherDropoff' < 1900
pause 20000
endwhile
endif
//fill beetle with boards
if mounted 'self'
pause 550
useobject 'self'
pause 1000
waitforcontext 'beetle' bond[] 15000
endif
movetype 0x1bd7 'FletcherDropoff' 'beetle' (0 0 0) woodhue[] 1600
pause 1000
//move boards to your pack based on how low your pack is
//max weight minus 350
if weight < 175
movetype 0x1bd7 'FletcherDropoff' 'backpack' (0 0 0) woodhue[] 350
pause 1000
//max weight minus 300
elseif weight < 225
movetype 0x1bd7 'FletcherDropoff' 'backpack' (0 0 0) woodhue[] 300
pause 1000
//max weight minus 250
elseif weight < 275
movetype 0x1bd7 'FletcherDropoff' 'backpack' (0 0 0) woodhue[] 250
pause 1000
//max weight minus 200
elseif weight < 325
movetype 0x1bd7 'FletcherDropoff' 'backpack' (0 0 0) woodhue[] 200
pause 1000
//max weight minus 150
elseif weight < 375
movetype 0x1bd7 'FletcherDropoff' 'backpack' (0 0 0) woodhue[] 150
pause 1000
//max weight minus 100
elseif weight < 425
movetype 0x1bd7 'FletcherDropoff' 'backpack' (0 0 0) woodhue[] 100
pause 1000
elseif counttype 0x1bd7 woodhue[] 'backpack' < 1
movetype 0x1bd7 'FletcherDropoff' 'backpack' (0 0 0) woodhue[] 1
pause 1000
endif
//set fletching kits to correct wood type
if @findtype 0x1bd7 0 'backpack'
pause 550
usetype! 0x1022
waitforgump 0x38920abd 1000
@replygump 0x38920abd 7
waitforgump 0x38920abd 1000
@replygump 0x38920abd 6
waitforgump 0x38920abd 1000
pause 550
//warn if other color boards or bows in pack
if @findtype 0x1bd7 2010 'backpack' or @findtype 0x1bd7 1191 'backpack'
sysmsg 'You have two types of boards in your pack. Fix before starting macro.' 34
stop
endif
if @findtype 0x13b2 2010 'backpack' or @findtype 0x13b2 1191 'backpack'
sysmsg 'Delete the different hued bows from the wood type you are trying to use before starting macro.' 34
stop
endif
if @findtype 0xf50 2010 'backpack' or @findtype 0xf50 1191 'backpack'
sysmsg 'Delete the different hued crossbows from the wood type you are trying to use before starting macro.' 34
stop
endif
if @findtype 0x13fd 2010 'backpack' or @findtype 0x13fd 1191 'backpack'
sysmsg 'Delete the different hued heavy crossbows from the wood type you are trying to use before starting macro.' 34
stop
endif
if @findtype 0x26c3 2010 'backpack' or @findtype 0x26c3 1191 'backpack'
sysmsg 'Delete the different hued repeating crossbows from the wood type you are trying to use before starting macro.' 34
stop
endif
elseif @findtype 0x1bd7 2010 'backpack'
pause 550
usetype! 0x1022
waitforgump 0x38920abd 1000
@replygump 0x38920abd 7
waitforgump 0x38920abd 1000
@replygump 0x38920abd 13
waitforgump 0x38920abd 1000
pause 550
//warn if other color boards, bows, stools in place
if @findtype 0x1bd7 0 'backpack' or @findtype 0x1bd7 1191 'backpack'
sysmsg 'You have two types of boards in your pack. Fix before starting macro.' 34
stop
endif
if @findtype 0x13b2 0 'backpack' or @findtype 0x13b2 1191 'backpack'
sysmsg 'Delete the different hued bows from the wood type you are trying to use before starting macro.' 34
stop
endif
if @findtype 0xf50 0 'backpack' or @findtype 0xf50 1191 'backpack'
sysmsg 'Delete the different hued crossbows from the wood type you are trying to use before starting macro.' 34
stop
endif
if @findtype 0x13fd 0 'backpack' or @findtype 0x13fd 1191 'backpack'
sysmsg 'Delete the different hued heavy crossbows from the wood type you are trying to use before starting macro.' 34
stop
endif
if @findtype 0x26c3 0 'backpack' or @findtype 0x26c3 1191 'backpack'
sysmsg 'Delete the different hued repeating crossbows from the wood type you are trying to use before starting macro.' 34
stop
endif
elseif @findtype 0x1bd7 1191 'backpack'
pause 550
usetype! 0x1022
waitforgump 0x38920abd 2000
@replygump 0x38920abd 7
waitforgump 0x38920abd 2000
@replygump 0x38920abd 20
waitforgump 0x38920abd 2000
pause 550
//warn if other color boards, bows, stools in place
if @findtype 0x1bd7 2010 'backpack' or @findtype 0x1bd7 0 'backpack'
sysmsg 'You have two types of boards in your pack. Fix before starting macro.' 34
stop
endif
if @findtype 0x13b2 2010 'backpack' or @findtype 0x13b2 0 'backpack'
sysmsg 'Delete the different hued bows from the wood type you are trying to use before starting macro.' 34
stop
endif
if @findtype 0xf50 2010 'backpack' or @findtype 0xf50 0 'backpack'
sysmsg 'Delete the different hued crossbows from the wood type you are trying to use before starting macro.' 34
stop
endif
if @findtype 0x13fd 2010 'backpack' or @findtype 0x13fd 0 'backpack'
sysmsg 'Delete the different hued heavy crossbows from the wood type you are trying to use before starting macro.' 34
stop
endif
if @findtype 0x26c3 2010 'backpack' or @findtype 0x26c3 0 'backpack'
sysmsg 'Delete the different hued repeating crossbows from the wood type you are trying to use before starting macro.' 34
stop
endif
endif
//mount beetle and recall back to heartwood
useobject 'beetle'
pause 2000
if @injournal 'world will save'
while not @injournal 'world save complete'
endwhile
@clearjournal
endif
useobject 'FletcherRunebook'
waitforgump 0x554b87f3 30000
replygump 0x554b87f3 magechiv2[]
pause 2000
//if the rune is blocked, pause 2 min to give time for NPCs to move, this prevents the character from running across the world from your dropoff
if injournal 'blocked' 'system'
sysmsg 'Rune blocked, trying again in 2 minutes' 33
pause 120000
clearjournal
useobject 'FletcherRunebook'
waitforgump 0x554b87f3 30000
replygump 0x554b87f3 magechiv2[]
pause 2000
//if it's still blocked, stop macro
if injournal 'blocked' 'system'
sysmsg 'Rune still blocked, stopping macro' 33
clearjournal
stop
endif
endif
//navigate to heartwood entrance
while y != 992 and y > 400
for 2
if y > 992
walk 'north'
endif
pause 250
if y < 992
walk 'south'
endif
pause 250
endfor
endwhile
if x > 535 and x < 1000
while x > 535 and x < 1000
run 'west'
pause 100
endwhile
endif
if x < 537
while x < 537
run 'east'
pause 100
endwhile
endif
//navigate through heartwood to quest area
while y < 377
run 'southeast'
endwhile
pause 500
while y > 378
walk 'north'
pause 500
endwhile
while y < 378
walk 'south'
pause 500
endwhile
while x < 7037
run 'east'
endwhile
//dismount
useobject 'self'
pause 700
useobject 'Trash Barrel'
pause 700
waitforcontext 'beetle' bond[] 3000
pause 700
if counttype 0x1bd7 woodhue[] 'backpack' < 150
movetype 0x1bd7 'beetle' 'backpack' [(0 0 0)] woodhue[] 200
pause 2000
endif
//restock boards from beetle
elseif counttype 0x1bd7 woodhue[] 'backpack' < 150
if counttype 0x1bd7 woodhue[] 'beetle' > 199
movetype 0x1bd7 'beetle' 'backpack' [(0 0 0)] woodhue[] 200
pause 2000
//if beetle empty, leave heartwood
else
msg 'MB is the King of Demise!' 33
useobject 'beetle'
pause 1000
msg 'Long live the King!' 33
while x > 7028
run 'west'
endwhile
pause 300
while y > 342
run "Northwest"
pause 100
endwhile
while x < 6987
walk 'east'
pause 150
endwhile
while x > 6987
walk 'west'
pause 150
endwhile
while y != 338 and y < 600
for 5
if y > 338 and y < 600
walk 'north'
pause 250
endif
if y < 338 and y < 600
walk 'south'
pause 250
endif
endfor
endwhile
while x > 1000
while y > 338 and y < 600
turn 'north'
walk 'north'
pause 250
endwhile
while y < 338 and y < 600
turn 'south'
walk 'south'
pause 250
endwhile
run 'west'
endwhile
if @injournal 'world will save'
while not @injournal 'world save complete'
endwhile
@clearjournal
endif
//recall home
useobject 'FletcherRunebook'
waitforgump 0x554b87f3 30000
replygump 0x554b87f3 magechiv[]
pause 2000
endif
elseif @inrange 'Trash Barrel' 2
//dismount if not when macro started
if mounted
useobject 'self'
pause 1000
waitforcontext 'beetle' bond[] 15000
pause 1000
useobject 'Trash Barrel'
pause 1000
endif
// Hourly feed pet
if timer 'feedPet' >= 3600000
feed 'beetle' 'Meat' 'any' 1
pause 500
if injournal 'happier'
settimer 'feedPet' 0
sysmsg 'Pet Fed' 33
clearjournal
else
sysmsg 'Out of Meat!' 33
useobject 'beetle'
clearjournal
stop
endif
endif
//get a quest
@useobject 'Fletching Quest Giver'
waitforgump 0x19bc4061 2000
//SimpleBow
if @ingump 0x19bc4061 'crafted in the human style'
replygump 0x19bc4061 1
pause 550
while counttype 0x13b2 'any' 'backpack' < 10
usetype 0x1022 0 'backpack'
waitforgump 0x38920abd 5000
replygump 0x38920abd 15
waitforgump 0x38920abd 5000
replygump 0x38920abd 2
waitforgump 0x38920abd 5000
endwhile
waitforcontext 'self' 4 5000
waitfortarget 5000
settimer 'toggletimeout' 0
while @counttype 0x13b2 0x4ea 'backpack' != 10 and timer 'toggletimeout' < 5000
@targettype 0x13b2 woodhue[]
pause 150
endwhile
@canceltarget
pause 500
@useobject! 'Fletching Quest Giver'
waitforgump 0xdf31ecf8 3000
replygump 0xdf31ecf8 4
waitforgump 0x96626c6e 3000
replygump 0x96626c6e 1
pause 1000
//SimpleBow already in progress
elseif @ingump 0xa8b319c6 'debt if you bring me bows'
while counttype 0x13b2 'any' 'backpack' < 10
usetype 0x1022 0 'backpack'
waitforgump 0x38920abd 5000
replygump 0x38920abd 15
waitforgump 0x38920abd 5000
replygump 0x38920abd 2
waitforgump 0x38920abd 5000
endwhile
waitforcontext 'self' 4 5000
waitfortarget 5000
settimer 'toggletimeout' 0
while @counttype 0x13b2 0x4ea 'backpack' != 10 and timer 'toggletimeout' < 5000
@targettype 0x13b2 woodhue[]
pause 150
endwhile
@canceltarget
pause 500
@useobject! 'Fletching Quest Giver'
waitforgump 0xdf31ecf8 3000
replygump 0xdf31ecf8 4
waitforgump 0x96626c6e 3000
replygump 0x96626c6e 1
pause 1000
//Ingenious I
elseif @ingump 0x19bc4061 'such an instrument for me?'
replygump 0x19bc4061 1
pause 550
while counttype 0xf50 'any' 'backpack' < 10
usetype 0x1022 0 'backpack'
waitforgump 0x38920abd 5000
replygump 0x38920abd 15
waitforgump 0x38920abd 5000
replygump 0x38920abd 9
waitforgump 0x38920abd 5000
endwhile
waitforcontext 'self' 4 5000
waitfortarget 5000
settimer 'toggletimeout' 0
while @counttype 0xf50 0x4ea 'backpack' != 10 and timer 'toggletimeout' < 5000
@targettype 0xf50 woodhue[]
pause 150
endwhile
@canceltarget
pause 500
@useobject! 'Fletching Quest Giver'
waitforgump 0xdf31ecf8 3000
replygump 0xdf31ecf8 4
waitforgump 0x96626c6e 3000
replygump 0x96626c6e 1
pause 1000
//Ingenious I already in progress
elseif @ingump 0xa8b319c6 'debt if you bring me crossbows'
while counttype 0xf50 'any' 'backpack' < 10
usetype 0x1022 0 'backpack'
waitforgump 0x38920abd 5000
replygump 0x38920abd 15
waitforgump 0x38920abd 5000
replygump 0x38920abd 9
waitforgump 0x38920abd 5000
endwhile
waitforcontext 'self' 4 5000
waitfortarget 5000
settimer 'toggletimeout' 0
while @counttype 0xf50 0x4ea 'backpack' != 10 and timer 'toggletimeout' < 5000
@targettype 0xf50 woodhue[]
pause 150
endwhile
@canceltarget
pause 500
@useobject! 'Fletching Quest Giver'
waitforgump 0xdf31ecf8 3000
replygump 0xdf31ecf8 4
waitforgump 0x96626c6e 3000
replygump 0x96626c6e 1
pause 1000
//Ingenious 2
elseif @ingump 0x19bc4061 'remarkable instrument of war'
replygump 0x19bc4061 1
pause 550
while counttype 0x13fd 'any' 'backpack' < 8
usetype 0x1022 0 'backpack'
waitforgump 0x38920abd 5000
replygump 0x38920abd 15
waitforgump 0x38920abd 5000
replygump 0x38920abd 16
waitforgump 0x38920abd 5000
endwhile
waitforcontext 'self' 4 5000
waitfortarget 5000
settimer 'toggletimeout' 0
while @counttype 0x13fd 0x4ea 'backpack' != 8 and timer 'toggletimeout' < 5000
@targettype 0x13fd woodhue[]
pause 150
endwhile
@canceltarget
pause 500
@useobject! 'Fletching Quest Giver'
waitforgump 0xdf31ecf8 3000
replygump 0xdf31ecf8 4
waitforgump 0x96626c6e 3000
replygump 0x96626c6e 1
pause 1000
//Ingenious 2 already in progress
elseif @ingump 0xa8b319c6 'debt if you bring me heavy crossbows'
while counttype 0x13fd 'any' 'backpack' < 8
usetype 0x1022 0 'backpack'
waitforgump 0x38920abd 5000
replygump 0x38920abd 15
waitforgump 0x38920abd 5000
replygump 0x38920abd 16
waitforgump 0x38920abd 5000
endwhile
waitforcontext 'self' 4 5000
waitfortarget 5000
settimer 'toggletimeout' 0
while @counttype 0x13fd 0x4ea 'backpack' != 8 and timer 'toggletimeout' < 5000
@targettype 0x13fd woodhue[]
pause 150
endwhile
@canceltarget
pause 500
@useobject! 'Fletching Quest Giver'
waitforgump 0xdf31ecf8 3000
replygump 0xdf31ecf8 4
waitforgump 0x96626c6e 3000
replygump 0x96626c6e 1
pause 1000
//Ingenious 3
elseif @ingump 0x19bc4061 'remarkable human ingenuity'
replygump 0x19bc4061 1
pause 550
while counttype 0x26c3 'any' 'backpack' < 10
usetype 0x1022 0 'backpack'
waitforgump 0x38920abd 5000
replygump 0x38920abd 15
waitforgump 0x38920abd 5000
replygump 0x38920abd 30
waitforgump 0x38920abd 5000
endwhile
waitforcontext 'self' 4 5000
waitfortarget 5000
settimer 'toggletimeout' 0
while @counttype 0x26c3 0x4ea 'backpack' != 10 and timer 'toggletimeout' < 5000
@targettype 0x26c3 woodhue[]
pause 150
endwhile
@canceltarget
pause 500
@useobject! 'Fletching Quest Giver'
waitforgump 0xdf31ecf8 3000
replygump 0xdf31ecf8 4
waitforgump 0x96626c6e 3000
replygump 0x96626c6e 1
pause 1000
//Ingenious 3 already in progress
elseif @ingump 0xa8b319c6 'debt if you bring me repeating crossbows'
while counttype 0x26c3 'any' 'backpack' < 10
usetype 0x1022 0 'backpack'
waitforgump 0x38920abd 5000
replygump 0x38920abd 15
waitforgump 0x38920abd 5000
replygump 0x38920abd 30
waitforgump 0x38920abd 5000
endwhile
waitforcontext 'self' 4 5000
waitfortarget 5000
settimer 'toggletimeout' 0
while @counttype 0x26c3 0x4ea 'backpack' != 10 and timer 'toggletimeout' < 5000
@targettype 0x26c3 woodhue[]
pause 150
endwhile
@canceltarget
pause 500
@useobject! 'Fletching Quest Giver'
waitforgump 0xdf31ecf8 3000
replygump 0xdf31ecf8 4
waitforgump 0x96626c6e 3000
replygump 0x96626c6e 1
pause 1000
//LethalDart
elseif @ingump 0x19bc4061 'deadly crossbow bolt'
if @findtype 0x1bfb 'any' 'backpack' 10
replygump 0x19bc4061 1
pause 550
pause 300
if color 'found' == 0
waitforcontext 'self' 4 5000
waitfortarget 5000
Target! 'found'
waitfortarget 5000
endif
endif
@canceltarget
pause 500
@useobject! 'Fletching Quest Giver'
waitforgump 0xdf31ecf8 3000
replygump 0xdf31ecf8 4
waitforgump 0x96626c6e 3000
replygump 0x96626c6e 1
pause 1000
//LethalDart in progress
elseif @ingump 0xa8b319c6 'debt if you bring me crossbow bolts'
if @findtype 0x1bfb 'any' 'backpack' 10
pause 300
if color 'found' == 0
waitforcontext 'self' 4 5000
waitfortarget 5000
Target! 'found'
waitfortarget 5000
endif
endif
@canceltarget
pause 500
@useobject! 'Fletching Quest Giver'
waitforgump 0xdf31ecf8 3000
replygump 0xdf31ecf8 4
waitforgump 0x96626c6e 3000
replygump 0x96626c6e 1
pause 1000
//quest done except for talking to quest giver again
elseif @ingump 0xdf31ecf8 'My thanks'
replygump 0xdf31ecf8 4
waitforgump 0x96626c6e 3000
replygump 0x96626c6e 1
//refuse Harp quest so not obscuring screen
elseif @ingump 0x19bc4061 'melodious of music'
replygump 0x19bc4061 2
waitforgump 0xa8b319c6 3000
replygump 0xa8b319c6 3
endif
// Handle reward bags
while @findtype 0xe75 'any' 'backpack'
pause 550
@setalias 'trash' 'found'
@useobject! 'trash'
pause 550
// fletcher Runics
while @findtype 0x1022 'any' 'trash'
@moveitem! 'found' 'backpack'
pause 1000
if color 'found' == 2010
//uncomment this next line to throw Oak kits on the ground
moveitemoffset 'found' 'ground' (0 2 0)
pause 550
elseif color 'found' == 1191
//uncomment this next line to throw Ash kits on the ground
//moveitemoffset 'found' 'ground' (0 2 0)
pause 550
elseif color 'found' == 1192
msg 'Nice, a Yew kit' 33
elseif color 'found' == 1193
msg 'Woohoo! Heartwood!' 63
endif
ignoreobject 'found'
endwhile
// Talismans
for 0 to 'Talismans'
while @findtype Talismans[] 0 'trash'
waitforproperties 'found' 15000
//crafting bonus and exceptional bonus talismans
if @property 'Tinkering Exceptional Bonus' 'found' >= 20 and @property 'Tinkering Bonus' 'found' >= 20
@moveitem! 'found' 'backpack'
pause 1000
break
elseif @property 'Alchemy Bonus' 'found' >= 29 or @property 'Fletching Bonus' 'found' >= 29
@moveitem! 'found' 'backpack'
pause 1000
break
elseif @property 'Fletching Exceptional Bonus' 'found' >= 20 and @property 'Fletching Bonus' 'found' >= 20
@moveitem! 'found' 'backpack'
pause 1000
break
elseif @property 'Tailoring Exceptional Bonus' 'found' >= 20 and @property 'Tailoring Bonus' 'found' >= 20
@moveitem! 'found' 'backpack'
pause 1000
break
elseif @property 'Carpentry Exceptional Bonus' 'found' >= 20 and @property 'Carpentry Bonus' 'found' >= 20
@moveitem! 'found' 'backpack'
pause 1000
break
elseif @property 'Inscription Bonus' 'found' >= 29 or @property 'Cooking Bonus' 'found' >= 29
@moveitem! 'found' 'backpack'
pause 1000
break
elseif @property 'Blacksmithing Exceptional Bonus' 'found' >= 20 and @property 'Blacksmithing Bonus' 'found' >= 20
@moveitem! 'found' 'backpack'
pause 1000
break
endif
//get slayers
for 0 to 'Slayers'
if @property Slayers[] 'found'
@moveitem! 'found' 'backpack'
pause 1000
break
endif
endfor
//get killers
for 0 to 'Killers'
if @property Killers[] 'found' >= 90
@moveitem! 'found' 'backpack'
pause 1000
break
endif
endfor
//get protections
for 0 to 'Protection'
if @property Protection[] 'found' >= 50
@moveitem! 'found' 'backpack'
pause 1000
break
endif
endfor
ignoreobject 'found'
endwhile
endfor
//Jewels
for 0 to 'Jewelry'
while @findtype Jewelry[] 0 'trash'
waitforproperties 'found' 15000
//EP DI jewels
if @property 'Enhance Potions' 'found' >= 15 and @property 'Damage Increase' 'found' >= 15
@moveitem! 'found' 'backpack'
pause 1000
break
endif
if @property 'Faster Cast Recovery' 'found' == 3
@moveitem! 'found' 'backpack'
pause 1000
break
endif
//save 1/2 and 1/1
if @property 'Faster Cast Recovery' 'found' > 0 and @property 'Faster Casting' 'found'
@moveitem! 'found' 'backpack'
pause 1000
break
endif
//hci and dci jewels, other usable hci dci jewels will be captured by above
if @property 'Defense chance increase' 'found' >= 10 and @property 'Hit chance increase' 'found' >= 5
@moveitem! 'found' 'backpack'
pause 1000
break
endif
if @property 'Hit chance increase' 'found' >= 10 and @property 'Defense chance increase' 'found' >= 5
@moveitem! 'found' 'backpack'
pause 1000
break
endif
ignoreobject 'found'
endwhile
endfor
clearignorelist
@moveitem! 'trash' 'Trash Barrel'
pause 550
endwhile
else
// if you're not at Trash Barrel or FletcherDropoff, then stop
sysmsg 'You need to be next to the Trash Barrel or your FletcherDropoff container when starting this macro' 33
stop
endif
endfor
endfor
endfor
endfor
 
Last edited:

MB

Knight
I like being able to see beetle weight on screen at any point so I can see how long til restock trip.
 
Have you considered changing from a beetle to a 5 bonded packy set up. It would change your average restock time from 30 minutes to 2.5 hours. The time was based on the number of bolts you carry not from an actual trial run.
 

MB

Knight
Have you considered changing from a beetle to a 5 bonded packy set up. It would change your average restock time from 30 minutes to 2.5 hours. The time was based on the number of bolts you carry not from an actual trial run.
I think it's all the same in the end. It only takes about 30 seconds to mount beetle, run home, restock, and come back to heartwood about once every 10 minutes when boards deplete. There's a buffer of bolts just to be sure that boards are your limiting factor. This macro still has a lot of downtime rejecting Lap Harp quests until one of the other become available, so I don't think you lose a lot of quest opportunities while restocking. In the video in the first post, I get back to heartwood before another quest is even available yet. I could also see issues in trying to herd pack horses home for a restock.


//6. Change the 5 itemids below to your setup

In what line are this ids?

THX
Type -info in game and target the items to get the Serial
 
Last edited:

MB

Knight
So if there's 30-150 delay between quests, that means you average about 5 quests per 90 seconds per character. If you ran 4 characters doing this, which is equivalent of 20 characters doing bolts, then 1000 quests to get a hw kit divided by 20 quests per 90 seconds means you get a hw kit about once every 75 minutes.
 

MB

Knight
Make sure you have these two lines set right

@setalias 'FletcherDropoff' 0x411c61df
@setalias 'FletcherRunebook' 0x41829f0b
 

MB

Knight
If you use magery want to add the meat creation, add in this code


// Hourly feed pet
if timer 'feedPet' >= 3600000
feed 'beetle' 'Meat' 'any' 1
pause 500
if injournal 'happier'
settimer 'feedPet' 0
sysmsg 'Pet Fed' 33
clearjournal
else
sysmsg 'Out of Meat!' 33
//make meat and trash rest
for 40
cast 'create food'
pause 300
endfor
while counttype 0x9eb 0 'backpack' > 0
movetype 0x9eb 'backpack' 'Trash Barrel'
endwhile
while counttype 0x9d1 0 'backpack' > 0
movetype 0x9d1 'backpack' 'Trash Barrel'
endwhile
while counttype 0x9d0 0 'backpack' > 0
movetype 0x9d0 'backpack' 'Trash Barrel'
endwhile
while counttype 0x9d2 0 'backpack' > 0
movetype 0x9d2 'backpack' 'Trash Barrel'
endwhile
while counttype 0x97d 0 'backpack' > 0
movetype 0x97d 'backpack' 'Trash Barrel'
endwhile
while counttype 0x97b 0 'backpack' > 0
movetype 0x97b 'backpack' 'Trash Barrel'
endwhile
endif
endif
 

MB

Knight
I tied my quest into Lumberjacking macro to have it go chop more wood when my boards deplete by inserting this code

//stop if FletcherDropoff is out of boards
if counttype 0x1bd7 0 'FletcherDropoff' < 1600
sysmsg 'Out of Boards!' 33
useobject 'beetle'
pause 1000
playmacro 'Lumberjacking'
stop
endif

and changing my Lumberjacking so that it goes back to questing when has specified boards

//unload
organizer 'Boards'
while organizing
pause 500
endwhile
if counttype 0x1bd7 0 'FletcherDropoff' > 30000
playmacro 'Bowyer Quests'
endif




Here's the full Lumberjacking macros

Magery Version
//1. need 2 full runebooks marked 1 tile south and same elevation of the choppable tree
//2. Organizer agent 'Boards' needs to be configured from your backpack to dropoff container with boards and 5 specials on it
//3. pauses after recalls are set to 2000 for 0fc. Change to 1750 for 1fc and 1500 for 2fc
if not @findobject 'TreeBookOne'
promptalias 'TreeBookOne'
endif
if not @findobject 'TreeBookTwo'
promptalias 'TreeBookTwo'
endif
if not @findobject 'HomeLumber'
promptalias 'HomeLumber'
endif
if not listexists 'TreeBook'
createlist 'TreeBook'
pushlist 'TreeBook' 'TreeBookOne'
pushlist 'TreeBook' 'TreeBookTwo'
endif
if not listexists 'Runes'
createlist 'Runes'
pushlist 'Runes' 5
pushlist 'Runes' 11
pushlist 'Runes' 17
pushlist 'Runes' 23
pushlist 'Runes' 29
pushlist 'Runes' 35
pushlist 'Runes' 41
pushlist 'Runes' 47
pushlist 'Runes' 53
pushlist 'Runes' 59
pushlist 'Runes' 65
pushlist 'Runes' 71
pushlist 'Runes' 77
pushlist 'Runes' 83
pushlist 'Runes' 89
pushlist 'Runes' 95
endif
For 0 to 'TreeBook'
For 0 to 'Runes'
pause 500
clearjournal
pause 500
useobject TreeBook[]
waitforgump 0x554b87f3 5000
replygump 0x554b87f3 Runes[]
//tells you which rune you are on, see runelist above
sysmsg 'Rune' 33
sysmsg Runes[] 33
pause 2000
//equips axe if it's not SC
if not @findobject 'lefthand'
//change type to your axe
if findtype 0xf47 0 'backpack'
setalias 'axe' 'found'
equipitem 'axe' 2
endif
endif
while not @injournal 'enough wood here'
pause 300
//chop logs to boards
if @findtype 0x1bdd 'any' 'backpack'
useobject 'LeftHand'
waitfortarget 1000
target! 'found'
else
//chop trees
useobject 'LeftHand'
waitfortarget 1000
targettileoffset 0 -1 0
endif
// Change this if your getting overweight, Subtract 25 from your max weight.
if weight > 480
//make remaining logs boards
while @findtype 0x1bdd 'any' 'backpack'
useobject 'LeftHand'
waitfortarget 1000
target! 'found'
pause 500
endwhile
//recall home
useobject 'HomeLumber'
waitforgump 0x554b87f3 5000
replygump 0x554b87f3 5
pause 2000
//unload
organizer 'Boards'
while organizing
pause 500
endwhile
//go back to where you were
useobject TreeBook[]
waitforgump 0x554b87f3 5000
replygump 0x554b87f3 Runes[]
pause 2000
//re-equip axe if needed
if not @findobject 'lefthand'
equipitem 'axe' 2
pause 1000
endif
endif
if @injournal 'use an axe'
break
endif
endwhile
endfor
endfor






Chivalry Version
//1. need 2 full runebooks marked 1 tile south and same elevation of the choppable tree
//2. Organizer agent 'Boards' needs to be configured from your backpack to dropoff container with boards and 5 specials on it
//3. pauses after recalls are set to 1500 for 2Faster Casting. Change to 2000 for 0FC and 1000 for 4FC
if not @findobject 'TreeBookOne'
promptalias 'TreeBookOne'
endif
if not @findobject 'TreeBookTwo'
promptalias 'TreeBookTwo'
endif
if not @findobject 'HomeLumber'
promptalias 'HomeLumber'
endif
if not listexists 'TreeBook'
createlist 'TreeBook'
pushlist 'TreeBook' 'TreeBookOne'
pushlist 'TreeBook' 'TreeBookTwo'
endif
if not listexists 'Runes'
createlist 'Runes'
pushlist 'Runes' 7
pushlist 'Runes' 13
pushlist 'Runes' 19
pushlist 'Runes' 25
pushlist 'Runes' 31
pushlist 'Runes' 37
pushlist 'Runes' 43
pushlist 'Runes' 49
pushlist 'Runes' 55
pushlist 'Runes' 61
pushlist 'Runes' 67
pushlist 'Runes' 73
pushlist 'Runes' 79
pushlist 'Runes' 85
pushlist 'Runes' 91
pushlist 'Runes' 97
endif
For 0 to 'TreeBook'
For 0 to 'Runes'
pause 500
clearjournal
pause 500
useobject TreeBook[]
waitforgump 0x554b87f3 5000
replygump 0x554b87f3 Runes[]
//tells you which rune you are on, see runelist above
sysmsg 'Rune' 33
sysmsg Runes[] 33
pause 1500
//equips axe if it's not SC
if not @findobject 'lefthand'
//change type to your axe
if findtype 0xf47 0 'backpack'
setalias 'axe' 'found'
equipitem 'axe' 2
endif
endif
while not @injournal 'enough wood here'
pause 300
//chop logs to boards
if @findtype 0x1bdd 'any' 'backpack'
useobject 'LeftHand'
waitfortarget 1000
target! 'found'
else
//chop trees
useobject 'LeftHand'
waitfortarget 1000
targettileoffset 0 -1 0
endif
// Change this if your getting overweight, Subtract 25 from your max weight.
if weight > 480
//make remaining logs boards
while @findtype 0x1bdd 'any' 'backpack'
useobject 'LeftHand'
waitfortarget 1000
target! 'found'
pause 500
endwhile
//recall home
useobject 'HomeLumber'
waitforgump 0x554b87f3 5000
replygump 0x554b87f3 7
pause 1500
//unload
organizer 'Boards'
while organizing
pause 500
endwhile
//go back to where you were
useobject TreeBook[]
waitforgump 0x554b87f3 5000
replygump 0x554b87f3 Runes[]
pause 1500
//re-equip axe if needed
if not @findobject 'lefthand'
equipitem 'axe' 2
pause 1000
endif
endif
if @injournal 'use an axe'
break
endif
endwhile
endfor
endfor
 

suiris

Sorceror
Great script. Thank you much appreciated. It just has one flaw IMO . It needs to make check when restocking if the char is overweight because it fails in recalling after it restocks.
 

Zul Moonstryfe

Traveler
look up the restock in the script and change the amount... MB made this script and posted it for free for people to use simple things like your asking can be changed in the script if you don't know how to script then thats something you should learn the basics of
 
Top