diff --git a/战斗力统计.md b/战斗力统计.md new file mode 100644 index 0000000..d2c6009 --- /dev/null +++ b/战斗力统计.md @@ -0,0 +1,151 @@ +# 战斗力统计 +### 战斗力分为总战斗力为英雄队伍战斗力与个体英雄战斗力的累加 + 个体英雄战斗力(2020/11/23截至)根据英雄各个途径累加的攻击力,暴击,爆伤以及陪标的权值修正所得出 + 英雄队伍战斗力(2020/11/23截至)根据各种途径的全局加成的攻击,暴击,爆伤与队伍英雄个数所得出 +## Part1: 个体英雄计算 + +(个体总攻击)×(1+暴击/100.0f × (1+爆伤/100.0f))× 权值修正 + +以下是客户端C#代码块 + + public int GetPower() + { + float asjustCrit = Crit; + if(Crit>=100) + asjustCrit = 100; + else if (Crit<=0) + asjustCrit = 0; + // float AtkSpeed = GetComponent().GetAsFloat(NumericType.AtkSpeed); + return (int)(GetHeroAllAtk() * (1 + asjustCrit/100.0f * (1 + CritHurt/100.0f))*Config.CeRevise); + } +### 数值来源 + +个体英雄总数值来源为英雄本体+装备本体 + +ps:因为我们不需要知道具体装备与装备上宝石具体位置,所以理论上全部收集起来一起计算 +>1.英雄本体 +>>1.1 英雄默认初始值 +> +>>1.2 英雄等级成长值 +>>>1.2.1英雄转生修正 +> > +>>>1.2.2英雄位阶修正 +> +>>1.3英雄位阶阶段奖励 +>>>1.3.1拉取固定词条 +> +>2.装备本体 +>> 2.1装备数值 +>>>2.1.1装备基础值 +>> +>>>2.1.1装备等级成长值 +> +>> 2.2宝石属性值 +> >>2.2.1拉取固定词条 + +### 具体计算 +>**1.1英雄默认初始值** ***<继悦补充>*** +> +>**1.2英雄等级成长值** ***<继悦补充>*** +> +>- 将算好的英雄等级成长攻击值*位阶攻击修正系数 +> 此位阶修正系数来源于表《Advance》 根据英雄的当前位阶找到攻击权值 +> 例如:格迪目前已经被玩家强化到位阶是:资深位阶,**则要把之前算好的(英雄等级成长攻击值)×1.4** +> +> +>**1.3 英雄位阶阶段奖励** +> +>- 根据英雄的位阶的小阶段可以获取到属性加成词条,例如:格迪现在是资深位阶的第6个小阶段 +>则读表《Advance》的Attr字段,字段值意义为:属性ID=数量,以空格为切割,该字段来源于(总字段词条表《AttributesEntry》) +> **所以,最终格迪在该阶段会获得【10(每个小属性所加的攻击)×6(小阶段)】:60点攻击** +> 同时,之前位阶小阶段奖励也都是会有的(与战斗力无关可忽略),相当于之前位阶的每个小阶段属性×10,如:见习位阶加防御,新晋位阶加生命 +> +> *偷懒小技巧:因为目前战斗力公式需要攻击暴击爆伤,而位阶中只有资深位阶的小阶段才加攻击力* +> +>**2.1 装备数值** ***<继悦补充>*** +> +>**2.2 宝石属性值** +>- 每个一件装备可能会镶嵌多个宝石,一个宝石可能有多个属性,具体一个宝石需要读宝石合成表《CrystalReinforcement》 的SpecialEffects字段,字段意义: +>属性ID=数量,以空格为切割,该字段来源于(总字段词条表《AttributesEntry》) + + + + + + + + + + + +## Part2: 英雄队伍计算 +(总收益攻击)×(1+总收益暴击/100.0f × (1+总收益爆伤/100.0f)) + +以下是客户端C#代码块 +**还没写** + +### 数值来源 +英雄队伍战斗力来源为编队阵型(信仰)+ 神秘力量 + 助战英雄buff + +ps:因为阵容所加成属性很多,但是我们只收集与攻击,暴击,爆伤有关的就行了 +>1.编队阵型(信仰) +>>1.1拉取固定词条 +> +>2.神秘力量 +>> 2.1拉取固定词条 +> +> 3.助战英雄加成 +> >***<继悦补充>*** + + ### 具体计算 +>**1.1 编队阵型(信仰)** +>- 编队阵型需要统计编队里所有的英雄,即出战英雄与助战英雄,英雄信仰类型在英雄表 +>《hero》的Faith字段,而获取词条的条件要读编队加成表《TeamBonus》。为此我们需要获取《TeamBonus》的FaithType字段 +>与FaithNum字段来查看是否满足要求,满足要求后则取GetAttributesEntry字段来加属性,原理同上文 加宝石的属性 +- + + //获得该编队具体的有哪几种编队加成(信仰) + public List RefreshFaith(List hero) + { + List TeamFaith = new List(); + Dictionary threePower = new Dictionary(); + + for (int i = 0; i < ZGame.Scene.GetComponent().Tables.TbTeamBonus.DataList.Count; i++) + { + int num = ZGame.Scene.GetComponent().Tables.TbTeamBonus.DataList[i].FaithNum; + + for (int j = 0; j < hero.Count; j++) + { + //三相之力 + if (ZGame.Scene.GetComponent().Tables.TbTeamBonus.DataList[i].FaithType == -1) + { + if (!threePower.ContainsKey(hero[j])) + { + threePower.Add(hero[j],0); + } + + if (threePower.Count == num) + { + TeamFaith.Add(ZGame.Scene.GetComponent().Tables.TbTeamBonus.DataList[i]); + break; + } + } + + if (hero[j] == ZGame.Scene.GetComponent().Tables.TbTeamBonus.DataList[i].FaithType) + num--; + + if (num <= 0) + { + TeamFaith.Add(ZGame.Scene.GetComponent().Tables.TbTeamBonus.DataList[i]); + break; + } + + } + } + return TeamFaith; + } +>**1.2 神秘力量** +>- 神秘力量BUFF分为buff和debuff,但是他们都能同时影响怪物和英雄,所有我们只需要遍历所有的BUFF,单个BUFF根据 +>神秘力量表《MysticalPowerBUFF》的BaseAttrToPlayer字段(该字段值只表示对英雄的属修改),原理同上文 加宝石的属性 +> +>**1.2 助战英雄加成** \ No newline at end of file -- libgit2 0.21.2