Entering 批量操作 clears every selection and every count. Then:
ShopHolder.OnClickItem sets
selectedNum = Amount_NOS the moment the box is checked. Three ticks can empty the shelf and the
purse.There is no "tick them, then say how many" flow in the stock UI.
The box under the list and its + and − all write to a single "current item" pointer, whichever row
you ticked last (ShopViewNew.OnNumInputValueChanged, ChangeBuyCount). Which produces three
behaviours that look like bugs and are not:
Outside bulk mode there is always exactly one current line, which is why the box feels fine there.
Shop stock is a table of rows that carry item, count, price and the group they belong to, and a
character is a merchant by carrying that group's id (ShopProto, NpcPrototype.shopID). Walking
both tables answers "who sells this", which the game will otherwise only tell you by making you
visit every stall, and an item with no row in that table is not sold anywhere and has to be
gathered, looted or crafted.
Food is C_USEABLE sub-class 4 and wine sub-class 6 (the same numeric slots as belt and necklace in
the equipment enum), which is why the description switch appears to handle armour where it is handling
dinner. The plain cooking water 清泉 sits in the item table beside 调料, 面粉 and 冰糖: grocery stock,
not something drawn from a river, while the famous-spring waters (谷帘泉, 惠山石泉, 兰溪水 …) are a
separate tier used for tea and wine.