From d96b05a2aa206af71aca2bc2616183a03a88df25 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 14 Jan 2025 18:39:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A2=E5=8D=95=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/order/orderCfg.go | 17 +++++++++++++++++ src/server/game/PlayerFunc.go | 2 ++ src/server/game/mod/order/Order.go | 17 ++++++++++++++++- 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/server/conf/order/orderCfg.go b/src/server/conf/order/orderCfg.go index dd7d67ed..0fe9a65a 100644 --- a/src/server/conf/order/orderCfg.go +++ b/src/server/conf/order/orderCfg.go @@ -7,11 +7,13 @@ import ( const ( CFG_ORDER_DATA = "OrderData" CFG_ORDER_CHESS_DATA = "OrderChessData" + CFG_ORDER_NUM_DATA = "OrderNumData" ) func init() { gamedata.InitCfg(CFG_ORDER_DATA) gamedata.InitCfg(CFG_ORDER_CHESS_DATA) + gamedata.InitCfg(CFG_ORDER_NUM_DATA) } func GetLvMin(EnergyMul int) int { @@ -39,3 +41,18 @@ func GetLvMax(EnergyMul, N int) int { } return 0 } + +func GetOrderNum(Level int) int { + data, err := gamedata.GetData(CFG_ORDER_NUM_DATA) + if err != nil { + return 0 + } + for _, v := range data { + Min := gamedata.GetIntValue(v, "MinLv") + Max := gamedata.GetIntValue(v, "MaxLv") + if Level >= Min && Level <= Max { + return gamedata.GetIntValue(v, "Num") + } + } + return 0 +} diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 382acc6f..46cb9e4b 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -737,6 +737,8 @@ func EmitRetireTrigger1(p *Player) { sort.Slice(EmitId1, func(i, j int) bool { return EmitId1[i] < EmitId1[j] }) + OrderMod := p.PlayMod.getOrderMod() + OrderMod.Retire(EmitId1[0]) ChessMod.BeginRetire(EmitId1[0]) } diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index 7c840953..6ef89688 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -6,6 +6,7 @@ import ( startOrderCfg "server/conf/StartOrder" limitedTimeEventCfg "server/conf/limitedTimeEvent" mergeDataCfg "server/conf/mergeData" + orderCfg "server/conf/order" playroomCfg "server/conf/playroom" "server/game/mod/item" "server/msg" @@ -136,7 +137,7 @@ func (o *OrderMod) CreateOrder(lv int, Emit []int, EnergyMul int) error { if o.CreatePriorityOrder(lv, Emit) { return nil } - MaxOrderNum := min(lv/4+2, 6) + MaxOrderNum := orderCfg.GetOrderNum(lv) n := 0 for _, v := range o.OrderList { if v.Type == Common_type || v.Type == Clean_type { @@ -522,3 +523,17 @@ func (o *OrderMod) ChangeEnergyMul(lv int, Emit []int, EnergyMul int, ChessList } } } + +func (o *OrderMod) Retire(EmitId string) { + ChessPool := make([]int, 0) + Product := mergeDataCfg.GetEmitProduce(EmitId) + for _, v := range o.ChessPool { + Color := mergeDataCfg.GetColorById(v) + if GoUtil.InStringArray(Color, Product) { + continue + } + ChessPool = append(ChessPool, v) + } + o.ChessPool = ChessPool + o.EmitShuffle = nil +}