package smithy import ( "crypto/rand" "go_dreamfactory/comm" "go_dreamfactory/pb" "math/big" "google.golang.org/protobuf/proto" ) //参数校验 func (this *apiComp) StoveSkillLvCheck(session comm.IUserSession, req *pb.SmithyStoveSkillLvReq) (code pb.ErrorCode) { return } func (this *apiComp) StoveSkillLv(session comm.IUserSession, req *pb.SmithyStoveSkillLvReq) (code pb.ErrorCode, dat proto.Message) { var bLevelUp bool code = this.StoveSkillLvCheck(session, req) if code != pb.ErrorCode_Success { return // 参数校验失败直接返回 } _smithy, err := this.module.modelSmithy.getSmithyList(session.GetUserId()) if err != nil { code = pb.ErrorCode_DBError return } curLvData := this.module.configure.GetSmithyStoveConfigData(_smithy.StoveLv) if curLvData == nil { code = pb.ErrorCode_GourmetSkillMaxLv return } nextLvData := this.module.configure.GetSmithyStoveConfigData(_smithy.StoveLv + 1) if nextLvData == nil { code = pb.ErrorCode_GourmetSkillMaxLv return } // 升级 code = this.module.ConsumeRes(session, curLvData.Starupneed, true) // 消耗检测 if code != pb.ErrorCode_Success { return } // 概率升级 n, _ := rand.Int(rand.Reader, big.NewInt(100)) if n.Int64() < int64(curLvData.Probability) { // 可以升级 bLevelUp = true } else { // 升级失败了 记录 _smithy.StoveFloor += 1 if curLvData.Floors >= _smithy.StoveFloor { // 触发保底 bLevelUp = true } } if bLevelUp { _smithy.StoveFloor = 0 // 清理保底数据 _smithy.StoveLv += 1 this.module.modelSmithy.CalculationStoveSkillLv(session.GetUserId(), _smithy, _smithy.StoveLv) } session.SendMsg(string(this.module.GetType()), SmithyStoveSkillLvResp, &pb.SmithyStoveSkillLvResp{Data: _smithy}) return }