预热订单优化

This commit is contained in:
hahwu 2025-01-13 12:14:49 +08:00
parent 12dc1bc0ab
commit 34830bb795
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 return handle_list[i].Id < handle_list[j].Id
}) })
ChessMod := player.PlayMod.getChessMod() ChessMod := player.PlayMod.getChessMod()
BaseMod := player.PlayMod.getBaseMod()
HandbookMod := player.PlayMod.getHandbookMod() HandbookMod := player.PlayMod.getHandbookMod()
var addChessCostEnergy int var addChessCostEnergy int
var buyChess int var buyChess int
@ -194,8 +195,8 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa
} }
//扣除体力 //扣除体力
EnergyPow := BaseMod.GetEnergyMul()
if addChessCostEnergy > 0 { if addChessCostEnergy > 0 {
EnergyPow := player.PlayMod.getBaseMod().GetEnergyMul()
ReduceEneny := int(math.Pow(2, float64(EnergyPow))) * addChessCostEnergy ReduceEneny := int(math.Pow(2, float64(EnergyPow))) * addChessCostEnergy
itemList = append(itemList, &item.Item{Id: item.ITEM_ENERGY_ID, Num: -ReduceEneny}) 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 return err
} }
OrderMod := player.PlayMod.getOrderMod() OrderMod := player.PlayMod.getOrderMod()
Update := OrderMod.CreateExtraOrder(AddChessList, AddNewEmit, ChessMod.GetChessList()) Update := OrderMod.CreateExtraOrder(AddChessList, AddNewEmit, ChessMod.GetChessList(), EnergyPow)
if Update { if Update {
player.PushClientRes(OrderMod.BackData()) player.PushClientRes(OrderMod.BackData())
} }

View File

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

View File

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