diff --git a/src/server/game/mod/friend_treasure.go/friend_treasure.go b/src/server/game/mod/friend_treasure.go/friend_treasure.go index 06823956..42689985 100644 --- a/src/server/game/mod/friend_treasure.go/friend_treasure.go +++ b/src/server/game/mod/friend_treasure.go/friend_treasure.go @@ -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}, diff --git a/src/server/game/mod_factory.go b/src/server/game/mod_factory.go index 12118ed9..b30a5390 100644 --- a/src/server/game/mod_factory.go +++ b/src/server/game/mod_factory.go @@ -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() +} diff --git a/src/server/game/register_network_func.go b/src/server/game/register_network_func.go index bced11dd..25a910ef 100644 --- a/src/server/game/register_network_func.go +++ b/src/server/game/register_network_func.go @@ -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{ diff --git a/src/server/test/friendTreasure_test.go b/src/server/test/friendTreasure_test.go new file mode 100644 index 00000000..7779dd55 --- /dev/null +++ b/src/server/test/friendTreasure_test.go @@ -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) + } +}