diff --git a/src/server/game/message_handler.go b/src/server/game/message_handler.go index 9b5fa356..8e894464 100644 --- a/src/server/game/message_handler.go +++ b/src/server/game/message_handler.go @@ -1249,7 +1249,7 @@ func (p *Player) GetPetThiefReward(target int) error { return nil } -// 高级产物订单 +// 高级产物订单 回收订单中不会生成的棋子 func (p *Player) AddHighOrder() { OrderMod := p.PlayMod.getOrderMod() BaseMod := p.PlayMod.getBaseMod() @@ -1291,8 +1291,12 @@ func (p *Player) AddHighOrder() { } } RetireProduceColor := ChessMod.GetRetireProduceColor() + emitList := ChessMod.GetEmitList() for Color, ChessId := range chessMap { - emitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), Color) + emitId := order.GetEmitByColor(emitList, Color) + if emitId == 0 { + continue + } _, ChessMaxLv := getChesslvRange(emitId, BaseMod.GetEnergyMul(), OrderMod.IsCharge) newLev2 := mergeDataCfg.DynamicLev(ChessMaxLv, emitId, Color) newLev3 := order.AdjustLev(newLev2, BaseMod.GetEnergyMul()) @@ -1310,6 +1314,13 @@ func (p *Player) AddHighOrder() { if GoUtil.InArray(ChessId, v.MergeId) { add = false } + // 增加当订单中已有同类型且等级大于等于该棋子的订单时,不生成订单 + for _, v1 := range v.MergeId { + if mergeDataCfg.GetColorById(v1) == Color && mergeDataCfg.GetLvById(v1) >= chessLv { + add = false + break + } + } } if add { OrderMod.AddExtraOrder([]int{ChessId})