diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index 4ad80669..1e7904bc 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -266,7 +266,7 @@ func (o *OrderMod) CreateSuperOrder(lv int, Emit []int, EnergyMul int) error { break } randNum++ - mergeList, OrderDiff, err = randOrderChess(o, lv, Emit, EnergyMul) + mergeList, OrderDiff, err = randSuperOrderChess(o, lv, Emit, EnergyMul) if err != nil { continue } diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index 70960282..b3a67035 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -207,6 +207,40 @@ func GetEmitByColor(Emit []int, color string) int { return 0 } +// 随机生成超级订单棋子 +func randSuperOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul int) ([]int, int, error) { + initReflectChess(Emit, EnergyMul) + filterPool(o) + OrderN, err := userCfg.GetOrderNByLv(lv) + RandChessNum := map[int]int{ + 2: 70 - OrderN, + 3: 30 + OrderN, + } + if err != nil { + return nil, diff_low, err + } + // 生成订单难度和棋子数量 + ChessNum := GoUtil.RandMap(RandChessNum) + OrderDiff := diff_high + ChessDiff := getChessDiff(ChessNum, OrderDiff, OrderN) + mergeList := make([]int, 0, len(ChessDiff)) + // 根据订单棋子难度生成棋子 + for _, v := range ChessDiff { + ChessId := 0 + for { + ChessId = getChessFromPoolByDiff(o, v, Emit, EnergyMul) + if ChessId == 0 { + continue + } + if !GoUtil.InArray(ChessId, mergeList) { + break + } + } + mergeList = append(mergeList, ChessId) + } + return mergeList, OrderDiff, nil +} + // 随机生成订单棋子 func randOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul int) ([]int, int, error) { initReflectChess(Emit, EnergyMul)