From 18e22b4f1eb4d5844562d25007824912a4b760ca Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 13 Jan 2025 12:14:49 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=83=AD=E8=AE=A2=E5=8D=95=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/PlayerChessMod.go | 5 +++-- src/server/game/RegisterNetworkFunc.go | 3 ++- src/server/game/mod/order/Order.go | 24 +++++++++++++++++++----- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/server/game/PlayerChessMod.go b/src/server/game/PlayerChessMod.go index 870dff08..ebe7c9ae 100644 --- a/src/server/game/PlayerChessMod.go +++ b/src/server/game/PlayerChessMod.go @@ -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()) } diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 04125a61..30f1afdb 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -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()) } diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index 091be492..d3f6fec9 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -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 //额外订单补充1;CDEG发射器首次合成时,生成其对应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 }