个人工具

帮助:生物设计/计算实力

出自Meshal Lite

跳转到: 导航, 搜索
 
第1行: 第1行:
 +
[[category:内容设计]]
 
<div style="display:none;">
 
<div style="display:none;">
 
<!--基本参数定义-->
 
<!--基本参数定义-->
  
<!--属性起算-->
+
<!--属性起算阈值-->
 
{{#vardefine: attributeThreshold|
 
{{#vardefine: attributeThreshold|
 
3
 
3
 
}}
 
}}
  
<!--属性倍率-->
+
<!--属性分系数-->
 
{{#vardefine:attributeMultiplier|
 
{{#vardefine:attributeMultiplier|
 
3
 
3
 
}}
 
}}
  
<!--防护倍率-->
+
<!--防护分系数-->
 
{{#vardefine:protectionMultiplier|
 
{{#vardefine:protectionMultiplier|
 
2
 
2
 
}}
 
}}
  
<!--免疫倍率-->
+
<!--免疫分系数-->
 
{{#vardefine:immunityMultiplier|
 
{{#vardefine:immunityMultiplier|
 
30
 
30
 
}}
 
}}
  
<!--机动起算-->
+
<!--移速分系数-->
 +
{{#vardefine:legerityMultiplier|
 +
1
 +
}}
 +
 
 +
<!--知觉分类型系数-->
 +
{{#vardefine:intuitionMethodMultiplier|
 +
1
 +
}}
 +
 
 +
<!--知觉分距离系数-->
 +
{{#vardefine:intuitionMultiplier|
 +
0.02
 +
}}
 +
 
 +
<!--机动起算阈值-->
 
{{#vardefine:executionThreshold|
 
{{#vardefine:executionThreshold|
 
3
 
3
 
}}
 
}}
  
<!--机动倍率-->
+
<!--机动分系数-->
 
{{#vardefine:executionMultiplier|
 
{{#vardefine:executionMultiplier|
 
5
 
5
 
}}
 
}}
  
<!--防御倍率-->
+
<!--防御分倍率-->
 
{{#vardefine:defenseMultiplier|
 
{{#vardefine:defenseMultiplier|
 
1
 
1
 
}}
 
}}
  
<!--能力倍率-->
+
<!--能力分倍率-->
 
