动态难度修改

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
}
func DynamicAdjust(EmitId int, Color string) int {
func DynamicAdjust(EmitId int, Color string, EnergyMul int) int {
data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId)
if err != nil {
log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId)
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 == "" {
return 0
}
@ -497,13 +508,23 @@ func DynamicAdjust(EmitId int, Color string) int {
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)
if err != nil {
log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId)
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 == "" {
return 0
}

View File

@ -316,7 +316,7 @@ func checkChess(ChessId, EnergyMul int, Emit []int) bool {
}
}
_, Max := getChesslvRange(EmitId, EnergyMul, false)
Adjust := mergeDataCfg.GetAdjust(EmitId, ChessIdColor)
Adjust := mergeDataCfg.GetAdjust(EmitId, ChessIdColor, EnergyMul)
return ChessIdLv > Max-Adjust
}
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)
Lv := mergeDataCfg.GetLvById(v1)
EmitId := order.GetEmitByColor(Emit, Color)
AdjustLv := mergeDataCfg.GetAdjust(EmitId, Color)
AdjustLv := mergeDataCfg.GetAdjust(EmitId, Color, EnergyMul)
Energy += math.Pow(2, float64(Lv-1+AdjustLv))
}
}

View File

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

View File

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

View File

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

View File

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