abyssal_chord

    深渊协奏 (Abyssal Chord) - A MoonBit card battle game engine with CLI demo

    game
    card-game
    roguelike
    battle
    Download zip
    Author
    Version
    0.1.0
    License
    Apache-2.0
    Last updated
    2 months ago
    Downloads
    20

    #深渊协奏 (Abyssal Chord) — MoonBit 卡牌对战游戏引擎

    #📋 项目申报信息

    项目详情
    项目名称深渊协奏 (Abyssal Chord) — MoonBit 卡牌对战游戏引擎
    项目方向游戏引擎 / 卡牌策略游戏
    适用场景单机卡牌对战、局域网多人对战、AI 难度挑战、生存模式
    实现语言MoonBit(主要)+ TypeScript(前端可视化)
    GitHubhttps://github.com/sssssurf/abyssal-chord
    Gitlinkhttps://gitlink.org.cn/surf3/abyssal-chord
    许可证Apache-2.0
    原创性原创项目,卡牌体系与游戏机制为自主设计


    #🎯 项目简介

    深渊协奏是一款基于 MoonBit 语言开发的回合制卡牌对战游戏引擎。玩家扮演"调音师",利用声波武器、护甲系统和永久能力与畸变体战斗。项目核心引擎完全使用 MoonBit 实现,同时提供 Next.js + React 的 Web 可视化前端,支持单人对战、局域网联机对战、生存模式和 Boss Rush 等多种玩法。

    #为什么值得做?

    1. MoonBit 游戏开发生态空白 — 目前 MoonBit 生态中缺乏完整的游戏引擎参考实现,本项目可以作为 MoonBit 游戏开发的参考案例
    2. 卡牌策略的复杂逻辑验证 — 36张卡牌、4种流派、11种状态效果的组合逻辑,充分验证 MoonBit 在复杂业务逻辑中的表现力
    3. 完整的工程实践 — 从类型系统设计、状态管理、AI 系统到测试覆盖,展示了 MoonBit 工程最佳实践


    #🎮 核心功能

    #卡牌系统(55张卡牌)

    • 钟律牌库(20张):低频堡垒流、过载冲击流
    • 弦音牌库(16张):高频刺客流、回声幻影流
    • 扩展卡牌(15张):通用卡牌补充
    • 中立卡牌(4张):通用效果

    #战斗引擎

    • HP/护甲/AP 资源管理系统
    • 5级污染度系统(影响全局战斗参数)
    • 声爆 Debuff 叠加与引爆机制
    • 永久能力牌(打出后整场生效)
    • 遗物系统(4个角色专属遗物)
    • 阵型系统(5种战术阵型)

    #敌人 AI

    • 7种敌人(含2个Boss,支持二阶段转换)
    • 骰子驱动的行动选择算法
    • 4级 AI 难度(简单/普通/困难/噩梦)

    #游戏模式

    • 快速对战(10种预设对局)
    • 生存模式(无尽波次+难度递增)
    • Boss Rush(连续挑战双Boss)
    • 训练模式(流派专项练习)
    • 本地联机对战(WebSocket 多人同步)

    #辅助系统

    • 108个自动化测试(全部通过)
    • AI vs AI 战斗模拟器(平衡性测试)
    • 战斗回放系统(录制与回放)
    • 卡牌数据库查询系统
    • 自定义套牌构建器
    • 每日挑战系统
    • 40项成就系统
    • JSON 序列化(战斗状态导入/导出)


    #🏗️ 技术架构

    #核心引擎 (MoonBit 5,266行)

    engine/ ├── types.mbt # 核心类型定义 (193行) ├── battle_effect.mbt # 卡牌效果解析引擎 (255行) ├── battle_state.mbt # 战斗状态管理 (124行) ├── enemy_ai.mbt # 敌人AI系统 (96行) ├── ai_levels.mbt # AI难度等级 (179行) ├── xian_yin_engine.mbt # 弦音专属引擎 (202行) ├── relic_engine.mbt # 遗物系统 (104行) ├── battle_formation.mbt # 阵型系统 (133行) ├── survival_mode.mbt # 生存模式 (159行) ├── multiplayer_engine.mbt # 多人对战引擎 (379行) ├── achievements.mbt # 成就系统 (194行) ├── daily_challenge.mbt # 每日挑战 (重建中) ├── card_database.mbt # 卡牌数据库 (247行) ├── deck_builder.mbt # 套牌构建器 (200行) ├── card_synergy.mbt # 卡牌协同系统 (199行) ├── balance_calc.mbt # 平衡性计算器 (249行) ├── battle_replay.mbt # 战斗回放 (184行) ├── battle_simulator.mbt # 战斗模拟器 (140行) ├── json_io.mbt # JSON序列化 (171行) ├── game_guide.mbt # 游戏攻略手册 (221行) ├── interactive_cli.mbt # 交互CLI (331行) ├── card_data.mbt # 卡牌数据 (38行) ├── more_cards.mbt # 扩展卡牌 (56行) ├── card_rebalance.mbt # 卡牌平衡分析 (149行) ├── character_data.mbt # 角色数据 (28行) ├── enemy_data.mbt # 敌人数据 (70行) ├── more_enemies.mbt # 扩展敌人 (130行) ├── pollution.mbt # 污染度系统 (41行) ├── engine_test.mbt # 自动化测试 (698行) └── cmd/main/main.mbt # CLI演示入口 (93行)

    #前端展示 (TypeScript/Next.js)

    • React + Framer Motion 动画
    • WebSocket 多人实时对战
    • 音效系统(战斗音效+BGM)
    • 污染度可视化、战斗记录面板


    #🚀 快速开始

    #环境要求

    • MoonBit 工具链(最新版)
    • pnpm(前端依赖管理)

    #构建与运行

    # MoonBit 引擎编译 cd engine moon build # 编译(0 errors) moon test # 运行测试(108/108 passed) moon run cmd/main # CLI 对战演示 # Web 前端运行 cd ../projects pnpm install pnpm dev # 启动 http://localhost:5000

    #可用路由

    • / — 主菜单
    • /battle — 单人突围
    • /lobby/multiplayer — 局域网联机
    • /cards — 卡牌图鉴
    • /characters — 角色资料


    #📊 项目统计

    指标数值
    MoonBit 源文件30个
    MoonBit 代码行数5,266 行
    TypeScript 代码行数~4,000 行(手写逻辑)
    总卡牌数55 张
    角色数2 个
    敌人数7 个(含2 Boss)
    游戏模式6 种
    AI 难度等级4 级
    自动化测试108 个(全部通过)
    CI/CDGitHub Actions


    #🎲 游戏机制说明

    #污染度系统

    等级范围效果
    寂静期0-15无额外效果
    低鸣期16-40敌人伤害+2
    共振期41-70敌人伤害+4,每回合+3护甲
    咆哮期71-90敌人伤害+6,每回合+5护甲,玩家穿透-3
    终焉和弦91-100敌人伤害+10,玩家穿透-5

    #流派体系

    流派角色特点
    低频堡垒钟律叠甲→转化伤害,以守为攻
    过载冲击钟律自伤换超高爆发,血线换杀线
    高频刺客弦音高频率低费攻击,声爆快速叠加
    回声幻影弦音牌效翻倍,资源效率极致

    #卡牌数值平衡

    • 基准:1AP = 5伤害 = 5护甲
    • 超模设计通过副作用平衡(自伤、污染代价、消耗)
    • 能力牌按投资回收期评估(1-3回合回本)


    #🔧 开发历程

    本项目使用 AI 工具(Claude Code)辅助开发,AI 负责:
    • 代码生成与调试
    • 卡牌平衡性分析
    • 测试用例编写
    • 文档生成

    人类开发者负责:
    • 游戏机制与数值设计
    • 架构决策与代码审查
    • UI/UX 设计与实现
    • 最终质量把控


    #📄 许可证

    Apache-2.0 License

    AIDifficulty

    pub enum AIDifficulty {
    Easy_
    Normal_
    Hard_
    Nightmare_
    } derive(Eq)

    AI 难度等级 - 简单/普通/困难/噩梦

    Achievement

    pub struct Achievement {
    id : String
    name : String
    description : String
    category : AchievementCategory
    is_secret : Bool
    points : Int
    }

    AchievementCategory

    pub enum AchievementCategory {
    Combat
    Collection
    Mastery
    Challenge
    Secret
    } derive(Eq)

    成就系统 - 40个可解锁的成就

    ActiveAbility

    pub struct ActiveAbility {
    id : String
    card_id : String
    name : String
    effect : String
    }

    ArchetypeGuide

    pub struct ArchetypeGuide {
    name : String
    description : String
    key_cards : Array[String]
    playstyle : String
    strengths : String
    weaknesses : String
    recommended_relic : String
    }

    游戏攻略与数据手册 - Abyssal Chord 完整参考文档

    BattleMetrics

    pub struct BattleMetrics {
    turns_played : Int
    total_damage_dealt : Int
    total_damage_taken : Int
    total_armor_gained : Int
    total_sonic_boom_applied : Int
    cards_played : Int
    abilities_activated : Int
    pollution_peak : Int
    victory : Bool
    }

    BattlePhase

    pub enum BattlePhase {
    PlayerTurn
    EnemyTurn
    Victory_
    Defeat_
    } derive(Eq, Show)

    BattleReplay

    pub struct BattleReplay {
    character_id : String
    enemy_id : String
    frames : Array[ReplayFrame]
    total_frames : Int
    result : String
    duration : Int
    version : String
    }

    BattleState

    pub struct BattleState {
    player : PlayerState
    enemy : EnemyState
    player_char : Character
    enemy_data : Enemy
    phase : BattlePhase
    turn_number : Int
    pollution : Int
    log : Array[String]
    }

    BossRushState

    pub enum BossRushState {
    NotStarted
    InProgress
    Completed_
    Failed
    } derive(Eq)

    Card

    pub struct Card {
    id : String
    name : String
    name_en : String
    card_type : CardType
    archetype : CardArchetype
    cost : Int
    target : CardTarget
    effect : String
    design_note : String
    base_damage : Int
    base_armor : Int
    self_damage : Int
    sonic_boom : Int
    pollution_modifier : Int
    exhaust : Bool
    retain : Bool
    }

    CardArchetype

    pub enum CardArchetype {
    Basic
    Fortress
    Overload
    } derive(Eq)

    CardEfficiency

    pub struct CardEfficiency {
    name : String
    ap_cost : Int
    raw_damage : Int
    raw_armor : Int
    self_damage : Int
    sonic_boom_value : Int
    utility_score : Double
    archetype_label : String
    tier : String
    }

    游戏平衡性计算器 - 卡牌数值模型与战斗模拟统计

    CardQuery

    pub struct CardQuery {
    card_type : String
    archetype : String
    min_cost : Int
    max_cost : Int
    target : String
    keyword : String
    has_special : Bool
    character : String
    }
    卡牌数据库 — 查询、过滤、搜索全部55张卡牌

    CardTarget

    pub enum CardTarget {
    Single
    Self
    Aoe
    } derive(Eq)

    CardType

    pub enum CardType {
    Attack
    Skill
    Ability
    } derive(Eq)

    核心类型定义 - 卡牌、角色、敌人、污染系统的基础数据类型

    Character

    pub struct Character {
    id : String
    name : String
    name_en : String
    title : String
    title_en : String
    max_hp : Int
    relic : String
    relic_en : String
    relic_effect : String
    lore : String
    }

    CharacterComparison

    pub struct CharacterComparison {
    aspect : String
    zhong_lv_value : String
    xian_yin_value : String
    }

    ChatMessage

    pub struct ChatMessage {
    sender_id : String
    sender_name : String
    content : String
    turn : Int
    is_emote : Bool
    }

    Debuff

    pub struct Debuff {
    debuff_type : DebuffType
    stacks : Int
    }

    DebuffType

    pub enum DebuffType {
    SonicBoom
    Vulnerable
    Weak
    Poison
    Strength
    Thorn
    } derive(Eq)

    DeckConfig

    pub struct DeckConfig {
    name : String
    character_id : String
    card_ids : Array[String]
    max_cards : Int
    min_cards : Int
    description : String
    total_cost : Int
    }
    自定义牌组构建器 — 赛前配置30张出战卡牌

    DeckStats

    pub struct DeckStats {
    total_cards : Int
    total_damage_potential : Int
    total_armor_potential : Int
    average_ap_cost : Double
    attack_ratio : Double
    skill_ratio : Double
    ability_ratio : Double
    s_tier_cards : Int
    a_tier_cards : Int
    b_tier_cards : Int
    c_tier_cards : Int
    }

    DifficultyConfig

    pub struct DifficultyConfig {
    level : AIDifficulty
    label : String
    enemy_hp_mult : Double
    enemy_dmg_bonus : Int
    dice_bias : Int
    pollution_rate_bonus : Int
    player_ap_penalty : Int
    }

    Enemy

    pub struct Enemy {
    id : String
    name : String
    name_en : String
    lore : String
    hp_1p : Int
    hp_2p : Int
    hp_3p : Int
    hp_4p : Int
    actions : Array[EnemyAction]
    is_boss : Bool
    has_phase2 : Bool
    phase2_actions : Array[EnemyAction]
    phase2_trigger : String
    phase2_effect : String
    }

    EnemyAction

    pub struct EnemyAction {
    dice_min : Int
    dice_max : Int
    name : String
    name_en : String
    action_type : EnemyActionType
    effect : String
    damage : Int
    armor : Int
    sonic_boom : Int
    pollution_increase : Int
    piercing : Bool
    special : String
    }

    EnemyActionType

    pub enum EnemyActionType {
    Attack_
    AttackDebuff
    Buff_
    Aoe_
    Special_
    Summon_
    } derive(Eq)

    EnemyState

    pub struct EnemyState {
    id : String
    name : String
    hp : Int
    max_hp : Int
    armor : Int
    is_boss : Bool
    is_phase2 : Bool
    phase2_triggered : Bool
    summoned_minion : Bool
    reflect_active : Bool
    debuffs : Array[Debuff]
    }

    EnemyStrategy

    pub struct EnemyStrategy {
    enemy_name : String
    threat_level : String
    recommended_approach : String
    dangerous_moves : Array[String]
    tips : Array[String]
    }

    Formation

    pub struct Formation {
    name : String
    name_en : String
    formation_type : FormationType
    attack_bonus : Int
    armor_bonus : Int
    sonic_boom_multiplier : Double
    pollution_resistance : Int
    ap_bonus : Int
    }

    FormationType

    pub enum FormationType {
    Vanguard
    Phalanx
    Assault
    Resonant
    Adaptive
    } derive(Eq)

    战斗阵型系统 - 多角色编队与协同作战

    GameMode

    pub enum GameMode {
    QuickBattle
    SurvivalMode
    BossRush
    Training
    } derive(Eq)

    交互式CLI模式 - 玩家可选择敌人、难度和流派

    HighScore

    pub struct HighScore {
    name : String
    score : Int
    wave : Int
    date : String
    }

    MatchResult

    pub struct MatchResult {
    room_id : String
    winner_name : String
    loser_names : Array[String]
    total_turns : Int
    final_pollution : Int
    mvp_player : String
    }

    MultiplayerSlot

    pub struct MultiplayerSlot {
    player_id : String
    name : String
    character : Character
    player_state : PlayerState
    is_connected : Bool
    is_ready : Bool
    is_eliminated : Bool
    }

    MultiplayerState

    pub struct MultiplayerState {
    room_id : String
    players : Array[MultiplayerSlot]
    current_player_index : Int
    turn_number : Int
    pollution : Int
    is_active : Bool
    winner_id : String
    log : Array[String]
    }

    多人对战引擎 - 支持2-4人本地/网络对战

    NetworkPacket

    pub struct NetworkPacket {
    packet_type : String
    room_id : String
    player_id : String
    data : String
    sequence : Int
    }

    PlayerAchievement

    pub struct PlayerAchievement {
    achievement_id : String
    unlocked : Bool
    unlocked_at : String
    progress : Int
    target : Int
    }

    PlayerState

    pub struct PlayerState {
    id : String
    name : String
    hp : Int
    max_hp : Int
    armor : Int
    ap : Int
    max_ap : Int
    hand : Array[Card]
    deck : Array[Card]
    discard : Array[Card]
    exiled : Array[Card]
    permanent_abilities : Array[ActiveAbility]
    damage_bonus : Int
    armor_per_turn : Int
    extra_damage_per_armor : Double
    cards_played_this_turn : Int
    has_taken_self_damage : Bool
    next_attack_bonus : Int
    harmonic_active : Bool
    free_second_attack : Bool
    debuffs : Array[Debuff]
    }

    PollutionGuide

    pub struct PollutionGuide {
    tier_name : String
    threshold : String
    what_to_do : String
    danger_warning : String
    }

    PollutionLevel

    pub struct PollutionLevel {
    min_val : Int
    max_val : Int
    name : String
    name_en : String
    damage_bonus : Int
    armor_per_turn : Int
    player_piercing_dmg : Int
    }

    Relic

    pub struct Relic {
    id : String
    relic_type : RelicType
    name : String
    name_en : String
    effect : String
    owner_id : String
    }

    RelicType

    pub enum RelicType {
    OverloadFork
    SnappedString
    AnchorShard
    ResonanceCore
    } derive(Eq)

    遗物系统 - 角色专属遗物效果引擎

    ReplayFrame

    pub struct ReplayFrame {
    frame_id : Int
    action_type : String
    player_hp : Int
    player_armor : Int
    player_ap : Int
    enemy_hp : Int
    enemy_armor : Int
    pollution : Int
    card_id : String
    card_name : String
    enemy_action_name : String
    damage_dealt : Int
    damage_taken : Int
    armor_gained : Int
    }
    战斗回放系统 - 录制与回放完整的战斗历史

    SimulationResult

    pub struct SimulationResult {
    battles_run : Int
    player_wins : Int
    enemy_wins : Int
    avg_turns : Double
    avg_player_hp : Double
    avg_pollution : Double
    fastest_win : Int
    slowest_win : Int
    total_cards_played : Int
    total_damage_dealt : Int
    total_armor_gained : Int
    }
    AI vs AI 战斗模拟器 — 用于自动测试平衡性

    SpectatorSlot

    pub struct SpectatorSlot {
    spectator_id : String
    name : String
    joined_at_turn : Int
    }

    SurvivalState

    pub struct SurvivalState {
    battle : BattleState
    wave : Int
    score : Int
    enemies_defeated : Int
    is_active : Bool
    difficulty_multiplier : Double
    }

    生存模式 - 无尽波次挑战

    Synergy

    pub struct Synergy {
    card_a_id : String
    card_b_id : String
    synergy_type : SynergyType
    description : String
    power_rating : Int
    }

    SynergyType

    pub enum SynergyType {
    DirectCombo
    Conditional
    PassiveBoost
    ArchetypeCore
    } derive(Eq)

    卡牌协同系统 - 分析卡牌间combo和流派配合

    TeamConfig

    pub struct TeamConfig {
    leader : Character
    formation : Formation
    difficulty : Int
    enemy_id : String
    }

    TrainingSession

    pub struct TrainingSession {
    target_enemy : Enemy
    target_archetype : String
    tips : Array[String]
    practice_attempts : Int
    }

    ability_name

    fn ability_name(a : ActiveAbility) -> String

    abyssal_shrieker

    fn abyssal_shrieker() -> Enemy

    achievement_score

    fn achievement_score(achievements : Array[PlayerAchievement]) -> Int

    adaptive

    fn adaptive() -> Formation

    add_card_to_deck

    fn add_card_to_deck(config : DeckConfig, card_id : String) -> DeckConfig

    add_enemy_armor

    fn add_enemy_armor(state : BattleState, amount : Int) -> BattleState

    add_log

    fn add_log(state : BattleState, msg : String) -> BattleState

    add_player_armor

    fn add_player_armor(state : BattleState, amount : Int) -> BattleState

    add_sonic_boom

    fn add_sonic_boom(state : BattleState, stacks : Int) -> BattleState

    add_spectator

    fn add_spectator(spectators : Array[SpectatorSlot], name : String, turn : Int) -> Array[SpectatorSlot]

    all_achievements

    fn all_achievements() -> Array[Achievement]

    all_cards

    fn all_cards() -> Array[Card]

    all_cards_with_expansion

    fn all_cards_with_expansion() -> Array[Card]

    all_characters

    fn all_characters() -> Array[Character]

    all_difficulty_labels

    fn all_difficulty_labels() -> Array[String]

    all_enemies

    fn all_enemies() -> Array[Enemy]

    all_enemies_full

    fn all_enemies_full() -> Array[Enemy]

    all_enemy_names

    fn all_enemy_names() -> Array[String]

    all_formations

    fn all_formations() -> Array[Formation]

    all_game_modes

    fn all_game_modes() -> Array[GameMode]

    all_guides

    fn all_guides() -> Array[ArchetypeGuide]

    all_relics

    fn all_relics() -> Array[Relic]

    all_strategies

    fn all_strategies() -> Array[EnemyStrategy]

    all_synergies

    fn all_synergies() -> Array[Synergy]

    analyze_deck

    fn analyze_deck(cards : Array[Card]) -> DeckStats

    analyze_efficiency

    fn analyze_efficiency(replay : BattleReplay) -> String

    anchor_shard

    fn anchor_shard() -> Relic

    apply_formation

    fn apply_formation(state : BattleState, formation : Formation) -> BattleState

    apply_relic_turn_start

    fn apply_relic_turn_start(state : BattleState, relic : Relic) -> BattleState

    apply_xian_yin_effect

    fn apply_xian_yin_effect(state : BattleState, card : Card) -> BattleState

    apply_xian_yin_relic

    fn apply_xian_yin_relic(state : BattleState, cards_played : Int) -> BattleState

    archetype_menu

    fn archetype_menu() -> String

    assassin_guide

    fn assassin_guide() -> ArchetypeGuide

    assassin_synergies

    fn assassin_synergies() -> Array[Synergy]

    assault

    fn assault() -> Formation

    balance_check

    fn balance_check(char_id : String, enemy_id : String) -> String

    battle_summary_to_json

    fn battle_summary_to_json(state : BattleState) -> String

    battle_ui

    fn battle_ui(state : BattleState) -> String

    benchmark_speed

    fn benchmark_speed() -> String

    boss_rush_enemies

    fn boss_rush_enemies() -> Array[String]

    can_start_game

    fn can_start_game(state : MultiplayerState) -> Bool

    card_statistics

    fn card_statistics() -> String

    card_to_json

    fn card_to_json(card : Card) -> String

    JSON 序列化 - 战斗状态导入/导出

    cards_to_json

    fn cards_to_json(cards : Array[Card]) -> String

    challenge_achievements

    fn challenge_achievements() -> Array[Achievement]

    character_comparisons

    fn character_comparisons() -> Array[CharacterComparison]

    character_select_menu

    fn character_select_menu() -> String

    character_to_json

    fn character_to_json(char : Character) -> String

    check_achievement_progress

    fn check_achievement_progress(achievements : Array[PlayerAchievement], achievement_id : String, progress : Int, target : Int) -> Array[PlayerAchievement]

    check_defeat

    fn check_defeat(state : BattleState) -> BattleState

    check_multiplayer_game_over

    fn check_multiplayer_game_over(state : MultiplayerState) -> Bool

    check_overload_fork

    fn check_overload_fork(state : BattleState, card_cost : Int) -> BattleState

    check_resonance_core

    fn check_resonance_core(state : BattleState, sonic_boom_stacks : Int) -> BattleState

    check_snapped_string

    fn check_snapped_string(state : BattleState, card_type : CardType, cards_played : Int) -> BattleState

    check_victory

    fn check_victory(state : BattleState) -> BattleState

    collection_achievements

    fn collection_achievements() -> Array[Achievement]

    color_blue

    fn color_blue() -> String

    color_green

    fn color_green() -> String

    color_purple

    fn color_purple() -> String

    color_red

    fn color_red() -> String

    color_reset

    fn color_reset() -> String

    color_yellow

    fn color_yellow() -> String

    combat_achievements

    fn combat_achievements() -> Array[Achievement]

    compare_cards

    fn compare_cards(card_a : Card, card_b : Card) -> String

    compare_characters

    fn compare_characters(enemy_id : String) -> String

    compare_decks

    fn compare_decks(deck_a : DeckConfig, deck_b : DeckConfig) -> String

    count_cards_by_type

    fn count_cards_by_type() -> String

    count_enemy_actions

    fn count_enemy_actions(replay : BattleReplay) -> Int

    count_player_cards

    fn count_player_cards(replay : BattleReplay) -> Int

    create_message

    fn create_message(sender_id : String, sender_name : String, content : String, turn : Int, is_emote : Bool) -> ChatMessage

    create_packet

    fn create_packet(packet_type : String, room_id : String, player_id : String, data : String, seq : Int) -> NetworkPacket

    create_room

    fn create_room(room_id : String, host_name : String, char_id : String) -> MultiplayerState

    create_team_config

    fn create_team_config(char_id : String, formation_type : FormationType, difficulty : Int, enemy_id : String) -> TeamConfig

    create_training

    fn create_training(archetype : String) -> TrainingSession

    database_summary

    fn database_summary() -> String

    deal_damage_to_enemy

    fn deal_damage_to_enemy(state : BattleState, raw_damage : Int, piercing : Bool) -> BattleState
    Card effect resolution engine

    deal_damage_to_player

    fn deal_damage_to_player(state : BattleState, damage : Int, piercing : Bool) -> BattleState

    deck_average_cost

    fn deck_average_cost(config : DeckConfig) -> Double

    deck_cost_distribution

    fn deck_cost_distribution(config : DeckConfig) -> String

    deck_statistics

    fn deck_statistics(config : DeckConfig) -> String

    deck_type_distribution

    fn deck_type_distribution(config : DeckConfig) -> String

    default_high_scores

    fn default_high_scores() -> Array[HighScore]

    defeat_text

    fn defeat_text(state : BattleState) -> String

    difficulty_from_id

    fn difficulty_from_id(id : Int) -> AIDifficulty

    difficulty_menu

    fn difficulty_menu() -> String

    draw_cards

    fn draw_cards(state : BattleState, count : Int) -> BattleState

    echo_guide

    fn echo_guide() -> ArchetypeGuide

    echo_remnant

    fn echo_remnant() -> Enemy

    更多敌人 - 扩展敌人图鉴

    echo_synergies

    fn echo_synergies() -> Array[Synergy]

    end_player_turn

    fn end_player_turn(state : BattleState) -> BattleState

    enemy_statistics

    fn enemy_statistics() -> String

    enemy_to_json

    fn enemy_to_json(enemy : Enemy) -> String

    evaluate_card

    fn evaluate_card(card : Card) -> CardEfficiency

    evaluate_deck

    fn evaluate_deck(cards : Array[Card]) -> Array[CardEfficiency]

    execute_enemy_turn

    fn execute_enemy_turn(state : BattleState) -> BattleState

    execute_enemy_turn_with_ai

    fn execute_enemy_turn_with_ai(state : BattleState, config : DifficultyConfig) -> BattleState

    execute_query

    fn execute_query(query : CardQuery) -> Array[Card]

    expansion_card_count

    fn expansion_card_count() -> Int

    expansion_cards

    fn expansion_cards() -> Array[Card]

    卡牌平衡分析与新卡牌补充 - 基于数值模型进行平衡调整

    export_deck

    fn export_deck(config : DeckConfig) -> String

    export_replay_json

    fn export_replay_json(replay : BattleReplay) -> String

    extra_enemies

    fn extra_enemies() -> Array[Enemy]

    find_card_by_id

    fn find_card_by_id(card_id : String) -> Card

    find_cards_by_name

    fn find_cards_by_name(name : String) -> Array[Card]

    find_synergies_for_card

    fn find_synergies_for_card(card_id : String) -> Array[Synergy]

    format_hand

    fn format_hand(state : BattleState) -> String

    formation_names

    fn formation_names() -> Array[String]

    fortress_guide

    fn fortress_guide() -> ArchetypeGuide

    fortress_synergies

    fn fortress_synergies() -> Array[Synergy]

    full_battle_report

    fn full_battle_report(state : BattleState) -> String

    game_mode_name

    fn game_mode_name(mode : GameMode) -> String

    game_statistics_summary

    fn game_statistics_summary() -> String

    generate_match_result

    fn generate_match_result(state : MultiplayerState) -> MatchResult

    get_ability_cards

    fn get_ability_cards() -> Array[Card]

    get_aoe_cards

    fn get_aoe_cards() -> Array[Card]

    get_attack_cards

    fn get_attack_cards() -> Array[Card]

    get_cards_by_cost

    fn get_cards_by_cost(cost : Int) -> Array[Card]

    get_character_by_id

    fn get_character_by_id(char_id : String) -> Character

    get_current_player

    fn get_current_player(state : MultiplayerState) -> MultiplayerSlot

    get_difficulty_config

    fn get_difficulty_config(diff : AIDifficulty) -> DifficultyConfig

    get_enemy_by_id

    fn get_enemy_by_id(id : String) -> Enemy

    get_fortress_cards

    fn get_fortress_cards() -> Array[Card]

    get_frame_at

    fn get_frame_at(replay : BattleReplay, index : Int) -> ReplayFrame

    get_hand

    fn get_hand(state : BattleState) -> Array[Card]

    get_highest_cost_card

    fn get_highest_cost_card() -> Card

    get_lowest_cost_card

    fn get_lowest_cost_card() -> Card

    get_most_armor_card

    fn get_most_armor_card() -> Card

    get_most_damage_card

    fn get_most_damage_card() -> Card

    get_opponents

    fn get_opponents(state : MultiplayerState) -> Array[MultiplayerSlot]

    get_overload_cards

    fn get_overload_cards() -> Array[Card]

    get_playable_cards

    fn get_playable_cards(state : BattleState) -> Array[Card]

    get_pollution_level

    fn get_pollution_level(pollution : Int) -> PollutionLevel

    get_relic_for_character

    fn get_relic_for_character(char_id : String) -> Relic

    get_skill_cards

    fn get_skill_cards() -> Array[Card]

    get_sonic_boom_multiplier

    fn get_sonic_boom_multiplier(formation : Formation) -> Double

    get_survival_summary

    fn get_survival_summary(state : SurvivalState) -> String

    get_training_tip

    fn get_training_tip(session : TrainingSession) -> String

    harmonic_construct

    fn harmonic_construct() -> Enemy

    harmonic_construct_strategy

    fn harmonic_construct_strategy() -> EnemyStrategy

    help_text

    fn help_text() -> String

    highest_rated_synergy

    fn highest_rated_synergy() -> Synergy

    howling_drifter

    fn howling_drifter() -> Enemy

    敌人数据

    howling_drifter_strategy

    fn howling_drifter_strategy() -> EnemyStrategy

    import_deck

    fn import_deck(data : String, name : String, character_id : String) -> DeckConfig

    increase_pollution

    fn increase_pollution(state : BattleState, amount : Int) -> BattleState

    init_battle

    fn init_battle(player_char : Character, enemy_data : Enemy) -> BattleState

    init_boss_rush

    fn init_boss_rush() -> (BattleState, BossRushState)

    init_enemy

    fn init_enemy(enemy_data : Enemy) -> EnemyState

    init_player

    fn init_player(character : Character) -> PlayerState

    init_player_achievements

    fn init_player_achievements() -> Array[PlayerAchievement]

    init_quick_battle

    fn init_quick_battle(config_id : Int, difficulty_id : Int) -> BattleState

    init_survival

    fn init_survival(char : Character) -> SurvivalState

    init_xian_yin_player

    fn init_xian_yin_player() -> PlayerState

    弦音(频率猎手)专属引擎 - 高频刺客流 & 回声幻影流

    initial_hand

    fn initial_hand() -> Array[Card]

    initial_pollution

    fn initial_pollution() -> Int

    intermission_heal

    fn intermission_heal(state : SurvivalState) -> SurvivalState

    is_pollution_max

    fn is_pollution_max(pollution : Int) -> Bool

    is_sonic_boom

    fn is_sonic_boom(d : Debuff) -> Bool

    is_survival_over

    fn is_survival_over(state : SurvivalState) -> Bool

    is_valid_json_summary

    fn is_valid_json_summary(json_str : String) -> Bool

    join_room

    fn join_room(state : MultiplayerState, name : String, char_id : String) -> MultiplayerState

    list_all_card_names

    fn list_all_card_names() -> Array[String]

    fn main_menu_text() -> String

    mark_replay_end

    fn mark_replay_end(replay : BattleReplay, result : String) -> BattleReplay

    mastery_achievements

    fn mastery_achievements() -> Array[Achievement]

    max_pollution

    fn max_pollution() -> Int

    merge_replays

    fn merge_replays(replay_a : BattleReplay, replay_b : BattleReplay) -> BattleReplay

    metrics_report

    fn metrics_report(metrics : BattleMetrics) -> String

    most_efficient_card

    fn most_efficient_card(cards : Array[Card]) -> String

    multiplayer_end_turn

    fn multiplayer_end_turn(state : MultiplayerState) -> MultiplayerState

    multiplayer_play_card

    fn multiplayer_play_card(state : MultiplayerState, card_idx : Int) -> MultiplayerState

    multiplayer_summary

    fn multiplayer_summary(state : MultiplayerState) -> String

    mutos

    fn mutos() -> Enemy

    mutos_strategy

    fn mutos_strategy() -> EnemyStrategy

    neutral_cards

    fn neutral_cards() -> Array[Card]

    new_deck

    fn new_deck(name : String, character_id : String) -> DeckConfig

    new_metrics

    fn new_metrics() -> BattleMetrics

    new_query

    fn new_query() -> CardQuery

    new_replay

    fn new_replay(character_id : String, enemy_id : String) -> BattleReplay

    new_simulation

    fn new_simulation() -> SimulationResult

    next_boss_rush

    fn next_boss_rush(current_index : Int, player_hp : Int) -> (BattleState, BossRushState)

    on_enemy_defeated

    fn on_enemy_defeated(state : SurvivalState) -> SurvivalState

    overload_guide

    fn overload_guide() -> ArchetypeGuide

    overload_synergies

    fn overload_synergies() -> Array[Synergy]

    overload_tuning_fork

    fn overload_tuning_fork() -> Relic

    parse_quick_battle

    fn parse_quick_battle(config_id : Int) -> (String, String)

    phalanx

    fn phalanx() -> Formation

    phase_is_defeat

    fn phase_is_defeat(state : BattleState) -> Bool

    phase_is_enemy_turn

    fn phase_is_enemy_turn(state : BattleState) -> Bool

    phase_is_player_turn

    fn phase_is_player_turn(state : BattleState) -> Bool

    phase_is_victory

    fn phase_is_victory(state : BattleState) -> Bool

    play_card

    fn play_card(state : BattleState, card_index : Int) -> BattleState

    player_ready

    fn player_ready(state : MultiplayerState, player_id : String) -> MultiplayerState

    pollution_guides

    fn pollution_guides() -> Array[PollutionGuide]

    pollution_levels

    fn pollution_levels() -> Array[PollutionLevel]

    污染度系统 - 5个等级

    preset_emotes

    fn preset_emotes() -> Array[String]

    query_by_archetype

    fn query_by_archetype(query : CardQuery, archetype : String) -> CardQuery

    query_by_cost

    fn query_by_cost(query : CardQuery, min : Int, max : Int) -> CardQuery

    query_by_keyword

    fn query_by_keyword(query : CardQuery, keyword : String) -> CardQuery

    query_by_target

    fn query_by_target(query : CardQuery, target : String) -> CardQuery

    query_by_type

    fn query_by_type(query : CardQuery, card_type : String) -> CardQuery

    quick_battle_configs

    fn quick_battle_configs() -> Array[String]

    quick_start_guide

    fn quick_start_guide() -> String

    recommend_cards_for_archetype

    fn recommend_cards_for_archetype(archetype : String) -> Array[String]

    recommend_deck

    fn recommend_deck(character_id : String, archetype : String) -> DeckConfig

    recommend_formation

    fn recommend_formation(pollution : Int) -> Formation

    record_card_play

    fn record_card_play(metrics : BattleMetrics, card : Card) -> BattleMetrics

    record_defeat

    fn record_defeat(metrics : BattleMetrics) -> BattleMetrics

    record_enemy_frame

    fn record_enemy_frame(replay : BattleReplay, state : BattleState, action_name : String) -> BattleReplay

    record_frame

    fn record_frame(replay : BattleReplay, state : BattleState, action_type : String, card_id : String, card_name : String) -> BattleReplay

    record_training_attempt

    fn record_training_attempt(session : TrainingSession) -> TrainingSession

    record_turn

    fn record_turn(metrics : BattleMetrics, state : BattleState) -> BattleMetrics

    record_victory

    fn record_victory(metrics : BattleMetrics) -> BattleMetrics

    remove_card_from_deck

    fn remove_card_from_deck(config : DeckConfig, index : Int) -> DeckConfig

    rename_deck

    fn rename_deck(config : DeckConfig, new_name : String) -> DeckConfig

    replay_frame_count

    fn replay_frame_count(replay : BattleReplay) -> Int

    replay_summary

    fn replay_summary(replay : BattleReplay) -> String

    replay_timeline

    fn replay_timeline(replay : BattleReplay) -> Array[String]

    resolve_deck_cards

    fn resolve_deck_cards(config : DeckConfig) -> Array[Card]

    resonance_core

    fn resonance_core() -> Relic

    resonance_crystal

    fn resonance_crystal() -> Enemy

    resonant

    fn resonant() -> Formation

    roll_dice_with_difficulty

    fn roll_dice_with_difficulty(config : DifficultyConfig) -> Int

    run_single_simulation

    fn run_single_simulation(char_id : String, enemy_id : String) -> (BattleState, Int)

    scale_battle_for_difficulty

    fn scale_battle_for_difficulty(battle : BattleState, config : DifficultyConfig) -> BattleState

    scale_enemy_for_difficulty

    fn scale_enemy_for_difficulty(enemy : Enemy, config : DifficultyConfig) -> Enemy

    search_cards

    fn search_cards(search_term : String) -> Array[Card]

    search_frames_by_type

    fn search_frames_by_type(replay : BattleReplay, action_type : String) -> Array[Int]

    secret_achievements

    fn secret_achievements() -> Array[Achievement]

    settle_echo_mark

    fn settle_echo_mark(state : BattleState) -> BattleState

    settle_sonic_boom

    fn settle_sonic_boom(state : BattleState) -> BattleState

    shuffle_deck

    fn shuffle_deck(state : BattleState) -> BattleState

    silent_mimic

    fn silent_mimic() -> Enemy

    silent_mimic_strategy

    fn silent_mimic_strategy() -> EnemyStrategy

    simulate_all_enemies

    fn simulate_all_enemies(n : Int, char_id : String) -> Array[SimulationResult]

    simulate_n_battles

    fn simulate_n_battles(n : Int, char_id : String, enemy_id : String) -> SimulationResult

    simulation_report

    fn simulation_report(result : SimulationResult) -> String

    snapped_string

    fn snapped_string() -> Relic

    spawn_next_wave

    fn spawn_next_wave(state : SurvivalState) -> SurvivalState

    start_game

    fn start_game(state : MultiplayerState) -> MultiplayerState

    start_new_turn

    fn start_new_turn(state : BattleState) -> BattleState

    start_team_battle

    fn start_team_battle(config : TeamConfig) -> BattleState

    suggest_opening_hand

    fn suggest_opening_hand(cards : Array[Card]) -> Array[Int]

    surrender_player

    fn surrender_player(state : MultiplayerState, player_id : String) -> MultiplayerState

    synergy_count_by_type

    fn synergy_count_by_type(syn_type : SynergyType) -> Int

    team_config_summary

    fn team_config_summary(config : TeamConfig) -> String

    top_synergies

    fn top_synergies() -> Array[Synergy]

    total_achievement_count

    fn total_achievement_count() -> Int

    total_achievement_points

    fn total_achievement_points() -> Int

    total_card_count

    fn total_card_count() -> Int

    total_enemy_count

    fn total_enemy_count() -> Int

    total_synergy_count

    fn total_synergy_count() -> Int

    unique_card_names

    fn unique_card_names() -> Array[String]

    unlocked_count

    fn unlocked_count(achievements : Array[PlayerAchievement]) -> Int

    update_high_scores

    fn update_high_scores(scores : Array[HighScore], new_score : HighScore) -> Array[HighScore]

    updated_total_card_count

    fn updated_total_card_count() -> Int

    validate_deck

    fn validate_deck(config : DeckConfig) -> String

    validate_replay

    fn validate_replay(replay : BattleReplay) -> Bool

    vanguard

    fn vanguard() -> Formation

    version_info

    fn version_info() -> String

    victory_text

    fn victory_text(state : BattleState) -> String

    xian_yin

    fn xian_yin() -> Character

    xian_yin_cards

    fn xian_yin_cards() -> Array[Card]

    弦音(频率猎手)专属牌库 - 高频刺客 & 回声幻影流

    zhong_lv

    fn zhong_lv() -> Character

    角色数据

    zhong_lv_cards

    fn zhong_lv_cards() -> Array[Card]

    钟律牌库 - 26张卡牌