战斗系统

# 伤害 (Damage)

## 伤害概念与分类

关于伤害的阶段，如：

* 初始伤害OD、最终伤害FD等 名词，
* 弹幕生成阶段、命中阶段等 攻击阶段流程

和伤害类型及有关的伤害计算方式，如：

* 各种职业伤害分类(召唤、投掷伤害等)，
* 三大伤害分类，如力量型伤害 (还有科技型魔法型)
* 及它们对应的加成计算公式 (如力量型受到STR力量属性的加成)
* 各种伤害性质(如锐器、爆炸、点火、精神等)

及类似内容内容，见此页面/伤害概念和分类

[OD-DD阶段]

暴击取决于暴击率，目标的闪避点和攻击方的瞄准点，只有在击穿的情况下，才会发生暴击

D
o
d
P
# t

(
4
D
E
X
−
S
I
Z
60
)

⏞

0
,
525

{\displaystyle DodPt = \overbrace{(4 DEX - SIZ + 60)}^{0,525}
}

最终闪避率

**解析失败 (SVG（MathML可通过浏览器插件启用）：从服务器“http://mathoid-facade/v1/”返回无效的响应（“Math extension cannot connect to Restbase.”）：): {\displaystyle \begin{align}& Dodge% = \frac{ \overbrace{2DEX - SIZ} ^{\in [240, -120]}} {50}% \\& \in [-2.4%, 4.8%] \end{align} }**

### 瞄准 (Aiming)

玩家的瞄准点取决于敏捷

武器有自身有暴击倍率WeaponCrit

玩家技能点有暴击倍率SkillCrit

玩家装备有暴击倍率EquipmentCrit (Multiple)

玩家装备有基础暴击加值EquipmentCrit (Addition)

C
r
i
t
C
h
a
n
c
# e
(
10
%
A
i
m
i
n
g
%
E
q
u
i
p
m
e
n

t

a
d
d

%
)
×
(
1
W
e
a
p
o
n
E
q
u
i
p
m
e
n

t

m
u
l
t

S
k
i
l
l
)

{\displaystyle CritChance = (10\% + Aiming\% + Equipment\_{add}\%) \times (1 + Weapon + Equipment\_{mult} + Skill)}

基础情况下，没有任何加值，基础暴击率是10%

加上瞄准点后，基础暴击率会在0%到50%左右变动

而装备，武器 和技能点等都是影响倍率，如+50%是说基础暴击率\*50%

### 暴击

暴击伤害\*2，护甲穿透\*2

钝器暴击伤害再额外\*1.5(2\*1.5=3)

## 护甲贯穿 (Shield Penetration)

穿透包含三种情况: 击穿，未击穿，过度击穿

钝器不存在贯穿

若

P
e
n
e
t
r
a
t
i
o
n
×

(
1
−
0.5

S
P

S
P
m
a
x

)

⏞

a
∈
[
1.0
,
0.5
]

>
1.8
D
e
f
P
×
#
R
a
n
d
(
0.7
,
1.3
)
−
a
l
l
o
w
a
n
c
e

{\displaystyle

Penetration\times
\overbrace{ (1-0.5\frac{SP}{SPmax})}^{\text{a}\in [1.0,0.5]}

>1.8DefP \times\#Rand(0.7,1.3) - allowance

}

则判定为过穿

假设DefP70，SP现在剩下40%，那么1-0.5(SP/SPmax)=0.8

1.8DefP=126，乘以(0.7~1.3)之间的一个随机数，所以范围为88.2~163.8，例子如下

* 若Penetration250，\*0.8=200，163.8<200，必然判定过穿
* 若Penetration100，\*0.8=80， 80.0<88.2，必然不会过穿
* 若Penetration180，\*0.8=144，88.2<144<163.8，有几率过穿

将[88.2, 163.8] / 0.8, = [110.25, 204.75]大于该范围的将必然过穿，小于将必然**不会**过穿

另外allowance是装备给予玩家的一个修正值，可以降低/提高过穿的几率

如果近战锐器而非穿甲炸弹，那么1.8将会替换为3.6

若

P
e
n
e
t
r
a
t
i
o
n
×

(
1
−
0.5

S
P

S
P
m
a
x

)

⏞

a
∈
[
0.5
,
1.0
]

<
0.6
D
e
f
P
×
#
R
a
n
d
(
0.7
,
1.3
)
a
l
l
o
w
a
n
c
e

{\displaystyle Penetration\times\overbrace{ (1-0.5\frac{SP}{SPmax})}^{\text{a }\in [0.5,1.0]}<0.6DefP \times\#Rand(0.7,1.3)+allowance
}

判定未击穿

假设DefP70，SP现在剩下40%，那么1-0.5(SP/SPmax)=0.8

0.6DefP=42，乘以(0.7~1.3)之间的一个随机数，所以范围为29.4~54.6，例子如下

* 若Penetration30，\*0.8=24，24<29.4，必然判定未击穿
* 若Penetration80，\*0.8=64，54.6<64，必然不会未击穿
* 若Penetration40，\*0.8=32，29.4<32<54.6，有几率未击穿

将[29.4, 54.6] / 0.8, = [36.75, 68.25]大于该范围的将必然击穿，小于将必然未击穿

再举个例子，让数据更直观

100DefP\*0.7，再\*#Rand(0.7, 1.3) ∈ [49, 91]

100DefP\*1.4，再\*#Rand(0.7, 1.3) ∈ [98, 182]

SP的那一坨系数∈[0.5, 1.0]，所以

* 在零SP的情况下[49, 91] / 1.00，最终阈值范围是49~91，（小于阈值未击穿）
* 在半SP的情况下[49, 91] / 0.75，最终阈值范围是65~121，
* 在满SP的情况下[49, 91] / 0.50，最终阈值范围是98~182，
* 在零SP的情况下[98, 182] / 1.00，最终阈值范围是98~182，（大于阈值过穿）
* 在半SP的情况下[98, 182] / 0.75，最终阈值范围是131~243，
* 在满SP的情况下[98, 182] / 0.50，最终阈值范围是196~364，

### 过度击穿

只有锐器和穿甲弹会过穿

* 贯穿型爆炸SD\*1.8, FD\*0.1, Crit\*0.1
* 切割型锐器SD\*1.5, FD\*1.2
* 突刺型锐器SD\*1.5, FD\*1.1
* 持续型点燃率\*0.5
* 瞬间型点燃率\*0.1

### 未击穿

未击穿的话，FD也会削减一半扣在SP上

SD\*1.8, FD\*0, Crit\*0.1

持续型点燃率\*0.5

瞬间型点燃率\*0.1

# D

{

ceil
(

(
O
D
−

(
D
P
−
P
e
n
e
t
r
a
t
i
o
n
)

⏟

b

)

⏞

a

)

×
(
1
−
D
R
)
)

if
a
>
1
,
b
⩽
0

ceil
(
(
O
D
−
0
)

×
(
1
−
D
R
)
)

if
a
>
1
,
b
<
0

1

if
a
⩽
1

D
R
∈
[
0.0
,
0.8
]

{\displaystyle \begin{align}&
DD = \begin{cases}
\text{ceil }(\overbrace{(OD - \underbrace{ (DP - Penetration)}\_{b} )}^{a})&\times (1 - DR))
& \qquad \text{if }a > 1 \text{, } b \leqslant 0\\

\text{ceil }((OD - 0)&\times (1 - DR))
& \qquad \text{if }a > 1 \text{, } b < 0\\

1 & & \qquad \text{if }a \leqslant 1
\end{cases}\\\\

&DR \in [0.0, 0.8]
\end{align}

}

