diff --git a/modules/hero/api_resonanceReset.go b/modules/hero/api_resonanceReset.go index 9e52a30ce..735f173d2 100644 --- a/modules/hero/api_resonanceReset.go +++ b/modules/hero/api_resonanceReset.go @@ -81,11 +81,9 @@ func (this *apiComp) ResonanceReset(session comm.IUserSession, req *pb.HeroReson code = pb.ErrorCode_DBError return } - err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化 - if err1 != nil { - this.module.Errorf("ChangeHeroProperty err!") - } - session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: []*pb.DBHero{_hero}}) + // 计算属性 + 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 } diff --git a/modules/hero/api_resonanceSelect.go b/modules/hero/api_resonanceSelect.go index 3825fc6b0..0bf468ec5 100644 --- a/modules/hero/api_resonanceSelect.go +++ b/modules/hero/api_resonanceSelect.go @@ -3,7 +3,6 @@ package hero import ( "go_dreamfactory/comm" "go_dreamfactory/pb" - "math" "google.golang.org/protobuf/proto" ) @@ -50,27 +49,7 @@ func (this *apiComp) ResonanceUseEnergy(session comm.IUserSession, req *pb.HeroR return } // 计算属性 - resonConfig, errr := this.module.configure.GetHeroResonanceConfig(_hero.HeroID) - if errr != nil { - code = pb.ErrorCode_ConfigNoFound - return - } - // 修改玩家属性 - property := make(map[string]int32, 0) - switch req.UseType { - case 1: - property[comm.Hp] = int32(math.Floor((1.0 + float64(resonConfig.Hppro*req.UseEnergy)/1000) * float64(_hero.Property[comm.Hp]))) - case 2: - property[comm.Atk] = int32(math.Floor((1.0 + float64(resonConfig.Atkpro*req.UseEnergy)/1000) * float64(_hero.Property[comm.Atk]))) - case 3: - property[comm.Def] = int32(math.Floor((1.0 + float64(resonConfig.Defpro*req.UseEnergy)/1000) * float64(_hero.Property[comm.Def]))) - } - this.module.modelHero.mergeMainProperty(session.GetUserId(), _hero, property) - - err1 = this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化 - if err1 != nil { - this.module.Errorf("ChangeHeroProperty err!") - } + this.module.modelHero.setEnergyProperty(_hero) session.SendMsg(string(this.module.GetType()), ResonanceUseEnergy, &pb.HeroResonanceUseEnergyResp{Hero: _hero}) return } diff --git a/modules/hero/model_hero.go b/modules/hero/model_hero.go index 22101aebc..fcb5fbb4c 100644 --- a/modules/hero/model_hero.go +++ b/modules/hero/model_hero.go @@ -266,6 +266,25 @@ func (this *ModelHero) getHeroList(uid string) []*pb.DBHero { return heroes } +// 设置共鸣能量点数属性 +func (this *ModelHero) setEnergyProperty(hero *pb.DBHero) { + resonConfig, err := this.moduleHero.configure.GetHeroResonanceConfig(hero.HeroID) + if err != nil { + return + } + EnergyProperty := make(map[string]int32) //副属性 + for k, v := range hero.Energy { + if k == 1 { + EnergyProperty[comm.Hp] += int32(math.Floor((1.0 + float64(resonConfig.Hppro*v)/1000) * float64(hero.Property[comm.Hp]))) + } else if k == 2 { + EnergyProperty[comm.Atk] += int32(math.Floor((1.0 + float64(resonConfig.Atkpro*v)/1000) * float64(hero.Property[comm.Atk]))) + } else if k == 3 { + EnergyProperty[comm.Def] += int32(math.Floor((1.0 + float64(resonConfig.Defpro*v)/1000) * float64(hero.Property[comm.Def]))) + } + } + this.mergeEnegryProperty(hero.Uid, hero, EnergyProperty) +} + // 设置装备属性 func (this *ModelHero) setEquipProperty(hero *pb.DBHero, equip []*pb.DB_Equipment) { @@ -357,6 +376,17 @@ func (this *ModelHero) mergeAddProperty(uid string, hero *pb.DBHero, data map[st } } +// 合并附加能量属性 +func (this *ModelHero) mergeEnegryProperty(uid string, hero *pb.DBHero, data map[string]int32) { + //hero.EnergyProperty = data + + if err := this.ChangeList(uid, hero.Id, map[string]interface{}{ + "enegryProperty": data, + }); err != nil { + this.moduleHero.Errorf("mergeAddProperty err %v", err) + } +} + //属性计算 - 暂时放在modelHero里实现 //英雄基础属性 + 英雄等级基础属性 * 英雄成长系数 + 英雄星级对应等级属性 * 英雄品质系数 func (this *ModelHero) PropertyCompute(uid string, hero *pb.DBHero) { @@ -390,10 +420,26 @@ func (this *ModelHero) PropertyCompute(uid string, hero *pb.DBHero) { if lvGrow == nil { return } + resonConfig, err := this.moduleHero.configure.GetHeroResonanceConfig(hero.HeroID) + if err != nil { + return + } + + // 计算玩家共鸣属性 + property := make(map[string]int32, 0) + for keyType, value := range hero.Energy { + if keyType == 1 { + property[comm.Hp] += int32(math.Floor((1.0 + float64(resonConfig.Hppro*value)/1000) * float64(hero.Property[comm.Hp]))) + } else if keyType == 2 { + property[comm.Atk] += int32(math.Floor((1.0 + float64(resonConfig.Atkpro*value)/1000) * float64(hero.Property[comm.Atk]))) + } else if keyType == 3 { + property[comm.Def] += int32(math.Floor((1.0 + float64(resonConfig.Defpro*value)/1000) * float64(hero.Property[comm.Def]))) + } + } curHp := hero.Property[comm.Hp] exprHp := fmt.Sprintf("%v + %v * %v/1000 + %v * %v/1000", - (curHp + lvGrow.Hp), heroLvCfg.Hp, lvGrow.Hpgrow, heroStarCfg.Hp, stargrowCfg.StarupHp) + (curHp + lvGrow.Hp), heroLvCfg.Hp, lvGrow.Hpgrow, heroStarCfg.Hp, stargrowCfg) hp, _ := mengine.ParseAndExec(exprHp) curAtk := hero.Property[comm.Atk] diff --git a/pb/userrecord.pb.go b/pb/userrecord.pb.go index b82da2b37..286d69329 100644 --- a/pb/userrecord.pb.go +++ b/pb/userrecord.pb.go @@ -2,7 +2,7 @@ // versions: // protoc-gen-go v1.28.0 // protoc v3.20.0 -// source: userrecord.proto +// source: hero/userrecord.proto package pb @@ -32,7 +32,7 @@ type Floor struct { func (x *Floor) Reset() { *x = Floor{} if protoimpl.UnsafeEnabled { - mi := &file_userrecord_proto_msgTypes[0] + mi := &file_hero_userrecord_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -45,7 +45,7 @@ func (x *Floor) String() string { func (*Floor) ProtoMessage() {} func (x *Floor) ProtoReflect() protoreflect.Message { - mi := &file_userrecord_proto_msgTypes[0] + mi := &file_hero_userrecord_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58,7 +58,7 @@ func (x *Floor) ProtoReflect() protoreflect.Message { // Deprecated: Use Floor.ProtoReflect.Descriptor instead. func (*Floor) Descriptor() ([]byte, []int) { - return file_userrecord_proto_rawDescGZIP(), []int{0} + return file_hero_userrecord_proto_rawDescGZIP(), []int{0} } func (x *Floor) GetH4() int32 { @@ -96,7 +96,7 @@ type DBUserRecord struct { func (x *DBUserRecord) Reset() { *x = DBUserRecord{} if protoimpl.UnsafeEnabled { - mi := &file_userrecord_proto_msgTypes[1] + mi := &file_hero_userrecord_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -109,7 +109,7 @@ func (x *DBUserRecord) String() string { func (*DBUserRecord) ProtoMessage() {} func (x *DBUserRecord) ProtoReflect() protoreflect.Message { - mi := &file_userrecord_proto_msgTypes[1] + mi := &file_hero_userrecord_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -122,7 +122,7 @@ func (x *DBUserRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use DBUserRecord.ProtoReflect.Descriptor instead. func (*DBUserRecord) Descriptor() ([]byte, []int) { - return file_userrecord_proto_rawDescGZIP(), []int{1} + return file_hero_userrecord_proto_rawDescGZIP(), []int{1} } func (x *DBUserRecord) GetId() string { @@ -195,52 +195,52 @@ func (x *DBUserRecord) GetMtime() int64 { return 0 } -var File_userrecord_proto protoreflect.FileDescriptor +var File_hero_userrecord_proto protoreflect.FileDescriptor -var file_userrecord_proto_rawDesc = []byte{ - 0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0x27, 0x0a, 0x05, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x68, - 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x68, 0x34, 0x12, 0x0e, 0x0a, 0x02, 0x68, - 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x68, 0x35, 0x22, 0x9c, 0x02, 0x0a, 0x0c, - 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, - 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1c, - 0x0a, 0x05, 0x72, 0x61, 0x63, 0x65, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, - 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x05, 0x72, 0x61, 0x63, 0x65, 0x30, 0x12, 0x1c, 0x0a, 0x05, - 0x72, 0x61, 0x63, 0x65, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x46, 0x6c, - 0x6f, 0x6f, 0x72, 0x52, 0x05, 0x72, 0x61, 0x63, 0x65, 0x31, 0x12, 0x1c, 0x0a, 0x05, 0x72, 0x61, - 0x63, 0x65, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x46, 0x6c, 0x6f, 0x6f, - 0x72, 0x52, 0x05, 0x72, 0x61, 0x63, 0x65, 0x32, 0x12, 0x1c, 0x0a, 0x05, 0x72, 0x61, 0x63, 0x65, - 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, - 0x05, 0x72, 0x61, 0x63, 0x65, 0x33, 0x12, 0x1c, 0x0a, 0x05, 0x72, 0x61, 0x63, 0x65, 0x34, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x05, 0x72, - 0x61, 0x63, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x6e, - 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x6e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, - 0x74, 0x79, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x6d, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, - 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +var file_hero_userrecord_proto_rawDesc = []byte{ + 0x0a, 0x15, 0x68, 0x65, 0x72, 0x6f, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x72, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x27, 0x0a, 0x05, 0x46, 0x6c, 0x6f, 0x6f, 0x72, + 0x12, 0x0e, 0x0a, 0x02, 0x68, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x68, 0x34, + 0x12, 0x0e, 0x0a, 0x02, 0x68, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x68, 0x35, + 0x22, 0x9c, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x05, 0x72, 0x61, 0x63, 0x65, 0x30, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x05, 0x72, 0x61, 0x63, 0x65, + 0x30, 0x12, 0x1c, 0x0a, 0x05, 0x72, 0x61, 0x63, 0x65, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x06, 0x2e, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x05, 0x72, 0x61, 0x63, 0x65, 0x31, 0x12, + 0x1c, 0x0a, 0x05, 0x72, 0x61, 0x63, 0x65, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, + 0x2e, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x05, 0x72, 0x61, 0x63, 0x65, 0x32, 0x12, 0x1c, 0x0a, + 0x05, 0x72, 0x61, 0x63, 0x65, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x46, + 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x05, 0x72, 0x61, 0x63, 0x65, 0x33, 0x12, 0x1c, 0x0a, 0x05, 0x72, + 0x61, 0x63, 0x65, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x46, 0x6c, 0x6f, + 0x6f, 0x72, 0x52, 0x05, 0x72, 0x61, 0x63, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x6e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x6e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6d, 0x74, 0x69, 0x6d, 0x65, 0x42, + 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_userrecord_proto_rawDescOnce sync.Once - file_userrecord_proto_rawDescData = file_userrecord_proto_rawDesc + file_hero_userrecord_proto_rawDescOnce sync.Once + file_hero_userrecord_proto_rawDescData = file_hero_userrecord_proto_rawDesc ) -func file_userrecord_proto_rawDescGZIP() []byte { - file_userrecord_proto_rawDescOnce.Do(func() { - file_userrecord_proto_rawDescData = protoimpl.X.CompressGZIP(file_userrecord_proto_rawDescData) +func file_hero_userrecord_proto_rawDescGZIP() []byte { + file_hero_userrecord_proto_rawDescOnce.Do(func() { + file_hero_userrecord_proto_rawDescData = protoimpl.X.CompressGZIP(file_hero_userrecord_proto_rawDescData) }) - return file_userrecord_proto_rawDescData + return file_hero_userrecord_proto_rawDescData } -var file_userrecord_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_userrecord_proto_goTypes = []interface{}{ +var file_hero_userrecord_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_hero_userrecord_proto_goTypes = []interface{}{ (*Floor)(nil), // 0: Floor (*DBUserRecord)(nil), // 1: DBUserRecord } -var file_userrecord_proto_depIdxs = []int32{ +var file_hero_userrecord_proto_depIdxs = []int32{ 0, // 0: DBUserRecord.race0:type_name -> Floor 0, // 1: DBUserRecord.race1:type_name -> Floor 0, // 2: DBUserRecord.race2:type_name -> Floor @@ -253,13 +253,13 @@ var file_userrecord_proto_depIdxs = []int32{ 0, // [0:5] is the sub-list for field type_name } -func init() { file_userrecord_proto_init() } -func file_userrecord_proto_init() { - if File_userrecord_proto != nil { +func init() { file_hero_userrecord_proto_init() } +func file_hero_userrecord_proto_init() { + if File_hero_userrecord_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_userrecord_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_hero_userrecord_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Floor); i { case 0: return &v.state @@ -271,7 +271,7 @@ func file_userrecord_proto_init() { return nil } } - file_userrecord_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_hero_userrecord_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DBUserRecord); i { case 0: return &v.state @@ -288,18 +288,18 @@ func file_userrecord_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_userrecord_proto_rawDesc, + RawDescriptor: file_hero_userrecord_proto_rawDesc, NumEnums: 0, NumMessages: 2, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_userrecord_proto_goTypes, - DependencyIndexes: file_userrecord_proto_depIdxs, - MessageInfos: file_userrecord_proto_msgTypes, + GoTypes: file_hero_userrecord_proto_goTypes, + DependencyIndexes: file_hero_userrecord_proto_depIdxs, + MessageInfos: file_hero_userrecord_proto_msgTypes, }.Build() - File_userrecord_proto = out.File - file_userrecord_proto_rawDesc = nil - file_userrecord_proto_goTypes = nil - file_userrecord_proto_depIdxs = nil + File_hero_userrecord_proto = out.File + file_hero_userrecord_proto_rawDesc = nil + file_hero_userrecord_proto_goTypes = nil + file_hero_userrecord_proto_depIdxs = nil }