diff --git a/src/server/conf/catnip/CatnipCfg.go b/src/server/conf/catnip/CatnipCfg.go index ff388e17..bdc1742d 100644 --- a/src/server/conf/catnip/CatnipCfg.go +++ b/src/server/conf/catnip/CatnipCfg.go @@ -112,6 +112,21 @@ func GetProgressReward(Id int, Rewards []int, Progress int) ([]*item.Item, []int return Items, Ids } +func GetProgressNum(Id int) int { + TemplateId := GetTemplateId(Id) + data, err := gamedata.GetData(CATNIP_GAME_CFG_NAME) + if err != nil { + return 0 + } + Num := 0 + for _, v := range data { + if gamedata.GetIntValue(v, "Template") == TemplateId { + Num++ + } + } + return Num +} + func GetItemCost(Id, Mul int) []*item.Item { data, err := gamedata.GetDataByIntKey(CATNIP_TEMPLATE_CFG_NAME, Id) if err != nil { diff --git a/src/server/game/mod/catnip/Catnip.go b/src/server/game/mod/catnip/Catnip.go index ab86953d..fd60cced 100644 --- a/src/server/game/mod/catnip/Catnip.go +++ b/src/server/game/mod/catnip/Catnip.go @@ -189,7 +189,11 @@ func (c *CatnipMod) Reward(Id int) ([]*item.Item, *CatnipGame, error) { return nil, nil, fmt.Errorf("game with Progress %d does not exist", Id) } Items, Ids := catnipCfg.GetProgressReward(c.Id, GameInfo.Reward, GameInfo.Progress) + ProgressNum := catnipCfg.GetProgressNum(c.Id) GameInfo.Reward = append(GameInfo.Reward, Ids...) + if len(GameInfo.Reward) == ProgressNum { + GameInfo.Status = GAME_STATUS_COMPLETED + } if Items == nil { return nil, nil, fmt.Errorf("no reward found for progress %d in game ID %d", GameInfo.Progress, Id) }