TP0令牌池落地(迭代12条件卡——node-reward v2.2追认b实施批):三选一池改固定配额令牌池70/25/3=98张(罕见档道具件2席随aux池种退役收窄=台账自决披露项;schema validate结构锚硬断言)+抽签Fisher-Yates同kind去重+选中踢池未选回池+池耗即枯竭+种类次数上限退役+恢复件+6新入池rare档+数值对全落;MC策略316-f落地(autoplay 1级最稀有/2级最左_pick_token单点);货架=令牌级抽签价格tier-blind维持批②裁定+消费在架令牌本体;断点扩键bonus_deck余库逐枚还原(旧断点缺键=满库重建防御单版本周期);跨表校验⑥改令牌配额检查;文档四正主=node-reward v2.4+冒险结构v0.14+registry+06落地状态;normal档重锚runsum_m4iter12_tp0_n20_20261003(seed0=90000配对读数同带0/5/0零结构位移+316-f构成佐证)——闸=冒烟670/0三闸+run_all 15套+探针五绿click存量红零新增+doc三闸零新增+熵增PASS
This commit is contained in:
1 parent
cc34531048
commit
fd6a8325f0
14 files changed
+525
-303
No files matched your search
@@ -92,18 +92,26 @@ static func bonus_pick_header(payload: Dictionary) -> String:
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
# 三选一选项卡文案(件名 + 效果读数;值 = 冒险表行值,组合根喂入;道具件掷定前置时
|
||||
# aux_line = 具体道具「名 · 效果摘要」行——追加批二,空 = 无预掷回退通用文案)
|
||||
static func bonus_card_text(id: String, value: int, aux_line: String = "") -> String:
|
||||
# 三选一选项卡文案(件名 + 档位 + 效果读数;值 = 冒险表行值,组合根喂入;TP0 令牌池——档位词
|
||||
# 对齐 v2.2 追认 b 口径:小/大前缀(小GP/大GP 族)、恢复/AP 不带档位词;道具件掷定前置时
|
||||
# aux_line = 具体道具「名 · 效果摘要」行——池种退役后恒空走通用分支,机械惰性保留)
|
||||
static func bonus_card_text(id: String, tier: String, value: int, aux_line: String = "") -> String:
|
||||
var ts := ""
|
||||
if tier == "common":
|
||||
ts = " · 小"
|
||||
elif tier == "rare":
|
||||
ts = " · 大"
|
||||
match id:
|
||||
"attack":
|
||||
return "攻击力提升\n攻击 +%d" % value
|
||||
return "攻击力提升%s\n攻击 +%d" % [ts, value]
|
||||
"max_hp":
|
||||
return "生命上限提升\n生命上限 +%d" % value
|
||||
return "生命上限提升%s\n生命上限 +%d" % [ts, value]
|
||||
"armor":
|
||||
return "护甲等级提升\n护甲 +%d" % value
|
||||
return "护甲等级提升%s\n护甲 +%d" % [ts, value]
|
||||
"gp":
|
||||
return "金币袋\n金币 +%d" % value
|
||||
return "金币袋%s\n金币 +%d" % [ts, value]
|
||||
"heal":
|
||||
return "恢复药剂\n生命 +%d(当即回复)" % value
|
||||
"aux_item":
|
||||
if aux_line != "":
|
||||
return "魔法道具\n%s" % aux_line
|
||||
@@ -113,9 +121,9 @@ static func bonus_card_text(id: String, value: int, aux_line: String = "") -> St
|
||||
return id
|
||||
|
||||
|
||||
# 三选一兑付反馈行(选中件效果 + 丢弃提示)
|
||||
# 三选一兑付反馈行(选中件效果 + 丢弃提示;tier 缺省普通档——旧载荷防御口径)
|
||||
static func bonus_result_text(result: Dictionary) -> String:
|
||||
var name := bonus_card_text(String(result.get("picked", "")), int(result.get("value", 0))).replace("\n", " · ")
|
||||
var name := bonus_card_text(String(result.get("picked", "")), String(result.get("tier", "")), int(result.get("value", 0))).replace("\n", " · ")
|
||||
return "已选择:%s\n其余选项已丢弃(不可反悔)" % name
|
||||
|
||||
|
||||
|
||||
@@ -542,17 +542,21 @@ var _last_replace_incoming := {} # 同上——incoming 记录
|
||||
|
||||
|
||||
func _bonus_card_texts(candidates: Array, aux_detail: Array = []) -> Array:
|
||||
# TP0 令牌池——候选 = {"kind","tier"} 令牌字典;卡片 id = "kind|tier" 复合键(同 kind 大小两档
|
||||
# 可同屏,kind 单键不构成唯一身份),确认回程拆键(_on_bonus_pick_confirmed)
|
||||
var out: Array = []
|
||||
var aux_i := 0
|
||||
for id in candidates:
|
||||
var cid := String(id)
|
||||
for tok in candidates:
|
||||
var kind := String((tok as Dictionary).get("kind", ""))
|
||||
var tier := String((tok as Dictionary).get("tier", ""))
|
||||
var cid := "%s|%s" % [kind, tier]
|
||||
var text := ""
|
||||
if cid == "aux_item":
|
||||
if kind == "aux_item":
|
||||
var iid := String(aux_detail[aux_i]) if aux_i < aux_detail.size() else ""
|
||||
aux_i += 1
|
||||
text = Narrator.bonus_card_text(cid, int(db.adventure.bonus_value(cid)), _aux_card_line(iid))
|
||||
text = Narrator.bonus_card_text(kind, tier, int(db.adventure.bonus_value(kind, tier)), _aux_card_line(iid))
|
||||
else:
|
||||
text = Narrator.bonus_card_text(cid, int(db.adventure.bonus_value(cid)))
|
||||
text = Narrator.bonus_card_text(kind, tier, int(db.adventure.bonus_value(kind, tier)))
|
||||
out.append({"id": cid, "text": text})
|
||||
return out
|
||||
|
||||
@@ -596,7 +600,11 @@ func _on_bonus_refresh() -> void:
|
||||
func _on_bonus_pick_confirmed(item_id: String) -> void:
|
||||
if adventure == null:
|
||||
return
|
||||
var ok: bool = adventure.apply_node_bonus(item_id) if _bonus_context == "reward_node" else adventure.pick_bonus(item_id)
|
||||
# TP0 令牌池——卡片 id "kind|tier" 拆键(缺 | = 旧载荷防御归普通档)
|
||||
var parts := item_id.split("|")
|
||||
var kind := parts[0]
|
||||
var tier := parts[1] if parts.size() > 1 else ""
|
||||
var ok: bool = adventure.apply_node_bonus(kind, tier) if _bonus_context == "reward_node" else adventure.pick_bonus(kind, tier)
|
||||
if not ok:
|
||||
push_error("[组合根] 三选一兑付被拒——见输出日志")
|
||||
|
||||
|
||||
Reference in new issue
Block a user