diff --git a/game/core/action_economy.gd b/game/core/action_economy.gd index a942f9f5..a88ad4aa 100644 --- a/game/core/action_economy.gd +++ b/game/core/action_economy.gd @@ -37,12 +37,17 @@ var _next_round_mode := "" # 调试观测量(同板续轮 / var _pending_ap_delta := 0 # 下轮行动点修正排队(格面资源八型批 2026-09-20——action 型 ±1 排队,轮开始兑现后清零) # 蓄力流运行态(迭代 12 T5——relic 件注入面;false=关着零扰动): # relic_ap_carry=整备军备(轮末剩余 AP 转蓄力层替代 RAP 转存——cleared 作废口径改写的停手侧承载); -# relic_dig_extra=深挖钻头(开掘额外 AP 成本——R4 甲非信息税形态);charge_layers=蓄力层账本。 +# relic_dig_extra=深挖钻头付费开掘对价(R4 甲非信息税形态;2026-10-04 试玩缺陷修复——对价挂付费 +# 开掘侧:AP 富余时挖掘付全价 1+extra 积付费计数、AP 不足时降级只付基础 1 照常开格不积计数—— +# 原「持有期所有挖掘无条件 +1」实现把对价错挂成普通挖掘税,AP=1 锁死开格);charge_layers=蓄力层账本。 var relic_ap_carry := false var relic_dig_extra := 0 var _charge_layers := 0 var charge_layers: int: get: return _charge_layers +var _deep_paid_count := 0 +var deep_paid_count: int: + get: return _deep_paid_count func _init(db_ref: ConfigDb) -> void: @@ -62,7 +67,7 @@ func _cost(kind: String) -> int: var ae = db.action_economy match kind: "dig": - return ae.dig_ap_cost + relic_dig_extra # 深挖钻头(迭代 12 T5——开掘额外 ~1 AP:R4 甲非信息税形态) + return ae.dig_ap_cost # 基础挖格成本恒表值(钻头对价挂付费开掘侧——2026-10-04 缺陷修复) "flag_place": return ae.flag_place_ap_cost "move": @@ -81,12 +86,37 @@ func try_spend(action_kind: String) -> bool: return _spend_and_arbitrate(action_kind, false) -# 排雷玩法 挖掘专用:chain_size = 连锁附加格数(不含首格);clears_map = 本次动作后全图安全格开完 +# 排雷玩法 挖掘专用:chain_size = 连锁附加格数(不含首格);clears_map = 本次动作后全图安全格开完。 +# 深挖钻头付费开掘(2026-10-04 缺陷修复——对价挂付费侧):AP 富余(≥基础+extra)时本动作付全价 +# 并积付费开掘计数(orchestrator 深层产出配额取数面);AP 不足全价时**降级只付基础 1 照常开格**、 +# 不积计数——持有钻头永不锁死普通挖格(散件保底 B-2)。 func request_dig(chain_size: int, clears_map: bool) -> bool: if _phase != Phase.ACTIVE: _reject("phase") return false - return _spend_and_arbitrate("dig", clears_map) + var cost := _cost("dig") + if relic_dig_extra > 0 and _ap >= cost + relic_dig_extra: + cost += relic_dig_extra + _deep_paid_count += 1 + if _ap < cost: + _reject("resource_face") + return false + return _spend_cost_and_arbitrate(cost, clears_map) + + +func _spend_cost_and_arbitrate(cost: int, clears_map: bool) -> bool: + if _ap < cost: + _reject("resource_face") + return false + _ap -= cost + if clears_map: + # cleared 胜出(同帧仲裁 cleared > ap_exhausted);剩余 AP 当场清零作废、不进 RAP(EC7/EC10) + _ap = 0 + _finish_round("cleared", "new_board") + elif _ap == 0: + # AP 归 0 瞬间轮次结束——不存在 0-AP 操作窗口 + _finish_round("ap_exhausted", "same_board") + return true func _spend_and_arbitrate(action_kind: String, clears_map: bool) -> bool: diff --git a/game/core/battle_orchestrator.gd b/game/core/battle_orchestrator.gd index bb966600..b39b43f3 100644 --- a/game/core/battle_orchestrator.gd +++ b/game/core/battle_orchestrator.gd @@ -76,7 +76,7 @@ var _attune_safe_seen := 0 # 掘进蓄能 battle 域安全开格 # 魔矢每战首次计数 battle 域。空集=零扰动) var _relic_first_dig_used := false var _relic_combo := 0 # 矿脉直觉连击计数(battle 域——safe +1/mine 清零) -var _relic_deep_dug := 0 # 深挖钻头深层产出计数(battle 域——每 cap 格额外 grant 一份) +var _relic_deep_given := 0 # 深挖钻头深层已兑付份数(battle 域——付费配额制:quota=付费次数/cap) var _relic_magma_layers := 0 # 熔火之躯积层(battle 域——受地形伤 +1,轮末反打清零) @@ -251,7 +251,7 @@ func begin_battle(enc: Dictionary) -> bool: _relic_flags_for((enc.get("relics", []) as Array)) _relic_first_dig_used = false _relic_combo = 0 - _relic_deep_dug = 0 + _relic_deep_given = 0 _relic_magma_layers = 0 # 树 rule 键消费(迭代 12 T10——Fork 激活侧 effects;真实接线首期两键:先手压制=战斗首轮 # AP+1(queue_ap_delta——先手压制语义)/稳健拓荒=敌方攻击减 1(伤害控制器 flags bulwark); @@ -442,10 +442,14 @@ func _settle() -> void: # 开格流连击/深层产出(迭代 12 T5):矿脉直觉连击 = safe +1(mine 清零在负向分支); # 深挖钻头深层产出 = 每 cap 格额外 grant 一份(收益面补偿额外 AP 成本——R4 甲非信息税对价) _relic_combo += 1 + # 深挖钻头深层产出(2026-10-04 缺陷修复——付费开掘配额制):深层资源只兑付给**付了全价** + # 的挖掘(action_economy.deep_paid_count 每 AP 富余挖格 +1);每 cap 次付费兑一份。 + # AP 不足降级的普通挖格照常开格但不积配额——持有钻头永不锁死挖格(散件保底 B-2)。 var dd_cap := int(_damage.relic_flags.get("deep_dig_cap", 0)) if dd_cap > 0: - _relic_deep_dug += 1 - if _relic_deep_dug % dd_cap == 0: + var quota := int(action_economy.deep_paid_count) / dd_cap + while _relic_deep_given < quota: + _relic_deep_given += 1 var dd_snap = _reward_economy.grant(evt.cell) if dd_snap is Dictionary: _grant_routed(dd_snap, "positive", "safe_cell", evt.cell, ri, "", "(深层资源)") diff --git a/game/smoke/smoke_all.gd b/game/smoke/smoke_all.gd index 0cdb4271..d5b33a6f 100644 --- a/game/smoke/smoke_all.gd +++ b/game/smoke/smoke_all.gd @@ -724,7 +724,19 @@ func _smoke_relics() -> void: and int(rf23.get("spike_mult", -1)) == 2, "深挖钻头=开掘 +1 AP/每 4 格深层产出(R4 甲非信息税对价)· 蓄力三件=层值 1/减伤 1/层/满层 ×2") check(orch.action_economy.relic_ap_carry and orch.action_economy.relic_dig_extra == 1, - "蓄力/钻头 action_economy 注入(ap_carry 改写停手转存 + dig 成本 +1——关着 false/0 零扰动)") + "蓄力/钻头 action_economy 注入(ap_carry 改写停手转存 + 付费开掘对价注入——关着 false/0 零扰动)") + # ⑦b 深挖钻头付费开掘回归(2026-10-04 试玩缺陷修复——对价挂付费侧):AP=1 降级照常开格 + # (用户实测「AP=1 无法开格只能标旗」的回归闸);AP=2 付全价积付费计数(深层产出配额取数面)。 + var ae_dd = load("res://core/action_economy.gd").new(_db) + ae_dd.relic_dig_extra = 1 + ae_dd._phase = 1 if ae_dd.Phase.ACTIVE == 1 else ae_dd.Phase.ACTIVE # white-box 相位(冒烟专用) + ae_dd._ap = 1 + check(ae_dd.request_dig(0, false) and ae_dd.deep_paid_count == 0, + "钻头降级:AP=1 照常开格(只付基础 1 不积付费——持有钻头永不锁死挖格,散件保底 B-2)") + ae_dd._ap = 2 + ae_dd._phase = ae_dd.Phase.ACTIVE # 首挖 AP 归 0 已翻轮(ap_exhausted 仲裁)——白盒复位续测 + check(ae_dd.request_dig(0, false) and ae_dd.deep_paid_count == 1, + "钻头付费开掘:AP=2 付全价(基础 1+对价 1——deep_paid_count 积数=深层产出配额取数面)") # ⑧ T6 吞噬流求值面(27 件全量——七流派档位成型) var ids27: Array = ids23.duplicate() ids27.append_array(["ley_harvest", "thorn_weaver", "purge_sapper", "magma_body"])