订单优化
This commit is contained in:
parent
e65861c49f
commit
7c43add304
@ -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
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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 {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user