diff --git a/src/server/conf/mergeData/MergeDataCfg.go b/src/server/conf/mergeData/MergeDataCfg.go index 9d7e8543..c61f4936 100644 --- a/src/server/conf/mergeData/MergeDataCfg.go +++ b/src/server/conf/mergeData/MergeDataCfg.go @@ -148,6 +148,16 @@ func GetMaxLvById(Id int) int { return gamedata.ParseInt(data["MaxLv"]) } +// 根据Id获取棋子最大等级 +func GetMaxLvByColor(Color string) int { + ChessId := GetChessIdByLvAndColor(1, Color) + data, err := gamedata.GetDataByIntKey(CFG_NAME, ChessId) + if err != nil { + return 0 + } + return gamedata.ParseInt(data["MaxLv"]) +} + // 根据Id获取发射器最小等级 func GetEmitMinLvById(Id string) int { data, err := gamedata.GetDataByKey(CFG_MERGE_EMIT, Id) @@ -168,21 +178,6 @@ func GetEmitRatio(Id string) float64 { return gamedata.GetFloatValue(data, "Ratio") } -func GetMaxLvByColor(Color string) int { - data, err := gamedata.GetData(CFG_NAME) - if err != nil { - log.Debug("GetMaxLvByColor GetOne Color:%v not found", Color) - return 0 - } - for _, v := range data { - if gamedata.GetStringValue(v, "Color") == Color { - lv := gamedata.GetIntValue(v, "MaxLv") - return lv - } - } - return 0 -} - // 根据Id获取棋子类型 func GetTypeById(Id int) string { data, err := gamedata.GetDataByIntKey(CFG_NAME, Id) diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index e623444c..b7ed1991 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -2,7 +2,6 @@ package order import ( "fmt" - "log" "server/GoUtil" startOrderCfg "server/conf/StartOrder" limitedTimeEventCfg "server/conf/limitedTimeEvent" @@ -239,7 +238,7 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int, EnergyMul int) error { } break } - log.Printf("CreateNormalOrder: %v, %v, %v", mergeList, OrderDiff, err) + // log.Printf("CreateNormalOrder: %v, %v, %v", mergeList, OrderDiff, err) o.addOrder(mergeList, OrderDiff, Common_type) return nil } diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index 5e144ae4..ccf49c71 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -213,6 +213,9 @@ func randOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul int) ([]int, int, ChessId := 0 for { ChessId = getChessFromPoolByDiff(o, v, Emit, EnergyMul) + if ChessId == 0 { + continue + } if !GoUtil.InArray(ChessId, mergeList) { break } @@ -332,6 +335,8 @@ func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) in ChessMinLv, ChessMaxLv := getChesslvRange(EmitChessId, EnergyMul) NewLev := getChessLv(ChessMinLv, ChessMaxLv, Diff) NewLev1 := mergeDataCfg.DynamicLev(NewLev, EmitChessId, Color) + MaxLev := mergeDataCfg.GetMaxLvByColor(Color) + NewLev1 = min(NewLev1, MaxLev) ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev1, Color) ProductColor := mergeDataCfg.GetEmitProduceType(EmitChessId) for _, i := range ProductColor { @@ -340,6 +345,8 @@ func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) in } NewLev2 := mergeDataCfg.DynamicLev2(NewLev1, EmitChessId, Color, i) NewLev2 = adjustLev(NewLev2, EnergyMul) + MaxLev := mergeDataCfg.GetMaxLvByColor(i) + NewLev2 = min(NewLev2, MaxLev) ChessId2 := mergeDataCfg.GetChessIdByLvAndColor(NewLev2, i) if ChessId2 != 0 { o.ChessPool = append(o.ChessPool, ChessId2)