• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->

Various Tradeskill MACS (2 Viewers)

armysoldier

Well-known member
Joined
Jun 26, 2005
RedCents
101¢
I am starting a new post.. so that i have them in one place ...

There are some that will use NEW UI .. and some that will use old.

Each will be noted with the MAC above the code section

I am reworking each of overrides original macs to fix all of them ... and adding some new ones

There are some specific combines.. such as Celestial essence.. or Tunare dust.. etc etc

if there are specific ones you would like PM me.

I am working through the Skill up macs now... so don't worry i will eventually get to those..

i hope this helps some of you

8-)
 
CE.MAC

uses new UI should be trivial to all .. so finding the recipe should be NP

using it today .. works fine

changed the ending event to a multiple of 60 .. doh

Rich (BB code):
| 
| CE.mac
| 
| Written by ArmySoldier
|
|
| You need a mixing bowl in LAST slot
|
| 12/16/05:  I am a retard... the event must be a multiple of 60 .. or it will not work .. 
|            Changed it to 1320 
|
| This Macro works best in the Abysmal Sea since all the components are there.
| You WILL need to be by Uiyaniv Tu`Vrozix @ -191,229,96 for this macro to work.
|
| Ensure when you right click on a TS container.. the new UI comes up
|
|
|Inventory
| _______
|| 1 | 5 |
||___|___|
|| 2 | 6 | 
||___|___|
|| 3 | 7 |
||___|___|
|| 4 | 8 |
||___|___|
|


#event CombineError "#*#There was no place to put that#*#" 
#event CombineError "#*#You cannot combine these items in this container type!#*#" 
#event CombineError "#*#did not accept these items#*#" 
#event CombineError "#*#You are missing#*#"
#event ContUsed "#*#Someone else is using that. Try again later.#*#"
#event End "#*#can not afford#*#"
#event End "[MQ2] 1320 Essence's"
|---------------  ^^^^ EDIT to the number you want... multiples of 60 

#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc

Sub Main

    /declare i int outer
    /declare CompA item outer
    /declare CompB item outer
    /declare CompC item outer
    /declare CompD item outer
    /declare CompE item outer
    /declare CompF item outer
    /declare CombItemName string outer
    /declare ItemTo string outer
    /declare EndingVar int outer
    /declare Cnt int outer

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Begin 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    :start
    /doevents
    /varset CompB "Celestial Solvent"
    /varset CompC "The Scent of Marr"
    /varset CombItemName "CE"
    /varset ItemTo "Celestial Essence (The Scent of Marr)"

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Buy CE components 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /varset EndingVar 1
    /delay 1s
    /target Uiyaniv
    /face
    /delay 1s
    /nomodkey /click right target
    /delay 1s
    /call OpenPacks
    /call Buy ${CompB} 60
    /delay 1s
    /call Buy ${CompC} 60
    /call ClosePacks
    /keypress esc
    /delay 2s

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| MAKE CE
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /itemnotify pack8 rightmouseup
      /call ChooseRecipe
      /call DoCombine
      /call ClosePacks
      /keypress Esc
      /keypress Esc
      /varset Cnt ${FindItemCount[=Celestial Essence]}
      /echo ${Cnt} Essence's
     /goto :start
/return


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Clear Cursor
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub ClearCursor 
    :Loop 
      /if (!${Cursor.ID}) /return 
      /autoinv 
|      /destroy	
      /delay ${Math.Calc[${DelayMult}*5]}s
      /doevents 
      /goto :Loop 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub DoCombine
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub DoCombine
        /call ClearCursor 
    :Loop 
	/notify TradeSkillWnd CombineButton leftmouseup 
	/delay 10 
	/notify TradeSkillWnd AutoInvButton leftmouseup 
	/delay 5 
	/notify TradeSkillWnd AutoInvButton leftmouseup 
      	/doevents 
      /if (${EndingVar}==1) /goto :Loop
      /varset EndingVar 1 
      /delay 5 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Type out the input string.  Only non-alphabetic character 
| currently handled is space.
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
Sub Type(InStr) 
   /declare char string local 
   /declare loopctr int local 
   /for loopctr 1 to ${InStr.Length} 
      /varset char ${InStr.Mid[${loopctr},1]} 
      /if (!${char.Length}) { 
         /keypress space chat 
      } else { 
         /keypress ${char} chat 
      } 
   /next loopctr 
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Type input string "Recipe" into search box in new tradeskill interface, 
| click search and select the first recipe returned in the search results. 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Sub ChooseRecipe 
      /notify COMBW_SearchArea COMBW_SearchTextEdit leftmouseup 
      /delay 5 
      /call Type "${ItemTo}" 
      :WaitForSearchButton 
         /if (!${Window[COMBW_SearchArea].Child[COMBW_SearchButton].Enabled}) /goto :WaitForSearchButton 
      /notify COMBW_SearchArea COMBW_SearchButton leftmouseup 
   /delay 10 
	/notify COMBW_RecipeListArea COMBW_RecipeList listselect ${Window[COMBW_RecipeListArea].Child[COMBW_RecipeList].List[${ItemTo}]} 
	/delay 2 
	/notify COMBW_RecipeListArea COMBW_RecipeList leftmouse ${Window[COMBW_RecipeListArea].Child[COMBW_RecipeList].List[${ItemTo}]}  /return
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Combine error
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Event_CombineError 
    /varset EndingVar 2
/return 


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event End
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_End
    /call Ending
/return

Sub Ending
    /echo macro ending
    /camp desktop
    /end 
/return
 
Last edited:
Blessed Dust of Tunare..

OH WHAT a PAIN...

Again uses new UI ... ensure you have made atleast one of these before hand

Rich (BB code):
| 
| TunareDust.mac
| 
|
| Written by ArmySoldier
|
|
| You must have the imbued emeralds on your toon before you start
|
|
| Blessed dust of tunare is created with imbued emerald / Celestial essence and a jar of acid
|
|
| You also need a mixing bowl in LAST slot and the rest need to be empty 10 slot bags.. 
|
| of course some of those slots will be taken with the emeralds.  
| 
|
| This Macro works best in the Abysmal Sea since all the components are there.
| You WILL need to be by Uiyaniv Tu`Vrozix @ -191,229,96 for this macro to work.
|
| Ensure when you right click on a TS container.. the new UI comes up
|
|
|Inventory
| _______
|| 1 | 5 |
||___|___|
|| 2 | 6 | 
||___|___|
|| 3 | 7 |
||___|___|
|| 4 | 8 |
||___|___|
|


#event CombineError "#*#There was no place to put that#*#" 
#event CombineError "#*#You cannot combine these items in this container type!#*#" 
#event CombineError "#*#did not accept these items#*#" 
#event CombineError "#*#You are missing#*#"
#event ContUsed "#*#Someone else is using that. Try again later.#*#"
#event End "#*#can not afford#*#"
#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc

Sub Main

    /declare i int outer
    /declare CompA item outer
    /declare CompB item outer
    /declare CompC item outer
    /declare CompD item outer
    /declare CompE item outer
    /declare CompF item outer
    /declare CombItemName string outer
    /declare ItemTo string outer
    /declare EndingVar int outer

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Begin 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    :start
    /if (${FindItemCount[=Imbued Emerald]}<1) /call Ending
    /varset CompB "Celestial Solvent"
    /varset CompC "The Scent of Marr"
    /varset CombItemName "CE"
    /varset ItemTo "Celestial Essence (The Scent of Marr)"

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Buy CE components 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /varset EndingVar 1
    /delay 1s
    /target Uiyaniv
    /face
    /delay 1s
    /nomodkey /click right target
    /delay 1s
    /call OpenPacks
    /call Buy ${CompB} 60
    /delay 1s
    /call Buy ${CompC} 60
    /call ClosePacks
    /keypress esc
    /delay 2s

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| MAKE CE
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /itemnotify pack8 rightmouseup
      /call ChooseRecipe
      /call DoCombine
      /call ClosePacks
      /keypress Esc
      /keypress Esc

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Buy Acid ..go to forge and make dust
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /varset CompA "Jar of Acid"
    /varset CombItemName "Dust"
    /varset ItemTo "Blessed Dust of Tunare"

    /target Uiyaniv
    /face
    /delay 1s
    /nomodkey /click right target
    /delay 1s
    /call Buy ${CompA} 60
    /keypress esc
    /keypress esc

    /look
    /call GoToKiln
    /look
    /delay 1s
    /nomodkey /click left item
    /delay 2s
    /doevents
    /delay 1s
    /call ChooseRecipe
    /call DoCombine
    /call ClosePacks
    /keypress Esc
    /keypress Esc

    /call GoToMerchantA
    /goto :start
/return


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Clear Cursor
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub ClearCursor 
    :Loop 
      /if (!${Cursor.ID}) /return 
      /autoinv 
|      /destroy	
      /delay ${Math.Calc[${DelayMult}*5]}s
      /doevents 
      /goto :Loop 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub DoCombine
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub DoCombine
        /call ClearCursor 
    :Loop 
	/notify TradeSkillWnd CombineButton leftmouseup 
	/delay 10 
	/notify TradeSkillWnd AutoInvButton leftmouseup 
	/delay 5 
	/notify TradeSkillWnd AutoInvButton leftmouseup 
      	/doevents 
      /if (${EndingVar}==1) /goto :Loop
      /varset EndingVar 1 
      /delay 5 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Type out the input string.  Only non-alphabetic character 
| currently handled is space.
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
Sub Type(InStr) 
   /declare char string local 
   /declare loopctr int local 
   /for loopctr 1 to ${InStr.Length} 
      /varset char ${InStr.Mid[${loopctr},1]} 
      /if (!${char.Length}) { 
         /keypress space chat 
      } else { 
         /keypress ${char} chat 
      } 
   /next loopctr 
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Type input string "Recipe" into search box in new tradeskill interface, 
| click search and select the first recipe returned in the search results. 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Sub ChooseRecipe 
      /notify COMBW_SearchArea COMBW_SearchTextEdit leftmouseup 
      /delay 5 
      /call Type "${ItemTo}" 
      :WaitForSearchButton 
         /if (!${Window[COMBW_SearchArea].Child[COMBW_SearchButton].Enabled}) /goto :WaitForSearchButton 
      /notify COMBW_SearchArea COMBW_SearchButton leftmouseup 
   /delay 10 
	/notify COMBW_RecipeListArea COMBW_RecipeList listselect ${Window[COMBW_RecipeListArea].Child[COMBW_RecipeList].List[${ItemTo}]} 
	/delay 2 
	/notify COMBW_RecipeListArea COMBW_RecipeList leftmouse ${Window[COMBW_RecipeListArea].Child[COMBW_RecipeList].List[${ItemTo}]}  /return
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Combine error
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Event_CombineError 
    /varset EndingVar 2
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Container is being used
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Event_ContUsed
    /echo Container in use. Waiting 30 seconds and trying again.
    /delay 30s
    /itemtarget "Kiln"
    /delay 1s
    /nomodkey /click left item
    /delay 2s
    /doevents
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event End
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_End
    /call Ending
/return

Sub Ending
    /echo macro ending
    /camp desktop
    /end 
