Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

The Card-Script Language

Every card in DeepScry is defined by a small text file in cardsfolder/, using a key-value scripting language: Name:, ManaCost:, Types:, keyword lines (K:), ability lines (A:, T:, S:), script variables (SVar:), and so on.

Important — this language is not ours to define. The card-script DSL is owned by the upstream Java Forge project, which is the source of truth for its syntax and semantics. The cardsfolder/ data itself comes from Forge. DeepScry consumes and reproduces this format so it can play the same cards; it does not get to invent or change the language. The reference in this guide documents the format for reading and parsing, not as a specification we control.

Because the format is structured, DeepScry parses it with proper tokenisation — splitting on the | and $ delimiters and querying the resulting fields — never with ad-hoc substring matching. (Substring checks on structured data are explicitly banned in the project conventions: contains("add") would match “Madden”, contains("Damage") would match “PreventDamage”, and so on.) The parsing infrastructure lives in the engine’s ability-parser modules; see ai_docs/reference/ability_parsing_comparison.md for the rationale.

The next page is the card-script specification itself, included from the project’s reference document.

Scope note. The specification that follows describes the fields and ability shapes DeepScry recognises. Where DeepScry’s coverage of a particular keyword or ability is incomplete relative to upstream Forge, that is tracked in the project’s card-compatibility issues, not in this language reference — the language is upstream’s; the coverage is DeepScry’s ongoing work.