diff --git a/game/data/tables/adventure.tres b/game/data/tables/adventure.tres index 5e31f466..1005b19e 100644 --- a/game/data/tables/adventure.tres +++ b/game/data/tables/adventure.tres @@ -33,22 +33,21 @@ feat_ticket_quota = 2 feat_ticket_limit = 1 feat_ticket_pity_step = 5 -; 迭代 20 T2 池结构案D 换代(2026-10-11,奇物.md 池结构与抽取 v1):四级档位 70/25/3/0 = 98 张 -; (普通 70/优秀 25/稀有 3/传说 0=头奖位留空——旧 70/25/3 直映射改名承袭零偏离已裁结构锚); +; 迭代 20 T2 池结构案D 换代(2026-10-11,奇物.md 池结构与抽取 v1):四级档位 70/25/7/0 = 102 枚—— +; 稀有档投放三 kind=AP 件 3/储备金袋 2/时沙 2;储备金袋与时沙的配额键未载于本表、运行取 schema 缺省值,补表归待办清单; ; 概率与上限解耦(案②令牌池+提前退役):概率位=档+令牌数、已拿上限=curio_cap_*(拿了才计); ; 曝光槽=三选一 2 格全池+1 格优秀档以上子池(子池空回退全池);凭证不进子池。 ; 前史 TP0 令牌池换代(2026-10-03,node-reward v2.2 追认 b 落地):三选一池 = 固定配额令牌池—— -; 普通 70/稀有 25/罕见 3 = 98 张(罕见档原列「道具件 2」随 treasure_item 池种退役收窄——台账自决披露项); ; 洗牌不放回抽 3、选中踢池未选回池、池耗即枯竭; ; 种类次数上限退役(池消耗即上限;货架库存同账本=牌库剩余令牌数)。 -; 档位构成:普通〔小GP 18/小增伤 18/小护甲 17/小生命 17〕+ 稀有〔大GP/大增伤/大护甲/大生命/恢复 各 5〕 -; + 罕见〔AP 3〕——罕见档原列「道具件 2」随 treasure_item 池种退役(迭代 11 第①批 T7)不投放。 +; 档位构成(现行):普通〔小GP 18/小增伤 18/小护甲 17/小生命 17〕+ 优秀〔大GP/大增伤/大护甲/大生命 各 5+恢复 3+刷新件 2〕 +; + 稀有〔AP 件 3/储备金袋 2/时沙 2〕。 ; 数值对:小GP 20/大GP 50、小增伤 +1/大 +2、小护甲 +1/大 +2、小生命 +5/大 +10、恢复 +6(当即回血)、AP +1。 -; 恢复件 = 新入池种类(rare 档)。 +; 恢复件 = 新入池种类(优秀档)。 ; 退役字段:bonus_weight_*(E-S 权重族)/ bonus_cap_*(种类次数上限族)/ BONUS_CAP_UNLIMITED 哨兵—— ; 洗牌改令牌 Fisher-Yates(不放回抽 3,消费 reward_pick 封闭流)。 ; 迭代 11 第②批 商店共享池注记:货架 = 令牌级抽签(同 kind 去重每 kind 至多一卡、价格公式 tier-blind ; ceil(基价×b^(关序−1)×A^visit) 维持批②裁定、购买消费在架令牌本体)。 ; 末关通关不发三选一与回血(奖励只朝下一战生效)。 -; 全部 provisional-pending-曲线调参批(值锚与上调约束归 难度曲线与Boss;档位配额总量 70/25/5 系追认 b -; 结构锚——schema validate 硬断言,改总量须重裁)。 +; 全部 provisional-pending-曲线调参批(值锚与上调约束归 难度曲线与Boss;档位配额结构锚 70/25/7/0—— +; schema TIER_QUOTAS,validate 硬断言,改总量须重裁)。 diff --git a/game/tests/unit/core/adventure_feats_test.gd b/game/tests/unit/core/adventure_feats_test.gd index 7bc13ec9..fedf9f3f 100644 --- a/game/tests/unit/core/adventure_feats_test.gd +++ b/game/tests/unit/core/adventure_feats_test.gd @@ -396,7 +396,7 @@ func _smoke_adventure() -> void: for t in draw: draw_kinds[String((t as Dictionary).get("kind", ""))] = true Kit.check("池耗即枯竭(attack/ap 令牌耗尽不出候选——%s)" % str(draw), not draw_kinds.has("attack") and not draw_kinds.has("ap")) - Kit.check("池耗后候选恒 ≥2(稀有/罕见档余量——防「三选项全不可选」死角)", (draw as Array).size() >= 2) + Kit.check("池耗后候选恒 ≥2(稀有档余量——防「三选项全不可选」死角)", (draw as Array).size() >= 2) # 池收缩(aux 不入三选一牌库:重复抽样零 aux 候选;同调位替换两路 # white-box 测试属停点渠道,零投放零行为) var treasure_seen := false