/return


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub MOVEMENT SUBS - Merchants
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub GoToMerchantA
  /echo Going to Uiyaniv Tu`Vrozix.
  :PullMoveLoopa
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -330.40,264.40
  /if (${Math.Distance[-330.40,264.40]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-330.40,264.40]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopb
  }
  /goto :PullMoveLoopa
  /delay 1s
  :PullMoveLoopb
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -232.21,260.29
  /if (${Math.Distance[-232.21,260.29]}>2) {
    /nomodkey /keypress forward hold
    /nomodkey /keypress USE
  }
  /if (${Math.Distance[-232.21,260.29]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopc
  }
  /goto :PullMoveLoopb
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -210.45,247.35
  /if (${Math.Distance[-210.45,247.35]}>2) {
    /nomodkey /keypress forward hold
    /nomodkey /keypress USE
    /nomodkey /keypress USE
  }
  /if (${Math.Distance[-210.45,247.35]}<=2) {
    /nomodkey /keypress forward
    /goto :Merch
  }
  /goto :PullMoveLoopc
  /delay 1s
  :Merch
  /target Uiyaniv
  /if (${Me.State.Equal[SIT]}) /stand
  /face
  /if (${Target.Distance}>10) /nomodkey /keypress forward hold 
  /if (${Target.Distance}<=10) {
    /nomodkey /keypress forward
    /goto :end
  }
  /goto :Merch
  :end
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub move to Kiln
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub GoToKiln
  /echo Going to kiln.
  :PullMoveLoopa
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -210.45,247.35
  /if (${Math.Distance[-210.45,247.35]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-210.45,247.35]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopb
  }
  /goto :PullMoveLoopa
  /delay 1s
  :PullMoveLoopb
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -232.21,260.29
  /if (${Math.Distance[-232.21,260.29]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-232.21,260.29]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopc
  }
  /goto :PullMoveLoopb
  /delay 1s
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -330.40,264.40
  /if (${Math.Distance[-330.40,264.40]}>2) {
    /nomodkey /keypress forward hold
    /nomodkey /keypress USE
  }
  /if (${Math.Distance[-330.40,264.40]}<=2) {
    /nomodkey /keypress forward
    /goto :kiln
  }
  /goto :PullMoveLoopc
  /delay 1s
  :Kiln
  /itemtarget "Kiln"
  /if (${Me.State.Equal[SIT]}) /stand
  /face
  /if (${Target.Distance}>10) /nomodkey /keypress forward hold 
  /if (${Target.Distance}<=10) {
    /nomodkey /keypress forward
    /goto :end
  }
  /goto :Kiln
  :end
/return
 
I just used this smithing MAC to go from 2 - 115 on a new toon ..

modified overrides original mac.

12/23/05 updated code.

smithing.mac
Rich (BB code):
| 
| smithing.mac
| Takes you from 1 to 115 in smithing
| Version 2.7
| Date: September 14, 2004
|
| 12/28/05: ADDED Salvage event
|
| 12/23/05: Put Delays back in .. some folks having issues with out them
|
| 12/18/05: Removed Selling of reusable components by Army Soldier
|           Changed GoToForge to a LOC since the /itemtarget does not have 
|              anything on cursor
|           Updated code so it would open forge
|           Updated a bit of the movement code 
|
|
| 11/14/05: Modified code for struct changes by Army Soldier
|
| **** CENTER YOUR MOUSE **** 
|
| Please be sure to get the lastest updates at http://www.soc-music.com/mq2/
|
| Before are the settings you need to change for you.
| This Macro can take you up to 115 in Blacksmithing. 
| SkillMaxWanted can be change to what skill you want to stop at.
| MerchantNameA is which merchant has the sheet metals.
| MerchantNameB is which merchant has the molds.
| MerchantNamec is which merchant has the water.
| You will need to change the DelayMult to higher if you are laggy, this
|   number will be multiplied to the default delay.
|
| This Macro works best in the Abysmal Sea since all the components are there.
| You WILL need to be behind Snokin Breaksteel for this macro to work.
|
| Disclaimer:
| Code was used from other programers also from the MQ Forums.
| This macro may not work any other place then the Abysmal Sea.
| 


#event CombineError "#*#There was no place to put that#*#" 
#event CombineError "#*#You cannot combine these items in this container type!#*#" 
#event CombineError "#*#did not accept these items#*#" 
#event ContUsed "#*#Someone else is using that. Try again later.#*#"

#Event Salvage "You failed the combine, but you managed to recover #*#"

#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc

Sub Main
    /declare OldSkill int outer
    /declare SkillMaxWanted int outer
    /declare PackCode string outer 
    /declare Component[10] string outer 
    /declare i int outer
    /declare MerchantNameA string Outer
    /declare MerchantNameB string Outer
    /declare MerchantNameC string Outer
    /declare CompA item outer
    /declare CompB item outer
    /declare CompC item outer
    /declare CombItemName string outer
    /declare ItemTo string outer
    /declare EndingVar int outer
    /declare Levelname int outer
    /declare DelayMult int outer
    /varset OldSkill ${Me.Skill[Blacksmithing]}

| ************************************************
| *   Change these settings to what you want.    *
| ************************************************

    /varset MerchantNameA "Snokin Breaksteel"
    /varset MerchantNameB "Cevroy Sharpaxe"
    /varset MerchantNameC "Dray Cuves"
    /varset SkillMaxWanted 115
    /varset DelayMult 1

    /echo CENTER your MOUSE ... now pls
    /delay ${Math.Calc[${DelayMult}*2]}s
    /beep
    /delay ${Math.Calc[${DelayMult}*2]}s
    /beep
    /delay ${Math.Calc[${DelayMult}*2]}s

| ************************************************
| ************************************************

    :start
    /echo Blacksmithing is at ${Me.Skill[Blacksmithing]}

    /if (${Me.Skill[Blacksmithing]}>=${SkillMaxWanted}) {
      /echo Blacksmithing is at ${SkillMaxWanted}. Quiting!
      /endmacro
    }

    /if (${Me.Skill[Blacksmithing]}<92) {
      /varset CompA "gorget mold"
      /varset CompB "sheet metal"
      /varset CompC "water flask"
      /varset CombItemName "BG"
      /varset ItemTo "Banded Gorget"
    }
    /if (${Me.Skill[Blacksmithing]}>=92 && ${Me.Skill[Blacksmithing]}<102) {
      /varset CompA "cloak sectional mold"
      /varset CompB "sheet metal"
      /varset CompC "water flask"
      /varset CombItemName "BC"
      /varset ItemTo "Banded Cloak"
    }
    /if (${Me.Skill[Blacksmithing]}>=102 && ${Me.Skill[Blacksmithing]}<=115) {
      /varset CompA "mail sectional mold"
      /varset CompB "sheet metal"
      /varset CompC "water flask"
      /varset CombItemName "BM"
      /varset ItemTo "Banded Mail"
    }
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Buy Components
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

    /varset EndingVar 1
    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameA}
    /face
    /delay ${Math.Calc[${DelayMult}*2]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call OpenPacks
    /call Sell ${ItemTo}
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Buy ${CompB} 30
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call ClosePacks
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*2]}s

    /look
    /call GoToMerchantB
    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameB}
    /face
    /delay ${Math.Calc[${DelayMult}*2]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Buy ${CompA} 10
    /delay ${Math.Calc[${DelayMult}*2]}s
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*2]}s

    /look
    /call GoToMerchantC
    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameC}
    /face
    /delay ${Math.Calc[${DelayMult}*2]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Buy ${CompC} 40
    /delay ${Math.Calc[${DelayMult}*2]}s
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*2]}s


    /call GotoForge
    /itemtarget "Forge"
    /look
    /delay ${Math.Calc[${DelayMult}*2]}s
    /click left item
    /click left item
    /delay ${Math.Calc[${DelayMult}*2]}s
    /doevents
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s

    /call readIni "${CombItemName}" 
    :Begin 
       /if (${EndingVar}==1) /call ClearCursor 
       /for i 1 to 10 
             /if (${EndingVar}==1) /call AddComp "${Component[${i}]}" ${i} 
       /next i 
       /if (${EndingVar}==1) /call DoCombine 
       /doevents
       /if (${EndingVar}==1) /goto :Begin
 
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call ClosePacks
    /nomodkey /keypress esc

    /call GoToMerchantA
    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameA}
    /face
    /delay ${Math.Calc[${DelayMult}*2]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Sell ${ItemTo}
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Sell ${CompA}
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call ClosePacks
    /keypress esc

    /goto :start
    /doevents
    /return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub READ Ini File
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub readIni(RecipeName) 
    /declare Container string 

    /echo Running ${RecipeName} recipe 

   /if (${Ini["smithing.ini","${RecipeName}",-1,"NOTFOUND"].Equal["NOTFOUND"]}) { 
        /echo Recipe ${RecipeName} not found 
        /endmacro 
    } 

   /varset Container ${Ini[smithing.ini,${RecipeName},Cont,Enviro]} 

   /if (${Container.Equal[Enviro]}) { 
        /varset PackCode Enviro 
   } else { 
        /varset PackCode ${FindItem[=${Container}].InvSlot} 
       
      /if (${PackCode.Equal[NULL]}) { 
         /echo Could not find container ${Container} 
         /varset EndingVar 2
         /return
      } 
      | pack1 = 22, ... , pack8 = 29 
      /varset PackCode pack${Math.Calc[${PackCode}-21].Int} 
   }  

   /call cleanPack "${Container}"

    /for i 1 to 10 
        /varset Component[${i}] ${Ini[smithing.ini,${RecipeName},Comp${Math.Calc[${i}-1].Int},NOTFOUND]} 
    /next i 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Clear Cursor
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
sub ClearCursor 
    :Loop 
      /if (!${Cursor.ID}) /return 
      /autoinv 
|      /destroy	
      /delay ${Math.Calc[${DelayMult}*5]}s
      /doevents 
      /goto :Loop 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Do the Combine
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
sub DoCombine 
    :Loop 
      /combine ${PackCode} 
      /delay ${Math.Calc[${DelayMult}*2]}s
      /if (${PackCode.Equal[Enviro]}) /delay ${Math.Calc[${DelayMult}*1]}s 
      /doevents 
      /if (${InvSlot[${PackCode}].Item.Items}) /goto :Loop 
      /delay 5 
      /if (${Me.Skill[Blacksmithing]}>${OldSkill}) {
        /echo Your Blacksmithing Went Up!! It's now ${Me.Skill[Blacksmithing]}!
        /varset OldSkill ${Me.Skill[Blacksmithing]}
      }
    /doevents
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Add Components
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
sub AddComp(CompName, PackSlot) 
   /if (${CompName.Equal[NOTFOUND]}) /return 

   /if (!${FindItem[=${CompName}].ID}) { 
      /echo Could not find ${CompName} in inventory 
      /beep 
      /varset EndingVar 2
      /return 
    } 

   :Loop 
      /nomodkey /ctrl /itemnotify ${FindItem[=${CompName}].InvSlot} leftmouseup 

      /if (!${Cursor.ID}) { 
         /delay ${Math.Calc[${DelayMult}*2]}s
         /goto :Loop 
      } 

   /if (${PackCode.Equal[Enviro]}) { 
      /nomodkey /itemnotify ${InvSlot[enviro${PackSlot}]} leftmouseup 
   } else { 
      /nomodkey /itemnotify in ${PackCode} ${PackSlot} leftmouseup 
   }    
   /return
 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Combine Error
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_CombineError 
    /varset EndingVar 2
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Container being used
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_ContUsed
    /echo Container in use. Waiting 30 seconds and trying again.
    /delay 30s
    /itemtarget "Forge"
    /delay ${Math.Calc[${DelayMult}*2]}s
    /nomodkey /click left item
    /delay ${Math.Calc[${DelayMult}*2]}s
    /doevents
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Salvage
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_Salvage
     /call cleanPack "${Container}"
/return 


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|MOVEMENT SUBS
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub GoToMerchantA
  /echo Going to ${MerchantNameA}.
  :PullMoveLoopa
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 18.59,221.98
  /if (${Math.Distance[18.59,221.98]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[18.59,221.98]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopb
  }
  /goto :PullMoveLoopa
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopb
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 126.89,236.86
  /if (${Math.Distance[126.89,236.86]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[126.89,236.86]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopc
  }
  /goto :PullMoveLoopb
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 130.49,259.22
  /if (${Math.Distance[130.49,259.22]}>2) {
    /nomodkey /keypress forward hold
    /nomodkey /keypress USE
    /nomodkey /keypress USE
  }
  /if (${Math.Distance[130.49,259.22]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopd
  }
  /goto :PullMoveLoopc
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopd
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 92.71,259.21
  /if (${Math.Distance[92.71,259.21]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[92.71,259.21]}<=2) {
    /nomodkey /keypress forward
    /goto :end
  }
  /goto :PullMoveLoopd
  :end
/return

Sub GoToMerchantB
  /echo Going to ${MerchantNameB}.
  :PullMoveLoopa
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 130.49,259.22
  /if (${Math.Distance[130.49,259.22]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[130.49,259.22]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopb
  }
  /goto :PullMoveLoopa
  :PullMoveLoopb
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 129.65,235.06
  /if (${Math.Distance[129.65,235.06]}>2) {
    /nomodkey /keypress forward hold 
    /nomodkey /keypress USE
  }
  /if (${Math.Distance[129.65,235.06]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopc
  }
  /goto :PullMoveLoopb
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 35.36,235.70
  /if (${Math.Distance[35.36,235.70]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[35.36,235.70]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopd
  }
  /goto :PullMoveLoopc
  :PullMoveLoopd
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 58.49,263.19
  /if (${Math.Distance[58.49,263.19]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[58.49,263.19]}<=2) {
    /nomodkey /keypress forward
    /goto :end
  }
  /goto :PullMoveLoopd
  :end
/return

Sub GoToMerchantC
  /echo Going to ${MerchantNameC}.
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -13.97,292.28
  /if (${Math.Distance[-13.97,292.28]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-13.97,292.28]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopd
  }
  /goto :PullMoveLoopc
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopd
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -56.90,285.24
  /if (${Math.Distance[-56.90,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-56.90,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoope
  }
  /goto :PullMoveLoopd
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoope
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -240.09,285.24
  /if (${Math.Distance[-240.09,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-240.09,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopf
  }
  /goto :PullMoveLoope
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopf
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -242.62,215.95
  /if (${Math.Distance[-242.62,215.95]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-242.62,215.95]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopi
  }
  /goto :PullMoveLoopf
/delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopi
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -221.62,215.95
  /if (${Math.Distance[-221.62,215.95]}>2) {
	/nomodkey /keypress forward hold 
	/nomodkey /keypress USE
}
  /if (${Math.Distance[-221.62,215.95]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopg
  }
  /goto :PullMoveLoopi
  :PullMoveLoopg
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -220.54,176.45
  /if (${Math.Distance[-220.54,176.45]}>2) {
    /nomodkey /keypress forward hold 
   /goto :PullMoveLoopg
    }
  /if (${Math.Distance[-220.54,176.45]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLooph
  }
  /goto :PullMoveLoopg
  :PullMoveLooph
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -155.54,172.52
  /if (${Math.Distance[-155.54,172.52]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-155.54,172.52]}<=2) {
    /nomodkey /keypress forward
    /goto :end
  }
  /goto :PullMoveLooph
  :end
/return 

Sub GoToForge
  /echo Going to Forge.
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopb
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -220.54,176.45
  /if (${Math.Distance[-220.54,176.45]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-220.54,176.45]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopc
  }
  /goto :PullMoveLoopb
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -215.14,215.85
  /if (${Math.Distance[-215.14,215.85]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-215.14,215.85]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopd
  }
  /goto :PullMoveLoopc
  :PullMoveLoopd
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -242.62,215.95
  /if (${Math.Distance[-242.62,215.95]}>2) {
    /nomodkey /keypress forward hold
    /nomodkey /keypress USE
  }
  /if (${Math.Distance[-242.62,215.95]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoope
  }
  /goto :PullMoveLoopd
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoope
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -240.09,285.24
  /if (${Math.Distance[-240.09,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-240.09,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopf
  }
  /goto :PullMoveLoope
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopf
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -56.90,285.24
  /if (${Math.Distance[-56.90,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-56.90,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :forge
  }
  /goto :PullMoveLoopf
  :forge
  /itemtarget "Forge"
  :PullMoveLoopg
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 62.90,293.24
  /if (${Math.Distance[62.90,293.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[62.90,293.24]}<=2) {
    /nomodkey /keypress forward
    /goto :end
  }
  /goto :PullMoveLoopg
  :end
/return
 
Last edited:
smithing.ini file needed for all smithing macros

Rich (BB code):
[BM]
Cont=Enviro
Comp0=mail sectional mold
Comp1=sheet metal
Comp2=sheet metal
Comp3=sheet metal
Comp4=water flask

[BG]
Cont=Enviro
Comp0=gorget mold
Comp1=sheet metal
Comp2=water flask

[BC]
Cont=Enviro
Comp0=cloak sectional mold
Comp1=sheet metal
Comp2=sheet metal
Comp3=water flask

[FPV]
Cont=Enviro
Comp0=plate visor mold
Comp1=medium quality folded sheet metal 
Comp2=smithy hammer
Comp3=water flask
Comp4=leather padding


[FPH]
Cont=Enviro
Comp0=plate helm mold
Comp1=medium quality folded sheet metal 
Comp2=smithy hammer
Comp3=water flask
Comp4=leather padding
Comp5=medium quality folded sheet metal 

[FPB]
Cont=Enviro
Comp0=breastplate mold
Comp1=medium quality folded sheet metal 
Comp2=smithy hammer
Comp3=water flask
Comp4=leather padding
Comp5=medium quality folded sheet metal 
Comp6=medium quality folded sheet metal 

[MQFSM]
Cont=Enviro
Comp0=water flask
Comp1=block of medium quality ore
Comp2=smithy hammer

[CE]
Cont=Collapsible Mixing Bowl
Comp0=celestial solvent
Comp1=The Scent of Marr

[MT]
Cont=Enviro
Comp0=Celestial Essence
Comp1=Mistletoe
Comp2=Elven Wine

[Hilt]
Cont=Enviro
Comp0=ruby
Comp1=blessed dust of tunare 
Comp2=smithy hammer
Comp3=celestial essence
Comp4=sheet metal
Comp5=mistletoe temper
Comp6=Hilt mold

[Blade]
Cont=Enviro
Comp0=emerald
Comp1=blessed dust of tunare 
Comp2=smithy hammer
Comp3=celestial essence
Comp4=sheet metal
Comp5=mistletoe temper
Comp6=curved blade mold

[Pommel]
Cont=Enviro
Comp0=sapphire
Comp1=blessed dust of tunare 
Comp2=smithy hammer
Comp3=celestial essence
Comp4=sheet metal
Comp5=mistletoe temper
Comp6=pommel mold

[Sickle]
Cont=Enviro
Comp0=Blessed Sickle Blade
Comp1=Blessed Sickle Pommel 
Comp2=smithy hammer
Comp3=Mistletoe Cutting Sickle

[Dust]
Cont=Enviro
Comp0=Celestial Essence
Comp1=Imbued Emerald
Comp2=Jar of Acid

[VBits]
Cont=Enviro
Comp0=Spell: Enchant Velium
Comp1=Coldain Velium Temper
Comp2=Small Piece of Velium
Comp3=Small Piece of Velium
 
Last edited:
smithing2.mac

finally finished... i took a toon from 115-188 took about 300 leather paddings.. but its done

12/28/05: added Salvage Events

USES old UI

Rich (BB code):
| 
| smithing2.mac
|
| Created by Armysoldier
|
| 12/28/05: ADDED Salvage event
|
| 12/23/05: Put Delays in .. some folks having issues with out them
|
| 12/19/05: By ArmySoldier
|           adjusted forge movement code and opening of forge code
|
|
| Using a modified smithing.mac by override
|
| Takes you from 115 to 188 in smithing
|
| SkillMaxWanted can be change to what skill you want to stop at.
| MerchantNameA is which merchant has the sheet metals.
| MerchantNameB is which merchant has the molds.
| MerchantNamec is which merchant has the water.
|
| This Mac uses the old Tradeskill UI not the new one.  Please use SmithNewUI2.mac for newUI
|
|
| This Macro works best in the Abysmal Sea since all the components are there.
| You WILL need to be behind Snokin Breaksteel for this macro to work.
|
| 


#event CombineError "#*#There was no place to put that#*#" 
#event CombineError "#*#You cannot combine these items in this container type!#*#" 
#event CombineError "#*#did not accept these items#*#" 
#event ContUsed "#*#Someone else is using that. Try again later.#*#"

#Event Salvage "You failed the combine, but you managed to recover #*#"

#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc

Sub Main
    /declare OldSkill int outer
    /declare SkillMaxWanted int outer
    /declare PackCode string outer 
    /declare Component[10] string outer 
    /declare i int outer
    /declare MerchantNameA string Outer
    /declare MerchantNameB string Outer
    /declare MerchantNameC string Outer
    /declare CompA item outer
    /declare CompB item outer
    /declare CompC item outer
    /declare CompD item outer
    /declare CompE item outer
    /declare CompF item outer
    /declare CombItemName string outer
    /declare ItemTo string outer
    /declare EndingVar int outer
    /declare Levelname int outer
    /declare DelayMult int outer
    /varset OldSkill ${Me.Skill[Blacksmithing]}

| ************************************************
| *   Change these settings to what you want.    *
| ************************************************

    /varset MerchantNameA "Snokin Breaksteel"
    /varset MerchantNameB "Cevroy Sharpaxe"
    /varset MerchantNameC "Dray Cuves"
    /varset SkillMaxWanted 300
    /varset DelayMult 1


    /echo CENTER your MOUSE ... now pls
    /delay ${Math.Calc[${DelayMult}*2]}s
    /beep
    /delay ${Math.Calc[${DelayMult}*2]}s
    /beep
    /delay ${Math.Calc[${DelayMult}*2]}s


| ************************************************
| MAKE FOLDED SHEETS 10
| ************************************************

    :start
    /echo Blacksmithing is at ${Me.Skill[Blacksmithing]}

    /if (${Me.Skill[Blacksmithing]}>=${SkillMaxWanted}) {
      /echo Blacksmithing is at ${SkillMaxWanted}. Quiting!
      /endmacro
    }

    /if (${Me.Skill[Blacksmithing]}<115) {
    /echo Please Run Smithing.mac, your skill is below 115
    /endMacro
    }
    /if (${Me.Skill[Blacksmithing]}>=188) {
    /echo Please Run Veliumbits.mac or Mistletoe.mac , your skill is above 188
    /endMacro
    }  
  
   /if (${FindItemCount[=Leather Padding]}<5) {
    /echo you have less than 5 Leather Padding .. TIME TO FARM
    /endMacro
    }
    /varset CompB "block of medium quality ore"
    /varset CompC "water flask"
    /varset CombItemName "MQFSM"
    /varset ItemTo "Medium quality folded sheet metal"

    /varset EndingVar 1
    /delay ${Math.Calc[${DelayMult}*1]}s
    /target ${MerchantNameA}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call OpenPacks
    /call Buy ${CompB} 15
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call ClosePacks
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*2]}s

    /look
    /call GoToMerchantB

    /look
    /call GoToMerchantC
    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameC}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompC} 20
    /delay ${Math.Calc[${DelayMult}*1]}s
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Combinefunction

| ************************************************
| MAKE Fine PLATE Visors
| ************************************************

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Goto Merch A then right to B
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /if (${Me.Skill[Blacksmithing]}<=162) {

    /echo start making FPV
    /varset EndingVar 1
    /varset CompA "plate visor mold"
    /varset CompC "water flask"
    /varset CombItemName "FPV"
    /varset ItemTo "Fine Plate Visor"
    /call GoToMerchantA
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call GoToMerchantB
    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameB}
    /face
    /delay ${Math.Calc[${DelayMult}*2]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompA} 15
    /delay ${Math.Calc[${DelayMult}*1]}s
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*1]}s

    /look
    /call GoToMerchantC
    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameC}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompC} 20
    /delay ${Math.Calc[${DelayMult}*1]}s
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*1]}s

    /call Combinefunction
    /call Selloff
}

| ************************************************
| MAKE Fine PLATE Helms
| ************************************************

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Goto Merch A then right to B
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /if (${Me.Skill[Blacksmithing]}>=163 && ${Me.Skill[Blacksmithing]}<=178) {
    /echo start making FPH
    /varset EndingVar 1
    /varset CompA "plate helm mold"
    /varset CompC "water flask"
    /varset CombItemName "FPH"
    /varset ItemTo "Fine Plate Helm"
    /call GoToMerchantA
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call GoToMerchantB
    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameB}
    /face
    /delay ${Math.Calc[${DelayMult}*2]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompA} 7
    /delay ${Math.Calc[${DelayMult}*1]}s
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*1]}s

    /look
    /call GoToMerchantC
    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameC}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompC} 20
    /delay ${Math.Calc[${DelayMult}*1]}s
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*1]}s

    /call Combinefunction
    /call Selloff
}
| ************************************************
| MAKE Fine PLATE Helms
| ************************************************

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Goto Merch A then right to B
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /if (${Me.Skill[Blacksmithing]}>=179 && ${Me.Skill[Blacksmithing]}<189) {
    /echo start making FPB
    /varset EndingVar 1
    /varset CompA "breastplate mold"
    /varset CompC "water flask"
    /varset CombItemName "FPB"
    /varset ItemTo "Fine Plate Breastplate"
    /call GoToMerchantA
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call GoToMerchantB
    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameB}
    /face
    /delay ${Math.Calc[${DelayMult}*2]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompA} 5
    /delay ${Math.Calc[${DelayMult}*1]}s
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*1]}s

    /look
    /call GoToMerchantC
    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameC}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompC} 20
    /delay ${Math.Calc[${DelayMult}*1]}s
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*1]}s

    /call Combinefunction
    /call Selloff
}
/goto :start
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|The Selloff
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Selloff
    /nomodkey /keypress esc
    /echo sell off to merch B
    /target ${MerchantNameB}
    /face  
    :PullMoveLoopSell
    /if (${Me.State.Equal[SIT]}) /stand 
    /face nolook loc 58.49,263.19
    /if (${Math.Distance[58.49,263.19]}>2) /nomodkey /keypress forward hold 
    /if (${Math.Distance[58.49,263.19]}<=2) {
    /nomodkey /keypress forward
    /goto :end
    }
    /goto :PullMoveLoopSell
    :end
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Sell ${ItemTo}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${CompA}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call ClosePacks
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*1]}0s
    /call GoToMerchantA
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|The CombineFunction
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Combinefunction
    /call GotoForge
    /look
    /delay ${Math.Calc[${DelayMult}*1]}s
    /click left item
    /click left item
    /delay ${Math.Calc[${DelayMult}*2]}s
    /doevents
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s

    /call readIni "${CombItemName}" 
    :Begin 
       /if (${EndingVar}==1) /call ClearCursor 
       /for i 1 to 10 
             /if (${EndingVar}==1) /call AddComp "${Component[${i}]}" ${i} 
       /next i 
       /if (${EndingVar}==1) /call DoCombine 
    /doevents
    /autoinv
    /delay ${Math.Calc[${DelayMult}*1]}s
    /autoinv
    /delay ${Math.Calc[${DelayMult}*1]}s

       /if (${EndingVar}==1) /goto :Begin
 
    /autoinv
    /delay ${Math.Calc[${DelayMult}*1]}s
    /autoinv
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call ClosePacks
    /doevents
/return


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|READ INI sub
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Sub readIni(RecipeName) 
    /declare Container string 

    /echo Running ${RecipeName} recipe 

   /if (${Ini["smithing.ini","${RecipeName}",-1,"NOTFOUND"].Equal["NOTFOUND"]}) { 
        /echo Recipe ${RecipeName} not found 
        /endmacro 
    } 

   /varset Container ${Ini[smithing.ini,${RecipeName},Cont,Enviro]} 

   /if (${Container.Equal[Enviro]}) { 
        /varset PackCode Enviro 
   } else { 
        /varset PackCode ${FindItem[=${Container}].InvSlot} 
       
      /if (${PackCode.Equal[NULL]}) { 
         /echo Could not find container ${Container} 
         /varset EndingVar 2
         /return
      } 
      | pack1 = 22, ... , pack8 = 29 
      /varset PackCode pack${Math.Calc[${PackCode}-21].Int} 
   }  

   /call cleanPack "${Container}"

    /for i 1 to 10 
        /varset Component[${i}] ${Ini[smithing.ini,${RecipeName},Comp${Math.Calc[${i}-1].Int},NOTFOUND]} 
    /next i 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Clear Cursor
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub ClearCursor 
    :Loop 
      /if (!${Cursor.ID}) /return 
      /autoinv 
|      /destroy	
      /delay 5s
      /doevents 
      /goto :Loop 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub DoCombine
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub DoCombine 
    :Loop 
      /combine ${PackCode} 
      /delay ${Math.Calc[${DelayMult}*1]}s
      /if (${PackCode.Equal[Enviro]}) /delay ${Math.Calc[${DelayMult}*1]}s 
      /doevents 
      /if (${InvSlot[${PackCode}].Item.Items}) /goto :Loop 
      /delay 5
      /if (${Me.Skill[Blacksmithing]}>${OldSkill}) {
        /echo Your Blacksmithing Went Up!! It's now ${Me.Skill[Blacksmithing]}!
        /varset OldSkill ${Me.Skill[Blacksmithing]}
      }
    /doevents
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub add Components
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub AddComp(CompName, PackSlot) 
   /if (${CompName.Equal[NOTFOUND]}) /return 

   /if (!${FindItem[=${CompName}].ID}) { 
      /echo Could not find ${CompName} in inventory 
      /beep 
      /varset EndingVar 2
      /return 
    } 

   :Loop 
      /nomodkey /ctrl /itemnotify ${FindItem[=${CompName}].InvSlot} leftmouseup 

      /if (!${Cursor.ID}) { 
         /delay ${Math.Calc[${DelayMult}*1]}s
         /goto :Loop 
      } 

   /if (${PackCode.Equal[Enviro]}) { 
      /nomodkey /itemnotify ${InvSlot[enviro${PackSlot}]} leftmouseup 
   } else { 
      /nomodkey /itemnotify in ${PackCode} ${PackSlot} leftmouseup 
   }
   /doevents    
   /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Combine error
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Event_CombineError 
    /varset EndingVar 2
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Container is being used
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Event_ContUsed
    /echo Container in use. Waiting 30 seconds and trying again.
    /delay 30s
    /itemtarget "Forge"
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click left item
    /delay ${Math.Calc[${DelayMult}*2]}s
    /doevents
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Salvage
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_Salvage
     /call cleanPack "${Container}"
/return


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub MOVEMENT SUBS - Merchants
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Merch A - Snokin
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub GoToMerchantA
  /echo Going to ${MerchantNameA}.
  :PullMoveLoopa
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 18.59,221.98
  /if (${Math.Distance[18.59,221.98]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[18.59,221.98]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopb
  }
  /goto :PullMoveLoopa
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopb
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 126.89,236.86
  /if (${Math.Distance[126.89,236.86]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[126.89,236.86]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopc
  }
  /goto :PullMoveLoopb
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 130.49,259.22
  /if (${Math.Distance[130.49,259.22]}>2) {
    /nomodkey /keypress forward hold
    /nomodkey /keypress USE
    /nomodkey /keypress USE
  }
  /if (${Math.Distance[130.49,259.22]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopd
  }
  /goto :PullMoveLoopc
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopd
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 92.71,259.21
  /if (${Math.Distance[92.71,259.21]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[92.71,259.21]}<=2) {
    /nomodkey /keypress forward
    /goto :end
  }
  /goto :PullMoveLoopd
  :end
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Merch B - Cevroy
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub GoToMerchantB
  /echo Going to ${MerchantNameB}.
  :PullMoveLoopa
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 130.49,259.22
  /if (${Math.Distance[130.49,259.22]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[130.49,259.22]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopb
  }
  /goto :PullMoveLoopa
  :PullMoveLoopb
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 129.65,235.06
  /if (${Math.Distance[129.65,235.06]}>2) {
    /nomodkey /keypress forward hold 
    /nomodkey /keypress USE
  }
  /if (${Math.Distance[129.65,235.06]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopc
  }
  /goto :PullMoveLoopb
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 35.36,235.70
  /if (${Math.Distance[35.36,235.70]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[35.36,235.70]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopd
  }
  /goto :PullMoveLoopc
  :PullMoveLoopd
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 58.49,263.19
  /if (${Math.Distance[58.49,263.19]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[58.49,263.19]}<=2) {
    /nomodkey /keypress forward
    /goto :end
  }
  /goto :PullMoveLoopd
  :end
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Merch C - Dray
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub GoToMerchantC
  /echo Going to ${MerchantNameC}.
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -17.97,282.28
  /if (${Math.Distance[-17.97,282.28]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-17.97,282.28]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopd
  }
  /goto :PullMoveLoopc
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopd
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -56.90,285.24
  /if (${Math.Distance[-56.90,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-56.90,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoope
  }
  /goto :PullMoveLoopd
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoope
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -240.09,285.24
  /if (${Math.Distance[-240.09,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-240.09,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopf
  }
  /goto :PullMoveLoope
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopf
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -242.62,215.95
  /if (${Math.Distance[-242.62,215.95]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-242.62,215.95]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopi
  }
  /goto :PullMoveLoopf
/delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopi
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -221.62,215.95
  /if (${Math.Distance[-221.62,215.95]}>2) {
	/nomodkey /keypress forward hold 
	/nomodkey /keypress USE
}
  /if (${Math.Distance[-221.62,215.95]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopg
  }
  /goto :PullMoveLoopi
  :PullMoveLoopg
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -220.54,176.45
  /if (${Math.Distance[-220.54,176.45]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-220.54,176.45]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLooph
  }
  /goto :PullMoveLoopg
  :PullMoveLooph
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -155.54,172.52
  /if (${Math.Distance[-155.54,172.52]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-155.54,172.52]}<=2) {
    /nomodkey /keypress forward
    /goto :end
  }
  /goto :PullMoveLooph
  :end
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub move to forge
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub GoToForge
  /echo Going to Forge.
  :PullMoveLoopb
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -220.54,176.45
  /if (${Math.Distance[-220.54,176.45]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-220.54,176.45]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopc
  }
  /goto :PullMoveLoopb
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -215.14,215.85
  /if (${Math.Distance[-215.14,215.85]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-215.14,215.85]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopd
  }
  /goto :PullMoveLoopc
  :PullMoveLoopd
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -242.62,215.95
  /if (${Math.Distance[-242.62,215.95]}>2) {
    /nomodkey /keypress forward hold
    /nomodkey /keypress USE
  }
  /if (${Math.Distance[-242.62,215.95]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoope
  }
  /goto :PullMoveLoopd
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoope
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -240.09,285.24
  /if (${Math.Distance[-240.09,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-240.09,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopf
  }
  /goto :PullMoveLoope
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopf
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -56.90,285.24
  /if (${Math.Distance[-56.90,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-56.90,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :forge
  }
  /goto :PullMoveLoopf
  :forge
  /itemtarget "Forge"
  :PullMoveLoopg
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 62.90,293.24
  /if (${Math.Distance[62.90,293.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[62.90,293.24]}<=2) {
    /nomodkey /keypress forward
    /goto :end
  }
  /goto :PullMoveLoopg
  :end
/return


MISTLETOE.MAC

Rich (BB code):
| 
| Mistletoe.mac
| Trivial is 335
|
| Written by ArmySoldier
|
| 12/28/05: ADDED Salvage event
|
| 12/25/05: ADDED Pause event
|
| You must have the tunare dust and mistletoe on your toon before you start
|
|
| Blessed dust of tunare is created with imbued emerald / Celestial essence and a jar of acid
|
| Mistletoe can be bought at several places.. I use Mirao Frostpouch @ -88, -210 in POK
|
|
| I suggest Running brewing.mac first and get your skill up to 200
|
| You also need a mixing bowl in LAST slot and the rest need to be empty 10 slot bags.. 
|
| of course some of those slots will be taken with the mistletoe and dust.  And your smithy hammer!!!!!
| 
| This MAcro needs 120 Dusts and 120 Mistletoes on your toon in any bag BUT 1
| And another 120 of each in the bank (bag1 and first 2 slots of bag 2)
|
| This Macro works best in the Abysmal Sea since all the components are there.
| You WILL need to be by Uiyaniv Tu`Vrozix @ -191,229,96 for this macro to work.
|
| This macro is set to swap bank bag 1&2 with bag 1&2 in inventory Which is where u need to have your extra stuff
| Ensure BANK BAGS 3-6 are empty for sickle transfer
|
|   BANK SLOTS            Inventory
| _________________        _______
|| 1 | 5 | 9  | 13 |      | 1 | 5 |
||___|___|____|____|      |___|___|
|| 2 | 6 | 10 | 14 |      | 2 | 6 |
||___|___|____|____|      |___|___|
|| 3 | 7 | 11 | 15 |      | 3 | 7 |
||___|___|____|____|      |___|___|
|| 4 | 8 | 12 | 16 |      | 4 | 8 |
||___|___|____|____|      |___|___|
|
| ENSURE they are 10 slot .. and only have mistletoe and tunare dust for 40 more combines
|
| IF you do not want it to automatically swap bags.. or maybe use a mule .. then REM out the /call BagSwap line
|
| /echo pause and /echo unpause .... self explainatory

