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.GetHero(session.GetUserId(), req.HeroObjID) // 查询目标卡是否存在 if code != pb.ErrorCode_Success { code = pb.ErrorCode_HeroNoExist return } if _hero.ResonateNum <= 0 { // 没有共鸣 不允许重置 code = pb.ErrorCode_HeroNoResonate return } // 共鸣次数判断 resonConfig, errr := this.module.configure.GetHeroResonanceConfig(_hero.HeroID) if errr != 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.CheckConsumeRes(session.GetUserId(), _costConfig.Var, true) if code != pb.ErrorCode_Success { return } property := make(map[string]int32, 0) property[comm.HpPro] -= _hero.AddProperty[comm.HpPro] property[comm.AtkPro] -= _hero.AddProperty[comm.AtkPro] property[comm.DefPro] -= _hero.AddProperty[comm.DefPro] this.module.modelHero.mergeMainProperty(session.GetUserId(), _hero.Id, property) for k := range _hero.Energy { // 清除玩家选择的共鸣属性 delete(_hero.Energy, k) } _heroMap := map[string]interface{}{ "DistributionResonate": _hero.ResonateNum * resonConfig.Energy, "Energy": _hero.Energy, "isOverlying": false, } err1 = this.module.modelHero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息 if err1 != nil { this.module.Errorf("update hero skill failed:%v", err1) code = pb.ErrorCode_DBError return } err1 = this.module.modelHero.PushHeroProperty(session, _hero.Id) // 推送属性变化 if err1 != nil { this.module.Errorf("PushHeroProperty err!") } session.SendMsg(string(this.module.GetType()), ResonanceReset, &pb.HeroResonanceResetResp{Hero: _hero, Energy: _hero.ResonateNum}) return }