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 } // 共鸣次数判断 resonConfig := this.module.configure.GetHeroResonanceConfig(_hero.HeroID, _hero.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 } 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, property) for k := range _hero.Energy { // 清除玩家选择的共鸣属性 delete(_hero.Energy, k) } _hero.DistributionResonate = _hero.ResonateNum * resonConfig.Energy _heroMap := map[string]interface{}{ "distributionResonate": _hero.DistributionResonate, "energy": _hero.Energy, "isOverlying": false, } 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 } // 计算属性 this.module.modelHero.setEnergyProperty(_hero) //session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}}) session.SendMsg(string(this.module.GetType()), ResonanceReset, &pb.HeroResonanceResetResp{Hero: _hero, Energy: _hero.ResonateNum}) return }