动态难度修改

This commit is contained in:
hahwu 2025-10-11 11:06:13 +08:00
parent 808e3ebf1b
commit 0dc7af2515
7 changed files with 101 additions and 81 deletions

View File

@ -473,13 +473,24 @@ func DynamicLev2(Lv int, EmitId int, Color1 string, Color2 string) int {
return Lv return Lv
} }
func DynamicAdjust(EmitId int, Color string) int { func DynamicAdjust(EmitId int, Color string, EnergyMul int) int {
data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId)
if err != nil { if err != nil {
log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId)
return 0 return 0
} }
DynamicLv := gamedata.GetStringValue(data, "Dynamic") DynamicLv := ""
switch EnergyMul {
case 0:
DynamicLv = gamedata.GetStringValue(data, "Dynamic")
case 1, 2:
DynamicLv = gamedata.GetStringValue(data, "Dynamic1")
case 3, 4:
DynamicLv = gamedata.GetStringValue(data, "Dynamic2")
default:
DynamicLv = gamedata.GetStringValue(data, "Dynamic3")
}
if DynamicLv == "" { if DynamicLv == "" {
return 0 return 0
} }
@ -497,13 +508,23 @@ func DynamicAdjust(EmitId int, Color string) int {
return 0 return 0
} }
func GetAdjust(EmitId int, Color string) int { func GetAdjust(EmitId int, Color string, EnergyMul int) int {
data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId)
if err != nil { if err != nil {
log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId)
return 0 return 0
} }
AdjustLv := gamedata.GetStringValue(data, "Dynamic") AdjustLv := ""
switch EnergyMul {
case 0:
AdjustLv = gamedata.GetStringValue(data, "Dynamic")
case 1, 2:
AdjustLv = gamedata.GetStringValue(data, "Dynamic1")
case 3, 4:
AdjustLv = gamedata.GetStringValue(data, "Dynamic2")
default:
AdjustLv = gamedata.GetStringValue(data, "Dynamic3")
}
if AdjustLv == "" { if AdjustLv == "" {
return 0 return 0
} }

View File

@ -316,7 +316,7 @@ func checkChess(ChessId, EnergyMul int, Emit []int) bool {
} }
} }
_, Max := getChesslvRange(EmitId, EnergyMul, false) _, Max := getChesslvRange(EmitId, EnergyMul, false)
Adjust := mergeDataCfg.GetAdjust(EmitId, ChessIdColor) Adjust := mergeDataCfg.GetAdjust(EmitId, ChessIdColor, EnergyMul)
return ChessIdLv > Max-Adjust return ChessIdLv > Max-Adjust
} }
func getChesslvRange(Emit int, EnergyMul int, IsCharge bool) (int, int) { func getChesslvRange(Emit int, EnergyMul int, IsCharge bool) (int, int) {

View File

@ -263,7 +263,7 @@ func UnitOrder2(p *Player, Lv, EnergyMul int) float64 {
Color := mergeDataCfg.GetColorById(v1) Color := mergeDataCfg.GetColorById(v1)
Lv := mergeDataCfg.GetLvById(v1) Lv := mergeDataCfg.GetLvById(v1)
EmitId := order.GetEmitByColor(Emit, Color) EmitId := order.GetEmitByColor(Emit, Color)
AdjustLv := mergeDataCfg.GetAdjust(EmitId, Color) AdjustLv := mergeDataCfg.GetAdjust(EmitId, Color, EnergyMul)
Energy += math.Pow(2, float64(Lv-1+AdjustLv)) Energy += math.Pow(2, float64(Lv-1+AdjustLv))
} }
} }

View File

