英雄属性测试优化

This commit is contained in:
meixiongfeng 2023-01-31 18:33:48 +08:00
parent 0ba8c286ed
commit 336f252f62
6 changed files with 63 additions and 19 deletions

View File

@ -24,7 +24,7 @@ import (
9bingo:season,10 赛季塔层数
10bingo:viking // 解锁维京所有难度
11bingo:hunting // 解锁狩猎所有难度
12bingo:mainline,11001 // 难度 id
12bingo:mainline,1100104 // mainstage 关卡ID
13bingo:moon,1 // 触发月之秘境
14bingo:arena,100 // 设置竞技场用户积分
15bingo:sociatyexp,100 // 设置工会经验
@ -38,7 +38,7 @@ import (
21bingo:allequip
21bingo:chat,1
22bingo:itemtype,1,1 // 获取某种类型所有道具(道具类型,数量)
18bingo:viplv,50
23bingo:viplv,50
*/
//参数校验
func (this *apiComp) CmdCheck(session comm.IUserSession, req *pb.GMCmdReq) (code pb.ErrorCode) {

View File

@ -90,16 +90,11 @@ func (this *apiComp) Awaken(session comm.IUserSession, req *pb.HeroAwakenReq) (c
}
_heroMap["normalSkill"] = _hero.NormalSkill
} else { // 加属性
value, err := strconv.Atoi(awakenData.Phasebonus[1])
if err == nil {
if value > 0 {
this.module.modelHero.setJuexingProperty(_hero, awakenData.Phasebonus[0], int32(value))
_heroMap["juexProperty"] = _hero.JuexProperty
}
}
this.module.modelHero.resetJuexingProperty(_hero)
}
_hero.JuexingLv += 1
_heroMap["juexingLv"] = _hero.JuexingLv
_heroMap["juexProperty"] = _hero.JuexProperty
// 保存数据
err := this.module.modelHero.ChangeList(session.GetUserId(), _hero.Id, _heroMap)
if err != nil {

View File

@ -159,8 +159,8 @@ func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, req *pb.HeroSt
code = pb.ErrorCode_DBError
return
}
/////
this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
//this.module.modelHero.ChangeHeroProperty(session, _hero) // 推送属性变化
ChangeList = append(ChangeList, _hero)
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: ChangeList})
session.SendMsg(string(this.module.GetType()), StrengthenUpSkill, &pb.HeroStrengthenUpSkillResp{Hero: _hero})

View File

