附魔详解 Made
附魔基础
当把一件可附魔的物品放上附魔台时,可用的附魔等级将会依据以下公式随机生成。
附魔等级由附近书架的数量(最多15个)及附魔等级在附魔列表中所在的行数决定。
以下是可用附魔等级的计算步骤:
可用附魔等级基数(base) = (1..8 + (b/2) + 0..b)
其中b 是附近书架的数量(≤15),“x..y”表示在[x,y]闭区间内产生一个随机数。产生基数后,游戏会根据附魔等级所在的行数,进行第二步计算:
第一行等级 = max (base / 3, 1)
第二行等级 = (base × 2) / 3 + 1
第三行等级 = max (base, b × 2)
每一行等级计算时会使用新的附魔等级基数,即一次计算过程会生成3次base
在正式版 1.3 前,可用附魔等级基数计算公式为 base = (1..5 + (b/2) + 0..b) ,并乘以“行列因数”(第一行为1⁄3,第二行为2⁄3,第三行为1)得到。最小的附魔等级与附魔台周围有效书架数目的一半相同。
在正式版 1.1 前,上式的“(b/2)”项曾是“0..(b/2)”,这使得附魔等级随机性变大,刷出高等级附魔选项会耗费大量时间。同时,可用附魔等级的最低级固定在1,不会受书架数目的影响。在创造模式中,附魔不需要经验等级。如果需要限制最大附魔等级,一种简单的方法就是往附魔台与书架之间的空间中插火把禁用部分书架。把火把拿下可以重新恢复最大的附魔等级。
另外要注意的是,要检查附魔区域的环境,并保证书架与附魔台之间的绝对空隙。例如在覆雪生物群系中,雪可以把所有书架都无效化。因此,除非你希望得到较小的附魔等级,否则在附魔前要进行仔细的检查和清理(或在有屋顶的房子里进行附魔)。接着,Minecraft会在0.85和1.15之间挑选一个值,并再次经过正态分布处理。修改后的附魔等级会乘以这个值(因此它可以增加或减少最多15%),然后四舍五入至整数,得到最终的等级调节值。
伪代码
// 返回一个区间为[0,n-1]的随机整数
function randomInt(n);
// 返回一个区间为[0,1)的一个随机实数
function randomFloat();
// 返回实数n四舍五入至的最近整数
function round(n);
// 按三角分布生成一个1至1+(附魔能力/2)之间的随机数
int rand_enchantability = 1 + randomInt(enchantability / 4 + 1) + randomInt(enchantability / 4 + 1);
// 选择附魔能级
int k = chosen_enchantment_level + rand_enchantability;
// 0.85至1.15之间的附魔奖励
float rand_bonus_percent = (randomFloat() + randomFloat() - 1) * 0.15 + 1;
// 最终计算得到等级
int final_level = round(k * rand_bonus_percent);
if ( final_level < 1 ) final_level = 1
来源:Minecraft 1.8源代码以等级调节值为基础,游戏会先列出所有可应用于目标物品的附魔类型及其威力(候选表),以便之后的挑选。
魔咒等级表中列出了每一种魔咒类型的可用等级及其威力。对于每一级威力的每种魔咒,都有与其规定的等级调节值范围。当等级调节值符合某级威力某个魔咒的等级调节值范围时,这个魔咒进入候选表;如果等级调节值同时包含于同一个魔咒不同级别威力的等级调节值范围内时,较高等级的魔咒进入候选表。例如,剑的“锋利 I”和“锋利 II”魔咒的等级调节值范围分别为 1 - 21 和 12 - 32 ,则当等级调节值为10时,“锋利 I”进入候选列表;当等级调节值为15时,“锋利 II”则会进入候选列表。Enchantview Mod 可以查看将要附魔的物品能附上什么魔咒。
第三步:从候选表中选择魔咒
现在它有了该物品的附魔候选表,游戏会从它们之中选择一些会最后应用到的附魔。
最终附上的魔咒至少会有一个,第一个魔咒会从“权重”名单中被挑选出来——权重越高的魔咒,选中的机会越高。第一个魔咒被选中后,根据以下算法来判断是否得到更多魔咒:
将等级调节值除以2,并四舍五入。(这不影响魔咒候选表,因为候选表在第二步已经确定。)
以 P=(修改后的等级调节值+1)/50 的几率决定是否选择额外的魔咒。
选择额外的魔咒后,删除表中任何与先前选择附魔相冲的魔咒。
从剩下的魔咒候选表中挑选一个魔咒(像之前一样,以权重为基准)并将其加入到该物品。
重复第一步。
互相冲突的魔咒
一些魔咒会与其他魔咒互相冲突,因此不能附到同一物品上,以减低玩家拥有过强(或功能不合理)的武器/盔甲/工具的可能性。
魔咒相冲的规则是:
每个魔咒与本身相冲。(所以你不能得到含有两个相同魔咒的工具)
除了摔落保护之外,其他保护类附魔相互冲突,一个物品只能有一种。
所有伤害类魔咒(锋利、亡灵杀手和节肢杀手)相互冲突。
“精准采集”和“时运”互相冲突。
“深海探索者”和“冰霜行者”互相冲突。
“经验修补”和“无限”互相冲突。
“引雷”和“激流”互相冲突。
“忠诚”和“激流”互相冲突。
“多重射击”和“穿透”互相冲突。
利用特别定制的/give命令[仅Java版],可以在同一件物品上获得冲突的魔咒。这种物品的行为并不可靠,但是总体上遵循以下规则:
含有多个同种魔咒的物品,只有列表中第一个魔咒生效。
含有冲突保护类魔咒的盔甲,每个魔咒独立生效。
含有冲突伤害类魔咒的武器,每个魔咒独立生效。
同时拥有“精准采集”和“时运”魔咒的工具:对于两个魔咒皆适用的方块,精准采集优先生效;对于精准采集不适用的方块(如作物),时运生效。
同时拥有“经验修补”和“无限”的弓,每个魔咒独立生效。
同时拥有“忠诚”和“激流”的三叉戟,激流正常生效。玩家将不能投掷该三叉戟,但是发射器仍能正常投掷。
同时拥有“多重射击”和“穿透”的弩,每个魔咒独立生效。决定在候选表的四个魔咒中具体附魔哪一个,就需要计算各魔咒权重,查表知效率为10,精准采集为1,耐久为5,时运为2 则各个附魔(与威力无关)的概率为,效率10/(10+1+5+2)=5/9,精准采集1/18,耐久5/18,时运1/9
如此便得到了第一个附魔
判断是否得到更多魔咒
等级调节值除以2,得到值范围13~21.5,四舍五入得13~22
注意候选表已经不再受等级调节值影响,即如有第二个魔咒为耐久则依旧必然为耐久III。
获得第二个魔咒的概率为P=(修改后的等级调节值+1)/50,概率范围为28%~46%。
接下来候选表中删掉已获得附魔和冲突的——工具中只有精准采集和时运冲突,再次通过权重计算接下来获得的魔咒概率,并得到第二个魔咒。
等级调节值再次除以2,得到值范围6.5~11,四舍五入得7~11 获得第三个魔咒的概率范围为16%~24%。
再重复删掉候选表中已有和冲突的附魔,如此时候选表只剩时运和精准采集,则获得时运的概率为2/3,精准采集概率为1/3,其他情况则只剩下一个候选魔咒,必然获得该魔咒。 而因此镐最多获得三个魔咒,之后即使得到第四个附魔机会,也会因候选表中没有魔咒而无效(而剑是有可能获得五个魔咒的,虽然概率极低)。
如此便得到了最终的附魔钻石镐。
作者:以上内容来源于Minecraft Wiki