炼器计算规则
阅读
2026-03-04更新
最新编辑:异脉相承
阅读:
更新日期:2026-03-04
最新编辑:异脉相承
前情提要
这篇文章会设计两个值的计算:
- 装备初始灵力
- 装备五维属性。
本篇文章的实用性并不强,仅仅是对炼器原理的讨论。相较于炼丹原理,掌握炼器原理在游戏中的加成非常低,游戏之作,博君一粲。
这篇文章的诞生要感谢Wiki上的炼器模拟器,我是通过逆向它的代码获得这些知识的。
基础概念
- 材料的初始灵力:每件材料都有固定的初始灵力,这个值仅和材料的品级有关,类似药材的药力。
- 装备的初始灵力:10件材料的初始灵力之和。如果五维属性不足2200,则按比例缩小,向下取整。
- 材料的五维属性:材料的五维属性是固定值,和材料品级无关。不同的材料类型有不一样的五维属性。
- 装备的五维属性:遍历材料,累加五维属性,并和500取最小值。然后将五种属性相加得到。
基础数值
| 材料品级 | 初始灵力 |
|---|---|
| 1 | 1 |
| 2 | 3 |
| 3 | 9 |
| 4 | 18 |
| 5 | 30 |
| 6 | 48 |
| 材料类型 | 韧性 | 亲和 | 操控 | 灵性 | 坚固 |
|---|---|---|---|---|---|
| 皮鳞 | 100 | 75 | 50 | 25 | 0 |
| 金属 | 75 | 50 | 25 | 0 | 100 |
| 石 | 50 | 25 | 0 | 100 | 75 |
| 灵物 | 25 | 0 | 100 | 75 | 50 |
| 牙骨 | 0 | 100 | 75 | 50 | 25 |
计算方法
以5金属,2皮鳞,2牙骨,1灵物为例。
计算韧性的公式为:5*75 + 2*100 + 2*0 + 1*25 + 0*50 = 600 ,但是游戏中的属性上限是500,多余的100算是浪费掉了。因此这个组合的装备韧性是500.
同理计算出亲和为500,操控为475,灵性为225,坚固为500.
将五维属性累加 500 + 500 + 475 + 225 + 500 = 2200.
因此,这件装备的五维属性是2200. 2200是不损失材料灵力的阈值。
如果装备的五维属性大于等于2200,则装备的初始灵力 = SUM(材料的初始灵力)
如果装备的五维属性小于2200,则装备的初始灵力 = FLOOR[ SUM(材料的初始灵力)* (五维属性/2200) ] , 其中FLOOR代表向下取整。
代码
说一千道一万,不如直接看代码。
wuWeiData = {
"pilin": {
"id": 1,
"renxing": 100,
"qinhe": 75,
"caokong": 50,
"lingxing": 25,
"jiangu": 0,
},
"jinshu": {
"id": 2,
"renxing": 75,
"qinhe": 50,
"caokong": 25,
"lingxing": 0,
"jiangu": 100,
},
"shi": {
"id": 3,
"renxing": 50,
"qinhe": 25,
"caokong": 0,
"lingxing": 100,
"jiangu": 75,
},
"lingwu": {
"id": 4,
"renxing": 25,
"qinhe": 0,
"caokong": 100,
"lingxing": 75,
"jiangu": 50,
},
"yagu": {
"id": 5,
"renxing": 0,
"qinhe": 100,
"caokong": 75,
"lingxing": 50,
"jiangu": 25,
},
}
def wuWei(jinshu_count, pilin_count, yagu_count, lingwu_count, shi_count):
"""
五维计算
jinshu_count: 金属数量
pilin_count: 皮鳞数量
yagu_count: 牙骨数量
lingwu_count: 灵物数量
shi_count: 石数量
"""
# 五维计算
wuWei = [0, 0, 0, 0, 0]
materials = {
"jinshu": jinshu_count,
"pilin": pilin_count,
"yagu": yagu_count,
"lingwu": lingwu_count,
"shi": shi_count,
}
renxing = 0
qinhe = 0
caokong = 0
lingxing = 0
jiangu = 0
for material, count in materials.items():
renxing += count * wuWeiData[material]["renxing"]
qinhe += count * wuWeiData[material]["qinhe"]
caokong += count * wuWeiData[material]["caokong"]
lingxing += count * wuWeiData[material]["lingxing"]
jiangu += count * wuWeiData[material]["jiangu"]
wuWei = [
min(renxing, 500),
min(qinhe, 500),
min(caokong, 500),
min(lingxing, 500),
min(jiangu, 500),
]
return sum(wuWei)
if __name__ == "__main__":
print(wuWei(5, 2, 2, 1, 0))


沪公网安备 31011002002714 号