package hero import ( "go_dreamfactory/comm" "go_dreamfactory/pb" "google.golang.org/protobuf/proto" ) //参数校验 func (this *apiComp) ResonanceResetCheck(session comm.IUserSession, req *pb.HeroResonanceResetReq) (code pb.ErrorCode) { if req.HeroObjID == "" { code = pb.ErrorCode_ReqParameterError return } return } /// 英雄共鸣 func (this *apiComp) ResonanceReset(session comm.IUserSession, req *pb.HeroResonanceResetReq) (code pb.ErrorCode, data proto.Message) { var ( _hero *pb.DBHero ) code = this.ResonanceResetCheck(session, req) // check if code != pb.ErrorCode_Success { return } _hero, code = this.module.GetHeroByObjID(session.GetUserId(), req.HeroObjID) // 查询目标卡是否存在 if code != pb.ErrorCode_Success { code = pb.ErrorCode_HeroNoExist return } if _hero.ResonateNum <= 0 { // 没有共鸣 不允许重置 code = pb.ErrorCode_HeroNoResonate return } // 共鸣次数判断 //获取原始星级 conf := this.module.configure.GetHeroConfig(_hero.HeroID) if conf == nil { code = pb.ErrorCode_ConfigNoFound return } resonConfig := this.module.configure.GetHeroResonanceConfig(_hero.HeroID, conf.Star) if resonConfig == nil { code = pb.ErrorCode_ConfigNoFound return } if _hero.ResonateNum*resonConfig.Energy == _hero.DistributionResonate { code = pb.ErrorCode_HeroNotNeedResonate // 已经是重置状态 return } _costConfig, err1 := this.module.configure.GetHeroResonanceRestConfig() if err1 != nil { code = pb.ErrorCode_ConfigNoFound // 没找到配置消耗 return } // 消耗校验 code = this.module.ConsumeRes(session, _costConfig.Var, true) if code != pb.ErrorCode_Success { return } _hero.EnergyProperty = make(map[string]int32, 0) _hero.Energy = make(map[string]int32) _hero.DistributionResonate = _hero.ResonateNum * resonConfig.Energy _heroMap := map[string]interface{}{ "distributionResonate": _hero.DistributionResonate, "energy": _hero.Energy, "isOverlying": false, "energyProperty": _hero.EnergyProperty, } err1 = this.module.modelHero.ChangeList(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息 if err1 != nil { this.module.Errorf("update hero skill failed:%v", err1) code = pb.ErrorCode_DBError return } session.SendMsg(string(this.module.GetType()), ResonanceReset, &pb.HeroResonanceResetResp{Hero: _hero, Energy: _hero.ResonateNum}) return }