{
 "_doc": "Asura Rider / ขี่อสูร (art agent 2026-10-01; wired in by the UI agent 2026-10-01: server/asura.gd, ui/asura_ui.gd, ui/asura_hud.gd). Timed ride on a huge beast (~2x a hero): class skills become Mega versions while riding. Names of the system live only in `system` below. Each asura: base model (a Tripo model we own), look = scripts/asura_view.gd (fierce asura material + boss_fx.gd aura in the element colour, wings only for flyers = the model's own wings, others a ground trail). `height` = model height in metres (hero = 1.75). `seat` = rider seat on the scaled model (from the mount's measured saddle x scale; re-measure when wiring). Stats / nodes are placeholders for the balance pass (docs/research/DRACONIA_WAR_DRAGON.md).",
 "system": {"name": "Asura Rider", "name_th": "ขี่อสูร", "short": "Asura", "short_th": "ขี่อสูร", "ticket": "asura_ticket", "ticket_name": "Asura Ticket", "ticket_name_th": "ตั๋วอสูร"},
 "rarities": {"R": {"ride_s": 30, "mega": 1.25}, "SR": {"ride_s": 36, "mega": 1.35}, "SSR": {"ride_s": 42, "mega": 1.45}},
 "nodes": ["atk", "crit_dmg", "mdef", "max_hp", "stat", "crit_rate"],
 "rules": {"_doc": "Asura Rider rules (UI agent 2026-10-01, server/asura.gd). ride_cd s between rides; speed = move speed bonus while riding (the highest of mount / awaken / asura counts); nodes: 6 per asura, 0..node_max, effect per level in node_fx, cost per level L->L+1 = essence (base + per x L) + zeny x (L+1); rates % by rarity with pity (sr_pity: every Nth pull is SR+, ssr_pity: hard SSR); duplicates -> essence (dup_essence); own = permanent collection stats per owned asura by rarity (small, % based: a Lv 1 hero is not doubled); grant = once per character (starter asura + tickets); tickets also from daily login, bosses, mini-bosses (%); a beast skill 'start' fires when the ride begins, 'pulse' every pulse_s while riding. Balance pass later (placeholders).", "ride_cd": 120, "speed": 0.35, "node_max": 10, "pulse_s": 8.0, "node_fx": {"atk": {"dmg_pct": 2.0}, "crit_dmg": {"crit_dmg_pct": 4.0}, "mdef": {"mdef": 2}, "max_hp": {"max_hp_rate": 2}, "stat": {"all": 1}, "crit_rate": {"crit": 1}}, "node_cost": {"essence": 2, "essence_per": 2, "zeny": 2000}, "rates": {"SSR": 3.0, "SR": 17.0, "R": 80.0}, "sr_pity": 10, "ssr_pity": 60, "dup_essence": {"R": 5, "SR": 15, "SSR": 40}, "own": {"R": {"max_hp_rate": 1}, "SR": {"max_hp_rate": 2, "crit": 1}, "SSR": {"max_hp_rate": 3, "crit": 2}}, "grant": {"v": 1, "asura": "prism_asura", "tickets": 10}, "daily_tickets": 1, "boss_tickets": 2, "mini_ticket_pct": 25, "colors": {"R": "#58b0ff", "SR": "#b05cff", "SSR": "#ffb02e"}, "node_names": {"atk": ["Fury", "โทสะ"], "crit_dmg": ["Rend", "ฉีกทึ้ง"], "mdef": ["Ward", "ปราการ"], "max_hp": ["Vigor", "พลังชีวิต"], "stat": ["Might", "พลังอสูร"], "crit_rate": ["Keen Eye", "ตาเหยี่ยว"]}},
 "skills": {"_doc": "Beast skills: pct of the rider's best attack (ATK or MATK) x the rarity mega, to every monster within r m; when = start (as the ride begins) / pulse (every rules.pulse_s). opener = the beast's unique big AoE opener (fx kind in asura_ride.gd OPENERS: frost_nova / storm_strikes / gold_meteor / solar_roar / spirit_spiral / crystal_ring; camera shake + hit-stop). Each beast has a body (dragon / feline / fox / deer) for its anatomy attack moves (asura_motion.gd MOVES).", "glacier_breath": {"name": "Glacier Breath", "name_th": "ลมหายใจธารน้ำแข็ง", "when": "start", "pct": 760, "r": 9.0, "opener": true, "fx": "frost_nova"}, "rime_wings": {"name": "Rime Wings", "name_th": "ปีกน้ำค้างแข็ง", "when": "pulse", "pct": 220, "r": 4.5}, "thunder_dive": {"name": "Thunder Dive", "name_th": "ดิ่งอัสนี", "when": "start", "pct": 780, "r": 9.0, "opener": true, "fx": "storm_strikes"}, "storm_roar": {"name": "Storm Roar", "name_th": "คำรามพายุ", "when": "pulse", "pct": 230, "r": 4.5}, "quake_stomp": {"name": "Quake Stomp", "name_th": "กระทืบธรณี", "when": "start", "pct": 700, "r": 8.5, "opener": true, "fx": "gold_meteor"}, "gold_scale_guard": {"name": "Gold-Scale Guard", "name_th": "เกราะเกล็ดทอง", "when": "pulse", "pct": 180, "r": 4.0}, "sunfire_pounce": {"name": "Sunfire Pounce", "name_th": "ตะปบเพลิงสุริยะ", "when": "start", "pct": 800, "r": 8.5, "opener": true, "fx": "solar_roar"}, "blazing_roar": {"name": "Blazing Roar", "name_th": "คำรามเปลวเพลิง", "when": "pulse", "pct": 240, "r": 4.5}, "spirit_flame_tails": {"name": "Spirit-Flame Tails", "name_th": "หางเพลิงวิญญาณ", "when": "start", "pct": 700, "r": 8.5, "opener": true, "fx": "spirit_spiral"}, "phantom_dash": {"name": "Phantom Dash", "name_th": "พุ่งภูตพราย", "when": "pulse", "pct": 190, "r": 4.0}, "prism_charge": {"name": "Prism Charge", "name_th": "พุ่งชนปริซึม", "when": "start", "pct": 600, "r": 8.0, "opener": true, "fx": "crystal_ring"}, "shard_nova": {"name": "Shard Nova", "name_th": "ผลึกระเบิด", "when": "pulse", "pct": 160, "r": 4.0}},
 "asura": {
  "glacier_asura": {
   "body": "dragon",
   "name": "Rimefang, Glacier Asura", "name_th": "ริมแฟง อสูรธารน้ำแข็ง", "rarity": "SSR", "kind": "dragon", "element": "water", "flyer": true,
   "model": "mount_ice_wyrm", "mount": "frostcrystal_wyrm", "height": 3.36, "seat": [0.0, 1.715, 0.14],
   "look": {"color": "#5fc8ff", "color_hi": "#e6fbff", "rim": "#9fe4ff", "shade": "#2a3f7a", "trail": "frost"},
   "rider": [0.0, 0.56, -0.105], "skills": ["glacier_breath", "rime_wings"]
  },
  "tempest_asura": {
   "body": "dragon",
   "name": "Voltmaw, Tempest Asura", "name_th": "โวลต์มอว์ อสูรพายุ", "rarity": "SSR", "kind": "dragon", "element": "wind", "flyer": true,
   "model": "mount_storm_wyrm", "mount": "stormvoid_wyrm", "height": 3.36, "seat": [0.0, 1.715, 0.14],
   "look": {"color": "#7a7cff", "color_hi": "#e8f0ff", "rim": "#8fd8ff", "shade": "#241c5a", "trail": "storm"},
   "rider": [0.0, 0.56, -0.105], "skills": ["thunder_dive", "storm_roar"]
  },
  "gilded_asura": {
   "body": "dragon",
   "name": "Aurumscale, Gilded Asura", "name_th": "ออรัมสเกล อสูรเกล็ดทอง", "rarity": "SR", "kind": "dragon", "element": "earth", "flyer": true,
   "model": "mount_golden_dragon", "mount": "golden_dragon", "height": 3.22, "seat": [0.0, 1.645, 0.315],
   "look": {"color": "#ffb23a", "color_hi": "#fff0c0", "rim": "#ffd27a", "shade": "#5a2e12", "trail": "ember"},
   "portrait": [0.64, 0.16, 1.65], "rider": [0.0, 0.315, -0.245], "skills": ["quake_stomp", "gold_scale_guard"]
  },
  "sunmane_asura": {
   "body": "feline",
   "name": "Pyrelion, Sun-Mane Asura", "name_th": "ไพรีไลออน อสูรสิงห์สุริยะ", "rarity": "SSR", "kind": "lion", "element": "fire", "flyer": false,
   "model": "mount_lion", "mount": "aurelion", "height": 2.94, "seat": [0.0, 1.61, -0.07],
   "look": {"color": "#ff6a2a", "color_hi": "#ffe2a0", "rim": "#ffb060", "shade": "#5a1a10", "trail": "ember"},
   "portrait": [0.6, 0.12, 1.75], "rider": [0.0, 0.105, -0.07], "skills": ["sunfire_pounce", "blazing_roar"]
  },
  "wraithfox_asura": {
   "body": "fox",
   "name": "Nightveil, Wraith-Fox Asura", "name_th": "ไนต์เวล อสูรจิ้งจอกวิญญาณ", "rarity": "SR", "kind": "fox_spirit", "element": "ghost", "flyer": false,
   "model": "mount_cloud_fox", "mount": "cirrus_fox", "height": 2.94, "seat": [0.0, 1.47, -0.028],
   "look": {"color": "#b06cff", "color_hi": "#f2dcff", "rim": "#d6a8ff", "shade": "#2c1648", "trail": "void"},
   "rider": [0.0, 0.56, 0.245], "skills": ["spirit_flame_tails", "phantom_dash"]
  },
  "prism_asura": {
   "body": "deer",
   "name": "Shardhorn, Prism Asura", "name_th": "ชาร์ดฮอร์น อสูรเขาผลึก", "rarity": "R", "kind": "stag", "element": "holy", "flyer": false,
   "model": "mount_crystal_deer", "mount": "prismhorn_deer", "height": 3.22, "seat": [0.0, 1.61, 0.0],
   "look": {"color": "#ff7ad8", "color_hi": "#fff0fb", "rim": "#ffc0ee", "shade": "#4a1a4a", "trail": "crystal"},
   "portrait": [0.78, 0.3, 1.0], "rider": [0.0, 0.105, -0.07], "skills": ["prism_charge", "shard_nova"]
  }
 },
 "_next": "More beast kinds need new models (wolf, tiger, griffin, bear, serpent): Tripo after owner approval. mon_forest_wolf / mon_desert_fox_wolf are free-credit models (release blocker) - not used here."
}
