T5开格流+蓄力流(迭代12——整合定稿S4/S6):relics.tres填7行(贪婪矿灯common·正25负25双向乘区/矿脉直觉rare·连击加成10%上限5踩雷清零/赌徒的血签rarest锚点·正50负100/深挖钻头rare·R4甲非信息税形态=开掘+1AP每4格深层产出对价/整备军备rarest锚点·停手剩余AP转蓄力层上限3每层下轮首段+1——cleared作废口径停手侧改写/铁壁整备rare·每层减伤1/厚积薄发rare·满3层×2必中);action_economy扩relic面(relic_ap_carry停手转存改写+relic_dig_extra挖掘成本+_charge_layers账本);orchestrator _relic_yield_adjust快照隔离乘区+连击计数+深层产出+蓄力层每轮注入(求值即注入——action_economy注入并进_relic_flags_for修断言面错位);damage_controller蓄力三面(整备加算/厚积spike必中/铁壁减伤过floor);冒烟+3断言表换代23行→695/0+run_all全绿
This commit is contained in:
1 parent
db65b73bc7
commit
e216232e05
5 files changed
+178
-9
No files matched your search
@@ -35,6 +35,14 @@ var last_round_end: Dictionary:
|
||||
var _settlement_consumed := false # AC-14 门:notify_settlement_done 消费后才受理 round_start
|
||||
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=蓄力层账本。
|
||||
var relic_ap_carry := false
|
||||
var relic_dig_extra := 0
|
||||
var _charge_layers := 0
|
||||
var charge_layers: int:
|
||||
get: return _charge_layers
|
||||
|
||||
|
||||
func _init(db_ref: ConfigDb) -> void:
|
||||
@@ -54,7 +62,7 @@ func _cost(kind: String) -> int:
|
||||
var ae = db.action_economy
|
||||
match kind:
|
||||
"dig":
|
||||
return ae.dig_ap_cost
|
||||
return ae.dig_ap_cost + relic_dig_extra # 深挖钻头(迭代 12 T5——开掘额外 ~1 AP:R4 甲非信息税形态)
|
||||
"flag_place":
|
||||
return ae.flag_place_ap_cost
|
||||
"move":
|
||||
@@ -97,12 +105,17 @@ func _spend_and_arbitrate(action_kind: String, clears_map: bool) -> bool:
|
||||
return true
|
||||
|
||||
|
||||
# 停手:剩余 AP 1:1 转存 RAP;行动经济 直发 stopped 路径 round_end(双发射源)
|
||||
# 停手:剩余 AP 1:1 转存 RAP;行动经济 直发 stopped 路径 round_end(双发射源)。
|
||||
# 整备军备改写(迭代 12 T5——relic_ap_carry=true 时剩余 AP 转蓄力层〔上限 3〕替代 RAP 转存:
|
||||
# 「不动也是行动」——cleared 作废口径改写的停手侧承载;cleared 分支 AP 恒清零维持既有作废语义)
|
||||
func request_stop() -> bool:
|
||||
if _phase != Phase.ACTIVE:
|
||||
_reject("phase")
|
||||
return false
|
||||
_rap += _ap
|
||||
if relic_ap_carry:
|
||||
_charge_layers = mini(3, _charge_layers + _ap)
|
||||
else:
|
||||
_rap += _ap
|
||||
_ap = 0
|
||||
_finish_round("stopped", "same_board")
|
||||
round_end_stopped.emit({"path_tag": "stopped", "continuation_hint": "same_board"})
|
||||
|
||||
@@ -75,6 +75,8 @@ var _attune_safe_seen := 0 # 掘进蓄能 battle 域安全开格
|
||||
# 流派件运行态(迭代 12 T2——relic 持有集经 enc.relics 注入;求值旗注 damage_controller.relic_flags;
|
||||
# 魔矢每战首次计数 battle 域。空集=零扰动)
|
||||
var _relic_first_dig_used := false
|
||||
var _relic_combo := 0 # 矿脉直觉连击计数(battle 域——safe +1/mine 清零)
|
||||
var _relic_deep_dug := 0 # 深挖钻头深层产出计数(battle 域——每 cap 格额外 grant 一份)
|
||||
|
||||
|
||||
func _attune_has(item_id: String) -> bool:
|
||||
@@ -141,12 +143,30 @@ func _relic_flags_for(relic_ids: Array) -> void:
|
||||
flags["armor_roll_rewrite"] = int(fx.get("value", 0))
|
||||
"heavy_debuff":
|
||||
flags["crack_value"] = int(fx.get("value", 0))
|
||||
"dig_yield_mult":
|
||||
# 开格产出乘区族(贪婪矿灯/矿脉直觉/赌徒的血签——正负双向,同 hook 累加)
|
||||
flags["dig_yield_pos_mult"] = int(flags.get("dig_yield_pos_mult", 0)) + int(fx.get("mult", 0))
|
||||
flags["dig_yield_neg_mult"] = int(flags.get("dig_yield_neg_mult", 0)) + int(fx.get("cost_mult", 0))
|
||||
if int(fx.get("cap", 0)) > 0:
|
||||
flags["combo_cap"] = int(fx.get("cap", 0)) # 矿脉直觉连击上限
|
||||
"deep_dig":
|
||||
flags["deep_dig_cost"] = int(fx.get("ap_cost", 0))
|
||||
flags["deep_dig_cap"] = int(fx.get("cap", 4))
|
||||
"ap_carry":
|
||||
flags["ap_carry_value"] = int(fx.get("value", 0))
|
||||
"charge_shield":
|
||||
flags["shield_per_layer"] = int(fx.get("shield_per_layer", 0))
|
||||
"charge_spike":
|
||||
flags["spike_mult"] = int(fx.get("value", 0))
|
||||
var mt := int(tiers.get("magic", 0))
|
||||
if mt >= 1:
|
||||
flags["rider_flat"] = int(flags.get("rider_flat", 0)) + 1 # 档一质变(≥2 件):rider +1(provisional)
|
||||
if mt >= 2:
|
||||
flags["rider_crit"] = true # 档二质变(≥4 件):rider 可暴击(crit 时乘暴击倍率)
|
||||
_damage.relic_flags = flags
|
||||
# 蓄力流/深挖钻头 action_economy 注入(求值即注入——冒烟直呼 _relic_flags_for 同面生效)
|
||||
action_economy.relic_ap_carry = int(flags.get("ap_carry_value", 0)) > 0
|
||||
action_economy.relic_dig_extra = int(flags.get("deep_dig_cost", 0))
|
||||
var _flag_miss_seen := {} # 标旗未中行去重(每安全格实例一次)
|
||||
var _perfect_hit_true := 0 # 板级完美排雷计数(install 重置)
|
||||
var _perfect_hit_false := 0
|
||||
@@ -221,6 +241,8 @@ func begin_battle(enc: Dictionary) -> bool:
|
||||
# relic_flags;空集/空表=零扰动。魔矢每战首次开格计数同步归零)
|
||||
_relic_flags_for((enc.get("relics", []) as Array))
|
||||
_relic_first_dig_used = false
|
||||
_relic_combo = 0
|
||||
_relic_deep_dug = 0
|
||||
# 迭代 10 奖励重构批——跨冒险行动点加成轴(统一冒险加算区第四轴):经排队修正通道兑现
|
||||
# 「每场战斗开始首轮 AP +加成值」(queue_ap_delta = 下轮开轮基线加算、notify_round_start 兑现后
|
||||
# 清零——首轮即消费,后续轮次不重复兑现;语义锚 = 行动经济 GDD「跨冒险行动点加成轴」节)
|
||||
@@ -399,7 +421,17 @@ func _settle() -> void:
|
||||
# 作废(归因行在案);标空判定已随旗擦除自然缺席(被挖的旗不在轮末在场基线)。
|
||||
_emit_row("reward_ineffective", "safe_cell", evt.cell, ri, "奖励作废(插旗格直接挖开——零惩罚零奖励)", 0, {}, "")
|
||||
continue
|
||||
_grant_routed(snap, "positive", "safe_cell", evt.cell, ri, "")
|
||||
_grant_routed(_relic_yield_adjust(snap, true), "positive", "safe_cell", evt.cell, ri, "")
|
||||
# 开格流连击/深层产出(迭代 12 T5):矿脉直觉连击 = safe +1(mine 清零在负向分支);
|
||||
# 深挖钻头深层产出 = 每 cap 格额外 grant 一份(收益面补偿额外 AP 成本——R4 甲非信息税对价)
|
||||
_relic_combo += 1
|
||||
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 dd_snap = _reward_economy.grant(evt.cell)
|
||||
if dd_snap is Dictionary:
|
||||
_grant_routed(dd_snap, "positive", "safe_cell", evt.cell, ri, "", "(深层资源)")
|
||||
# 魔能共鸣·每战首次开安全格追加魔法矢(迭代 12 T2——relic 件「每关首次开格必出魔法矢」
|
||||
# 落地为每战首次〔战斗域单事务无跨战状态——「每关」字面改「每战」台账披露待追认〕;
|
||||
# board_typed magic 必中,扫雷结算触发点=relic 挂 first_dig_spell 承载红线①)
|
||||
@@ -418,7 +450,8 @@ func _settle() -> void:
|
||||
elif evt.kind == "mine":
|
||||
# 插旗不可逆四情况②:插雷格再挖开 = 只受挖雷一层惩罚(mine_hit 照常兑付——惊动巢穴),
|
||||
# 标中不发(旗已随挖掘擦除、不入轮末判定基线)。
|
||||
_grant_routed(snap, "negative", "mine_hit", evt.cell, ri, "")
|
||||
_grant_routed(_relic_yield_adjust(snap, false), "negative", "mine_hit", evt.cell, ri, "")
|
||||
_relic_combo = 0 # 矿脉直觉连击清零(踩雷断连——「推理密度直接奖励」的对侧)
|
||||
# 地形变异 兑付段(授予段尾——触发枚举 on_open:挖开即伤、chain 通道同口径,轮末结算逐行兑现;
|
||||
# 信息型 hide_number 不进结算——呈现层读取,见 board_view 数字遮蔽;雷格恒无变异——布置段排除,
|
||||
# 双层叠罚不存在;插旗格直挖照吃变异伤害——地形后果同 mine_hit 口径,非奖励不作废)
|
||||
@@ -491,6 +524,24 @@ func _settle() -> void:
|
||||
|
||||
# ---- 授予段 helpers(极性路由)----
|
||||
|
||||
# 开格产出乘区(迭代 12 T5 开格流——贪婪矿灯/矿脉直觉/赌徒的血签;duplicate 隔离不回写快照):
|
||||
# positive=power ×(1+静态 mult% + 矿脉直觉连击加成 min(cap,combo)×10%);negative=power ×(1+cost%)。
|
||||
# 零旗=原快照原样返回(零扰动)。
|
||||
func _relic_yield_adjust(snap: Dictionary, positive: bool) -> Dictionary:
|
||||
var pos_m := int(_damage.relic_flags.get("dig_yield_pos_mult", 0))
|
||||
var neg_m := int(_damage.relic_flags.get("dig_yield_neg_mult", 0))
|
||||
if positive and pos_m <= 0 and not _damage.relic_flags.has("combo_cap"):
|
||||
return snap
|
||||
if not positive and neg_m <= 0:
|
||||
return snap
|
||||
var out: Dictionary = snap.duplicate()
|
||||
var power := int(out.get("power", int(_reward_economy.polarity_row(String(out.get("cell_type", "")), "positive" if positive else "negative").power)))
|
||||
var pct := pos_m if positive else neg_m
|
||||
if positive and _damage.relic_flags.has("combo_cap"):
|
||||
pct += mini(int(_damage.relic_flags.get("combo_cap", 5)), _relic_combo) * 10
|
||||
out["power"] = maxi(1, int(round(float(power) * (1.0 + float(pct) / 100.0))))
|
||||
return out
|
||||
|
||||
# 「动作 × 格型」矩阵的执行面:snap = 缓冲期冻结身份快照(cell_type = 该格装板期摇定的类型身份),
|
||||
# polarity 由动作决定(开安全格/标中旗 = positive,开雷格/标错旗 = negative),
|
||||
# 兑付行 = 奖励字典(类型, 极性)行。返回 true = percent 行实际生效(flat 行恒 false——兑付结果由行协议承载)。
|
||||
@@ -777,6 +828,9 @@ func _combat_segment(ri: int) -> void:
|
||||
elif evt.kind == "mine":
|
||||
round_mine = true
|
||||
_damage.relic_flags["dig_streak"] = 0 if round_mine else round_safe
|
||||
# 蓄力层注入(迭代 12 T5——整备军备「每层下轮首段 +1」/厚积薄发满层 spike/铁壁整备减伤——
|
||||
# 三件同读 action_economy.charge_layers;battle 域每轮刷新)
|
||||
_damage.relic_flags["charge_layers"] = action_economy.charge_layers
|
||||
# ⓪ 主角先手攻击(基础攻击恒存在——2026-09-11 用户裁决;先于敌方行动;授予段负向直伤致死 → 致电短路不先手)。
|
||||
# 单分量伤害构成(2026-09-19 充能退役批·用户拍板):主角攻击 = 唯一基础分量(atk,吃掷点含暴击;
|
||||
# 类型 = 主角 attack_type 表值——2026-09-18 营地扩展前置批:量与类型抽象分离;查甲效矩阵对应行取克制修正)。
|
||||
|
||||
@@ -211,6 +211,9 @@ func _resolve_hero_attack(t: Dictionary) -> void:
|
||||
discount = rewrite
|
||||
crit = false
|
||||
roll_read["roll"] = 0
|
||||
# 厚积薄发满层必中(迭代 12 T5 蓄力流——spike ready 时 discount 恒全额、暴击面走倍乘不加掷)
|
||||
if int(relic_flags.get("spike_mult", 0)) > 0 and int(relic_flags.get("charge_layers", 0)) >= 3:
|
||||
discount = 100
|
||||
# 猎弱本能(迭代 12 T4 穿刺流——对轻甲敌折扣档改善 value 档:对冲 pierce 列 L1 −1 开局罚;
|
||||
# 改善 = 折扣表向全额方向移档,nat 最大面/已全额不重复)
|
||||
var shift := int(relic_flags.get("discount_shift", 0))
|
||||
@@ -225,6 +228,15 @@ func _resolve_hero_attack(t: Dictionary) -> void:
|
||||
var trade_atk := int(relic_flags.get("hit_trade_atk", 0))
|
||||
if trade_atk > 0:
|
||||
base_value *= 1.0 + float(trade_atk) / 100.0 # 重锤增伤面(交换的正向侧)
|
||||
# 蓄力流(迭代 12 T5):整备军备「每层下轮首段 +1」(层数×value 加算)+厚积薄发满层(≥3)
|
||||
# spike 倍乘+强制必中(discount 100/crit 关闭掷骰面——方差买断的爆发出口)
|
||||
var charge_layers := int(relic_flags.get("charge_layers", 0))
|
||||
if charge_layers > 0:
|
||||
base_value += float(charge_layers * int(relic_flags.get("ap_carry_value", 0)))
|
||||
var spike_mult := int(relic_flags.get("spike_mult", 0))
|
||||
var spike_ready := spike_mult > 0 and charge_layers >= 3
|
||||
if spike_ready:
|
||||
base_value *= float(spike_mult)
|
||||
var rolled: int = DamageMath.rolled_component(base_value, discount, crit, int(db.settlement.crit_multiplier), cdelta)
|
||||
var payload: Dictionary = {"target": String(target.display_name)}
|
||||
payload[atk_type] = rolled # 分量键 = 实际攻击类型(归因字段,单分量模型)
|
||||
@@ -296,6 +308,10 @@ func _resolve_enemy_skill(t: Dictionary) -> void:
|
||||
var rolled: int = DamageMath.rolled_component(float(t.base_value), discount, crit, int(db.settlement.crit_multiplier), 0)
|
||||
var pooled: int = DamageMath.pool_damage(rolled, clamped_pool("hero_defense"), clamped_pool("enemy_output"))
|
||||
var total: int = maxi(int(db.settlement.damage_floor), pooled) + int(t.rider) # rider 后置于伤害下限——独立必中加项,不进乘区
|
||||
# 铁壁整备(迭代 12 T5 蓄力流——每层下轮开场 S 点减伤;减后过下限保底)
|
||||
var shield := int(relic_flags.get("shield_per_layer", 0)) * int(relic_flags.get("charge_layers", 0))
|
||||
if shield > 0:
|
||||
total = maxi(int(db.settlement.damage_floor), total - shield)
|
||||
units.apply_damage(hero, total)
|
||||
var payload: Dictionary = {"target": "hero", "skill_id": String(t.context.get("skill_id", "")), "baseline": int(t.context.get("baseline", 0)),
|
||||
"roll": int(roll_read.roll), "ac": threshold, "tier": discount}
|
||||
|
||||
@@ -154,6 +154,74 @@ rows = [{
|
||||
"effects": {
|
||||
"value": 25
|
||||
}
|
||||
}, {
|
||||
"relic_id": "greedy_lantern",
|
||||
"display_name": "贪婪矿灯",
|
||||
"rarity": "common",
|
||||
"archetype": "dig",
|
||||
"hook": "dig_yield_mult",
|
||||
"effects": {
|
||||
"mult": 25,
|
||||
"cost_mult": 25
|
||||
}
|
||||
}, {
|
||||
"relic_id": "vein_intuition",
|
||||
"display_name": "矿脉直觉",
|
||||
"rarity": "rare",
|
||||
"archetype": "dig",
|
||||
"hook": "dig_yield_mult",
|
||||
"effects": {
|
||||
"mult": 10,
|
||||
"cap": 5
|
||||
}
|
||||
}, {
|
||||
"relic_id": "gambler_pact",
|
||||
"display_name": "赌徒的血签",
|
||||
"rarity": "rarest",
|
||||
"archetype": "dig",
|
||||
"hook": "dig_yield_mult",
|
||||
"effects": {
|
||||
"mult": 50,
|
||||
"cost_mult": 100
|
||||
}
|
||||
}, {
|
||||
"relic_id": "deep_drill",
|
||||
"display_name": "深挖钻头",
|
||||
"rarity": "rare",
|
||||
"archetype": "dig",
|
||||
"hook": "deep_dig",
|
||||
"effects": {
|
||||
"ap_cost": 1,
|
||||
"cap": 4
|
||||
}
|
||||
}, {
|
||||
"relic_id": "armory_prep",
|
||||
"display_name": "整备军备",
|
||||
"rarity": "rarest",
|
||||
"archetype": "charge",
|
||||
"hook": "ap_carry",
|
||||
"effects": {
|
||||
"value": 1,
|
||||
"cap": 3
|
||||
}
|
||||
}, {
|
||||
"relic_id": "iron_wall",
|
||||
"display_name": "铁壁整备",
|
||||
"rarity": "rare",
|
||||
"archetype": "charge",
|
||||
"hook": "charge_shield",
|
||||
"effects": {
|
||||
"shield_per_layer": 1
|
||||
}
|
||||
}, {
|
||||
"relic_id": "patient_burst",
|
||||
"display_name": "厚积薄发",
|
||||
"rarity": "rare",
|
||||
"archetype": "charge",
|
||||
"hook": "charge_spike",
|
||||
"effects": {
|
||||
"value": 2
|
||||
}
|
||||
}]
|
||||
|
||||
; 双层 BD 实施批(2026-10-04):机制件表——行 = 流派件定义
|
||||
|
||||
+22
-4
@@ -602,8 +602,8 @@ func _smoke_adventure() -> void:
|
||||
|
||||
func _smoke_relics() -> void:
|
||||
print("--- 机制件基建(relic_table · 档位激活引擎 · 机制件带接线)---")
|
||||
# ① 现行表牌库构成:T2 magic 4+T3 flag 4+T4 pierce 4/normal 4 入池——98 数值令牌+16 relic 令牌
|
||||
check(_db.relics != null and (_db.relics.rows as Array).size() == 16, "relic_table 已加载(T2/T3/T4 四流派 16 件在池——T5/T6 续填)")
|
||||
# ① 现行表牌库构成:五流派 23 件入池——98 数值令牌+23 relic 令牌(T6 吞噬流续填)
|
||||
check(_db.relics != null and (_db.relics.rows as Array).size() == 23, "relic_table 已加载(T2-T5 五流派 23 件在池——T6 续填)")
|
||||
var a_r0 = load("res://core/adventure_runner.gd").new(_db, _fresh_rng(71))
|
||||
check(a_r0.start_adventure(71, {"first_script": true}), "机制件带场景:冒险启动(seed 71)")
|
||||
var relic_tokens := 0
|
||||
@@ -613,8 +613,8 @@ func _smoke_relics() -> void:
|
||||
relic_tokens += 1
|
||||
if String((t as Dictionary).get("tier", "")) == "rarest":
|
||||
rarest_tokens += 1
|
||||
check(relic_tokens == 16 and rarest_tokens == 3 and a_r0._bonus_deck.size() == 114,
|
||||
"机制件带入池:16 件(rare 档 13 + rarest 锚点 3)——牌库 98+16=114")
|
||||
check(relic_tokens == 23 and rarest_tokens == 5 and a_r0._bonus_deck.size() == 121,
|
||||
"机制件带入池:23 件(rare 档 18 + rarest 锚点 5)——牌库 98+23=121")
|
||||
check(_db.relics.validate().is_empty(), "relic_table.validate 零违例(有行流派扫雷端铁律——magic first_dig_spell 在案)")
|
||||
# ② 档位激活引擎(纯函数直测——构造表 4 件 magic + 1 件 flag + 1 件 rarest 锚点)
|
||||
var rt := RelicTable.new()
|
||||
@@ -706,6 +706,24 @@ func _smoke_relics() -> void:
|
||||
"普攻流求值:执拗 +1/格上限 5 · 重锤交换 +25%/−2AC · 专注恒 75% 免掷骰 · 碎甲震击 off_guard 授予旗")
|
||||
check(bool(rf16.get("rider_crit", false)) and bool(rf16.get("rider_crit", false)),
|
||||
"档位质变:magic/pierce/normal/flag 四流派档二(16 件混合——同标签 ≥4 判档二确定性)")
|
||||
# ⑦ T5 开格/蓄力流求值面(追加七件)
|
||||
var ids23: Array = ["arcane_ember", "mana_weaver", "azure_oath", "mana_resonance",
|
||||
"mine_atlas", "nest_hunter", "perfect_defense", "war_banner",
|
||||
"pierce_shot", "chain_arrows", "weak_instinct", "hunter_rapier",
|
||||
"miner_stubborn", "miner_hammer", "focus_mind", "armor_crack",
|
||||
"greedy_lantern", "vein_intuition", "gambler_pact", "deep_drill",
|
||||
"armory_prep", "iron_wall", "patient_burst"]
|
||||
orch._relic_flags_for(ids23)
|
||||
var rf23: Dictionary = orch._damage.relic_flags
|
||||
check(int(rf23.get("dig_yield_pos_mult", -1)) == 85 and int(rf23.get("dig_yield_neg_mult", -1)) == 125
|
||||
and int(rf23.get("combo_cap", -1)) == 5,
|
||||
"开格流求值:正向乘区 25+10+50=85% · 负向加重 25+100=125% · 直觉连击上限 5(同 hook 累加——三件同持)")
|
||||
check(int(rf23.get("deep_dig_cost", -1)) == 1 and int(rf23.get("deep_dig_cap", -1)) == 4
|
||||
and int(rf23.get("ap_carry_value", -1)) == 1 and int(rf23.get("shield_per_layer", -1)) == 1
|
||||
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 零扰动)")
|
||||
var orch0 = load("res://core/battle_orchestrator.gd").new(_db, _fresh_rng(74))
|
||||
orch0._relic_flags_for([])
|
||||
check((orch0._damage.relic_flags as Dictionary).is_empty(),
|
||||
|
||||
Reference in new issue
Block a user