From e4e1b93a9a0113071515e8f892f8799b3bac37d1 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 10 Dec 2025 18:56:57 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E7=8C=AB=E8=8D=89=E5=A4=A7=E4=BD=9C?= =?UTF-8?q?=E6=88=98=E3=80=91-=E4=BF=AE=E6=94=B9=E9=A2=86=E5=A5=96?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/catnip/CatnipCfg.go | 15 +++++++++++++++ src/server/game/mod/catnip/Catnip.go | 4 ++++ 2 files changed, 19 insertions(+) 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) }