diff --git a/job.go b/job.go
index 96bf553..e6f3afd 100644
--- a/job.go
+++ b/job.go
@@ -2031,11 +2031,13 @@ func jobCraftItem(j Job) {
func jobAlchAll(j Job) {
var (
- p JobPayloadAlchAll
- maxManaItems map[int64]int64
- maxResItems map[int64]int64
- itemInStock bool
- eta, out string
+ p JobPayloadAlchAll
+ maxManaItems map[int64]int64
+ maxResItems map[int64]int64
+ itemsCode map[int64]string
+ itemInStock, itemInserted bool
+ eta, out string
+ list []int64
)
err := setJobStart(j.ID64)
@@ -2090,6 +2092,7 @@ func jobAlchAll(j Job) {
if err == nil {
maxManaItems = make(map[int64]int64)
maxResItems = make(map[int64]int64)
+ itemsCode = make(map[int64]string)
// pre-fill maps with references and quantities
muxObjItem.RLock()
@@ -2099,6 +2102,7 @@ func jobAlchAll(j Job) {
if rx.MatchString(o.Craft.Command) {
maxManaItems[o.ObjID64] = p.ManaMax / o.Craft.Mana
maxResItems[o.ObjID64] = maxManaItems[o.ObjID64]
+ itemsCode[o.ObjID64] = o.Code
for _, i := range o.Craft.Items {
itemInStock = false
for _, s := range cwm.Stock {
@@ -2131,12 +2135,27 @@ func jobAlchAll(j Job) {
} else {
eta = "0m"
}
+ list = make([]int64, 0)
for k, q := range maxManaItems {
if q == maxResItems[k] {
- o, _ := getObjItem(k)
- out = fmt.Sprintf("%s\n%s - %s - %d
", out, o.Code, o.Names[0], q)
+ itemInserted = false
+ for i, n := range list {
+ if itemsCode[n] > itemsCode[k] {
+ itemInserted = true
+ list = append(list, 0)
+ copy(list[i+1:], list[i:])
+ list[i] = k
+ }
+ if !itemInserted {
+ list = append(list, k)
+ }
+ }
}
}
+ for _, i := range list {
+ o, _ := getObjItem(i)
+ out = fmt.Sprintf("%s\n%s - %s - %d
", out, o.Code, o.Names[0], maxManaItems[i])
+ }
c := TGCommand{
Type: commandReplyMsg,