From 892d81907e4b885d8bcba8326d8392d9e6e3df47 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 10 Mar 2026 11:01:33 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=80=E5=BD=B9=E7=9A=84=E6=A3=8B=E5=AD=90?= =?UTF-8?q?=E4=B8=8D=E7=94=9F=E6=88=90=E5=9B=9E=E6=94=B6=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/message_handler.go | 13 +++++++++++- src/server/game/mod/chess/Chess.go | 10 ++++++++++ src/server/game/mod/order/Order.go | 32 +++++++++++++++--------------- 3 files changed, 38 insertions(+), 17 deletions(-) diff --git a/src/server/game/message_handler.go b/src/server/game/message_handler.go index 1d6e9c54..2d17c6f6 100644 --- a/src/server/game/message_handler.go +++ b/src/server/game/message_handler.go @@ -1275,13 +1275,18 @@ func (p *Player) AddHighOrder() { ChessMap[Color] = v } } - + RetireProduceColor := ChessMod.GetRetireProduceColor() for Color, ChessId := range ChessMap { EmitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), Color) _, ChessMaxLv := getChesslvRange(EmitId, BaseMod.GetEnergyMul(), OrderMod.IsCharge) NewLev2 := mergeDataCfg.DynamicLev(ChessMaxLv, EmitId, Color) NewLev3 := order.AdjustLev(NewLev2, BaseMod.GetEnergyMul()) ChessLv := mergeDataCfg.GetLvById(ChessId) + chessColor := mergeDataCfg.GetColorById(ChessId) + // 退役产物不生成订单 + if GoUtil.InStringArray(chessColor, RetireProduceColor) { + continue + } if NewLev3 >= ChessLv { continue } @@ -1320,10 +1325,16 @@ func (p *Player) AddHighOrder2() { } ChessMap[v]++ } + RetireProduceColor := ChessMod.GetRetireProduceColor() for ChessId, Num := range ChessMap { if Num < 2 { continue } + chessColor := mergeDataCfg.GetColorById(ChessId) + // 退役产物不生成订单 + if GoUtil.InStringArray(chessColor, RetireProduceColor) { + continue + } add := true for _, v := range OrderMod.GetOrderList() { if GoUtil.SliceEqual(v.MergeId, []int{ChessId, ChessId}) || GoUtil.SliceEqual(v.MergeId, []int{ChessId, ChessId, ChessId}) { diff --git a/src/server/game/mod/chess/Chess.go b/src/server/game/mod/chess/Chess.go index 34a4d226..3c42a208 100644 --- a/src/server/game/mod/chess/Chess.go +++ b/src/server/game/mod/chess/Chess.go @@ -725,3 +725,13 @@ func (cb *ChessBorad) GetRetireReward(Id string) ([]*item.Item, error) { cb.RetireReward[Id] = true return mergeDataCfg.GetRetireReward(), nil } + +func (cb *ChessBorad) GetRetireProduceColor() []string { + color := make([]string, 0, len(cb.Retire)) + for k, v := range cb.Retire { + if v == EMIT_RETIRE_ING { + color = append(color, mergeDataCfg.GetEmitTypeByColor(k)) + } + } + return color +} diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index fe368138..467589d4 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -564,22 +564,22 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int, Energ } b3 := false //额外订单补充2;当玩家的棋盘中出现2个相同的满级产物时,立刻生成一个对应的收购订单; - for k := range MaxLvChess { - ChessNum := GoUtil.GetElemNum(ChessList, k) - if ChessNum >= 2 && Level >= 12 { - b2 := true - for _, v := range o.OrderList { - if GoUtil.SliceEqual(v.MergeId, []int{k, k}) { - b2 = false - break - } - } - if b2 { - b3 = true - o.addOrder([]int{k, k}, DIFF_LOW, Extra_type) - } - } - } + // for k := range MaxLvChess { + // ChessNum := GoUtil.GetElemNum(ChessList, k) + // if ChessNum >= 2 && Level >= 12 { + // b2 := true + // for _, v := range o.OrderList { + // if GoUtil.SliceEqual(v.MergeId, []int{k, k}) { + // b2 = false + // break + // } + // } + // if b2 { + // b3 = true + // o.addOrder([]int{k, k}, DIFF_LOW, Extra_type) + // } + // } + // } //额外订单补充1;CDEG发射器首次合成时,生成其对应2及棋子订单,完成后生成3及,再完成生成4及的; if b1 { ChessColor := mergeDataCfg.GetEmitProduceChessType(OrderEmit)