魔咒是如何选择出来的
“魔咒等级”是某一魔咒所需的经验级别(在按钮上的绿色数字)。
“魔咒威力”是某一特定魔咒的力量。例如,“锋利IV”有4点威力。
魔咒的挑选有三个步骤。
第一步-对附魔等级加入调节值
首先游戏会把两个调节值加入到被选的附魔等级中。每个调节值会被限制在一定的范围内,数字接近范围中央的会比靠近两端的更常见。
第一调节值是基于附魔对象的“附魔能力”,这取决于该物品的材料和类型(见下表)。游戏会在0至附魔能力的一半(实际上,游戏会先将附魔能力除以4,四舍五入为整数后再乘以2)之间随机挑选一个数字,然后将这个数字和1加到附魔等级里。此时,弓的附魔能力是1。然后,这个随机数会经过三角形分布处理,使得最终结果靠近附魔能力一半的几率远大于靠近极值的几率。
修改后的附魔等级= 附魔等级+ 随机值(0, 附魔能力/ 4 * 2) + 1
(每步计算完毕后四舍五入)
材料 | 对应盔甲的附魔能力 | 对应剑/工具的附魔能力 |
木 | 不可用 | 15 |
皮革 | 15 | 不可用 |
石 | 不可用 | 5 |
铁 | 9 | 14 |
链(链甲) | 12 | 不可用 |
钻石 | 10 | 10 |
金 | 25 | 22 |
接着,Minecraft会在0.85和1.15之间挑选一个值,并再次经过三角形分布处理。修改后的附魔等级会乘以这个值(因此它可以增加或减少最多15%),然后四舍五入至整数,得到最终的等级调节值。
伪代码
// 返回一个区间为[0,n-1)的随机整数
function randomInt(n);
// 返回一个区间为[0,1)的一个随机实数
function randomFloat();
// 利用三角随机分布,生成一个区间为[1,1+(附魔能力/2))的随机数
enchantability_2 = enchantability / 2;
int rand_enchantability = 1 + randomInt(enchantability_2 / 2 + 1) + randomInt(enchantability_2 / 2 + 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 = (int)(k * (1 + rand_bonus_percent) + 0.5);
第二步-寻找可能的魔咒
现在,以等级调节值为基础,游戏会先列出所有可应用于目标物品的附魔类型及其威力(候选表),以便之后的挑选。
魔咒等级表中列出了每一种魔咒类型的可用等级及其威力。对于每一级威力的每种魔咒,都有与其规定的等级调节值范围。当等级调节值符合某级威力某个魔咒的等级调节值范围时,这个魔咒进入候选表;如果等级调节值同时包含于同一个魔咒不同级别威力的等级调节值范围内时,较高等级的魔咒进入候选表。例如,剑的“锋利I”和“锋利II”魔咒的等级调节值范围分别为1 - 21 和12 - 32 ,则当等级调节值为10时,“锋利I”进入候选列表;当等级调节值为15时,“锋利II”则会进入候选列表。Enchantview Mod 可以查看将要附魔的物品能附上什么魔咒。
一把附有几个魔咒的剑。(在正式版1.3 后,锋利V 无法附到钻石剑上。)
第三步-从候选表中选择魔咒
现在它有了该物品的附魔候选表,游戏会从它们之中选择一些会最后应用到的附魔。
最终附上的魔咒至少会有一个,第一个魔咒会从“权重”名单中被挑选出来——权重越高的魔咒,选中的机会越高。
P(魔咒)=(魔咒权重)/(∑i=1可能的魔咒的数量〖魔咒权重i〗)
盔甲魔咒 | 权重 |
保护 | 10 |
火焰保护 | 5 |
摔落保护 | 5 |
爆炸保护 | 2 |
弹射物保护 | 5 |
水下呼吸 | 2 |
水下速掘 | 2 |
剑魔咒 | 权重 |
锋利 | 10 |
亡灵杀手 | 5 |
节肢杀手 | 5 |
击退 | 5 |
火焰附加 | 2 |
抢夺 | 2 |
工具魔咒 | 权重 |
效率 | 10 |
精准采集 | 1 |
耐久 | 5 |
时运 | 2 |
弓魔咒 | 权重 |
力量 | 10 |
击退 | 2 |
火矢 | 2 |
无限 | 1 |
第一个魔咒被选中后,根据以下算法来判断是否得到更多魔咒:
1、将等级调节值除以2,并四舍五入。(这不影响魔咒候选表,因为候选表在第二步已经确定。)
2、以P=(修改后的等级调节值+1)/50 的几率决定是否选择额外的魔咒。
3、选择额外的魔咒后,删除表中任何与先前选择附魔相冲的魔咒。
4、从剩下的魔咒候选表中挑选一个魔咒(像之前一样,以权重为基准)并将其加入到该物品。
5、重复第一步。
相冲的魔咒
一些魔咒会与其他魔咒相冲,因此不能附到同一物品上,有效地减低玩家拥有过强武器/盔甲的可能性。
魔咒相冲的规则是:
每个魔咒与本身相冲。(所以你不能得到有两个相同魔咒的的工具。)
所有保护类魔咒相互冲突,所以一个物品只能有一个。(在程序代码中,摔落保护是一种保护类魔咒,但它不与其他保护类魔咒发生冲突。)
所有伤害类魔咒(锋利、亡灵杀手和节肢杀手)相互冲突。
“精准采集”和“时运”也会互相冲突。(在通过使用物品修改器得到的同时拥有“时运”与“精准采集”魔咒的镐中,“时运”会失效,因为“精准采集”的存在导致根本就不能采到方块的掉落资源,只能够得到方块本身。)
以钻石镐30级的附魔为例
第一步
首先计算附魔调节值,钻石无论剑/工具/盔甲的附魔能力都为10,则10/4=2.5,四舍五入得3,再3*2=6,则系统会在0~6范围内随机取一个值,再+1,即为修改后的附魔等级,范围在31~37
接着乘以0.85~1.15间的一个随机值,得到最终的等级调节值,范围为26.35~42.55,四舍五入得26~43,
而你得到的等级调节值是范围内的一个值(由于两次三角算法所以靠近中间值35的概率比靠近极值大),这个值将会影响魔咒候选表和是否获得更多魔咒。
第二步
工具魔咒 | 修改后的附魔等级 | ||||
I | II | III | IV | V | |
效率 | 1–51 | 11–61 | 21–71 | 31–81 | 41–91 |
精准采集 | 15–65 | — | — | — | — |
耐久 | 5–55 | 13–63 | 21–71 | — | — |
时运 | 15–65 | 24–74 | 33–83 | — | — |
以此为基准通过魔咒等级表来选择入选魔咒
从表中查出有可能的魔咒(括号内为对应魔咒等级范围)为:效率III(21-71),效率IV(31-81),效率V(41-91),精准采集(15-65),耐久III(21-71),时运II(24-74),时运III(33-83)
即附魔等级调节值与对应出现在候选表中的魔咒为(特别的,锋利V是30级钻石附魔唯一无法得到的魔咒,因为其最低等级需要45)
附魔等级调节值 | 26-30 | 31-32 | 33-40 | 41-43 |
效率 | III | IV | IV | V |
时运 | II | II | III | III |
耐久 | III | III | III | III |
精准采集 | I | I | I | I |
第三步
决定在候选表的四个魔咒中具体附魔哪一个,就需要计算各魔咒权重,查表知效率为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,其他情况则只剩下一个候选魔咒,必然获得该魔咒。而因此镐最多获得三个魔咒,之后即使得到第四个附魔机会,也会因候选表中没有魔咒而无效(而剑是有可能获得五个魔咒的,虽然概率极低)。
如此便得到了最终的附魔钻石镐。
附魔可能性图表
钻石工具所有可能附魔列表。
上一个: 《饥荒》宝石萝莉大型精美基地建设图
下一个: 《星界边境》正式版新增紫色武器图鉴介绍
浏览量:642022-07-19
浏览量:22021-05-31
浏览量:02021-05-29
浏览量:02021-05-17
浏览量:32021-04-23
浏览量:02019-10-13
RTX5090/5080显卡即将来袭!测试功耗惊人!
《暗区突围:无限》海外测试开启
《黑帝斯2》登顶Steam一周销量榜
《寂静之地:入侵日》 6月28日北美上映
《幻兽帕鲁》更新版本上线
《PANICORE》宣布5月31日发售