MB's macro should work just fine.
I'm using this, can't remember if have I edited it from orginal one (MB's).
Use wooden box or chest for reward box.
// Heartwood quester with enhanced looting
// Description: Lethal Darts Quest Maker
// Ready to use at UOGamers Demise
if not listexists 'Talismans'
@createlist 'Talismans'
@pushlist 'Talismans' 0x2f58
@pushlist 'Talismans' 0x2f59
@pushlist 'Talismans' 0x2f5a
@pushlist 'Talismans' 0x2f5b
endif
if not listexists 'Skills'
@createlist 'Skills'
@pushlist 'Skills' 'Alchemy Bonus'
@pushlist 'Skills' 'Blacksmithing Bonus'
@pushlist 'Skills' 'Carpentry Bonus'
@pushlist 'Skills' 'Inscription Bonus'
@pushlist 'Skills' 'Tailoring Bonus'
@pushlist 'Skills' 'Tinkering Bonus'
endif
if not listexists 'Jewelry'
@createlist 'Jewelry'
@pushlist 'Jewelry' 0x108a
@pushlist 'Jewelry' 0x1f09
@pushlist 'Jewelry' 0x1086
@pushlist 'Jewelry' 0x1f06
endif
if not listexists 'Jewelspurposes'
@createlist 'Jewelspurposes'
@pushlist 'Jewelspurposes' 'Faster Cast Recovery'
@pushlist 'Jewelspurposes' 'Lower reagent cost'
@pushlist 'Jewelspurposes' 'Faster Casting'
@pushlist 'Jewelspurposes' 'Luck'
endif
if not @findobject 'Fletching Quest Giver'
promptalias 'Fletching Quest Giver'
endif
if not @findobject 'Restock'
promptalias 'Restock'
else
if serial 'Restock' != serial 'self'
if not timerexists 'feedPet'
createtimer 'feedPet'
endif
// Hourly feed pet
if timer 'feedPet' >= 3600000
feed 'Restock' 'Meat'
pause 1000
settimer 'feedPet' 0
endif
endif
endif
if not @findobject 'Reward Box'
promptalias 'Reward Box'
endif
if not @findobject 'Trash Barrel'
promptalias 'Trash Barrel'
endif
if @findtype 0x1bfb 'any' 'backpack' 10
if @useobject 'Fletching Quest Giver'
waitforgump 0x19bc4061 5000
if @ingump 0x19bc4061 'crossbow bolt'
replygump 0x19bc4061 1
pause 550
if color 'found' == 0
waitforcontext 'self' 4 5000
waitfortarget 5000
@Target! 'found'
waitfortarget 5000
@canceltarget
endif
pause 550
@useobject 'Fletching Quest Giver'
waitforgump 0xdf31ecf8 5000
replygump 0xdf31ecf8 4
waitforgump 0x96626c6e 5000
replygump 0x96626c6e 1
pause 2000
// Handle reward bags
while @findtype 0xe75 'any' 'backpack'
@setalias 'trash' 'found'
@useobject! 'trash'
pause 1000
// Runics
while @findtype 0x1022 'any' 'trash'
@moveitem! 'found' 'Reward Box'
pause 1000
endwhile
// Talismans
for 0 to 'Talismans'
while @findtype Talismans[] 0 'trash'
waitforproperties 'found' 5000
if @property 'slayer' 'found'
@moveitem! 'found' 'reward box'
pause 1000
break
ignoreobject 'found'
endif
if @property 'Exceptional Bonus' 'found' >= 20
@moveitem! 'found' 'Reward Box'
pause 1000
break
ignoreobject 'found'
endif
if @property 'killer' 'found' >= 90
@moveitem! 'found' 'Reward Box'
pause 1000
break
ignoreobject 'found'
endif
if @property 'Protection' 'found' >= 40
@moveitem! 'found' 'Reward Box'
pause 1000
break
ignoreobject 'found'
endif
ignoreobject 'found'
endwhile
endfor
//Jewels
for 0 to 'Jewelry'
while @findtype Jewelry[] 0 'trash'
pause 1000
if @property 'Luck' 'found' >= 90
@moveitem! 'found' 'Reward Box'
pause 1000
break
endif
if @property 'Faster Cast Recovery' 'found' = 3
@moveitem! 'found' 'Reward Box'
pause 1000
break
endif
if @property 'Defence chance increase' 'found' >= 12
@moveitem! 'found' 'Reward Box'
pause 1000
break
endif
if @property 'Hit chance increase' 'found' >= 12
@moveitem! 'found' 'Reward Box'
pause 1000
break
endif
if @property 'Faster casting' 'found'
@moveitem! 'found' 'Reward Box'
pause 1000
break
endif
ignoreobject 'found'
endwhile
endfor
@moveitem! 'trash' 'Trash Barrel'
pause 1000
endwhile
else
replygump 0x19bc4061 2
endif
endif
pause 1000
elseif @movetype 0x1bfb 'Restock' 'backpack' 0 0 0 0 200
pause 1000
else
sysmsg 'Out of bolts!' 25
stop
endif
clearignorelist