diff --git a/src/server/game/activity_func.go b/src/server/game/activity_func.go index 6161b32a..3435ccdd 100644 --- a/src/server/game/activity_func.go +++ b/src/server/game/activity_func.go @@ -605,6 +605,9 @@ func (p *Player) GetChampshipRankReward(rank, aid int) ([]*item.Item, error) { if ChampionshipMod == nil { return nil, fmt.Errorf("championship mod is nil") } + if ChampionshipMod.HasRankReward() { + return nil, fmt.Errorf("rank reward has been received") + } cfg := G_GameLogicPtr.ActivityMgr.GetChampshipCfg(aid) if cfg == nil { return nil, fmt.Errorf("championship config is nil") @@ -617,6 +620,7 @@ func (p *Player) GetChampshipRankReward(rank, aid int) ([]*item.Item, error) { return items, nil } } + ChampionshipMod.SetRankReward() return nil, fmt.Errorf("no rank reward found for rank %d", rank) } diff --git a/src/server/game/mod/champship/Champship.go b/src/server/game/mod/champship/Champship.go index 4f961b76..c80565ee 100644 --- a/src/server/game/mod/champship/Champship.go +++ b/src/server/game/mod/champship/Champship.go @@ -43,10 +43,18 @@ func (c *ChampshipMod) GetRankReward(Rank, yesterdayActivityId int) ([]*item.Ite if c.RankReward { return nil, fmt.Errorf("rank reward has been received") } - c.RankReward = true + c.SetRankReward() return champshipCfg.GetRankReward(Rank, yesterdayActivityId), nil } +func (c *ChampshipMod) SetRankReward() { + c.RankReward = true +} + +func (c *ChampshipMod) HasRankReward() bool { + return c.RankReward +} + func (c *ChampshipMod) AddScore(chess []int) { if !c.isActive() { return