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() } }