@ -13,6 +13,7 @@ import (
"math"
"math/big"
"reflect"
"strconv"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
@ -252,6 +253,41 @@ func (this *ModelHero) getHeroList(uid string) []*pb.DBHero {
return heroes
}
// 重置觉醒属性
func (this *ModelHero) resetJuexingProperty(hero *pb.DBHero) {
hero.JuexProperty = make(map[string]int32)
for i := 1; i <= int(hero.JuexingLv); i++ {
awakenData := this.moduleHero.configure.GetHeroAwakenConfig(hero.HeroID, int32(i))
if awakenData != nil {
if len(awakenData.Phasebonus) != 2 {
continue
}
key := awakenData.Phasebonus[0]
value, err := strconv.Atoi(awakenData.Phasebonus[1])
if err != nil {
continue
}
switch key {
case comm.Hp:
hero.JuexProperty[comm.Hp] += int32(value)
case comm.Def:
hero.JuexProperty[comm.Def] += int32(value)
case comm.Atk:
hero.JuexProperty[comm.Atk] += int32(value)
case comm.Speed:
hero.JuexProperty[comm.Speed] += int32(value)
case comm.ResonanceHpPro:
hero.JuexProperty[comm.Hp] += int32(math.Floor((float64(value) / 1000) * float64(hero.Property[comm.Hp])))
case comm.ResonanceAtkPro:
hero.JuexProperty[comm.Atk] += int32(math.Floor((float64(value) / 1000) * float64(hero.Property[comm.Atk])))
case comm.ResonanceDefPro:
hero.JuexProperty[comm.Def] += int32(math.Floor((float64(value) / 1000) * float64(hero.Property[comm.Def])))
}
}
}
}
// 觉醒
func (this *ModelHero) setJuexingProperty(hero *pb.DBHero, key string, value int32) {
switch key {
@ -474,9 +510,9 @@ func (this *ModelHero) PropertyCompute(hero *pb.DBHero) {
if growCfg == nil || heroCfg == nil || lvCfg == nil || starCfg == nil || starLvfg == nil {
return
}
var atk = (this.StarAtkAddition(hero.Star) + lvCfg.Atk + float32(growCfg.Atk)) * (growCfg.Atkgrow / 1000.0) * 1.0
var def = (this.StarDefAddition(hero.Star) + lvCfg.Def + float32(growCfg.Def)) * (growCfg.Defgrow / 1000.0) * 1.0
var hp = (this.StarHpAddition(hero.Star) + lvCfg.Hp + float32(growCfg.Hp)) * (growCfg.Hpgrow / 1000.0) * 1.0
var atk = (this.StarAtkAddition(hero.Star) + lvCfg.Atk + float32(growCfg.Atk)) * (growCfg.Atkgrow / 1000.0)
var def = (this.StarDefAddition(hero.Star) + lvCfg.Def + float32(growCfg.Def)) * (growCfg.Defgrow / 1000.0)
var hp = (this.StarHpAddition(hero.Star) + lvCfg.Hp + float32(growCfg.Hp)) * (growCfg.Hpgrow / 1000.0)
speed := growCfg.Speed
hero.Property = map[string]int32{
comm.Hp: int32(math.Floor(float64(hp))),
@ -492,6 +528,7 @@ func (this *ModelHero) PropertyCompute(hero *pb.DBHero) {
if hero.Id != "" { // objID 为空表示是怪物对象 不享受天赋属性加成
this.resetTalentProperty(hero)
}
this.resetJuexingProperty(hero)
}
//重新计算英雄属性
@ -500,6 +537,7 @@ func (this *ModelHero) ChangeHeroProperty(session comm.IUserSession, hero *pb.DB
update := map[string]interface{}{
"property": hero.Property,
"talentProperty": hero.TalentProperty,
"juexProperty": hero.JuexProperty,
}
if err = this.ChangeList(session.GetUserId(), hero.Id, update); err != nil {

View File

@ -175,7 +175,18 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.MlineChall
})
}
}
// 加主角经验
// if stageConf.Exp > 0 {
// res := make([]*cfg.Gameatn, 0)
// res = append(res, &cfg.Gameatn{
// A: "attr",
// T: "exp",
// N: stageConf.Exp,
// })
// if code = this.module.DispenseRes(session, res, true); code != pb.ErrorCode_Success {
// this.module.Debugf("Mline Commonaward DispenseRes err:+%v", res)
// }
// }
// 加英雄经验
if stageConf.HeroExp > 0 {
if req.Report != nil && req.Report.Info != nil && len(req.Report.Info.Redflist) > 0 {

View File

@ -92,6 +92,10 @@ func (this *Mline) CheckPoint(uid string) bool {
// 参数 难度 + 章节id
func (this *Mline) ModifyMlineDataByNanduID(session comm.IUserSession, id int32) (code pb.ErrorCode) {
var del []string
connf := this.configure.GetMainStageConf(id)
if connf == nil {
return
}
list, err := this.modelMline.getMainlineList(session.GetUserId())
if err != nil {
code = pb.ErrorCode_DBError
@ -103,10 +107,6 @@ func (this *Mline) ModifyMlineDataByNanduID(session comm.IUserSession, id int32)
// 清除
this.modelMline.cleanChapterDataById(session.GetUserId(), del...)
connf := this.configure.GetMainStageConf(id)
if connf == nil {
return
}
_data := this.configure.GetAllChapterID()
for _, v := range _data {
if v <= connf.Chapterid {