订单优化

This commit is contained in:
hahwu 2025-09-18 16:07:10 +08:00
parent e65861c49f
commit 7c43add304
4 changed files with 61 additions and 3 deletions

View File

@ -312,18 +312,22 @@ func checkChess(ChessId, EnergyMul int, Emit []int) bool {
break
}
}
_, Max := getChesslvRange(EmitId, EnergyMul)
_, Max := getChesslvRange(EmitId, EnergyMul, false)
Adjust := mergeDataCfg.GetAdjust(EmitId, ChessIdColor)
return ChessIdLv > Max-Adjust
}
func getChesslvRange(Emit int, EnergyMul int) (int, int) {
func getChesslvRange(Emit int, EnergyMul int, IsCharge bool) (int, int) {
RandEmitLv := mergeDataCfg.GetLvById(Emit)
EmitId := mergeDataCfg.GetEmitId(Emit)
RandMaxLv := mergeDataCfg.GetMaxLvById(Emit)
RandEmitMinLv := mergeDataCfg.GetEmitMinLvById(EmitId)
Ratio := mergeDataCfg.GetEmitRatio(EmitId)
m := int(float64(1+RandEmitLv-RandEmitMinLv) / float64(1+RandMaxLv-RandEmitMinLv) / Ratio * 100)
if IsCharge {
m += 10
}
m = max(1, m)
m = min(100, m)
ChessMinLev := orderCfg.GetLvMin(EnergyMul)
ChessMaxLev := orderCfg.GetLvMax(EnergyMul, m)
return ChessMinLev, ChessMaxLev

View File

@ -1257,3 +1257,51 @@ func (p *Player) GetPetThiefReward(Target int) error {
p.HandleItem([]*item.Item{{Id: ItemId, Num: 1}}, proto.ITEM_POP_LABEL_PetTheif.String())
return nil
}
func (p *Player) AddHighOrder() {
OrderMod := p.PlayMod.getOrderMod()
BaseMod := p.PlayMod.getBaseMod()
ChessMod := p.PlayMod.getChessMod()
LastChess := OrderMod.LastOrder.MergeId[len(OrderMod.LastOrder.MergeId)-1]
maxId := 0
for k := range OrderMod.GetOrderList() {
maxId = max(maxId, k)
}
NewChess := OrderMod.GetOrderList()[maxId].MergeId[0]
LastColor := mergeDataCfg.GetColorById(LastChess)
NewColor := mergeDataCfg.GetColorById(NewChess)
LastEmitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), LastColor)
AddNewEmitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), NewColor)
Product := []string{}
Product = append(Product, mergeDataCfg.GetEmitProduceType(LastEmitId)...)
Product = append(Product, mergeDataCfg.GetEmitProduceType(AddNewEmitId)...)
ChessMap := make(map[string]int, 0)
ChessList := ChessMod.GetUnlockChessList()
for _, v := range ChessList {
ChessType := mergeDataCfg.GetTypeById(v)
if ChessType != "Product" {
continue
}
Color := mergeDataCfg.GetColorById(v)
if GoUtil.InStringArray(Color, Product) {
continue
}
if v > ChessMap[Color] {
ChessMap[Color] = v
}
}
for Color, ChessId := range ChessMap {
EmitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), Color)
_, ChessMaxLv := getChesslvRange(EmitId, BaseMod.GetEnergyMul(), OrderMod.IsCharge)
NewLev2 := mergeDataCfg.DynamicLev(ChessMaxLv, EmitId, Color)
NewLev3 := order.AdjustLev(NewLev2, BaseMod.GetEnergyMul())
ChessLv := mergeDataCfg.GetLvById(ChessId)
if NewLev3 <= ChessLv {
continue
}
OrderMod.AddExtraOrder([]int{ChessId})
return
}
}

View File

@ -497,6 +497,9 @@ func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) int {
o.LastDiff = Diff
return o.Auto_id
}
func (o *OrderMod) AddExtraOrder(ChessList []int) {
o.addOrder(ChessList, DIFF_LOW, Extra_type)
}
func (o *OrderMod) addFixOrder(Id int, ChessList []int, Type int, Items []*item.Item) {
Order := Order{
MergeId: ChessList,

View File

@ -843,6 +843,9 @@ func initReflectChess2(Color string, Start, End, Diff, adjust int) {
reflectChess[ChessId] = Diff
}
}
func AdjustLev(Lev, EnergyMul int) int {
return adjustLev(Lev, EnergyMul)
}
// 调整棋子等级
func adjustLev(Lev, EnergyMul int) int {