#event CombineError "#*#There was no place to put that#*#" 
#event CombineError "#*#You cannot combine these items in this container type!#*#" 
#event CombineError "#*#did not accept these items#*#" 
#event ContUsed "#*#Someone else is using that#*#"
#event End "#*#can not afford#*#"
#event Pause "[MQ2] pause"
#event Unpause "[MQ2] unpause"

#Event Salvage "You failed the combine, but you managed to recover #*#"

#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc

Sub Main

    /declare PackCode string outer 
    /declare Component[10] string outer 
    /declare i int outer
    /declare MerchantNameA string Outer
    /declare MerchantNameB string Outer
    /declare MerchantNameC string Outer
    /declare CompA item outer
    /declare CompB item outer
    /declare CompC item outer
    /declare CompD item outer
    /declare CompE item outer
    /declare CompF item outer
    /declare CompG item outer
    /declare CombItemName string outer
    /declare ItemTo string outer
    /declare EndingVar int outer
    /declare EndIt int outer
    /declare PauseIt int outer
    /declare Cnt int outer
    /declare Cnt2 int outer
    /declare runs int outer
    /declare OldSkill int outer
    /declare DelayMult int outer
    /varset OldSkill ${Me.Skill[Blacksmithing]}
    /varset i 1
    /varset runs 1
    /varset DelayMult 1
    /varset EndIt 1
    /varset PauseIt 1


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Begin 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    :start
    /if (${FindItemCount[=Blessed Dust of Tunare]}<3) /call Ending
    /varset CompB "Celestial Solvent"
    /varset CompC "The Scent of Marr"
    /varset CombItemName "CE"
    /varset ItemTo "Celestial Essence"

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Buy CE components 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /varset EndingVar 1
    /varset Cnt ${FindItemCount[=Celestial Essence]}
    /varset Cnt2 ${FindItemCount[=Mistletoe Temper]}
    /echo ${Cnt} CE on hand
    /echo ${Cnt2}
    /varset Cnt2 ${Math.Calc[240-${Cnt2}]}
    /echo ${Cnt2}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /target Uiyaniv
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call OpenPacks
    /call Buy ${CompB} ${Math.Calc[${Cnt2}-${Cnt}]}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompC} ${Math.Calc[${Cnt2}-${Cnt}]}
    /call ClosePacks
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*2]}s

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| MAKE CE
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /itemnotify pack8 rightmouseup

    /if  (${Window[TradeskillWnd].Open}) {
         /nomodkey /notify TradeskillWnd ExperimentButton leftmousehold
         /nomodkey /notify TradeskillWnd ExperimentButton leftmouseup
	 }
   
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call CombineSubs

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Buy wine and make Mistletoe Temper
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    :Nextrun
    /varset EndingVar 1
    /varset CompB "Elven Wine"
    /varset CombItemName "MT"
    /varset ItemTo "Mistletoe Temper"
    /varset Cnt ${FindItemCount[=Mistletoe]}
    /echo ${Cnt} Mistletoe On Hand
    /look
    /call GoToMerchantB
    /target Dray
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompB} ${Cnt}
    /keypress esc
    /keypress esc

    /look
    /call GoToBarrel
    /look
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click left item
    /doevents
    /delay ${Math.Calc[${DelayMult}*2]}s
    /click left item
    /doevents
    /click left item
    /doevents
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call CombineSubs

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Buy Molds and sheets
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /varset EndingVar 1
    /varset CompA "Curved Blade Mold"
    /varset CompB "Hilt Mold"
    /varset CompC "Pommel Mold"
    /varset CompD "Ruby"
    /varset CompE "Emerald"
    /varset CompF "Sapphire"
    /varset CompG "Sheet Metal"

    /call GoToMerchantC

    /target Esunta
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /varset Cnt ${FindItemCount[=Blessed Sickle Blade]}
    /echo ${Cnt} Blades on hand
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompA} ${Math.Calc[10-${Cnt}]}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /varset Cnt ${FindItemCount[=Blessed Sickle Hilt]}
    /echo ${Cnt} Hilts On Hand
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompB} ${Math.Calc[10-${Cnt}]}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /varset Cnt ${FindItemCount[=Blessed Sickle Pommel]}
    /echo ${Cnt} Pommels on hand
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompC} ${Math.Calc[10-${Cnt}]}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /keypress esc
    /keypress esc

    /call GoToMerchantD
    /target Snokin
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompG} 30
    /delay ${Math.Calc[${DelayMult}*1]}s
    /keypress esc
    /keypress esc

    /call GoToMerchantE
    /target Glirina Morningbloom
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
/delay ${Math.Calc[${DelayMult}*1]}s
    /varset Cnt ${FindItemCount[=Blessed Sickle Blade]}
    /echo ${Cnt} Blades on Hand
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompE} ${Math.Calc[10-${Cnt}]}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /varset Cnt ${FindItemCount[=Blessed Sickle Hilt]}
    /echo ${Cnt} Hilts On hand
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompD} ${Math.Calc[10-${Cnt}]}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /varset Cnt ${FindItemCount[=Blessed Sickle Pommel]}
    /echo ${Cnt} Pommels On Hand
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompF} ${Math.Calc[10-${Cnt}]}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /keypress esc
    /keypress esc

    /call GoToForge

    /look
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click left item
    /doevents
    /delay ${Math.Calc[${DelayMult}*2]}s
    /click left item
    /doevents
    /click left item
    /doevents
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s

    /varset CombItemName "Hilt"
    /varset ItemTo "Blessed Sickle Hilt" 
    /call Combine
    /delay ${Math.Calc[${DelayMult}*2]}s
    
    /varset CombItemName "Blade"
    /varset ItemTo "Blessed Sickle Blade" 
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Combine
    /delay ${Math.Calc[${DelayMult}*2]}s

    /varset CombItemName "Pommel"
    /varset ItemTo "Blessed Sickle Pommel" 
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Combine
    /delay ${Math.Calc[${DelayMult}*2]}s

    /varset CombItemName "Sickle"
    /varset ItemTo "Mistletoe Cutting Sickle" 
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Combine
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call ClosePacks
    /nomodkey /keypress esc
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call GoTomerchA
    /varset runs ${Math.Calc[${runs}+1]}
    /echo Round ${runs} --- WOOO HOOO
    /if (${runs}<=5) /goto :Nextrun

    
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Goto bank and swap bags 1 and move sickles to bank
|Bags 3-6 in bank need to be empty except for bag 1 which has next set of combine items
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    /if (${EndIt}==2) /EndMAcro
    /call GoToBanker2
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Bagswap
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call GoToMerchantA

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Goto Merch A and start over
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /call GoToMerchantA
    /goto :start
