package equipment import ( "fmt" "go_dreamfactory/comm" "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" cfg "go_dreamfactory/sys/configure/structs" "math/rand" ) //参数校验 func (this *apiComp) EnchCheck(session comm.IUserSession, req *pb.EquipmentEnchReq) (errdata *pb.ErrorData) { if req.Eid == "" { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), } } return } //附魔 func (this *apiComp) Ench(session comm.IUserSession, req *pb.EquipmentEnchReq) (errdata *pb.ErrorData) { var ( equip *pb.DB_Equipment conf *cfg.GameEquipEnchantingData hero *pb.DBHero equipments []*pb.DB_Equipment need []*cfg.Gameatn AttrValue int32 err error ) if errdata = this.EnchCheck(session, req); errdata != nil { return } if conf, err = this.module.configure.getEquipenchanting(req.Itemid); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ConfigNoFound, Title: pb.ErrorCode_ConfigNoFound.ToString(), Message: err.Error(), } return } need = make([]*cfg.Gameatn, 0) need = append(need, conf.Need...) need = append(need, &cfg.Gameatn{ A: comm.ItemType, T: req.Itemid, N: 1, }) if errdata = this.module.ConsumeRes(session, need, true); errdata != nil { return } if equip, err = this.module.modelEquipment.QueryUserEquipmentsById(session.GetUserId(), req.Eid); err != nil { this.module.Errorf("Equip reader uid:%s equipment:%s err:%v", session.GetUserId(), req.Eid, err) errdata = &pb.ErrorData{ Code: pb.ErrorCode_SystemError, Title: pb.ErrorCode_SystemError.ToString(), Message: err.Error(), } return } if equip.AdverbEntry[req.Index] == nil || equip.AdverbEntry[req.Index].AttrName != conf.Attrkey { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), Message: req.String(), } return } AttrValue = rand.Int31n(conf.AttrMax-conf.AttrMini) + conf.AttrMini // if AttrValue > equip.AdverbEntry[req.Index].Value { equip.AdverbEntry[req.Index].EnchValue = AttrValue // } if err = this.module.modelEquipment.ChangeList(session.GetUserId(), equip.Id, map[string]interface{}{ "adverbEntry": equip.AdverbEntry, "isInitialState": false, }); err != nil { log.Errorf("Upgrade err:%v", err) errdata = &pb.ErrorData{ Code: pb.ErrorCode_SystemError, Title: pb.ErrorCode_SystemError.ToString(), Message: err.Error(), } return } if equip.HeroId != "" { equipments = make([]*pb.DB_Equipment, 8) if hero, errdata = this.module.ModuleHero.GetHeroByObjID(session.GetUserId(), equip.HeroId); errdata != nil { return } for i, v := range hero.EquipID { if v != "" { if v != equip.Id { if equipments[i], err = this.module.modelEquipment.QueryUserEquipmentsById(session.GetUserId(), v); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_EquipmentOnFoundEquipment, Title: pb.ErrorCode_EquipmentOnFoundEquipment.ToString(), Message: fmt.Sprintf("装备唯一 id:%s", v), } return } } else { equipments[i] = equip } } } if errdata = this.module.ModuleHero.UpdateEquipment(session, hero, equipments); errdata != nil { return } } // this.module.ModuleRtask.SendToRtask(session, comm.Rtype94, 1) go this.module.ModuleBuried.TriggerBuried(session.GetUserId(), comm.GetBuriedParam(comm.Rtype94, 1)) session.SendMsg(string(this.module.GetType()), "ench", &pb.EquipmentEnchResp{Issucc: true, Equipment: equip}) return }