宠物宝藏奖励基础值需乘当前场景倍率

This commit is contained in:
hahwu 2026-03-18 10:34:01 +08:00
parent 469e52f984
commit 2a43279167
4 changed files with 37 additions and 2 deletions

View File

@ -85,13 +85,14 @@ func (f *FriendTreasureMod) Flip(Pos int) ([]*item.Item, int64, error) {
}
// 结束游戏
func (f *FriendTreasureMod) EndGame() ([]*item.Item, int, error) {
func (f *FriendTreasureMod) EndGame(factor int) ([]*item.Item, int, error) {
if f.Status == GAME_STATUS_IDLE {
return nil, 0, fmt.Errorf("game is over")
}
// f.Shift++
ProbAdd := friendTreasureCfg.GetProbAdd(f.Shift)
ItemNum := int(float64(f.Star) * (100.0 + float64(ProbAdd)) / 100.0)
ItemNum = int(float64(ItemNum)*float64(factor)/100/5) * 5
FriendItemNum := ItemNum / 10
Reward := []*item.Item{
{Id: item.ITEM_STAR_ID, Num: ItemNum},

View File

@ -11,6 +11,7 @@ import (
"server/game/mod/endless"
"server/game/mod/face"
"server/game/mod/friend"
friendTreasure "server/game/mod/friend_treasure.go"
"server/game/mod/fur"
"server/game/mod/item"
limitedTimeEvent "server/game/mod/limited_time_event"
@ -95,3 +96,7 @@ func (p *Player) GetDailyTaskMod() *dailyTask.DailyTaskMod {
func (p *Player) GetItemMod() *item.ItemMod {
return p.PlayMod.getItemMod()
}
func (p *Player) GetFriendTreasureMod() *friendTreasure.FriendTreasureMod {
return p.PlayMod.getFriendTreasureMod()
}

View File

@ -4316,7 +4316,7 @@ func ReqFriendTreasureFilp(player *Player, buf []byte) error {
func ReqFriendTreasureEnd(player *Player, buf []byte) error {
FriendTreasureMod := player.PlayMod.getFriendTreasureMod()
Items, FriendItemNum, err := FriendTreasureMod.EndGame()
Items, FriendItemNum, err := FriendTreasureMod.EndGame(player.GetOrderFactor())
if err != nil {
player.SendErrClienRes(
&msg.ResFriendTreasureEnd{

View File

@ -0,0 +1,29 @@
package test
import (
"server/game"
friendTreasure "server/game/mod/friend_treasure.go"
"testing"
)
func TestFriendTreasure(t *testing.T) {
player := new(game.Player)
player.InitPlayerByUid(100001)
FriendTreasureMod := player.GetFriendTreasureMod()
FriendTreasureMod.Status = friendTreasure.GAME_STATUS_START
FriendTreasureMod.Shift = 1
FriendTreasureMod.Star = 100
Items, FriendItemNum, err := FriendTreasureMod.EndGame(111)
if err != nil {
t.Errorf("EndGame error: %v", err)
}
if len(Items) != 1 {
t.Errorf("EndGame error: expected 1 item, got %d", len(Items))
}
if Items[0].Num != 220 {
t.Errorf("EndGame error: expected item num 220, got %d", Items[0].Num)
}
if FriendItemNum != 22 {
t.Errorf("EndGame error: expected friend item num 22, got %d", FriendItemNum)
}
}