/return


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Read Ini file
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub readIni(RecipeName) 
    /declare Container string 

    /echo Running ${RecipeName} recipe 

   /if (${Ini["smithing.ini","${RecipeName}",-1,"NOTFOUND"].Equal["NOTFOUND"]}) { 
        /echo Recipe ${RecipeName} not found 
        /endmacro 
    } 

   /varset Container ${Ini[smithing.ini,${RecipeName},Cont,Enviro]} 

   /if (${Container.Equal[Enviro]}) { 
        /varset PackCode Enviro 
   } else { 
        /varset PackCode ${FindItem[=${Container}].InvSlot} 
       
      /if (${PackCode.Equal[NULL]}) { 
         /echo Could not find container ${Container} 
         /varset EndingVar 2
         /return
      } 
      | pack1 = 22, ... , pack8 = 29 
      /varset PackCode pack${Math.Calc[${PackCode}-21].Int} 
   }  

   /call cleanPack "${Container}"

    /for i 1 to 10 
        /varset Component[${i}] ${Ini[smithing.ini,${RecipeName},Comp${Math.Calc[${i}-1].Int},NOTFOUND]} 
    /next i 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub CombineSubs
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub CombineSubs

    /call readIni "${CombItemName}" 
    :Begin 
       /if (${EndingVar}==1) /call ClearCursor 
       /for i 1 to 10 
             /if (${EndingVar}==1) /call AddComp "${Component[${i}]}" ${i} 
       /next i 
       /if (${EndingVar}==1) /call DoCombineSubs
       /if (${EndingVar}==1) /goto :Begin
 
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call ClosePacks
    /nomodkey /keypress esc
    /varset EndingVar 1
    /doevents
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Combine
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Combine

    /call readIni "${CombItemName}" 
    :Begin 
       /doevents
       /if (${EndingVar}==1) /call ClearCursor 
       /for i 1 to 10 
             /if (${EndingVar}==1) /call AddComp "${Component[${i}]}" ${i} 
       /next i 
       /if (${EndingVar}==1) /call DoCombine 
       /if (${EndingVar}==1) /goto :Begin
 
    /delay ${Math.Calc[${DelayMult}*1]}s
    /varset EndingVar 1
    /doevents
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Clear Cursor
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub ClearCursor 
    :Loop 
      /if (!${Cursor.ID}) /return 
      /autoinv 
|      /destroy	
      /delay ${Math.Calc[${DelayMult}*5]}s
      /doevents 
      /goto :Loop 
    /return 


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub DoCombine for subs
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub DoCombineSubs
    :Loop 
      /combine ${PackCode} 
      /delay ${Math.Calc[${DelayMult}*1]}s
      /if (${PackCode.Equal[Enviro]}) /delay ${Math.Calc[${DelayMult}*1]}s 
      /doevents 
      /if (${InvSlot[${PackCode}].Item.Items}) /goto :Loop 
      /delay 5 
    /doevents
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub DoCombine
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub DoCombine 
    :Loop 
      /combine ${PackCode} 
      /delay ${Math.Calc[${DelayMult}*1]}s
      /if (${PackCode.Equal[Enviro]}) /delay ${Math.Calc[${DelayMult}*1]}s 
      /doevents 
      /if (${InvSlot[${PackCode}].Item.Items}) /goto :Loop 
      /delay 5 
      /if (${Me.Skill[Blacksmithing]}>${OldSkill}) {
        /echo Your Blacksmithing Went Up!! It's now ${Me.Skill[Blacksmithing]}!
        /varset OldSkill ${Me.Skill[Blacksmithing]}
      }
    /doevents
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub add Components
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub AddComp(CompName, PackSlot) 
   /if (${CompName.Equal[NOTFOUND]}) /return 

   /if (!${FindItem[=${CompName}].ID}) { 
      /echo Could not find ${CompName} in inventory 
      /beep 
      /varset EndingVar 2
      /return 
    } 

   :Loop 
      /nomodkey /ctrl /itemnotify ${FindItem[=${CompName}].InvSlot} leftmouseup 

      /if (!${Cursor.ID}) { 
         /delay ${Math.Calc[${DelayMult}*1]}s
         /goto :Loop 
      } 

   /if (${PackCode.Equal[Enviro]}) { 
      /nomodkey /itemnotify ${InvSlot[enviro${PackSlot}]} leftmouseup 
   } else { 
      /nomodkey /itemnotify in ${PackCode} ${PackSlot} leftmouseup 
   }  
   /doevents  
   /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Combine error
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Event_CombineError 
    /Call Ending
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Container is being used
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Event_ContUsed
    /echo Container in use. Waiting 30 seconds and trying again.
    /delay 30s
    /itemtarget "Forge"
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click left item
    /delay ${Math.Calc[${DelayMult}*2]}s
    /doevents
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event End
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_End
    /call Ending
/return

Sub Ending
    /echo macro ending
    /camp desktop
    /end 
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Pause
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_Pause
    :Pauseloop
    /doevents
    /echo Macro Is Paused due to Users command
    /if (${PauseIt}==2) {
    /varset PauseIt 1
    /echo Your wish is our command.. Starting macro back up
    /return
    }
    /delay 15s
    /goto :Pauseloop
/return


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Unpause
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_Unpause
    /varset PauseIt 2

/return


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Salvage
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_Salvage
     /call cleanPack "${Container}"
/return



