From 9ae66a42d14aa95614c08c655ca6f61a89b6e925 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <1@72wo.cn> Date: Thu, 1 Jan 2026 00:30:09 +0800 Subject: [PATCH] =?UTF-8?q?```=20fix(fight=5Fboss):=20=E4=BF=AE=E5=A4=8DNP?= =?UTF-8?q?C=E6=88=98=E6=96=97=E4=B8=AD=E5=AE=A0=E7=89=A9ID=E5=92=8C?= =?UTF-8?q?=E9=97=AA=E5=85=89=E5=B1=9E=E6=80=A7=E5=A4=84=E7=90=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在NPC战斗中,当refPet.Ext不为0时,正确设置refPet.Id - 当refPet.Ext不为0且满足随机条件时,为怪物添加随机闪光属性 - 修正了宠物信息生成时的ID使用逻辑 fix(monster): 修正注释说明稀有精灵概率计算 - 更新注释说明,明确单个ID固定刷出时的概率变尼尔尼奥不是稀有精灵 refactor(player): 重构宠物闪光属性随机生成逻辑 - 简化OgrePetInfo.RandSHiny方法的条件判断逻辑 - 统一闪光属性随机生成的处理方式 fix(task): 修复任务奖励物品信息返回 - 修正任务奖励 --- logic/controller/fight_boss.go | 6 ++++++ logic/service/player/Monster.go | 2 +- logic/service/player/player.go | 5 ++--- logic/service/task/task.go | 4 ++-- modules/config/service/pet.go | 2 +- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/logic/controller/fight_boss.go b/logic/controller/fight_boss.go index 0f0348155..5aa2f4c30 100644 --- a/logic/controller/fight_boss.go +++ b/logic/controller/fight_boss.go @@ -191,6 +191,7 @@ func (h Controller) OnPlayerFightNpcMonster(data1 *fight.FightNpcMonsterInboundI } if refPet.Ext != 0 { refPet.Id = refPet.Ext + } monster := model.GenPetInfo( int(refPet.Id), -1, @@ -199,6 +200,11 @@ func (h Controller) OnPlayerFightNpcMonster(data1 *fight.FightNpcMonsterInboundI int(refPet.Lv), refPet.ShinyInfo) + if refPet.Ext != 0 { + if grand.Meet(3, 100) { + monster.RandShiny() + } + } monsterInfo := &model.PlayerInfo{} monsterInfo.Nick = xmlres.PetMAP[int(monster.ID)].DefName diff --git a/logic/service/player/Monster.go b/logic/service/player/Monster.go index 97f8db10f..4fd6cdcea 100644 --- a/logic/service/player/Monster.go +++ b/logic/service/player/Monster.go @@ -70,7 +70,7 @@ func (p *Player) genMonster() { p.OgreInfo.Data[i].Lv = gconv.Uint32(RandomStringFromSlice(lv)) - if len(id) == 1 { //说明这里只固定刷一个,概率变尼尔尼奥 + if len(id) == 1 { //说明这里只固定刷一个,概率变尼尔尼奥,不是稀有精灵 nieo, _, _ := p.Roll(20, 1000) if nieo { diff --git a/logic/service/player/player.go b/logic/service/player/player.go index 7225443da..282e5857e 100644 --- a/logic/service/player/player.go +++ b/logic/service/player/player.go @@ -47,9 +47,8 @@ type OgrePetInfo struct { func (o *OgrePetInfo) RandSHiny() { var co *data.GlowFilter - if o.Ext != 0 { - co = config.NewShinyService().RandShiny(o.Ext) - } else { + if o.Ext == 0 { + co = config.NewShinyService().RandShiny(o.Id) } diff --git a/logic/service/task/task.go b/logic/service/task/task.go index 55610c13a..33d885ba2 100644 --- a/logic/service/task/task.go +++ b/logic/service/task/task.go @@ -28,9 +28,9 @@ func GetTaskInfo(id, ot uint32) *TaskResult { for _, itemID := range r.ItemRewardIds { iteminfo := service.NewItemService().GetItemCount(itemID) - ret.ItemList = append(ret.ItemList, data.ItemInfo{ItemId: itemID, ItemCnt: iteminfo.ItemCnt}) + ret.ItemList = append(ret.ItemList, data.ItemInfo{ItemId: iteminfo.ItemId, ItemCnt: iteminfo.ItemCnt}) } - return nil + return ret } diff --git a/modules/config/service/pet.go b/modules/config/service/pet.go index a3ae57fe8..f0beaf9ab 100644 --- a/modules/config/service/pet.go +++ b/modules/config/service/pet.go @@ -30,7 +30,7 @@ func (s *PetRewardService) Get(id uint32) *model.PetReward { return nil } var item *model.PetReward - cool.DBM(s.Model).Where("id", 1). + cool.DBM(s.Model).Where("id", id). Cache(gdb.CacheOption{ // Duration: time.Hour,