Formula Info

来自PD2汉化wiki
跳转到导航 跳转到搜索

这是一个未列出的页面,它被嵌入在 Item Filtering 中。


正式定义

公式可以在战利品过滤器的任何地方使用 Formula[KEY]: FORMULA 来定义。对公式的引用必须采用 FORMULAKEY 的形式。Formula[_A]: STAT1!=STAT2 可以通过 FORMULA_A%FORMULA_A% 来引用。

公式键名只能使用 '_' 或 'A' 到 'Z'。 别名不能在定义中使用。

内联定义

内联公式定义是块内的公式 $f(STAT1!=STAT2)。'f' 必须小写,括号必须匹配。

物品输入

公式可以用作布尔值、值或添加条件的一部分。 别名可以在定义中使用。

条件 描述
ItemDisplay[$f(STAT1+STAT2)>25] 值比较
ItemDisplay[$f(STAT1+STAT2>20)] 布尔条件
ItemDisplay[$f(STAT1)+STAT2>15] 添加条件

公式的"真值"基于值不等于零。

公式 描述
1.5 真,因为 1.5 != 0
TRUE 真,因为 TRUE (1) != 0
FALSE 假,因为 FALSE (0) == 0
0 假,因为 0 == 0
.0000001 真,x != 0

物品输出

公式的结果是一个实数。它以 0-2 位小数呈现,具体取决于小数部分。如果发生数学错误或值太大无法呈现,则文本为 f_err。可呈现结果的最大绝对值是 2^31 (2147483648)。

公式 中间文本 呈现文本
1.49 1.49 1.49
1.495 1.50 1.5
1.494 1.49 1.49
1.5 1.50 1.5
TRUE 1.00 1
FALSE 0.00 0
0 0.00 0
.0000001 0.00 0

运算符

==, >, <, !=, >=, <=, +, -, *, /, ^, !

变量

所有变量都不区分大小写。每个变量都镜像了输入或输出中使用的代码。

带参数

参数是用 ',' 分隔的整数。

代码 示例 详情 参数
stat stat3 体力 vitality 1
multi MULTI83,2 死灵法师技能;必须有两个参数 2
charstat CHARSTAT15 仓库中的金币 1

无参数

代码
allattrib allsk alvl amazon ar
area armor arper assassin automod
axe bar barbarian baseblock basemaxkick
basemaxoneh basemaxsmite basemaxthrow basemaxtwoh baseminkick
baseminoneh baseminsmite baseminthrow basemintwoh belt
boots bow buyprice charm charstat
chest chsk circ cl class
clsk club clvl craft craftalvl
cres cube dagger def dex
diff din dru druid dtm
ed edam edef elt eq
equipped eth exc false fbr
fcr fhr filtlvl fools fres
frw gem gemlevel gemmed gemtype
gfind gloves gold ground hammer
height helm ias id ilvl
inf inventory jav jewelry life
lres lvlreq mace maek mag
mana mapid maptier maxdmg maxdur
maxres maxsockets merc mfind mindmg
misc multi nec necromancer nmag
norm onehand os paladin polearm
pres price qlvl qty quiver
rare repair replife repquant reqdex
reqlvl reqstr rerollalvl res rune
rw scepter sellprice set shield
shop sin sk sock sockets
sor sorceress spear staff stash
stat str sup sword tabsk
throwing tmace true twohand uni
updex uplvl upstr wand weapon
width wp xbow zon

函数

所有函数需要一个或多个参数(元数)。

名称 详情 元数 示例
if 如果为真则返回第二个参数,否则返回第三个 3 IF(STAT3>100,TRUE,FALSE)
and 如果所有值都为真则返回真,否则返回假 1+ AND(STAT3>100,STAT0>100)
or 如果任何值为真则返回真,否则返回假 1+ OR(STAT3>100,STAT0>100)
exp 欧拉数 (e) 的幂次方 1 exp(ln(STAT2))==STAT2
ln 以 e 为底的对数 1 ln(STAT2)
floor 将数字向下舍入到最接近的整数 1 floor(1.5)==1
ceil 将数字向上舍入到最接近的整数 1 ceil(1.49)==2
round 按标准规则舍入数字 1 round(1.49)==1; round(1.5)==2
min 最小值 1+ MIN(STAT2,50)<=50
max 最大值 1+ MAX(STAT2,50)>=50
mod A/B 的模数 2 MOD(-17,5)==-2
average n 个参数的平均值 1+ AVERAGE(8,8,8,8,8)==8
sqrt 非负数的平方根 1 SQRt(4)==2
pow 数字的幂次方 2 pow(2, 2)==4
count 真值的数量 1+ COUNT(1,0,1,TRUE)==3
countif 等于最后一个值的数量 2+ COUNTIF(1,0,1)==1
xor 如果奇数个参数为真则返回真 1+ XOR(1,0)==1
abs x 的绝对值 1 abs(-1)==1
sign x 的符号 1 sign(-1)==-1; sign(0)==0; sign(1)==1

次要细节

可能会或可能不会改变的小细节。

  • ANDOR短路求值的
  • 常量表达式如 POW(3,3)IF(TRUE,STAT1,STAT2) 只计算一次
  • 输入引用只需要首字母 (F) 大写,其余不区分大小写
  • 输出引用始终不区分大小写