From ffb700545fac3001d7b632ba06fb2bfbc558a889 Mon Sep 17 00:00:00 2001 From: Branden J Brown Date: Sun, 19 Jul 2026 22:29:15 -0400 Subject: [PATCH] zenno/doc/tagged-skills: new page --- zenno/src/lib/Skill.svelte | 1 + zenno/src/lib/all.ts | 5 + zenno/src/lib/data/skill.ts | 56 ++++++++++ .../src/routes/doc/tagged-skills/+page.svelte | 102 ++++++++++++++++++ 4 files changed, 164 insertions(+) create mode 100644 zenno/src/routes/doc/tagged-skills/+page.svelte diff --git a/zenno/src/lib/Skill.svelte b/zenno/src/lib/Skill.svelte index d79a534..9481b03 100644 --- a/zenno/src/lib/Skill.svelte +++ b/zenno/src/lib/Skill.svelte @@ -24,6 +24,7 @@ group_rate: 1, wit_check: false, activations: [], + tags: [], icon_id: 0, }; diff --git a/zenno/src/lib/all.ts b/zenno/src/lib/all.ts index 15ee0e1..ceb71a9 100644 --- a/zenno/src/lib/all.ts +++ b/zenno/src/lib/all.ts @@ -79,6 +79,11 @@ export const PAGES = { name: 'Spark Explorer', description: 'View all possible inheritance effects of any spark.', }, + { + route: resolve('/doc/tagged-skills'), + name: 'Tagged Skills Explorer', + description: 'View skills matching the tags internal to the game.', + }, ] satisfies Page[], } as const; diff --git a/zenno/src/lib/data/skill.ts b/zenno/src/lib/data/skill.ts index 18db074..7280598 100644 --- a/zenno/src/lib/data/skill.ts +++ b/zenno/src/lib/data/skill.ts @@ -48,6 +48,10 @@ export interface Skill { * SP cost to purchase the skill, if applicable. */ sp_cost?: number; + /** + * Numeric tags applied to the skill, for effects which select skill types. + */ + tags: number[]; /** * Skill icon ID. */ @@ -329,3 +333,55 @@ export async function skillGroups(): Promise { const resp = await fetch('/api/global/skill-group'); return resp.json(); } + +export const TAGS = [ + { name: 'Front Runner', tag: 101 }, + { name: 'Pace Chaser', tag: 102 }, + { name: 'Late Surger', tag: 103 }, + { name: 'End Closer', tag: 104 }, + { name: 'Sprint', tag: 201 }, + { name: 'Mile', tag: 202 }, + { name: 'Medium', tag: 203 }, + { name: 'Long', tag: 204 }, + { name: 'Early Race', tag: 301 }, + { name: 'Mid Race', tag: 302 }, + { name: 'Late Race', tag: 303 }, + { name: 'Speed Stat or Velocity', tag: 401 }, + { name: 'Stamina Stat or HP', tag: 402 }, + { name: 'Power Stat or Acceleration', tag: 403 }, + { name: 'Guts Stat', tag: 404 }, + { name: 'Wit Stat or Vision', tag: 405 }, + { name: 'Debuff', tag: 406 }, + { name: 'Gate Delay', tag: 407 }, + { name: 'Turf', tag: 501 }, + { name: 'Dirt', tag: 502 }, + { name: 'Ground Condition Passive', tag: 601 }, + { name: 'Weather Passive', tag: 602 }, + { name: 'Season Passive', tag: 603 }, + { name: 'Racecourse Passive', tag: 604 }, + { name: 'Time of Day Passive', tag: 605 }, + { name: 'Exchange Race Passive', tag: 606 }, + { name: 'Distance Passive', tag: 607 }, + { name: 'Corner-Based Passive', tag: 608 }, + { name: 'Gate Position Passive', tag: 609 }, + { name: 'Ground Type Passive', tag: 610 }, + { name: 'Popularity Passive', tag: 611 }, + { name: 'Running Style Passive', tag: 612 }, + { name: "Passive Depending on Other Horses' Styles or Skills", tag: 613 }, + { name: 'Base Stat Threshold Passive', tag: 614 }, + { name: 'Mood Passive', tag: 615 }, + { name: 'URA', tag: 801 }, + { name: 'Unity Cup', tag: 802 }, + { name: 'Trackblazer', tag: 804 }, + // { name: 'Our Grand Concert', tag: ? }, + // { name: 'Grand Masters', tag: ? }, + // { name: "Project L'Arc", tag: ? }, + // { name: 'U.A.F.', tag: ? }, + // { name: 'Great Food Festival', tag: ? }, + // { name: 'Run, Mecha Umamusume!', tag: ? }, + // { name: 'The Twinkle Legends', tag: ? }, + // { name: 'Design Your Island', tag: ? }, + // { name: 'Yukoma Hot Springs', tag: ? }, + // { name: 'Beyond Dreams', tag: ? }, + // { name: 'Tracen-Ken', tag: ? }, +] as const; diff --git a/zenno/src/routes/doc/tagged-skills/+page.svelte b/zenno/src/routes/doc/tagged-skills/+page.svelte new file mode 100644 index 0000000..d743326 --- /dev/null +++ b/zenno/src/routes/doc/tagged-skills/+page.svelte @@ -0,0 +1,102 @@ + + +

Tagged Skills Explorer

+
+
+
+ + +
+
+ + +
+
+ {#each tagTypes as { name, includes } (name)} +
+ + {name} + +
+
+ {#each includes as t (t.tag)} +
+ + +
+ {/each} +
+ {/each} +
+ +{skills.length} skills selected +
+ {#each skills as s (s.skill_id)} +
+ {s.name} + {s.description} +
+ {/each} +
+ +
+
    +
  • + To see skills that can be received from MANT/Trackblazer rivals, select the running style used and the distance and surface + of the race. +
  • +
  • Skills for each tag are auto-generated from the game's local database.
  • +
  • Tag names are inferred from the skills that have them.
  • +
+