@ -329,7 +329,7 @@ func (c *ChargeMod) InitChessShop(Emit []int) {
continue continue
} }
ChessLv := mergeDataCfg.GetLvById(c) ChessLv := mergeDataCfg.GetLvById(c)
DynamicLv := mergeDataCfg.GetAdjust(v, p) DynamicLv := mergeDataCfg.GetAdjust(v, p, 0)
ChessLv += DynamicLv ChessLv += DynamicLv
Diamond := math.Round(math.Pow(2, float64(ChessLv)) / 18) Diamond := math.Round(math.Pow(2, float64(ChessLv)) / 18)
RandList = append(RandList, &Rand{ChessId: c, Diamond: int(Diamond)}) RandList = append(RandList, &Rand{ChessId: c, Diamond: int(Diamond)})

View File

@ -2,7 +2,6 @@ package charge
import ( import (
"math" "math"
mergeDataCfg "server/conf/mergeData"
) )
func GetChessDiamond(Lv, Type int) int { func GetChessDiamond(Lv, Type int) int {
@ -22,41 +21,41 @@ func GetChessDiamond(Lv, Type int) int {
return max(1, d) return max(1, d)
} }
func getChessMainRand(Color string) []*Rand { // func getChessMainRand(Color string) []*Rand {
r := make([]*Rand, 0) // r := make([]*Rand, 0)
for i := 6; i <= 10; i++ { // for i := 6; i <= 10; i++ {
Diamond := int(math.Pow(2, float64(i-1)) / 2.5) // Diamond := int(math.Pow(2, float64(i-1)) / 2.5)
ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color) // ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color)
if ChessId == 0 { // if ChessId == 0 {
continue // continue
} // }
r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond}) // r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond})
} // }
return r // return r
} // }
func getChessSecondaryRand(Color string) []*Rand { // func getChessSecondaryRand(Color string) []*Rand {
r := make([]*Rand, 0) // r := make([]*Rand, 0)
for i := 5; i <= 9; i++ { // for i := 5; i <= 9; i++ {
Diamond := int((math.Pow(2, float64(i-1)) / 2.5) * 2) // Diamond := int((math.Pow(2, float64(i-1)) / 2.5) * 2)
ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color) // ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color)
if ChessId == 0 { // if ChessId == 0 {
continue // continue
} // }
r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond}) // r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond})
} // }
return r // return r
} // }
func getChessSubRand(Color string) []*Rand { // func getChessSubRand(Color string) []*Rand {
r := make([]*Rand, 0) // r := make([]*Rand, 0)
for i := 5; i <= 9; i++ { // for i := 5; i <= 9; i++ {
Diamond := int(math.Pow(2, float64(i-1))/2.5 + 6.4) // Diamond := int(math.Pow(2, float64(i-1))/2.5 + 6.4)
ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color) // ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color)
if ChessId == 0 { // if ChessId == 0 {
continue // continue
} // }
r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond}) // r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond})
} // }
return r // return r
} // }

View File

