三套「只能拿一次」的机制跑在同一份记录上——玩家用过哪些道具的那份计数。游戏对这三样的提示 并不一致。
酒和食物在第一次使用时带一份一次性的永久加成,存在道具的第三个杂项字段里:条目之间用+分隔,
每条是一个标志位、一根竖线,然后是普通效果用的同一批属性组。标志位为0表示「仅限这件道具从
来没用过的时候」,只有当计数里查不到这个id时,使用流程才把这些属性组并进普通效果
(ItemStorage.UseItemAttri)。
所以一道写着使用后精力回复20,第一次使用时可额外增加1最大精力的菜,第一口吃的是那点上限,往后 吃的是那20点。某些道具类别的说明里会提到这一条,食物和酒水的不会,而且任何地方都不会告诉你 你自己是不是已经拿过了。
只有配方、秘籍和秘法书在用过之后会被标上已学习。这个标记读的是同一份计数,所以你读过的书,在 背包里和商店行里都会带着它。
可堆叠的消耗品不属于这一类。 修为残页能用五次,计数只记得第一次,这和「用完了」不是一回事。 凭眼睛把打标记的类别放宽,就会在这里出错。
道具可以自带条件(写在它的第一个杂项字段里),限使用次数1次就是其中一种。使用流程在做任何事 之前先把这些条件算一遍,过不了就直接拒绝。提示里给出的是那条规则(要求:限使用次数1次), 从来不说这个角色是不是已经把那一次用掉了,而后面这一半才是决定要不要掏钱的那一半。
次数上限和已用次数游戏都知道,却从不放在一起给你看。 需求那一行印的是上限——它是道具自带 的使用次数条件的第二个值——而计数里存着你已经用掉几次。值得看的数字是已用3/8,游戏偏偏把这两 半放在了两个界面上。
想在掏钱之前分清「已经用掉」和「还没碰过」,办法就是把这些条件跑一遍:拿
AnswerViewNew.IsMatchMultCondition去算道具自己的条件串,它还会告诉你是哪一条子条件没过。