本文所引用的所有内容建立于AS-1.12.2-1.10.27版本(commit b218b86b5049579b5eb3fba2e11740398020c937)。
配置文件(minecraft\config\astralsorcery.cfg)中璀璨棱镜的附魔参数
通过搜索关键字enchantment_amulet可以迅速定位至参数位置,该部分源码及补充中文注释如下
enchantment_amulet {
# Defines the chance to roll a 2nd-enchantment-manipulating roll on the amulet. Value defines a percent chance from 0% to 100%. Setting this to 0 also prevents a 3rd roll [range: 0.0 ~ 1.0, default: 0.8]
#璀璨棱镜获得第二个附魔的概率
S:chance2nd=0.8
# Defines the chance to roll a 3rd-enchantment-manipulation roll on the amulet. Value defines a percent chance from 0% to 100%. [range: 0.0 ~ 1.0, default: 0.25]
#璀璨棱镜获得第三个附魔的概率
S:chance3rd=0.25
# Defines the chance the roll will be +2 instead of +1 to existing enchantment/to enchantment/to all enchantments [range: 0.0 ~ 1.0, default: 0.15]
#璀璨棱镜获得的附魔等级为+2的概率
S:chanceLevel2=0.15
# Defines the chance the amulet-roll 'to all existing enchantments' will appear. [range: 0.0 ~ 1.0, default: 0.02]
#璀璨棱镜的附魔为所有已有附魔增加等级的概率
S:chanceToAll=0.02
# Defines the chance the amulet roll 'to <encahntment>' will appear. (Don't mistake this for 'to exsting <enchantment>'!) [range: 0.0 ~ 1.0, default: 0.35]
#璀璨棱镜的附魔为增加附魔的概率(区别与为现有附魔增加等级)
S:chanceToNonExisting=0.35
}
璀璨棱镜附魔数量及附魔类型分析
该部分主要依据类AmuletEnchantHelper。
首先,璀璨棱镜至多可以分3次获得3个附魔,这意味着这至多3个附魔并不是同时被计算出来的。
第一个附魔是必定获取的,第二个附魔只依赖于参数chance2nd设定的概率。第三个附魔比较特殊,它在判定时会调用函数getAdditionAll()统计前两个附魔中类型为所有已有附魔增加等级的附魔的数量,如果前两个附魔的类型均为为所有已有附魔增加等级(无论增加等级的具体数值),那么必然没有第三个附魔,否则根据参数chance3rd决定能否得到第三个附魔。
简而言之,在AS1.12.2中,璀璨棱镜至多只能出现所有已有附魔等级+4这一附魔,+6是不存在的。
在每一次获取附魔判定成功后,会调用函数getRollType()和getRollLevel()分别计算将要获取的附魔的类型和等级。
如果将要获取的是第一个或第二个附魔,会首先根据参数chanceToAll判定是否类型为所有已有附魔增加等级。如果判定失败,则根据参数chanceToNonExisting判定是否类型为增加附魔。如果判定再次失败,则为现有附魔增加等级。
如果将要获取的是第三个附魔,那么会先调用函数getAdditionAll()统计前两个附魔中类型为所有已有附魔增加等级的附魔的数量(无论增加等级的具体数值)。如果已经有一个类型为所有已有附魔增加等级的附魔,那么第三个附魔的类型必定不是为所有已有附魔增加等级。其他的判定顺序和概率均和之前相同。
而将要获取的附魔的等级,则根据参数chanceLevel2判定。
此时可以得出结论,获得一个所有已有附魔等级+4的璀璨棱镜的概率在默认数值下为 (0.02 * 0.15) * (0.8 * 0.02 * 0.15) = 0.0054。