From 93c2e072f7776de9ebff30b9354e255a556821b3 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 31 Mar 2026 14:47:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=9B=B6=E4=BB=B6=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=90=AB=E8=87=AA=E5=8A=A8=E5=8F=91=E5=B0=84=E5=99=A8?= =?UTF-8?q?=E6=A3=8B=E5=AD=90=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/message_handler.go | 2 +- src/server/game/mod/order/Order.go | 22 ++++++++++++---------- src/server/test/order_test.go | 11 +++++++---- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/server/game/message_handler.go b/src/server/game/message_handler.go index 44ddccd5..8690f980 100644 --- a/src/server/game/message_handler.go +++ b/src/server/game/message_handler.go @@ -1133,7 +1133,7 @@ func (player *Player) CreateNormalOrder() { } } if trigger && trigger2 && BaseMod.GetLevel() >= 12 { - OrderMod.CreateOrder(BaseMod.GetLevel(), ChessMod.GetOrderPartEmit(), BaseMod.GetEnergyMul(), order.Part_type) + OrderMod.CreateOrder(BaseMod.GetLevel(), ChessMod.GetOrderEmit(), BaseMod.GetEnergyMul(), order.Part_type) for k, v := range OrderMod.GetOrderList() { if v.Type == order.Part_type { v.Items = []*item.Item{item.NewItem(item.ITEM_LAUNCHER_ID, 2)} diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index 2c86f09a..8960b313 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -425,12 +425,22 @@ func (o *OrderMod) CreateNormalOrder(lv int, emit []int, energyMul, orderType in break } } + // 零件订单不含自动发射器棋子 + if orderType == Part_type { + for _, v := range mergeList { + color := mergeDataCfg.GetColorById(v) + emitId := GetEmitByColor(emit, color) + if mergeDataCfg.GetEmitType(emitId) == "auto" { + conbine = true + } + } + } if conbine { continue } break } - fmt.Printf("生成订单的棋子列表:%v, 难度:%d\n", mergeList, OrderDiff) + fmt.Printf("mergeList:%v, OrderDiff:%d\n", mergeList, OrderDiff) for _, v := range mergeList { if v == 0 { return nil @@ -734,15 +744,7 @@ func (o *OrderMod) ChangeEnergyMul(lv int, emit []int, energyMul int, chessList */ if needTrigger { delete(o.OrderList, k) - newEmit := make([]int, len(emit)) - if v.Type == Part_type { - for _, v := range emit { - if mergeDataCfg.GetEmitType(v) != "auto" { - newEmit = append(newEmit, v) - } - } - } - o.CreateNormalOrder(lv, newEmit, energyMul, v.Type) + o.CreateNormalOrder(lv, emit, energyMul, v.Type) } } } diff --git a/src/server/test/order_test.go b/src/server/test/order_test.go index 05bc0568..2d75daea 100644 --- a/src/server/test/order_test.go +++ b/src/server/test/order_test.go @@ -76,10 +76,13 @@ func TestAddPartOrder(t *testing.T) { p1 := new(game.Player) p1.InitPlayer("bbb004") OrderMod := p1.GetOrderMod() - BaseMod := p1.GetBaseMod() - ChessMod := p1.GetChessMod() - for i := 0; i < 1000; i++ { - OrderMod.CreateOrder(BaseMod.GetLevel(), ChessMod.GetOrderPartEmit(), BaseMod.GetEnergyMul(), order.Part_type) + for i := 0; i < 10; i++ { + for k, v := range OrderMod.OrderList { + if v.Type == order.Part_type { + delete(OrderMod.OrderList, k) + } + } + p1.AddOrder() } }