@ -666,7 +666,7 @@ func (o *OrderMod) ChangeEnergyMul(lv int, Emit []int, EnergyMul int, ChessList
Color := mergeDataCfg.GetColorById(vv) Color := mergeDataCfg.GetColorById(vv)
EmitId := GetEmitByColor(Emit, Color) EmitId := GetEmitByColor(Emit, Color)
_, Max := getChesslvRange(EmitId, EnergyMul, o.IsCharge) _, Max := getChesslvRange(EmitId, EnergyMul, o.IsCharge)
Adjust := mergeDataCfg.GetAdjust(EmitId, Color) Adjust := mergeDataCfg.GetAdjust(EmitId, Color, EnergyMul)
if Lv >= EnergyMul+1 && Lv <= Max-Adjust { if Lv >= EnergyMul+1 && Lv <= Max-Adjust {
continue continue
} }

View File

@ -90,13 +90,13 @@ type orderConfigInfo struct {
} }
// 订单棋子数量 // 订单棋子数量
func getChessNumRand(OrderN int) map[int]int { // func getChessNumRand(OrderN int) map[int]int {
return map[int]int{ // return map[int]int{
1: int(70 - 2*OrderN), // 1: int(70 - 2*OrderN),
2: int(25 + OrderN), // 2: int(25 + OrderN),
3: int(5 + OrderN), // 3: int(5 + OrderN),
} // }
} // }
// 根据上一个订单难度和系数 生成订单难度 // 根据上一个订单难度和系数 生成订单难度
func getOrderDiffRand(Lv, Diff, OrderN int) map[int]int { func getOrderDiffRand(Lv, Diff, OrderN int) map[int]int {
@ -737,34 +737,34 @@ func (o *OrderMod) getChessLvFromConfig1(MinEnergy, MaxEnergy, MinLv, MaxLv, Las
return rand return rand
} }
func (o *OrderMod) getChessLvFromConfig2(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) []int { // func (o *OrderMod) getChessLvFromConfig2(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) []int {
rand := []int{} // rand := []int{}
for _, v := range orderCfgMap { // for _, v := range orderCfgMap {
if MinEnergy >= v.Min && MaxEnergy <= v.Max { // if MinEnergy >= v.Min && MaxEnergy <= v.Max {
for _, info := range v.Pool { // for _, info := range v.Pool {
if MinLv <= info.lv && MaxLv >= info.lv { // if MinLv <= info.lv && MaxLv >= info.lv {
rand = append(rand, info.lv) // rand = append(rand, info.lv)
} // }
} // }
} // }
} // }
return rand // return rand
} // }
func (o *OrderMod) getChessLvFromConfig3(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) []int { // func (o *OrderMod) getChessLvFromConfig3(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) []int {
rand := []int{} // rand := []int{}
for _, v := range orderCfgMap { // for _, v := range orderCfgMap {
if MinEnergy >= v.Min && MaxEnergy <= v.Max { // if MinEnergy >= v.Min && MaxEnergy <= v.Max {
for _, info := range v.Pool { // for _, info := range v.Pool {
if MinLv <= info.lv && MaxLv >= info.lv && LastEnergy+info.energy <= MaxEnergy && LastEnergy+info.energy >= MinEnergy { // if MinLv <= info.lv && MaxLv >= info.lv && LastEnergy+info.energy <= MaxEnergy && LastEnergy+info.energy >= MinEnergy {
rand = append(rand, info.lv) // rand = append(rand, info.lv)
} // }
} // }
} // }
} // }
return rand // return rand
} // }
func (o *OrderMod) ChessPoolChess(Color string, Lv int) bool { func (o *OrderMod) ChessPoolChess(Color string, Lv int) bool {
for _, v := range o.ChessPool2[Color] { for _, v := range o.ChessPool2[Color] {
@ -949,19 +949,19 @@ func initReflectChess(Emits []int, EnergyMul int) {
Start = ChessMinLv Start = ChessMinLv
End = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3 - 1 End = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3 - 1
for _, v := range Product { for _, v := range Product {
Adjust := mergeDataCfg.DynamicAdjust(Emit, v) Adjust := mergeDataCfg.DynamicAdjust(Emit, v, EnergyMul)
initReflectChess2(v, Start, End, DIFF_LOW, Adjust) initReflectChess2(v, Start, End, DIFF_LOW, Adjust)
} }
Start = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3 Start = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3
End = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3*2 - 1 End = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3*2 - 1
for _, v := range Product { for _, v := range Product {
Adjust := mergeDataCfg.DynamicAdjust(Emit, v) Adjust := mergeDataCfg.DynamicAdjust(Emit, v, EnergyMul)
initReflectChess2(v, Start, End, DIFF_MID, Adjust) initReflectChess2(v, Start, End, DIFF_MID, Adjust)
} }
Start = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3*2 Start = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3*2
End = ChessMaxLv End = ChessMaxLv
for _, v := range Product { for _, v := range Product {
Adjust := mergeDataCfg.DynamicAdjust(Emit, v) Adjust := mergeDataCfg.DynamicAdjust(Emit, v, EnergyMul)
initReflectChess2(v, Start, End, DIFF_HIGH, Adjust) initReflectChess2(v, Start, End, DIFF_HIGH, Adjust)
} }
} }