diff --git a/logic/controller/PET_FUSION.go b/logic/controller/PET_FUSION.go index f613b587b..2eb2422ef 100644 --- a/logic/controller/PET_FUSION.go +++ b/logic/controller/PET_FUSION.go @@ -7,6 +7,8 @@ import ( "blazing/logic/service/player" "blazing/modules/blazing/model" "blazing/modules/blazing/service" + + "github.com/shopspring/decimal" ) func (h Controller) PetFusion(data *pet.C2S_PetFusion, c *player.Player) (result *pet.PetFusionInfo, err errorcode.ErrorCode) { @@ -50,7 +52,10 @@ func (h Controller) PetFusion(data *pet.C2S_PetFusion, c *player.Player) (result } effect := int(service.NewPetFusionMaterialService().Data(data.Item1)) - r := model.GenPetInfo(resid, -1, int(natureId), effect, -1, 1) + dv1 := decimal.NewFromInt(2).Div(decimal.NewFromInt(3)).Mul(decimal.NewFromInt(int64(Mcatchpetinfo.Dv))) + dv2 := decimal.NewFromInt(1).Div(decimal.NewFromInt(3)).Mul(decimal.NewFromInt(int64(Auxpetinfo.Dv))) + dv := dv1.Add(dv2).Add(decimal.NewFromInt(1)).IntPart() + r := model.GenPetInfo(resid, int(dv), int(natureId), effect, -1, 1) c.Service.Pet.PetAdd(*r) c.Pet_del(Auxpetinfo.CatchTime) c.Pet_del(Mcatchpetinfo.CatchTime) diff --git a/modules/blazing/service/pet_fusion_service.go b/modules/blazing/service/pet_fusion_service.go index 3626c668a..bd3466782 100644 --- a/modules/blazing/service/pet_fusion_service.go +++ b/modules/blazing/service/pet_fusion_service.go @@ -46,14 +46,23 @@ func (s *PetFusionService) Data(p1, p2 uint32) uint32 { return uint32(v.ResultPetID) } } + //说明是失败,直接返回失败 + if len(pet) > 0 { + return 0 + } var pets []model.PetFusion - + m = cool.DBM(s.Model) m.Where("is_enable", 1).Where("is_default", 1).Scan(&pets) if len(pets) == 0 { return 0 } + res := pets[grand.Intn(len(pets)-1)] + rr := grand.Intn(100) + if rr < int(res.Probability) { + return uint32(res.ResultPetID) + } - return uint32(pets[grand.Intn(len(pets)-1)].ID) + return 0 }