The tuner rule: Imperm the raise, not Medius
If you hold Imperm against the Portal opener, you spend it on the Level 1 Power Patron’s level-raise β not Medius.
Source: DragonFly Studios Elfnote cheat sheets Β· Updated Oct 17, 2026.
Enter the Lair. Leave a legend.
DrunkenDraco’s solo practice table, flown under the DragonFly Studios banner. No accounts, no sign-ups β nothing you enter here is collected or sent anywhere.
What a dragon guards: the titles Tanks & Trainwrecks dragged home, the decks enshrined as brood treasures, and the narrated duels that built the legend β all of it DrunkenDraco’s own gold.
The EARTH Machine Rank-10 list that took Tournament 1 at 6β0: Gustav Max into Juggernaut Liebe, Super Dora on the go-first, and a wall of trains behind them. Enshrined exactly as validated.
Timelord inevitability riding the EARTH Machine rails β the hybrid that posted an 83.5% row across 40,000 Matrix duels. Two broods, one engine room.
The Time-Tearing Morganite brew: lock the opponent out of playing and let the Timelords halve the game away. The Lair’s favorite way to make somebody think hard.
The Ebon Sun build, enshrined with its guide β a brood treasure from the Lair’s own testing shelf.
Eight narrated duel tapes, cut two ways: TikTok vertical and YouTube landscape. Find them on the DragonFly Studios channels β has the handles.
The Lair’s duelist flies under the DragonFly Studios banner. Find him where the streams run and where the narrated duels live β handles only, no sign-up walls: search the names below on your platform of choice.
The dragonfly is hard to miss.
Your device always shows your own side at the bottom and only your opponent's hand count. The duel itself is always a direct browser-to-browser connection β the only question is how your browsers find each other:
Create a room and share ONE thing: the short room code, or the join link. Your opponent just joins β a public relay introduces your browsers and the connection sets itself up. Nothing is copied back to you.
Opponent on a phone? They can scan the join link instead.
Keep this tab open β the room lives here while you wait. The relay only introduces your browsers; after that the duel runs directly between them, same as the code swap below.
You are Player 2. Type the room code the host sent you β or open their join link and the code lands here by itself.
Rooms already route through a free public relay when your routers refuse a direct path β that covers most pairs, including two devices on the same Wi-Fi whose router isolates them from each other. If a pair still drops at Connect, a private TURN relay is the reliable answer. Paste credentials below and rooms on this device will use them; they are stored only in this browser, never sent anywhere except to the relay itself when you connect.
Free option: make a free Cloudflare account, open Calls β TURN, create a TURN key, and paste its Token ID and API Token here β the page mints short-lived credentials from them each time you connect. Or paste any static TURN server (URL, username, credential) from another provider.
Best-effort, for friendly router pairs: you and your opponent swap two codes (invite, then reply) through any chat app, and your browsers then talk directly. Codes are only produced once network routes finish gathering, so they always carry the full route set β but if both routers block direct paths (the classic drop right at Connect), no code can fix that; use a room above instead.
You are Player 1 and take the first turn.
Opponent on a phone? They can scan the invite code instead of pasting it.
You are Player 2. Your opponent hosts and sends you an invite code.
14,759-card offline library: official card text is bundled; token and reference entries without standalone printed text are classified. Imported decks stay in this session only.
The Project Ignis duel core (EDOPro's engine, AGPLv3-or-later, via ocgcore-wasm 0.1.4) runs this duel β not the manual table. The engine owns turns, phases, chains, summons, battle and Life Points; card effects resolve from their real CardScripts scripts (AGPLv3-or-later). Pick any two decks: the 36 preloads, or a deck you brought in with βImport .ydkβ on the manual table. Scripts for the original 16 preloads ship with the page; scripts for the 20 community preloads β and any other card β load on demand from the full CardScripts corpus pack β chunked by passcode, and only the chunks your two decks actually need are ever downloaded. Hotseat on this device. Banlist enforcement is off. Field rendering: the classic DOM field.
Open source — AGPLv3: this duel runs the Project Ignis core / ocgcore-wasm and the ProjectIgnis/CardScripts corpus, licensed under the GNU AGPLv3-or-later. — every component, its license, its upstream origin, and downloads of the exact bytes this page serves.
Start the duel to receive the first engine prompt.
Fixed boards, your move, one turn to win with only the cards given. There is no timer and no opponent tricks β the other seat plays a quiet dummy turn if you pass, and the puzzle is lost. The rules engine itself is the judge: if the line works, the duel ends.
Every puzzle below can be copied as a small text block and pasted into any chat. Anyone can import the block here and play the identical board.
Learn the Table
Six short lessons, each on a real board with the real engine running it. Every lesson asks its question the way the table will ask it in a live duel β in the second person, at the moment it matters. Stuck on a step? Every step has a βShow me a lineβ hint.
Per-matchup lessons in our own words, from our own testing β the cheat sheets, the analyzed tapes, and the sim batches behind the Duelist Cup climb. Every lesson ends with a check-yourself question asked the way the table asks it: in the second person, at the moment it matters. Tap any card chip to read the full card. Nothing here is locked β it’s the community’s table.
Hand Simulator
Test opening hands from any deck: deal 5 or 6, redraw, and run 10,000 simulated hands against your chosen starters.
The World Championship is a TEAM event — teams of three. Here’s how qualifying works, straight from the official event info. DrunkenDraco’s road runs with a team of three.
The road to Worlds runs in threes. If you’re grinding the Duelist Cup, find your two teammates, climb together, and stack your Season Points as a team.
Dates and rules from the official in-game Duelist Cup Event Info, October 2026.
News & Resources
Links open the source sites in a new tab.
October 16β18 Β· Reliant Center, Houston, TX Β· Official coverage from Konami's Yu-Gi-Oh! blog. The Lair is watching the floor β follow along.
Feature MatchGenesys Round 1 Feature Match: Huffman vs. SanchezPatrick Riley Huffman (Phantom Knights) defeated Salina Sanchez (Regenesis Mekk-Knights) 2β0. Sanchez tributed Huffman's entire board with Lava Golem and Kumongous β he answered with Dark Requiem Xyz Dragon, an Evilswarm Ophion lock, and Destroyer Phoenix Enforcer. In Duel 2 he let her Lightning Storm wipe his own field on purpose: an empty board means Mekk-Knights can't Special Summon.Response prompts suggest cards by type only β the table never judges whether a play is allowed. Prompts in Duel Online appear only on your own device.
The Engine Duel in this page is built on free software licensed under the GNU Affero General Public License, version 3 or later (AGPLv3-or-later): the Project Ignis duel core (ocgcore) and the ProjectIgnis/CardScripts corpus. This project’s own integration code — the engine worker and the engine UI module in this page — is offered under AGPLv3-or-later alongside them. Under the AGPL, the complete Corresponding Source for this build is available at the downloads in the table below, hosted on this page itself. A public GitHub mirror of the source is planned but not yet live; until it is, this panel is the source home: every byte this site serves for the engine is downloadable from the links here.
| Component | Role | License | Upstream origin | Download (hosted here) |
|---|---|---|---|---|
| Componentocgcore game core — compiled WebAssembly + JS glue | RoleThe duel rules engine that adjudicates Engine Duels: turns, phases, chains, summons, battle and Life Points. | LicenseAGPLv3-or-later | Upstream originedo9300/ygopro-core (the Project Ignis / EDOPro core), compiled via ocgcore-wasm 0.1.4 by n1xx1 (npm package · GitHub) | Download (hosted here)index.js (45,918 B) ocgcore.sync-MMMSWPBB.js (21,128 B) ocgcore.sync.wasm (934,999 B) chunk-L5TW24SS.js (608 B) chunk-6GYI7QPM.js (85 B) The .wasm is a compiled build artifact of the upstream core; its Corresponding Source is the upstream core repository linked in this row. This site serves the binary and its glue — it does not host a rewritten core source. |
| ComponentCardScripts corpus pack — 187 gzipped JSON chunks | RoleLua effect scripts for 22,554 cards beyond the preload subset. The page downloads only the chunks a selected deck actually needs, by passcode. | LicenseAGPLv3-or-later | Upstream originProjectIgnis/CardScripts @ commit 3b3a66f | Download (hosted here)pack-manifest.json.gz (76,722 B) pack-0000.json.gz (53,670 B, first chunk) Every chunk is downloadable from this site under assets/corpus/ (pack-0000.json.gz through pack-0186.json.gz); the manifest enumerates all 187 chunks and the passcodes each one contains. |
| ComponentPreload script subset | RoleThe CardScripts for the original 16 preloaded decks (257 scripts), bundled with the page. The 20 community preloads’ scripts are not in this subset β they load on demand from the corpus pack. | LicenseAGPLv3-or-later | Upstream originProjectIgnis/CardScripts @ commit 3b3a66f (same pin as the corpus pack) | Download (hosted here)engine-scripts.json.gz (231,015 B) |
| ComponentCard metadata index | RoleCard names, levels, ATK/DEF and type data the engine UI uses to label cards in prompts and on the field. | LicenseAGPLv3-or-later (this project’s compilation, offered as part of this build) | Upstream originCompiled by this project from the card database bundled with this page. | Download (hosted here)engine-cardmeta.json.gz (55,836 B) |
| ComponentCard database β light index | RolePasscode → name, type, level/rank/link, ATK/DEF, race, attribute, Pendulum scales, link markers and material count for all 14,759 cards. This is the only card data loaded at startup; the effect text is deliberately NOT in this file (see the detail chunks below). | LicenseAGPLv3-or-later (this project’s compilation, offered as part of this build) | Upstream originCompiled by this project from the local cards.cdb snapshot plus the YGOPRODeck cardinfo API desc field β the same compilation that previously shipped as the single file card-db.js. | Download (hosted here)card-index.js (979,426 B) |
| ComponentCard text β detail chunks (27 gzipped JSON chunks + manifest) | RoleThe full effect text (desc) for all 14,759 cards, split into gzipped JSON chunks grouped by passcode range β the same on-demand pattern as the CardScripts corpus pack. The page fetches only the chunk a viewed or played card lives in, verifies its SHA-256 against the manifest, and merges the text into the index rows. The union of the light index and these chunks reproduces the former card-db.js exactly. | LicenseAGPLv3-or-later (this project’s compilation, offered as part of this build) | Upstream originCompiled by this project (same snapshot as the light index above); the small loader that fetches and merges the chunks is this project’s code: card-details.js. | Download (hosted here)manifest.json.gz (57,651 B) detail-0000.json.gz (first chunk) Every chunk is downloadable from this site under assets/card-details/ (detail-0000.json.gz through detail-0026.json.gz, 1,046,802 B gz in total); the manifest enumerates all 27 chunks, the passcodes each one contains, and each chunk’s SHA-256. No card-data file is omitted from this offer: the index, the loader, the manifest and all 27 chunks are served at the paths above. |
| ComponentEngine worker — this project’s integration code | RoleHosts the core in a Web Worker; speaks the page-to-engine protocol and feeds decks and scripts to the core. | LicenseAGPLv3-or-later | Upstream originThis project (The Dragonfly Lair). | Download (hosted here)engine-worker.js (24,458 B) |
| ComponentThis page — full source (incl. the engine UI module) | RoleThe whole table: the manual table, online duels, and the engine prompt UI that renders the core’s decisions. | LicenseAGPLv3-or-later for this project’s code; the page also serves the third-party components above under their own licenses. | Upstream originThis project (The Dragonfly Lair). | Download (hosted here)index-source.html (byte copy of this page’s source file as shipped in this build) The page is also served unminified, so viewing this document’s own source shows the same code. |
| ComponentTypography — Rajdhani & Inter web fonts | RoleSelf-hosted display and body type for this page. Rajdhani carries headings, navigation and micro-labels; Inter carries reading text. The page makes no external font requests. | LicenseSIL Open Font License 1.1 (OFL-1.1) for both families | Upstream originRajdhani by Indian Type Foundry. Inter by The Inter Project Authors (github.com/rsms/inter). | Download (hosted here)Rajdhani 500 (15,084 B) Rajdhani 600 (15,732 B) Rajdhani 700 (15,688 B) Rajdhani Latin Ext 500 (12,380 B) Rajdhani Latin Ext 600 (13,124 B) Rajdhani Latin Ext 700 (12,964 B) Inter variable (48,256 B) Inter Latin Ext variable (85,068 B) OFL-Rajdhani.txt (4,727 B) OFL-Inter.txt (4,477 B) |
| ComponentLicense text — GNU AGPLv3 | RoleThe full license covering the engine core, the card scripts, and this project’s engine integration code. | LicenseGNU AGPLv3 | Upstream origingnu.org/licenses/agpl-3.0; the text ships inside the corpus pack. | Download (hosted here)COPYING.txt (34,523 B) |
Font credits: Rajdhani © Indian Type Foundry and Inter © The Inter Project Authors are self-hosted by this page under the SIL Open Font License 1.1 — Rajdhani OFL · Inter OFL.