预热订单优化

This commit is contained in:
hahwu 2025-01-13 12:14:49 +08:00
parent e4658a828c
commit cf5ec556f7
3 changed files with 24 additions and 8 deletions

View File

@ -122,6 +122,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
return handle_list[i].Id < handle_list[j].Id
})
ChessMod := player.PlayMod.getChessMod()
BaseMod := player.PlayMod.getBaseMod()
HandbookMod := player.PlayMod.getHandbookMod()
var addChessCostEnergy int
var buyChess int
@ -194,8 +195,8 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
}
//扣除体力
EnergyPow := BaseMod.GetEnergyMul()
if addChessCostEnergy > 0 {
EnergyPow := player.PlayMod.getBaseMod().GetEnergyMul()
ReduceEneny := int(math.Pow(2, float64(EnergyPow))) * addChessCostEnergy
itemList = append(itemList, &item.Item{Id: item.ITEM_ENERGY_ID, Num: -ReduceEneny})
}
@ -204,7 +205,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
return err
}
OrderMod := player.PlayMod.getOrderMod()
Update := OrderMod.CreateExtraOrder(AddChessList, AddNewEmit, ChessMod.GetChessList())
Update := OrderMod.CreateExtraOrder(AddChessList, AddNewEmit, ChessMod.GetChessList(), EnergyPow)
if Update {
player.PushClientRes(OrderMod.BackData())
}

View File

@ -471,6 +471,7 @@ func ReqGetChessFromBuff(args []interface{}) error {
ChessMod := player.PlayMod.getChessMod()
HandbookMod := player.PlayMod.getHandbookMod()
OrderMod := player.PlayMod.getOrderMod()
BaseMod := player.PlayMod.getBaseMod()
ChessId := int(req.ChessId)
err := ChessMod.GetChessFromBuff(ChessId)
Update := HandbookMod.SetHandbook(ChessId)
@ -495,7 +496,7 @@ func ReqGetChessFromBuff(args []interface{}) error {
})
return err
}
Update = OrderMod.CreateExtraOrder([]int{ChessId}, AddNewEmit, ChessMod.GetChessList())
Update = OrderMod.CreateExtraOrder([]int{ChessId}, AddNewEmit, ChessMod.GetChessList(), BaseMod.GetEnergyMul())
if Update {
player.PushClientRes(OrderMod.BackData())
}

View File

@ -21,6 +21,7 @@ type OrderMod struct {
LastOrder Order // 上一个订单
LastNormalOrder Order // 上一个普通订单
EimtOrder map[string]struct{}
PreheatStep map[string]int // 预热订单步骤
}
type Order struct {
@ -47,6 +48,9 @@ func (o *OrderMod) InitData() {
if o.EimtOrder == nil {
o.EimtOrder = make(map[string]struct{})
}
if o.PreheatStep == nil {
o.PreheatStep = make(map[string]int)
}
if o.Step == 0 {
o.OrderList = make(map[int]Order)
Cfg := startOrderCfg.GetStartOrderByStep(o.Step + 1)
@ -100,11 +104,12 @@ func (o *OrderMod) CreateOrder(lv int, Emit []int, EnergyMul int) error {
switch o.LastOrder.Type {
case Preheat_type:
ChessId := o.LastOrder.MergeId[0]
ChessLv := mergeDataCfg.GetLvById(ChessId)
ChessColor := mergeDataCfg.GetColorById(ChessId)
if ChessLv < 4 {
NewChessId := mergeDataCfg.GetChessIdByLvAndColor(ChessLv+1, ChessColor)
PreheatStep := o.PreheatStep[ChessColor]
if PreheatStep < 4 {
NewChessId := mergeDataCfg.GetChessIdByLvAndColor(EnergyMul+PreheatStep, ChessColor)
o.addOrder([]int{NewChessId}, diff_low, Preheat_type)
o.PreheatStep[ChessColor]++
}
default:
if o.Step < 12 {
@ -388,7 +393,7 @@ func (o *OrderMod) CreateCleanOrder(ChessList []int) bool {
return true
}
func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int) bool {
func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int, EnergyMul int) bool {
GetExtraEmitId := mergeDataCfg.GetExtraEmitId()
b1 := false
OrderEmit := 0
@ -419,8 +424,9 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int) bool
//额外订单补充1CDEG发射器首次合成时生成其对应2及棋子订单完成后生成3及再完成生成4及的
if b1 {
ChessColor := mergeDataCfg.GetEmitProduceChessType(OrderEmit)
ChessId := mergeDataCfg.GetChessIdByLvAndColor(2, ChessColor[0])
ChessId := mergeDataCfg.GetChessIdByLvAndColor(EnergyMul, ChessColor[0])
if ChessId != 0 {
o.PreheatStep[ChessColor[0]] = 1
o.addOrder([]int{ChessId}, diff_low, Preheat_type)
}
}
@ -471,6 +477,14 @@ func (o *OrderMod) CheckSuperOrder() bool {
func (o *OrderMod) ChangeEnergyMul(lv int, Emit []int, EnergyMul int, ChessList []int) {
for k, v := range o.OrderList {
if v.Type == Preheat_type { // 预热订单 修改倍数时修改棋子等级
ChessId := v.MergeId[0]
ChessColor := mergeDataCfg.GetColorById(ChessId)
PreheatStep := o.PreheatStep[ChessColor]
NewChessId := mergeDataCfg.GetChessIdByLvAndColor(EnergyMul+PreheatStep, ChessColor)
v.MergeId = []int{NewChessId}
o.OrderList[k] = v
}
if v.Type != Common_type {
continue
}