From e7178b532adfcd16700c2f59bf345fb752894e02 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 22 Jan 2025 11:39:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B6=85=E7=BA=A7=E8=AE=A2=E5=8D=95=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/order/Order.go | 2 +- src/server/game/mod/order/OrderFunc.go | 34 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) 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)