Commit 4278ef1d117c0cf885a7bc2668c3778208c9357f

Authored by wanglinkai
1 parent 25a6e948

战斗力

Showing 1 changed file with 151 additions and 0 deletions   Show diff stats
战斗力统计.md 0 → 100644
... ... @@ -0,0 +1,151 @@
  1 +# 战斗力统计
  2 +### 战斗力分为总战斗力为英雄队伍战斗力与个体英雄战斗力的累加
  3 + 个体英雄战斗力(2020/11/23截至)根据英雄各个途径累加的攻击力,暴击,爆伤以及陪标的权值修正所得出
  4 + 英雄队伍战斗力(2020/11/23截至)根据各种途径的全局加成的攻击,暴击,爆伤与队伍英雄个数所得出
  5 +## Part1: 个体英雄计算
  6 +
  7 +(个体总攻击)×(1+暴击/100.0f × (1+爆伤/100.0f))× 权值修正
  8 +
  9 +以下是客户端C#代码块
  10 +
  11 + public int GetPower()
  12 + {
  13 + float asjustCrit = Crit;
  14 + if(Crit>=100)
  15 + asjustCrit = 100;
  16 + else if (Crit<=0)
  17 + asjustCrit = 0;
  18 + // float AtkSpeed = GetComponent<NumericComponent>().GetAsFloat(NumericType.AtkSpeed);
  19 + return (int)(GetHeroAllAtk() * (1 + asjustCrit/100.0f * (1 + CritHurt/100.0f))*Config.CeRevise);
  20 + }
  21 +### 数值来源
  22 +
  23 +个体英雄总数值来源为英雄本体+装备本体
  24 +
  25 +ps:因为我们不需要知道具体装备与装备上宝石具体位置,所以理论上全部收集起来一起计算
  26 +>1.英雄本体
  27 +>>1.1 英雄默认初始值
  28 +>
  29 +>>1.2 英雄等级成长值
  30 +>>>1.2.1英雄转生修正
  31 +> >
  32 +>>>1.2.2英雄位阶修正
  33 +>
  34 +>>1.3英雄位阶阶段奖励
  35 +>>>1.3.1拉取固定词条
  36 +>
  37 +>2.装备本体
  38 +>> 2.1装备数值
  39 +>>>2.1.1装备基础值
  40 +>>
  41 +>>>2.1.1装备等级成长值
  42 +>
  43 +>> 2.2宝石属性值
  44 +> >>2.2.1拉取固定词条
  45 +
  46 +### 具体计算
  47 +>**1.1英雄默认初始值** ***<继悦补充>***
  48 +>
  49 +>**1.2英雄等级成长值** ***<继悦补充>***
  50 +>
  51 +>- 将算好的英雄等级成长攻击值*位阶攻击修正系数
  52 +> 此位阶修正系数来源于表《Advance》 根据英雄的当前位阶找到攻击权值
  53 +> 例如:格迪目前已经被玩家强化到位阶是:资深位阶,**则要把之前算好的(英雄等级成长攻击值)×1.4**
  54 +>
  55 +>
  56 +>**1.3 英雄位阶阶段奖励**
  57 +>
  58 +>- 根据英雄的位阶的小阶段可以获取到属性加成词条,例如:格迪现在是资深位阶的第6个小阶段
  59 +>则读表《Advance》的Attr字段,字段值意义为:属性ID=数量,以空格为切割,该字段来源于(总字段词条表《AttributesEntry》)
  60 +> **所以,最终格迪在该阶段会获得【10(每个小属性所加的攻击)×6(小阶段)】:60点攻击**
  61 +> 同时,之前位阶小阶段奖励也都是会有的(与战斗力无关可忽略),相当于之前位阶的每个小阶段属性×10,如:见习位阶加防御,新晋位阶加生命
  62 +>
  63 +> *偷懒小技巧:因为目前战斗力公式需要攻击暴击爆伤,而位阶中只有资深位阶的小阶段才加攻击力*
  64 +>
  65 +>**2.1 装备数值** ***<继悦补充>***
  66 +>
  67 +>**2.2 宝石属性值**
  68 +>- 每个一件装备可能会镶嵌多个宝石,一个宝石可能有多个属性,具体一个宝石需要读宝石合成表《CrystalReinforcement》 的SpecialEffects字段,字段意义:
  69 +>属性ID=数量,以空格为切割,该字段来源于(总字段词条表《AttributesEntry》)
  70 +
  71 +
  72 +
  73 +
  74 +
  75 +
  76 +
  77 +
  78 +
  79 +
  80 +
  81 +## Part2: 英雄队伍计算
  82 +(总收益攻击)×(1+总收益暴击/100.0f × (1+总收益爆伤/100.0f))
  83 +
  84 +以下是客户端C#代码块
  85 +**还没写**
  86 +
  87 +### 数值来源
  88 +英雄队伍战斗力来源为编队阵型(信仰)+ 神秘力量 + 助战英雄buff
  89 +
  90 +ps:因为阵容所加成属性很多,但是我们只收集与攻击,暴击,爆伤有关的就行了
  91 +>1.编队阵型(信仰)
  92 +>>1.1拉取固定词条
  93 +>
  94 +>2.神秘力量
  95 +>> 2.1拉取固定词条
  96 +>
  97 +> 3.助战英雄加成
  98 +> >***<继悦补充>***
  99 +
  100 + ### 具体计算
  101 +>**1.1 编队阵型(信仰)**
  102 +>- 编队阵型需要统计编队里所有的英雄,即出战英雄与助战英雄,英雄信仰类型在英雄表
  103 +>《hero》的Faith字段,而获取词条的条件要读编队加成表《TeamBonus》。为此我们需要获取《TeamBonus》的FaithType字段
  104 +>与FaithNum字段来查看是否满足要求,满足要求后则取GetAttributesEntry字段来加属性,原理同上文 加宝石的属性
  105 +-
  106 +
  107 + //获得该编队具体的有哪几种编队加成(信仰)
  108 + public List<TeamBonus> RefreshFaith(List<int> hero)
  109 + {
  110 + List<TeamBonus> TeamFaith = new List<TeamBonus>();
  111 + Dictionary<int, int> threePower = new Dictionary<int, int>();
  112 +
  113 + for (int i = 0; i < ZGame.Scene.GetComponent<LubanComponent>().Tables.TbTeamBonus.DataList.Count; i++)
  114 + {
  115 + int num = ZGame.Scene.GetComponent<LubanComponent>().Tables.TbTeamBonus.DataList[i].FaithNum;
  116 +
  117 + for (int j = 0; j < hero.Count; j++)
  118 + {
  119 + //三相之力
  120 + if (ZGame.Scene.GetComponent<LubanComponent>().Tables.TbTeamBonus.DataList[i].FaithType == -1)
  121 + {
  122 + if (!threePower.ContainsKey(hero[j]))
  123 + {
  124 + threePower.Add(hero[j],0);
  125 + }
  126 +
  127 + if (threePower.Count == num)
  128 + {
  129 + TeamFaith.Add(ZGame.Scene.GetComponent<LubanComponent>().Tables.TbTeamBonus.DataList[i]);
  130 + break;
  131 + }
  132 + }
  133 +
  134 + if (hero[j] == ZGame.Scene.GetComponent<LubanComponent>().Tables.TbTeamBonus.DataList[i].FaithType)
  135 + num--;
  136 +
  137 + if (num <= 0)
  138 + {
  139 + TeamFaith.Add(ZGame.Scene.GetComponent<LubanComponent>().Tables.TbTeamBonus.DataList[i]);
  140 + break;
  141 + }
  142 +
  143 + }
  144 + }
  145 + return TeamFaith;
  146 + }
  147 +>**1.2 神秘力量**
  148 +>- 神秘力量BUFF分为buff和debuff,但是他们都能同时影响怪物和英雄,所有我们只需要遍历所有的BUFF,单个BUFF根据
  149 +>神秘力量表《MysticalPowerBUFF》的BaseAttrToPlayer字段(该字段值只表示对英雄的属修改),原理同上文 加宝石的属性
  150 +>
  151 +>**1.2 助战英雄加成**
0 152 \ No newline at end of file
... ...