Commit 4278ef1d117c0cf885a7bc2668c3778208c9357f
1 parent
25a6e948
战斗力
Showing
1 changed file
with
151 additions
and
0 deletions
Show diff stats
... | ... | @@ -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 | ... | ... |