From e3870ec10aab1403c7c61dc6471335d89ef2e78e Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 16 Jan 2025 14:40:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A2=E5=8D=95=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/chess/Chess.go | 40 ++++++++++---------------- src/server/game/mod/order/OrderFunc.go | 9 +++--- 2 files changed, 20 insertions(+), 29 deletions(-) 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)