帮助:生物设计/计算实力
出自Meshal Lite
< 帮助:生物设计(修订版本间的差异)
第1行: | 第1行: | ||
− | [[category: | + | [[category:内容设计]] |
<div style="display:none;"> | <div style="display:none;"> | ||
<!--基本参数定义--> | <!--基本参数定义--> |
在2019年11月3日 (日) 13:26的最新修订版本
计算生物的实力
在设计一个生物时,你需要计算出这个生物的实力水平,用以将之归入恰当的挑战难度中。一个生物的实力水平由属性分、防护分(和免疫分)、感知分、移速分、机动分、防御分、能力分等构成(tbd:之后还将包括物品分)。
补充
算法
计算
属性分
$strength['attr']
分别计算每项属性的累积潜能花费并将结果相加。可使用等差数列求和的算法:∑属性n=1+2+3+……+(n-1)-属性起算阈值。将三项属性的结果相加,然后×属性分系数得到实力。
- 对于低于属性起算阈值的属性,则反过来扣除实力(属性不可能低于1,如果低于1则视作1)。
- 可参考受训属性的提升规则,但在计算生物实力时,应当将所有基础属性都用于计算(包括天生、特征、受训的属性部分)
计算因子
- 属性起算阈值:3$attrTH
- 属性分系数:3$attrM
经过优化的PHP算法如下:
/*计算属性分*/
$strength += (array_sum(range(0, $attr['强壮'] - 1)) - $attrTH) * $attrM
+ (array_sum(range(0, $attr['敏捷'] - 1)) - $attrTH) * $attrM
+ (array_sum(range(0, $attr['精神'] - 1)) - $attrTH) * $attrM;
$strength += (array_sum(range(0, $attr['强壮'] - 1)) - $attrTH) * $attrM
+ (array_sum(range(0, $attr['敏捷'] - 1)) - $attrTH) * $attrM
+ (array_sum(range(0, $attr['精神'] - 1)) - $attrTH) * $attrM;
计算
防护分
和$strength['prot']
免疫分
$strength['immunity']
计算防护分时,需要注意分为两个步骤:分别计算防护分和免疫分。
先计算每项防护分,使用等差数列求和算法:∑防护n=1+2+……+n。将三项防护分结果相加,然后×防护分系数。
然后计算免疫分,如果该生物免疫1种攻击类型,那么视作1;免疫2种攻击类型视作2;免疫3种攻击类型视作3。接着用等差数列求和:∑免疫n=0+1+……+n。然后将求和结果×免疫分系数。
计算因子
- 防护分系数:2$protM
- 免疫分系数:30$immunityM
经过优化的PHP算法如下:
/*计算防护和免疫分*/
$strength += ($immunity['物理'] == 0 ? array_sum(range(0, $prot['物理'])) * $protM : 0)
+ ($immunity['侵蚀'] == 0 ? array_sum(range(0, $prot['侵蚀'])) * $protM : 0)
+ ($immunity['灵异'] == 0 ? array_sum(range(0, $prot['灵异'])) * $protM : 0)
+ array_sum(range(0, $immunity['物理'] + $immunity['侵蚀'] + $immunity['灵异'])) * $immunityM;
$strength += ($immunity['物理'] == 0 ? array_sum(range(0, $prot['物理'])) * $protM : 0)
+ ($immunity['侵蚀'] == 0 ? array_sum(range(0, $prot['侵蚀'])) * $protM : 0)
+ ($immunity['灵异'] == 0 ? array_sum(range(0, $prot['灵异'])) * $protM : 0)
+ array_sum(range(0, $immunity['物理'] + $immunity['侵蚀'] + $immunity['灵异'])) * $immunityM;
计算
移速分
$strength['legerity']
每个移动方式都使生物的实力得到更多提升,因为这会拓展生物的行动维度。计算时,分别将每种移速都做等差数列求和,然后将结果相加并×移速分系数。
- 移速不可能低于0,如果低于0则视作0
计算因子
- 移速分系数:1$legerityM
经过优化的PHP算法如下:
/*计算移速分*/
$strength['legerity'] = 0;
foreach ($move as $method => $speed) {
$strength['legerity'] += array_sum(range(0, $speed)) * $legerityM;
}
$strength['legerity'] = 0;
foreach ($move as $method => $speed) {
$strength['legerity'] += array_sum(range(0, $speed)) * $legerityM;
}
计算
知觉分
$strength['intuition']
计算时,统计生物的感知方式种类,然后将统计结果做等差数列求和,将结果×知觉分类型系数。在此结果上,再累加所有类型的感知距离平均值×知觉分距离系数。
- 知觉不可能低于0,如果低于0则视作0
计算因子
- 知觉分类型系数:1$intuitionMethM
- 知觉分距离系数:0.02$intuitionDistM
经过优化的PHP算法如下:
/*计算知觉分*/
$strength['intuition'] = array_sum(range(0, count($intuition))) * $intuitionMethM
+ array_sum($intuition)/count($intuition) * $intuitionDistM;
$strength['intuition'] = array_sum(range(0, count($intuition))) * $intuitionMethM
+ array_sum($intuition)/count($intuition) * $intuitionDistM;
计算
机动分
$strength['exec']
计算
防御分
$strength['def']
将所有防御优劣势相加求和:∑防御=格挡优势+闪避优势+抵抗优势。然后将结果×防御分系数。
- 劣势被视作负数的优势。
计算因子
- 防御分系数:1$defM
经过优化的PHP算法如下:
/*计算防御分*/
$strength += ($def['格挡'] + $def['闪避'] + $def['抵抗']) * $defM;
$strength += ($def['格挡'] + $def['闪避'] + $def['抵抗']) * $defM;
计算
能力分
$strength['ability']
将所有能力等级相加求和,然后将结果×能力分系数。
- 计算能力等级时,包括天赋能力在内的能力等级也应当计算在内。
- 计算能力等级时,被动能力对属性、防护、移速、知觉、机动的数值影响应当直接计算在实力中,此类被动能力的能力等级无需计算。但如果该被动能力有其他非直接影响属性的效果,则应计入它的能力等级。
- 计算能力等级时,对战斗无影响的能力(常见学识能力)
计算因子
- 能力分系数:3$abilityM
经过优化的PHP算法如下:
/*计算能力分*/
$strength += $abilityLevels * $abilityM;
$strength += $abilityLevels * $abilityM;
此处还有待编撰