From e59cbc9360b917dcd60837ec94bbcc1ef576500c Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 30 Jan 2026 10:21:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B6=85=E7=BA=A7=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=A5=96=E5=8A=B1=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mod/limited_time_event/limited_time_event.go | 15 ++------------- src/server/game/mod/order/Order.go | 8 +------- src/server/game/mod/order/order_func.go | 15 +++++++++++++++ src/server/game/register_network_func.go | 5 +++++ 4 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/server/game/mod/limited_time_event/limited_time_event.go b/src/server/game/mod/limited_time_event/limited_time_event.go index 62aa7f98..de3c40fd 100644 --- a/src/server/game/mod/limited_time_event/limited_time_event.go +++ b/src/server/game/mod/limited_time_event/limited_time_event.go @@ -270,19 +270,8 @@ func (l *LimitedTimeEventMod) ProgressBackData() *msg.ResLimitEventProgress { // 获取流星雨奖励 func (l *LimitedTimeEventMod) GetMeteorReward(MergeList, EmitList []int) []*item.Item { - eneryg := 0 - for _, v := range MergeList { - ChessLv := mergeDataCfg.GetLvById(v) - Color := mergeDataCfg.GetColorById(v) - EmitId := order.GetEmitByColor(EmitList, Color) - if EmitId == 0 { - continue - } - NewChessLv := mergeDataCfg.DynamicLevRev(ChessLv, EmitId, Color) - eneryg += int(math.Pow(2, float64(NewChessLv))) - } - - NewStar := int(max(math.Ceil(float64(eneryg)/0.36*0.1), 1)) + energy := order.GetVirtualEnergy(MergeList, EmitList) + NewStar := int(max(math.Ceil(float64(energy)/0.36*0.1), 1)) return []*item.Item{{Id: item.ITEM_STAR_ID, Num: NewStar}} } diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index b2247924..e71c8ad6 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -2,7 +2,6 @@ package order import ( "fmt" - limitedTimeEventCfg "server/conf/limited_time_event" mergeDataCfg "server/conf/merge_data" orderCfg "server/conf/order" "server/game/mod/item" @@ -118,12 +117,7 @@ func (o *OrderMod) RewardOrder(id int) ([]*item.Item, []int, int, int, error) { for _, v := range v.MergeId { Star += mergeDataCfg.GetStarById(v) } - if v.Type == Super_type { - Items := limitedTimeEventCfg.GetSuperOrderReward(Star) - ItemList = append(ItemList, Items...) - } else { - ItemList = v.Items - } + ItemList = v.Items if v.Type == Guide_type { return nil, v.MergeId, v.Type, 0, nil } diff --git a/src/server/game/mod/order/order_func.go b/src/server/game/mod/order/order_func.go index 653a4344..ac8cefdc 100644 --- a/src/server/game/mod/order/order_func.go +++ b/src/server/game/mod/order/order_func.go @@ -411,6 +411,21 @@ func GetEmitByColor(Emit []int, color string) int { return 0 } +func GetVirtualEnergy(MergeList, EmitList []int) int { + eneryg := 0 + for _, v := range MergeList { + ChessLv := mergeDataCfg.GetLvById(v) + Color := mergeDataCfg.GetColorById(v) + EmitId := GetEmitByColor(EmitList, Color) + if EmitId == 0 { + continue + } + NewChessLv := mergeDataCfg.DynamicLevRev(ChessLv, EmitId, Color) + eneryg += int(math.Pow(2, float64(NewChessLv))) + } + return eneryg +} + // 随机生成超级订单棋子 func randSuperOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul int) ([]int, int, error) { initReflectChess(Emit, EnergyMul) diff --git a/src/server/game/register_network_func.go b/src/server/game/register_network_func.go index 8303a101..5bfb581a 100644 --- a/src/server/game/register_network_func.go +++ b/src/server/game/register_network_func.go @@ -282,6 +282,11 @@ func ReqRewardOrder(player *Player, buf []byte) error { if OrderType == order.Pet_type { Item = player.FormatPetOrderItem(Item) } + if OrderType == order.Super_type { + virtualEnergy := order.GetVirtualEnergy(mergeList, ChessMod.GetStarEmitList()) + superOrderItem := limitedTimeEventCfg.GetSuperOrderReward(virtualEnergy) + Item = item.Merge(Item, superOrderItem) + } ActItem := player.GetActivityItem(GoUtil.Int32ToInt(req.ActType)) Item = item.Merge(Item, ActItem) if !OrderMod.CheckSuperOrder() {