diff --git a/common/data/xmlres/file.go b/common/data/xmlres/file.go index 96dd9dbe3..b41082f87 100644 --- a/common/data/xmlres/file.go +++ b/common/data/xmlres/file.go @@ -118,7 +118,7 @@ func Initfile() { } PlayerEffectMAP = make(map[int]NewSeIdx) for _, v := range EffectMAP1.SeIdxList { - if gconv.Int(v.Stat) == 1 && gconv.Int(v.StarLevel) == 0 && gconv.Int(v.Idx) > 1000 { + if gconv.Int(v.Stat) == 1 && gconv.Int(v.Idx) > 1000 { v.ArgsS = ParseSideEffectArgs(v.Args) PlayerEffectMAP[gconv.Int(v.Idx)] = v diff --git a/logic/controller/pet_fusion.go b/logic/controller/pet_fusion.go index 0d7ba1550..ee5f9f269 100644 --- a/logic/controller/pet_fusion.go +++ b/logic/controller/pet_fusion.go @@ -72,7 +72,7 @@ func (h Controller) PetFusion(data *pet.C2S_PetFusion, c *player.Player) (result shinycont = 100 } if grand.Meet(shinycont, 100) { - r.RandShiny() + r.FixShiny() } c.Service.Pet.PetAdd(r) diff --git a/logic/service/player/player.go b/logic/service/player/player.go index f55c55e5d..753cd74ef 100644 --- a/logic/service/player/player.go +++ b/logic/service/player/player.go @@ -69,7 +69,7 @@ func (o *OgrePetInfo) RandSHiny() { // // 矩阵含义:R=100%、G=100%、B=100%、A=100%,无颜色偏移 // } - co := config.NewShinyService().Args(o.Id) + co := config.NewShinyService().RandShiny(o.Id) if co != nil { o.ShinyInfo = append(o.ShinyInfo, *co) } diff --git a/modules/blazing/controller/admin/monster_get.go b/modules/blazing/controller/admin/monster_get.go index 4885115fa..d2a80b3d4 100644 --- a/modules/blazing/controller/admin/monster_get.go +++ b/modules/blazing/controller/admin/monster_get.go @@ -42,6 +42,7 @@ func (c *PetBagController) GetSession(ctx context.Context, req *PetGetReq) (res ) t := model.GenPetInfo( req.PetTypeId, req.IndividualValue, req.NatureId, req.AbilityTypeEnum, req.Level, nil) + t.FixShiny() service.NewUserService(uint32(admin.UserId)).Pet.PetAdd(t) return diff --git a/modules/blazing/model/pet.go b/modules/blazing/model/pet.go index c3fe1480b..711b149e1 100644 --- a/modules/blazing/model/pet.go +++ b/modules/blazing/model/pet.go @@ -215,7 +215,17 @@ func (pet *PetInfo) Cure() { } func (pet *PetInfo) RandShiny() { - co := service.NewShinyService().Args(pet.ID) + co := service.NewShinyService().RandShiny(pet.ID) + if co != nil { + pet.ShinyInfo = append(pet.ShinyInfo, *co) + } + //o.ShinyInfo[0].ColorMatrixFilter = GenerateRandomOffspringMatrix().Get() + //g.Dump(ttt.ShinyInfo) + // ttt.Shiny = 0 //待确认是否刷新异色 +} +func (pet *PetInfo) FixShiny() { + + co := service.NewShinyService().FixShiny(pet.ID) if co != nil { pet.ShinyInfo = append(pet.ShinyInfo, *co) } diff --git a/modules/config/service/shiny.go b/modules/config/service/shiny.go index 54c3cf531..85aef9562 100644 --- a/modules/config/service/shiny.go +++ b/modules/config/service/shiny.go @@ -2,6 +2,7 @@ package service import ( "blazing/common/data" + "blazing/common/utils" "blazing/cool" "blazing/modules/config/model" "context" @@ -40,7 +41,7 @@ func (s *ShinyService) ModifyBefore(ctx context.Context, method string, param g. } return nil } -func (s *ShinyService) Args(id uint32) *data.GlowFilter { +func (s *ShinyService) RandShiny(id uint32) *data.GlowFilter { var ret []model.ColorfulSkin // 执行 Raw SQL 并扫描返回值 @@ -70,3 +71,35 @@ func (s *ShinyService) Args(id uint32) *data.GlowFilter { return nil } +func (s *ShinyService) FixShiny(id uint32) *data.GlowFilter { + var ret []model.ColorfulSkin + + // 执行 Raw SQL 并扫描返回值 + cool.DBM(s.Model).Wheref(`bind_elf_ids @> ?::jsonb`, id).Wheref(`jsonb_typeof(bind_elf_ids) = ?`, "array").Cache(gdb.CacheOption{ + // Duration: time.Hour, + + Force: false, + }).Scan(&ret) + + rets := utils.ToMap(ret, func(t model.ColorfulSkin) uint32 { + return uint32(t.ID) + }) + + for _, v := range rets { + //print(v.ID) + + id := v.ID + + var t data.GlowFilter + + r := json.Unmarshal([]byte(v.Color), &t) + if r == nil { + m := cool.DBM(s.Model).Where("id", id) + m.Increment("refresh_count", 1) + return &t + } + + } + + return nil +}