diff --git a/src/server/game/mod/chess/Chess.go b/src/server/game/mod/chess/Chess.go index 6f5e82c5..96cac75c 100644 --- a/src/server/game/mod/chess/Chess.go +++ b/src/server/game/mod/chess/Chess.go @@ -111,17 +111,9 @@ func (cb *ChessBorad) ComposeChess(id int) (int, error) { } ChessType := mergeDataCfg.GetTypeById(id) if ChessType == "Emitter" { - _, ok := cb.EmitList[id+1] - if ok { - cb.EmitList[id+1]++ - } else { - cb.EmitList[id+1] = 1 - } - if cb.EmitList[id] > 2 { - cb.EmitList[id] -= 2 - } else { - delete(cb.EmitList, id) - } + cb.EmitList[id+1]++ + cb.EmitList[id]-- + cb.EmitList[id]-- } id++ newList = append(newList, id) @@ -147,12 +139,7 @@ func (cb *ChessBorad) AddChess(id int) error { } ChessType := mergeDataCfg.GetTypeById(id) if ChessType == "Emitter" { - _, ok := cb.EmitList[id] - if ok { - cb.EmitList[id]++ - } else { - cb.EmitList[id] = 1 - } + cb.EmitList[id]++ } cb.ChessList = append(cb.ChessList, id) return nil @@ -167,12 +154,7 @@ func (cb *ChessBorad) BuyChess(id int) (int, error) { cb.ChessList = append(cb.ChessList, id) ChessType := mergeDataCfg.GetTypeById(id) if ChessType == "Emitter" { - _, ok := cb.EmitList[id] - if ok { - cb.EmitList[id]++ - } else { - cb.EmitList[id] = 1 - } + cb.EmitList[id]++ } return CfgRecord.SellNum, nil } @@ -235,6 +217,7 @@ func (cb *ChessBorad) RemoveChess(Id int) error { func (cb *ChessBorad) GetEmitList() []int { result := make([]int, 0, len(cb.EmitList)) + EM := make(map[string]int) for k, v := range cb.EmitList { EmitID := mergeDataCfg.GetEmitId(k) if EmitID == "" { @@ -243,9 +226,16 @@ func (cb *ChessBorad) GetEmitList() []int { if cb.Retire[EmitID] == 2 { continue } - if v > 0 { - result = append(result, k) + EmitType := mergeDataCfg.GetEmitType(k) + if EmitType == "sub" { + continue } + if v > 0 { + EM[EmitID] = max(EM[EmitID], k) + } + } + for _, v := range EM { + result = append(result, v) } return result } diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index 4162402e..d6f4935a 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -313,8 +313,6 @@ func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) in EmitId := getEmitId(o, Emit) EmitChessId := getEmitBySeries(Emit, EmitId) ColorRand := mergeDataCfg.GetEmitProduceType(EmitChessId) - Color := GoUtil.RandStringSlice(ColorRand) - // 从棋子池中获取棋子 MinChessId := 0 for i, chess := range o.ChessPool { @@ -337,12 +335,14 @@ func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) in if MinChessId != 0 { MinChessColor := mergeDataCfg.GetColorById(MinChessId) NewEmitChessId := getEmitByColor(Emit, MinChessColor) + ColorRand := mergeDataCfg.GetEmitProduceType(NewEmitChessId) ChessMinLv, ChessMaxLv := getChesslvRange(NewEmitChessId, EnergyMul) NewLev := getChessLv(ChessMinLv, ChessMaxLv, Diff) MinChessLv := mergeDataCfg.GetLvById(MinChessId) - NewLev2 := adjustLev(NewLev, EnergyMul) + NewLev2 := mergeDataCfg.DynamicLev2(NewLev, NewEmitChessId, ColorRand[0], MinChessColor) + NewLev3 := adjustLev(NewLev2, EnergyMul) o.ChessPool = GoUtil.DeleteEleByValue(o.ChessPool, MinChessId) - for i := NewLev2; i < MinChessLv; i++ { + for i := NewLev3; i < MinChessLv; i++ { ChessId2 := mergeDataCfg.GetChessIdByLvAndColor(i, MinChessColor) if ChessId2 != 0 { o.ChessPool = append(o.ChessPool, ChessId2) @@ -351,6 +351,7 @@ func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) in Chess := mergeDataCfg.GetChessIdByLvAndColor(NewLev2, MinChessColor) return Chess } + Color := GoUtil.RandStringSlice(ColorRand) ChessMinLv, ChessMaxLv := getChesslvRange(EmitChessId, EnergyMul) NewLev := getChessLv(ChessMinLv, ChessMaxLv, Diff) NewLev1 := mergeDataCfg.DynamicLev(NewLev, EmitChessId, Color)