### 防御点 (DP)

Defence Point, 简称DP

D
P
∈
N

and

D
P
∈
[
0
,
∞
)

{\displaystyle DP \in N \quad \text{and} \quad
DP \in [0, +\infty)}

在OD-DD阶段进行计算，较DR优先计算

OD会扣减防御点的值，扣减结束后最小为1

也就是说比如：OD 100, DP 45，不算伤害减免的话，DD = 100 - 45 = 55

### 伤害减免 (DR)

D
R
∈
[
0.0
,
0.8
]

{\displaystyle DR \in [0.0, 0.8]}

Damage Reduction, 简称DR

在OP-DD阶段进行计算

OD会乘以(1-DR)，向上取整，DR最高为80%

沿用上面的例子，DR 20%，由于DP优先计算

DD = (100 - 45) \* (1 - 20%) = 44

### 防御效率 (Def%) & 护盾效率(SEff)

**解析失败 (SVG（MathML可通过浏览器插件启用）：从服务器“http://mathoid-facade/v1/”返回无效的响应（“Math extension cannot connect to Restbase.”）：): {\displaystyle Def% \in [0.0,1.0]}**

Defense Percentage, 简称Def%

在DD-FD阶段纳入计算，决定了FD和SD的比例

最主要的决定因素是护盾效率Sheild Efficiency (Seff)

S

e
f
f

∈
[
0.0
,
1.0
]

{\displaystyle S\_{eff} \in [0.0,1.0]}

D
e
f
×

d
−
p
e
n
e
t
r
a
t
i
o
n

d

# d
0.5
D
e
f
P
(
1

S
P

S

P

m
a
x

)

{\displaystyle \begin{align}&
Def% = S\_{eff} + (1 + S\_{eff})
\times \frac {d - penetration}{d}

\\&
d = 0.5DefP(1 + \frac{SP}{SP\_{max}})
\end{align} }

### 护盾值 (SP)

S
P
∈
N

and

S
P
∈
[
0
,
∞
)

{\displaystyle SP \in N \quad \text{and} \quad SP \in [0,+\infty)

}

**解析失败 (SVG（MathML可通过浏览器插件启用）：从服务器“http://mathoid-facade/v1/”返回无效的响应（“Math extension cannot connect to Restbase.”）：): {\displaystyle \begin{align} &SD= &\begin{cases} DD \times def% \\ SP \end{cases} \begin{align}\qquad\text{if }DD \times def% < SP\\ \qquad\text{if }DD \times def% \geqslant SP\end{align} \\ \text{new}SP = SP - &SD = &\begin{cases} SP - DD \times def% \\ 0 \quad\because\text{( SD = SP)} \end{cases} \begin{align}\qquad\text{if }DD \times def% < SP\\ \qquad\text{if }DD \times def% \geqslant SP\end{align} \end{align} }**

Shield Point, 简称SP

在DD-FD阶段，DD会按照Def%分成两部分

其中Def%的部分会对SP造成伤害(就是SD)，其余部分对HP造成伤害(就是FD)

若SP太低，被扣减至0，多出的伤害会直接对HP造成伤害

护盾值会自动恢复，归0不会对玩家造成影响(除了变脆弱)

护盾值可以理解为一条额外的，会自动恢复的生命值

为了节省计算量，部分敌人没有护盾值这一属性

现在一个敌人对你造成DD50，
那么60%(30伤害) 会扣减到SP(66-30=36)，
其余20伤害 会扣减到HP(110-20=90)

那么60%(48伤害)会扣减到SP
但现在SP只有36点，所以SP会扣减到0，
剩下的80-36=44伤害直接扣减到HP(90-44=46)

现在一个敌人对你造成DD90，那么SP会扣减20%(18伤害)，
但剩下72伤害会扣减到HP上(30-72)，让你直接暴毙
所以即使有高SP，但HP和Def%低也没用

### 护盾恢复机制 (SP Regeneration)

Shield Point Regeneration, 简称SP reg，注意SPr是恢复速率的一个系数，SP reg指这整个恢复机制

SP会随着时间恢复

虽然部分敌人有SP，但为了节省计算量，可能没有SP reg，或者是SP reg的机制 较玩家的版本简单(比如只是隔一段时间恢复n)

下文是玩家的SP reg机制

每帧恢复m\*SPr

t

is calculate in frame

m

is a multiple

m

=

0

\*4

when being hitted

m

# +

{

1

when
t
∈
[
120
,
720

]
\*1

2

when
t
∈
(
720
,
1320

]
\*2

5

when
t
∈
(
1320
,
1560

]
\*3

per second

S
P

# +

m
×
S
P
r
×

(

S

P

m
a
x

1000

×
0.5
0.5
)

⏟

∗
5

per frame

{\displaystyle \begin{align}
 t & \quad \text{is calculate in frame}\\
 m & \quad \text{is a multiple}\\
 \\
 m & \quad = \quad 0 \quad ^\text{\*4}
 & \text{when being hitted }
 \\

m & \quad += \quad
\begin{cases}
1 & \quad \text{when }t \in [120, 720] ^\text{\*1}\\
2 & \quad \text{when }t \in (720, 1320] ^\text{\*2}\\
5 & \quad \text{when }t \in (1320, 1560] ^\text{\*3}
\end{cases}
& \quad \text{per second}\\

SP & \quad += \quad m \times SPr \times \underbrace{(\frac{SP\_{max}}{1000}\times 0.5 + 0.5)}\_{\*5}
& \text{per frame }
\\
\end{align}

}

* t是距离上次被击中的时间(以帧为单位)
* m是一个按照时间增长的系数
* 上面的SPr指综合各种装备的加成，得出来的一个护盾恢复速率

\*4: 被击中后m归零，2秒内由于n为0，所以不会恢复SP

\*1: 在2~12秒(120~720帧)内，每秒m+=1，在第12秒m=10

\*2: 在12~22秒(720~1320帧)内，每秒m+=2，在第22秒m=30

\*3: 在22~26秒(1320~1560帧)内，每秒m+=5，在第26秒m=50

\*5: SP上限增加，SP reg速率也会增加

#### 护盾恢复率(SPr)

Shield Point Regeneration Rate, 简称SPr

在被击中后不同的时间，SP的恢复速率是不同的，这个由系数m控制，玩家无法改变

而这个SPr则是由玩家的装备、物品影响，一个恢复的系数

假设基础SPr是0.1，那么就是恢复5 SP / f
如果穿了某个装备SPr+0.05，最后护盾恢复率就是原来的1.5倍，就是7.5 SP / f

### 玩家的HP

H
P
b
a
s
e

=
200
×

(
1

(

S
I
Z
C
O
N

⏞

∈
[
30
,
240
]

−
100
)

2

)

⏟

∈
[
0.65
,
1.70
]

∵
S
I
Z
,
C
O
N
∈
[
15
,
120
]

∴
H
P
b
a
s
e
∈
[
130
,
340
]

{\displaystyle \begin{align}
HPbase & = 200 \times
\underbrace{(1 + \frac{(\overbrace{SIZ+CON}^{\in[30,240]}-100)%}{2})}\_{\in[0.65,1.70]}\\
&\because SIZ,CON \in [15, 120]\\
&\therefore HPbase \in [130, 340]
\end{align}

}

最初始的HP由 体格决定(SIZ体型+CON体质)

由于初始玩家八项属性**在创建角色时**，加点范围为[15,80]

所以开局血量范围为[130,260]

玩家可以通过部分物品恢复生命值