I ain't tested it comprehensively, but it passed the few tests that I did put it through. Let me know if it helps.
Code: Select all
| - Jeweling.mac -
| by: The_Sage
| edited: L124RD
| butchered: Grumpy
| massacred: MacroMaker
#turbo
#include routines.mac
#chat say
#define TRIVIALS 0
#define NAMES 1
#define GEMS 2
#define METALS 3
Sub Main
|Lets Seed the Trivial steps required
/varset a(TRIVIALS,1) 16
/varset a(TRIVIALS,2) 18
/varset a(TRIVIALS,3) 21
/varset a(TRIVIALS,4) 22
/varset a(TRIVIALS,5) 26
/varset a(TRIVIALS,6) 28
/varset a(TRIVIALS,7) 30
/varset a(TRIVIALS,8) 32
/varset a(TRIVIALS,9) 34
/varset a(TRIVIALS,10) 36
/varset a(TRIVIALS,11) 38
/varset a(TRIVIALS,12) 40
/varset a(TRIVIALS,13) 42
/varset a(TRIVIALS,14) 44
/varset a(TRIVIALS,15) 74
/varset a(TRIVIALS,16) 76
/varset a(TRIVIALS,17) 79
/varset a(TRIVIALS,18) 82
/varset a(TRIVIALS,19) 84
/varset a(TRIVIALS,20) 87
/varset a(TRIVIALS,21) 90
/varset a(TRIVIALS,22) 92
/varset a(TRIVIALS,23) 95
/varset a(TRIVIALS,24) 98
/varset a(TRIVIALS,25) 100
/varset a(TRIVIALS,26) 103
/varset a(TRIVIALS,27) 106
/varset a(TRIVIALS,28) 108
/varset a(TRIVIALS,29) 111
/varset a(TRIVIALS,30) 114
/varset a(TRIVIALS,31) 116
/varset a(TRIVIALS,32) 119
/varset a(TRIVIALS,33) 146
/varset a(TRIVIALS,34) 148
/varset a(TRIVIALS,35) 151
/varset a(TRIVIALS,36) 154
/varset a(TRIVIALS,37) 156
/varset a(TRIVIALS,38) 159
/varset a(TRIVIALS,39) 162
/varset a(TRIVIALS,40) 164
/varset a(TRIVIALS,41) 167
/varset a(TRIVIALS,42) 170
/varset a(TRIVIALS,43) 172
/varset a(TRIVIALS,44) 175
/varset a(TRIVIALS,45) 178
/varset a(TRIVIALS,46) 180
/varset a(TRIVIALS,47) 183
/varset a(TRIVIALS,48) 186
/varset a(TRIVIALS,49) 188
/varset a(TRIVIALS,50) 191
/varset a(TRIVIALS,51) 196
/varset a(TRIVIALS,52) 199
/varset a(TRIVIALS,53) 202
/varset a(TRIVIALS,54) 218
/varset a(TRIVIALS,55) 220
/varset a(TRIVIALS,56) 223
/varset a(TRIVIALS,57) 226
/varset a(TRIVIALS,58) 228
/varset a(TRIVIALS,59) 231
/varset a(TRIVIALS,60) 234
/varset a(TRIVIALS,61) 236
/varset a(TRIVIALS,62) 239
/varset a(TRIVIALS,63) 242
/varset a(TRIVIALS,64) 244
/varset a(TRIVIALS,65) 247
/varset a(TRIVIALS,66) 250
|Set the Jewlery Names
/varset a(NAMES,16) "Silver Lapis Lazuli Necklace"
/varset a(NAMES,18) "Silver Turquiose Bracelet"
/varset a(NAMES,21) "Silver Malachite Ring"
/varset a(NAMES,22) "Silver Hematite Ring"
/varset a(NAMES,26) "Silver Bloodstone Earring"
/varset a(NAMES,28) "Silver Onyx Bracelet"
/varset a(NAMES,30) "Silver Jasper Ring"
/varset a(NAMES,32) "Silver Carnelian Wedding Ring"
/varset a(NAMES,34) "Silver Rose Engagement Ring"
/varset a(NAMES,36) "Silver Amber Ring"
/varset a(NAMES,38) "Silver Wolf's Eye Necklace"
/varset a(NAMES,40) "Jaded Silver Ring"
/varset a(NAMES,42) "Silver Pearl Ring"
/varset a(NAMES,44) "Silver Topaz Ring"
/varset a(NAMES,74) "Electrum Malachite Bracelet"
/varset a(NAMES,76) "Electrum Lapis Lazuli Earring"
/varset a(NAMES,79) "Electrum Turquois Engagement Ring"
/varset a(NAMES,82) "Electrum Hematite Necklace"
/varset a(NAMES,84) "Electrum Cat's Eye Agate Bracelet"
/varset a(NAMES,87) "Electrum Bloodstone Necklace"
/varset a(NAMES,90) "Electrum Onyx Necklace"
/varset a(NAMES,92) "Electrum Jasper Earring"
/varset a(NAMES,95) "Electrum Carnelian Wedding Ring"
/varset a(NAMES,98) "Electrum Star Rose Quartz Necklace"
/varset a(NAMES,100) "Electrum Amber Earring"
/varset a(NAMES,103) "Electrum Wolf's Eye Agate Bracelet"
/varset a(NAMES,106) "Jaded Electrum Bracelet"
/varset a(NAMES,108) "Electrum Pearl Necklace"
/varset a(NAMES,111) "Electrum Topaz Earring"
/varset a(NAMES,114) "Electrum Peridot Bracelet"
/varset a(NAMES,116) "Emerald Electrum Bracelet"
/varset a(NAMES,119) "Electrum Opal Amulet"
/varset a(NAMES,146) "Gold Malachite Bracelet"
/varset a(NAMES,148) "Gold Lapis Lazuli Earring"
/varset a(NAMES,151) "Gold Turquois Ring"
/varset a(NAMES,154) "Golden Hematite Choker"
/varset a(NAMES,156) "Golden Cat's Eye Agate Bracelet"
/varset a(NAMES,159) "Gold Bloodstone Necklace"
/varset a(NAMES,162) "Gold Onyx Pendant"
/varset a(NAMES,164) "Gold Jasper Earring"
/varset a(NAMES,167) "Gold Carnelian Wedding Ring"
/varset a(NAMES,170) "Gold Star Rose Quartz Necklace"
/varset a(NAMES,172) "Golden Amber Earring"
/varset a(NAMES,175) "Golden Wolf's Eye Agate Bracelet"
/varset a(NAMES,178) "Golden Jaded Bracelet"
/varset a(NAMES,180) "Golden Pearl Choker"
/varset a(NAMES,183) "Golden Topaz Earring"
/varset a(NAMES,186) "Golden Peridot Bracelet"
/varset a(NAMES,188) "Golden Emerald Bracelet"
/varset a(NAMES,191) "Golden Opal Amulet"
/varset a(NAMES,196) "Golden Fire Wedding Ring"
/varset a(NAMES,199) "Golden Star Ruby Ring"
/varset a(NAMES,202) "Fire Emerald Golden Bracelet"
/varset a(NAMES,218) "Platinum Malachite Ring"
/varset a(NAMES,220) "Platinum Lapis Lazuli Necklace"
/varset a(NAMES,223) "Platinum turquois Bracelet"
/varset a(NAMES,226) "Platinum Hematite Ring"
/varset a(NAMES,228) "Platinum Cat's Eye Agate Necklace"
/varset a(NAMES,231) "Platinum Bloodstone Earring"
/varset a(NAMES,234) "Platinum Onyx Bracelet"
/varset a(NAMES,236) "Platinum Jasper Ring"
/varset a(NAMES,239) "Platinum Carnelian Wedding Ring"
/varset a(NAMES,242) "Platinum Star Rose Quartz Ring"
/varset a(NAMES,244) "Platinum Amber Ring"
/varset a(NAMES,247) "Platinum Wolf's Eye Agate Necklace"
/varset a(NAMES,250) "Jaded Platinum Ring"
|Set the Gem Names
/varset a(GEMS,16) "Lapis Lazuli"
/varset a(GEMS,18) "Turquoise"
/varset a(GEMS,21) "Malachite"
/varset a(GEMS,22) "Hematite"
/varset a(GEMS,26) "Bloodstone"
/varset a(GEMS,28) "Onyx"
/varset a(GEMS,30) "Jasper"
/varset a(GEMS,32) "Carnelian"
/varset a(GEMS,34) "Star Rose Quartz"
/varset a(GEMS,36) "Amber"
/varset a(GEMS,38) "Wolf's Eye Agate"
/varset a(GEMS,40) "Jade"
/varset a(GEMS,42) "Pearl"
/varset a(GEMS,44) "Topaz"
/varset a(GEMS,74) "Malachite"
/varset a(GEMS,76) "Lapis Lazuli"
/varset a(GEMS,79) "Turquoise"
/varset a(GEMS,82) "Hematite"
/varset a(GEMS,84) "Cat's Eye Agate"
/varset a(GEMS,87) "Bloodstone"
/varset a(GEMS,90) "Onyx"
/varset a(GEMS,92) "Jasper"
/varset a(GEMS,95) "Carnelian"
/varset a(GEMS,98) "Star Rose Quartz"
/varset a(GEMS,100) "Amber"
/varset a(GEMS,103) "Wolf's Eye Agate"
/varset a(GEMS,106) "Jade"
/varset a(GEMS,108) "Pearl"
/varset a(GEMS,111) "Topaz"
/varset a(GEMS,114) "Peridot"
/varset a(GEMS,116) "Emerald"
/varset a(GEMS,119) "Opal"
/varset a(GEMS,146) "Malachite"
/varset a(GEMS,148) "Lapis Lazuli"
/varset a(GEMS,151) "Turquoise"
/varset a(GEMS,154) "Hematite"
/varset a(GEMS,156) "Cat's Eye Agate"
/varset a(GEMS,159) "Bloodstone"
/varset a(GEMS,162) "Onyx"
/varset a(GEMS,164) "Jasper"
/varset a(GEMS,167) "Carnelian"
/varset a(GEMS,170) "Star Rose Quartz"
/varset a(GEMS,172) "Amber"
/varset a(GEMS,175) "Wolf's Eye Agate"
/varset a(GEMS,178) "Jade"
/varset a(GEMS,180) "Pearl"
/varset a(GEMS,183) "Topaz"
/varset a(GEMS,186) "Peridot"
/varset a(GEMS,188) "Emerald"
/varset a(GEMS,191) "Opal"
/varset a(GEMS,196) "Fire Opal"
/varset a(GEMS,199) "Star Ruby"
/varset a(GEMS,202) "Fire Emerald"
/varset a(GEMS,218) "Malachite"
/varset a(GEMS,220) "Lapis Lazuli"
/varset a(GEMS,223) "Turquoise"
/varset a(GEMS,226) "Hematite"
/varset a(GEMS,228) "Cat's Eye Agate"
/varset a(GEMS,231) "Bloodstone"
/varset a(GEMS,234) "Onyx"
/varset a(GEMS,236) "Jasper"
/varset a(GEMS,239) "Carnelian"
/varset a(GEMS,242) "Star Rose Quartz"
/varset a(GEMS,244) "Amber"
/varset a(GEMS,247) "Wolf's Eye Agate"
/varset a(GEMS,250) "Jade"
|Set the Metal Names
/varset a(METALS,16) "Silver Bar"
/varset a(METALS,18) "Silver Bar"
/varset a(METALS,21) "Silver Bar"
/varset a(METALS,22) "Silver Bar"
/varset a(METALS,26) "Silver Bar"
/varset a(METALS,28) "Silver Bar"
/varset a(METALS,30) "Silver Bar"
/varset a(METALS,32) "Silver Bar"
/varset a(METALS,34) "Silver Bar"
/varset a(METALS,36) "Silver Bar"
/varset a(METALS,38) "Silver Bar"
/varset a(METALS,40) "Silver Bar"
/varset a(METALS,42) "Silver Bar"
/varset a(METALS,44) "Silver Bar"
/varset a(METALS,74) "Electrum Bar"
/varset a(METALS,76) "Electrum Bar"
/varset a(METALS,79) "Electrum Bar"
/varset a(METALS,82) "Electrum Bar"
/varset a(METALS,84) "Electrum Bar"
/varset a(METALS,87) "Electrum Bar"
/varset a(METALS,90) "Electrum Bar"
/varset a(METALS,92) "Electrum Bar"
/varset a(METALS,95) "Electrum Bar"
/varset a(METALS,98) "Electrum Bar"
/varset a(METALS,100) "Electrum Bar"
/varset a(METALS,103) "Electrum Bar"
/varset a(METALS,106) "Electrum Bar"
/varset a(METALS,108) "Electrum Bar"
/varset a(METALS,111) "Electrum Bar"
/varset a(METALS,114) "Electrum Bar"
/varset a(METALS,116) "Electrum Bar"
/varset a(METALS,119) "Electrum Bar"
/varset a(METALS,146) "Gold Bar"
/varset a(METALS,148) "Gold Bar"
/varset a(METALS,151) "Gold Bar"
/varset a(METALS,154) "Gold Bar"
/varset a(METALS,156) "Gold Bar"
/varset a(METALS,159) "Gold Bar"
/varset a(METALS,162) "Gold Bar"
/varset a(METALS,164) "Gold Bar"
/varset a(METALS,167) "Gold Bar"
/varset a(METALS,170) "Gold Bar"
/varset a(METALS,172) "Gold Bar"
/varset a(METALS,175) "Gold Bar"
/varset a(METALS,178) "Gold Bar"
/varset a(METALS,180) "Gold Bar"
/varset a(METALS,183) "Gold Bar"
/varset a(METALS,186) "Gold Bar"
/varset a(METALS,188) "Gold Bar"
/varset a(METALS,191) "Gold Bar"
/varset a(METALS,196) "Gold Bar"
/varset a(METALS,199) "Gold Bar"
/varset a(METALS,202) "Gold Bar"
/varset a(METALS,218) "Platinum Bar"
/varset a(METALS,220) "Platinum Bar"
/varset a(METALS,223) "Platinum Bar"
/varset a(METALS,226) "Platinum Bar"
/varset a(METALS,228) "Platinum Bar"
/varset a(METALS,231) "Platinum Bar"
/varset a(METALS,234) "Platinum Bar"
/varset a(METALS,236) "Platinum Bar"
/varset a(METALS,239) "Platinum Bar"
/varset a(METALS,242) "Platinum Bar"
/varset a(METALS,244) "Platinum Bar"
/varset a(METALS,247) "Platinum Bar"
/varset a(METALS,250) "Platinum Bar"
| We need to get the Jewel Kit
/call GetJewelKit
/varset v80 $return
| Clean up any mess we made
/cleanup
| Turn off the spam
/filter skills all
| Lets see what Skill we are starting with
/call GetMySkill
| Character Skill Level = $Skill
/varset v1 $return
/echo Current Jewelry Skill: $v1
/call GetTrivial $v1
| Target Trivial Level = $Trivial
/varset v2 $return
/echo Target Trivial Level: $v2
| Jewelry Name = $Name
/varset v3 "$a(NAMES,$v2)"
| Gem Name = $Gem
/varset v4 "$a(GEMS,$v2)"
| Metal Name = $Metal
/varset v5 "$a(METALS,$v2)"
| Lets Make Some Jewelry
/call MakeJewelry "$v3" "$v4" "$v5"
:MAINLOOP
/if n $return==1 {
/goto :CRANK
} else {
/call Finished "$p0" "$p1" "$p2"
}
:CRANK
/call GetMySkill
/varset v1 $return
/echo Current Jewelry Skill: $v1
/if n $v1<$v2 {
/echo Target Trivial Level: $v2
/call MakeJewelry "$v3" "$v4" "$v5"
/goto :MAINLOOP
} else {
/echo We got a New Trivial!
/call GetTrivial $v1
/varset v2 $return
/echo Target Trivial Level: $v2
/varset v3 "$a(NAMES,$v2)"
/varset v4 "$a(GEMS,$v2)"
/varset v5 "$a(METALS,$v2)"
/call MakeJewelry "$v3" "$v4" "$v5"
/goto :MAINLOOP
}
/echo Once Again - We should never get here. Something else is wrong! :-)
/call Finished "$p0" "$p1" "$p2"
/return
| Usage: GetJewelKit
| Return: JewelKit
Sub GetJewelKit
/if "$invpanel"!="TRUE" /press i
/call FindCombiner "Jewelry Making"
/if $return==99 /return
/return $return
/return
| Usage: GetMySkill
| Returns: CurrentJewelrySkillLevel
Sub GetMySkill
/skill Jewel
/return $char(skill,"Jewelry Making")
| Usage: GetTrivial $Skill
| Returns: TargetTrivial
Sub GetTrivial
/Echo Looping May Take a Second .. Be Patient.
/varset v1 1
:FindTrivialLoop
/if n $p0<$a(TRIVIALS,$v1) /goto :Done
/varcalc v1 $v1 + 1
/goto :FindTrivialLoop
:Done
/return $a(TRIVIALS,$v1)
| Usage: MakeJewelry $Name $Gem $Metal
| Returns: 1 | 0
Sub MakeJewelry
/echo Making a $p0 = $p1 + $p2
/if $invpanel==TRUE /if $pack($v80,open)!=TRUE /click right inv $v80
/sendkey down ctrl
| Lets find the appropriate bar of metal
/finditem "$p2"
/if $find()==FALSE {
/call Finished "$p0" "$p1" "$p2"
}
| Put the Metal in the Kit
/click left pack $v80 0
/finditem "$p1"
/if $find()==FALSE {
/call Finished "$p0" "$p1" "$p2"
}
| Put the Gem in the Kit
/click left pack $v80 3
/sendkey up ctrl
| Combine it
/click left pack $v80 combine
| Drop it in our Inventory
/if "$cursor()"=="TRUE" /goto :AutoDropJewel
| Maybe we went to fast ... Lets slow down and repeat
/for v1 1 to 5
/delay 11
/if "$cursor()"=="TRUE" /goto :AutoDropJewel
/next v1
:AutoDropJewel
/click left auto
/delay 2
/click left auto
/return 1
/return 0
| Usage: Finished $Name $Gem $Metal
Sub Finished
/call SellIt "$p0"
/echo Need more ingrediants to make $p0
/echo Buy more $p1 & $p2
/filter skills all
/endmacro
/return
|Usage: SellIt $Name
Sub SellIt
/cleanup
/echo Selling all your $p0
/varset v65 0
/target npc
/varset v66 "$target(name,clean)"
/click right target
:WaitForMerchant
/doevents
/if n $v65==0 /goto :WaitForMerchant
/sendkey down shift
:Selling
/finditem similar "$p0"
/if $find()==FALSE /goto :Done
/Call SellMyItem
/goto :Selling
:done
/sendkey up shift
/press esc
/return
sub Event_Chat
/if "$p1"=="$v66" /if "$p0"~~"say" /if "$p2"~~"$char(name)" /varset v65 1
/return
Sub SellMyItem
/varset v99 $char(cash)
/click left merchant buy
/varset t9 15s
:WaitSell
/doevents
/if n $v99!=$char(cash) /goto :WaitEnd
/if $t9>0 /goto :WaitSell
:WaitEnd
/varset t9 0
/return
Anyone can be good ... only one can be the best.