fix(fight_boss): 修复NPC战斗中宠物ID和闪光属性处理逻辑

- 在NPC战斗中,当refPet.Ext不为0时,正确设置refPet.Id
- 当refPet.Ext不为0且满足随机条件时,为怪物添加随机闪光属性
- 修正了宠物信息生成时的ID使用逻辑

fix(monster): 修正注释说明稀有精灵概率计算

- 更新注释说明,明确单个ID固定刷出时的概率变尼尔尼奥不是稀有精灵

refactor(player): 重构宠物闪光属性随机生成逻辑

- 简化OgrePetInfo.RandSHiny方法的条件判断逻辑
- 统一闪光属性随机生成的处理方式

fix(task): 修复任务奖励物品信息返回

- 修正任务奖励
This commit is contained in:
2026-01-01 00:30:09 +08:00
parent 3efbba3883
commit 9ae66a42d1
5 changed files with 12 additions and 7 deletions

View File

@@ -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

View File

@@ -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 {

View File

@@ -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)
}

View File

@@ -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
}

View File

@@ -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,