{{#vardefine:abilityMultiplier|
 
{{#vardefine:abilityMultiplier|
 
3
 
3
第43行: 第59行:
 
</div>
 
</div>
 
==计算[[生物]]的[[实力]]==
 
==计算[[生物]]的[[实力]]==
在设计一个生物时,你需要计算出这个生物的[[实力]]水平,用以将之归入恰当的挑战难度中。一个生物的实力水平由[[#属性分|属性分]]、[[#防护分|防护分]][[#机动分|机动分]]、[[#防御分|防御分]]、[[#能力分|能力分]]等构成(tbd:之后还将包括[[#感知分|感知分]]、[[#移速分|移速分]][[#物品分|物品分]])。
+
在设计一个生物时,你需要计算出这个生物的[[实力]]水平,用以将之归入恰当的挑战难度中。一个生物的实力水平由[[#属性分|属性分]]、[[#防护分|防护分]](和[[#免疫分|免疫分]])、[[#感知分|感知分]]、[[#移速分|移速分]]、[[#机动分|机动分]][[#防御分|防御分]]、[[#能力分|能力分]]等构成(tbd:之后还将包括[[#物品分|物品分]])。
 +
{{block|补充|
 +
*为生物计算实力时,装备中的物品已经生效,所以其影响应当直接计算在实力中。
 +
----
 
*你可以直接使用 [http://www.necroz.com/project/smithy/widgets/meshalUtil/u_creatureStr.php 生物实力在线计算器] 来快速计算出生物的实力。
 
*你可以直接使用 [http://www.necroz.com/project/smithy/widgets/meshalUtil/u_creatureStr.php 生物实力在线计算器] 来快速计算出生物的实力。
 +
|preset=info}}
 +
  
 
===算法===
 
===算法===
{{block|计算{{anchor|属性分}}|
+
{{block|计算{{anchor|属性分|$strength['attr']}}|
计算每项属性的累积潜能花费:从[[#属性起算|属性起算]](3)开始
+
分别计算每项属性的累积潜能花费并将结果相加。可使用等差数列求和的算法:∑属性<sub>n</sub><nowiki>=</nowiki>1+2+3+……+(n-1)-[[#属性起算阈值|属性起算阈值]]。将三项属性的结果相加,然后×[[#属性分系数|属性分系数]]得到实力。
 +
*对于低于属性起算阈值的属性,则反过来扣除实力(属性不可能低于1,如果低于1则视作1)。
 +
*可参考[[受训属性]]的提升规则,但在计算生物实力时,应当将所有基础属性都用于计算(包括天生、特征、受训的属性部分)
 +
----
 +
计算因子
 +
*{{anchor|属性起算阈值|$attrTH}}:{{#var:attributeThreshold}}
 +
*{{anchor|属性分系数|$attrM}}:{{#var:attributeMultiplier}}
 +
----
 +
经过优化的PHP算法如下:
 +
<source lang="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;
 +
</source>
 
}}
 
}}
  
{{block|基本参数|
+
{{block|计算{{anchor|防护分|$strength['prot']}}{{anchor|免疫分|$strength['immunity']}}|
*{{anchor|属性起算}}:{{#var:attributeThreshold}}
+
计算防护分时,需要注意分为两个步骤:分别计算防护分和免疫分。
*{{anchor|属性倍率}}:{{#var:attributeMultiplier}}
+
 
 +
先计算每项防护分,使用等差数列求和算法:∑防护<sub>n</sub><nowiki>=</nowiki>1+2+……+n。将三项防护分结果相加,然后×[[#防护分系数|防护分系数]]。
 +
*如果防护<0,可同样用等差数列求和:∑防护<sub>-n</sub><nowiki>=</nowiki>-1-2-……-n。
 +
*如果该生物[[免疫]]某种[[攻击类型]],那么对应的防护就无需计算(而是交由免疫分计算)。
 
----
 
----
*{{anchor|防护倍率}}:{{#var:protectionMultiplier}}
+
然后计算免疫分,如果该生物免疫1种攻击类型,那么视作1;免疫2种攻击类型视作2;免疫3种攻击类型视作3。接着用等差数列求和:∑免疫<sub>n</sub><nowiki>=</nowiki>0+1+……+n。然后将求和结果×[[#免疫分系数|免疫分系数]]。
*{{anchor|免疫倍率}}:{{#var:immunityMultiplier}}
+
 
----
 
----
*{{anchor|机动起算}}:{{#var:executionThreshold}}
+
计算因子
*{{anchor|机动倍率}}:{{#var:executionMultiplier}}
+
*{{anchor|防护分系数|$protM}}:{{#var:protectionMultiplier}}
 +
*{{anchor|免疫分系数|$immunityM}}:{{#var:immunityMultiplier}}
 
----
 
----
*{{anchor|防御倍率}}:{{#var:defenseMultiplier}}
+
经过优化的PHP算法如下:
 +
<source lang="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;
 +
</source>
 +
}}
 +
 
 +
{{block|计算{{anchor|移速分|$strength['legerity']}}|
 +
每个移动方式都使生物的实力得到更多提升,因为这会拓展生物的行动维度。计算时,分别将每种移速都做等差数列求和,然后将结果相加并×[[#移速分系数|移速分系数]]。
 +
*移速不可能低于0,如果低于0则视作0
 
----
 
----
*{{anchor|能力倍率}}:{{#var:abilityMultiplier}}
+
计算因子
|preset=info
+
*{{anchor|移速分系数|$legerityM}}:{{#var:legerityMultiplier}}
 +
----
 +
经过优化的PHP算法如下:
 +
<source lang="php">
 +
/*计算移速分*/
 +
$strength['legerity'] = 0;
 +
foreach ($move as $method => $speed) {
 +
$strength['legerity'] += array_sum(range(0, $speed)) * $legerityM;
 +
}
 +
</source>
 
}}
 
}}
 +
 +
{{block|计算{{anchor|知觉分|$strength['intuition']}}|
 +
计算时,统计生物的感知方式种类,然后将统计结果做等差数列求和,将结果×[[#知觉分类型系数|知觉分类型系数]]。在此结果上,再累加所有类型的感知距离平均值×[[#知觉分距离系数|知觉分距离系数]]。
 +
*知觉不可能低于0,如果低于0则视作0
 +
----
 +
计算因子
 +
*{{anchor|知觉分类型系数|$intuitionMethM}}:{{#var: intuitionMethodMultiplier}}
 +
*{{anchor|知觉分距离系数|$intuitionDistM}}:{{#var: intuitionMultiplier}}
 +
----
 +
经过优化的PHP算法如下:
 +
<source lang="php">
 +
/*计算知觉分*/
 +
$strength['intuition'] = array_sum(range(0, count($intuition))) * $intuitionMethM
 +
+ array_sum($intuition)/count($intuition) * $intuitionDistM;
 +
</source>
 +
}}
 +
 +
{{block|计算{{anchor|机动分|$strength['exec']}}|
 +
将机动做等差数列求和:∑机动<sub>n</sub><nowiki>=</nowiki>1+2+3+……+(n-1)-[[#机动起算阈值|机动起算阈值]]。然后将结果×[[#机动分系数|机动分系数]]。
 +
*对于低于机动起算阈值的,则反过来扣除实力(机动不可能低于0,如果低于0则视作0)。
 +
----
 +
计算因子
 +
*{{anchor|机动起算阈值|$execTH}}:{{#var:executionThreshold}}
 +
*{{anchor|机动分系数|$execM}}:{{#var:executionMultiplier}}
 +
----
 +
经过优化的PHP算法如下:
 +
<source lang="php">
 +
/*计算机动分*/
 +
$strength += (array_sum(range(0, $exec - 1)) - $execTH) * $execM;
 +
</source>
 +
}}
 +
 +
{{block|计算{{anchor|防御分|$strength['def']}}|
 +
将所有防御优劣势相加求和:∑防御<nowiki>=</nowiki>格挡优势+闪避优势+抵抗优势。然后将结果×[[#防御分系数|防御分系数]]。
 +
*劣势被视作负数的优势。
 +
----
 +
计算因子
 +
*{{anchor|防御分系数|$defM}}:{{#var:defenseMultiplier}}
 +
----
 +
经过优化的PHP算法如下:
 +
<source lang="php">
 +
/*计算防御分*/
 +
$strength += ($def['格挡'] + $def['闪避'] + $def['抵抗']) * $defM;
 +
</source>
 +
}}
 +
 +
{{block|计算{{anchor|能力分|$strength['ability']}}|
 +
将所有能力等级相加求和,然后将结果×[[#能力分系数|能力分系数]]。
 +
*计算能力等级时,包括天赋能力在内的能力等级也应当计算在内。
 +
*计算能力等级时,被动能力对属性、防护、移速、知觉、机动的数值影响应当直接计算在实力中,此类被动能力的能力等级无需计算。但如果该被动能力有其他非直接影响属性的效果,则应计入它的能力等级。
 +
*计算能力等级时,对战斗无影响的能力(常见学识能力)
 +
----
 +
计算因子
 +
*{{anchor|能力分系数|$abilityM}}:{{#var: abilityMultiplier}}
 +
----
 +
经过优化的PHP算法如下:
 +
<source lang="php">
 +
/*计算能力分*/
 +
$strength += $abilityLevels * $abilityM;
 +
</source>
 +
}}
 +
 +
{{tbd}}

在2019年11月3日 (日) 13:26的最新修订版本