From 8328ac6b637d9c32966e81105c55676436854e04 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 10 Feb 2026 17:06:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A0=E5=B0=BD=E7=A4=BC=E5=8C=85=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/mod/endless/endless_func.go | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/server/game/mod/endless/endless_func.go b/src/server/game/mod/endless/endless_func.go index e0a4e240..0a3ab7dd 100644 --- a/src/server/game/mod/endless/endless_func.go +++ b/src/server/game/mod/endless/endless_func.go @@ -12,27 +12,31 @@ func InitReward(Energy float64, Order, Lv int) []*item.Item { numRand := map[int]int{1: 30, 2: 60, 3: 10} Num := Util.RandMap(numRand) PerEnergy := endlessCfg.GetPerEnergy(item.ITEM_ENERGY_ID) - + getNum := func(energy, preEnergy float64) int { + num := int(energy / preEnergy) + num = int(math.Round(float64(num)/5.0) * 5) + return max(num, 5) // 最少5个能量 + } if Num == 1 { - return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(float64(Energy)/PerEnergy))} + ItemNum := getNum(Energy, PerEnergy) + return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum)} } if Num == 2 { ItemId := endlessCfg.GetItemId(Energy, 0, Lv) if len(ItemId) == 0 { - return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(Energy/PerEnergy))} + return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, getNum(Energy, PerEnergy))} } RandItem := Util.RandSlice(ItemId) ItemEnergy := endlessCfg.GetEnergyByItemId(RandItem) LastEnergy := Energy - ItemEnergy - ItemNum := int(LastEnergy / PerEnergy) - ItemNum = int(math.Round(float64(ItemNum)/5.0) * 5) // 道具数量为5的倍数 + ItemNum := getNum(LastEnergy, PerEnergy) return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem, 1)} } if Num == 3 { ItemId := endlessCfg.GetItemId(Energy, 0, Lv) if len(ItemId) == 0 { - return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, int(Energy/PerEnergy))} + return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, getNum(Energy, PerEnergy))} } RandItem1 := Util.RandSlice(ItemId) Type := endlessCfg.GetType(RandItem1) @@ -40,14 +44,13 @@ func InitReward(Energy float64, Order, Lv int) []*item.Item { LastEnergy := Energy - ItemEnergy ItemId = endlessCfg.GetItemId(LastEnergy, Type, Lv) if len(ItemId) == 0 { - ItemNum := int(LastEnergy / PerEnergy) + ItemNum := getNum(LastEnergy, PerEnergy) return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem1, 1)} } RandItem2 := Util.RandSlice(ItemId) ItemEnergy = endlessCfg.GetEnergyByItemId(RandItem2) LastEnergy = LastEnergy - ItemEnergy - ItemNum := int(LastEnergy / PerEnergy) - ItemNum = int(math.Round(float64(ItemNum)/5.0) * 5) // 道具数量为5的倍数 + ItemNum := getNum(LastEnergy, PerEnergy) return []*item.Item{item.NewItem(item.ITEM_ENERGY_ID, ItemNum), item.NewItem(RandItem1, 1), item.NewItem(RandItem2, 1)} }