|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Bag Swap
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Bagswap
    /declare Packnumber item inner
    /doevents
    /click right target
    /delay 3s
    /call OpenPacks
    /delay 3s
    /varset Packnumber 3
    /doevents
    /itemnotify pack1 leftmouseup
    /itemnotify bank1 leftmouseup
    /itemnotify pack1 leftmouseup
    /itemnotify pack2 leftmouseup
    /itemnotify bank2 leftmouseup
    /itemnotify pack2 leftmouseup
    :swap 
    /doevents 
    /nomodkey /ctrl /itemnotify ${FindItem[=Mistletoe Cutting Sickle].InvSlot} leftmouseup 
    /if (${Cursor.ID}) {
    /notify BigBankWND BIGB_AutoButton LeftMouseUP
    /goto :swap
    }
    /varset EndIt 2
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub MOVEMENT SUBS - Merchants
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Merch A - Uiyaniv
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub GoToMerchantA
  /echo Going to Uiyaniv Tu`Vrozix.
  :PullMoveLoopa
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -70.09,174.24
  /if (${Math.Distance[-70.09,174.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-70.09,174.24]}<=2) {
    /nomodkey /keypress forward
    /doevents
    /goto :PullMoveLoopb
  }
  /goto :PullMoveLoopa
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopb
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -10.89,173.86
  /if (${Math.Distance[-10.89,173.86]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-10.89,173.86]}<=2) {
    /nomodkey /keypress forward
    /doevents
    /goto :PullMoveLoopc
  }
  /goto :PullMoveLoopb
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -9.49,261.22
  /if (${Math.Distance[-9.49,261.22]}>2) {
    /nomodkey /keypress forward hold
    /nomodkey /keypress USE
    /nomodkey /keypress USE
  }
  /if (${Math.Distance[-9.49,261.22]}<=2) {
    /nomodkey /keypress forward
    /doevents
    /goto :PullMoveLoopd
  }
    /doevents
  /goto :PullMoveLoopc
  /delay ${Math.Calc[${DelayMult}*1]}s
 :PullMoveLoopd
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -219.45,256.35
  /if (${Math.Distance[-219.45,256.35]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-219.45,256.35]}<=2) {
    /nomodkey /keypress forward
    /doevents
    /goto :Merch
  }
    /doevents
  /goto :PullMoveLoopd
  /delay ${Math.Calc[${DelayMult}*1]}s
  :Merch
  /target Uiyaniv
  /if (${Me.State.Equal[SIT]}) /stand
  /face
  /if (${Target.Distance}>10) /nomodkey /keypress forward hold 
  /if (${Target.Distance}<=10) {
    /nomodkey /keypress forward
    /doevents
    /goto :end
  }
    /doevents
  /goto :Merch
  :end
    /doevents
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Merch B - Dray
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub GoToMerchantB
  /echo Going to Dray Cuves
  :PullMoveLoopa
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -210.45,247.35
  /if (${Math.Distance[-210.45,247.35]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-210.45,247.35]}<=2) {
    /nomodkey /keypress forward
    /doevents
    /goto :PullMoveLoopb
  }
    /doevents
  /goto :PullMoveLoopa
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopb
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -232.21,260.29
  /if (${Math.Distance[-232.21,260.29]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-232.21,260.29]}<=2) {
    /nomodkey /keypress forward
    /doevents
    /goto :PullMoveLoopc
  }
    /doevents
  /goto :PullMoveLoopb
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -330.40,264.40
  /if (${Math.Distance[-330.40,264.40]}>2) {
    /nomodkey /keypress forward hold
    /nomodkey /keypress USE
  }
  /if (${Math.Distance[-330.40,264.40]}<=2) {
    /nomodkey /keypress forward
    /doevents
    /goto :PullMoveLoopd
}
    /doevents
  /goto :PullMoveLoopc
  :PullMoveLoopd
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -304.40,286.40
  /if (${Math.Distance[-304.40,286.40]}>2) {
    /nomodkey /keypress forward hold
    /nomodkey /keypress USE
  }
  /if (${Math.Distance[-304.40,286.40]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoope
    /doevents
}
    /doevents 
 /goto :PullMoveLoopd
:PullMoveLoope
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -240.09,285.24
  /if (${Math.Distance[-240.09,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-240.09,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopf
    /doevents
  }
    /doevents
  /goto :PullMoveLoope
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopf
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -242.62,215.95
  /if (${Math.Distance[-242.62,215.95]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-242.62,215.95]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopg
    /doevents
  }
    /doevents
  /goto :PullMoveLoopf
/delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopg
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -221.62,215.95
  /if (${Math.Distance[-221.62,215.95]}>2) {
	/nomodkey /keypress forward hold 
	/nomodkey /keypress USE
}
  /if (${Math.Distance[-221.62,215.95]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLooph
    /doevents
  }
    /doevents
  /goto :PullMoveLoopg
  :PullMoveLooph
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -220.54,176.45
  /if (${Math.Distance[-220.54,176.45]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-220.54,176.45]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopi
    /doevents
  }
    /doevents
  /goto :PullMoveLooph
  :PullMoveLoopi
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -155.54,172.52
  /if (${Math.Distance[-155.54,172.52]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-155.54,172.52]}<=2) {
    /nomodkey /keypress forward
    /goto :end
    /doevents
  }
    /doevents
  /goto :PullMoveLoopi
  :end
 /return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Merch C - Esunta
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub GoToMerchantC
  /echo Going to Esunta.
  :PullMoveLoopb
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -220.54,176.45
  /if (${Math.Distance[-220.54,176.45]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-220.54,176.45]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopc
    /doevents
  }
    /doevents
  /goto :PullMoveLoopb
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -215.14,215.85
  /if (${Math.Distance[-215.14,215.85]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-215.14,215.85]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopd
    /doevents
  }
    /doevents
  /goto :PullMoveLoopc
  :PullMoveLoopd
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -242.62,215.95
  /if (${Math.Distance[-242.62,215.95]}>2) {
    /nomodkey /keypress forward hold
    /nomodkey /keypress USE
  }
  /if (${Math.Distance[-242.62,215.95]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoope
    /doevents
  }
    /doevents
  /goto :PullMoveLoopd
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoope
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -240.09,285.24
  /if (${Math.Distance[-240.09,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-240.09,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopf
    /doevents
  }
    /doevents
  /goto :PullMoveLoope
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopf
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -56.90,285.24
  /if (${Math.Distance[-56.90,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-56.90,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopg
    /doevents
  }
    /doevents
  /goto :PullMoveLoopf
  :PullMoveLoopg
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 18.59,221.98
  /if (${Math.Distance[18.59,221.98]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[18.59,221.98]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLooph
    /doevents
  }
    /doevents
  /goto :PullMoveLoopg
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLooph
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 126.89,236.86
  /if (${Math.Distance[126.89,236.86]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[126.89,236.86]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopi
    /doevents
  }
    /doevents
  /goto :PullMoveLooph
  :PullMoveLoopi
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 130.49,259.22
  /if (${Math.Distance[130.49,259.22]}>2) {
    /nomodkey /keypress forward hold
    /nomodkey /keypress USE
    /nomodkey /keypress USE
  }
  /if (${Math.Distance[130.49,259.22]}<=2) {
    /nomodkey /keypress forward
    /goto :end
    /doevents
  }
    /doevents
  /goto :PullMoveLoopi
  :end
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Merch D - Snokin
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub GoToMerchantD
  
  /echo Going to Snokin.
  :PullMoveLoopa
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 92.71,259.21
  /if (${Math.Distance[92.71,259.21]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[92.71,259.21]}<=2) {
    /nomodkey /keypress forward
    /goto :end
    /doevents
  }
    /doevents
  /goto :PullMoveLoopa
  :end
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Merch E - Glirina
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub GoToMerchantE
  /echo Going to Glirina.
  :PullMoveLoopa
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 130.49,259.22
  /if (${Math.Distance[130.49,259.22]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[130.49,259.22]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopb
    /doevents
  }
    /doevents
  /goto :PullMoveLoopa
  :PullMoveLoopb
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 129.65,235.06
  /if (${Math.Distance[129.65,235.06]}>2) {
    /nomodkey /keypress forward hold 
    /nomodkey /keypress USE
  }
  /if (${Math.Distance[129.65,235.06]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopc
    /doevents
  }
    /doevents
  /goto :PullMoveLoopb
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc 35.36,235.70
  /if (${Math.Distance[35.36,235.70]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[35.36,235.70]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopd
    /doevents
  }
    /doevents
  /goto :PullMoveLoopc
  :PullMoveLoopd
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -17.97,282.28
  /if (${Math.Distance[-17.97,282.28]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-17.97,282.28]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopf
    /doevents
  }
    /doevents
  /goto :PullMoveLoopd
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopf
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -240.09,285.24
  /if (${Math.Distance[-240.09,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-240.09,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopg
    /doevents
  }
    /doevents
  /goto :PullMoveLoopf
  :PullMoveLoopg
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -314.09,285.24
  /if (${Math.Distance[-314.09,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-314.09,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLooph
    /doevents
  }
    /doevents
  /goto :PullMoveLoopg
  :PullMoveLooph
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -295.09,262.24
  /if (${Math.Distance[-295.09,262.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-295.09,262.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopi
    /doevents
  }
    /doevents
  /goto :PullMoveLooph
  :PullMoveLoopi
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -240.09,262.24
  /if (${Math.Distance[-240.09,262.24]}>2) {
	/nomodkey /keypress forward hold 
	/nomodkey /keypress USE
}
  /if (${Math.Distance[-240.09,262.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopj
     /doevents
  }
    /doevents
  /goto :PullMoveLoopi
  :PullMoveLoopj
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -174.09,262.24
  /if (${Math.Distance[-174.09,262.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-174.09,262.24]}<=2) {
    /nomodkey /keypress forward
    /goto :Merch
     /doevents
  }
    /doevents
  /goto :PullMoveLoopj
  :Merch
  /target Glirina
  /if (${Me.State.Equal[SIT]}) /stand
  /face
  /if (${Target.Distance}>10) /nomodkey /keypress forward hold 
  /if (${Target.Distance}<=10) {
    /nomodkey /keypress forward
    /goto :end
    /doevents
  }
    /doevents
  /goto :Merch
:end
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub move to forge
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub GoToForge
  /echo Going to Forge.
  :PullMoveLoopa
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -174.09,262.24
  /if (${Math.Distance[-174.09,262.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-174.09,262.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopb
    /doevents
  }
    /doevents
  /goto :PullMoveLoopa
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopb
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -240.09,262.24
  /if (${Math.Distance[-240.09,262.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-240.09,262.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopc
    /doevents
  }
    /doevents
  /goto :PullMoveLoopb
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -295.09,262.24
  /if (${Math.Distance[-295.09,262.24]}>2) {
    /nomodkey /keypress forward hold
    /nomodkey /keypress USE
    /doevents
  }
    /doevents
  /if (${Math.Distance[-295.09,262.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopd
    /doevents
  }
    /doevents
  /goto :PullMoveLoopc
  :PullMoveLoopd
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -314.09,285.24
  /if (${Math.Distance[-314.09,285.24]}>2) /nomodkey /keypress forward hold 
    /if (${Math.Distance[-314.09,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoope
    /doevents
  }
    /doevents
  /goto :PullMoveLoopd
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoope
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -240.09,285.24
  /if (${Math.Distance[-240.09,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-240.09,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopf
    /doevents
  }
    /doevents
  /goto :PullMoveLoope
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopf
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -56.90,285.24
  /if (${Math.Distance[-56.90,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-56.90,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :forge
    /doevents
  }
    /doevents
  /goto :PullMoveLoopf
  :forge
  /if (${Me.State.Equal[SIT]}) /stand
  /face nolook loc 62.90,293.24
  /if (${Math.Distance[62.90,293.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[62.90,293.24]}<=2) {
    /nomodkey /keypress forward
    /goto :end
    /doevents
  }
    /doevents
/goto :forge
  :end
  /itemtarget "Forge"
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub move to Barrel
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Sub GoToBarrel 
  /echo Going to Brewing Barrel. 
  /itemtarget "Brew Barrel" 
  /face loc -215, 170
  :Barrel 
  /if (${Me.State.Equal[SIT]}) /stand 
/if (${Math.Distance[-215, 170]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-215, 170]}<=2) {
    /nomodkey /keypress forward
    /return
    /doevents
  }
    /doevents
  /goto :Barrel 
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub move to MErch A from Forge
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub GoToMerchA
  /echo Going to Uiyaniv.
  :PullMoveLoopa
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -56.90,285.24
  /if (${Math.Distance[-56.90,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-56.90,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopc
    /doevents
  }
    /doevents
  /goto :PullMoveLoopa
  
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -314.09,285.24
  /if (${Math.Distance[-314.09,285.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-314.09,285.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopd
    /doevents
  }
    /doevents
  /goto :PullMoveLoopc
  :PullMoveLoopd
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -295.09,262.24
  /if (${Math.Distance[-295.09,262.24]}>2) /nomodkey /keypress forward hold 
    /if (${Math.Distance[-295.09,262.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoope
    /doevents
  }
    /doevents
  /goto :PullMoveLoopd
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoope
  /face nolook loc -240.09,262.24
  /if (${Math.Distance[-240.09,262.24]}>2) {
	/nomodkey /keypress forward hold 
	/nomodkey /keypress USE
    /doevents
  }
    /doevents
  /if (${Math.Distance[-240.09,262.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopg
    /doevents
  }
    /doevents
  /goto :PullMoveLoope
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoopg
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -213.09,251.24
  /if (${Math.Distance[-213.09,251.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-213.09,251.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLooph
    /doevents
  }
    /doevents
  /goto :PullMoveLoopg
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLooph
  /target Uiyaniv
  /if (${Me.State.Equal[SIT]}) /stand
  /face
  /if (${Target.Distance}>10) /nomodkey /keypress forward hold 
  /if (${Target.Distance}<=10) {
    /nomodkey /keypress forward
    /goto :end
    /doevents
  }
    /doevents
  /goto :PullMoveLooph
  :end
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub move to Banker from Merch A
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub GoToBanker2
  /echo Going to Bank.
  :PullMoveLoopa
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -219.90,255.24
  /if (${Math.Distance[-219.90,255.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-219.90,255.24]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopc
    /doevents
  }
    /doevents
  /goto :PullMoveLoopa
  
  :PullMoveLoopc
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -9.49,261.22
  /if (${Math.Distance[-9.49,261.22]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-9.49,261.22]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoopd
    /doevents
  }
    /doevents
  /goto :PullMoveLoopc
  :PullMoveLoopd
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -10.89,173.86
  /if (${Math.Distance[-10.89,173.86]}>2) {
    /nomodkey /keypress forward hold
    /nomodkey /keypress USE
    /nomodkey /keypress USE
    /doevents
  }
    /doevents
    /if (${Math.Distance[-10.89,173.86]}<=2) {
    /nomodkey /keypress forward
    /goto :PullMoveLoope
    /doevents
  }
    /doevents
  /goto :PullMoveLoopd
  /delay ${Math.Calc[${DelayMult}*1]}s
  :PullMoveLoope
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -65.09,173.24
  /if (${Math.Distance[-65.09,173.24]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[-65.09,173.24]}<=2) {
    /nomodkey /keypress forward
    /goto :Banker
    /doevents
  }
    /doevents
  /goto :PullMoveLoope
  /delay ${Math.Calc[${DelayMult}*1]}s
  :Banker
  /target Reladia
  /if (${Me.State.Equal[SIT]}) /stand
  /face
  /if (${Target.Distance}>10) /nomodkey /keypress forward hold 
  /if (${Target.Distance}<=10) {
    /nomodkey /keypress forward
    /goto :end
    /doevents
  }
    /doevents
  /goto :Banker
  :end
/return
 
Last edited:
I just ran this .. and it worked like a friggin charm ..

it will keep buying stuff till A. your Out of money or B. out of veliumpieces

Enjoy


VELIUMBITS.MAC
Rich (BB code):
| ----------------------------------------------------------------------------------------- 
| VeliumBits.mac
|
| Created by IceIsFun 
|
| Rewritten by Armysoldier
| Features: 
| - Makes Enchanted Velium Bits until the character runs out of platinum, runs out of 
|   velium, or reaches 222 Blacksmithing skill. 
| 
| VeliumBits.mac usage: 
| 
| /mac VeliumBits 
| 
| NOTES/WARNINGS: 
| - This macro assumes you have Small Pieces of Velium (lots of them). 
| - This macro assumes you have enough plat to keep it going (~200pp per stack of velium). 
| - This macro assumes you remain in the first-person POV. 
| - This macro assumes you place your cursor near the center of the screen, where it won't 
|   click on any bags or items or item links, etc. 
| - This macro assumes you start it while standing next to the Forge in Thurgadin. 
| - If someone else is opening/closing doors, you may occasionally get stuck. Just press 
|   "u" (or click mouse) to open the door and continue as normal. 
| ----------------------------------------------------------------------------------------- 

#event CombineError "#*#There was no place to put that#*#" 
#event CombineError "#*#You cannot combine these items in this container type!#*#" 
#event CombineError "#*#did not accept these items#*#" 
#event ContUsed "#*#Someone else is using that. Try again later.#*#"
#event End "#*#can not afford#*#"
#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc

Sub Main

    /declare PackCode string outer 
    /declare Component[10] string outer 
    /declare i int outer
    /declare CombItemName string outer
    /declare ItemTo string outer
    /declare EndingVar int outer
    /declare Cnt int outer
    /declare OldSkill int outer
    /varset OldSkill ${Me.Skill[Blacksmithing]}


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Begin 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    :start
    /if (${FindItemCount[=Small Piece of Velium]}<2) /call Ending
    /varset CombItemName "VBits"
    /varset ItemTo "Enchanted Velium Bits"

     /delay 2s
     /call ForgeToNimren 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Buy components 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /varset EndingVar 1
    /varset Cnt ${FindItemCount[=Small Piece of Velium]}
    /echo ${Cnt}
    /if (${FindItemCount[=Small Piece of Velium]}>40) /varset Cnt 20
    /if (${FindItemCount[=Small Piece of Velium]}<40) /varset Cnt ${Math.Calc[${Cnt}/2]}
    /delay 1s
   /target Nimren Stonecutter 
   /nomodkey /click right target 
   /delay 5 
    /call OpenPacks
    /call Buy "Spell: Enchant Velium" ${Cnt}
    /delay 1s 
    /call Buy "Coldain Velium Temper" ${Cnt}
    /delay 1s
    /call ClosePacks
    /keypress esc
    /delay 2s

    /call NimrenToForge 
    /delay 2s

    /itemtarget "forge"
    /look
    /delay 2s
    /nomodkey /click left item
    /delay 2s
    /doevents
    /delay 2s

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Make EVB
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /if  (${Window[TradeskillWnd].Open}) {
         /nomodkey /notify TradeskillWnd ExperimentButton leftmousehold
         /nomodkey /notify TradeskillWnd ExperimentButton leftmouseup
	 }
   
    /call OpenPacks
    /delay 2s
    /call Combine
/goto :start
/return
  
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Read Ini file
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub readIni(RecipeName) 
    /declare Container string 

    /echo Running ${RecipeName} recipe 

   /if (${Ini["smithing.ini","${RecipeName}",-1,"NOTFOUND"].Equal["NOTFOUND"]}) { 
        /echo Recipe ${RecipeName} not found 
        /endmacro 
    } 

   /varset Container ${Ini[smithing.ini,${RecipeName},Cont,Enviro]} 

   /if (${Container.Equal[Enviro]}) { 
        /varset PackCode Enviro 
   } else { 
        /varset PackCode ${FindItem[=${Container}].InvSlot} 
       
      /if (${PackCode.Equal[NULL]}) { 
         /echo Could not find container ${Container} 
         /varset EndingVar 2
         /return
      } 
      | pack1 = 22, ... , pack8 = 29 
      /varset PackCode pack${Math.Calc[${PackCode}-21].Int} 
   }  

   /call cleanPack "${Container}"

    /for i 1 to 10 
        /varset Component[${i}] ${Ini[smithing.ini,${RecipeName},Comp${Math.Calc[${i}-1].Int},NOTFOUND]} 
    /next i 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Combine
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Combine

    /call readIni "${CombItemName}" 
    :Begin 
       /if (${EndingVar}==1) /call ClearCursor 
       /for i 1 to 10 
             /if (${EndingVar}==1) /call AddComp "${Component[${i}]}" ${i} 
       /next i 
       /if (${EndingVar}==1) /call DoCombine 
       /if (${EndingVar}==1) /goto :Begin
 
    /delay 1s
    /call ClosePacks
    /nomodkey /keypress esc
    /varset EndingVar 1
/return
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Clear Cursor
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub ClearCursor 
    :Loop 
      /if (!${Cursor.ID}) /return 
|      /autoinv 
     /destroy	
      /delay ${Math.Calc[${DelayMult}*5]}s
      /doevents 
      /goto :Loop 
    /return 


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub DoCombine
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub DoCombine 
    :Loop 
      /combine ${PackCode} 
      /delay 1s
      /if (${PackCode.Equal[Enviro]}) /delay 1s 
      /doevents 
      /if (${InvSlot[${PackCode}].Item.Items}) /goto :Loop 
      /delay 5 
      /if (${Me.Skill[Blacksmithing]}>${OldSkill}) {
        /echo Your Blacksmithing Went Up!! It's now ${Me.Skill[Blacksmithing]}!
        /varset OldSkill ${Me.Skill[Blacksmithing]}
      }
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub add Components
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub AddComp(CompName, PackSlot) 
   /if (${CompName.Equal[NOTFOUND]}) /return 

   /if (!${FindItem[=${CompName}].ID}) { 
      /echo Could not find ${CompName} in inventory 
      /beep 
      /varset EndingVar 2
      /return 
    } 

   :Loop 
      /nomodkey /ctrl /itemnotify ${FindItem[=${CompName}].InvSlot} leftmouseup 

      /if (!${Cursor.ID}) { 
         /delay 1s
         /goto :Loop 
      } 

   /if (${PackCode.Equal[Enviro]}) { 
      /nomodkey /itemnotify ${InvSlot[enviro${PackSlot}]} leftmouseup 
   } else { 
      /nomodkey /itemnotify in ${PackCode} ${PackSlot} leftmouseup 
   }    
   /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Combine error
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Event_CombineError 
    /Call Ending
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Container is being used
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Event_ContUsed
    /echo Container in use. Waiting 30 seconds and trying again.
    /delay 30s
    /itemtarget "Forge"
    /delay 1s
    /nomodkey /click left item
/delay 2s
    /doevents
/return

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event End
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_End
    /call Ending
/return

Sub Ending
    /echo macro ending
    /camp desktop
    /end 
/return


| ------------------------------------------------- 
| BankToForge v1.0: Moves to the Forge from the 
| Thurgadin Bank. 
| ------------------------------------------------- 
Sub BankToForge 

/echo MOVE yourself to the forge
/echo /BONK

/return 

| ------------------------------------------------- 
| ForgeToNimren v1.0: Moves to Nimren Stonecutter 
| from the Forge. 
| ------------------------------------------------- 
Sub ForgeToNimren 
   /call MoveToLoc -403.88 -129.62 

   | Open the door to Nimren and wait 2 seconds. 
   /face fast heading 0 
   /look 0 
   /click left 
   /delay 2s 

   /call MoveToLoc -396.41 -130.19 
   /call MoveToLoc -326.55 -237.59 
   /call MoveToLoc -29.08 -281.69 
   /call MoveToLoc 3.03 -129.90 
   /call MoveToLoc 17.29 -121.12 

   | Open the door to Nimren and wait 2 seconds. 
   /face fast heading 0 
   /look 0 
   /click left 
   /delay 2s 

   /call MoveToLoc 26.35 -120.13 
   /call MoveToLoc 43.50 -113.77 
/return 

| ------------------------------------------------- 
| NimrenToForge v1.0: Moves to the Forge from 
| Nimren Stonecutter. 
| ------------------------------------------------- 
Sub NimrenToForge 

   /call MoveToLoc 26.35 -120.13 

   | Open the door to Nimren and wait 2 seconds. 
   /face fast heading 180 
   /look 0 
   /click left 
   /delay 2s 

   /call MoveToLoc 17.29 -121.12 
   /call MoveToLoc 3.03 -129.90 
   /call MoveToLoc -29.08 -281.69 
   /call MoveToLoc -326.55 -237.59 
   /call MoveToLoc -396.41 -130.19 

   | Open the door to tne Forge and wait 2 seconds. 
   /face fast heading 180 
   /look 0 
   /click left 
   /delay 2s 

   /call MoveToLoc -403.88 -129.62 
   /call MoveToLoc -430.85 -113.74 

/return 

| ------------------------------------------------- 
| MoveToLoc v1.0: Moves in a straight line, to 
| a location. Arguments are the Y,X coordinates to 
| be reached. Assumes no obstacles are in the way. 
| ------------------------------------------------- 
Sub MoveToLoc(float MoveToY,float MoveToX) 
   :MoveToLoop 
      /face fast nolook loc ${MoveToY},${MoveToX} 
      /if (${Math.Distance[${MoveToY},${MoveToX}]}>2) { 
         /keypress up hold 
         /delay 1 
         /keypress up 
      } else { 
         /goto :Arrived 
      } 
   /goto :MoveToLoop 
   :Arrived 
/return


VELIUMPIECES.MAC
Rich (BB code):
| Created by Armysolder OCT 9 2005
|
| VeliumPieces.mac usage: 
| 
| /mac Veliumpieces 
| 
| Have Velium Smithy Hammer and Chisel in inventory

#Event Cant "#*#cannot combine these items#*#"

#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc

Sub Main 
   /doevents
   /declare stop1 int outer 
   /varset stop1 0
   /itemtarget "Forge"
   /warp loc -429 -115 4
   /delay 2s
   /face loc -432,-112

   :MainLoop 

      /call OpenForge 
      /call CleanForge 
      :Weapons 
         /call Combine 
         /if (${stop1}==14)  /goto :Done
         /doevents 
      /Goto :Weapons

/goto :MainLoop 
:Done
/return 



| ------------------------------------------------- 
| CleanForge: Removes all items from a forge. 
| ------------------------------------------------- 
Sub CleanForge 
   /echo CLEANING forge .. be patient 
   /declare ForgeSlot int local 0 
   /for ForgeSlot 1 to 10 
      /nomodkey /shiftkey /itemnotify enviro${ForgeSlot} leftmouseup 
      /delay 3 
      /autoinventory 
      /delay 2 
   /next ForgeSlot 
/return 

| ------------------------------------------------- 
| OpenForge: Opens the nearest Forge. 
| ------------------------------------------------- 
Sub OpenForge 
   /echo Opening forge
   /if (${Merchant.Open}) /nomodkey /notify MerchantWnd DoneButton leftmouseup 
   /if (${Window[Enviro].Open}) /nomodkey /notify Enviro DoneButton leftmouseup 
   /if (${Window[TradeskillWnd].Open}) /nomodkey /notify TradeskillWnd ExperimentButton leftmouseup 
   :OpeningForge 
   /itemtarget "Forge"
   /click left item 
   /delay 1s 
   /if (${Window[TradeskillWnd].Open}) { 
      /nomodkey /notify TradeskillWnd ExperimentButton leftmouseup 
      /return 
   } 
   /delay 30s 
   /goto :OpeningForge 
   /if (${Window[TradeskillWnd].Open}) /nomodkey /notify TradeskillWnd ExperimentButton leftmouseup 
/return 

| ------------------------------------------------- 
| Combine
| ------------------------------------------------- 
Sub Combine
   /Echo Doing combines WOOOT ${stop1}
   /call OpenPacks
   /if (${stop1}==0) { 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Smithy Hammer].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro1]} leftmouseup 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Warhammer].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro2]} leftmouseup
   } 
   /if (${stop1}==1) { 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Smithy Hammer].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro1]} leftmouseup 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Morning Star].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro2]} leftmouseup
   }
   /if (${stop1}==2) { 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Smithy Hammer].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro1]} leftmouseup 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Great Staff].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro2]} leftmouseup
   }
   /if (${stop1}==3) { 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Smithy Hammer].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro1]} leftmouseup 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Dagger].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro2]} leftmouseup
   }
   /if (${stop1}==4) { 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Smithy Hammer].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro1]} leftmouseup 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Battle Axe].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro2]} leftmouseup
   } 
   /if (${stop1}==5) { 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Smithy Hammer].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro1]} leftmouseup 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Long Sword].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro2]} leftmouseup
   } 
   /if (${stop1}==6) { 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Smithy Hammer].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro1]} leftmouseup 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Rapier].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro2]} leftmouseup
   }
   /if (${stop1}==7) { 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Smithy Hammer].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro1]} leftmouseup 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Scimitar].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro2]} leftmouseup
   } 
   /if (${stop1}==8) { 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Smithy Hammer].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro1]} leftmouseup 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Short Sword].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro2]} leftmouseup
   }
   /if (${stop1}==9) { 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Smithy Hammer].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro1]} leftmouseup 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Spear].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro2]} leftmouseup
   } 
   /if (${stop1}==10) { 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Smithy Hammer].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro1]} leftmouseup 
   /nomodkey /ctrl /itemnotify ${FindItem[=Velium Two Handed Sword].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro2]} leftmouseup
   }
   /if (${stop1}==11) { 
   /nomodkey /ctrl /itemnotify ${FindItem[=Smithing Chisel].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro1]} leftmouseup 
   /nomodkey /ctrl /itemnotify ${FindItem[=Block of Velium].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro2]} leftmouseup
   }
   /if (${stop1}==12) { 
   /nomodkey /ctrl /itemnotify ${FindItem[=Smithing Chisel].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro1]} leftmouseup 
   /nomodkey /ctrl /itemnotify ${FindItem[=Large Brick of Velium].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro2]} leftmouseup
   }
   /if (${stop1}==13) { 
   /nomodkey /ctrl /itemnotify ${FindItem[=Smithing Chisel].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro1]} leftmouseup 
   /nomodkey /ctrl /itemnotify ${FindItem[=Small Brick of Velium].InvSlot} leftmouseup 
   /nomodkey /itemnotify ${InvSlot[enviro2]} leftmouseup
   }
   /delay 3 
   /combine Enviro 
   /delay 2s 
   /autoinventory
   /autoinventory
   /delay 2s 
   /autoinventory
   /autoinventory 
   /delay 2s  
   /autoinventory
   /autoinventory
   /delay 2s 
   /autoinventory
   /autoinventory  
/return 

|------------------------------------------------- 
| Move to Location Loop 
|------------------------------------------------- 
Sub MoveToLoc(float MoveToY,float MoveToX) 
   :MoveToLoop 
      /face fast nolook loc ${MoveToY},${MoveToX} 
      /if (${Math.Distance[${MoveToY},${MoveToX}]}>2) /keypress forward hold 
      /if (${Math.Distance[${MoveToY},${MoveToX}]}<=2) {
         /keypress forward 
         /goto :Arrived 
      }
   /goto :MoveToLoop 
   :Arrived 
/return 

Sub Event_Cant

   /call CleanForge
   
   /echo ${stop1} 

   /if (${stop1}==0) /if (${FindItemCount[=Velium Warhammer]}==0) /varset stop1 1
                 
   /if (${stop1}==1) /if (${FindItemCount[=Velium Morning Star]}==0) /varset stop1 2
           
   /if (${stop1}==2) /if (${FindItemCount[=Velium Great Staff]}==0) /varset stop1 3
           
   /if (${stop1}==3) /if (${FindItemCount[=Velium Dagger]}==0) /varset stop1 4
           
   /if (${stop1}==4) /if (${FindItemCount[=Velium Battle Axe]}==0) /varset stop1 5
            
   /if (${stop1}==5) /if (${FindItemCount[=Velium Long Sword]}==0) /varset stop1 6
          
   /if (${stop1}==6) /if (${FindItemCount[=Velium Rapier]}==0) /varset stop1 7
        
   /if (${stop1}==7) /if (${FindItemCount[=Velium Scimitar]}==0) /varset stop1 8
           
   /if (${stop1}==8) /if (${FindItemCount[=Velium Short Sword]}==0) /varset stop1 9
           
   /if (${stop1}==9) /if (${FindItemCount[=Velium Spear]}==0) /varset stop1 10
           
   /if (${stop1}==10) /if (${FindItemCount[=Velium Two Handed Sword]}==0) /varset stop1 11
            
   /if (${stop1}==11) /if (${FindItemCount[=Block of Velium]}==0) /varset stop1 12
           
   /if (${stop1}==12) /if (${FindItemCount[=Large Brick of Velium]}==0) /varset stop1 13
            
   /if (${stop1}==13) /if (${FindItemCount[=Small Brick of Velium]}==0) /varset stop1 14
       
/echo ${stop1}
    
/return
 
Last edited:
Brewing.mac

uses NEW UI

ensure you have successfully completed one MHB and saved recipe to your favorites

**** NOTICE I have skill max set to 199... I screwed up on another toon and let this run to 248 ... had to get 3AA so i could work tailoring above 200 .. 8-)

12/23/05 - added elays back in

Rich (BB code):
| 
| brewing.mac 
| Takes you from 1 to 248 in Brewing 
|
| Version 2.5b 
|
| Original mac by Override
|
| Date: August 20, 2005 
| UPDATED BY OUNVME
|
| KEY NOTE: ensure your mouse cursor is centered on screen... or it will not open TS container
|
| 12/28/05: ADDED Salvage event
|
| 12/23/05: Put Delays back in .. some folks having issues with out them
|
| 12/15/05: by ArmySoldier
|           minor updates due to Struct changes  
|           removed selling of reusable items... casks or supplies etc
|
| 11/14/05: by Armysoldier
|           Modified minor UI issues - THIS MAC uses NEW UI
|
| Ensure you have made one MHB successfully before you try this mac.
| Also ensure MHB is saved to your favorites
|
| Before are the settings you need to change for you. 
| This Macro can take you up to 248 in brewing. 
| SkillMaxWanted can be change to what skill you want to stop at. 
| MerchantNameA is which merchant has the brewing components. 
| MerchantNameB is which merchant has the water and short beer components. 
| 
| This Macro works best in the Abysmal Sea since all the components are there. 
| You WILL need to be between both merchants to be able to use this macro. 
| 
| Disclaimer: 
| Code was used from other programers also from the MQ Forums. 
| This macro may not work any other place then the Abysmal Sea. 
| 

#event CombineError "#*#There was no place to put that#*#" 
#event CombineError "#*#You cannot combine these items in this container type!#*#" 
#event CombineError "#*#did not accept these items#*#" 
#event ContUsed "#*#Someone else is using that. Try again later.#*#" 
#event Missing "#*#You are Missing#*#" 

#Event Salvage "You failed the combine, but you managed to recover #*#"

#include sell.inc 
#include buy.inc 
#include packs.inc 

Sub Main 
    /declare OldSkill int outer 
    /declare SkillMaxWanted int outer 
    /declare PackCode string outer 
    /declare Component[10] string outer 
    /declare i int outer 
    /declare MerchantNameA string Outer 
    /declare MerchantNameB string Outer 
    /declare CompA item outer 
    /declare CompB item outer 
    /declare CompC item outer 
    /declare CompD item outer 
    /declare CompE item outer 
    /declare CombItemName string outer 
    /declare ItemToA string outer 
    /declare ItemToB string outer 
    /declare ItemToC string outer 
    /declare EndingVar int outer 
    /declare Levelname int outer 
    /declare DelayMult int outer
    /varset OldSkill ${Me.Skill[Brewing]} 
    /declare stop int outer    

| ************************************************ 
| *   Change these settings to what you want.    * 
| ************************************************ 
  
    /varset MerchantNameA "Galidnus Corkpopper" 
    /varset MerchantNameB "Dray Cuves" 
    /varset SkillMaxWanted 199 
    /varset DelayMult 1

    /echo CENTER your MOUSE ... now pls
    /delay ${Math.Calc[${DelayMult}*2]}s
    /beep
    /delay ${Math.Calc[${DelayMult}*2]}s
    /beep
    /delay ${Math.Calc[${DelayMult}*2]}s

| ************************************************ 
| ************************************************ 

    :start 
    /echo Brewing is at ${Me.Skill[Brewing]} 

    /if (${Me.Skill[Brewing]}>=${SkillMaxWanted}) { 
      /echo Brewing is at ${SkillMaxWanted}. Quiting! 
      /endmacro 
    } 



    /if (${Me.Skill[Brewing]}<${SkillMaxWanted}) {
      /varset CompA "cask"
      /varset CompB "malt"
      /varset CompC "short beer"
      /varset CompD "water flask"
      /varset CompE "yeast"
      /varset CombItemName "MHB"
      /varset ItemToA "Minotaur Hero's Brew"
      /varset ItemToB "bottle"
      /varset ItemToC "cask"
      }
    /varset EndingVar 1
    /call GoToMerchant
    /delay ${Math.Calc[${DelayMult}*1]}s
    /target ${MerchantNameA}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Sell ${ItemToA}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${ItemToB}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompA} 80
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompB} 240
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompE} 80
    /delay ${Math.Calc[${DelayMult}*1]}s
     /call ClosePacks
    /keypress esc

    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameB}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompC} 160
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompD} 180
    /delay ${Math.Calc[${DelayMult}*1]}s
    /keypress esc
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*1]}s

    /call GoToBarrel 
    /look 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /click left item 
    /delay ${Math.Calc[${DelayMult}*2]}s 
    /doevents 
    /delay ${Math.Calc[${DelayMult}*1]}s 
/notify COMBW_RecipeListArea COMBW_RecipeList listselect ${Window[COMBW_RecipeListArea].Child[COMBW_RecipeList].List[Minotaur Hero's Brew]} 
/delay ${Math.Calc[${DelayMult}*2]} 
/notify COMBW_RecipeListArea COMBW_RecipeList leftmouse ${Window[COMBW_RecipeListArea].Child[COMBW_RecipeList].List[Minotaur Hero's Brew]} 
    
/delay ${Math.Calc[${DelayMult}*2]}s 
    

   :Begin 
       /if (${stop}==0) /call ClearCursor 
       /if (${stop}==0) /call DoCombine 
       /if (${stop}==0) /goto :Begin 
  
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /call ClosePacks 
    /keypress esc 
    /keypress esc 

    /call GoToMerchant 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /target ${MerchantNameA} 
    /face 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /click right target 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /call OpenPacks 
    /delay ${Math.Calc[${DelayMult}*2]}s 
    /call Sell ${ItemToA} 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /call Sell ${ItemToB} 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /call ClosePacks 
    /keypress esc 
    /keypress esc 

    /goto :start 

    /return 


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Sub Clear Cursor
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub ClearCursor 
    :Loop 
      /if (!${Cursor.ID}) /return 
      /autoinv 
|      /destroy    
      /delay 5 
      /doevents 
      /goto :Loop 
    /return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub DoCombine 
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub DoCombine 
    :Loop 
      
/notify TradeSkillWnd CombineButton leftmouseup 
/delay ${Math.Calc[${DelayMult}*1]}0 
/notify TradeSkillWnd AutoInvButton leftmouseup 
/delay 5 
/notify TradeSkillWnd AutoInvButton leftmouseup 
      /delay ${Math.Calc[${DelayMult}*1]}s 
      /doevents 

/if (${stop}==1) /return 

/if (${Me.Skill[Brewing]}>${OldSkill}) { 
        /echo Your Brewing Went Up!! It's now ${Me.Skill[Brewing]}! 
        /varset OldSkill ${Me.Skill[Brewing]} 
      } 
/goto :Loop 
      /delay 5 
       /return 


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Sub Event combine Error
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Event_CombineError 
    /varset EndingVar 2 
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Sub Event Missing Items
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Event_Missing 
/echo Need More items to combine 
/varset stop 1 
/return 


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Sub Event Container being used
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub Event_ContUsed 
    /echo Container in use. Waiting 30 seconds and trying again. 
    /delay 30s 
    /itemtarget "Brew Barrel" 
    /delay ${Math.Calc[${DelayMult}*1]}s 
    /click left item 
    /delay ${Math.Calc[${DelayMult}*2]}s 
    /doevents 
/return 

|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|Sub Event Salvage
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Sub Event_Salvage
     /call cleanPack "${Container}"
/return


|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Movement Subs
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Sub GoToMerchant 
  /echo Going to Merchants. 
  :PullMoveLoop 
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -165.30,178.83 
  /if (${Math.Distance[-165.30,178.83]}>2) /keypress forward hold 
  /if (${Math.Distance[-165.30,178.83]}<=2) { 
    /keypress forward 
    /return 
  } 
  /goto :PullMoveLoop 
/return 

Sub GoToBarrel 
/varset stop 0  
 /echo Going to Brewing Barrel. 
  :PullMoveLoop 
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -209,170 
  /if (${Math.Distance[-209,170]}>2) /keypress forward hold 
  /if (${Math.Distance[-209,170]}<=2) { 
    /keypress forward 
    /return 
  } 
  /goto :PullMoveLoop 
/itemtarget "Brew Barrel"
/return

If anyone would like for a mac to do fedid essence.. which will take you to 122 skill ... in pok.. PM me.. and i can quickly write it..
 
Last edited:
brewing.ini

Rich (BB code):
[MHB]
Cont=Enviro
Comp0=yeast
Comp1=malt
Comp2=malt
Comp3=malt
Comp4=short beer
Comp5=short beer
Comp6=water flask
Comp7=water flask
Comp8=cask
 
Is it true all the mistletoe subcombines are vendor purchasable now?

Or would I also need to do all the subs?

Cause, I don't wanna do that unless there is a wicked easy macro =)
 
Main problem with that one is that although velium bars are purchasable (darn expensive though), they have to enchanted by an enchnater. Enchanted velium bits can be made just by combining a spell.
 
auto trade skill combiner
1) you need to have the components in your inventory
2) open the trade skill window you want to use "I.E. mixing bowl, brewing barrel....."
3) select the resipe you want to make from the list


Rich (BB code):
|
| Created by Rowdan
|
| skill.mac
|
| you need to have the components in your inventory 
| open the trade skill window you want to use   "I.E. mixing bowl, brewing barrel....."
| select the resipe you want to make from the list 
|
| Useage: /mac skill #
|
| where # is put in how many combindes you want to do
| I.E. /mac skill 10 
|      will combine ten times
|

#Event Fail "You lacked the skills to fashion the items together."
#Event Made "You have fashioned the items together to create something new!"
#Event Miss "Sorry, but you don't have everything you need for this recipe in your general inventory."
#Event SkillUp "You have become better at #1#! (#2#)"

Sub main(int SkillQuant) 
	/declare loop int local 0 
	/declare failed int local 0 
	/declare fail int outer 0 
	/declare SkillQuantity int outer 0
	/varcalc SkillQuantity ${SkillQuant}
	/varcalc fail ${failed}

	/for loop 1 to ${SkillQuantity} step 1
		:docombine
		/notify TradeskillWnd CombineButton LeftMouseUp 
		/delay 10
		/doevents
|		/echo ${loop} out of ${SkillQuantity}
	/next loop 
	/echo Faild ${fail} times out of ${SkillQuant}
	/popup Faild ${fail} times out of ${SkillQuant}

/return 

Sub Event_Fail
	/varcalc fail ${fail}+1
	/echo FAILED ${fail} times out of ${SkillQuantity} tries
	/popup FAILED ${fail} times out of ${SkillQuantity} tries
	/call item
/return

Sub Event_Made
	:check
	/delay 2
	/if (!${Cursor.ID}) /goto :check
	/delay 2
	/call item
	/delay 10
/return  

Sub Event_Miss
	/echo you are missing components
	/popup Sorry, but you don't have everything you need for this recipe in your general inventory.
	/endmacro
/return 

Sub Item
	:putin
	/autoinventory
	/delay 10
	/if (${Cursor.ID}) /goto :putin
/return 

Sub Event_SkillUp(SkillUpText, SkillName, SkillLevel)
	/echo Your ${SkillName} Went Up!! It's now ${SkillLevel}!
	/popup Your ${SkillName} Went Up!! It's now ${SkillLevel}!
/return


Same as above but will auto distroy any item made

Rich (BB code):
|
| Created by Rowdan
|
| skilld.mac
|
| you need to have the components in your inventory 
| open the trade skill window you want to use   "I.E. mixing bowl, brewing barrel....."
| select the resipe you want to make from the list 
|
| Useage: /mac skilld #
|
| where # is put in how many combindes you want to do
| I.E. /mac skilld 10 
|      will combine ten times
|
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| PLEASE NOTE THIS WILL AUTOMATICLY DISTROY THE ITEMS MADE
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#Event Fail "You lacked the skills to fashion the items together."
#Event Made "You have fashioned the items together to create something new!"
#Event Miss "Sorry, but you don't have everything you need for this recipe in your general inventory."
#Event SkillUp "You have become better at #1#! (#2#)"

Sub main(int SkillQuant) 
	/declare loop int local 0 
	/declare failed int local 0 
	/declare fail int outer 0 
	/declare SkillQuantity int local 0
	/varcalc SkillQuantity ${SkillQuant}
	/varcalc fail ${failed}

	/for loop 1 to ${SkillQuantity} step 1
		:docombine
		/notify TradeskillWnd CombineButton LeftMouseUp 
		/delay 10
		/doevents
	/next loop 
	/echo Faild ${fail} times out of ${SkillQuant}
	/popup Faild ${fail} times out of ${SkillQuant}
/return 

Sub Event_Fail
	/varcalc fail ${fail}+1
	/call item
/return

Sub Event_Made
	:check
	/delay 2
	/if (!${Cursor.ID}) /goto :check
	/delay 2
	/call item
	/delay 10
/return  

Sub Event_Miss
	/echo you are missing components
	/popup you are missing components
	/endmacro
/return 

Sub Item
	:putin
	/destroy 
	/delay 4
	/if (${Cursor.ID}) /goto :putin
/return 

Sub Event_SkillUp(SkillUpText, SkillName, SkillLevel)
	/echo Your ${SkillName} Went Up!! It's now ${SkillLevel}!
	/popup Your ${SkillName} Went Up!! It's now ${SkillLevel}!
/return
 
This will be a quick and easy way to get 300 smithing, besides what else do you do with pp after you have way way too much?
 
letmein said:
Is it true all the mistletoe subcombines are vendor purchasable now?

Or would I also need to do all the subs?

Cause, I don't wanna do that unless there is a wicked easy macro =)

Everything for sickles is purchaseable.... mistletoe can be bought in POK..

and the emeralds need to be imbued.. its also easier to make the tunare dust before hand... but i guess if someone wanted I could add that mac as an ini and have it as part of the sickle.mac

I tested the mac on monday .. but had to stop due to raid time..




Currently with the mac i have... the only sub needed to be done before hand is the tunare dust.. ALL others are done in the mac... the CE .. the Mistletoe temper... the 3 parts of sickle .. then sickle combine


soon as i can get some time to finish testing this mac... it will be posted
 
also there is a mac in our macros list.... autocombine.mac... i think is name..

it uses new UI and does combines until your out of room or items..


just an FYI
 
these were all tested before the patch and used to get one of my toons rollin in TS

SMithing

smithing2

CE

and Tunaredust
 
With very little customization I got my smithing from 222 - 291 for 1.2 Million Plat making Pure Enchanted Velium Bar. This may be a bit expensive, but IMO worth not having to spend the time farming shit or buying crap in the bazaar for weeks. Took me about 10 hours of running the macro and about 1,000 combines not counting the subcombines to make the essense.
 
for sure easy ... veliumbits will be retested and posted here as well...

and then mistletoe mac will take us to 300.... i just need to do my compile and getter rollin 8-)

we shall see what i can do this weekend 8-)
 
easyfun said:
With very little customization I got my smithing from 222 - 291 for 1.2 Million Plat making Pure Enchanted Velium Bar. This may be a bit expensive, but IMO worth not having to spend the time farming shit or buying crap in the bazaar for weeks. Took me about 10 hours of running the macro and about 1,000 combines not counting the subcombines to make the essense.

A BIT expensive? OMG. Besides, you'd need to be with an enchanter or live with one, wouldn't you? Think I'll try another route....
 
could you check out this alchemy.mac from 1-250 and see if you can get it working when ya got some time?
 
i have a JC/alchemy/fletching and a few other TS macs to work through...

I will check yours out also .. this weekend...

4 SWEEEEEEEET DAYS off... wooooot 8-)
 
Army,

I just ran the blesseddust macro, but am having a problem with it. The macro works fine initially. It'll buy components for CE, craft the CE, then buy Jars of Acid. The macro will path me just outside of the building with the pottery merchants, then cause MQ2 to crash before it can get to the forge. When I get home from work in the morning I'll jot down the error in the MQ2 window.
 
its the forge.. i have to update these again..

/itemtarget "forge" does not get the forge on your target ....

so the last part is to move forward to the forge.. well i am just gonna replace that with a loc to move to ..

will do in the morning

8-)
 
Army,
I decided that I wanted to spend the AAs to get my brewing from 200 to 248 by using your macro. The same problem with not being able to target the Brew Barrel is happening (as with the kiln in the above post). I went ahead and made a routine to get me to the brew barrel. The problem I'm having now is that the macro does not automatically type in the recipe name and start combining. I have to manually type in the name, and select it on the list before crafting commences? Is this intentional? I'm going to try and play with the code you used in BlessedDust.mac and see if I can't modify it to do all the work for you while you're AFK.

What cracks me up is by the time I'm done getting it working, I'll have maxed out my skill and won't need it any more, kind of like when I got VeliumBits working again.

Oh well, at least this will keep me busy.
 
Well, I was right. I got to 248 before I got everything working, but I'm sure this will help someone else who may be trying to work their brewing skill. The macro now works totally AFK. Enjoy.

Rich (BB code):
| 
| brewing.mac 
| Takes you from 1 to 248 in Brewing 
|
| Version 2.5b 
|
| Original mac by Override
|
| Date: August 20, 2005 
| UPDATED BY OUNVME
|
| Date:14 November 2005
| Updated by Armysoldier
| Tweaked by Moonspell
| Modified minor UI issues - THIS MAC uses NEW UI 
| Ensure you have made one MHB successfully before you try this mac.
| Also ensure MHB is saved to your favorites
|
| Before are the settings you need to change for you. 
| This Macro can take you up to 248 in brewing. 
| SkillMaxWanted can be change to what skill you want to stop at. 
| MerchantNameA is which merchant has the brewing components. 
| MerchantNameB is which merchant has the water and short beer components. 
| 
| This Macro works best in the Abysmal Sea since all the components are there. 
| You WILL need to be between both merchants to be able to use this macro. 
| 
| Disclaimer: 
| Code was used from other programers also from the MQ Forums. 
| This macro may not work any other place then the Abysmal Sea. 
| 

#event CombineError "#*#There was no place to put that#*#" 
#event CombineError "#*#You cannot combine these items in this container type!#*#" 
#event CombineError "#*#did not accept these items#*#" 
#event ContUsed "#*#Someone else is using that. Try again later.#*#" 
#event Missing "#*#You are Missing#*#" 

#include sell.inc 
#include buy.inc 
#include packs.inc 

Sub Main 
    /declare OldSkill int outer 
    /declare SkillMaxWanted int outer 
    /declare PackCode string outer 
    /declare Component[10] string outer 
    /declare i int outer 
    /declare MerchantNameA string Outer 
    /declare MerchantNameB string Outer 
    /declare CompA item outer 
    /declare CompB item outer 
    /declare CompC item outer 
    /declare CompD item outer 
    /declare CompE item outer 
    /declare CombItemName string outer 
    /declare ItemToA string outer 
    /declare ItemToB string outer 
    /declare ItemToC string outer 
    /declare EndingVar int outer 
    /declare Levelname int outer 
    /declare DelayMult int outer
    /varset OldSkill ${Me.Skill[Brewing]} 
/declare stop int outer    

| ************************************************ 
| *   Change these settings to what you want.    * 
| ************************************************ 
  
    /varset MerchantNameA "Galidnus Corkpopper" 
    /varset MerchantNameB "Dray Cuves" 
    /varset SkillMaxWanted 248 
    /varset DelayMult 1

| ************************************************ 
| ************************************************ 

    :start 
    /echo Brewing is at ${Me.Skill[Brewing]} 

    /if (${Me.Skill[Brewing]}>=${SkillMaxWanted}) { 
      /echo Brewing is at ${SkillMaxWanted}. Quiting! 
      /endmacro 
    } 



    /if (${Me.Skill[Brewing]}<${SkillMaxWanted}) {
      /varset CompA "cask"
      /varset CompB "malt"
      /varset CompC "short beer"
      /varset CompD "water flask"
      /varset CompE "yeast"
      /varset CombItemName "MHB"
      /varset ItemToA "Minotaur Hero's Brew"
      /varset ItemToB "bottle"
      /varset ItemToC "cask"
      }
    /varset EndingVar 1
    /call GoToMerchant
    /delay ${Math.Calc[${DelayMult}*1]}s
    /target ${MerchantNameA}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Sell ${ItemToA}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${ItemToB}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${CompA}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${CompB}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${CompC}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${CompD}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${CompE}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompA} 80
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompB} 240
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompE} 80
    /delay ${Math.Calc[${DelayMult}*1]}s
     /call ClosePacks
    /keypress esc

    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameB}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompC} 160
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompD} 180
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /notify MerchantWnd MW_Done_Button leftmouseup
    /keypress esc
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*1]}s

    /call GoToBarrel 
    
    /delay 1s 
    /click left item 
    /delay 2s 
    /doevents 
    /notify COMBW_SearchArea COMBW_SearchTextEdit leftmouseup 
    /delay 5 
    /call Type "Minotaur Hero's Brew" 
    :WaitForSearchButton 
    /if (!${Window[COMBW_SearchArea].Child[COMBW_SearchButton].Enabled}) /goto :WaitForSearchButton 
    /notify COMBW_SearchArea COMBW_SearchButton leftmouseup 
    /delay 2s


/notify COMBW_RecipeListArea COMBW_RecipeList listselect ${Window[COMBW_RecipeListArea].Child[COMBW_RecipeList].List[Minotaur Hero's Brew]} 
/delay 2 
/notify COMBW_RecipeListArea COMBW_RecipeList leftmouse ${Window[COMBW_RecipeListArea].Child[COMBW_RecipeList].List[Minotaur Hero's Brew]} 
    
/delay 2s 
    

   :Begin 
       /if (${stop}==0) /call ClearCursor 
        
       /if (${stop}==0) /call DoCombine 
       /if (${stop}==0) /goto :Begin 
  
    /delay 1s 
    /call ClosePacks 
    /keypress esc 
    /keypress esc 

    /call GoToMerchant 
    /delay 1s 
    /target ${MerchantNameA} 
    /face 
    /delay 1s 
    /click right target 
    /delay 1s 
    /call OpenPacks 
    /delay 2s 
    /call Sell ${ItemToA} 
    /delay 1s 
    /call Sell ${ItemToB} 
    /delay 1s 
    /call Sell ${ItemToC} 
    /delay 1s 
    /call ClosePacks 
    /keypress esc 
    /keypress esc 

    /goto :start 

    /return 


sub ClearCursor 
    :Loop 
      /if (!${Cursor.ID}) /return 
      /autoinv 
|      /destroy    
      /delay 5 
      /doevents 
      /goto :Loop 
    /return 

sub DoCombine 
    :Loop 
      
/notify TradeSkillWnd CombineButton leftmouseup 
/delay 10 
/notify TradeSkillWnd AutoInvButton leftmouseup 
/delay 5 
/notify TradeSkillWnd AutoInvButton leftmouseup 



      /delay 1s 
      
  
       /doevents 


/if (${stop}==1) /return 

/if (${Me.Skill[Brewing]}>${OldSkill}) { 
        /echo Your Brewing Went Up!! It's now ${Me.Skill[Brewing]}! 
        /varset OldSkill ${Me.Skill[Brewing]} 
      } 
/goto :Loop 


      /delay 5 
      

    /return 


Sub Event_CombineError 
    /varset EndingVar 2 
/return 





Sub Event_Missing 
/echo Need More items to combine 
/varset stop 1 
/return 


Sub Event_ContUsed 
    /echo Container in use. Waiting 30 seconds and trying again. 
    /delay 30s 
    /itemtarget "Brew Barrel" 
    /delay 1s 
    /click left item 
    /delay 2s 
    /doevents 
/return 


Sub GoToMerchant 
  /echo Going to Merchants. 
  :PullMoveLoop 
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -165.30,178.83 
  /if (${Math.Distance[-165.30,178.83]}>2) /keypress forward hold 
  /if (${Math.Distance[-165.30,178.83]}<=2) { 
    /keypress forward 
    /return 
  } 
  /goto :PullMoveLoop 
/return 

Sub GoToBarrel 
/varset stop 0  
 /echo Going to Brewing Barrel. 
  /itemtarget "Brew Barrel" 
  :PullMoveLoop 
  /if (${Me.State.Equal[SIT]}) /stand 
	/call MoveToLoc -167.59 170.75
	/face heading 180
	/call MoveToLoc -222.10 170.75
	/face heading 270 
	/delay 2s
/return 

Sub MoveToLoc(float MoveToY,float MoveToX) 
   :MoveToLoop 
      /face fast nolook loc ${MoveToY},${MoveToX} 
      /if (${Math.Distance[${MoveToY},${MoveToX}]}>2) /keypress forward hold 
      /if (${Math.Distance[${MoveToY},${MoveToX}]}<=2) {
         /keypress forward 
         /goto :Arrived 
      }
   /goto :MoveToLoop 
   :Arrived 
/return 

Sub Type(InStr) 
   /declare char string local 
   /declare loopctr int local 
   /for loopctr 1 to ${InStr.Length} 
      /varset char ${InStr.Mid[${loopctr},1]} 
      /if (!${char.Length}) { 
         /keypress space chat 
      } else { 
         /keypress ${char} chat 
      } 
   /next loopctr 
/return
 
Last edited:
The VeliumBits macro is awesome. It only took me about 120 Small Pieces of Velium to get from 212 to 222. (lucky I'm sure, as thats only 60 combines) It involves very minimal farming now that you get 2 of the smaller pieces anytime you use a chisel in a conversion and its cheap! (comparatively) Also, breaking down Velium Weapons is very well worth it. Guess its time to break down and make sickles, gah.
 
Moonspell said:
Well, I was right. I got to 248 before I got everything working, but I'm sure this will help someone else who may be trying to work their brewing skill. The macro now works totally AFK. Enjoy.

Rich (BB code):
| 
| brewing.mac 
| Takes you from 1 to 248 in Brewing 
|
| Version 2.5b 
|
| Original mac by Override
|
| Date: August 20, 2005 
| UPDATED BY OUNVME
|
| Date:14 November 2005
| Updated by Armysoldier
|
| Modified minor UI issues - THIS MAC uses NEW UI 
| Ensure you have made one MHB successfully before you try this mac.
| Also ensure MHB is saved to your favorites
|
| Before are the settings you need to change for you. 
| This Macro can take you up to 248 in brewing. 
| SkillMaxWanted can be change to what skill you want to stop at. 
| MerchantNameA is which merchant has the brewing components. 
| MerchantNameB is which merchant has the water and short beer components. 
| 
| This Macro works best in the Abysmal Sea since all the components are there. 
| You WILL need to be between both merchants to be able to use this macro. 
| 
| Disclaimer: 
| Code was used from other programers also from the MQ Forums. 
| This macro may not work any other place then the Abysmal Sea. 
| 

#event CombineError "#*#There was no place to put that#*#" 
#event CombineError "#*#You cannot combine these items in this container type!#*#" 
#event CombineError "#*#did not accept these items#*#" 
#event ContUsed "#*#Someone else is using that. Try again later.#*#" 
#event Missing "#*#You are Missing#*#" 

#include sell.inc 
#include buy.inc 
#include packs.inc 

Sub Main 
    /declare OldSkill int outer 
    /declare SkillMaxWanted int outer 
    /declare PackCode string outer 
    /declare Component[10] string outer 
    /declare i int outer 
    /declare MerchantNameA string Outer 
    /declare MerchantNameB string Outer 
    /declare CompA item outer 
    /declare CompB item outer 
    /declare CompC item outer 
    /declare CompD item outer 
    /declare CompE item outer 
    /declare CombItemName string outer 
    /declare ItemToA string outer 
    /declare ItemToB string outer 
    /declare ItemToC string outer 
    /declare EndingVar int outer 
    /declare Levelname int outer 
    /declare DelayMult int outer
    /varset OldSkill ${Me.Skill[Brewing]} 
/declare stop int outer    

| ************************************************ 
| *   Change these settings to what you want.    * 
| ************************************************ 
  
    /varset MerchantNameA "Galidnus Corkpopper" 
    /varset MerchantNameB "Dray Cuves" 
    /varset SkillMaxWanted 248 
    /varset DelayMult 1

| ************************************************ 
| ************************************************ 

    :start 
    /echo Brewing is at ${Me.Skill[Brewing]} 

    /if (${Me.Skill[Brewing]}>=${SkillMaxWanted}) { 
      /echo Brewing is at ${SkillMaxWanted}. Quiting! 
      /endmacro 
    } 



    /if (${Me.Skill[Brewing]}<${SkillMaxWanted}) {
      /varset CompA "cask"
      /varset CompB "malt"
      /varset CompC "short beer"
      /varset CompD "water flask"
      /varset CompE "yeast"
      /varset CombItemName "MHB"
      /varset ItemToA "Minotaur Hero's Brew"
      /varset ItemToB "bottle"
      /varset ItemToC "cask"
      }
    /varset EndingVar 1
    /call GoToMerchant
    /delay ${Math.Calc[${DelayMult}*1]}s
    /target ${MerchantNameA}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /call OpenPacks
    /delay ${Math.Calc[${DelayMult}*2]}s
    /call Sell ${ItemToA}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${ItemToB}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${CompA}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${CompB}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${CompC}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${CompD}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Sell ${CompE}
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompA} 80
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompB} 240
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompE} 80
    /delay ${Math.Calc[${DelayMult}*1]}s
     /call ClosePacks
    /keypress esc

    /delay ${Math.Calc[${DelayMult}*2]}s
    /target ${MerchantNameB}
    /face
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /click right target
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompC} 160
    /delay ${Math.Calc[${DelayMult}*1]}s
    /call Buy ${CompD} 180
    /delay ${Math.Calc[${DelayMult}*1]}s
    /nomodkey /notify MerchantWnd MW_DoneButton leftmouseup
    /keypress esc
    /keypress esc
    /delay ${Math.Calc[${DelayMult}*1]}s

    /call GoToBarrel 
    
    /delay 1s 
    /click left item 
    /delay 2s 
    /doevents 
    /notify COMBW_SearchArea COMBW_SearchTextEdit leftmouseup 
    /delay 5 
    /call Type "Minotaur Hero's Brew" 
    :WaitForSearchButton 
    /if (!${Window[COMBW_SearchArea].Child[COMBW_SearchButton].Enabled}) /goto :WaitForSearchButton 
    /notify COMBW_SearchArea COMBW_SearchButton leftmouseup 
    /delay 2s


/notify COMBW_RecipeListArea COMBW_RecipeList listselect ${Window[COMBW_RecipeListArea].Child[COMBW_RecipeList].List[Minotaur Hero's Brew]} 
/delay 2 
/notify COMBW_RecipeListArea COMBW_RecipeList leftmouse ${Window[COMBW_RecipeListArea].Child[COMBW_RecipeList].List[Minotaur Hero's Brew]} 
    
/delay 2s 
    

   :Begin 
       /if (${stop}==0) /call ClearCursor 
        
       /if (${stop}==0) /call DoCombine 
       /if (${stop}==0) /goto :Begin 
  
    /delay 1s 
    /call ClosePacks 
    /keypress esc 
    /keypress esc 

    /call GoToMerchant 
    /delay 1s 
    /target ${MerchantNameA} 
    /face 
    /delay 1s 
    /click right target 
    /delay 1s 
    /call OpenPacks 
    /delay 2s 
    /call Sell ${ItemToA} 
    /delay 1s 
    /call Sell ${ItemToB} 
    /delay 1s 
    /call Sell ${ItemToC} 
    /delay 1s 
    /call ClosePacks 
    /keypress esc 
    /keypress esc 

    /goto :start 

    /return 


sub ClearCursor 
    :Loop 
      /if (!${Cursor.ID}) /return 
      /autoinv 
|      /destroy    
      /delay 5 
      /doevents 
      /goto :Loop 
    /return 

sub DoCombine 
    :Loop 
      
/notify TradeSkillWnd CombineButton leftmouseup 
/delay 10 
/notify TradeSkillWnd AutoInvButton leftmouseup 
/delay 5 
/notify TradeSkillWnd AutoInvButton leftmouseup 



      /delay 1s 
      
  
       /doevents 


/if (${stop}==1) /return 

/if (${Me.Skill[Brewing]}>${OldSkill}) { 
        /echo Your Brewing Went Up!! It's now ${Me.Skill[Brewing]}! 
        /varset OldSkill ${Me.Skill[Brewing]} 
      } 
/goto :Loop 


      /delay 5 
      

    /return 


Sub Event_CombineError 
    /varset EndingVar 2 
/return 





Sub Event_Missing 
/echo Need More items to combine 
/varset stop 1 
/return 


Sub Event_ContUsed 
    /echo Container in use. Waiting 30 seconds and trying again. 
    /delay 30s 
    /itemtarget "Brew Barrel" 
    /delay 1s 
    /click left item 
    /delay 2s 
    /doevents 
/return 


Sub GoToMerchant 
  /echo Going to Merchants. 
  :PullMoveLoop 
  /if (${Me.State.Equal[SIT]}) /stand 
  /face nolook loc -165.30,178.83 
  /if (${Math.Distance[-165.30,178.83]}>2) /keypress forward hold 
  /if (${Math.Distance[-165.30,178.83]}<=2) { 
    /keypress forward 
    /return 
  } 
  /goto :PullMoveLoop 
/return 

Sub GoToBarrel 
/varset stop 0  
 /echo Going to Brewing Barrel. 
  /itemtarget "Brew Barrel" 
  :PullMoveLoop 
  /if (${Me.State.Equal[SIT]}) /stand 
	/call MoveToLoc -167.59 170.75
	/face heading 180
	/call MoveToLoc -222.10 170.75
	/face heading 270 
	/delay 2s
/return 

Sub MoveToLoc(float MoveToY,float MoveToX) 
   :MoveToLoop 
      /face fast nolook loc ${MoveToY},${MoveToX} 
      /if (${Math.Distance[${MoveToY},${MoveToX}]}>2) /keypress forward hold 
      /if (${Math.Distance[${MoveToY},${MoveToX}]}<=2) {
         /keypress forward 
         /goto :Arrived 
      }
   /goto :MoveToLoop 
   :Arrived 
/return 

Sub Type(InStr) 
   /declare char string local 
   /declare loopctr int local 
   /for loopctr 1 to ${InStr.Length} 
      /varset char ${InStr.Mid[${loopctr},1]} 
      /if (!${char.Length}) { 
         /keypress space chat 
      } else { 
         /keypress ${char} chat 
      } 
   /next loopctr 
/return


Hey Army thanks for the work on this ...

I have a small issue I am using the new default ui and when I run this toon goes to first npc and starts selling... well he even sells items I need to do the combines but this I can live with just costs me a lil to sell it and buy it back.... the issue comes in when I am done buying (wish I had written the rror down at this point) what happens is I get an error saying that it cannot find the done key then when it tries to go to the brewing barrel it stops the macro ( macro is running but toon does not go to the barrel) if I manually walk to the barrel click on it and select the desired combine the macro takes back over all the way to that point again. would love to afk this but does not really matter. Great help here with the Mac's thanks guy.

Just a lil feedback going to work others after this..
 
I wonder why you are having the issue in walking to the brew barrel. I added in code to automatically path you there and face you in the right direction, and added in code to automatically fill out the information/select your recipe in the new tradeskill UI. I tested it and it worked fine. I'll load up another toon and try it again and see if I can't re-create the error. I'll post back with what I find. :-)
 
Rawar,

I just tested the macro on another toon. I did get the MQ error that you said. It was:
Window MerchantWnd child MW_DoneButton not found.

That was an easy enough fix. There was a missing underscore between Done and Button.

However, the macro still pathed me over to the barrel and opened up the new tradeskill UI. I was a bit of a dumbass and didn't have the Minotaur Hero's Brew in my favorites list, so I can do do a manual combine and start the macro over. When I tried it again it worked just fine and I got that toons brewing up to 200.

Hey Army thanks for the work on this ...
Not that it really matters, but I'm the guy who got it working AFK again :-)

I posted the minor change I made in the code in the post above, see if that helps at all. If not, maybe we can figure out what the problem is.
 
Ya Moon it does matter sorry was not paying attention to who posted it......

Will reload it tonight and write additional messages down... I made sure I did enough combines to get the combine as a favorite.

It paths everything but the barrel just fine....
It does not even face me at it if that helps..
 
Anyone having problems with the smithing one.... after buying water walks me into wall... smithing 2 doesn't
 
Heya Army....having some issues with your Macs...the Celestial essence mac doesn't loop.....I can get around that one by changing the quantity I want made at once so thats no big deal. The Blessed Dust gets to the point where it makes the dust(after the acid purchase) and then it runs me outside of the room to the stairs and craps out. I don't have the exact error info at the moment but I will post them here as soon as I get home. I'm still trying to learn alot of this but am more than willing to work with ya to try to figure this out.
Thanks,
DaB
 
Various Tradeskill MACS

Users who are viewing this thread

Back
Top