diff --git a/README.md b/README.md index db11e7b..cadccf8 100644 --- a/README.md +++ b/README.md @@ -3,4 +3,4 @@ Models, data, algorithms, and tools for Umamusume: Pretty Derby. Data is generated from the game's local database. -Algorithms come from either Erzzy and Kireina's reference document or Crazyfellow's parenting and gene guide. +Algorithms come from Erzzy and Kireina's reference, KuromiAK's race mechanics reference, and Crazyfellow's parenting and gene guide. diff --git a/doc/README.md b/doc/README.md index 80e73cb..eb96e2b 100644 --- a/doc/README.md +++ b/doc/README.md @@ -130,6 +130,53 @@ race sparks with skills always give +1, skill sparks always give +1-5, unique sp - support card skill hints are defined in single_mode_hint_gain - skill_set is NOT trainee skills, seems to be npcs +skill categories: +- 0 passive +- 1 early race +- 2 mid-race +- 3 late race or last spurt +- 4 anytime +- 5 unique + +unique_skill_id_1 is for inherited uniques, points to non-inherited version. +unique_skill_id_2 is same but points to 1\*/2\* version. + +exp_type appears to be whether the skill gains levels, i.e. own unique. + +ability time and cooldown time are given in tenths of milliseconds, i.e. divide by 10000 to get seconds. + +ability types: +- 1 speed bonus => ability_value / 10000 is flat gain +- 2 stamina bonus +- 3 power bonus +- 4 guts bonus +- 5 wit bonus +- 6 runaway => ability_value = 0 +- 8 vision => ability_value / 10000 is amount (what are the units? what does vision do??) +- 9 heal or stam debuff => ability_value / 10000 is hp modify +- 10 starting gate delay (focus, concentration, gatekept) => ability_value / 10000 is multiplier +- 13 frenzy => ability_value / 10000 is rush time modifier (add?) +- 21 current speed => ability_value / 10000 is multiplier modifier +- 27 target speed => '' +- 28 lane change speed => '' +- 31 accel => '' +- 35 force lane change? it's only on dodging danger/sixth sense with a value of 5000 on both, gametora says "change lane (50% of the track)" + +target types: +- 0 none (second and third abilities on skills that only have one) +- 1 self +- 4 others in view +- 9 others ahead, target_value is number of targets (18 for all) +- 10 others behind, target_value is number of targets +- 18 others in style, target_value is style (1=front, 2=pace, 3=late, 4=end) +- 19 rushing others ahead +- 20 rushing others behind +- 21 rushing others in style, target_value is style + +ability_value_usage can be 1 for plain or 2-6 for aoharu stat skill stat scaling + +seems to be activate_lot = 1 means wit check, 0 means guaranteed + # races - group 1, grade: g1 100, g2 200, g3 300, op 400, pre-op 700 diff --git a/horse/skill-group.kk b/horse/skill-group.kk new file mode 100644 index 0000000..f276ad5 --- /dev/null +++ b/horse/skill-group.kk @@ -0,0 +1,1025 @@ +module horse/skill-group + +// Automatically generated with horsegen; DO NOT EDIT + +// Skill groups. +// A skill group may contain white, circle, double-circle, gold, and purple skills +// for the same effect. +// Sparks that grant skills refer to a skill group. +pub type skill-group + Warning-Shot + Xceleration + Red-Ace + Focused-Mind + Corazon-Ardiente + Empresss-Pride + First-Place-Kiss + Feel-the-Burn + Introduction-to-Physiology + V-Is-for-Victory + Class-Rep-Speed-Bakushin + Clear-Heart + Super-Duper-Stoked + Luck-Be-with-Me + I-Can-Win-Sometimes-Right + Call-Me-King + Shooting-Star + The-View-from-the-Lead-Is-Mine + Sky-High-Teio-Step + Red-Shift-LP1211-M + Lights-of-Vaudeville + Triumphant-Pulse + Anchors-Aweigh + Cut-and-Drive + Resplendent-Red-Ace + Shooting-for-Victory + Where-Theres-a-Will-Theres-a-Way + You-and-Me-One-on-One + The-Duty-of-Dignity-Calls + Victoria-por-plancha + This-Dance-Is-for-Vittoria + Shadow-Break + Behold-Thine-Emperors-Divine-Might + Blazing-Pride + OMG-The-Final-Sprint + Angling-and-Scheming + Win-QED + Flashy-Landing + Chasing-After-You + G00-First-FInfinity + Lets-Pump-Some-Iron + YUMMY-SPEED + Blue-Rose-Closer + U-ma2 + Our-Ticket-to-Win + Schwarzes-Schwert + LookatCurren + A-Princess-Must-Seize-Victory + KEEP-IT-REAL + Genius-x-Bakushin-Victory + Pure-Heart + SPARKLY-STARDOM + Pop-Polish + Nemesis + Super-Duper-Climax + I-See-Victory-in-My-Future + I-Never-Goof-Up + Moving-Past-and-Beyond + Just-a-Little-Farther + Prideful-King + Dazzl-n-Diver + Certain-Victory + A-Kiss-for-Courage + Festive-Miracle + Superior-Heal + Legacy-of-the-Strong + Condors-Fury + Arrows-Whistle-Shadows-Disperse + Eternal-Moments + Presents-from-X + Flowery-Maneuver + Every-Rose-Has-Its-Fangs + Dancing-in-the-Leaves + Give-Mummy-a-Hug + Bountiful-Harvest + Right-Handed + Left-Handed + Tokyo-Racecourse + Nakayama-Racecourse + Hanshin-Racecourse + Kyoto-Racecourse + Chukyo-Racecourse + Sapporo-Racecourse + Hakodate-Racecourse + Fukushima-Racecourse + Niigata-Racecourse + Kokura-Racecourse + Standard-Distance + Non-Standard-Distance + Firm-Conditions + Wet-Conditions + Spring-Runner + Summer-Runner + Fall-Runner + Winter-Runner + Sunny-Days + Cloudy-Days + Rainy-Days + Snowy-Days + Inner-Post-Proficiency + Outer-Post-Proficiency + Maverick + Competitive-Spirit + Target-in-Sight + Long-Shot + Corner-Adept + Corner-Acceleration + Corner-Recovery + Straightaway-Adept + Straightaway-Acceleration + Straightaway-Recovery + Focus + Lay-Low + Prudent-Positioning + Ramp-Up + Pace-Strategy + Calm-in-a-Crowd + Nimble-Navigator + Go-with-the-Flow + Homestretch-Haste + Early-Lead + Fast-Paced + Final-Push + Stamina-to-Spare + Preferred-Position + Prepared-to-Pass + Position-Pilfer + Slick-Surge + Outer-Swell + Standing-By + Masterful-Gambit + Straightaway-Spurt + Sprinting-Gear + Wait-and-See + Gap-Closer + Productive-Plan + Watchful-Eye + Updrafters + Rosy-Outlook + Up-Tempo + Steadfast + Deep-Breaths + Inside-Scoop + Extra-Tank + Trick-Front + Trick-Rear + Frenzied-Front-Runners + Frenzied-Pace-Chasers + Frenzied-Late-Surgers + Frenzied-End-Closers + Subdued-Front-Runners + Flustered-Front-Runners + Hesitant-Front-Runners + Subdued-Pace-Chasers + Flustered-Pace-Chasers + Hesitant-Pace-Chasers + Subdued-Late-Surgers + Flustered-Late-Surgers + Hesitant-Late-Surgers + Subdued-End-Closers + Flustered-End-Closers + Hesitant-End-Closers + Oi-Racecourse + Sprint-Straightaways + Sprint-Corners + Huge-Lead + Countermeasure + Meticulous-Measures + Intimidate + Stop-Right-There + Mile-Straightaways + Mile-Corners + Shifting-Gears + Acceleration + Unyielding-Spirit + Speed-Eater + Opening-Gambit + Medium-Straightaways + Medium-Corners + Hawkeye + Thunderbolt-Step + Soft-Step + Tether + Murmur + Long-Straightaways + Long-Corners + Keeping-the-Lead + Passing-Pro + Pressure + Stamina-Eater + Smoke-Screen + Front-Runner-Straightaways + Front-Runner-Corners + Dodging-Danger + Leaders-Pride + Moxie + Second-Wind + Restart + Pace-Chaser-Straightaways + Pace-Chaser-Corners + Shrewd-Step + Straight-Descent + Hydrate + Tactical-Tweak + Disorient + Late-Surger-Straightaways + Late-Surger-Corners + Fighter + One-Million-CC + A-Small-Breather + Studious + Sharp-Gaze + End-Closer-Straightaways + End-Closer-Corners + I-Can-See-Right-Through-You + After-School-Stroll + Levelheaded + Strategist + Intense-Gaze + Front-Runner-Savvy + Pace-Chaser-Savvy + Late-Surger-Savvy + End-Closer-Savvy + Lucky-Seven + Triple-Sevens + Highlander + Uma-Stan + Groundwork + Tail-Held-High + Shake-It-Out + Sympathy + Lone-Wolf + Slipstream + Playtimes-Over + Top-Pick + Forward-March + Be-Still + All-I-ve-Got + Head-On + Early-Start + Risky-Business + Ignited-Spirit-SPD + Ignited-Spirit-STA + Ignited-Spirit-PWR + Ignited-Spirit-GUTS + Ignited-Spirit-WIT + Unquenched-Thirst + Unchanging + +// Map a skill group to its ID. +pub fip fun skill-group/group-id(^sg: skill-group): int + match sg + Warning-Shot -> 1007 + Xceleration -> 1008 + Red-Ace -> 1009 + Focused-Mind -> 1011 + Corazon-Ardiente -> 1014 + Empresss-Pride -> 1018 + First-Place-Kiss -> 1024 + Feel-the-Burn -> 1027 + Introduction-to-Physiology -> 1032 + V-Is-for-Victory -> 1035 + Class-Rep-Speed-Bakushin -> 1041 + Clear-Heart -> 1045 + Super-Duper-Stoked -> 1052 + Luck-Be-with-Me -> 1056 + I-Can-Win-Sometimes-Right -> 1060 + Call-Me-King -> 1061 + Shooting-Star -> 10001 + The-View-from-the-Lead-Is-Mine -> 10002 + Sky-High-Teio-Step -> 10003 + Red-Shift-LP1211-M -> 10004 + Lights-of-Vaudeville -> 10005 + Triumphant-Pulse -> 10006 + Anchors-Aweigh -> 10007 + Cut-and-Drive -> 10008 + Resplendent-Red-Ace -> 10009 + Shooting-for-Victory -> 10010 + Where-Theres-a-Will-Theres-a-Way -> 10011 + You-and-Me-One-on-One -> 10012 + The-Duty-of-Dignity-Calls -> 10013 + Victoria-por-plancha -> 10014 + This-Dance-Is-for-Vittoria -> 10015 + Shadow-Break -> 10016 + Behold-Thine-Emperors-Divine-Might -> 10017 + Blazing-Pride -> 10018 + OMG-The-Final-Sprint -> 10019 + Angling-and-Scheming -> 10020 + Win-QED -> 10023 + Flashy-Landing -> 10024 + Chasing-After-You -> 10025 + G00-First-FInfinity -> 10026 + Lets-Pump-Some-Iron -> 10027 + YUMMY-SPEED -> 10028 + Blue-Rose-Closer -> 10030 + U-ma2 -> 10032 + Our-Ticket-to-Win -> 10035 + Schwarzes-Schwert -> 10037 + LookatCurren -> 10038 + A-Princess-Must-Seize-Victory -> 10039 + KEEP-IT-REAL -> 10040 + Genius-x-Bakushin-Victory -> 10041 + Pure-Heart -> 10045 + SPARKLY-STARDOM -> 10046 + Pop-Polish -> 10048 + Nemesis -> 10050 + Super-Duper-Climax -> 10052 + I-See-Victory-in-My-Future -> 10056 + I-Never-Goof-Up -> 10058 + Moving-Past-and-Beyond -> 10059 + Just-a-Little-Farther -> 10060 + Prideful-King -> 10061 + Dazzl-n-Diver -> 11001 + Certain-Victory -> 11003 + A-Kiss-for-Courage -> 11004 + Festive-Miracle -> 11006 + Superior-Heal -> 11011 + Legacy-of-the-Strong -> 11013 + Condors-Fury -> 11014 + Arrows-Whistle-Shadows-Disperse -> 11017 + Eternal-Moments -> 11018 + Presents-from-X -> 11023 + Flowery-Maneuver -> 11024 + Every-Rose-Has-Its-Fangs -> 11030 + Dancing-in-the-Leaves -> 11040 + Give-Mummy-a-Hug -> 11045 + Bountiful-Harvest -> 11056 + Right-Handed -> 20001 + Left-Handed -> 20002 + Tokyo-Racecourse -> 20003 + Nakayama-Racecourse -> 20004 + Hanshin-Racecourse -> 20005 + Kyoto-Racecourse -> 20006 + Chukyo-Racecourse -> 20007 + Sapporo-Racecourse -> 20008 + Hakodate-Racecourse -> 20009 + Fukushima-Racecourse -> 20010 + Niigata-Racecourse -> 20011 + Kokura-Racecourse -> 20012 + Standard-Distance -> 20013 + Non-Standard-Distance -> 20014 + Firm-Conditions -> 20015 + Wet-Conditions -> 20016 + Spring-Runner -> 20017 + Summer-Runner -> 20018 + Fall-Runner -> 20019 + Winter-Runner -> 20020 + Sunny-Days -> 20021 + Cloudy-Days -> 20022 + Rainy-Days -> 20023 + Snowy-Days -> 20024 + Inner-Post-Proficiency -> 20025 + Outer-Post-Proficiency -> 20026 + Maverick -> 20027 + Competitive-Spirit -> 20028 + Target-in-Sight -> 20029 + Long-Shot -> 20030 + Corner-Adept -> 20033 + Corner-Acceleration -> 20034 + Corner-Recovery -> 20035 + Straightaway-Adept -> 20036 + Straightaway-Acceleration -> 20037 + Straightaway-Recovery -> 20038 + Focus -> 20043 + Lay-Low -> 20044 + Prudent-Positioning -> 20045 + Ramp-Up -> 20046 + Pace-Strategy -> 20047 + Calm-in-a-Crowd -> 20048 + Nimble-Navigator -> 20049 + Go-with-the-Flow -> 20050 + Homestretch-Haste -> 20051 + Early-Lead -> 20053 + Fast-Paced -> 20054 + Final-Push -> 20055 + Stamina-to-Spare -> 20056 + Preferred-Position -> 20057 + Prepared-to-Pass -> 20058 + Position-Pilfer -> 20059 + Slick-Surge -> 20060 + Outer-Swell -> 20061 + Standing-By -> 20062 + Masterful-Gambit -> 20063 + Straightaway-Spurt -> 20064 + Sprinting-Gear -> 20065 + Wait-and-See -> 20066 + Gap-Closer -> 20067 + Productive-Plan -> 20068 + Watchful-Eye -> 20069 + Updrafters -> 20070 + Rosy-Outlook -> 20071 + Up-Tempo -> 20072 + Steadfast -> 20073 + Deep-Breaths -> 20074 + Inside-Scoop -> 20075 + Extra-Tank -> 20076 + Trick-Front -> 20077 + Trick-Rear -> 20078 + Frenzied-Front-Runners -> 20079 + Frenzied-Pace-Chasers -> 20080 + Frenzied-Late-Surgers -> 20081 + Frenzied-End-Closers -> 20082 + Subdued-Front-Runners -> 20083 + Flustered-Front-Runners -> 20084 + Hesitant-Front-Runners -> 20085 + Subdued-Pace-Chasers -> 20086 + Flustered-Pace-Chasers -> 20087 + Hesitant-Pace-Chasers -> 20088 + Subdued-Late-Surgers -> 20089 + Flustered-Late-Surgers -> 20090 + Hesitant-Late-Surgers -> 20091 + Subdued-End-Closers -> 20092 + Flustered-End-Closers -> 20093 + Hesitant-End-Closers -> 20094 + Oi-Racecourse -> 20095 + Sprint-Straightaways -> 20096 + Sprint-Corners -> 20097 + Huge-Lead -> 20098 + Countermeasure -> 20099 + Meticulous-Measures -> 20100 + Intimidate -> 20101 + Stop-Right-There -> 20102 + Mile-Straightaways -> 20103 + Mile-Corners -> 20104 + Shifting-Gears -> 20105 + Acceleration -> 20106 + Unyielding-Spirit -> 20107 + Speed-Eater -> 20108 + Opening-Gambit -> 20109 + Medium-Straightaways -> 20110 + Medium-Corners -> 20111 + Hawkeye -> 20112 + Thunderbolt-Step -> 20113 + Soft-Step -> 20114 + Tether -> 20115 + Murmur -> 20116 + Long-Straightaways -> 20117 + Long-Corners -> 20118 + Keeping-the-Lead -> 20119 + Passing-Pro -> 20120 + Pressure -> 20121 + Stamina-Eater -> 20122 + Smoke-Screen -> 20123 + Front-Runner-Straightaways -> 20124 + Front-Runner-Corners -> 20125 + Dodging-Danger -> 20126 + Leaders-Pride -> 20127 + Moxie -> 20128 + Second-Wind -> 20129 + Restart -> 20130 + Pace-Chaser-Straightaways -> 20131 + Pace-Chaser-Corners -> 20132 + Shrewd-Step -> 20133 + Straight-Descent -> 20134 + Hydrate -> 20135 + Tactical-Tweak -> 20136 + Disorient -> 20137 + Late-Surger-Straightaways -> 20138 + Late-Surger-Corners -> 20139 + Fighter -> 20140 + One-Million-CC -> 20141 + A-Small-Breather -> 20142 + Studious -> 20143 + Sharp-Gaze -> 20144 + End-Closer-Straightaways -> 20145 + End-Closer-Corners -> 20146 + I-Can-See-Right-Through-You -> 20147 + After-School-Stroll -> 20148 + Levelheaded -> 20149 + Strategist -> 20150 + Intense-Gaze -> 20151 + Front-Runner-Savvy -> 20152 + Pace-Chaser-Savvy -> 20153 + Late-Surger-Savvy -> 20154 + End-Closer-Savvy -> 20155 + Lucky-Seven -> 20156 + Triple-Sevens -> 20157 + Highlander -> 20158 + Uma-Stan -> 20159 + Groundwork -> 20160 + Tail-Held-High -> 20161 + Shake-It-Out -> 20162 + Sympathy -> 20163 + Lone-Wolf -> 20164 + Slipstream -> 20165 + Playtimes-Over -> 20166 + Top-Pick -> 20167 + Forward-March -> 20168 + Be-Still -> 20169 + All-I-ve-Got -> 20170 + Head-On -> 20190 + Early-Start -> 20202 + Risky-Business -> 20203 + Ignited-Spirit-SPD -> 21001 + Ignited-Spirit-STA -> 21002 + Ignited-Spirit-PWR -> 21003 + Ignited-Spirit-GUTS -> 21004 + Ignited-Spirit-WIT -> 21005 + Unquenched-Thirst -> 30001 + Unchanging -> 30002 + +// Get the skill group for an ID. +pub fip(1) fun skill-group/from-id(^id: int): maybe + match id + 1007 -> Just(Warning-Shot) + 1008 -> Just(Xceleration) + 1009 -> Just(Red-Ace) + 1011 -> Just(Focused-Mind) + 1014 -> Just(Corazon-Ardiente) + 1018 -> Just(Empresss-Pride) + 1024 -> Just(First-Place-Kiss) + 1027 -> Just(Feel-the-Burn) + 1032 -> Just(Introduction-to-Physiology) + 1035 -> Just(V-Is-for-Victory) + 1041 -> Just(Class-Rep-Speed-Bakushin) + 1045 -> Just(Clear-Heart) + 1052 -> Just(Super-Duper-Stoked) + 1056 -> Just(Luck-Be-with-Me) + 1060 -> Just(I-Can-Win-Sometimes-Right) + 1061 -> Just(Call-Me-King) + 10001 -> Just(Shooting-Star) + 10002 -> Just(The-View-from-the-Lead-Is-Mine) + 10003 -> Just(Sky-High-Teio-Step) + 10004 -> Just(Red-Shift-LP1211-M) + 10005 -> Just(Lights-of-Vaudeville) + 10006 -> Just(Triumphant-Pulse) + 10007 -> Just(Anchors-Aweigh) + 10008 -> Just(Cut-and-Drive) + 10009 -> Just(Resplendent-Red-Ace) + 10010 -> Just(Shooting-for-Victory) + 10011 -> Just(Where-Theres-a-Will-Theres-a-Way) + 10012 -> Just(You-and-Me-One-on-One) + 10013 -> Just(The-Duty-of-Dignity-Calls) + 10014 -> Just(Victoria-por-plancha) + 10015 -> Just(This-Dance-Is-for-Vittoria) + 10016 -> Just(Shadow-Break) + 10017 -> Just(Behold-Thine-Emperors-Divine-Might) + 10018 -> Just(Blazing-Pride) + 10019 -> Just(OMG-The-Final-Sprint) + 10020 -> Just(Angling-and-Scheming) + 10023 -> Just(Win-QED) + 10024 -> Just(Flashy-Landing) + 10025 -> Just(Chasing-After-You) + 10026 -> Just(G00-First-FInfinity) + 10027 -> Just(Lets-Pump-Some-Iron) + 10028 -> Just(YUMMY-SPEED) + 10030 -> Just(Blue-Rose-Closer) + 10032 -> Just(U-ma2) + 10035 -> Just(Our-Ticket-to-Win) + 10037 -> Just(Schwarzes-Schwert) + 10038 -> Just(LookatCurren) + 10039 -> Just(A-Princess-Must-Seize-Victory) + 10040 -> Just(KEEP-IT-REAL) + 10041 -> Just(Genius-x-Bakushin-Victory) + 10045 -> Just(Pure-Heart) + 10046 -> Just(SPARKLY-STARDOM) + 10048 -> Just(Pop-Polish) + 10050 -> Just(Nemesis) + 10052 -> Just(Super-Duper-Climax) + 10056 -> Just(I-See-Victory-in-My-Future) + 10058 -> Just(I-Never-Goof-Up) + 10059 -> Just(Moving-Past-and-Beyond) + 10060 -> Just(Just-a-Little-Farther) + 10061 -> Just(Prideful-King) + 11001 -> Just(Dazzl-n-Diver) + 11003 -> Just(Certain-Victory) + 11004 -> Just(A-Kiss-for-Courage) + 11006 -> Just(Festive-Miracle) + 11011 -> Just(Superior-Heal) + 11013 -> Just(Legacy-of-the-Strong) + 11014 -> Just(Condors-Fury) + 11017 -> Just(Arrows-Whistle-Shadows-Disperse) + 11018 -> Just(Eternal-Moments) + 11023 -> Just(Presents-from-X) + 11024 -> Just(Flowery-Maneuver) + 11030 -> Just(Every-Rose-Has-Its-Fangs) + 11040 -> Just(Dancing-in-the-Leaves) + 11045 -> Just(Give-Mummy-a-Hug) + 11056 -> Just(Bountiful-Harvest) + 20001 -> Just(Right-Handed) + 20002 -> Just(Left-Handed) + 20003 -> Just(Tokyo-Racecourse) + 20004 -> Just(Nakayama-Racecourse) + 20005 -> Just(Hanshin-Racecourse) + 20006 -> Just(Kyoto-Racecourse) + 20007 -> Just(Chukyo-Racecourse) + 20008 -> Just(Sapporo-Racecourse) + 20009 -> Just(Hakodate-Racecourse) + 20010 -> Just(Fukushima-Racecourse) + 20011 -> Just(Niigata-Racecourse) + 20012 -> Just(Kokura-Racecourse) + 20013 -> Just(Standard-Distance) + 20014 -> Just(Non-Standard-Distance) + 20015 -> Just(Firm-Conditions) + 20016 -> Just(Wet-Conditions) + 20017 -> Just(Spring-Runner) + 20018 -> Just(Summer-Runner) + 20019 -> Just(Fall-Runner) + 20020 -> Just(Winter-Runner) + 20021 -> Just(Sunny-Days) + 20022 -> Just(Cloudy-Days) + 20023 -> Just(Rainy-Days) + 20024 -> Just(Snowy-Days) + 20025 -> Just(Inner-Post-Proficiency) + 20026 -> Just(Outer-Post-Proficiency) + 20027 -> Just(Maverick) + 20028 -> Just(Competitive-Spirit) + 20029 -> Just(Target-in-Sight) + 20030 -> Just(Long-Shot) + 20033 -> Just(Corner-Adept) + 20034 -> Just(Corner-Acceleration) + 20035 -> Just(Corner-Recovery) + 20036 -> Just(Straightaway-Adept) + 20037 -> Just(Straightaway-Acceleration) + 20038 -> Just(Straightaway-Recovery) + 20043 -> Just(Focus) + 20044 -> Just(Lay-Low) + 20045 -> Just(Prudent-Positioning) + 20046 -> Just(Ramp-Up) + 20047 -> Just(Pace-Strategy) + 20048 -> Just(Calm-in-a-Crowd) + 20049 -> Just(Nimble-Navigator) + 20050 -> Just(Go-with-the-Flow) + 20051 -> Just(Homestretch-Haste) + 20053 -> Just(Early-Lead) + 20054 -> Just(Fast-Paced) + 20055 -> Just(Final-Push) + 20056 -> Just(Stamina-to-Spare) + 20057 -> Just(Preferred-Position) + 20058 -> Just(Prepared-to-Pass) + 20059 -> Just(Position-Pilfer) + 20060 -> Just(Slick-Surge) + 20061 -> Just(Outer-Swell) + 20062 -> Just(Standing-By) + 20063 -> Just(Masterful-Gambit) + 20064 -> Just(Straightaway-Spurt) + 20065 -> Just(Sprinting-Gear) + 20066 -> Just(Wait-and-See) + 20067 -> Just(Gap-Closer) + 20068 -> Just(Productive-Plan) + 20069 -> Just(Watchful-Eye) + 20070 -> Just(Updrafters) + 20071 -> Just(Rosy-Outlook) + 20072 -> Just(Up-Tempo) + 20073 -> Just(Steadfast) + 20074 -> Just(Deep-Breaths) + 20075 -> Just(Inside-Scoop) + 20076 -> Just(Extra-Tank) + 20077 -> Just(Trick-Front) + 20078 -> Just(Trick-Rear) + 20079 -> Just(Frenzied-Front-Runners) + 20080 -> Just(Frenzied-Pace-Chasers) + 20081 -> Just(Frenzied-Late-Surgers) + 20082 -> Just(Frenzied-End-Closers) + 20083 -> Just(Subdued-Front-Runners) + 20084 -> Just(Flustered-Front-Runners) + 20085 -> Just(Hesitant-Front-Runners) + 20086 -> Just(Subdued-Pace-Chasers) + 20087 -> Just(Flustered-Pace-Chasers) + 20088 -> Just(Hesitant-Pace-Chasers) + 20089 -> Just(Subdued-Late-Surgers) + 20090 -> Just(Flustered-Late-Surgers) + 20091 -> Just(Hesitant-Late-Surgers) + 20092 -> Just(Subdued-End-Closers) + 20093 -> Just(Flustered-End-Closers) + 20094 -> Just(Hesitant-End-Closers) + 20095 -> Just(Oi-Racecourse) + 20096 -> Just(Sprint-Straightaways) + 20097 -> Just(Sprint-Corners) + 20098 -> Just(Huge-Lead) + 20099 -> Just(Countermeasure) + 20100 -> Just(Meticulous-Measures) + 20101 -> Just(Intimidate) + 20102 -> Just(Stop-Right-There) + 20103 -> Just(Mile-Straightaways) + 20104 -> Just(Mile-Corners) + 20105 -> Just(Shifting-Gears) + 20106 -> Just(Acceleration) + 20107 -> Just(Unyielding-Spirit) + 20108 -> Just(Speed-Eater) + 20109 -> Just(Opening-Gambit) + 20110 -> Just(Medium-Straightaways) + 20111 -> Just(Medium-Corners) + 20112 -> Just(Hawkeye) + 20113 -> Just(Thunderbolt-Step) + 20114 -> Just(Soft-Step) + 20115 -> Just(Tether) + 20116 -> Just(Murmur) + 20117 -> Just(Long-Straightaways) + 20118 -> Just(Long-Corners) + 20119 -> Just(Keeping-the-Lead) + 20120 -> Just(Passing-Pro) + 20121 -> Just(Pressure) + 20122 -> Just(Stamina-Eater) + 20123 -> Just(Smoke-Screen) + 20124 -> Just(Front-Runner-Straightaways) + 20125 -> Just(Front-Runner-Corners) + 20126 -> Just(Dodging-Danger) + 20127 -> Just(Leaders-Pride) + 20128 -> Just(Moxie) + 20129 -> Just(Second-Wind) + 20130 -> Just(Restart) + 20131 -> Just(Pace-Chaser-Straightaways) + 20132 -> Just(Pace-Chaser-Corners) + 20133 -> Just(Shrewd-Step) + 20134 -> Just(Straight-Descent) + 20135 -> Just(Hydrate) + 20136 -> Just(Tactical-Tweak) + 20137 -> Just(Disorient) + 20138 -> Just(Late-Surger-Straightaways) + 20139 -> Just(Late-Surger-Corners) + 20140 -> Just(Fighter) + 20141 -> Just(One-Million-CC) + 20142 -> Just(A-Small-Breather) + 20143 -> Just(Studious) + 20144 -> Just(Sharp-Gaze) + 20145 -> Just(End-Closer-Straightaways) + 20146 -> Just(End-Closer-Corners) + 20147 -> Just(I-Can-See-Right-Through-You) + 20148 -> Just(After-School-Stroll) + 20149 -> Just(Levelheaded) + 20150 -> Just(Strategist) + 20151 -> Just(Intense-Gaze) + 20152 -> Just(Front-Runner-Savvy) + 20153 -> Just(Pace-Chaser-Savvy) + 20154 -> Just(Late-Surger-Savvy) + 20155 -> Just(End-Closer-Savvy) + 20156 -> Just(Lucky-Seven) + 20157 -> Just(Triple-Sevens) + 20158 -> Just(Highlander) + 20159 -> Just(Uma-Stan) + 20160 -> Just(Groundwork) + 20161 -> Just(Tail-Held-High) + 20162 -> Just(Shake-It-Out) + 20163 -> Just(Sympathy) + 20164 -> Just(Lone-Wolf) + 20165 -> Just(Slipstream) + 20166 -> Just(Playtimes-Over) + 20167 -> Just(Top-Pick) + 20168 -> Just(Forward-March) + 20169 -> Just(Be-Still) + 20170 -> Just(All-I-ve-Got) + 20190 -> Just(Head-On) + 20202 -> Just(Early-Start) + 20203 -> Just(Risky-Business) + 21001 -> Just(Ignited-Spirit-SPD) + 21002 -> Just(Ignited-Spirit-STA) + 21003 -> Just(Ignited-Spirit-PWR) + 21004 -> Just(Ignited-Spirit-GUTS) + 21005 -> Just(Ignited-Spirit-WIT) + 30001 -> Just(Unquenched-Thirst) + 30002 -> Just(Unchanging) + _ -> Nothing + +// Get the name for a skill group. +// Skill group names are the name of the base skill in the group. +pub fun skill-group/show(sg: skill-group): string + match sg + Warning-Shot -> "Warning Shot!" + Xceleration -> "Xceleration" + Red-Ace -> "Red Ace" + Focused-Mind -> "Focused Mind" + Corazon-Ardiente -> "Corazón ☆ Ardiente" + Empresss-Pride -> "Empress's Pride" + First-Place-Kiss -> "1st Place Kiss☆" + Feel-the-Burn -> "Feel the Burn!" + Introduction-to-Physiology -> "Introduction to Physiology" + V-Is-for-Victory -> "V Is for Victory!" + Class-Rep-Speed-Bakushin -> "Class Rep + Speed = Bakushin" + Clear-Heart -> "Clear Heart" + Super-Duper-Stoked -> "Super-Duper Stoked" + Luck-Be-with-Me -> "Luck Be with Me!" + I-Can-Win-Sometimes-Right -> "I Can Win Sometimes, Right?" + Call-Me-King -> "Call Me King" + Shooting-Star -> "Shooting Star" + The-View-from-the-Lead-Is-Mine -> "The View from the Lead Is Mine!" + Sky-High-Teio-Step -> "Sky-High Teio Step" + Red-Shift-LP1211-M -> "Red Shift/LP1211-M" + Lights-of-Vaudeville -> "Lights of Vaudeville" + Triumphant-Pulse -> "Triumphant Pulse" + Anchors-Aweigh -> "Anchors Aweigh!" + Cut-and-Drive -> "Cut and Drive!" + Resplendent-Red-Ace -> "Resplendent Red Ace" + Shooting-for-Victory -> "Shooting for Victory!" + Where-Theres-a-Will-Theres-a-Way -> "Where There's a Will, There's a Way" + You-and-Me-One-on-One -> "You and Me! One-on-One!" + The-Duty-of-Dignity-Calls -> "The Duty of Dignity Calls" + Victoria-por-plancha -> "Victoria por plancha ☆" + This-Dance-Is-for-Vittoria -> "This Dance Is for Vittoria!" + Shadow-Break -> "Shadow Break" + Behold-Thine-Emperors-Divine-Might -> "Behold Thine Emperor's Divine Might" + Blazing-Pride -> "Blazing Pride" + OMG-The-Final-Sprint -> "OMG! (゚∀゚) The Final Sprint! ☆" + Angling-and-Scheming -> "Angling and Scheming" + Win-QED -> "∴win Q.E.D." + Flashy-Landing -> "Flashy☆Landing" + Chasing-After-You -> "Chasing After You" + G00-First-FInfinity -> "G00 1st. F∞;" + Lets-Pump-Some-Iron -> "Let's Pump Some Iron!" + YUMMY-SPEED -> "YUMMY☆SPEED!" + Blue-Rose-Closer -> "Blue Rose Closer" + U-ma2 -> "U=ma2" + Our-Ticket-to-Win -> "Our Ticket to Win!" + Schwarzes-Schwert -> "Schwarzes Schwert" + LookatCurren -> "#LookatCurren" + A-Princess-Must-Seize-Victory -> "A Princess Must Seize Victory!" + KEEP-IT-REAL -> "KEEP IT REAL." + Genius-x-Bakushin-Victory -> "Genius x Bakushin = Victory" + Pure-Heart -> "Pure Heart" + SPARKLY-STARDOM -> "SPARKLY☆STARDOM" + Pop-Polish -> "Pop & Polish" + Nemesis -> "Nemesis" + Super-Duper-Climax -> "Super-Duper Climax" + I-See-Victory-in-My-Future -> "I See Victory in My Future!" + I-Never-Goof-Up -> "I Never Goof Up!" + Moving-Past-and-Beyond -> "Moving Past, and Beyond" + Just-a-Little-Farther -> "Just a Little Farther!" + Prideful-King -> "Prideful King" + Dazzl-n-Diver -> "Dazzl'n ♪ Diver" + Certain-Victory -> "Certain Victory" + A-Kiss-for-Courage -> "A Kiss for Courage" + Festive-Miracle -> "Festive Miracle" + Superior-Heal -> "Superior Heal" + Legacy-of-the-Strong -> "Legacy of the Strong" + Condors-Fury -> "Condor's Fury" + Arrows-Whistle-Shadows-Disperse -> "Arrows Whistle, Shadows Disperse" + Eternal-Moments -> "Eternal Moments" + Presents-from-X -> "Presents from X" + Flowery-Maneuver -> "Flowery☆Maneuver" + Every-Rose-Has-Its-Fangs -> "Every Rose Has Its Fangs" + Dancing-in-the-Leaves -> "Dancing in the Leaves" + Give-Mummy-a-Hug -> "Give Mummy a Hug ♡" + Bountiful-Harvest -> "Bountiful Harvest" + Right-Handed -> "Right-Handed ○" + Left-Handed -> "Left-Handed ○" + Tokyo-Racecourse -> "Tokyo Racecourse ○" + Nakayama-Racecourse -> "Nakayama Racecourse ○" + Hanshin-Racecourse -> "Hanshin Racecourse ○" + Kyoto-Racecourse -> "Kyoto Racecourse ○" + Chukyo-Racecourse -> "Chukyo Racecourse ○" + Sapporo-Racecourse -> "Sapporo Racecourse ○" + Hakodate-Racecourse -> "Hakodate Racecourse ○" + Fukushima-Racecourse -> "Fukushima Racecourse ○" + Niigata-Racecourse -> "Niigata Racecourse ○" + Kokura-Racecourse -> "Kokura Racecourse ○" + Standard-Distance -> "Standard Distance ○" + Non-Standard-Distance -> "Non-Standard Distance ○" + Firm-Conditions -> "Firm Conditions ○" + Wet-Conditions -> "Wet Conditions ○" + Spring-Runner -> "Spring Runner ○" + Summer-Runner -> "Summer Runner ○" + Fall-Runner -> "Fall Runner ○" + Winter-Runner -> "Winter Runner ○" + Sunny-Days -> "Sunny Days ○" + Cloudy-Days -> "Cloudy Days ○" + Rainy-Days -> "Rainy Days ○" + Snowy-Days -> "Snowy Days ○" + Inner-Post-Proficiency -> "Inner Post Proficiency ○" + Outer-Post-Proficiency -> "Outer Post Proficiency ○" + Maverick -> "Maverick ○" + Competitive-Spirit -> "Competitive Spirit ○" + Target-in-Sight -> "Target in Sight ○" + Long-Shot -> "Long Shot ○" + Corner-Adept -> "Corner Adept ○" + Corner-Acceleration -> "Corner Acceleration ○" + Corner-Recovery -> "Corner Recovery ○" + Straightaway-Adept -> "Straightaway Adept" + Straightaway-Acceleration -> "Straightaway Acceleration" + Straightaway-Recovery -> "Straightaway Recovery" + Focus -> "Focus" + Lay-Low -> "Lay Low" + Prudent-Positioning -> "Prudent Positioning" + Ramp-Up -> "Ramp Up" + Pace-Strategy -> "Pace Strategy" + Calm-in-a-Crowd -> "Calm in a Crowd" + Nimble-Navigator -> "Nimble Navigator" + Go-with-the-Flow -> "Go with the Flow" + Homestretch-Haste -> "Homestretch Haste" + Early-Lead -> "Early Lead" + Fast-Paced -> "Fast-Paced" + Final-Push -> "Final Push" + Stamina-to-Spare -> "Stamina to Spare" + Preferred-Position -> "Preferred Position" + Prepared-to-Pass -> "Prepared to Pass" + Position-Pilfer -> "Position Pilfer" + Slick-Surge -> "Slick Surge" + Outer-Swell -> "Outer Swell" + Standing-By -> "Standing By" + Masterful-Gambit -> "Masterful Gambit" + Straightaway-Spurt -> "Straightaway Spurt" + Sprinting-Gear -> "Sprinting Gear" + Wait-and-See -> "Wait-and-See" + Gap-Closer -> "Gap Closer" + Productive-Plan -> "Productive Plan" + Watchful-Eye -> "Watchful Eye" + Updrafters -> "Updrafters" + Rosy-Outlook -> "Rosy Outlook" + Up-Tempo -> "Up-Tempo" + Steadfast -> "Steadfast" + Deep-Breaths -> "Deep Breaths" + Inside-Scoop -> "Inside Scoop" + Extra-Tank -> "Extra Tank" + Trick-Front -> "Trick (Front)" + Trick-Rear -> "Trick (Rear)" + Frenzied-Front-Runners -> "Frenzied Front Runners" + Frenzied-Pace-Chasers -> "Frenzied Pace Chasers" + Frenzied-Late-Surgers -> "Frenzied Late Surgers" + Frenzied-End-Closers -> "Frenzied End Closers" + Subdued-Front-Runners -> "Subdued Front Runners" + Flustered-Front-Runners -> "Flustered Front Runners" + Hesitant-Front-Runners -> "Hesitant Front Runners" + Subdued-Pace-Chasers -> "Subdued Pace Chasers" + Flustered-Pace-Chasers -> "Flustered Pace Chasers" + Hesitant-Pace-Chasers -> "Hesitant Pace Chasers" + Subdued-Late-Surgers -> "Subdued Late Surgers" + Flustered-Late-Surgers -> "Flustered Late Surgers" + Hesitant-Late-Surgers -> "Hesitant Late Surgers" + Subdued-End-Closers -> "Subdued End Closers" + Flustered-End-Closers -> "Flustered End Closers" + Hesitant-End-Closers -> "Hesitant End Closers" + Oi-Racecourse -> "Oi Racecourse ○" + Sprint-Straightaways -> "Sprint Straightaways ○" + Sprint-Corners -> "Sprint Corners ○" + Huge-Lead -> "Huge Lead" + Countermeasure -> "Countermeasure" + Meticulous-Measures -> "Meticulous Measures" + Intimidate -> "Intimidate" + Stop-Right-There -> "Stop Right There!" + Mile-Straightaways -> "Mile Straightaways ○" + Mile-Corners -> "Mile Corners ○" + Shifting-Gears -> "Shifting Gears" + Acceleration -> "Acceleration" + Unyielding-Spirit -> "Unyielding Spirit" + Speed-Eater -> "Speed Eater" + Opening-Gambit -> "Opening Gambit" + Medium-Straightaways -> "Medium Straightaways ○" + Medium-Corners -> "Medium Corners ○" + Hawkeye -> "Hawkeye" + Thunderbolt-Step -> "Thunderbolt Step" + Soft-Step -> "Soft Step" + Tether -> "Tether" + Murmur -> "Murmur" + Long-Straightaways -> "Long Straightaways ○" + Long-Corners -> "Long Corners ○" + Keeping-the-Lead -> "Keeping the Lead" + Passing-Pro -> "Passing Pro" + Pressure -> "Pressure" + Stamina-Eater -> "Stamina Eater" + Smoke-Screen -> "Smoke Screen" + Front-Runner-Straightaways -> "Front Runner Straightaways ○" + Front-Runner-Corners -> "Front Runner Corners ○" + Dodging-Danger -> "Dodging Danger" + Leaders-Pride -> "Leader's Pride" + Moxie -> "Moxie" + Second-Wind -> "Second Wind" + Restart -> "Restart" + Pace-Chaser-Straightaways -> "Pace Chaser Straightaways ○" + Pace-Chaser-Corners -> "Pace Chaser Corners ○" + Shrewd-Step -> "Shrewd Step" + Straight-Descent -> "Straight Descent" + Hydrate -> "Hydrate" + Tactical-Tweak -> "Tactical Tweak" + Disorient -> "Disorient" + Late-Surger-Straightaways -> "Late Surger Straightaways ○" + Late-Surger-Corners -> "Late Surger Corners ○" + Fighter -> "Fighter" + One-Million-CC -> "1,500,000 CC" + A-Small-Breather -> "A Small Breather" + Studious -> "Studious" + Sharp-Gaze -> "Sharp Gaze" + End-Closer-Straightaways -> "End Closer Straightaways ○" + End-Closer-Corners -> "End Closer Corners ○" + I-Can-See-Right-Through-You -> "I Can See Right Through You" + After-School-Stroll -> "After-School Stroll" + Levelheaded -> "Levelheaded" + Strategist -> "Strategist" + Intense-Gaze -> "Intense Gaze" + Front-Runner-Savvy -> "Front Runner Savvy ○" + Pace-Chaser-Savvy -> "Pace Chaser Savvy ○" + Late-Surger-Savvy -> "Late Surger Savvy ○" + End-Closer-Savvy -> "End Closer Savvy ○" + Lucky-Seven -> "Lucky Seven" + Triple-Sevens -> "Triple 7s" + Highlander -> "Highlander" + Uma-Stan -> "Uma Stan" + Groundwork -> "Groundwork" + Tail-Held-High -> "Tail Held High" + Shake-It-Out -> "Shake It Out" + Sympathy -> "Sympathy" + Lone-Wolf -> "Lone Wolf" + Slipstream -> "Slipstream" + Playtimes-Over -> "Playtime's Over!" + Top-Pick -> "Top Pick" + Forward-March -> "Forward, March!" + Be-Still -> "Be Still" + All-I-ve-Got -> "All I've Got" + Head-On -> "Head-On" + Early-Start -> "Early Start" + Risky-Business -> "Risky Business" + Ignited-Spirit-SPD -> "Ignited Spirit SPD" + Ignited-Spirit-STA -> "Ignited Spirit STA" + Ignited-Spirit-PWR -> "Ignited Spirit PWR" + Ignited-Spirit-GUTS -> "Ignited Spirit GUTS" + Ignited-Spirit-WIT -> "Ignited Spirit WIT" + Unquenched-Thirst -> "Unquenched Thirst" + Unchanging -> "Unchanging" + +// Compare two skill groups by ID order. +pub fip fun skill-group/order2(a: skill-group, b: skill-group): order2 + match cmp(a.group-id, b.group-id) + Lt -> Lt2(a, b) + Eq -> Eq2(a) + Gt -> Gt2(a, b) + +pub fun skill-group/(==)(a: skill-group, b: skill-group): bool + a.group-id == b.group-id \ No newline at end of file diff --git a/horse/skill.kk b/horse/skill.kk index f07d7a1..9fbe3f6 100644 --- a/horse/skill.kk +++ b/horse/skill.kk @@ -1,12 +1,10 @@ module horse/skill -// Automatically generated with the horsegen tool; DO NOT EDIT +import std/num/float64 +pub import horse/skill-group -// Skill groups. -// A skill group may contain white, circle, double-circle, gold, and purple skills -// for the same effect. -// Sparks that grant skills refer to a skill group. -pub type skill-group +// Skills instances. +pub type skill Warning-Shot Xceleration Red-Ace @@ -82,76 +80,175 @@ pub type skill-group Dancing-in-the-Leaves Give-Mummy-a-Hug Bountiful-Harvest + Right-Handed-Lv2 Right-Handed + Right-Handed-x + Left-Handed-Lv2 Left-Handed + Left-Handed-x + Tokyo-Racecourse-Lv2 Tokyo-Racecourse + Tokyo-Racecourse-x + Nakayama-Racecourse-Lv2 Nakayama-Racecourse + Nakayama-Racecourse-x + Hanshin-Racecourse-Lv2 Hanshin-Racecourse + Hanshin-Racecourse-x + Kyoto-Racecourse-Lv2 Kyoto-Racecourse + Kyoto-Racecourse-x + Yodo-Invicta + Chukyo-Racecourse-Lv2 Chukyo-Racecourse + Chukyo-Racecourse-x + Sapporo-Racecourse-Lv2 Sapporo-Racecourse + Sapporo-Racecourse-x + Hakodate-Racecourse-Lv2 Hakodate-Racecourse + Hakodate-Racecourse-x + Fukushima-Racecourse-Lv2 Fukushima-Racecourse + Fukushima-Racecourse-x + Niigata-Racecourse-Lv2 Niigata-Racecourse + Niigata-Racecourse-x + Kokura-Racecourse-Lv2 Kokura-Racecourse + Kokura-Racecourse-x + Standard-Distance-Lv2 Standard-Distance + Standard-Distance-x + Non-Standard-Distance-Lv2 Non-Standard-Distance + Non-Standard-Distance-x + Firm-Conditions-Lv2 Firm-Conditions + Firm-Conditions-x + Wet-Conditions-Lv2 Wet-Conditions + Wet-Conditions-x + Spring-Runner-Lv2 Spring-Runner + Spring-Runner-x + Summer-Runner-Lv2 Summer-Runner + Summer-Runner-x + Fall-Runner-Lv2 Fall-Runner + Fall-Runner-x + Fall-Frenzy + Winter-Runner-Lv2 Winter-Runner + Winter-Runner-x + Sunny-Days-Lv2 Sunny-Days + Cloudy-Days-Lv2 Cloudy-Days + Rainy-Days-Lv2 Rainy-Days + Rainy-Days-x + Snowy-Days-Lv2 Snowy-Days + Inner-Post-Proficiency-Lv2 Inner-Post-Proficiency + Inner-Post-Averseness + Outer-Post-Proficiency-Lv2 Outer-Post-Proficiency + Outer-Post-Averseness + Maverick-Lv2 Maverick + Competitive-Spirit-Lv2 Competitive-Spirit + Wallflower + Target-in-Sight-Lv2 Target-in-Sight + Long-Shot-Lv2 Long-Shot + Professor-of-Curvature Corner-Adept + Corner-Adept-x + Corner-Connoisseur Corner-Acceleration + Corner-Acceleration-x + Swinging-Maestro Corner-Recovery + Corner-Recovery-x + Beeline-Burst Straightaway-Adept + Rushing-Gale Straightaway-Acceleration + Breath-of-Fresh-Air Straightaway-Recovery + Concentration Focus + Gatekept + Iron-Will Lay-Low + Center-Stage Prudent-Positioning + Its-On Ramp-Up + Indomitable Pace-Strategy + Unruffled Calm-in-a-Crowd + No-Stopping-Me Nimble-Navigator + Lane-Legerdemain Go-with-the-Flow + In-Body-and-Mind Homestretch-Haste + Taking-the-Lead Early-Lead + Escape-Artist Fast-Paced + Unrestrained Final-Push + Calm-and-Collected Stamina-to-Spare + Race-Planner Preferred-Position + Speed-Star Prepared-to-Pass + Fast-Furious Position-Pilfer + On-Your-Left Slick-Surge + Rising-Dragon Outer-Swell + Sleeping-Lion Standing-By + Sturm-und-Drang Masterful-Gambit + Encroaching-Shadow Straightaway-Spurt + Turbo-Sprint Sprinting-Gear Wait-and-See + Blinding-Flash Gap-Closer + Mile-Maven Productive-Plan + Keen-Eye Watchful-Eye + Furious-Feat Updrafters + Trackblazer Rosy-Outlook + Killer-Tunes Up-Tempo + Unyielding Steadfast + Cooldown Deep-Breaths + Innate-Experience Inside-Scoop + Adrenaline-Rush Extra-Tank Trick-Front + Tantalizing-Trick Trick-Rear Frenzied-Front-Runners Frenzied-Pace-Chasers @@ -169,71 +266,133 @@ pub type skill-group Subdued-End-Closers Flustered-End-Closers Hesitant-End-Closers + Oi-Racecourse-Lv2 Oi-Racecourse + Oi-Racecourse-x + Sprint-Straightaways-Lv2 Sprint-Straightaways + Sprint-Corners-Lv2 Sprint-Corners + Staggering-Lead Huge-Lead + Plan-X Countermeasure + Perfect-Prep Meticulous-Measures + Adored-by-All Intimidate + You-ve-Got-No-Shot Stop-Right-There + Mile-Straightaways-Lv2 Mile-Straightaways + Mile-Corners-Lv2 Mile-Corners + Changing-Gears Shifting-Gears + Step-on-the-Gas Acceleration + Big-Sisterly Unyielding-Spirit + Greed-for-Speed Speed-Eater + Battle-Formation Opening-Gambit + Medium-Straightaways-Lv2 Medium-Straightaways + Medium-Corners-Lv2 Medium-Corners + Clairvoyance Hawkeye + Lightning-Step Thunderbolt-Step + Miraculous-Step Soft-Step + Dominator Tether + Mystifying-Murmur Murmur + Long-Straightaways-Lv2 Long-Straightaways + Long-Corners-Lv2 Long-Corners + Vanguard-Spirit Keeping-the-Lead + VIP-Pass Passing-Pro + Overwhelming-Pressure Pressure + Stamina-Siphon Stamina-Eater + Illusionist Smoke-Screen + Front-Runner-Straightaways-Lv2 Front-Runner-Straightaways + Front-Runner-Corners-Lv2 Front-Runner-Corners + Sixth-Sense Dodging-Danger Leaders-Pride + Restless Moxie + Reignition Second-Wind Restart + Pace-Chaser-Straightaways-Lv2 Pace-Chaser-Straightaways + Pace-Chaser-Corners-Lv2 Pace-Chaser-Corners + Technician Shrewd-Step + Determined-Descent Straight-Descent + Gourmand Hydrate + Shatterproof Tactical-Tweak + Dazzling-Disorientation Disorient + Late-Surger-Straightaways-Lv2 Late-Surger-Straightaways + Late-Surger-Corners-Lv2 Late-Surger-Corners + Hard-Worker Fighter - Million-CC + Fifteen-Million-CC + One-Million-CC + Relax A-Small-Breather + The-Bigger-Picture Studious + All-Seeing-Eyes Sharp-Gaze + End-Closer-Straightaways-Lv2 End-Closer-Straightaways + End-Closer-Corners-Lv2 End-Closer-Corners + The-Coast-Is-Clear I-Can-See-Right-Through-You + Go-Home-Specialist After-School-Stroll + Serenity Levelheaded + Crusader Strategist + Petrifying-Gaze Intense-Gaze + Front-Runner-Savvy-Lv2 Front-Runner-Savvy + Pace-Chaser-Savvy-Lv2 Pace-Chaser-Savvy + Late-Surger-Savvy-Lv2 Late-Surger-Savvy + End-Closer-Savvy-Lv2 End-Closer-Savvy + Super-Lucky-Seven Lucky-Seven Triple-Sevens Highlander Uma-Stan + Superstan Groundwork Tail-Held-High Shake-It-Out @@ -241,530 +400,878 @@ pub type skill-group Lone-Wolf Slipstream Playtimes-Over + Trending-in-the-Charts Top-Pick + Lead-the-Charge Forward-March + Lie-in-Wait Be-Still + Come-What-May All-I-ve-Got Head-On Early-Start Risky-Business + Burning-Spirit-SPD Ignited-Spirit-SPD + Burning-Spirit-STA Ignited-Spirit-STA + Burning-Spirit-PWR Ignited-Spirit-PWR + Burning-Spirit-GUTS Ignited-Spirit-GUTS + Burning-Spirit-WIT Ignited-Spirit-WIT Unquenched-Thirst Unchanging -// Map a skill group to its ID. -pub fip fun skill-group/group-id(^sg: skill-group): int - match sg - Warning-Shot -> 1007 - Xceleration -> 1008 - Red-Ace -> 1009 - Focused-Mind -> 1011 - Corazon-Ardiente -> 1014 - Empresss-Pride -> 1018 - First-Place-Kiss -> 1024 - Feel-the-Burn -> 1027 - Introduction-to-Physiology -> 1032 - V-Is-for-Victory -> 1035 - Class-Rep-Speed-Bakushin -> 1041 - Clear-Heart -> 1045 - Super-Duper-Stoked -> 1052 - Luck-Be-with-Me -> 1056 - I-Can-Win-Sometimes-Right -> 1060 - Call-Me-King -> 1061 - Shooting-Star -> 10001 - The-View-from-the-Lead-Is-Mine -> 10002 - Sky-High-Teio-Step -> 10003 - Red-Shift-LP1211-M -> 10004 - Lights-of-Vaudeville -> 10005 - Triumphant-Pulse -> 10006 - Anchors-Aweigh -> 10007 - Cut-and-Drive -> 10008 - Resplendent-Red-Ace -> 10009 - Shooting-for-Victory -> 10010 - Where-Theres-a-Will-Theres-a-Way -> 10011 - You-and-Me-One-on-One -> 10012 - The-Duty-of-Dignity-Calls -> 10013 - Victoria-por-plancha -> 10014 - This-Dance-Is-for-Vittoria -> 10015 - Shadow-Break -> 10016 - Behold-Thine-Emperors-Divine-Might -> 10017 - Blazing-Pride -> 10018 - OMG-The-Final-Sprint -> 10019 - Angling-and-Scheming -> 10020 - Win-QED -> 10023 - Flashy-Landing -> 10024 - Chasing-After-You -> 10025 - G00-First-FInfinity -> 10026 - Lets-Pump-Some-Iron -> 10027 - YUMMY-SPEED -> 10028 - Blue-Rose-Closer -> 10030 - U-ma2 -> 10032 - Our-Ticket-to-Win -> 10035 - Schwarzes-Schwert -> 10037 - LookatCurren -> 10038 - A-Princess-Must-Seize-Victory -> 10039 - KEEP-IT-REAL -> 10040 - Genius-x-Bakushin-Victory -> 10041 - Pure-Heart -> 10045 - SPARKLY-STARDOM -> 10046 - Pop-Polish -> 10048 - Nemesis -> 10050 - Super-Duper-Climax -> 10052 - I-See-Victory-in-My-Future -> 10056 - I-Never-Goof-Up -> 10058 - Moving-Past-and-Beyond -> 10059 - Just-a-Little-Farther -> 10060 - Prideful-King -> 10061 - Dazzl-n-Diver -> 11001 - Certain-Victory -> 11003 - A-Kiss-for-Courage -> 11004 - Festive-Miracle -> 11006 - Superior-Heal -> 11011 - Legacy-of-the-Strong -> 11013 - Condors-Fury -> 11014 - Arrows-Whistle-Shadows-Disperse -> 11017 - Eternal-Moments -> 11018 - Presents-from-X -> 11023 - Flowery-Maneuver -> 11024 - Every-Rose-Has-Its-Fangs -> 11030 - Dancing-in-the-Leaves -> 11040 - Give-Mummy-a-Hug -> 11045 - Bountiful-Harvest -> 11056 - Right-Handed -> 20001 - Left-Handed -> 20002 - Tokyo-Racecourse -> 20003 - Nakayama-Racecourse -> 20004 - Hanshin-Racecourse -> 20005 - Kyoto-Racecourse -> 20006 - Chukyo-Racecourse -> 20007 - Sapporo-Racecourse -> 20008 - Hakodate-Racecourse -> 20009 - Fukushima-Racecourse -> 20010 - Niigata-Racecourse -> 20011 - Kokura-Racecourse -> 20012 - Standard-Distance -> 20013 - Non-Standard-Distance -> 20014 - Firm-Conditions -> 20015 - Wet-Conditions -> 20016 - Spring-Runner -> 20017 - Summer-Runner -> 20018 - Fall-Runner -> 20019 - Winter-Runner -> 20020 - Sunny-Days -> 20021 - Cloudy-Days -> 20022 - Rainy-Days -> 20023 - Snowy-Days -> 20024 - Inner-Post-Proficiency -> 20025 - Outer-Post-Proficiency -> 20026 - Maverick -> 20027 - Competitive-Spirit -> 20028 - Target-in-Sight -> 20029 - Long-Shot -> 20030 - Corner-Adept -> 20033 - Corner-Acceleration -> 20034 - Corner-Recovery -> 20035 - Straightaway-Adept -> 20036 - Straightaway-Acceleration -> 20037 - Straightaway-Recovery -> 20038 - Focus -> 20043 - Lay-Low -> 20044 - Prudent-Positioning -> 20045 - Ramp-Up -> 20046 - Pace-Strategy -> 20047 - Calm-in-a-Crowd -> 20048 - Nimble-Navigator -> 20049 - Go-with-the-Flow -> 20050 - Homestretch-Haste -> 20051 - Early-Lead -> 20053 - Fast-Paced -> 20054 - Final-Push -> 20055 - Stamina-to-Spare -> 20056 - Preferred-Position -> 20057 - Prepared-to-Pass -> 20058 - Position-Pilfer -> 20059 - Slick-Surge -> 20060 - Outer-Swell -> 20061 - Standing-By -> 20062 - Masterful-Gambit -> 20063 - Straightaway-Spurt -> 20064 - Sprinting-Gear -> 20065 - Wait-and-See -> 20066 - Gap-Closer -> 20067 - Productive-Plan -> 20068 - Watchful-Eye -> 20069 - Updrafters -> 20070 - Rosy-Outlook -> 20071 - Up-Tempo -> 20072 - Steadfast -> 20073 - Deep-Breaths -> 20074 - Inside-Scoop -> 20075 - Extra-Tank -> 20076 - Trick-Front -> 20077 - Trick-Rear -> 20078 - Frenzied-Front-Runners -> 20079 - Frenzied-Pace-Chasers -> 20080 - Frenzied-Late-Surgers -> 20081 - Frenzied-End-Closers -> 20082 - Subdued-Front-Runners -> 20083 - Flustered-Front-Runners -> 20084 - Hesitant-Front-Runners -> 20085 - Subdued-Pace-Chasers -> 20086 - Flustered-Pace-Chasers -> 20087 - Hesitant-Pace-Chasers -> 20088 - Subdued-Late-Surgers -> 20089 - Flustered-Late-Surgers -> 20090 - Hesitant-Late-Surgers -> 20091 - Subdued-End-Closers -> 20092 - Flustered-End-Closers -> 20093 - Hesitant-End-Closers -> 20094 - Oi-Racecourse -> 20095 - Sprint-Straightaways -> 20096 - Sprint-Corners -> 20097 - Huge-Lead -> 20098 - Countermeasure -> 20099 - Meticulous-Measures -> 20100 - Intimidate -> 20101 - Stop-Right-There -> 20102 - Mile-Straightaways -> 20103 - Mile-Corners -> 20104 - Shifting-Gears -> 20105 - Acceleration -> 20106 - Unyielding-Spirit -> 20107 - Speed-Eater -> 20108 - Opening-Gambit -> 20109 - Medium-Straightaways -> 20110 - Medium-Corners -> 20111 - Hawkeye -> 20112 - Thunderbolt-Step -> 20113 - Soft-Step -> 20114 - Tether -> 20115 - Murmur -> 20116 - Long-Straightaways -> 20117 - Long-Corners -> 20118 - Keeping-the-Lead -> 20119 - Passing-Pro -> 20120 - Pressure -> 20121 - Stamina-Eater -> 20122 - Smoke-Screen -> 20123 - Front-Runner-Straightaways -> 20124 - Front-Runner-Corners -> 20125 - Dodging-Danger -> 20126 - Leaders-Pride -> 20127 - Moxie -> 20128 - Second-Wind -> 20129 - Restart -> 20130 - Pace-Chaser-Straightaways -> 20131 - Pace-Chaser-Corners -> 20132 - Shrewd-Step -> 20133 - Straight-Descent -> 20134 - Hydrate -> 20135 - Tactical-Tweak -> 20136 - Disorient -> 20137 - Late-Surger-Straightaways -> 20138 - Late-Surger-Corners -> 20139 - Fighter -> 20140 - Million-CC -> 20141 - A-Small-Breather -> 20142 - Studious -> 20143 - Sharp-Gaze -> 20144 - End-Closer-Straightaways -> 20145 - End-Closer-Corners -> 20146 - I-Can-See-Right-Through-You -> 20147 - After-School-Stroll -> 20148 - Levelheaded -> 20149 - Strategist -> 20150 - Intense-Gaze -> 20151 - Front-Runner-Savvy -> 20152 - Pace-Chaser-Savvy -> 20153 - Late-Surger-Savvy -> 20154 - End-Closer-Savvy -> 20155 - Lucky-Seven -> 20156 - Triple-Sevens -> 20157 - Highlander -> 20158 - Uma-Stan -> 20159 - Groundwork -> 20160 - Tail-Held-High -> 20161 - Shake-It-Out -> 20162 - Sympathy -> 20163 - Lone-Wolf -> 20164 - Slipstream -> 20165 - Playtimes-Over -> 20166 - Top-Pick -> 20167 - Forward-March -> 20168 - Be-Still -> 20169 - All-I-ve-Got -> 20170 - Head-On -> 20190 - Early-Start -> 20202 - Risky-Business -> 20203 - Ignited-Spirit-SPD -> 21001 - Ignited-Spirit-STA -> 21002 - Ignited-Spirit-PWR -> 21003 - Ignited-Spirit-GUTS -> 21004 - Ignited-Spirit-WIT -> 21005 - Unquenched-Thirst -> 30001 - Unchanging -> 30002 +// Map a skill to its ID. +pub fip fun skill/skill-id(^s: skill): int + match s + Warning-Shot -> 10071 + Xceleration -> 10081 + Red-Ace -> 10091 + Focused-Mind -> 10111 + Corazon-Ardiente -> 10141 + Empresss-Pride -> 10181 + First-Place-Kiss -> 10241 + Feel-the-Burn -> 10271 + Introduction-to-Physiology -> 10321 + V-Is-for-Victory -> 10351 + Class-Rep-Speed-Bakushin -> 10411 + Clear-Heart -> 10451 + Super-Duper-Stoked -> 10521 + Luck-Be-with-Me -> 10561 + I-Can-Win-Sometimes-Right -> 10601 + Call-Me-King -> 10611 + Shooting-Star -> 100011 + The-View-from-the-Lead-Is-Mine -> 100021 + Sky-High-Teio-Step -> 100031 + Red-Shift-LP1211-M -> 100041 + Lights-of-Vaudeville -> 100051 + Triumphant-Pulse -> 100061 + Anchors-Aweigh -> 100071 + Cut-and-Drive -> 100081 + Resplendent-Red-Ace -> 100091 + Shooting-for-Victory -> 100101 + Where-Theres-a-Will-Theres-a-Way -> 100111 + You-and-Me-One-on-One -> 100121 + The-Duty-of-Dignity-Calls -> 100131 + Victoria-por-plancha -> 100141 + This-Dance-Is-for-Vittoria -> 100151 + Shadow-Break -> 100161 + Behold-Thine-Emperors-Divine-Might -> 100171 + Blazing-Pride -> 100181 + OMG-The-Final-Sprint -> 100191 + Angling-and-Scheming -> 100201 + Win-QED -> 100231 + Flashy-Landing -> 100241 + Chasing-After-You -> 100251 + G00-First-FInfinity -> 100261 + Lets-Pump-Some-Iron -> 100271 + YUMMY-SPEED -> 100281 + Blue-Rose-Closer -> 100301 + U-ma2 -> 100321 + Our-Ticket-to-Win -> 100351 + Schwarzes-Schwert -> 100371 + LookatCurren -> 100381 + A-Princess-Must-Seize-Victory -> 100391 + KEEP-IT-REAL -> 100401 + Genius-x-Bakushin-Victory -> 100411 + Pure-Heart -> 100451 + SPARKLY-STARDOM -> 100461 + Pop-Polish -> 100481 + Nemesis -> 100501 + Super-Duper-Climax -> 100521 + I-See-Victory-in-My-Future -> 100561 + I-Never-Goof-Up -> 100581 + Moving-Past-and-Beyond -> 100591 + Just-a-Little-Farther -> 100601 + Prideful-King -> 100611 + Dazzl-n-Diver -> 110011 + Certain-Victory -> 110031 + A-Kiss-for-Courage -> 110041 + Festive-Miracle -> 110061 + Superior-Heal -> 110111 + Legacy-of-the-Strong -> 110131 + Condors-Fury -> 110141 + Arrows-Whistle-Shadows-Disperse -> 110171 + Eternal-Moments -> 110181 + Presents-from-X -> 110231 + Flowery-Maneuver -> 110241 + Every-Rose-Has-Its-Fangs -> 110301 + Dancing-in-the-Leaves -> 110401 + Give-Mummy-a-Hug -> 110451 + Bountiful-Harvest -> 110561 + Right-Handed-Lv2 -> 200011 + Right-Handed -> 200012 + Right-Handed-x -> 200013 + Left-Handed-Lv2 -> 200021 + Left-Handed -> 200022 + Left-Handed-x -> 200023 + Tokyo-Racecourse-Lv2 -> 200031 + Tokyo-Racecourse -> 200032 + Tokyo-Racecourse-x -> 200033 + Nakayama-Racecourse-Lv2 -> 200041 + Nakayama-Racecourse -> 200042 + Nakayama-Racecourse-x -> 200043 + Hanshin-Racecourse-Lv2 -> 200051 + Hanshin-Racecourse -> 200052 + Hanshin-Racecourse-x -> 200053 + Kyoto-Racecourse-Lv2 -> 200061 + Kyoto-Racecourse -> 200062 + Kyoto-Racecourse-x -> 200063 + Yodo-Invicta -> 200064 + Chukyo-Racecourse-Lv2 -> 200071 + Chukyo-Racecourse -> 200072 + Chukyo-Racecourse-x -> 200073 + Sapporo-Racecourse-Lv2 -> 200081 + Sapporo-Racecourse -> 200082 + Sapporo-Racecourse-x -> 200083 + Hakodate-Racecourse-Lv2 -> 200091 + Hakodate-Racecourse -> 200092 + Hakodate-Racecourse-x -> 200093 + Fukushima-Racecourse-Lv2 -> 200101 + Fukushima-Racecourse -> 200102 + Fukushima-Racecourse-x -> 200103 + Niigata-Racecourse-Lv2 -> 200111 + Niigata-Racecourse -> 200112 + Niigata-Racecourse-x -> 200113 + Kokura-Racecourse-Lv2 -> 200121 + Kokura-Racecourse -> 200122 + Kokura-Racecourse-x -> 200123 + Standard-Distance-Lv2 -> 200131 + Standard-Distance -> 200132 + Standard-Distance-x -> 200133 + Non-Standard-Distance-Lv2 -> 200141 + Non-Standard-Distance -> 200142 + Non-Standard-Distance-x -> 200143 + Firm-Conditions-Lv2 -> 200151 + Firm-Conditions -> 200152 + Firm-Conditions-x -> 200153 + Wet-Conditions-Lv2 -> 200161 + Wet-Conditions -> 200162 + Wet-Conditions-x -> 200163 + Spring-Runner-Lv2 -> 200171 + Spring-Runner -> 200172 + Spring-Runner-x -> 200173 + Summer-Runner-Lv2 -> 200181 + Summer-Runner -> 200182 + Summer-Runner-x -> 200183 + Fall-Runner-Lv2 -> 200191 + Fall-Runner -> 200192 + Fall-Runner-x -> 200193 + Fall-Frenzy -> 200194 + Winter-Runner-Lv2 -> 200201 + Winter-Runner -> 200202 + Winter-Runner-x -> 200203 + Sunny-Days-Lv2 -> 200211 + Sunny-Days -> 200212 + Cloudy-Days-Lv2 -> 200221 + Cloudy-Days -> 200222 + Rainy-Days-Lv2 -> 200231 + Rainy-Days -> 200232 + Rainy-Days-x -> 200233 + Snowy-Days-Lv2 -> 200241 + Snowy-Days -> 200242 + Inner-Post-Proficiency-Lv2 -> 200251 + Inner-Post-Proficiency -> 200252 + Inner-Post-Averseness -> 200253 + Outer-Post-Proficiency-Lv2 -> 200261 + Outer-Post-Proficiency -> 200262 + Outer-Post-Averseness -> 200263 + Maverick-Lv2 -> 200271 + Maverick -> 200272 + Competitive-Spirit-Lv2 -> 200281 + Competitive-Spirit -> 200282 + Wallflower -> 200283 + Target-in-Sight-Lv2 -> 200291 + Target-in-Sight -> 200292 + Long-Shot-Lv2 -> 200301 + Long-Shot -> 200302 + Professor-of-Curvature -> 200331 + Corner-Adept -> 200332 + Corner-Adept-x -> 200333 + Corner-Connoisseur -> 200341 + Corner-Acceleration -> 200342 + Corner-Acceleration-x -> 200343 + Swinging-Maestro -> 200351 + Corner-Recovery -> 200352 + Corner-Recovery-x -> 200353 + Beeline-Burst -> 200361 + Straightaway-Adept -> 200362 + Rushing-Gale -> 200371 + Straightaway-Acceleration -> 200372 + Breath-of-Fresh-Air -> 200381 + Straightaway-Recovery -> 200382 + Concentration -> 200431 + Focus -> 200432 + Gatekept -> 200433 + Iron-Will -> 200441 + Lay-Low -> 200442 + Center-Stage -> 200451 + Prudent-Positioning -> 200452 + Its-On -> 200461 + Ramp-Up -> 200462 + Indomitable -> 200471 + Pace-Strategy -> 200472 + Unruffled -> 200481 + Calm-in-a-Crowd -> 200482 + No-Stopping-Me -> 200491 + Nimble-Navigator -> 200492 + Lane-Legerdemain -> 200501 + Go-with-the-Flow -> 200502 + In-Body-and-Mind -> 200511 + Homestretch-Haste -> 200512 + Taking-the-Lead -> 200531 + Early-Lead -> 200532 + Escape-Artist -> 200541 + Fast-Paced -> 200542 + Unrestrained -> 200551 + Final-Push -> 200552 + Calm-and-Collected -> 200561 + Stamina-to-Spare -> 200562 + Race-Planner -> 200571 + Preferred-Position -> 200572 + Speed-Star -> 200581 + Prepared-to-Pass -> 200582 + Fast-Furious -> 200591 + Position-Pilfer -> 200592 + On-Your-Left -> 200601 + Slick-Surge -> 200602 + Rising-Dragon -> 200611 + Outer-Swell -> 200612 + Sleeping-Lion -> 200621 + Standing-By -> 200622 + Sturm-und-Drang -> 200631 + Masterful-Gambit -> 200632 + Encroaching-Shadow -> 200641 + Straightaway-Spurt -> 200642 + Turbo-Sprint -> 200651 + Sprinting-Gear -> 200652 + Wait-and-See -> 200662 + Blinding-Flash -> 200671 + Gap-Closer -> 200672 + Mile-Maven -> 200681 + Productive-Plan -> 200682 + Keen-Eye -> 200691 + Watchful-Eye -> 200692 + Furious-Feat -> 200701 + Updrafters -> 200702 + Trackblazer -> 200711 + Rosy-Outlook -> 200712 + Killer-Tunes -> 200721 + Up-Tempo -> 200722 + Unyielding -> 200731 + Steadfast -> 200732 + Cooldown -> 200741 + Deep-Breaths -> 200742 + Innate-Experience -> 200751 + Inside-Scoop -> 200752 + Adrenaline-Rush -> 200761 + Extra-Tank -> 200762 + Trick-Front -> 200771 + Tantalizing-Trick -> 200772 + Trick-Rear -> 200781 + Frenzied-Front-Runners -> 200791 + Frenzied-Pace-Chasers -> 200801 + Frenzied-Late-Surgers -> 200811 + Frenzied-End-Closers -> 200821 + Subdued-Front-Runners -> 200831 + Flustered-Front-Runners -> 200841 + Hesitant-Front-Runners -> 200851 + Subdued-Pace-Chasers -> 200861 + Flustered-Pace-Chasers -> 200871 + Hesitant-Pace-Chasers -> 200881 + Subdued-Late-Surgers -> 200891 + Flustered-Late-Surgers -> 200901 + Hesitant-Late-Surgers -> 200911 + Subdued-End-Closers -> 200921 + Flustered-End-Closers -> 200931 + Hesitant-End-Closers -> 200941 + Oi-Racecourse-Lv2 -> 200951 + Oi-Racecourse -> 200952 + Oi-Racecourse-x -> 200953 + Sprint-Straightaways-Lv2 -> 200961 + Sprint-Straightaways -> 200962 + Sprint-Corners-Lv2 -> 200971 + Sprint-Corners -> 200972 + Staggering-Lead -> 200981 + Huge-Lead -> 200982 + Plan-X -> 200991 + Countermeasure -> 200992 + Perfect-Prep -> 201001 + Meticulous-Measures -> 201002 + Adored-by-All -> 201011 + Intimidate -> 201012 + You-ve-Got-No-Shot -> 201021 + Stop-Right-There -> 201022 + Mile-Straightaways-Lv2 -> 201031 + Mile-Straightaways -> 201032 + Mile-Corners-Lv2 -> 201041 + Mile-Corners -> 201042 + Changing-Gears -> 201051 + Shifting-Gears -> 201052 + Step-on-the-Gas -> 201061 + Acceleration -> 201062 + Big-Sisterly -> 201071 + Unyielding-Spirit -> 201072 + Greed-for-Speed -> 201081 + Speed-Eater -> 201082 + Battle-Formation -> 201091 + Opening-Gambit -> 201092 + Medium-Straightaways-Lv2 -> 201101 + Medium-Straightaways -> 201102 + Medium-Corners-Lv2 -> 201111 + Medium-Corners -> 201112 + Clairvoyance -> 201121 + Hawkeye -> 201122 + Lightning-Step -> 201131 + Thunderbolt-Step -> 201132 + Miraculous-Step -> 201141 + Soft-Step -> 201142 + Dominator -> 201151 + Tether -> 201152 + Mystifying-Murmur -> 201161 + Murmur -> 201162 + Long-Straightaways-Lv2 -> 201171 + Long-Straightaways -> 201172 + Long-Corners-Lv2 -> 201181 + Long-Corners -> 201182 + Vanguard-Spirit -> 201191 + Keeping-the-Lead -> 201192 + VIP-Pass -> 201201 + Passing-Pro -> 201202 + Overwhelming-Pressure -> 201211 + Pressure -> 201212 + Stamina-Siphon -> 201221 + Stamina-Eater -> 201222 + Illusionist -> 201231 + Smoke-Screen -> 201232 + Front-Runner-Straightaways-Lv2 -> 201241 + Front-Runner-Straightaways -> 201242 + Front-Runner-Corners-Lv2 -> 201251 + Front-Runner-Corners -> 201252 + Sixth-Sense -> 201261 + Dodging-Danger -> 201262 + Leaders-Pride -> 201272 + Restless -> 201281 + Moxie -> 201282 + Reignition -> 201291 + Second-Wind -> 201292 + Restart -> 201302 + Pace-Chaser-Straightaways-Lv2 -> 201311 + Pace-Chaser-Straightaways -> 201312 + Pace-Chaser-Corners-Lv2 -> 201321 + Pace-Chaser-Corners -> 201322 + Technician -> 201331 + Shrewd-Step -> 201332 + Determined-Descent -> 201341 + Straight-Descent -> 201342 + Gourmand -> 201351 + Hydrate -> 201352 + Shatterproof -> 201361 + Tactical-Tweak -> 201362 + Dazzling-Disorientation -> 201371 + Disorient -> 201372 + Late-Surger-Straightaways-Lv2 -> 201381 + Late-Surger-Straightaways -> 201382 + Late-Surger-Corners-Lv2 -> 201391 + Late-Surger-Corners -> 201392 + Hard-Worker -> 201401 + Fighter -> 201402 + Fifteen-Million-CC -> 201411 + One-Million-CC -> 201412 + Relax -> 201421 + A-Small-Breather -> 201422 + The-Bigger-Picture -> 201431 + Studious -> 201432 + All-Seeing-Eyes -> 201441 + Sharp-Gaze -> 201442 + End-Closer-Straightaways-Lv2 -> 201451 + End-Closer-Straightaways -> 201452 + End-Closer-Corners-Lv2 -> 201461 + End-Closer-Corners -> 201462 + The-Coast-Is-Clear -> 201471 + I-Can-See-Right-Through-You -> 201472 + Go-Home-Specialist -> 201481 + After-School-Stroll -> 201482 + Serenity -> 201491 + Levelheaded -> 201492 + Crusader -> 201501 + Strategist -> 201502 + Petrifying-Gaze -> 201511 + Intense-Gaze -> 201512 + Front-Runner-Savvy-Lv2 -> 201521 + Front-Runner-Savvy -> 201522 + Pace-Chaser-Savvy-Lv2 -> 201531 + Pace-Chaser-Savvy -> 201532 + Late-Surger-Savvy-Lv2 -> 201541 + Late-Surger-Savvy -> 201542 + End-Closer-Savvy-Lv2 -> 201551 + End-Closer-Savvy -> 201552 + Super-Lucky-Seven -> 201561 + Lucky-Seven -> 201562 + Triple-Sevens -> 201571 + Highlander -> 201581 + Uma-Stan -> 201591 + Superstan -> 201592 + Groundwork -> 201601 + Tail-Held-High -> 201611 + Shake-It-Out -> 201621 + Sympathy -> 201631 + Lone-Wolf -> 201641 + Slipstream -> 201651 + Playtimes-Over -> 201661 + Trending-in-the-Charts -> 201671 + Top-Pick -> 201672 + Lead-the-Charge -> 201681 + Forward-March -> 201682 + Lie-in-Wait -> 201691 + Be-Still -> 201692 + Come-What-May -> 201701 + All-I-ve-Got -> 201702 + Head-On -> 201902 + Early-Start -> 202022 + Risky-Business -> 202032 + Burning-Spirit-SPD -> 210011 + Ignited-Spirit-SPD -> 210012 + Burning-Spirit-STA -> 210021 + Ignited-Spirit-STA -> 210022 + Burning-Spirit-PWR -> 210031 + Ignited-Spirit-PWR -> 210032 + Burning-Spirit-GUTS -> 210041 + Ignited-Spirit-GUTS -> 210042 + Burning-Spirit-WIT -> 210051 + Ignited-Spirit-WIT -> 210052 + Unquenched-Thirst -> 300011 + Unchanging -> 300021 -// Get the skill group for an ID. -pub fip(1) fun skill-group/from-id(^id: int): maybe +// Get the skill for an ID. +pub fip(1) fun skill/from-id(^id: int): maybe match id - 1007 -> Just(Warning-Shot) - 1008 -> Just(Xceleration) - 1009 -> Just(Red-Ace) - 1011 -> Just(Focused-Mind) - 1014 -> Just(Corazon-Ardiente) - 1018 -> Just(Empresss-Pride) - 1024 -> Just(First-Place-Kiss) - 1027 -> Just(Feel-the-Burn) - 1032 -> Just(Introduction-to-Physiology) - 1035 -> Just(V-Is-for-Victory) - 1041 -> Just(Class-Rep-Speed-Bakushin) - 1045 -> Just(Clear-Heart) - 1052 -> Just(Super-Duper-Stoked) - 1056 -> Just(Luck-Be-with-Me) - 1060 -> Just(I-Can-Win-Sometimes-Right) - 1061 -> Just(Call-Me-King) - 10001 -> Just(Shooting-Star) - 10002 -> Just(The-View-from-the-Lead-Is-Mine) - 10003 -> Just(Sky-High-Teio-Step) - 10004 -> Just(Red-Shift-LP1211-M) - 10005 -> Just(Lights-of-Vaudeville) - 10006 -> Just(Triumphant-Pulse) - 10007 -> Just(Anchors-Aweigh) - 10008 -> Just(Cut-and-Drive) - 10009 -> Just(Resplendent-Red-Ace) - 10010 -> Just(Shooting-for-Victory) - 10011 -> Just(Where-Theres-a-Will-Theres-a-Way) - 10012 -> Just(You-and-Me-One-on-One) - 10013 -> Just(The-Duty-of-Dignity-Calls) - 10014 -> Just(Victoria-por-plancha) - 10015 -> Just(This-Dance-Is-for-Vittoria) - 10016 -> Just(Shadow-Break) - 10017 -> Just(Behold-Thine-Emperors-Divine-Might) - 10018 -> Just(Blazing-Pride) - 10019 -> Just(OMG-The-Final-Sprint) - 10020 -> Just(Angling-and-Scheming) - 10023 -> Just(Win-QED) - 10024 -> Just(Flashy-Landing) - 10025 -> Just(Chasing-After-You) - 10026 -> Just(G00-First-FInfinity) - 10027 -> Just(Lets-Pump-Some-Iron) - 10028 -> Just(YUMMY-SPEED) - 10030 -> Just(Blue-Rose-Closer) - 10032 -> Just(U-ma2) - 10035 -> Just(Our-Ticket-to-Win) - 10037 -> Just(Schwarzes-Schwert) - 10038 -> Just(LookatCurren) - 10039 -> Just(A-Princess-Must-Seize-Victory) - 10040 -> Just(KEEP-IT-REAL) - 10041 -> Just(Genius-x-Bakushin-Victory) - 10045 -> Just(Pure-Heart) - 10046 -> Just(SPARKLY-STARDOM) - 10048 -> Just(Pop-Polish) - 10050 -> Just(Nemesis) - 10052 -> Just(Super-Duper-Climax) - 10056 -> Just(I-See-Victory-in-My-Future) - 10058 -> Just(I-Never-Goof-Up) - 10059 -> Just(Moving-Past-and-Beyond) - 10060 -> Just(Just-a-Little-Farther) - 10061 -> Just(Prideful-King) - 11001 -> Just(Dazzl-n-Diver) - 11003 -> Just(Certain-Victory) - 11004 -> Just(A-Kiss-for-Courage) - 11006 -> Just(Festive-Miracle) - 11011 -> Just(Superior-Heal) - 11013 -> Just(Legacy-of-the-Strong) - 11014 -> Just(Condors-Fury) - 11017 -> Just(Arrows-Whistle-Shadows-Disperse) - 11018 -> Just(Eternal-Moments) - 11023 -> Just(Presents-from-X) - 11024 -> Just(Flowery-Maneuver) - 11030 -> Just(Every-Rose-Has-Its-Fangs) - 11040 -> Just(Dancing-in-the-Leaves) - 11045 -> Just(Give-Mummy-a-Hug) - 11056 -> Just(Bountiful-Harvest) - 20001 -> Just(Right-Handed) - 20002 -> Just(Left-Handed) - 20003 -> Just(Tokyo-Racecourse) - 20004 -> Just(Nakayama-Racecourse) - 20005 -> Just(Hanshin-Racecourse) - 20006 -> Just(Kyoto-Racecourse) - 20007 -> Just(Chukyo-Racecourse) - 20008 -> Just(Sapporo-Racecourse) - 20009 -> Just(Hakodate-Racecourse) - 20010 -> Just(Fukushima-Racecourse) - 20011 -> Just(Niigata-Racecourse) - 20012 -> Just(Kokura-Racecourse) - 20013 -> Just(Standard-Distance) - 20014 -> Just(Non-Standard-Distance) - 20015 -> Just(Firm-Conditions) - 20016 -> Just(Wet-Conditions) - 20017 -> Just(Spring-Runner) - 20018 -> Just(Summer-Runner) - 20019 -> Just(Fall-Runner) - 20020 -> Just(Winter-Runner) - 20021 -> Just(Sunny-Days) - 20022 -> Just(Cloudy-Days) - 20023 -> Just(Rainy-Days) - 20024 -> Just(Snowy-Days) - 20025 -> Just(Inner-Post-Proficiency) - 20026 -> Just(Outer-Post-Proficiency) - 20027 -> Just(Maverick) - 20028 -> Just(Competitive-Spirit) - 20029 -> Just(Target-in-Sight) - 20030 -> Just(Long-Shot) - 20033 -> Just(Corner-Adept) - 20034 -> Just(Corner-Acceleration) - 20035 -> Just(Corner-Recovery) - 20036 -> Just(Straightaway-Adept) - 20037 -> Just(Straightaway-Acceleration) - 20038 -> Just(Straightaway-Recovery) - 20043 -> Just(Focus) - 20044 -> Just(Lay-Low) - 20045 -> Just(Prudent-Positioning) - 20046 -> Just(Ramp-Up) - 20047 -> Just(Pace-Strategy) - 20048 -> Just(Calm-in-a-Crowd) - 20049 -> Just(Nimble-Navigator) - 20050 -> Just(Go-with-the-Flow) - 20051 -> Just(Homestretch-Haste) - 20053 -> Just(Early-Lead) - 20054 -> Just(Fast-Paced) - 20055 -> Just(Final-Push) - 20056 -> Just(Stamina-to-Spare) - 20057 -> Just(Preferred-Position) - 20058 -> Just(Prepared-to-Pass) - 20059 -> Just(Position-Pilfer) - 20060 -> Just(Slick-Surge) - 20061 -> Just(Outer-Swell) - 20062 -> Just(Standing-By) - 20063 -> Just(Masterful-Gambit) - 20064 -> Just(Straightaway-Spurt) - 20065 -> Just(Sprinting-Gear) - 20066 -> Just(Wait-and-See) - 20067 -> Just(Gap-Closer) - 20068 -> Just(Productive-Plan) - 20069 -> Just(Watchful-Eye) - 20070 -> Just(Updrafters) - 20071 -> Just(Rosy-Outlook) - 20072 -> Just(Up-Tempo) - 20073 -> Just(Steadfast) - 20074 -> Just(Deep-Breaths) - 20075 -> Just(Inside-Scoop) - 20076 -> Just(Extra-Tank) - 20077 -> Just(Trick-Front) - 20078 -> Just(Trick-Rear) - 20079 -> Just(Frenzied-Front-Runners) - 20080 -> Just(Frenzied-Pace-Chasers) - 20081 -> Just(Frenzied-Late-Surgers) - 20082 -> Just(Frenzied-End-Closers) - 20083 -> Just(Subdued-Front-Runners) - 20084 -> Just(Flustered-Front-Runners) - 20085 -> Just(Hesitant-Front-Runners) - 20086 -> Just(Subdued-Pace-Chasers) - 20087 -> Just(Flustered-Pace-Chasers) - 20088 -> Just(Hesitant-Pace-Chasers) - 20089 -> Just(Subdued-Late-Surgers) - 20090 -> Just(Flustered-Late-Surgers) - 20091 -> Just(Hesitant-Late-Surgers) - 20092 -> Just(Subdued-End-Closers) - 20093 -> Just(Flustered-End-Closers) - 20094 -> Just(Hesitant-End-Closers) - 20095 -> Just(Oi-Racecourse) - 20096 -> Just(Sprint-Straightaways) - 20097 -> Just(Sprint-Corners) - 20098 -> Just(Huge-Lead) - 20099 -> Just(Countermeasure) - 20100 -> Just(Meticulous-Measures) - 20101 -> Just(Intimidate) - 20102 -> Just(Stop-Right-There) - 20103 -> Just(Mile-Straightaways) - 20104 -> Just(Mile-Corners) - 20105 -> Just(Shifting-Gears) - 20106 -> Just(Acceleration) - 20107 -> Just(Unyielding-Spirit) - 20108 -> Just(Speed-Eater) - 20109 -> Just(Opening-Gambit) - 20110 -> Just(Medium-Straightaways) - 20111 -> Just(Medium-Corners) - 20112 -> Just(Hawkeye) - 20113 -> Just(Thunderbolt-Step) - 20114 -> Just(Soft-Step) - 20115 -> Just(Tether) - 20116 -> Just(Murmur) - 20117 -> Just(Long-Straightaways) - 20118 -> Just(Long-Corners) - 20119 -> Just(Keeping-the-Lead) - 20120 -> Just(Passing-Pro) - 20121 -> Just(Pressure) - 20122 -> Just(Stamina-Eater) - 20123 -> Just(Smoke-Screen) - 20124 -> Just(Front-Runner-Straightaways) - 20125 -> Just(Front-Runner-Corners) - 20126 -> Just(Dodging-Danger) - 20127 -> Just(Leaders-Pride) - 20128 -> Just(Moxie) - 20129 -> Just(Second-Wind) - 20130 -> Just(Restart) - 20131 -> Just(Pace-Chaser-Straightaways) - 20132 -> Just(Pace-Chaser-Corners) - 20133 -> Just(Shrewd-Step) - 20134 -> Just(Straight-Descent) - 20135 -> Just(Hydrate) - 20136 -> Just(Tactical-Tweak) - 20137 -> Just(Disorient) - 20138 -> Just(Late-Surger-Straightaways) - 20139 -> Just(Late-Surger-Corners) - 20140 -> Just(Fighter) - 20141 -> Just(Million-CC) - 20142 -> Just(A-Small-Breather) - 20143 -> Just(Studious) - 20144 -> Just(Sharp-Gaze) - 20145 -> Just(End-Closer-Straightaways) - 20146 -> Just(End-Closer-Corners) - 20147 -> Just(I-Can-See-Right-Through-You) - 20148 -> Just(After-School-Stroll) - 20149 -> Just(Levelheaded) - 20150 -> Just(Strategist) - 20151 -> Just(Intense-Gaze) - 20152 -> Just(Front-Runner-Savvy) - 20153 -> Just(Pace-Chaser-Savvy) - 20154 -> Just(Late-Surger-Savvy) - 20155 -> Just(End-Closer-Savvy) - 20156 -> Just(Lucky-Seven) - 20157 -> Just(Triple-Sevens) - 20158 -> Just(Highlander) - 20159 -> Just(Uma-Stan) - 20160 -> Just(Groundwork) - 20161 -> Just(Tail-Held-High) - 20162 -> Just(Shake-It-Out) - 20163 -> Just(Sympathy) - 20164 -> Just(Lone-Wolf) - 20165 -> Just(Slipstream) - 20166 -> Just(Playtimes-Over) - 20167 -> Just(Top-Pick) - 20168 -> Just(Forward-March) - 20169 -> Just(Be-Still) - 20170 -> Just(All-I-ve-Got) - 20190 -> Just(Head-On) - 20202 -> Just(Early-Start) - 20203 -> Just(Risky-Business) - 21001 -> Just(Ignited-Spirit-SPD) - 21002 -> Just(Ignited-Spirit-STA) - 21003 -> Just(Ignited-Spirit-PWR) - 21004 -> Just(Ignited-Spirit-GUTS) - 21005 -> Just(Ignited-Spirit-WIT) - 30001 -> Just(Unquenched-Thirst) - 30002 -> Just(Unchanging) + 10071 -> Just(Warning-Shot) + 10081 -> Just(Xceleration) + 10091 -> Just(Red-Ace) + 10111 -> Just(Focused-Mind) + 10141 -> Just(Corazon-Ardiente) + 10181 -> Just(Empresss-Pride) + 10241 -> Just(First-Place-Kiss) + 10271 -> Just(Feel-the-Burn) + 10321 -> Just(Introduction-to-Physiology) + 10351 -> Just(V-Is-for-Victory) + 10411 -> Just(Class-Rep-Speed-Bakushin) + 10451 -> Just(Clear-Heart) + 10521 -> Just(Super-Duper-Stoked) + 10561 -> Just(Luck-Be-with-Me) + 10601 -> Just(I-Can-Win-Sometimes-Right) + 10611 -> Just(Call-Me-King) + 100011 -> Just(Shooting-Star) + 100021 -> Just(The-View-from-the-Lead-Is-Mine) + 100031 -> Just(Sky-High-Teio-Step) + 100041 -> Just(Red-Shift-LP1211-M) + 100051 -> Just(Lights-of-Vaudeville) + 100061 -> Just(Triumphant-Pulse) + 100071 -> Just(Anchors-Aweigh) + 100081 -> Just(Cut-and-Drive) + 100091 -> Just(Resplendent-Red-Ace) + 100101 -> Just(Shooting-for-Victory) + 100111 -> Just(Where-Theres-a-Will-Theres-a-Way) + 100121 -> Just(You-and-Me-One-on-One) + 100131 -> Just(The-Duty-of-Dignity-Calls) + 100141 -> Just(Victoria-por-plancha) + 100151 -> Just(This-Dance-Is-for-Vittoria) + 100161 -> Just(Shadow-Break) + 100171 -> Just(Behold-Thine-Emperors-Divine-Might) + 100181 -> Just(Blazing-Pride) + 100191 -> Just(OMG-The-Final-Sprint) + 100201 -> Just(Angling-and-Scheming) + 100231 -> Just(Win-QED) + 100241 -> Just(Flashy-Landing) + 100251 -> Just(Chasing-After-You) + 100261 -> Just(G00-First-FInfinity) + 100271 -> Just(Lets-Pump-Some-Iron) + 100281 -> Just(YUMMY-SPEED) + 100301 -> Just(Blue-Rose-Closer) + 100321 -> Just(U-ma2) + 100351 -> Just(Our-Ticket-to-Win) + 100371 -> Just(Schwarzes-Schwert) + 100381 -> Just(LookatCurren) + 100391 -> Just(A-Princess-Must-Seize-Victory) + 100401 -> Just(KEEP-IT-REAL) + 100411 -> Just(Genius-x-Bakushin-Victory) + 100451 -> Just(Pure-Heart) + 100461 -> Just(SPARKLY-STARDOM) + 100481 -> Just(Pop-Polish) + 100501 -> Just(Nemesis) + 100521 -> Just(Super-Duper-Climax) + 100561 -> Just(I-See-Victory-in-My-Future) + 100581 -> Just(I-Never-Goof-Up) + 100591 -> Just(Moving-Past-and-Beyond) + 100601 -> Just(Just-a-Little-Farther) + 100611 -> Just(Prideful-King) + 110011 -> Just(Dazzl-n-Diver) + 110031 -> Just(Certain-Victory) + 110041 -> Just(A-Kiss-for-Courage) + 110061 -> Just(Festive-Miracle) + 110111 -> Just(Superior-Heal) + 110131 -> Just(Legacy-of-the-Strong) + 110141 -> Just(Condors-Fury) + 110171 -> Just(Arrows-Whistle-Shadows-Disperse) + 110181 -> Just(Eternal-Moments) + 110231 -> Just(Presents-from-X) + 110241 -> Just(Flowery-Maneuver) + 110301 -> Just(Every-Rose-Has-Its-Fangs) + 110401 -> Just(Dancing-in-the-Leaves) + 110451 -> Just(Give-Mummy-a-Hug) + 110561 -> Just(Bountiful-Harvest) + 200011 -> Just(Right-Handed-Lv2) + 200012 -> Just(Right-Handed) + 200013 -> Just(Right-Handed-x) + 200021 -> Just(Left-Handed-Lv2) + 200022 -> Just(Left-Handed) + 200023 -> Just(Left-Handed-x) + 200031 -> Just(Tokyo-Racecourse-Lv2) + 200032 -> Just(Tokyo-Racecourse) + 200033 -> Just(Tokyo-Racecourse-x) + 200041 -> Just(Nakayama-Racecourse-Lv2) + 200042 -> Just(Nakayama-Racecourse) + 200043 -> Just(Nakayama-Racecourse-x) + 200051 -> Just(Hanshin-Racecourse-Lv2) + 200052 -> Just(Hanshin-Racecourse) + 200053 -> Just(Hanshin-Racecourse-x) + 200061 -> Just(Kyoto-Racecourse-Lv2) + 200062 -> Just(Kyoto-Racecourse) + 200063 -> Just(Kyoto-Racecourse-x) + 200064 -> Just(Yodo-Invicta) + 200071 -> Just(Chukyo-Racecourse-Lv2) + 200072 -> Just(Chukyo-Racecourse) + 200073 -> Just(Chukyo-Racecourse-x) + 200081 -> Just(Sapporo-Racecourse-Lv2) + 200082 -> Just(Sapporo-Racecourse) + 200083 -> Just(Sapporo-Racecourse-x) + 200091 -> Just(Hakodate-Racecourse-Lv2) + 200092 -> Just(Hakodate-Racecourse) + 200093 -> Just(Hakodate-Racecourse-x) + 200101 -> Just(Fukushima-Racecourse-Lv2) + 200102 -> Just(Fukushima-Racecourse) + 200103 -> Just(Fukushima-Racecourse-x) + 200111 -> Just(Niigata-Racecourse-Lv2) + 200112 -> Just(Niigata-Racecourse) + 200113 -> Just(Niigata-Racecourse-x) + 200121 -> Just(Kokura-Racecourse-Lv2) + 200122 -> Just(Kokura-Racecourse) + 200123 -> Just(Kokura-Racecourse-x) + 200131 -> Just(Standard-Distance-Lv2) + 200132 -> Just(Standard-Distance) + 200133 -> Just(Standard-Distance-x) + 200141 -> Just(Non-Standard-Distance-Lv2) + 200142 -> Just(Non-Standard-Distance) + 200143 -> Just(Non-Standard-Distance-x) + 200151 -> Just(Firm-Conditions-Lv2) + 200152 -> Just(Firm-Conditions) + 200153 -> Just(Firm-Conditions-x) + 200161 -> Just(Wet-Conditions-Lv2) + 200162 -> Just(Wet-Conditions) + 200163 -> Just(Wet-Conditions-x) + 200171 -> Just(Spring-Runner-Lv2) + 200172 -> Just(Spring-Runner) + 200173 -> Just(Spring-Runner-x) + 200181 -> Just(Summer-Runner-Lv2) + 200182 -> Just(Summer-Runner) + 200183 -> Just(Summer-Runner-x) + 200191 -> Just(Fall-Runner-Lv2) + 200192 -> Just(Fall-Runner) + 200193 -> Just(Fall-Runner-x) + 200194 -> Just(Fall-Frenzy) + 200201 -> Just(Winter-Runner-Lv2) + 200202 -> Just(Winter-Runner) + 200203 -> Just(Winter-Runner-x) + 200211 -> Just(Sunny-Days-Lv2) + 200212 -> Just(Sunny-Days) + 200221 -> Just(Cloudy-Days-Lv2) + 200222 -> Just(Cloudy-Days) + 200231 -> Just(Rainy-Days-Lv2) + 200232 -> Just(Rainy-Days) + 200233 -> Just(Rainy-Days-x) + 200241 -> Just(Snowy-Days-Lv2) + 200242 -> Just(Snowy-Days) + 200251 -> Just(Inner-Post-Proficiency-Lv2) + 200252 -> Just(Inner-Post-Proficiency) + 200253 -> Just(Inner-Post-Averseness) + 200261 -> Just(Outer-Post-Proficiency-Lv2) + 200262 -> Just(Outer-Post-Proficiency) + 200263 -> Just(Outer-Post-Averseness) + 200271 -> Just(Maverick-Lv2) + 200272 -> Just(Maverick) + 200281 -> Just(Competitive-Spirit-Lv2) + 200282 -> Just(Competitive-Spirit) + 200283 -> Just(Wallflower) + 200291 -> Just(Target-in-Sight-Lv2) + 200292 -> Just(Target-in-Sight) + 200301 -> Just(Long-Shot-Lv2) + 200302 -> Just(Long-Shot) + 200331 -> Just(Professor-of-Curvature) + 200332 -> Just(Corner-Adept) + 200333 -> Just(Corner-Adept-x) + 200341 -> Just(Corner-Connoisseur) + 200342 -> Just(Corner-Acceleration) + 200343 -> Just(Corner-Acceleration-x) + 200351 -> Just(Swinging-Maestro) + 200352 -> Just(Corner-Recovery) + 200353 -> Just(Corner-Recovery-x) + 200361 -> Just(Beeline-Burst) + 200362 -> Just(Straightaway-Adept) + 200371 -> Just(Rushing-Gale) + 200372 -> Just(Straightaway-Acceleration) + 200381 -> Just(Breath-of-Fresh-Air) + 200382 -> Just(Straightaway-Recovery) + 200431 -> Just(Concentration) + 200432 -> Just(Focus) + 200433 -> Just(Gatekept) + 200441 -> Just(Iron-Will) + 200442 -> Just(Lay-Low) + 200451 -> Just(Center-Stage) + 200452 -> Just(Prudent-Positioning) + 200461 -> Just(Its-On) + 200462 -> Just(Ramp-Up) + 200471 -> Just(Indomitable) + 200472 -> Just(Pace-Strategy) + 200481 -> Just(Unruffled) + 200482 -> Just(Calm-in-a-Crowd) + 200491 -> Just(No-Stopping-Me) + 200492 -> Just(Nimble-Navigator) + 200501 -> Just(Lane-Legerdemain) + 200502 -> Just(Go-with-the-Flow) + 200511 -> Just(In-Body-and-Mind) + 200512 -> Just(Homestretch-Haste) + 200531 -> Just(Taking-the-Lead) + 200532 -> Just(Early-Lead) + 200541 -> Just(Escape-Artist) + 200542 -> Just(Fast-Paced) + 200551 -> Just(Unrestrained) + 200552 -> Just(Final-Push) + 200561 -> Just(Calm-and-Collected) + 200562 -> Just(Stamina-to-Spare) + 200571 -> Just(Race-Planner) + 200572 -> Just(Preferred-Position) + 200581 -> Just(Speed-Star) + 200582 -> Just(Prepared-to-Pass) + 200591 -> Just(Fast-Furious) + 200592 -> Just(Position-Pilfer) + 200601 -> Just(On-Your-Left) + 200602 -> Just(Slick-Surge) + 200611 -> Just(Rising-Dragon) + 200612 -> Just(Outer-Swell) + 200621 -> Just(Sleeping-Lion) + 200622 -> Just(Standing-By) + 200631 -> Just(Sturm-und-Drang) + 200632 -> Just(Masterful-Gambit) + 200641 -> Just(Encroaching-Shadow) + 200642 -> Just(Straightaway-Spurt) + 200651 -> Just(Turbo-Sprint) + 200652 -> Just(Sprinting-Gear) + 200662 -> Just(Wait-and-See) + 200671 -> Just(Blinding-Flash) + 200672 -> Just(Gap-Closer) + 200681 -> Just(Mile-Maven) + 200682 -> Just(Productive-Plan) + 200691 -> Just(Keen-Eye) + 200692 -> Just(Watchful-Eye) + 200701 -> Just(Furious-Feat) + 200702 -> Just(Updrafters) + 200711 -> Just(Trackblazer) + 200712 -> Just(Rosy-Outlook) + 200721 -> Just(Killer-Tunes) + 200722 -> Just(Up-Tempo) + 200731 -> Just(Unyielding) + 200732 -> Just(Steadfast) + 200741 -> Just(Cooldown) + 200742 -> Just(Deep-Breaths) + 200751 -> Just(Innate-Experience) + 200752 -> Just(Inside-Scoop) + 200761 -> Just(Adrenaline-Rush) + 200762 -> Just(Extra-Tank) + 200771 -> Just(Trick-Front) + 200772 -> Just(Tantalizing-Trick) + 200781 -> Just(Trick-Rear) + 200791 -> Just(Frenzied-Front-Runners) + 200801 -> Just(Frenzied-Pace-Chasers) + 200811 -> Just(Frenzied-Late-Surgers) + 200821 -> Just(Frenzied-End-Closers) + 200831 -> Just(Subdued-Front-Runners) + 200841 -> Just(Flustered-Front-Runners) + 200851 -> Just(Hesitant-Front-Runners) + 200861 -> Just(Subdued-Pace-Chasers) + 200871 -> Just(Flustered-Pace-Chasers) + 200881 -> Just(Hesitant-Pace-Chasers) + 200891 -> Just(Subdued-Late-Surgers) + 200901 -> Just(Flustered-Late-Surgers) + 200911 -> Just(Hesitant-Late-Surgers) + 200921 -> Just(Subdued-End-Closers) + 200931 -> Just(Flustered-End-Closers) + 200941 -> Just(Hesitant-End-Closers) + 200951 -> Just(Oi-Racecourse-Lv2) + 200952 -> Just(Oi-Racecourse) + 200953 -> Just(Oi-Racecourse-x) + 200961 -> Just(Sprint-Straightaways-Lv2) + 200962 -> Just(Sprint-Straightaways) + 200971 -> Just(Sprint-Corners-Lv2) + 200972 -> Just(Sprint-Corners) + 200981 -> Just(Staggering-Lead) + 200982 -> Just(Huge-Lead) + 200991 -> Just(Plan-X) + 200992 -> Just(Countermeasure) + 201001 -> Just(Perfect-Prep) + 201002 -> Just(Meticulous-Measures) + 201011 -> Just(Adored-by-All) + 201012 -> Just(Intimidate) + 201021 -> Just(You-ve-Got-No-Shot) + 201022 -> Just(Stop-Right-There) + 201031 -> Just(Mile-Straightaways-Lv2) + 201032 -> Just(Mile-Straightaways) + 201041 -> Just(Mile-Corners-Lv2) + 201042 -> Just(Mile-Corners) + 201051 -> Just(Changing-Gears) + 201052 -> Just(Shifting-Gears) + 201061 -> Just(Step-on-the-Gas) + 201062 -> Just(Acceleration) + 201071 -> Just(Big-Sisterly) + 201072 -> Just(Unyielding-Spirit) + 201081 -> Just(Greed-for-Speed) + 201082 -> Just(Speed-Eater) + 201091 -> Just(Battle-Formation) + 201092 -> Just(Opening-Gambit) + 201101 -> Just(Medium-Straightaways-Lv2) + 201102 -> Just(Medium-Straightaways) + 201111 -> Just(Medium-Corners-Lv2) + 201112 -> Just(Medium-Corners) + 201121 -> Just(Clairvoyance) + 201122 -> Just(Hawkeye) + 201131 -> Just(Lightning-Step) + 201132 -> Just(Thunderbolt-Step) + 201141 -> Just(Miraculous-Step) + 201142 -> Just(Soft-Step) + 201151 -> Just(Dominator) + 201152 -> Just(Tether) + 201161 -> Just(Mystifying-Murmur) + 201162 -> Just(Murmur) + 201171 -> Just(Long-Straightaways-Lv2) + 201172 -> Just(Long-Straightaways) + 201181 -> Just(Long-Corners-Lv2) + 201182 -> Just(Long-Corners) + 201191 -> Just(Vanguard-Spirit) + 201192 -> Just(Keeping-the-Lead) + 201201 -> Just(VIP-Pass) + 201202 -> Just(Passing-Pro) + 201211 -> Just(Overwhelming-Pressure) + 201212 -> Just(Pressure) + 201221 -> Just(Stamina-Siphon) + 201222 -> Just(Stamina-Eater) + 201231 -> Just(Illusionist) + 201232 -> Just(Smoke-Screen) + 201241 -> Just(Front-Runner-Straightaways-Lv2) + 201242 -> Just(Front-Runner-Straightaways) + 201251 -> Just(Front-Runner-Corners-Lv2) + 201252 -> Just(Front-Runner-Corners) + 201261 -> Just(Sixth-Sense) + 201262 -> Just(Dodging-Danger) + 201272 -> Just(Leaders-Pride) + 201281 -> Just(Restless) + 201282 -> Just(Moxie) + 201291 -> Just(Reignition) + 201292 -> Just(Second-Wind) + 201302 -> Just(Restart) + 201311 -> Just(Pace-Chaser-Straightaways-Lv2) + 201312 -> Just(Pace-Chaser-Straightaways) + 201321 -> Just(Pace-Chaser-Corners-Lv2) + 201322 -> Just(Pace-Chaser-Corners) + 201331 -> Just(Technician) + 201332 -> Just(Shrewd-Step) + 201341 -> Just(Determined-Descent) + 201342 -> Just(Straight-Descent) + 201351 -> Just(Gourmand) + 201352 -> Just(Hydrate) + 201361 -> Just(Shatterproof) + 201362 -> Just(Tactical-Tweak) + 201371 -> Just(Dazzling-Disorientation) + 201372 -> Just(Disorient) + 201381 -> Just(Late-Surger-Straightaways-Lv2) + 201382 -> Just(Late-Surger-Straightaways) + 201391 -> Just(Late-Surger-Corners-Lv2) + 201392 -> Just(Late-Surger-Corners) + 201401 -> Just(Hard-Worker) + 201402 -> Just(Fighter) + 201411 -> Just(Fifteen-Million-CC) + 201412 -> Just(One-Million-CC) + 201421 -> Just(Relax) + 201422 -> Just(A-Small-Breather) + 201431 -> Just(The-Bigger-Picture) + 201432 -> Just(Studious) + 201441 -> Just(All-Seeing-Eyes) + 201442 -> Just(Sharp-Gaze) + 201451 -> Just(End-Closer-Straightaways-Lv2) + 201452 -> Just(End-Closer-Straightaways) + 201461 -> Just(End-Closer-Corners-Lv2) + 201462 -> Just(End-Closer-Corners) + 201471 -> Just(The-Coast-Is-Clear) + 201472 -> Just(I-Can-See-Right-Through-You) + 201481 -> Just(Go-Home-Specialist) + 201482 -> Just(After-School-Stroll) + 201491 -> Just(Serenity) + 201492 -> Just(Levelheaded) + 201501 -> Just(Crusader) + 201502 -> Just(Strategist) + 201511 -> Just(Petrifying-Gaze) + 201512 -> Just(Intense-Gaze) + 201521 -> Just(Front-Runner-Savvy-Lv2) + 201522 -> Just(Front-Runner-Savvy) + 201531 -> Just(Pace-Chaser-Savvy-Lv2) + 201532 -> Just(Pace-Chaser-Savvy) + 201541 -> Just(Late-Surger-Savvy-Lv2) + 201542 -> Just(Late-Surger-Savvy) + 201551 -> Just(End-Closer-Savvy-Lv2) + 201552 -> Just(End-Closer-Savvy) + 201561 -> Just(Super-Lucky-Seven) + 201562 -> Just(Lucky-Seven) + 201571 -> Just(Triple-Sevens) + 201581 -> Just(Highlander) + 201591 -> Just(Uma-Stan) + 201592 -> Just(Superstan) + 201601 -> Just(Groundwork) + 201611 -> Just(Tail-Held-High) + 201621 -> Just(Shake-It-Out) + 201631 -> Just(Sympathy) + 201641 -> Just(Lone-Wolf) + 201651 -> Just(Slipstream) + 201661 -> Just(Playtimes-Over) + 201671 -> Just(Trending-in-the-Charts) + 201672 -> Just(Top-Pick) + 201681 -> Just(Lead-the-Charge) + 201682 -> Just(Forward-March) + 201691 -> Just(Lie-in-Wait) + 201692 -> Just(Be-Still) + 201701 -> Just(Come-What-May) + 201702 -> Just(All-I-ve-Got) + 201902 -> Just(Head-On) + 202022 -> Just(Early-Start) + 202032 -> Just(Risky-Business) + 210011 -> Just(Burning-Spirit-SPD) + 210012 -> Just(Ignited-Spirit-SPD) + 210021 -> Just(Burning-Spirit-STA) + 210022 -> Just(Ignited-Spirit-STA) + 210031 -> Just(Burning-Spirit-PWR) + 210032 -> Just(Ignited-Spirit-PWR) + 210041 -> Just(Burning-Spirit-GUTS) + 210042 -> Just(Ignited-Spirit-GUTS) + 210051 -> Just(Burning-Spirit-WIT) + 210052 -> Just(Ignited-Spirit-WIT) + 300011 -> Just(Unquenched-Thirst) + 300021 -> Just(Unchanging) _ -> Nothing -// Get names for skill groups. -// Skill group names are the name of the base skill in the group. -pub fun skill-group/show(sg: skill-group): string - match sg +// Get the name of a skill. +pub fun skill/show(s: skill): string + match s Warning-Shot -> "Warning Shot!" Xceleration -> "Xceleration" Red-Ace -> "Red Ace" @@ -840,76 +1347,175 @@ pub fun skill-group/show(sg: skill-group): string Dancing-in-the-Leaves -> "Dancing in the Leaves" Give-Mummy-a-Hug -> "Give Mummy a Hug ♡" Bountiful-Harvest -> "Bountiful Harvest" + Right-Handed-Lv2 -> "Right-Handed ◎" Right-Handed -> "Right-Handed ○" + Right-Handed-x -> "Right-Handed ×" + Left-Handed-Lv2 -> "Left-Handed ◎" Left-Handed -> "Left-Handed ○" + Left-Handed-x -> "Left-Handed ×" + Tokyo-Racecourse-Lv2 -> "Tokyo Racecourse ◎" Tokyo-Racecourse -> "Tokyo Racecourse ○" + Tokyo-Racecourse-x -> "Tokyo Racecourse ×" + Nakayama-Racecourse-Lv2 -> "Nakayama Racecourse ◎" Nakayama-Racecourse -> "Nakayama Racecourse ○" + Nakayama-Racecourse-x -> "Nakayama Racecourse ×" + Hanshin-Racecourse-Lv2 -> "Hanshin Racecourse ◎" Hanshin-Racecourse -> "Hanshin Racecourse ○" + Hanshin-Racecourse-x -> "Hanshin Racecourse ×" + Kyoto-Racecourse-Lv2 -> "Kyoto Racecourse ◎" Kyoto-Racecourse -> "Kyoto Racecourse ○" + Kyoto-Racecourse-x -> "Kyoto Racecourse ×" + Yodo-Invicta -> "Yodo Invicta" + Chukyo-Racecourse-Lv2 -> "Chukyo Racecourse ◎" Chukyo-Racecourse -> "Chukyo Racecourse ○" + Chukyo-Racecourse-x -> "Chukyo Racecourse ×" + Sapporo-Racecourse-Lv2 -> "Sapporo Racecourse ◎" Sapporo-Racecourse -> "Sapporo Racecourse ○" + Sapporo-Racecourse-x -> "Sapporo Racecourse ×" + Hakodate-Racecourse-Lv2 -> "Hakodate Racecourse ◎" Hakodate-Racecourse -> "Hakodate Racecourse ○" + Hakodate-Racecourse-x -> "Hakodate Racecourse ×" + Fukushima-Racecourse-Lv2 -> "Fukushima Racecourse ◎" Fukushima-Racecourse -> "Fukushima Racecourse ○" + Fukushima-Racecourse-x -> "Fukushima Racecourse ×" + Niigata-Racecourse-Lv2 -> "Niigata Racecourse ◎" Niigata-Racecourse -> "Niigata Racecourse ○" + Niigata-Racecourse-x -> "Niigata Racecourse ×" + Kokura-Racecourse-Lv2 -> "Kokura Racecourse ◎" Kokura-Racecourse -> "Kokura Racecourse ○" + Kokura-Racecourse-x -> "Kokura Racecourse ×" + Standard-Distance-Lv2 -> "Standard Distance ◎" Standard-Distance -> "Standard Distance ○" + Standard-Distance-x -> "Standard Distance ×" + Non-Standard-Distance-Lv2 -> "Non-Standard Distance ◎" Non-Standard-Distance -> "Non-Standard Distance ○" + Non-Standard-Distance-x -> "Non-Standard Distance ×" + Firm-Conditions-Lv2 -> "Firm Conditions ◎" Firm-Conditions -> "Firm Conditions ○" + Firm-Conditions-x -> "Firm Conditions ×" + Wet-Conditions-Lv2 -> "Wet Conditions ◎" Wet-Conditions -> "Wet Conditions ○" + Wet-Conditions-x -> "Wet Conditions ×" + Spring-Runner-Lv2 -> "Spring Runner ◎" Spring-Runner -> "Spring Runner ○" + Spring-Runner-x -> "Spring Runner ×" + Summer-Runner-Lv2 -> "Summer Runner ◎" Summer-Runner -> "Summer Runner ○" + Summer-Runner-x -> "Summer Runner ×" + Fall-Runner-Lv2 -> "Fall Runner ◎" Fall-Runner -> "Fall Runner ○" + Fall-Runner-x -> "Fall Runner ×" + Fall-Frenzy -> "Fall Frenzy" + Winter-Runner-Lv2 -> "Winter Runner ◎" Winter-Runner -> "Winter Runner ○" + Winter-Runner-x -> "Winter Runner ×" + Sunny-Days-Lv2 -> "Sunny Days ◎" Sunny-Days -> "Sunny Days ○" + Cloudy-Days-Lv2 -> "Cloudy Days ◎" Cloudy-Days -> "Cloudy Days ○" + Rainy-Days-Lv2 -> "Rainy Days ◎" Rainy-Days -> "Rainy Days ○" + Rainy-Days-x -> "Rainy Days ×" + Snowy-Days-Lv2 -> "Snowy Days ◎" Snowy-Days -> "Snowy Days ○" + Inner-Post-Proficiency-Lv2 -> "Inner Post Proficiency ◎" Inner-Post-Proficiency -> "Inner Post Proficiency ○" + Inner-Post-Averseness -> "Inner Post Averseness" + Outer-Post-Proficiency-Lv2 -> "Outer Post Proficiency ◎" Outer-Post-Proficiency -> "Outer Post Proficiency ○" + Outer-Post-Averseness -> "Outer Post Averseness" + Maverick-Lv2 -> "Maverick ◎" Maverick -> "Maverick ○" + Competitive-Spirit-Lv2 -> "Competitive Spirit ◎" Competitive-Spirit -> "Competitive Spirit ○" + Wallflower -> "Wallflower" + Target-in-Sight-Lv2 -> "Target in Sight ◎" Target-in-Sight -> "Target in Sight ○" + Long-Shot-Lv2 -> "Long Shot ◎" Long-Shot -> "Long Shot ○" + Professor-of-Curvature -> "Professor of Curvature" Corner-Adept -> "Corner Adept ○" + Corner-Adept-x -> "Corner Adept ×" + Corner-Connoisseur -> "Corner Connoisseur" Corner-Acceleration -> "Corner Acceleration ○" + Corner-Acceleration-x -> "Corner Acceleration ×" + Swinging-Maestro -> "Swinging Maestro" Corner-Recovery -> "Corner Recovery ○" + Corner-Recovery-x -> "Corner Recovery ×" + Beeline-Burst -> "Beeline Burst" Straightaway-Adept -> "Straightaway Adept" + Rushing-Gale -> "Rushing Gale!" Straightaway-Acceleration -> "Straightaway Acceleration" + Breath-of-Fresh-Air -> "Breath of Fresh Air" Straightaway-Recovery -> "Straightaway Recovery" + Concentration -> "Concentration" Focus -> "Focus" + Gatekept -> "Gatekept" + Iron-Will -> "Iron Will" Lay-Low -> "Lay Low" + Center-Stage -> "Center Stage" Prudent-Positioning -> "Prudent Positioning" + Its-On -> "It's On!" Ramp-Up -> "Ramp Up" + Indomitable -> "Indomitable" Pace-Strategy -> "Pace Strategy" + Unruffled -> "Unruffled" Calm-in-a-Crowd -> "Calm in a Crowd" + No-Stopping-Me -> "No Stopping Me!" Nimble-Navigator -> "Nimble Navigator" + Lane-Legerdemain -> "Lane Legerdemain" Go-with-the-Flow -> "Go with the Flow" + In-Body-and-Mind -> "In Body and Mind" Homestretch-Haste -> "Homestretch Haste" + Taking-the-Lead -> "Taking the Lead" Early-Lead -> "Early Lead" + Escape-Artist -> "Escape Artist" Fast-Paced -> "Fast-Paced" + Unrestrained -> "Unrestrained" Final-Push -> "Final Push" + Calm-and-Collected -> "Calm and Collected" Stamina-to-Spare -> "Stamina to Spare" + Race-Planner -> "Race Planner" Preferred-Position -> "Preferred Position" + Speed-Star -> "Speed Star" Prepared-to-Pass -> "Prepared to Pass" + Fast-Furious -> "Fast & Furious" Position-Pilfer -> "Position Pilfer" + On-Your-Left -> "On Your Left!" Slick-Surge -> "Slick Surge" + Rising-Dragon -> "Rising Dragon" Outer-Swell -> "Outer Swell" + Sleeping-Lion -> "Sleeping Lion" Standing-By -> "Standing By" + Sturm-und-Drang -> "Sturm und Drang" Masterful-Gambit -> "Masterful Gambit" + Encroaching-Shadow -> "Encroaching Shadow" Straightaway-Spurt -> "Straightaway Spurt" + Turbo-Sprint -> "Turbo Sprint" Sprinting-Gear -> "Sprinting Gear" Wait-and-See -> "Wait-and-See" + Blinding-Flash -> "Blinding Flash" Gap-Closer -> "Gap Closer" + Mile-Maven -> "Mile Maven" Productive-Plan -> "Productive Plan" + Keen-Eye -> "Keen Eye" Watchful-Eye -> "Watchful Eye" + Furious-Feat -> "Furious Feat" Updrafters -> "Updrafters" + Trackblazer -> "Trackblazer" Rosy-Outlook -> "Rosy Outlook" + Killer-Tunes -> "Killer Tunes" Up-Tempo -> "Up-Tempo" + Unyielding -> "Unyielding" Steadfast -> "Steadfast" + Cooldown -> "Cooldown" Deep-Breaths -> "Deep Breaths" + Innate-Experience -> "Innate Experience" Inside-Scoop -> "Inside Scoop" + Adrenaline-Rush -> "Adrenaline Rush" Extra-Tank -> "Extra Tank" Trick-Front -> "Trick (Front)" + Tantalizing-Trick -> "Tantalizing Trick" Trick-Rear -> "Trick (Rear)" Frenzied-Front-Runners -> "Frenzied Front Runners" Frenzied-Pace-Chasers -> "Frenzied Pace Chasers" @@ -927,71 +1533,133 @@ pub fun skill-group/show(sg: skill-group): string Subdued-End-Closers -> "Subdued End Closers" Flustered-End-Closers -> "Flustered End Closers" Hesitant-End-Closers -> "Hesitant End Closers" + Oi-Racecourse-Lv2 -> "Oi Racecourse ◎" Oi-Racecourse -> "Oi Racecourse ○" + Oi-Racecourse-x -> "Oi Racecourse ×" + Sprint-Straightaways-Lv2 -> "Sprint Straightaways ◎" Sprint-Straightaways -> "Sprint Straightaways ○" + Sprint-Corners-Lv2 -> "Sprint Corners ◎" Sprint-Corners -> "Sprint Corners ○" + Staggering-Lead -> "Staggering Lead" Huge-Lead -> "Huge Lead" + Plan-X -> "Plan X" Countermeasure -> "Countermeasure" + Perfect-Prep -> "Perfect Prep!" Meticulous-Measures -> "Meticulous Measures" + Adored-by-All -> "Adored by All" Intimidate -> "Intimidate" + You-ve-Got-No-Shot -> "You've Got No Shot" Stop-Right-There -> "Stop Right There!" + Mile-Straightaways-Lv2 -> "Mile Straightaways ◎" Mile-Straightaways -> "Mile Straightaways ○" + Mile-Corners-Lv2 -> "Mile Corners ◎" Mile-Corners -> "Mile Corners ○" + Changing-Gears -> "Changing Gears" Shifting-Gears -> "Shifting Gears" + Step-on-the-Gas -> "Step on the Gas!" Acceleration -> "Acceleration" + Big-Sisterly -> "Big-Sisterly" Unyielding-Spirit -> "Unyielding Spirit" + Greed-for-Speed -> "Greed for Speed" Speed-Eater -> "Speed Eater" + Battle-Formation -> "Battle Formation" Opening-Gambit -> "Opening Gambit" + Medium-Straightaways-Lv2 -> "Medium Straightaways ◎" Medium-Straightaways -> "Medium Straightaways ○" + Medium-Corners-Lv2 -> "Medium Corners ◎" Medium-Corners -> "Medium Corners ○" + Clairvoyance -> "Clairvoyance" Hawkeye -> "Hawkeye" + Lightning-Step -> "Lightning Step" Thunderbolt-Step -> "Thunderbolt Step" + Miraculous-Step -> "Miraculous Step" Soft-Step -> "Soft Step" + Dominator -> "Dominator" Tether -> "Tether" + Mystifying-Murmur -> "Mystifying Murmur" Murmur -> "Murmur" + Long-Straightaways-Lv2 -> "Long Straightaways ◎" Long-Straightaways -> "Long Straightaways ○" + Long-Corners-Lv2 -> "Long Corners ◎" Long-Corners -> "Long Corners ○" + Vanguard-Spirit -> "Vanguard Spirit" Keeping-the-Lead -> "Keeping the Lead" + VIP-Pass -> "VIP Pass" Passing-Pro -> "Passing Pro" + Overwhelming-Pressure -> "Overwhelming Pressure" Pressure -> "Pressure" + Stamina-Siphon -> "Stamina Siphon" Stamina-Eater -> "Stamina Eater" + Illusionist -> "Illusionist" Smoke-Screen -> "Smoke Screen" + Front-Runner-Straightaways-Lv2 -> "Front Runner Straightaways ◎" Front-Runner-Straightaways -> "Front Runner Straightaways ○" + Front-Runner-Corners-Lv2 -> "Front Runner Corners ◎" Front-Runner-Corners -> "Front Runner Corners ○" + Sixth-Sense -> "Sixth Sense" Dodging-Danger -> "Dodging Danger" Leaders-Pride -> "Leader's Pride" + Restless -> "Restless" Moxie -> "Moxie" + Reignition -> "Reignition" Second-Wind -> "Second Wind" Restart -> "Restart" + Pace-Chaser-Straightaways-Lv2 -> "Pace Chaser Straightaways ◎" Pace-Chaser-Straightaways -> "Pace Chaser Straightaways ○" + Pace-Chaser-Corners-Lv2 -> "Pace Chaser Corners ◎" Pace-Chaser-Corners -> "Pace Chaser Corners ○" + Technician -> "Technician" Shrewd-Step -> "Shrewd Step" + Determined-Descent -> "Determined Descent" Straight-Descent -> "Straight Descent" + Gourmand -> "Gourmand" Hydrate -> "Hydrate" + Shatterproof -> "Shatterproof" Tactical-Tweak -> "Tactical Tweak" + Dazzling-Disorientation -> "Dazzling Disorientation" Disorient -> "Disorient" + Late-Surger-Straightaways-Lv2 -> "Late Surger Straightaways ◎" Late-Surger-Straightaways -> "Late Surger Straightaways ○" + Late-Surger-Corners-Lv2 -> "Late Surger Corners ◎" Late-Surger-Corners -> "Late Surger Corners ○" + Hard-Worker -> "Hard Worker" Fighter -> "Fighter" - Million-CC -> "1,500,000 CC" + Fifteen-Million-CC -> "15,000,000 CC" + One-Million-CC -> "1,500,000 CC" + Relax -> "Relax" A-Small-Breather -> "A Small Breather" + The-Bigger-Picture -> "The Bigger Picture" Studious -> "Studious" + All-Seeing-Eyes -> "All-Seeing Eyes" Sharp-Gaze -> "Sharp Gaze" + End-Closer-Straightaways-Lv2 -> "End Closer Straightaways ◎" End-Closer-Straightaways -> "End Closer Straightaways ○" + End-Closer-Corners-Lv2 -> "End Closer Corners ◎" End-Closer-Corners -> "End Closer Corners ○" + The-Coast-Is-Clear -> "The Coast Is Clear!" I-Can-See-Right-Through-You -> "I Can See Right Through You" + Go-Home-Specialist -> "Go-Home Specialist" After-School-Stroll -> "After-School Stroll" + Serenity -> "Serenity" Levelheaded -> "Levelheaded" + Crusader -> "Crusader" Strategist -> "Strategist" + Petrifying-Gaze -> "Petrifying Gaze" Intense-Gaze -> "Intense Gaze" + Front-Runner-Savvy-Lv2 -> "Front Runner Savvy ◎" Front-Runner-Savvy -> "Front Runner Savvy ○" + Pace-Chaser-Savvy-Lv2 -> "Pace Chaser Savvy ◎" Pace-Chaser-Savvy -> "Pace Chaser Savvy ○" + Late-Surger-Savvy-Lv2 -> "Late Surger Savvy ◎" Late-Surger-Savvy -> "Late Surger Savvy ○" + End-Closer-Savvy-Lv2 -> "End Closer Savvy ◎" End-Closer-Savvy -> "End Closer Savvy ○" + Super-Lucky-Seven -> "Super Lucky Seven" Lucky-Seven -> "Lucky Seven" Triple-Sevens -> "Triple 7s" Highlander -> "Highlander" Uma-Stan -> "Uma Stan" + Superstan -> "Superstan" Groundwork -> "Groundwork" Tail-Held-High -> "Tail Held High" Shake-It-Out -> "Shake It Out" @@ -999,27 +1667,624 @@ pub fun skill-group/show(sg: skill-group): string Lone-Wolf -> "Lone Wolf" Slipstream -> "Slipstream" Playtimes-Over -> "Playtime's Over!" + Trending-in-the-Charts -> "Trending in the Charts!" Top-Pick -> "Top Pick" + Lead-the-Charge -> "Lead the Charge!" Forward-March -> "Forward, March!" + Lie-in-Wait -> "Lie in Wait" Be-Still -> "Be Still" + Come-What-May -> "Come What May" All-I-ve-Got -> "All I've Got" Head-On -> "Head-On" Early-Start -> "Early Start" Risky-Business -> "Risky Business" + Burning-Spirit-SPD -> "Burning Spirit SPD" Ignited-Spirit-SPD -> "Ignited Spirit SPD" + Burning-Spirit-STA -> "Burning Spirit STA" Ignited-Spirit-STA -> "Ignited Spirit STA" + Burning-Spirit-PWR -> "Burning Spirit PWR" Ignited-Spirit-PWR -> "Ignited Spirit PWR" + Burning-Spirit-GUTS -> "Burning Spirit GUTS" Ignited-Spirit-GUTS -> "Ignited Spirit GUTS" + Burning-Spirit-WIT -> "Burning Spirit WIT" Ignited-Spirit-WIT -> "Ignited Spirit WIT" Unquenched-Thirst -> "Unquenched Thirst" Unchanging -> "Unchanging" -// Compare two skill groups by ID order. -pub fip fun skill-group/order2(a: skill-group, b: skill-group): order2 - match cmp(a.group-id, b.group-id) +// Compare two skills by ID order. +pub fip fun skill/order2(a: skill, b: skill): order2 + match cmp(a.skill-id, b.skill-id) Lt -> Lt2(a, b) Eq -> Eq2(a) Gt -> Gt2(a, b) -pub fun skill-group/(==)(a: skill-group, b: skill-group): bool - a.group-id == b.group-id \ No newline at end of file +pub fun skill/(==)(a: skill, b: skill): bool + a.skill-id == b.skill-id + +// Get complete skill info. +pub fun skill/detail(^s: skill): skill-detail + match s + Warning-Shot -> Skill-detail(skill-id = 10071, name = "Warning Shot!", description = "Slightly increase velocity with a long spurt starting halfway through the race.", group = Warning-Shot, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "", condition = "distance_rate>=50&distance_rate<=60&order_rate>50", duration = 6.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Xceleration -> Skill-detail(skill-id = 10081, name = "Xceleration", description = "Become stronger at challenging rivals and moderately increase velocity when positioned toward the front with 200m or less remaining.", group = Xceleration, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "", condition = "order>=3&order_rate<=50&remain_distance<=200&bashin_diff_infront<=1@order>=3&order_rate<=50&remain_distance<=200&bashin_diff_behind<=1", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Red-Ace -> Skill-detail(skill-id = 10091, name = "Red Ace", description = "Slightly swell with the determination to be number one when positioned toward the front in the second half of the race.", group = Red-Ace, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "", condition = "distance_rate>=50&order==1&bashin_diff_behind<=1@distance_rate>=50&order==2&is_overtake==1", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Focused-Mind -> Skill-detail(skill-id = 10111, name = "Focused Mind", description = "Moderately increase velocity with a strong turn of foot when passing another runner toward the back on the final straight.", group = Focused-Mind, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner==0&change_order_onetime<0&order>=3", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Corazon-Ardiente -> Skill-detail(skill-id = 10141, name = "Corazón ☆ Ardiente", description = "Slightly hang on to the advantage when positioned toward the front with energy to spare on the final straight.", group = Corazon-Ardiente, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner==0&hp_per>=30&order<=2", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Empresss-Pride -> Skill-detail(skill-id = 10181, name = "Empress's Pride", description = "Moderately increase velocity with the stride of an empress when passing another runner from midpack or further back on the final corner.", group = Empresss-Pride, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner!=0&order>=3&change_order_onetime<0", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20013) + First-Place-Kiss -> Skill-detail(skill-id = 10241, name = "1st Place Kiss☆", description = "Slightly increase ability to break out of the pack on the straight after engaging in a challenge toward the front on the final corner or later.", group = First-Place-Kiss, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&blocked_side_continuetime>=2&order<=3", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Feel-the-Burn -> Skill-detail(skill-id = 10271, name = "Feel the Burn!", description = "Moderately increase acceleration in an attempt to move up on a corner late-race.", group = Feel-the-Burn, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "", condition = "phase>=2&corner!=0&order_rate>=65&order_rate<=70", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20043) + Introduction-to-Physiology -> Skill-detail(skill-id = 10321, name = "Introduction to Physiology", description = "Moderately recover endurance and slightly increase velocity for a moderate duration when sitting off the pace on a corner in the second half of the race.", group = Introduction-to-Physiology, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "", condition = "distance_rate>=50&corner!=0&order>=3&order_rate<=40", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.035000), value-usage =Direct, target =Self),Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20023) + V-Is-for-Victory -> Skill-detail(skill-id = 10351, name = "V Is for Victory!", description = "Moderately increase velocity with winning ambition when positioned toward the front on the final straight after engaging in a challenge on the final corner or later.", group = V-Is-for-Victory, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "is_finalcorner==1&blocked_side_continuetime>=2", condition = "is_finalcorner==1&corner==0&order<=5", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Class-Rep-Speed-Bakushin -> Skill-detail(skill-id = 10411, name = "Class Rep + Speed = Bakushin", description = "Moderately increase velocity with BAKUSHIN power when engaged in a challenge toward the front in the second half of the race.", group = Class-Rep-Speed-Bakushin, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "", condition = "distance_rate>=50&order<=3&blocked_side_continuetime>=2", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Clear-Heart -> Skill-detail(skill-id = 10451, name = "Clear Heart", description = "Recover endurance when well-positioned mid-race.", group = Clear-Heart, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "", condition = "phase_random==1&order>=2&order_rate<=40", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20023) + Super-Duper-Stoked -> Skill-detail(skill-id = 10521, name = "Super-Duper Stoked", description = "Moderately recover endurance with a glance at nearby runners when positioned toward the back on the final corner.", group = Super-Duper-Stoked, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner!=0&order_rate>50&near_count>=1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.035000), value-usage =Direct, target =Self),]),], icon-id = 20023) + Luck-Be-with-Me -> Skill-detail(skill-id = 10561, name = "Luck Be with Me!", description = "Moderately clear a path forward with the power of divination when the way ahead is jammed late-race.", group = Luck-Be-with-Me, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "", condition = "phase>=2&order>=3&blocked_front==1", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.100000), value-usage =Direct, target =Self),]),], icon-id = 20013) + I-Can-Win-Sometimes-Right -> Skill-detail(skill-id = 10601, name = "I Can Win Sometimes, Right?", description = "Moderately increase velocity with an arousal of fighting spirit when positioned 3rd and about to lose late-race.", group = I-Can-Win-Sometimes-Right, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "", condition = "phase>=2&order==3&bashin_diff_behind<=1", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Call-Me-King -> Skill-detail(skill-id = 10611, name = "Call Me King", description = "Increase velocity in a true display of skill with 200m remaining after racing calmly.", group = Call-Me-King, rarity = Unique-Low, group-rate = 1, grade-value = 240, wit-check = False, activations = [Activation(precondition = "", condition = "temptation_count==0&remain_distance<=201&remain_distance>=199&order>=4&order_rate<=70", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Shooting-Star -> Skill-detail(skill-id = 100011, name = "Shooting Star", description = "Ride the momentum to increase velocity and very slightly increase acceleration after passing another runner toward the front late-race.", group = Shooting-Star, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "phase>=2&order>=1&order_rate<=50&change_order_onetime<0", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.100000), value-usage =Direct, target =Self),]),], icon-id = 20013) + The-View-from-the-Lead-Is-Mine -> Skill-detail(skill-id = 100021, name = "The View from the Lead Is Mine!", description = "Increase velocity by drawing on all remaining strength when in the lead by a fair margin in the second half of the race.", group = The-View-from-the-Lead-Is-Mine, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "distance_rate>=50&order==1&bashin_diff_behind>=1", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Sky-High-Teio-Step -> Skill-detail(skill-id = 100031, name = "Sky-High Teio Step", description = "Greatly increase velocity with flashy footwork when closing the gap to runners ahead on the final straight.", group = Sky-High-Teio-Step, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner==0&order<=3&bashin_diff_infront<=1&is_overtake==1", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.450000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Red-Shift-LP1211-M -> Skill-detail(skill-id = 100041, name = "Red Shift/LP1211-M", description = "Increase acceleration by shifting gears when positioned toward the front on the final corner or later.", group = Red-Shift-LP1211-M, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&order<=5&order_rate<=50", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20043) + Lights-of-Vaudeville -> Skill-detail(skill-id = 100051, name = "Lights of Vaudeville", description = "Greatly increase velocity with a dazzling display when just breaking out of the pack toward the front on the final straight.", group = Lights-of-Vaudeville, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner==0&order_rate<=30&behind_near_lane_time_set1>=1", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.450000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Triumphant-Pulse -> Skill-detail(skill-id = 100061, name = "Triumphant Pulse", description = "Greatly increase ability to break out of the pack by opening up a path when positioned toward the front with 200m remaining.", group = Triumphant-Pulse, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "order>=2&order<=5&order_rate<=50&remain_distance<=201&remain_distance>=199", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.450000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Anchors-Aweigh -> Skill-detail(skill-id = 100071, name = "Anchors Aweigh!", description = "Moderately increase velocity steadily with a long spurt starting halfway through the race.", group = Anchors-Aweigh, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "distance_rate>=50&distance_rate<=60&order_rate>50", duration = 6.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Cut-and-Drive -> Skill-detail(skill-id = 100081, name = "Cut and Drive!", description = "Become stronger at challenging rivals and increase velocity when positioned toward the front with 200m or less remaining.", group = Cut-and-Drive, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "order>=3&order_rate<=50&remain_distance<=200&bashin_diff_infront<=1@order>=3&order_rate<=50&remain_distance<=200&bashin_diff_behind<=1", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Resplendent-Red-Ace -> Skill-detail(skill-id = 100091, name = "Resplendent Red Ace", description = "Swell with the determination to be number one when positioned toward the front in the second half of the race.", group = Resplendent-Red-Ace, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "distance_rate>=50&order==1&bashin_diff_behind<=1@distance_rate>=50&order==2&is_overtake==1", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Shooting-for-Victory -> Skill-detail(skill-id = 100101, name = "Shooting for Victory!", description = "Increase acceleration with a pow, a wow, and a bang when well-positioned upon approaching the final straight.", group = Shooting-for-Victory, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner_laterhalf==1&corner!=0&order>=3&order_rate<=40", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20043) + Where-Theres-a-Will-Theres-a-Way -> Skill-detail(skill-id = 100111, name = "Where There's a Will, There's a Way", description = "Increase velocity with a strong turn of foot when passing another runner toward the back on the final straight.", group = Where-Theres-a-Will-Theres-a-Way, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner==0&change_order_onetime<0&order>=3", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + You-and-Me-One-on-One -> Skill-detail(skill-id = 100121, name = "You and Me! One-on-One!", description = "Increase velocity on the final straight after passing another runner on the outside toward the back on the final corner or later.", group = You-and-Me-One-on-One, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "is_finalcorner==1&is_behind_in==1&change_order_onetime<0&order_rate>=40", condition = "is_finalcorner==1&corner==0", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + The-Duty-of-Dignity-Calls -> Skill-detail(skill-id = 100131, name = "The Duty of Dignity Calls", description = "Increase velocity with the determination to not be overtaken when positioned toward the front on the final corner.", group = The-Duty-of-Dignity-Calls, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner!=0&distance_diff_rate<=30", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Victoria-por-plancha -> Skill-detail(skill-id = 100141, name = "Victoria por plancha ☆", description = "Hang onto the advantage when positioned toward the front with energy to spare on the final straight.", group = Victoria-por-plancha, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner==0&hp_per>=30&order<=2", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20013) + This-Dance-Is-for-Vittoria -> Skill-detail(skill-id = 100151, name = "This Dance Is for Vittoria!", description = "Increase velocity with royal brilliance when positioned toward the front and close to the runner ahead or behind on the final corner or later.", group = This-Dance-Is-for-Vittoria, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&bashin_diff_behind<=1&order<=4@is_finalcorner==1&bashin_diff_infront<=1&order<=4", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Shadow-Break -> Skill-detail(skill-id = 100161, name = "Shadow Break", description = "Increase velocity with beastly strength when passing another runner on the outside on the final corner or later. If the skill user engaged in a challenge mid-race, greatly increase velocity instead.", group = Shadow-Break, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "phase==1&blocked_side_continuetime>=2", condition = "is_finalcorner==1&order>=2&order_rate<=75&is_behind_in==1&change_order_onetime<0", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.450000), value-usage =Direct, target =Self),]),Activation(precondition = "", condition = "is_finalcorner==1&order>=2&order_rate<=75&is_behind_in==1&change_order_onetime<0", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Behold-Thine-Emperors-Divine-Might -> Skill-detail(skill-id = 100171, name = "Behold Thine Emperor's Divine Might", description = "Greatly increase velocity on the final straight after passing another runner 3 times late-race.", group = Behold-Thine-Emperors-Divine-Might, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&change_order_up_end_after>=3&corner==0", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.450000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Blazing-Pride -> Skill-detail(skill-id = 100181, name = "Blazing Pride", description = "Increase velocity with the stride of an empress when passing another runner from midpack or further back on the final corner.", group = Blazing-Pride, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner!=0&order>=3&change_order_onetime<0", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + OMG-The-Final-Sprint -> Skill-detail(skill-id = 100191, name = "OMG! (゚∀゚) The Final Sprint! ☆", description = "Increase velocity and navigation with the pure euphoria of being within breathing distance of precious waifus after passing another runner 2 times late-race.", group = OMG-The-Final-Sprint, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "change_order_up_end_after>=2", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),Ability(ability-type =Lane-Speed(0.035000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Angling-and-Scheming -> Skill-detail(skill-id = 100201, name = "Angling and Scheming", description = "Increase acceleration at an opportune moment when in the lead on a corner late-race.", group = Angling-and-Scheming, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "phase>=2&corner!=0&order==1", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20043) + Win-QED -> Skill-detail(skill-id = 100231, name = "∴win Q.E.D.", description = "Increase velocity by deriving the winning equation when passing another runner toward the front on the final corner or later.", group = Win-QED, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&change_order_onetime<0&order<=4", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Flashy-Landing -> Skill-detail(skill-id = 100241, name = "Flashy☆Landing", description = "Increase ability to break out of the pack on the straight after engaging in a challenge toward the front on the final corner or later.", group = Flashy-Landing, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&blocked_side_continuetime>=2&order<=3", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Chasing-After-You -> Skill-detail(skill-id = 100251, name = "Chasing After You", description = "Chase after an unseen friend when in midpack in the second half of the race, moderately increasing velocity steadily and very slightly intimidating runners ahead.", group = Chasing-After-You, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "distance_rate>=50&order_rate>=40&order_rate<=70", duration = 6.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),Ability(ability-type =Current-Speed(-0.050000), value-usage =Direct, target =Ahead(5)),]),], icon-id = 20013) + G00-First-FInfinity -> Skill-detail(skill-id = 100261, name = "G00 1st. F∞;", description = "Increase velocity when positioned toward the front after making it to the final straight without faltering.", group = G00-First-FInfinity, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_badstart==0&temptation_count==0&order<=3&is_finalcorner==1&corner==0", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Lets-Pump-Some-Iron -> Skill-detail(skill-id = 100271, name = "Let's Pump Some Iron!", description = "Increase acceleration in an attempt to move up on a corner late-race.", group = Lets-Pump-Some-Iron, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "phase>=2&corner!=0&order_rate>=65&order_rate<=70", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20043) + YUMMY-SPEED -> Skill-detail(skill-id = 100281, name = "YUMMY☆SPEED!", description = "Kick forward hard with renewed vigor when starting to get tired while well-positioned halfway through the race.", group = YUMMY-SPEED, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "distance_rate>=45&distance_rate<=60&order>=3&order_rate<=50&hp_per<=70", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Blue-Rose-Closer -> Skill-detail(skill-id = 100301, name = "Blue Rose Closer", description = "Increase velocity with strong willpower on the final straight after passing another runner in the front part of the pack on the final corner or later.", group = Blue-Rose-Closer, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "is_finalcorner==1&order<=4&change_order_onetime<0", condition = "is_finalcorner==1&corner==0", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + U-ma2 -> Skill-detail(skill-id = 100321, name = "U=ma2", description = "Recover endurance and moderately increase velocity for a moderate duration when sitting off the pace on a corner in the second half of the race.", group = U-ma2, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "distance_rate>=50&corner!=0&order>=3&order_rate<=40", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20023) + Our-Ticket-to-Win -> Skill-detail(skill-id = 100351, name = "Our Ticket to Win!", description = "Increase velocity with winning ambition when positioned toward the front on the final straight after engaging in a challenge on the final corner or later.", group = Our-Ticket-to-Win, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "is_finalcorner==1&blocked_side_continuetime>=2", condition = "is_finalcorner==1&corner==0&order<=5", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Schwarzes-Schwert -> Skill-detail(skill-id = 100371, name = "Schwarzes Schwert", description = "Increase velocity in a dash for the lead after running calmly and according to plan up until the final straight.", group = Schwarzes-Schwert, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_badstart==0&temptation_count==0&order>=3&is_finalcorner==1&corner==0", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + LookatCurren -> Skill-detail(skill-id = 100381, name = "#LookatCurren", description = "Gain momentum and begin to advance when passing another runner while well-positioned around halfway through the race.", group = LookatCurren, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "distance_rate>=50&distance_rate<=65&order>=2&order_rate<=40&change_order_onetime<0", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20013) + A-Princess-Must-Seize-Victory -> Skill-detail(skill-id = 100391, name = "A Princess Must Seize Victory!", description = "Increase velocity with pretty princess power when engaged in a challenge on the final straight.", group = A-Princess-Must-Seize-Victory, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner==0&blocked_side_continuetime>=2", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + KEEP-IT-REAL -> Skill-detail(skill-id = 100401, name = "KEEP IT REAL.", description = "Moderately increase acceleration steadily with a wink when starting to make a move from midpack in the second half of the race.", group = KEEP-IT-REAL, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "distance_rate>=50&order_rate>=40&order_rate<=70&is_overtake==1", duration = 6.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20043) + Genius-x-Bakushin-Victory -> Skill-detail(skill-id = 100411, name = "Genius x Bakushin = Victory", description = "Increase velocity with BAKUSHIN power when engaged in a challenge toward the front in the second half of the race.", group = Genius-x-Bakushin-Victory, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "distance_rate>=50&order<=3&blocked_side_continuetime>=2", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Pure-Heart -> Skill-detail(skill-id = 100451, name = "Pure Heart", description = "Greatly recover endurance when well-positioned mid-race.", group = Pure-Heart, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "phase_random==1&order>=2&order_rate<=40", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.075000), value-usage =Direct, target =Self),]),], icon-id = 20023) + SPARKLY-STARDOM -> Skill-detail(skill-id = 100461, name = "SPARKLY☆STARDOM", description = "Become empowered to keep the spotlight when positioned toward the front and close to the runner behind on a straight mid-race.", group = SPARKLY-STARDOM, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "phase==1&corner==0&order<=2&bashin_diff_behind<=1", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Pop-Polish -> Skill-detail(skill-id = 100481, name = "Pop & Polish", description = "Get hyped and increase velocity when pressured by or passing another runner while well-positioned on the final straight.", group = Pop-Polish, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner==0&order>=2&order_rate<=30&overtake_target_time>=2@is_finalcorner==1&corner==0&order_rate<=20&change_order_onetime<0", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Nemesis -> Skill-detail(skill-id = 100501, name = "Nemesis", description = "Increase velocity with smoldering ambition when moving up from midpack on the final corner or later.", group = Nemesis, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&order_rate>=40&order_rate<=75&is_overtake==1", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Super-Duper-Climax -> Skill-detail(skill-id = 100521, name = "Super-Duper Climax", description = "Recover endurance with a glance at nearby runners when positioned toward the back on the final corner.", group = Super-Duper-Climax, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner!=0&order_rate>50&near_count>=1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20023) + I-See-Victory-in-My-Future -> Skill-detail(skill-id = 100561, name = "I See Victory in My Future!", description = "Clear a path forward with the power of divination when the way ahead is jammed late-race.", group = I-See-Victory-in-My-Future, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "phase>=2&order>=3&blocked_front==1", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.100000), value-usage =Direct, target =Self),]),], icon-id = 20013) + I-Never-Goof-Up -> Skill-detail(skill-id = 100581, name = "I Never Goof Up!", description = "Aim for the front with unwavering determination when passing another runner from midpack or further back on a corner late-race.", group = I-Never-Goof-Up, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "phase>=2&corner!=0&order>=3&change_order_onetime<0", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Moving-Past-and-Beyond -> Skill-detail(skill-id = 100591, name = "Moving Past, and Beyond", description = "Having run the race calmly, increase acceleration with hardened determination when making a move mid-race, or on a crucial corner late-race whilst in midpack.", group = Moving-Past-and-Beyond, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "phase>=2&corner!=0&is_finalcorner==0&temptation_count==0&order_rate>=50&order_rate<=70@phase==1&corner!=0&is_finalcorner==1&temptation_count==0&order_rate>=50&order_rate<=70", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20043) + Just-a-Little-Farther -> Skill-detail(skill-id = 100601, name = "Just a Little Farther!", description = "Increase velocity with flaring fighting spirit when positioned 3rd and about to lose late-race.", group = Just-a-Little-Farther, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "phase>=2&order==3&bashin_diff_behind<=1", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Prideful-King -> Skill-detail(skill-id = 100611, name = "Prideful King", description = "Greatly increase velocity in a true display of skill with 200m remaining after racing calmly.", group = Prideful-King, rarity = Unique-Upgraded, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "temptation_count==0&remain_distance<=201&remain_distance>=199&order>=4&order_rate<=70", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.450000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Dazzl-n-Diver -> Skill-detail(skill-id = 110011, name = "Dazzl'n ♪ Diver", description = "Recover endurance by relaxing after activating 2 skills when positioned midpack mid-race.", group = Dazzl-n-Diver, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "phase==1&order>=2&order_rate<=70&activate_count_middle>=2", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20023) + Certain-Victory -> Skill-detail(skill-id = 110031, name = "Certain Victory", description = "Greatly increase velocity with an indomitable fighting spirit on the final straight after being on the heels of another runner toward the front on the final corner or later.", group = Certain-Victory, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "is_finalcorner==1&is_overtake==1&order<=5&order_rate<=50&overtake_target_no_order_up_time>=2", condition = "is_finalcorner==1&corner==0", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.450000), value-usage =Direct, target =Self),]),], icon-id = 20013) + A-Kiss-for-Courage -> Skill-detail(skill-id = 110041, name = "A Kiss for Courage", description = "Increase velocity enthusiastically when positioned toward the front in the second half of the race after recovering endurance with a skill.", group = A-Kiss-for-Courage, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "distance_rate>=50&activate_count_heal>=1&order<=3", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Festive-Miracle -> Skill-detail(skill-id = 110061, name = "Festive Miracle", description = "Control breathing and kick forward hard toward victory in the second half of the race after recovering endurance with skills at least 3 times.", group = Festive-Miracle, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "activate_count_heal>=3&distance_rate>=50", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),Ability(ability-type =HP(0.035000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Superior-Heal -> Skill-detail(skill-id = 110111, name = "Superior Heal", description = "Greatly recover endurance with a gentle light when overtaken toward the back mid-race.", group = Superior-Heal, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "phase==1&change_order_onetime>0&order_rate>=40", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.075000), value-usage =Direct, target =Self),]),], icon-id = 20023) + Legacy-of-the-Strong -> Skill-detail(skill-id = 110131, name = "Legacy of the Strong", description = "Increase velocity continuously when pressured by another runner and running out of energy toward the front on the final corner or later.", group = Legacy-of-the-Strong, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&hp_per<=45&order<=3&order_rate<=50&bashin_diff_behind<=1&overtake_target_time>=1", duration = 6.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Condors-Fury -> Skill-detail(skill-id = 110141, name = "Condor's Fury", description = "Increase acceleration with blazing passion when aiming for the front from midpack on the final corner.", group = Condors-Fury, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner!=0&is_overtake==1&order>=4&order_rate<=75", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20043) + Arrows-Whistle-Shadows-Disperse -> Skill-detail(skill-id = 110171, name = "Arrows Whistle, Shadows Disperse", description = "Increase velocity with a blazing spirit when pressured by another runner in the front part of the pack on the final corner or later.", group = Arrows-Whistle-Shadows-Disperse, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&order_rate<=40&overtake_target_time>=2", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Eternal-Moments -> Skill-detail(skill-id = 110181, name = "Eternal Moments", description = "Increase velocity when starting to make a move from a position toward the front mid-race.", group = Eternal-Moments, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "phase==1&order>=3&order_rate<=50&is_overtake==1", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Presents-from-X -> Skill-detail(skill-id = 110231, name = "Presents from X", description = "Increase velocity by deriving a path to victory mid-race after staying well-positioned from the start of the race up until the second half.", group = Presents-from-X, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "order_rate_in40_continue==1&phase==1&distance_rate>=50&order>=2&order_rate<=40", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Flowery-Maneuver -> Skill-detail(skill-id = 110241, name = "Flowery☆Maneuver", description = "Increase velocity when passing another runner toward the front on the final corner. If passing toward the back, increase acceleration instead.", group = Flowery-Maneuver, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner!=0&order_rate<=40&change_order_onetime<0", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),Activation(precondition = "", condition = "is_finalcorner==1&corner!=0&order_rate>=50&order_rate<=80&change_order_onetime<0", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Every-Rose-Has-Its-Fangs -> Skill-detail(skill-id = 110301, name = "Every Rose Has Its Fangs", description = "Suck endurance from runners ahead when well-positioned and pressured by another runner mid-race.", group = Every-Rose-Has-Its-Fangs, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "phase==1&order>=2&order_rate<=50&overtake_target_time>=1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),Ability(ability-type =HP(-0.005000), value-usage =Direct, target =Ahead(18)),]),], icon-id = 20023) + Dancing-in-the-Leaves -> Skill-detail(skill-id = 110401, name = "Dancing in the Leaves", description = "Increase ability to break out of the pack when engaged in a challenge in midpack on the final corner.", group = Dancing-in-the-Leaves, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner!=0&order_rate>=30&order_rate<=70&blocked_side_continuetime>=2", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Give-Mummy-a-Hug -> Skill-detail(skill-id = 110451, name = "Give Mummy a Hug ♡", description = "Increase ability to break out of the pack when well-positioned and close to the runner ahead on the final straight.", group = Give-Mummy-a-Hug, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "is_finalcorner==1&corner==0&order<=4&bashin_diff_infront<=1", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Bountiful-Harvest -> Skill-detail(skill-id = 110561, name = "Bountiful Harvest", description = "Increase velocity with a surge of great fortune when pressured by another runner toward the back in the second half of the race.", group = Bountiful-Harvest, rarity = Unique, group-rate = 1, grade-value = 340, wit-check = False, activations = [Activation(precondition = "", condition = "distance_rate>=50&order_rate>=40&overtake_target_time>=2", duration = 5.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20013) + Right-Handed-Lv2 -> Skill-detail(skill-id = 200011, name = "Right-Handed ◎", description = "Increase performance on right-handed tracks.", group = Right-Handed, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "rotation==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Right-Handed -> Skill-detail(skill-id = 200012, name = "Right-Handed ○", description = "Moderately increase performance on right-handed tracks.", group = Right-Handed, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "rotation==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Right-Handed-x -> Skill-detail(skill-id = 200013, name = "Right-Handed ×", description = "Moderately decrease performance on right-handed tracks.", group = Right-Handed, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "rotation==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10014) + Left-Handed-Lv2 -> Skill-detail(skill-id = 200021, name = "Left-Handed ◎", description = "Increase performance on left-handed tracks.", group = Left-Handed, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "rotation==2", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Left-Handed -> Skill-detail(skill-id = 200022, name = "Left-Handed ○", description = "Moderately increase performance on left-handed tracks.", group = Left-Handed, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "rotation==2", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Left-Handed-x -> Skill-detail(skill-id = 200023, name = "Left-Handed ×", description = "Moderately decrease performance on left-handed tracks.", group = Left-Handed, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "rotation==2", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10014) + Tokyo-Racecourse-Lv2 -> Skill-detail(skill-id = 200031, name = "Tokyo Racecourse ◎", description = "Increase performance at Tokyo Racecourse.", group = Tokyo-Racecourse, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10006", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Tokyo-Racecourse -> Skill-detail(skill-id = 200032, name = "Tokyo Racecourse ○", description = "Moderately increase performance at Tokyo Racecourse.", group = Tokyo-Racecourse, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10006", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Tokyo-Racecourse-x -> Skill-detail(skill-id = 200033, name = "Tokyo Racecourse ×", description = "Moderately decrease performance at Tokyo Racecourse.", group = Tokyo-Racecourse, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10006", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10024) + Nakayama-Racecourse-Lv2 -> Skill-detail(skill-id = 200041, name = "Nakayama Racecourse ◎", description = "Increase performance at Nakayama Racecourse.", group = Nakayama-Racecourse, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10005", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Nakayama-Racecourse -> Skill-detail(skill-id = 200042, name = "Nakayama Racecourse ○", description = "Moderately increase performance at Nakayama Racecourse.", group = Nakayama-Racecourse, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10005", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Nakayama-Racecourse-x -> Skill-detail(skill-id = 200043, name = "Nakayama Racecourse ×", description = "Moderately decrease performance at Nakayama Racecourse.", group = Nakayama-Racecourse, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10005", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10024) + Hanshin-Racecourse-Lv2 -> Skill-detail(skill-id = 200051, name = "Hanshin Racecourse ◎", description = "Increase performance at Hanshin Racecourse.", group = Hanshin-Racecourse, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10009", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Hanshin-Racecourse -> Skill-detail(skill-id = 200052, name = "Hanshin Racecourse ○", description = "Moderately increase performance at Hanshin Racecourse.", group = Hanshin-Racecourse, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10009", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Hanshin-Racecourse-x -> Skill-detail(skill-id = 200053, name = "Hanshin Racecourse ×", description = "Moderately decrease performance at Hanshin Racecourse.", group = Hanshin-Racecourse, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10009", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10024) + Kyoto-Racecourse-Lv2 -> Skill-detail(skill-id = 200061, name = "Kyoto Racecourse ◎", description = "Increase performance at Kyoto Racecourse.", group = Kyoto-Racecourse, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10008", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Kyoto-Racecourse -> Skill-detail(skill-id = 200062, name = "Kyoto Racecourse ○", description = "Moderately increase performance at Kyoto Racecourse.", group = Kyoto-Racecourse, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10008", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Kyoto-Racecourse-x -> Skill-detail(skill-id = 200063, name = "Kyoto Racecourse ×", description = "Moderately decrease performance at Kyoto Racecourse.", group = Kyoto-Racecourse, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10008", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10024) + Yodo-Invicta -> Skill-detail(skill-id = 200064, name = "Yodo Invicta", description = "Increase performance at Kyoto Racecourse, boosting Stamina and Wit.", group = Kyoto-Racecourse, rarity = Rare, group-rate = 3, grade-value = 461, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10008", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(60.000000), value-usage =Direct, target =Self),Ability(ability-type =Passive-Wit(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10022) + Chukyo-Racecourse-Lv2 -> Skill-detail(skill-id = 200071, name = "Chukyo Racecourse ◎", description = "Increase performance at Chukyo Racecourse.", group = Chukyo-Racecourse, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10007", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Chukyo-Racecourse -> Skill-detail(skill-id = 200072, name = "Chukyo Racecourse ○", description = "Moderately increase performance at Chukyo Racecourse.", group = Chukyo-Racecourse, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10007", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Chukyo-Racecourse-x -> Skill-detail(skill-id = 200073, name = "Chukyo Racecourse ×", description = "Moderately decrease performance at Chukyo Racecourse.", group = Chukyo-Racecourse, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10007", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10024) + Sapporo-Racecourse-Lv2 -> Skill-detail(skill-id = 200081, name = "Sapporo Racecourse ◎", description = "Increase performance at Sapporo Racecourse.", group = Sapporo-Racecourse, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10001", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Sapporo-Racecourse -> Skill-detail(skill-id = 200082, name = "Sapporo Racecourse ○", description = "Moderately increase performance at Sapporo Racecourse.", group = Sapporo-Racecourse, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10001", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Sapporo-Racecourse-x -> Skill-detail(skill-id = 200083, name = "Sapporo Racecourse ×", description = "Moderately decrease performance at Sapporo Racecourse.", group = Sapporo-Racecourse, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10001", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10024) + Hakodate-Racecourse-Lv2 -> Skill-detail(skill-id = 200091, name = "Hakodate Racecourse ◎", description = "Increase performance at Hakodate Racecourse.", group = Hakodate-Racecourse, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10002", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Hakodate-Racecourse -> Skill-detail(skill-id = 200092, name = "Hakodate Racecourse ○", description = "Moderately increase performance at Hakodate Racecourse.", group = Hakodate-Racecourse, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10002", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Hakodate-Racecourse-x -> Skill-detail(skill-id = 200093, name = "Hakodate Racecourse ×", description = "Moderately decrease performance at Hakodate Racecourse.", group = Hakodate-Racecourse, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10002", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10024) + Fukushima-Racecourse-Lv2 -> Skill-detail(skill-id = 200101, name = "Fukushima Racecourse ◎", description = "Increase performance at Fukushima Racecourse.", group = Fukushima-Racecourse, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10004", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Fukushima-Racecourse -> Skill-detail(skill-id = 200102, name = "Fukushima Racecourse ○", description = "Moderately increase performance at Fukushima Racecourse.", group = Fukushima-Racecourse, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10004", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Fukushima-Racecourse-x -> Skill-detail(skill-id = 200103, name = "Fukushima Racecourse ×", description = "Moderately decrease performance at Fukushima Racecourse.", group = Fukushima-Racecourse, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10004", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10024) + Niigata-Racecourse-Lv2 -> Skill-detail(skill-id = 200111, name = "Niigata Racecourse ◎", description = "Increase performance at Niigata Racecourse.", group = Niigata-Racecourse, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10003", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Niigata-Racecourse -> Skill-detail(skill-id = 200112, name = "Niigata Racecourse ○", description = "Moderately increase performance at Niigata Racecourse.", group = Niigata-Racecourse, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10003", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Niigata-Racecourse-x -> Skill-detail(skill-id = 200113, name = "Niigata Racecourse ×", description = "Moderately decrease performance at Niigata Racecourse.", group = Niigata-Racecourse, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10003", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10024) + Kokura-Racecourse-Lv2 -> Skill-detail(skill-id = 200121, name = "Kokura Racecourse ◎", description = "Increase performance at Kokura Racecourse.", group = Kokura-Racecourse, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10010", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Kokura-Racecourse -> Skill-detail(skill-id = 200122, name = "Kokura Racecourse ○", description = "Moderately increase performance at Kokura Racecourse.", group = Kokura-Racecourse, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10010", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Kokura-Racecourse-x -> Skill-detail(skill-id = 200123, name = "Kokura Racecourse ×", description = "Moderately decrease performance at Kokura Racecourse.", group = Kokura-Racecourse, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10010", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10024) + Standard-Distance-Lv2 -> Skill-detail(skill-id = 200131, name = "Standard Distance ◎", description = "Increase performance over standard distances (multiples of 400m).", group = Standard-Distance, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "is_basis_distance==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Standard-Distance -> Skill-detail(skill-id = 200132, name = "Standard Distance ○", description = "Moderately increase performance over standard distances (multiples of 400m).", group = Standard-Distance, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "is_basis_distance==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Standard-Distance-x -> Skill-detail(skill-id = 200133, name = "Standard Distance ×", description = "Moderately decrease performance over standard distances (multiples of 400m).", group = Standard-Distance, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "is_basis_distance==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10024) + Non-Standard-Distance-Lv2 -> Skill-detail(skill-id = 200141, name = "Non-Standard Distance ◎", description = "Increase performance over non-standard distances (non-multiples of 400m).", group = Non-Standard-Distance, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "is_basis_distance==0", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Non-Standard-Distance -> Skill-detail(skill-id = 200142, name = "Non-Standard Distance ○", description = "Moderately increase performance over non-standard distances (non-multiples of 400m).", group = Non-Standard-Distance, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "is_basis_distance==0", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Non-Standard-Distance-x -> Skill-detail(skill-id = 200143, name = "Non-Standard Distance ×", description = "Moderately decrease performance over non-standard distances (non-multiples of 400m).", group = Non-Standard-Distance, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "is_basis_distance==0", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10024) + Firm-Conditions-Lv2 -> Skill-detail(skill-id = 200151, name = "Firm Conditions ◎", description = "Increase performance on firm ground.", group = Firm-Conditions, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "ground_condition==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Power(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10031) + Firm-Conditions -> Skill-detail(skill-id = 200152, name = "Firm Conditions ○", description = "Moderately increase performance on firm ground.", group = Firm-Conditions, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "ground_condition==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Power(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10031) + Firm-Conditions-x -> Skill-detail(skill-id = 200153, name = "Firm Conditions ×", description = "Moderately decrease performance on firm ground.", group = Firm-Conditions, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "ground_condition==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Power(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10034) + Wet-Conditions-Lv2 -> Skill-detail(skill-id = 200161, name = "Wet Conditions ◎", description = "Increase performance on good, soft, and heavy ground.", group = Wet-Conditions, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "ground_condition==2@ground_condition==3@ground_condition==4", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Power(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10031) + Wet-Conditions -> Skill-detail(skill-id = 200162, name = "Wet Conditions ○", description = "Moderately increase performance on good, soft, and heavy ground.", group = Wet-Conditions, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "ground_condition==2@ground_condition==3@ground_condition==4", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Power(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10031) + Wet-Conditions-x -> Skill-detail(skill-id = 200163, name = "Wet Conditions ×", description = "Moderately decrease performance on good, soft, and heavy ground.", group = Wet-Conditions, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "ground_condition==2@ground_condition==3@ground_condition==4", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Power(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10034) + Spring-Runner-Lv2 -> Skill-detail(skill-id = 200171, name = "Spring Runner ◎", description = "Increase performance in spring.", group = Spring-Runner, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "season==1@season==5", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Spring-Runner -> Skill-detail(skill-id = 200172, name = "Spring Runner ○", description = "Moderately increase performance in spring.", group = Spring-Runner, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "season==1@season==5", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Spring-Runner-x -> Skill-detail(skill-id = 200173, name = "Spring Runner ×", description = "Moderately decrease performance in spring.", group = Spring-Runner, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "season==1@season==5", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10014) + Summer-Runner-Lv2 -> Skill-detail(skill-id = 200181, name = "Summer Runner ◎", description = "Increase performance in summer.", group = Summer-Runner, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "season==2", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Summer-Runner -> Skill-detail(skill-id = 200182, name = "Summer Runner ○", description = "Moderately increase performance in summer.", group = Summer-Runner, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "season==2", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Summer-Runner-x -> Skill-detail(skill-id = 200183, name = "Summer Runner ×", description = "Moderately decrease performance in summer.", group = Summer-Runner, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "season==2", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10014) + Fall-Runner-Lv2 -> Skill-detail(skill-id = 200191, name = "Fall Runner ◎", description = "Increase performance in fall.", group = Fall-Runner, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "season==3", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Fall-Runner -> Skill-detail(skill-id = 200192, name = "Fall Runner ○", description = "Moderately increase performance in fall.", group = Fall-Runner, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "season==3", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Fall-Runner-x -> Skill-detail(skill-id = 200193, name = "Fall Runner ×", description = "Moderately decrease performance in fall.", group = Fall-Runner, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "season==3", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10014) + Fall-Frenzy -> Skill-detail(skill-id = 200194, name = "Fall Frenzy", description = "Increase performance in fall, boosting Speed and Power.", group = Fall-Runner, rarity = Rare, group-rate = 3, grade-value = 461, wit-check = False, activations = [Activation(precondition = "", condition = "season==3", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(60.000000), value-usage =Direct, target =Self),Ability(ability-type =Passive-Power(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10012) + Winter-Runner-Lv2 -> Skill-detail(skill-id = 200201, name = "Winter Runner ◎", description = "Increase performance in winter.", group = Winter-Runner, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "season==4", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Winter-Runner -> Skill-detail(skill-id = 200202, name = "Winter Runner ○", description = "Moderately increase performance in winter.", group = Winter-Runner, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "season==4", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Winter-Runner-x -> Skill-detail(skill-id = 200203, name = "Winter Runner ×", description = "Moderately decrease performance in winter.", group = Winter-Runner, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "season==4", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10014) + Sunny-Days-Lv2 -> Skill-detail(skill-id = 200211, name = "Sunny Days ◎", description = "Increase performance in sunny weather.", group = Sunny-Days, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "weather==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Guts(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10041) + Sunny-Days -> Skill-detail(skill-id = 200212, name = "Sunny Days ○", description = "Moderately increase performance in sunny weather.", group = Sunny-Days, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "weather==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Guts(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10041) + Cloudy-Days-Lv2 -> Skill-detail(skill-id = 200221, name = "Cloudy Days ◎", description = "Increase performance in cloudy weather.", group = Cloudy-Days, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "weather==2", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Guts(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10041) + Cloudy-Days -> Skill-detail(skill-id = 200222, name = "Cloudy Days ○", description = "Moderately increase performance in cloudy weather.", group = Cloudy-Days, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "weather==2", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Guts(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10041) + Rainy-Days-Lv2 -> Skill-detail(skill-id = 200231, name = "Rainy Days ◎", description = "Increase performance in rainy weather.", group = Rainy-Days, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "weather==3", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Guts(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10041) + Rainy-Days -> Skill-detail(skill-id = 200232, name = "Rainy Days ○", description = "Moderately increase performance in rainy weather.", group = Rainy-Days, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "weather==3", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Guts(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10041) + Rainy-Days-x -> Skill-detail(skill-id = 200233, name = "Rainy Days ×", description = "Moderately decrease performance in rainy weather.", group = Rainy-Days, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "weather==3", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Guts(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10044) + Snowy-Days-Lv2 -> Skill-detail(skill-id = 200241, name = "Snowy Days ◎", description = "Increase performance in snowy weather.", group = Snowy-Days, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "weather==4", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Guts(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10041) + Snowy-Days -> Skill-detail(skill-id = 200242, name = "Snowy Days ○", description = "Moderately increase performance in snowy weather.", group = Snowy-Days, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "weather==4", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Guts(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10041) + Inner-Post-Proficiency-Lv2 -> Skill-detail(skill-id = 200251, name = "Inner Post Proficiency ◎", description = "Increase performance in brackets 1–3.", group = Inner-Post-Proficiency, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "post_number<=3", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Wit(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10051) + Inner-Post-Proficiency -> Skill-detail(skill-id = 200252, name = "Inner Post Proficiency ○", description = "Moderately increase performance in brackets 1–3.", group = Inner-Post-Proficiency, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "post_number<=3", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Wit(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10051) + Inner-Post-Averseness -> Skill-detail(skill-id = 200253, name = "Inner Post Averseness", description = "Moderately decrease performance in brackets 1–3.", group = Inner-Post-Proficiency, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "post_number<=3", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Wit(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10054) + Outer-Post-Proficiency-Lv2 -> Skill-detail(skill-id = 200261, name = "Outer Post Proficiency ◎", description = "Increase performance in brackets 6–8.", group = Outer-Post-Proficiency, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "post_number>=6", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Outer-Post-Proficiency -> Skill-detail(skill-id = 200262, name = "Outer Post Proficiency ○", description = "Moderately increase performance in brackets 6–8.", group = Outer-Post-Proficiency, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "post_number>=6", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Outer-Post-Averseness -> Skill-detail(skill-id = 200263, name = "Outer Post Averseness", description = "Moderately decrease performance in brackets 6–8.", group = Outer-Post-Proficiency, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "post_number>=6", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10014) + Maverick-Lv2 -> Skill-detail(skill-id = 200271, name = "Maverick ◎", description = "Greatly increase performance when no other runners are using the same strategy.", group = Maverick, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "running_style_count_same<=1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(80.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Maverick -> Skill-detail(skill-id = 200272, name = "Maverick ○", description = "Increase performance when no other runners are using the same strategy.", group = Maverick, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "running_style_count_same<=1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Competitive-Spirit-Lv2 -> Skill-detail(skill-id = 200281, name = "Competitive Spirit ◎", description = "Increase performance when many other runners are using the same strategy.", group = Competitive-Spirit, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "running_style_count_same_rate>=40", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Power(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10031) + Competitive-Spirit -> Skill-detail(skill-id = 200282, name = "Competitive Spirit ○", description = "Moderately increase performance when many other runners are using the same strategy.", group = Competitive-Spirit, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "running_style_count_same_rate>=40", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Power(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10031) + Wallflower -> Skill-detail(skill-id = 200283, name = "Wallflower", description = "Moderately decrease performance when many other runners are using the same strategy.", group = Competitive-Spirit, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "running_style_count_same_rate>=40", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Power(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10034) + Target-in-Sight-Lv2 -> Skill-detail(skill-id = 200291, name = "Target in Sight ◎", description = "Increase performance when the favorite is using the same strategy.", group = Target-in-Sight, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "running_style_equal_popularity_one==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Guts(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10041) + Target-in-Sight -> Skill-detail(skill-id = 200292, name = "Target in Sight ○", description = "Moderately increase performance when the favorite is using the same strategy.", group = Target-in-Sight, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "running_style_equal_popularity_one==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Guts(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10041) + Long-Shot-Lv2 -> Skill-detail(skill-id = 200301, name = "Long Shot ◎", description = "Increase performance when 4th favorite or below.", group = Long-Shot, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "popularity>=4", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Long-Shot -> Skill-detail(skill-id = 200302, name = "Long Shot ○", description = "Moderately increase performance when 4th favorite or below.", group = Long-Shot, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "popularity>=4", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Professor-of-Curvature -> Skill-detail(skill-id = 200331, name = "Professor of Curvature", description = "Increase velocity on a corner with skilled turning.", group = Corner-Adept, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "all_corner_random==1", duration = 2.400000, cooldown = 30.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Corner-Adept -> Skill-detail(skill-id = 200332, name = "Corner Adept ○", description = "Slightly increase velocity on a corner with skilled turning.", group = Corner-Adept, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "all_corner_random==1", duration = 2.400000, cooldown = 30.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Corner-Adept-x -> Skill-detail(skill-id = 200333, name = "Corner Adept ×", description = "Moderately decrease velocity on a corner with clumsy turning.", group = Corner-Adept, rarity = Common, group-rate = -1, grade-value = -262, wit-check = True, activations = [Activation(precondition = "", condition = "all_corner_random==1", duration = 2.400000, cooldown = 30.000000, abilities = [Ability(ability-type =Current-Speed(-0.200000), value-usage =Direct, target =Self),]),], icon-id = 20014) + Corner-Connoisseur -> Skill-detail(skill-id = 200341, name = "Corner Connoisseur", description = "Increase acceleration on a corner with masterful turning.", group = Corner-Acceleration, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "all_corner_random==1", duration = 3.000000, cooldown = 30.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Corner-Acceleration -> Skill-detail(skill-id = 200342, name = "Corner Acceleration ○", description = "Slightly increase acceleration on a corner with masterful turning.", group = Corner-Acceleration, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "all_corner_random==1", duration = 3.000000, cooldown = 30.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Corner-Acceleration-x -> Skill-detail(skill-id = 200343, name = "Corner Acceleration ×", description = "Moderately decrease acceleration on a corner with awkward turning.", group = Corner-Acceleration, rarity = Common, group-rate = -1, grade-value = -262, wit-check = True, activations = [Activation(precondition = "", condition = "all_corner_random==1", duration = 3.000000, cooldown = 30.000000, abilities = [Ability(ability-type =Accel(-0.200000), value-usage =Direct, target =Self),]),], icon-id = 20044) + Swinging-Maestro -> Skill-detail(skill-id = 200351, name = "Swinging Maestro", description = "Recover endurance on a corner with efficient turning.", group = Corner-Recovery, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "corner_random==1@corner_random==2@corner_random==3@corner_random==4", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Corner-Recovery -> Skill-detail(skill-id = 200352, name = "Corner Recovery ○", description = "Slightly recover endurance on a corner with efficient turning.", group = Corner-Recovery, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "corner_random==1@corner_random==2@corner_random==3@corner_random==4", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Corner-Recovery-x -> Skill-detail(skill-id = 200353, name = "Corner Recovery ×", description = "Moderately lose endurance on a corner with inefficient turning.", group = Corner-Recovery, rarity = Common, group-rate = -1, grade-value = -262, wit-check = True, activations = [Activation(precondition = "", condition = "corner_random==1@corner_random==2@corner_random==3@corner_random==4", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.020000), value-usage =Direct, target =Self),]),], icon-id = 20024) + Beeline-Burst -> Skill-detail(skill-id = 200361, name = "Beeline Burst", description = "Increase velocity on a straight.", group = Straightaway-Adept, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "straight_random==1", duration = 2.400000, cooldown = 30.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Straightaway-Adept -> Skill-detail(skill-id = 200362, name = "Straightaway Adept", description = "Slightly increase velocity on a straight.", group = Straightaway-Adept, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "straight_random==1", duration = 2.400000, cooldown = 30.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Rushing-Gale -> Skill-detail(skill-id = 200371, name = "Rushing Gale!", description = "Increase acceleration on a straight.", group = Straightaway-Acceleration, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "straight_random==1", duration = 3.000000, cooldown = 30.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Straightaway-Acceleration -> Skill-detail(skill-id = 200372, name = "Straightaway Acceleration", description = "Slightly increase acceleration on a straight.", group = Straightaway-Acceleration, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "straight_random==1", duration = 3.000000, cooldown = 30.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Breath-of-Fresh-Air -> Skill-detail(skill-id = 200381, name = "Breath of Fresh Air", description = "Recover endurance on a straight.", group = Straightaway-Recovery, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "straight_random==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Straightaway-Recovery -> Skill-detail(skill-id = 200382, name = "Straightaway Recovery", description = "Slightly recover endurance on a straight.", group = Straightaway-Recovery, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "straight_random==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Concentration -> Skill-detail(skill-id = 200431, name = "Concentration", description = "Decrease time lost to slow starts.", group = Focus, rarity = Rare, group-rate = 2, grade-value = 394, wit-check = True, activations = [Activation(precondition = "", condition = "always==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Gate-Delay(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20062) + Focus -> Skill-detail(skill-id = 200432, name = "Focus", description = "Slightly decrease time lost to slow starts.", group = Focus, rarity = Common, group-rate = 1, grade-value = 129, wit-check = True, activations = [Activation(precondition = "", condition = "always==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Gate-Delay(0.900000), value-usage =Direct, target =Self),]),], icon-id = 20061) + Gatekept -> Skill-detail(skill-id = 200433, name = "Gatekept", description = "Moderately increase time lost to slow starts.", group = Focus, rarity = Common, group-rate = -1, grade-value = -174, wit-check = True, activations = [Activation(precondition = "", condition = "always==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Gate-Delay(1.500000), value-usage =Direct, target =Self),]),], icon-id = 20064) + Iron-Will -> Skill-detail(skill-id = 200441, name = "Iron Will", description = "Recover endurance when the way ahead is jammed early-race or mid-race.", group = Lay-Low, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "phase<=1&accumulatetime>=5&blocked_front_continuetime>=1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Lay-Low -> Skill-detail(skill-id = 200442, name = "Lay Low", description = "Slightly recover endurance when the way ahead is jammed early-race or mid-race.", group = Lay-Low, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "phase<=1&accumulatetime>=5&blocked_front_continuetime>=1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Center-Stage -> Skill-detail(skill-id = 200451, name = "Center Stage", description = "Greatly increase navigation early-race.", group = Prudent-Positioning, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "phase_random==0", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Lane-Speed(0.045000), value-usage =Direct, target =Self),]),], icon-id = 20052) + Prudent-Positioning -> Skill-detail(skill-id = 200452, name = "Prudent Positioning", description = "Increase navigation early-race.", group = Prudent-Positioning, rarity = Common, group-rate = 1, grade-value = 129, wit-check = True, activations = [Activation(precondition = "", condition = "phase_random==0", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Lane-Speed(0.035000), value-usage =Direct, target =Self),]),], icon-id = 20051) + Its-On -> Skill-detail(skill-id = 200461, name = "It's On!", description = "Increase velocity when passing another runner mid-race.", group = Ramp-Up, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "phase==1&change_order_onetime<0", duration = 1.800000, cooldown = 30.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Ramp-Up -> Skill-detail(skill-id = 200462, name = "Ramp Up", description = "Slightly increase velocity when passing another runner mid-race.", group = Ramp-Up, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "phase==1&change_order_onetime<0", duration = 1.800000, cooldown = 30.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Indomitable -> Skill-detail(skill-id = 200471, name = "Indomitable", description = "Recover endurance when passed by another runner mid-race.", group = Pace-Strategy, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "phase==1&change_order_onetime>0", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Pace-Strategy -> Skill-detail(skill-id = 200472, name = "Pace Strategy", description = "Slightly recover endurance when passed by another runner mid-race.", group = Pace-Strategy, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "phase==1&change_order_onetime>0", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Unruffled -> Skill-detail(skill-id = 200481, name = "Unruffled", description = "Recover endurance when surrounded mid-race.", group = Calm-in-a-Crowd, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "phase==1&is_surrounded==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Calm-in-a-Crowd -> Skill-detail(skill-id = 200482, name = "Calm in a Crowd", description = "Slightly recover endurance when surrounded mid-race.", group = Calm-in-a-Crowd, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "phase==1&is_surrounded==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + No-Stopping-Me -> Skill-detail(skill-id = 200491, name = "No Stopping Me!", description = "Increase maneuverability when the way ahead is blocked in the last spurt.", group = Nimble-Navigator, rarity = Rare, group-rate = 2, grade-value = 394, wit-check = True, activations = [Activation(precondition = "", condition = "infront_near_lane_time>=1&is_lastspurt==1&hp_per>=1", duration = 3.000000, cooldown = 30.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),Ability(ability-type =Lane-Speed(0.025000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Nimble-Navigator -> Skill-detail(skill-id = 200492, name = "Nimble Navigator", description = "Slightly increase maneuverability when the way ahead is blocked in the last spurt.", group = Nimble-Navigator, rarity = Common, group-rate = 1, grade-value = 174, wit-check = True, activations = [Activation(precondition = "", condition = "infront_near_lane_time>=1&is_lastspurt==1&hp_per>=1", duration = 3.000000, cooldown = 30.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),Ability(ability-type =Lane-Speed(0.005000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Lane-Legerdemain -> Skill-detail(skill-id = 200501, name = "Lane Legerdemain", description = "Increase navigation late-race.", group = Go-with-the-Flow, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "phase_random==2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Lane-Speed(0.035000), value-usage =Direct, target =Self),]),], icon-id = 20052) + Go-with-the-Flow -> Skill-detail(skill-id = 200502, name = "Go with the Flow", description = "Moderately increase navigation late-race.", group = Go-with-the-Flow, rarity = Common, group-rate = 1, grade-value = 129, wit-check = True, activations = [Activation(precondition = "", condition = "phase_random==2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Lane-Speed(0.025000), value-usage =Direct, target =Self),]),], icon-id = 20051) + In-Body-and-Mind -> Skill-detail(skill-id = 200511, name = "In Body and Mind", description = "Increase velocity in the last spurt.", group = Homestretch-Haste, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "is_lastspurt==1&phase_random==3", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Homestretch-Haste -> Skill-detail(skill-id = 200512, name = "Homestretch Haste", description = "Slightly increase velocity in the last spurt.", group = Homestretch-Haste, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "is_lastspurt==1&phase_random==3", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Taking-the-Lead -> Skill-detail(skill-id = 200531, name = "Taking the Lead", description = "Increase ability to go to the front early-race. (Front Runner)", group = Early-Lead, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&phase==0", duration = 1.200000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Early-Lead -> Skill-detail(skill-id = 200532, name = "Early Lead", description = "Slightly increase ability to go to the front early-race. (Front Runner)", group = Early-Lead, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&phase==0", duration = 1.200000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Escape-Artist -> Skill-detail(skill-id = 200541, name = "Escape Artist", description = "Increase ability to go to the front mid-race. (Front Runner)", group = Fast-Paced, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&phase_random==1&order_rate<=50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Fast-Paced -> Skill-detail(skill-id = 200542, name = "Fast-Paced", description = "Slightly increase ability to go to the front mid-race. (Front Runner)", group = Fast-Paced, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&phase_random==1&order_rate<=50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Unrestrained -> Skill-detail(skill-id = 200551, name = "Unrestrained", description = "Increase ability to keep the lead on the final corner. (Front Runner)", group = Final-Push, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&is_finalcorner_random==1&order==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Final-Push -> Skill-detail(skill-id = 200552, name = "Final Push", description = "Slightly increase ability to keep the lead on the final corner. (Front Runner)", group = Final-Push, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&is_finalcorner_random==1&order==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Calm-and-Collected -> Skill-detail(skill-id = 200561, name = "Calm and Collected", description = "Decrease fatigue upon approaching mid-race. (Pace Chaser)", group = Stamina-to-Spare, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&phase_laterhalf_random==0&order_rate<=50", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Stamina-to-Spare -> Skill-detail(skill-id = 200562, name = "Stamina to Spare", description = "Slightly decrease fatigue upon approaching mid-race. (Pace Chaser)", group = Stamina-to-Spare, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&phase_laterhalf_random==0&order_rate<=50", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Race-Planner -> Skill-detail(skill-id = 200571, name = "Race Planner", description = "Decrease fatigue mid-race. (Pace Chaser)", group = Preferred-Position, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&phase_random==1&order_rate<=50", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Preferred-Position -> Skill-detail(skill-id = 200572, name = "Preferred Position", description = "Slightly decrease fatigue mid-race. (Pace Chaser)", group = Preferred-Position, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&phase_random==1&order_rate<=50", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Speed-Star -> Skill-detail(skill-id = 200581, name = "Speed Star", description = "Increase ability to break out of the pack on the final corner. (Pace Chaser)", group = Prepared-to-Pass, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&is_finalcorner_random==1&order_rate<=50", duration = 1.800000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Prepared-to-Pass -> Skill-detail(skill-id = 200582, name = "Prepared to Pass", description = "Slightly increase ability to break out of the pack on the final corner. (Pace Chaser)", group = Prepared-to-Pass, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&is_finalcorner_random==1&order_rate<=50", duration = 1.800000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Fast-Furious -> Skill-detail(skill-id = 200591, name = "Fast & Furious", description = "Increase velocity mid-race. (Late Surger)", group = Position-Pilfer, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&phase_random==1&order_rate>50", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Position-Pilfer -> Skill-detail(skill-id = 200592, name = "Position Pilfer", description = "Slightly increase velocity mid-race. (Late Surger)", group = Position-Pilfer, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&phase_random==1&order_rate>50", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + On-Your-Left -> Skill-detail(skill-id = 200601, name = "On Your Left!", description = "Increase acceleration late-race. (Late Surger)", group = Slick-Surge, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&phase_random==2&order_rate>50", duration = 1.800000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Slick-Surge -> Skill-detail(skill-id = 200602, name = "Slick Surge", description = "Slightly increase acceleration late-race. (Late Surger)", group = Slick-Surge, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&phase_random==2&order_rate>50", duration = 1.800000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Rising-Dragon -> Skill-detail(skill-id = 200611, name = "Rising Dragon", description = "Increase velocity when passing another runner on the outside on the final corner. (Late Surger)", group = Outer-Swell, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&is_finalcorner==1&corner!=0&is_behind_in==1&change_order_onetime<0", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Outer-Swell -> Skill-detail(skill-id = 200612, name = "Outer Swell", description = "Slightly increase velocity when passing another runner on the outside on the final corner. (Late Surger)", group = Outer-Swell, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&is_finalcorner==1&corner!=0&is_behind_in==1&change_order_onetime<0", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Sleeping-Lion -> Skill-detail(skill-id = 200621, name = "Sleeping Lion", description = "Decrease fatigue mid-race. (End Closer)", group = Standing-By, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&phase_random==1&distance_diff_rate>=75", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Standing-By -> Skill-detail(skill-id = 200622, name = "Standing By", description = "Slightly decrease fatigue mid-race. (End Closer)", group = Standing-By, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&phase_random==1&distance_diff_rate>=75", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Sturm-und-Drang -> Skill-detail(skill-id = 200631, name = "Sturm und Drang", description = "Move up in preparation to close the gap when positioned toward the back late-race. (End Closer)", group = Masterful-Gambit, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&phase_random==2&distance_diff_rate>=50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Masterful-Gambit -> Skill-detail(skill-id = 200632, name = "Masterful Gambit", description = "Slightly move up in preparation to close the gap when positioned toward the back late-race. (End Closer)", group = Masterful-Gambit, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&phase_random==2&distance_diff_rate>=50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Encroaching-Shadow -> Skill-detail(skill-id = 200641, name = "Encroaching Shadow", description = "Increase acceleration on a straight in the last spurt. (End Closer)", group = Straightaway-Spurt, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&is_lastspurt==1&corner==0", duration = 0.900000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Straightaway-Spurt -> Skill-detail(skill-id = 200642, name = "Straightaway Spurt", description = "Slightly increase acceleration on a straight in the last spurt. (End Closer)", group = Straightaway-Spurt, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&is_lastspurt==1&corner==0", duration = 0.900000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Turbo-Sprint -> Skill-detail(skill-id = 200651, name = "Turbo Sprint", description = "Increase acceleration on a straight. (Sprint)", group = Sprinting-Gear, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Sprinting-Gear -> Skill-detail(skill-id = 200652, name = "Sprinting Gear", description = "Slightly increase acceleration on a straight. (Sprint)", group = Sprinting-Gear, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Wait-and-See -> Skill-detail(skill-id = 200662, name = "Wait-and-See", description = "Slightly decrease fatigue and very slightly increase acceleration when positioned toward the back mid-race. (Sprint)", group = Wait-and-See, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&phase_random==1&order_rate>50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.100000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Blinding-Flash -> Skill-detail(skill-id = 200671, name = "Blinding Flash", description = "Increase spurting ability when positioned toward the back late-race. (Sprint)", group = Gap-Closer, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&phase_random==2&order_rate>50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.100000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Gap-Closer -> Skill-detail(skill-id = 200672, name = "Gap Closer", description = "Slightly increase spurting ability when positioned toward the back late-race. (Sprint)", group = Gap-Closer, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&phase_random==2&order_rate>50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.050000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Mile-Maven -> Skill-detail(skill-id = 200681, name = "Mile Maven", description = "Widen the margin when positioned toward the front early-race. (Mile)", group = Productive-Plan, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&phase_random==0&accumulatetime>=5&order_rate<=50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Productive-Plan -> Skill-detail(skill-id = 200682, name = "Productive Plan", description = "Slightly widen the margin when positioned toward the front early-race. (Mile)", group = Productive-Plan, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&phase_random==0&accumulatetime>=5&order_rate<=50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Keen-Eye -> Skill-detail(skill-id = 200691, name = "Keen Eye", description = "Decrease fatigue, then moderately decrease velocity of runners ahead when positioned toward the back upon approaching mid-race. (Mile)", group = Watchful-Eye, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&phase_laterhalf_random==0&order_rate>50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),Ability(ability-type =Current-Speed(-0.200000), value-usage =Direct, target =Ahead(18)),]),], icon-id = 20022) + Watchful-Eye -> Skill-detail(skill-id = 200692, name = "Watchful Eye", description = "Slightly decrease fatigue, then very slightly decrease velocity of runners ahead when positioned toward the back upon approaching mid-race. (Mile)", group = Watchful-Eye, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&phase_laterhalf_random==0&order_rate>50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),Ability(ability-type =Current-Speed(-0.050000), value-usage =Direct, target =Ahead(18)),]),], icon-id = 20021) + Furious-Feat -> Skill-detail(skill-id = 200701, name = "Furious Feat", description = "Increase passing ability when positioned toward the back late-race. (Mile)", group = Updrafters, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&phase_random==2&order_rate>50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Updrafters -> Skill-detail(skill-id = 200702, name = "Updrafters", description = "Slightly increase passing ability when positioned toward the back late-race. (Mile)", group = Updrafters, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&phase_random==2&order_rate>50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Trackblazer -> Skill-detail(skill-id = 200711, name = "Trackblazer", description = "Decrease fatigue when positioned toward the front mid-race. (Medium)", group = Rosy-Outlook, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&phase_random==1&order<=3", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Rosy-Outlook -> Skill-detail(skill-id = 200712, name = "Rosy Outlook", description = "Slightly decrease fatigue when positioned toward the front mid-race. (Medium)", group = Rosy-Outlook, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&phase_random==1&order<=3", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Killer-Tunes -> Skill-detail(skill-id = 200721, name = "Killer Tunes", description = "Increase positioning ability when positioned toward the front mid-race. (Medium)", group = Up-Tempo, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&phase_random==1&order_rate<=50", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Up-Tempo -> Skill-detail(skill-id = 200722, name = "Up-Tempo", description = "Slightly increase positioning ability when positioned toward the front mid-race. (Medium)", group = Up-Tempo, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&phase_random==1&order_rate<=50", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Unyielding -> Skill-detail(skill-id = 200731, name = "Unyielding", description = "Increase ability to fight back when passed by another runner on the final corner. (Medium)", group = Steadfast, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&is_finalcorner==1&corner!=0&change_order_onetime>0", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.100000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Steadfast -> Skill-detail(skill-id = 200732, name = "Steadfast", description = "Slightly increase ability to fight back when passed by another runner on the final corner. (Medium)", group = Steadfast, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&is_finalcorner==1&corner!=0&change_order_onetime>0", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.050000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Cooldown -> Skill-detail(skill-id = 200741, name = "Cooldown", description = "Decrease fatigue by taking a breather upon entering a straight. (Long)", group = Deep-Breaths, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&straight_random==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Deep-Breaths -> Skill-detail(skill-id = 200742, name = "Deep Breaths", description = "Slightly decrease fatigue by taking a breather upon entering a straight. (Long)", group = Deep-Breaths, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&straight_random==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Innate-Experience -> Skill-detail(skill-id = 200751, name = "Innate Experience", description = "Increase velocity when near the inner rail on the final corner. (Long)", group = Inside-Scoop, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&is_finalcorner==1&corner!=0&lane_type==0", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Inside-Scoop -> Skill-detail(skill-id = 200752, name = "Inside Scoop", description = "Slightly increase velocity when near the inner rail on the final corner. (Long)", group = Inside-Scoop, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&is_finalcorner==1&corner!=0&lane_type==0", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Adrenaline-Rush -> Skill-detail(skill-id = 200761, name = "Adrenaline Rush", description = "Regain the energy to run when close to exhausting strength. (Long)", group = Extra-Tank, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&hp_per<=30", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Extra-Tank -> Skill-detail(skill-id = 200762, name = "Extra Tank", description = "Slightly regain the energy to run when close to exhausting strength. (Long)", group = Extra-Tank, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&hp_per<=30", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Trick-Front -> Skill-detail(skill-id = 200771, name = "Trick (Front)", description = "Slightly increase fatigue for rushed runners behind when positioned toward the front mid-race.", group = Trick-Front, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "phase==1&order_rate<=50&temptation_count_behind>=1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.010000), value-usage =Direct, target =Rushing-Behind(10)),]),], icon-id = 30051) + Tantalizing-Trick -> Skill-detail(skill-id = 200772, name = "Tantalizing Trick", description = "Increase fatigue for rushed runners behind when positioned toward the front mid-race.", group = Trick-Front, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "phase==1&order_rate<=50&temptation_count_behind>=1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.030000), value-usage =Direct, target =Rushing-Behind(10)),]),], icon-id = 30052) + Trick-Rear -> Skill-detail(skill-id = 200781, name = "Trick (Rear)", description = "Slightly increase fatigue for rushed runners ahead when positioned toward the back mid-race.", group = Trick-Rear, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "phase==1&order_rate>50&temptation_count_infront>=1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.010000), value-usage =Direct, target =Rushing-Ahead(10)),]),], icon-id = 30051) + Frenzied-Front-Runners -> Skill-detail(skill-id = 200791, name = "Frenzied Front Runners", description = "Increase time needed for front runners to calm down when they become rushed.", group = Frenzied-Front-Runners, rarity = Common, group-rate = 1, grade-value = 174, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_temptation_count_nige>=1&is_temptation==0", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Frenzy(5.000000), value-usage =Direct, target =Rushing-Style(Front-Runner)),]),], icon-id = 30041) + Frenzied-Pace-Chasers -> Skill-detail(skill-id = 200801, name = "Frenzied Pace Chasers", description = "Increase time needed for pace chasers to calm down when they become rushed.", group = Frenzied-Pace-Chasers, rarity = Common, group-rate = 1, grade-value = 174, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_temptation_count_senko>=1&is_temptation==0", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Frenzy(5.000000), value-usage =Direct, target =Rushing-Style(Pace-Chaser)),]),], icon-id = 30041) + Frenzied-Late-Surgers -> Skill-detail(skill-id = 200811, name = "Frenzied Late Surgers", description = "Increase time needed for late surgers to calm down when they become rushed.", group = Frenzied-Late-Surgers, rarity = Common, group-rate = 1, grade-value = 174, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_temptation_count_sashi>=1&is_temptation==0", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Frenzy(5.000000), value-usage =Direct, target =Rushing-Style(Late-Surger)),]),], icon-id = 30041) + Frenzied-End-Closers -> Skill-detail(skill-id = 200821, name = "Frenzied End Closers", description = "Increase time needed for end closers to calm down when they become rushed.", group = Frenzied-End-Closers, rarity = Common, group-rate = 1, grade-value = 174, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_temptation_count_oikomi>=1&is_temptation==0", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Frenzy(5.000000), value-usage =Direct, target =Rushing-Style(End-Closer)),]),], icon-id = 30041) + Subdued-Front-Runners -> Skill-detail(skill-id = 200831, name = "Subdued Front Runners", description = "Slightly increase fatigue for front runners early-race.", group = Subdued-Front-Runners, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_count_nige_otherself>=1&phase_random==0&accumulatetime>=5", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.010000), value-usage =Direct, target =Style(Front-Runner)),]),], icon-id = 30051) + Flustered-Front-Runners -> Skill-detail(skill-id = 200841, name = "Flustered Front Runners", description = "Slightly increase fatigue for front runners mid-race.", group = Flustered-Front-Runners, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_count_nige_otherself>=1&phase_random==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.010000), value-usage =Direct, target =Style(Front-Runner)),]),], icon-id = 30051) + Hesitant-Front-Runners -> Skill-detail(skill-id = 200851, name = "Hesitant Front Runners", description = "Slightly decrease velocity of front runners late-race.", group = Hesitant-Front-Runners, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_count_nige_otherself>=1&phase_random==2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Current-Speed(-0.150000), value-usage =Direct, target =Style(Front-Runner)),]),], icon-id = 30011) + Subdued-Pace-Chasers -> Skill-detail(skill-id = 200861, name = "Subdued Pace Chasers", description = "Slightly increase fatigue for pace chasers early-race.", group = Subdued-Pace-Chasers, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_count_senko_otherself>=1&phase_random==0&accumulatetime>=5", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.010000), value-usage =Direct, target =Style(Pace-Chaser)),]),], icon-id = 30051) + Flustered-Pace-Chasers -> Skill-detail(skill-id = 200871, name = "Flustered Pace Chasers", description = "Slightly increase fatigue for pace chasers mid-race.", group = Flustered-Pace-Chasers, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_count_senko_otherself>=1&phase_random==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.010000), value-usage =Direct, target =Style(Pace-Chaser)),]),], icon-id = 30051) + Hesitant-Pace-Chasers -> Skill-detail(skill-id = 200881, name = "Hesitant Pace Chasers", description = "Slightly decrease velocity of pace chasers late-race.", group = Hesitant-Pace-Chasers, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_count_senko_otherself>=1&phase_random==2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Current-Speed(-0.150000), value-usage =Direct, target =Style(Pace-Chaser)),]),], icon-id = 30011) + Subdued-Late-Surgers -> Skill-detail(skill-id = 200891, name = "Subdued Late Surgers", description = "Slightly increase fatigue for late surgers early-race.", group = Subdued-Late-Surgers, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_count_sashi_otherself>=1&phase_random==0&accumulatetime>=5", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.010000), value-usage =Direct, target =Style(Late-Surger)),]),], icon-id = 30051) + Flustered-Late-Surgers -> Skill-detail(skill-id = 200901, name = "Flustered Late Surgers", description = "Slightly increase fatigue for late surgers mid-race.", group = Flustered-Late-Surgers, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_count_sashi_otherself>=1&phase_random==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.010000), value-usage =Direct, target =Style(Late-Surger)),]),], icon-id = 30051) + Hesitant-Late-Surgers -> Skill-detail(skill-id = 200911, name = "Hesitant Late Surgers", description = "Slightly decrease velocity of late surgers late-race.", group = Hesitant-Late-Surgers, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_count_sashi_otherself>=1&phase_random==2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Current-Speed(-0.150000), value-usage =Direct, target =Style(Late-Surger)),]),], icon-id = 30011) + Subdued-End-Closers -> Skill-detail(skill-id = 200921, name = "Subdued End Closers", description = "Slightly increase fatigue for end closers early-race.", group = Subdued-End-Closers, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_count_oikomi_otherself>=1&phase_random==0&accumulatetime>=5", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.010000), value-usage =Direct, target =Style(End-Closer)),]),], icon-id = 30051) + Flustered-End-Closers -> Skill-detail(skill-id = 200931, name = "Flustered End Closers", description = "Slightly increase fatigue for end closers mid-race.", group = Flustered-End-Closers, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_count_oikomi_otherself>=1&phase_random==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.010000), value-usage =Direct, target =Style(End-Closer)),]),], icon-id = 30051) + Hesitant-End-Closers -> Skill-detail(skill-id = 200941, name = "Hesitant End Closers", description = "Slightly decrease velocity of end closers late-race.", group = Hesitant-End-Closers, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style_count_oikomi_otherself>=1&phase_random==2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Current-Speed(-0.150000), value-usage =Direct, target =Style(End-Closer)),]),], icon-id = 30011) + Oi-Racecourse-Lv2 -> Skill-detail(skill-id = 200951, name = "Oi Racecourse ◎", description = "Increase performance at Oi Racecourse.", group = Oi-Racecourse, rarity = Common, group-rate = 2, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10101", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Oi-Racecourse -> Skill-detail(skill-id = 200952, name = "Oi Racecourse ○", description = "Moderately increase performance at Oi Racecourse.", group = Oi-Racecourse, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10101", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Oi-Racecourse-x -> Skill-detail(skill-id = 200953, name = "Oi Racecourse ×", description = "Moderately decrease performance at Oi Racecourse.", group = Oi-Racecourse, rarity = Common, group-rate = -1, grade-value = -129, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10101", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(-40.000000), value-usage =Direct, target =Self),]),], icon-id = 10024) + Sprint-Straightaways-Lv2 -> Skill-detail(skill-id = 200961, name = "Sprint Straightaways ◎", description = "Moderately increase velocity on a straight. (Sprint)", group = Sprint-Straightaways, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Sprint-Straightaways -> Skill-detail(skill-id = 200962, name = "Sprint Straightaways ○", description = "Slightly increase velocity on a straight. (Sprint)", group = Sprint-Straightaways, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Sprint-Corners-Lv2 -> Skill-detail(skill-id = 200971, name = "Sprint Corners ◎", description = "Moderately increase velocity on a corner. (Sprint)", group = Sprint-Corners, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Sprint-Corners -> Skill-detail(skill-id = 200972, name = "Sprint Corners ○", description = "Slightly increase velocity on a corner. (Sprint)", group = Sprint-Corners, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Staggering-Lead -> Skill-detail(skill-id = 200981, name = "Staggering Lead", description = "Increase ability to maintain the lead when leading by a large margin mid-race. (Sprint)", group = Huge-Lead, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&phase==1&bashin_diff_behind>=3&order==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Huge-Lead -> Skill-detail(skill-id = 200982, name = "Huge Lead", description = "Slightly increase ability to maintain the lead when leading by a large margin mid-race. (Sprint)", group = Huge-Lead, rarity = Common, group-rate = 1, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&phase==1&bashin_diff_behind>=3&order==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Plan-X -> Skill-detail(skill-id = 200991, name = "Plan X", description = "Increase passing ability when positioned toward the front upon approaching late-race. (Sprint)", group = Countermeasure, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&phase_laterhalf_random==1&order>=2&order_rate<=50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Countermeasure -> Skill-detail(skill-id = 200992, name = "Countermeasure", description = "Slightly increase passing ability when positioned toward the front upon approaching late-race. (Sprint)", group = Countermeasure, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&phase_laterhalf_random==1&order>=2&order_rate<=50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Perfect-Prep -> Skill-detail(skill-id = 201001, name = "Perfect Prep!", description = "Prepare to make for the finish line for a medium duration mid-race. (Sprint)", group = Meticulous-Measures, rarity = Rare, group-rate = 2, grade-value = 394, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&phase_random==1", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Lane-Speed(0.035000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20052) + Meticulous-Measures -> Skill-detail(skill-id = 201002, name = "Meticulous Measures", description = "Moderately prepare to make for the finish line for a medium duration mid-race. (Sprint)", group = Meticulous-Measures, rarity = Common, group-rate = 1, grade-value = 174, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&phase_random==1", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Lane-Speed(0.025000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20051) + Adored-by-All -> Skill-detail(skill-id = 201011, name = "Adored by All", description = "Intimidate runners behind when positioned toward the front early-race. (Sprint)", group = Intimidate, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&phase_random==0&order_rate<=50&accumulatetime>=5", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Current-Speed(-0.250000), value-usage =Direct, target =Behind(18)),]),], icon-id = 30012) + Intimidate -> Skill-detail(skill-id = 201012, name = "Intimidate", description = "Moderately intimidate runners behind when positioned toward the front early-race. (Sprint)", group = Intimidate, rarity = Common, group-rate = 1, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&phase_random==0&order_rate<=50&accumulatetime>=5", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Current-Speed(-0.200000), value-usage =Direct, target =Behind(18)),]),], icon-id = 30011) + You-ve-Got-No-Shot -> Skill-detail(skill-id = 201021, name = "You've Got No Shot", description = "Cause panic in and moderately dull movement for runners ahead when positioned toward the back early-race. (Sprint)", group = Stop-Right-There, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&phase_random==0&order_rate>50&accumulatetime>=5", duration = 1.200000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.030000), value-usage =Direct, target =Ahead(18)),Ability(ability-type =Accel(-0.200000), value-usage =Direct, target =Ahead(18)),]),], icon-id = 30052) + Stop-Right-There -> Skill-detail(skill-id = 201022, name = "Stop Right There!", description = "Slightly cause panic in and very slightly dull movement for runners ahead when positioned toward the back early-race. (Sprint)", group = Stop-Right-There, rarity = Common, group-rate = 1, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==1&phase_random==0&order_rate>50&accumulatetime>=5", duration = 1.200000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.010000), value-usage =Direct, target =Ahead(18)),Ability(ability-type =Accel(-0.050000), value-usage =Direct, target =Ahead(18)),]),], icon-id = 30051) + Mile-Straightaways-Lv2 -> Skill-detail(skill-id = 201031, name = "Mile Straightaways ◎", description = "Moderately increase velocity on a straight. (Mile)", group = Mile-Straightaways, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Mile-Straightaways -> Skill-detail(skill-id = 201032, name = "Mile Straightaways ○", description = "Slightly increase velocity on a straight. (Mile)", group = Mile-Straightaways, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Mile-Corners-Lv2 -> Skill-detail(skill-id = 201041, name = "Mile Corners ◎", description = "Moderately increase velocity on a corner. (Mile)", group = Mile-Corners, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Mile-Corners -> Skill-detail(skill-id = 201042, name = "Mile Corners ○", description = "Slightly increase velocity on a corner. (Mile)", group = Mile-Corners, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Changing-Gears -> Skill-detail(skill-id = 201051, name = "Changing Gears", description = "Increase passing ability when positioned toward the front mid-race. (Mile)", group = Shifting-Gears, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&phase_random==1&order_rate<=50", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Shifting-Gears -> Skill-detail(skill-id = 201052, name = "Shifting Gears", description = "Slightly increase passing ability when positioned toward the front mid-race. (Mile)", group = Shifting-Gears, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&phase_random==1&order_rate<=50", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Step-on-the-Gas -> Skill-detail(skill-id = 201061, name = "Step on the Gas!", description = "Increase acceleration when passing another runner mid-race. (Mile)", group = Acceleration, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&phase==1&change_order_onetime<0", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Acceleration -> Skill-detail(skill-id = 201062, name = "Acceleration", description = "Slightly increase acceleration when passing another runner mid-race. (Mile)", group = Acceleration, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&phase==1&change_order_onetime<0", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Big-Sisterly -> Skill-detail(skill-id = 201071, name = "Big-Sisterly", description = "Increase passing ability. (Mile)", group = Unyielding-Spirit, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&is_overtake==1&accumulatetime>=5", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Unyielding-Spirit -> Skill-detail(skill-id = 201072, name = "Unyielding Spirit", description = "Slightly increase passing ability. (Mile)", group = Unyielding-Spirit, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&is_overtake==1&accumulatetime>=5", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Greed-for-Speed -> Skill-detail(skill-id = 201081, name = "Greed for Speed", description = "Moderately steal velocity from runners behind when positioned toward the front mid-race. (Mile)", group = Speed-Eater, rarity = Rare, group-rate = 2, grade-value = 461, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&phase_random==1&order<=3", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Current-Speed(-0.200000), value-usage =Direct, target =Behind(5)),Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 30012) + Speed-Eater -> Skill-detail(skill-id = 201082, name = "Speed Eater", description = "Slightly steal velocity from runners behind when positioned toward the front mid-race. (Mile)", group = Speed-Eater, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&phase_random==1&order<=3", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Current-Speed(-0.150000), value-usage =Direct, target =Behind(5)),Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 30011) + Battle-Formation -> Skill-detail(skill-id = 201091, name = "Battle Formation", description = "Dull movement for runners ahead when positioned toward the back early-race. (Mile)", group = Opening-Gambit, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&phase_random==0&order_rate>50&accumulatetime>=3", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(-0.300000), value-usage =Direct, target =Ahead(18)),]),], icon-id = 30022) + Opening-Gambit -> Skill-detail(skill-id = 201092, name = "Opening Gambit", description = "Slightly dull movement for runners ahead when positioned toward the back early-race. (Mile)", group = Opening-Gambit, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==2&phase_random==0&order_rate>50&accumulatetime>=3", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(-0.100000), value-usage =Direct, target =Ahead(18)),]),], icon-id = 30021) + Medium-Straightaways-Lv2 -> Skill-detail(skill-id = 201101, name = "Medium Straightaways ◎", description = "Moderately increase velocity on a straight. (Medium)", group = Medium-Straightaways, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Medium-Straightaways -> Skill-detail(skill-id = 201102, name = "Medium Straightaways ○", description = "Slightly increase velocity on a straight. (Medium)", group = Medium-Straightaways, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Medium-Corners-Lv2 -> Skill-detail(skill-id = 201111, name = "Medium Corners ◎", description = "Moderately increase velocity on a corner. (Medium)", group = Medium-Corners, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Medium-Corners -> Skill-detail(skill-id = 201112, name = "Medium Corners ○", description = "Slightly increase velocity on a corner. (Medium)", group = Medium-Corners, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Clairvoyance -> Skill-detail(skill-id = 201121, name = "Clairvoyance", description = "Widen field of view with heightened observation early-race. (Medium)", group = Hawkeye, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&phase_random==0", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Vision(15.000000), value-usage =Direct, target =Self),]),], icon-id = 20092) + Hawkeye -> Skill-detail(skill-id = 201122, name = "Hawkeye", description = "Moderately widen field of view with heightened observation early-race. (Medium)", group = Hawkeye, rarity = Common, group-rate = 1, grade-value = 129, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&phase_random==0", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Vision(10.000000), value-usage =Direct, target =Self),]),], icon-id = 20091) + Lightning-Step -> Skill-detail(skill-id = 201131, name = "Lightning Step", description = "Avoid becoming surrounded for a medium duration when positioned toward the back mid-race. (Medium)", group = Thunderbolt-Step, rarity = Rare, group-rate = 2, grade-value = 394, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&phase_random==1&order_rate>50", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Lane-Speed(0.035000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20052) + Thunderbolt-Step -> Skill-detail(skill-id = 201132, name = "Thunderbolt Step", description = "Moderately avoid becoming surrounded for a medium duration when positioned toward the back mid-race. (Medium)", group = Thunderbolt-Step, rarity = Common, group-rate = 1, grade-value = 174, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&phase_random==1&order_rate>50", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Lane-Speed(0.025000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20051) + Miraculous-Step -> Skill-detail(skill-id = 201141, name = "Miraculous Step", description = "Decrease fatigue when moving sideways. (Medium)", group = Soft-Step, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&is_move_lane==1&accumulatetime>=10@distance_type==3&is_move_lane==2&accumulatetime>=10", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Soft-Step -> Skill-detail(skill-id = 201142, name = "Soft Step", description = "Slightly decrease fatigue when moving sideways. (Medium)", group = Soft-Step, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&is_move_lane==1&accumulatetime>=10@distance_type==3&is_move_lane==2&accumulatetime>=10", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Dominator -> Skill-detail(skill-id = 201151, name = "Dominator", description = "Decrease velocity of runners ahead when positioned toward the back late-race. (Medium)", group = Tether, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&phase_random==2&order_rate>50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Current-Speed(-0.250000), value-usage =Direct, target =Ahead(18)),]),], icon-id = 30012) + Tether -> Skill-detail(skill-id = 201152, name = "Tether", description = "Slightly decrease velocity of runners ahead when positioned toward the back late-race. (Medium)", group = Tether, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&phase_random==2&order_rate>50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Current-Speed(-0.150000), value-usage =Direct, target =Ahead(18)),]),], icon-id = 30011) + Mystifying-Murmur -> Skill-detail(skill-id = 201161, name = "Mystifying Murmur", description = "Disturb runners directly ahead mid-race. (Medium)", group = Murmur, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&phase==1&blocked_front_continuetime>=1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.030000), value-usage =Direct, target =Ahead(18)),]),], icon-id = 30052) + Murmur -> Skill-detail(skill-id = 201162, name = "Murmur", description = "Slightly disturb runners directly ahead mid-race. (Medium)", group = Murmur, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&phase==1&blocked_front_continuetime>=1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.010000), value-usage =Direct, target =Ahead(18)),]),], icon-id = 30051) + Long-Straightaways-Lv2 -> Skill-detail(skill-id = 201171, name = "Long Straightaways ◎", description = "Moderately increase velocity on a straight. (Long)", group = Long-Straightaways, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Long-Straightaways -> Skill-detail(skill-id = 201172, name = "Long Straightaways ○", description = "Slightly increase velocity on a straight. (Long)", group = Long-Straightaways, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Long-Corners-Lv2 -> Skill-detail(skill-id = 201181, name = "Long Corners ◎", description = "Moderately increase velocity on a corner. (Long)", group = Long-Corners, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Long-Corners -> Skill-detail(skill-id = 201182, name = "Long Corners ○", description = "Slightly increase velocity on a corner. (Long)", group = Long-Corners, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Vanguard-Spirit -> Skill-detail(skill-id = 201191, name = "Vanguard Spirit", description = "Increase ability to maintain the lead when leading by a fair margin mid-race. (Long)", group = Keeping-the-Lead, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&phase_random==1&bashin_diff_behind>=1&order==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Keeping-the-Lead -> Skill-detail(skill-id = 201192, name = "Keeping the Lead", description = "Slightly increase ability to maintain the lead when leading by a fair margin mid-race. (Long)", group = Keeping-the-Lead, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&phase_random==1&bashin_diff_behind>=1&order==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + VIP-Pass -> Skill-detail(skill-id = 201201, name = "VIP Pass", description = "Decrease fatigue when determined to pass another runner. (Long)", group = Passing-Pro, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&is_overtake==1&accumulatetime>=5", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Passing-Pro -> Skill-detail(skill-id = 201202, name = "Passing Pro", description = "Slightly decrease fatigue when determined to pass another runner. (Long)", group = Passing-Pro, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&is_overtake==1&accumulatetime>=5", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Overwhelming-Pressure -> Skill-detail(skill-id = 201211, name = "Overwhelming Pressure", description = "Increase velocity when passing another runner late-race. (Long)", group = Pressure, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&phase==2&change_order_onetime<0", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Pressure -> Skill-detail(skill-id = 201212, name = "Pressure", description = "Slightly increase velocity when passing another runner late-race. (Long)", group = Pressure, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&phase==2&change_order_onetime<0", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Stamina-Siphon -> Skill-detail(skill-id = 201221, name = "Stamina Siphon", description = "Slightly steal endurance from runners ahead when positioned toward the back mid-race. (Long)", group = Stamina-Eater, rarity = Rare, group-rate = 2, grade-value = 461, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&phase_random==1&order>=5", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.010000), value-usage =Direct, target =Ahead(5)),Ability(ability-type =HP(0.035000), value-usage =Direct, target =Self),]),], icon-id = 30052) + Stamina-Eater -> Skill-detail(skill-id = 201222, name = "Stamina Eater", description = "Very slightly steal endurance from runners ahead when positioned toward the back mid-race. (Long)", group = Stamina-Eater, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&phase_random==1&order>=5", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.005000), value-usage =Direct, target =Ahead(5)),Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 30051) + Illusionist -> Skill-detail(skill-id = 201231, name = "Illusionist", description = "Narrow the field of view for runners ahead late-race. (Long)", group = Smoke-Screen, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&phase_random==2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Vision(-10.000000), value-usage =Direct, target =Ahead(18)),]),], icon-id = 30072) + Smoke-Screen -> Skill-detail(skill-id = 201232, name = "Smoke Screen", description = "Moderately narrow the field of view for runners ahead late-race. (Long)", group = Smoke-Screen, rarity = Common, group-rate = 1, grade-value = 129, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==4&phase_random==2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Vision(-5.000000), value-usage =Direct, target =Ahead(18)),]),], icon-id = 30071) + Front-Runner-Straightaways-Lv2 -> Skill-detail(skill-id = 201241, name = "Front Runner Straightaways ◎", description = "Moderately increase velocity on a straight. (Front Runner)", group = Front-Runner-Straightaways, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Front-Runner-Straightaways -> Skill-detail(skill-id = 201242, name = "Front Runner Straightaways ○", description = "Slightly increase velocity on a straight. (Front Runner)", group = Front-Runner-Straightaways, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Front-Runner-Corners-Lv2 -> Skill-detail(skill-id = 201251, name = "Front Runner Corners ◎", description = "Moderately increase velocity on a corner. (Front Runner)", group = Front-Runner-Corners, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Front-Runner-Corners -> Skill-detail(skill-id = 201252, name = "Front Runner Corners ○", description = "Slightly increase velocity on a corner. (Front Runner)", group = Front-Runner-Corners, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Sixth-Sense -> Skill-detail(skill-id = 201261, name = "Sixth Sense", description = "Avoid becoming surrounded early-race. (Front Runner)", group = Dodging-Danger, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&phase==0&blocked_front_continuetime>=1@running_style==1&phase==0&blocked_side_continuetime>=1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Lane-Speed(0.035000), value-usage =Direct, target =Self),Ability(ability-type =Lane-Change(0.500000), value-usage =Direct, target =Self),]),], icon-id = 20052) + Dodging-Danger -> Skill-detail(skill-id = 201262, name = "Dodging Danger", description = "Moderately avoid becoming surrounded early-race. (Front Runner)", group = Dodging-Danger, rarity = Common, group-rate = 1, grade-value = 129, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&phase==0&blocked_front_continuetime>=1@running_style==1&phase==0&blocked_side_continuetime>=1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Lane-Speed(0.025000), value-usage =Direct, target =Self),Ability(ability-type =Lane-Change(0.500000), value-usage =Direct, target =Self),]),], icon-id = 20051) + Leaders-Pride -> Skill-detail(skill-id = 201272, name = "Leader's Pride", description = "Slightly increase ability to pass or challenge another runner early-race or mid-race. (Front Runner)", group = Leaders-Pride, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&phase<=1&change_order_onetime>0&accumulatetime>=5@running_style==1&phase<=1&blocked_side_continuetime>=2&accumulatetime>=5", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Restless -> Skill-detail(skill-id = 201281, name = "Restless", description = "Reduce fatigue on an uphill. (Front Runner)", group = Moxie, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&slope==1&accumulatetime>=10", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Moxie -> Skill-detail(skill-id = 201282, name = "Moxie", description = "Slightly reduce fatigue on an uphill. (Front Runner)", group = Moxie, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&slope==1&accumulatetime>=10", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Reignition -> Skill-detail(skill-id = 201291, name = "Reignition", description = "Increase acceleration when not in the lead mid-race. (Front Runner)", group = Second-Wind, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&phase_random==1&order>=2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Second-Wind -> Skill-detail(skill-id = 201292, name = "Second Wind", description = "Slightly increase acceleration when not in the lead mid-race. (Front Runner)", group = Second-Wind, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&phase_random==1&order>=2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Restart -> Skill-detail(skill-id = 201302, name = "Restart", description = "Slightly dull movement for runners ahead when not in the lead early-race. (Front Runner)", group = Restart, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==1&phase_random==0&order>=2&accumulatetime>=5", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(-0.100000), value-usage =Direct, target =Ahead(18)),]),], icon-id = 30021) + Pace-Chaser-Straightaways-Lv2 -> Skill-detail(skill-id = 201311, name = "Pace Chaser Straightaways ◎", description = "Moderately increase velocity on a straight. (Pace Chaser)", group = Pace-Chaser-Straightaways, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Pace-Chaser-Straightaways -> Skill-detail(skill-id = 201312, name = "Pace Chaser Straightaways ○", description = "Slightly increase velocity on a straight. (Pace Chaser)", group = Pace-Chaser-Straightaways, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Pace-Chaser-Corners-Lv2 -> Skill-detail(skill-id = 201321, name = "Pace Chaser Corners ◎", description = "Moderately increase velocity on a corner. (Pace Chaser)", group = Pace-Chaser-Corners, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Pace-Chaser-Corners -> Skill-detail(skill-id = 201322, name = "Pace Chaser Corners ○", description = "Slightly increase velocity on a corner. (Pace Chaser)", group = Pace-Chaser-Corners, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Technician -> Skill-detail(skill-id = 201331, name = "Technician", description = "Moderately increase ability to navigate smoothly. (Pace Chaser)", group = Shrewd-Step, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&is_move_lane==1@running_style==2&is_move_lane==2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Shrewd-Step -> Skill-detail(skill-id = 201332, name = "Shrewd Step", description = "Slightly increase ability to navigate smoothly. (Pace Chaser)", group = Shrewd-Step, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&is_move_lane==1@running_style==2&is_move_lane==2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Determined-Descent -> Skill-detail(skill-id = 201341, name = "Determined Descent", description = "Moderately improve running on a downhill. (Pace Chaser)", group = Straight-Descent, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&down_slope_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Straight-Descent -> Skill-detail(skill-id = 201342, name = "Straight Descent", description = "Slightly improve running on a downhill. (Pace Chaser)", group = Straight-Descent, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&down_slope_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Gourmand -> Skill-detail(skill-id = 201351, name = "Gourmand", description = "Recover endurance mid-race. (Pace Chaser)", group = Hydrate, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&phase_random==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Hydrate -> Skill-detail(skill-id = 201352, name = "Hydrate", description = "Slightly recover endurance mid-race. (Pace Chaser)", group = Hydrate, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&phase_random==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Shatterproof -> Skill-detail(skill-id = 201361, name = "Shatterproof", description = "Moderately increase acceleration when positioned toward the back mid-race. (Pace Chaser)", group = Tactical-Tweak, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&phase_random==1&order_rate>40", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Tactical-Tweak -> Skill-detail(skill-id = 201362, name = "Tactical Tweak", description = "Slightly increase acceleration when positioned toward the back mid-race. (Pace Chaser)", group = Tactical-Tweak, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&phase_random==1&order_rate>40", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Dazzling-Disorientation -> Skill-detail(skill-id = 201371, name = "Dazzling Disorientation", description = "Moderately narrow the field of view for runners behind when positioned toward the front late-race. (Pace Chaser)", group = Disorient, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&phase_random==2&order_rate<=50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Vision(-5.000000), value-usage =Direct, target =Behind(18)),]),], icon-id = 30072) + Disorient -> Skill-detail(skill-id = 201372, name = "Disorient", description = "Slightly narrow the field of view for runners behind when positioned toward the front late-race. (Pace Chaser)", group = Disorient, rarity = Common, group-rate = 1, grade-value = 85, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&phase_random==2&order_rate<=50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Vision(-3.000000), value-usage =Direct, target =Behind(18)),]),], icon-id = 30071) + Late-Surger-Straightaways-Lv2 -> Skill-detail(skill-id = 201381, name = "Late Surger Straightaways ◎", description = "Moderately increase velocity on a straight. (Late Surger)", group = Late-Surger-Straightaways, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Late-Surger-Straightaways -> Skill-detail(skill-id = 201382, name = "Late Surger Straightaways ○", description = "Slightly increase velocity on a straight. (Late Surger)", group = Late-Surger-Straightaways, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Late-Surger-Corners-Lv2 -> Skill-detail(skill-id = 201391, name = "Late Surger Corners ◎", description = "Moderately increase velocity on a corner. (Late Surger)", group = Late-Surger-Corners, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Late-Surger-Corners -> Skill-detail(skill-id = 201392, name = "Late Surger Corners ○", description = "Slightly increase velocity on a corner. (Late Surger)", group = Late-Surger-Corners, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Hard-Worker -> Skill-detail(skill-id = 201401, name = "Hard Worker", description = "Moderately increase acceleration for a medium duration when trying to pass another runner. (Late Surger)", group = Fighter, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&is_overtake==1&accumulatetime>=5", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20042) + Fighter -> Skill-detail(skill-id = 201402, name = "Fighter", description = "Slightly increase acceleration for a medium duration when trying to pass another runner. (Late Surger)", group = Fighter, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&is_overtake==1&accumulatetime>=5", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Fifteen-Million-CC -> Skill-detail(skill-id = 201411, name = "15,000,000 CC", description = "Increase velocity on an uphill. (Late Surger)", group = One-Million-CC, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&up_slope_random==1", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + One-Million-CC -> Skill-detail(skill-id = 201412, name = "1,500,000 CC", description = "Slightly increase velocity on an uphill. (Late Surger)", group = One-Million-CC, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&up_slope_random==1", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Relax -> Skill-detail(skill-id = 201421, name = "Relax", description = "Recover endurance late-race. (Late Surger)", group = A-Small-Breather, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&phase_random==2", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + A-Small-Breather -> Skill-detail(skill-id = 201422, name = "A Small Breather", description = "Slightly recover endurance late-race. (Late Surger)", group = A-Small-Breather, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&phase_random==2", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + The-Bigger-Picture -> Skill-detail(skill-id = 201431, name = "The Bigger Picture", description = "Widen field of view with heightened observation mid-race. (Late Surger)", group = Studious, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&phase_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Vision(15.000000), value-usage =Direct, target =Self),]),], icon-id = 20092) + Studious -> Skill-detail(skill-id = 201432, name = "Studious", description = "Slightly widen field of view with heightened observation mid-race. (Late Surger)", group = Studious, rarity = Common, group-rate = 1, grade-value = 85, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&phase_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Vision(5.000000), value-usage =Direct, target =Self),]),], icon-id = 20091) + All-Seeing-Eyes -> Skill-detail(skill-id = 201441, name = "All-Seeing Eyes", description = "Startle other runners late-race. (Late Surger)", group = Sharp-Gaze, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&phase_random==2&order_rate>50", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.030000), value-usage =Direct, target =In-View),]),], icon-id = 30052) + Sharp-Gaze -> Skill-detail(skill-id = 201442, name = "Sharp Gaze", description = "Slightly startle other runners late-race. (Late Surger)", group = Sharp-Gaze, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&phase_random==2&order_rate>50", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(-0.010000), value-usage =Direct, target =In-View),]),], icon-id = 30051) + End-Closer-Straightaways-Lv2 -> Skill-detail(skill-id = 201451, name = "End Closer Straightaways ◎", description = "Moderately increase velocity on a straight. (End Closer)", group = End-Closer-Straightaways, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + End-Closer-Straightaways -> Skill-detail(skill-id = 201452, name = "End Closer Straightaways ○", description = "Slightly increase velocity on a straight. (End Closer)", group = End-Closer-Straightaways, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&straight_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + End-Closer-Corners-Lv2 -> Skill-detail(skill-id = 201461, name = "End Closer Corners ◎", description = "Moderately increase velocity on a corner. (End Closer)", group = End-Closer-Corners, rarity = Common, group-rate = 2, grade-value = 262, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),]),], icon-id = 20011) + End-Closer-Corners -> Skill-detail(skill-id = 201462, name = "End Closer Corners ○", description = "Slightly increase velocity on a corner. (End Closer)", group = End-Closer-Corners, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&all_corner_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + The-Coast-Is-Clear -> Skill-detail(skill-id = 201471, name = "The Coast Is Clear!", description = "Moderately widen field of view with situational awareness when moving sideways. (End Closer)", group = I-Can-See-Right-Through-You, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&is_move_lane==1@running_style==4&is_move_lane==2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Vision(10.000000), value-usage =Direct, target =Self),]),], icon-id = 20092) + I-Can-See-Right-Through-You -> Skill-detail(skill-id = 201472, name = "I Can See Right Through You", description = "Slightly widen field of view with situational awareness when moving sideways. (End Closer)", group = I-Can-See-Right-Through-You, rarity = Common, group-rate = 1, grade-value = 85, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&is_move_lane==1@running_style==4&is_move_lane==2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Vision(5.000000), value-usage =Direct, target =Self),]),], icon-id = 20091) + Go-Home-Specialist -> Skill-detail(skill-id = 201481, name = "Go-Home Specialist", description = "Reduce fatigue on a downhill. (End Closer)", group = After-School-Stroll, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&slope==2&accumulatetime>=10", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + After-School-Stroll -> Skill-detail(skill-id = 201482, name = "After-School Stroll", description = "Slightly reduce fatigue on a downhill. (End Closer)", group = After-School-Stroll, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&slope==2&accumulatetime>=10", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Serenity -> Skill-detail(skill-id = 201491, name = "Serenity", description = "Regain composure by calming down when the way ahead is jammed. (End Closer)", group = Levelheaded, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&blocked_front_continuetime>=1&accumulatetime>=10", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Levelheaded -> Skill-detail(skill-id = 201492, name = "Levelheaded", description = "Slightly regain composure by calming down when the way ahead is jammed. (End Closer)", group = Levelheaded, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&blocked_front_continuetime>=1&accumulatetime>=10", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Crusader -> Skill-detail(skill-id = 201501, name = "Crusader", description = "Widen field of view when positioned toward the back late-race. (End Closer)", group = Strategist, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&phase_random==2&order_rate>50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Vision(15.000000), value-usage =Direct, target =Self),]),], icon-id = 20092) + Strategist -> Skill-detail(skill-id = 201502, name = "Strategist", description = "Slightly widen field of view when positioned toward the back late-race. (End Closer)", group = Strategist, rarity = Common, group-rate = 1, grade-value = 85, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&phase_random==2&order_rate>50", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Vision(5.000000), value-usage =Direct, target =Self),]),], icon-id = 20091) + Petrifying-Gaze -> Skill-detail(skill-id = 201511, name = "Petrifying Gaze", description = "Unnerve runners in focus late-race. (End Closer)", group = Intense-Gaze, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&phase_random==2&order>=2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Current-Speed(-0.250000), value-usage =Direct, target =In-View),]),], icon-id = 30012) + Intense-Gaze -> Skill-detail(skill-id = 201512, name = "Intense Gaze", description = "Slightly unnerve runners in focus late-race. (End Closer)", group = Intense-Gaze, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&phase_random==2&order>=2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Current-Speed(-0.150000), value-usage =Direct, target =In-View),]),], icon-id = 30011) + Front-Runner-Savvy-Lv2 -> Skill-detail(skill-id = 201521, name = "Front Runner Savvy ◎", description = "Increase ability to get into a good position. (Front Runner)", group = Front-Runner-Savvy, rarity = Common, group-rate = 2, grade-value = 217, wit-check = False, activations = [Activation(precondition = "", condition = "running_style==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Wit(60.000000), value-usage =Direct, target =Self),Ability(ability-type =Vision(10.000000), value-usage =Direct, target =Self),]),], icon-id = 10051) + Front-Runner-Savvy -> Skill-detail(skill-id = 201522, name = "Front Runner Savvy ○", description = "Moderately increase ability to get into a good position. (Front Runner)", group = Front-Runner-Savvy, rarity = Common, group-rate = 1, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "running_style==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Wit(40.000000), value-usage =Direct, target =Self),Ability(ability-type =Vision(5.000000), value-usage =Direct, target =Self),]),], icon-id = 10051) + Pace-Chaser-Savvy-Lv2 -> Skill-detail(skill-id = 201531, name = "Pace Chaser Savvy ◎", description = "Increase ability to get into a good position. (Pace Chaser)", group = Pace-Chaser-Savvy, rarity = Common, group-rate = 2, grade-value = 217, wit-check = False, activations = [Activation(precondition = "", condition = "running_style==2", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Wit(60.000000), value-usage =Direct, target =Self),Ability(ability-type =Vision(10.000000), value-usage =Direct, target =Self),]),], icon-id = 10051) + Pace-Chaser-Savvy -> Skill-detail(skill-id = 201532, name = "Pace Chaser Savvy ○", description = "Moderately increase ability to get into a good position. (Pace Chaser)", group = Pace-Chaser-Savvy, rarity = Common, group-rate = 1, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "running_style==2", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Wit(40.000000), value-usage =Direct, target =Self),Ability(ability-type =Vision(5.000000), value-usage =Direct, target =Self),]),], icon-id = 10051) + Late-Surger-Savvy-Lv2 -> Skill-detail(skill-id = 201541, name = "Late Surger Savvy ◎", description = "Increase ability to get into a good position. (Late Surger)", group = Late-Surger-Savvy, rarity = Common, group-rate = 2, grade-value = 217, wit-check = False, activations = [Activation(precondition = "", condition = "running_style==3", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Wit(60.000000), value-usage =Direct, target =Self),Ability(ability-type =Vision(10.000000), value-usage =Direct, target =Self),]),], icon-id = 10051) + Late-Surger-Savvy -> Skill-detail(skill-id = 201542, name = "Late Surger Savvy ○", description = "Moderately increase ability to get into a good position. (Late Surger)", group = Late-Surger-Savvy, rarity = Common, group-rate = 1, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "running_style==3", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Wit(40.000000), value-usage =Direct, target =Self),Ability(ability-type =Vision(5.000000), value-usage =Direct, target =Self),]),], icon-id = 10051) + End-Closer-Savvy-Lv2 -> Skill-detail(skill-id = 201551, name = "End Closer Savvy ◎", description = "Increase ability to get into a good position. (End Closer)", group = End-Closer-Savvy, rarity = Common, group-rate = 2, grade-value = 217, wit-check = False, activations = [Activation(precondition = "", condition = "running_style==4", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Wit(60.000000), value-usage =Direct, target =Self),Ability(ability-type =Vision(10.000000), value-usage =Direct, target =Self),]),], icon-id = 10051) + End-Closer-Savvy -> Skill-detail(skill-id = 201552, name = "End Closer Savvy ○", description = "Moderately increase ability to get into a good position. (End Closer)", group = End-Closer-Savvy, rarity = Common, group-rate = 1, grade-value = 174, wit-check = False, activations = [Activation(precondition = "", condition = "running_style==4", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Wit(40.000000), value-usage =Direct, target =Self),Ability(ability-type =Vision(5.000000), value-usage =Direct, target =Self),]),], icon-id = 10051) + Super-Lucky-Seven -> Skill-detail(skill-id = 201561, name = "Super Lucky Seven", description = "Good things may happen when in bracket 7.", group = Lucky-Seven, rarity = Rare, group-rate = 2, grade-value = 334, wit-check = True, activations = [Activation(precondition = "", condition = "random_lot==50&post_number==7", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(60.000000), value-usage =Direct, target =Self),Ability(ability-type =Passive-Stamina(60.000000), value-usage =Direct, target =Self),Ability(ability-type =Passive-Power(60.000000), value-usage =Direct, target =Self),]),], icon-id = 10062) + Lucky-Seven -> Skill-detail(skill-id = 201562, name = "Lucky Seven", description = "Moderately good things may happen when in bracket 7.", group = Lucky-Seven, rarity = Common, group-rate = 1, grade-value = 174, wit-check = True, activations = [Activation(precondition = "", condition = "random_lot==50&post_number==7", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(40.000000), value-usage =Direct, target =Self),Ability(ability-type =Passive-Stamina(40.000000), value-usage =Direct, target =Self),Ability(ability-type =Passive-Power(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10061) + Triple-Sevens -> Skill-detail(skill-id = 201571, name = "Triple 7s", description = "Slightly gain energy with 777m remaining.", group = Triple-Sevens, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "remain_distance<=778&remain_distance>=776", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Highlander -> Skill-detail(skill-id = 201581, name = "Highlander", description = "Slightly improve running on an uphill.", group = Highlander, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "up_slope_random==1", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Uma-Stan -> Skill-detail(skill-id = 201591, name = "Uma Stan", description = "Slightly increase velocity when close to many runners.", group = Uma-Stan, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "near_count>=3&accumulatetime>=5", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Superstan -> Skill-detail(skill-id = 201592, name = "Superstan", description = "Increase velocity when close to many runners.", group = Uma-Stan, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "near_count>=3&accumulatetime>=5", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Groundwork -> Skill-detail(skill-id = 201601, name = "Groundwork", description = "Slightly increase acceleration after activating many skills early-race.", group = Groundwork, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "activate_count_start>=3", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Tail-Held-High -> Skill-detail(skill-id = 201611, name = "Tail Held High", description = "Slightly increase velocity after activating many skills mid-race.", group = Tail-Held-High, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "activate_count_middle>=3", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Shake-It-Out -> Skill-detail(skill-id = 201621, name = "Shake It Out", description = "Slightly recover endurance after activating many skills late-race.", group = Shake-It-Out, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "activate_count_end_after>=3", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Sympathy -> Skill-detail(skill-id = 201631, name = "Sympathy", description = "Moderately increase performance when many runners share a sympathetic heart.", group = Sympathy, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "same_skill_horse_count>=5", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Lone-Wolf -> Skill-detail(skill-id = 201641, name = "Lone Wolf", description = "Moderately increase performance when no other runners have the heart of a lone wolf.", group = Lone-Wolf, rarity = Common, group-rate = 1, grade-value = 129, wit-check = False, activations = [Activation(precondition = "", condition = "same_skill_horse_count==1", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10011) + Slipstream -> Skill-detail(skill-id = 201651, name = "Slipstream", description = "Slightly decrease wind resistance when following directly behind another runner.", group = Slipstream, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "infront_near_lane_time>=3&accumulatetime>=10", duration = 3.000000, cooldown = 30.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Playtimes-Over -> Skill-detail(skill-id = 201661, name = "Playtime's Over!", description = "Slightly increase velocity when followed by another runner directly behind for a long time.", group = Playtimes-Over, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "behind_near_lane_time>=3&accumulatetime>=10", duration = 3.000000, cooldown = 30.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Trending-in-the-Charts -> Skill-detail(skill-id = 201671, name = "Trending in the Charts!", description = "Increase velocity when engaged in a challenge mid-race. (Dirt)", group = Top-Pick, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "ground_type==2&phase==1&blocked_side_continuetime>=2", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + Top-Pick -> Skill-detail(skill-id = 201672, name = "Top Pick", description = "Slightly increase velocity when engaged in a challenge mid-race. (Dirt)", group = Top-Pick, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "ground_type==2&phase==1&blocked_side_continuetime>=2", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Lead-the-Charge -> Skill-detail(skill-id = 201681, name = "Lead the Charge!", description = "Prepare to aim for the front late-race. (Dirt)", group = Forward-March, rarity = Rare, group-rate = 2, grade-value = 394, wit-check = True, activations = [Activation(precondition = "", condition = "ground_type==2&phase_random==2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Lane-Speed(0.035000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.300000), value-usage =Direct, target =Self),]),], icon-id = 20052) + Forward-March -> Skill-detail(skill-id = 201682, name = "Forward, March!", description = "Moderately prepare to aim for the front late-race. (Dirt)", group = Forward-March, rarity = Common, group-rate = 1, grade-value = 174, wit-check = True, activations = [Activation(precondition = "", condition = "ground_type==2&phase_random==2", duration = 3.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Lane-Speed(0.025000), value-usage =Direct, target =Self),Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20051) + Lie-in-Wait -> Skill-detail(skill-id = 201691, name = "Lie in Wait", description = "Recover endurance when positioned toward the back upon approaching mid-race. (Late Surger)", group = Be-Still, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&phase_laterhalf_random==0&order_rate>=50", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Direct, target =Self),]),], icon-id = 20022) + Be-Still -> Skill-detail(skill-id = 201692, name = "Be Still", description = "Slightly recover endurance when positioned toward the back upon approaching mid-race. (Late Surger)", group = Be-Still, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==3&phase_laterhalf_random==0&order_rate>=50", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Direct, target =Self),]),], icon-id = 20021) + Come-What-May -> Skill-detail(skill-id = 201701, name = "Come What May", description = "Increase velocity when well-positioned on a straight in the last spurt. (Medium)", group = All-I-ve-Got, rarity = Rare, group-rate = 2, grade-value = 508, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&is_lastspurt==1&corner==0&order_rate>=20&order_rate<=60", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Direct, target =Self),]),], icon-id = 20012) + All-I-ve-Got -> Skill-detail(skill-id = 201702, name = "All I've Got", description = "Slightly increase velocity when well-positioned on a straight in the last spurt. (Medium)", group = All-I-ve-Got, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "distance_type==3&is_lastspurt==1&corner==0&order_rate>=20&order_rate<=60", duration = 2.400000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Head-On -> Skill-detail(skill-id = 201902, name = "Head-On", description = "Slightly increase acceleration when positioned toward the front late-race. (Pace Chaser)", group = Head-On, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==2&phase_random==2&order_rate<=50", duration = 1.800000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Direct, target =Self),]),], icon-id = 20041) + Early-Start -> Skill-detail(skill-id = 202022, name = "Early Start", description = "Very slightly increase velocity for a medium duration when positioned toward the back mid-race. (End Closer)", group = Early-Start, rarity = Common, group-rate = 1, grade-value = 217, wit-check = True, activations = [Activation(precondition = "", condition = "running_style==4&phase_random==1&order_rate>=50", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.050000), value-usage =Direct, target =Self),]),], icon-id = 20011) + Risky-Business -> Skill-detail(skill-id = 202032, name = "Risky Business", description = "Moderately increase velocity in the second half of the race, but also greatly increase fatigue sometimes.", group = Risky-Business, rarity = Common, group-rate = 1, grade-value = 129, wit-check = True, activations = [Activation(precondition = "", condition = "distance_rate_after_random==50", duration = 1.800000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Direct, target =Self),Ability(ability-type =HP(-1.000000), value-usage =Multiply-Random, target =Self),]),], icon-id = 20011) + Burning-Spirit-SPD -> Skill-detail(skill-id = 210011, name = "Burning Spirit SPD", description = "Burn bright with team spirit, increasing velocity in proportion to the total Speed of racing team members mid-race.", group = Ignited-Spirit-SPD, rarity = Rare, group-rate = 2, grade-value = 633, wit-check = True, activations = [Activation(precondition = "", condition = "phase_random==1", duration = 1.800000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.350000), value-usage =Team-Speed, target =Self),]),], icon-id = 20102) + Ignited-Spirit-SPD -> Skill-detail(skill-id = 210012, name = "Ignited Spirit SPD", description = "Burn bright with team spirit, slightly increasing velocity in proportion to the total Speed of racing team members mid-race.", group = Ignited-Spirit-SPD, rarity = Common, group-rate = 1, grade-value = 263, wit-check = True, activations = [Activation(precondition = "", condition = "phase_random==1", duration = 1.800000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.150000), value-usage =Team-Speed, target =Self),]),], icon-id = 20101) + Burning-Spirit-STA -> Skill-detail(skill-id = 210021, name = "Burning Spirit STA", description = "Burn bright with team spirit, recovering endurance in proportion to the total Stamina of racing team members mid-race.", group = Ignited-Spirit-STA, rarity = Rare, group-rate = 2, grade-value = 633, wit-check = True, activations = [Activation(precondition = "", condition = "phase_random==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.055000), value-usage =Team-Stamina, target =Self),]),], icon-id = 20112) + Ignited-Spirit-STA -> Skill-detail(skill-id = 210022, name = "Ignited Spirit STA", description = "Burn bright with team spirit, slightly recovering endurance in proportion to the total Stamina of racing team members mid-race.", group = Ignited-Spirit-STA, rarity = Common, group-rate = 1, grade-value = 263, wit-check = True, activations = [Activation(precondition = "", condition = "phase_random==1", duration = 0.000000, cooldown = 500.000000, abilities = [Ability(ability-type =HP(0.015000), value-usage =Team-Stamina, target =Self),]),], icon-id = 20111) + Burning-Spirit-PWR -> Skill-detail(skill-id = 210031, name = "Burning Spirit PWR", description = "Burn bright with team spirit, increasing acceleration in proportion to the total Power of racing team members late-race.", group = Ignited-Spirit-PWR, rarity = Rare, group-rate = 2, grade-value = 633, wit-check = True, activations = [Activation(precondition = "", condition = "phase_random==2", duration = 1.200000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.400000), value-usage =Team-Power, target =Self),]),], icon-id = 20122) + Ignited-Spirit-PWR -> Skill-detail(skill-id = 210032, name = "Ignited Spirit PWR", description = "Burn bright with team spirit, slightly increasing acceleration in proportion to the total Power of racing team members late-race.", group = Ignited-Spirit-PWR, rarity = Common, group-rate = 1, grade-value = 263, wit-check = True, activations = [Activation(precondition = "", condition = "phase_random==2", duration = 1.200000, cooldown = 500.000000, abilities = [Ability(ability-type =Accel(0.200000), value-usage =Team-Power, target =Self),]),], icon-id = 20121) + Burning-Spirit-GUTS -> Skill-detail(skill-id = 210041, name = "Burning Spirit GUTS", description = "Burn bright with team spirit, increasing vigor in proportion to the total Guts of racing team members late-race.", group = Ignited-Spirit-GUTS, rarity = Rare, group-rate = 2, grade-value = 633, wit-check = True, activations = [Activation(precondition = "", condition = "phase_random==2", duration = 1.800000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.250000), value-usage =Team-Guts, target =Self),Ability(ability-type =Accel(0.300000), value-usage =Team-Guts, target =Self),]),], icon-id = 20102) + Ignited-Spirit-GUTS -> Skill-detail(skill-id = 210042, name = "Ignited Spirit GUTS", description = "Burn bright with team spirit, very slightly increasing vigor in proportion to the total Guts of racing team members late-race.", group = Ignited-Spirit-GUTS, rarity = Common, group-rate = 1, grade-value = 263, wit-check = True, activations = [Activation(precondition = "", condition = "phase_random==2", duration = 1.800000, cooldown = 500.000000, abilities = [Ability(ability-type =Target-Speed(0.050000), value-usage =Team-Guts, target =Self),Ability(ability-type =Accel(0.100000), value-usage =Team-Guts, target =Self),]),], icon-id = 20101) + Burning-Spirit-WIT -> Skill-detail(skill-id = 210051, name = "Burning Spirit WIT", description = "Burn bright with team spirit, increasing strategic navigation for a medium duration in proportion to the total Wit of racing team members early-race.", group = Ignited-Spirit-WIT, rarity = Rare, group-rate = 2, grade-value = 633, wit-check = True, activations = [Activation(precondition = "", condition = "phase_random==0", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Lane-Speed(0.035000), value-usage =Team-Wit, target =Self),Ability(ability-type =Vision(15.000000), value-usage =Team-Wit, target =Self),]),], icon-id = 20132) + Ignited-Spirit-WIT -> Skill-detail(skill-id = 210052, name = "Ignited Spirit WIT", description = "Burn bright with team spirit, slightly increasing strategic navigation for a medium duration in proportion to the total Wit of racing team members early-race.", group = Ignited-Spirit-WIT, rarity = Common, group-rate = 1, grade-value = 263, wit-check = True, activations = [Activation(precondition = "", condition = "phase_random==0", duration = 4.000000, cooldown = 500.000000, abilities = [Ability(ability-type =Lane-Speed(0.015000), value-usage =Team-Wit, target =Self),Ability(ability-type =Vision(5.000000), value-usage =Team-Wit, target =Self),]),], icon-id = 20131) + Unquenched-Thirst -> Skill-detail(skill-id = 300011, name = "Unquenched Thirst", description = "Moderately increase performance with the desire to race.", group = Unquenched-Thirst, rarity = Common, group-rate = 1, grade-value = 0, wit-check = False, activations = [Activation(precondition = "", condition = "track_id==10008", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Stamina(40.000000), value-usage =Direct, target =Self),]),], icon-id = 10021) + Unchanging -> Skill-detail(skill-id = 300021, name = "Unchanging", description = "Greatly increase performance with the same ambition of days past.", group = Unchanging, rarity = Rare, group-rate = 1, grade-value = 0, wit-check = False, activations = [Activation(precondition = "", condition = "season==4", duration = -1.000000, cooldown = 0.000000, abilities = [Ability(ability-type =Passive-Speed(80.000000), value-usage =Direct, target =Self),]),], icon-id = 10012) + +// Details about a skill. +pub struct skill-detail + skill-id: int + name: string + description: string + group: skill-group + rarity: rarity + group-rate: int + grade-value: int + wit-check: bool + activations: list + icon-id: int + +// Automatically generated. +// Shows a string representation of the `skill-detail` type. +pub fun skill-detail/show(this : skill-detail) : e string + match this + Skill-detail(skill-id, name, description, group, rarity, group-rate, grade-value, wit-check, activations, icon-id) -> "Skill-detail(skill-id: " ++ skill-id.show ++ ", name: " ++ name.show ++ ", description: " ++ description.show ++ ", group: " ++ group.show ++ ", rarity: " ++ rarity.show ++ ", group-rate: " ++ group-rate.show ++ ", grade-value: " ++ grade-value.show ++ ", wit-check: " ++ wit-check.show ++ ", activations: " ++ activations.show ++ ", icon-id: " ++ icon-id.show ++ ")" + +// Skill rarity. +pub type rarity + Common // white + Rare // gold + Unique-Low // 1*/2* unique + Unique-Upgraded // 3*+ unique on a trainee upgraded from 1*/2* + Unique // base 3* unique + +pub fun rarity/show(r: rarity): string + match r + Common -> "Common" + Rare -> "Rare" + Unique-Low -> "Unique (1☆/2☆)" + Unique-Upgraded -> "Unique (3☆+ from 1☆/2☆ upgraded)" + Unique -> "Unique (3☆+)" + +// Condition and precondition logic. +pub alias condition = string + +// Activation conditions and effects. +// A skill has one or two activations. +pub struct activation + precondition: condition + condition: condition + duration: float64 // seconds + cooldown: float64 // seconds + abilities: list // one to three elements + +pub fun activation/show(a: activation): string + match a + Activation("", condition, -1.0, _, abilities) -> condition ++ " -> " ++ abilities.show + Activation("", condition, duration, cooldown, abilities) | cooldown >= 500.0 -> condition ++ " -> " ++ abilities.show ++ " for " ++ duration.show ++ "s" + Activation("", condition, duration, cooldown, abilities) -> condition ++ " -> " ++ abilities.show ++ " for " ++ duration.show ++ "s on " ++ cooldown.show ++ "s cooldown" + Activation(precondition, condition, -1.0, _, abilities)-> precondition ++ " -> " ++ condition ++ " -> " ++ abilities.show + Activation(precondition, condition, duration, cooldown, abilities) | cooldown >= 500.0 -> precondition ++ " -> " ++ condition ++ " -> " ++ abilities.show ++ " for " ++ duration.show ++ "s" + Activation(precondition, condition, duration, cooldown, abilities) -> precondition ++ "-> " ++ condition ++ " -> " ++ abilities.show ++ " for " ++ duration.show ++ "s on " ++ cooldown.show ++ "s cooldown" + +// Effects of activating a skill. +pub struct ability + ability-type: ability-type + value-usage: value-usage + target: target + +pub fun ability/show(a: ability): string + match a + Ability(t, Direct, Self) -> t.show + Ability(t, Direct, target) -> t.show ++ " " ++ target.show + Ability(t, v, Self) -> t.show ++ " scaling by " ++ v.show + Ability(t, v, target) -> t.show ++ " " ++ target.show ++ " scaling by " ++ v.show + +// Target of a skill activation effect. +pub type ability-type + Passive-Speed(bonus: float64) + Passive-Stamina(bonus: float64) + Passive-Power(bonus: float64) + Passive-Guts(bonus: float64) + Passive-Wit(bonus: float64) + Runaway + Vision(bonus: float64) + HP(rate: float64) + Gate-Delay(rate: float64) + Frenzy(add: float64) + Current-Speed(rate: float64) + Target-Speed(rate: float64) + Lane-Speed(rate: float64) + Accel(rate: float64) + Lane-Change(rate: float64) + +pub fun ability-type/show(a: ability-type): string + match a + Passive-Speed(bonus) -> "passive " ++ bonus.show ++ " Speed" + Passive-Stamina(bonus) -> "passive " ++ bonus.show ++ " Stamina" + Passive-Power(bonus) -> "passive " ++ bonus.show ++ " Power" + Passive-Guts(bonus) -> "passive " ++ bonus.show ++ " Guts" + Passive-Wit(bonus) -> "passive " ++ bonus.show ++ " Wit" + Runaway -> "enable Great Escape style" + Vision(bonus) -> bonus.show ++ " vision" + HP(rate) | rate >= 0.0 -> show(rate * 100.0) ++ "% HP recovery" + HP(rate) -> show(rate * 100.0) ++ "% HP loss" + Gate-Delay(rate) -> rate.show ++ "× gate delay" + Frenzy(add) -> add.show ++ "s longer Rushed" + Current-Speed(rate) -> show(rate * 100.0) ++ "% current speed" + Target-Speed(rate) -> show(rate * 100.0) ++ "% target speed" + Lane-Speed(rate) -> show(rate * 100.0) ++ "% lane speed" + Accel(rate) -> show(rate * 100.0) ++ "% acceleration" + Lane-Change(rate) -> rate.show ++ " course width movement" + +// Special scaling for skill activation effects. +pub type value-usage + Direct + Team-Speed + Team-Stamina + Team-Power + Team-Guts + Team-Wit + Multiply-Random + +pub fun value-usage/show(v: value-usage): string + match v + Direct -> "no scaling" + Team-Speed -> "team's Speed" + Team-Stamina -> "team's Stamina" + Team-Power -> "team's Power" + Team-Guts -> "team's Guts" + Team-Wit -> "team's Wit" + Multiply-Random -> "random multiplier (0× to 0.04×)" + +// Who a skill activation targets. +pub type target + Self + In-View + Ahead(limit: int) + Behind(limit: int) + Style(style: style) + Rushing-Ahead(limit: int) + Rushing-Behind(limit: int) + Rushing-Style(style: style) + +pub fun target/show(t: target): string + match t + Self -> "self" + In-View -> "others in field of view" + Ahead(limit) | limit >= 18 -> "others ahead" + Ahead(limit) -> "next " ++ limit.show ++ " others ahead" + Behind(limit) | limit >= 18 -> "others behind" + Behind(limit) -> "next " ++ limit.show ++ " others behind" + Style(Front-Runner) -> "other Front Runners" + Style(Pace-Chaser) -> "other Pace Chasers" + Style(Late-Surger) -> "other Late Surgers" + Style(End-Closer) -> "other End Closers" + Rushing-Ahead(limit) | limit >= 18 -> "others rushing ahead" + Rushing-Ahead(limit) -> "next " ++ limit.show ++ " others rushing ahead" + Rushing-Behind(limit) | limit >= 18 -> "others rushing behind" + Rushing-Behind(limit) -> "next " ++ limit.show ++ " others rushing behind" + Rushing-Style(Front-Runner) -> "rushing Front Runners" + Rushing-Style(Pace-Chaser) -> "rushing Pace Chasers" + Rushing-Style(Late-Surger) -> "rushing Late Surgers" + Rushing-Style(End-Closer) -> "rushing End Closers" + +// Running style for skill targets. +// TODO(zeph): there is definitely a better place for this to live +pub type style + Front-Runner + Pace-Chaser + Late-Surger + End-Closer \ No newline at end of file diff --git a/horsegen/gen.go b/horsegen/gen.go index f994a38..abd510a 100644 --- a/horsegen/gen.go +++ b/horsegen/gen.go @@ -61,25 +61,37 @@ func ExecCharacterKK(t *template.Template, w io.Writer, c []NamedID[Character], return t.ExecuteTemplate(w, "koka-character", &data) } -func ExecSkillKK(t *template.Template, w io.Writer, g []NamedID[SkillGroup]) error { +func ExecSkillKK(t *template.Template, w io.Writer, g []NamedID[SkillGroup], s []Skill) error { data := struct { Groups []NamedID[SkillGroup] - }{g} + Skills []Skill + }{g, s} return t.ExecuteTemplate(w, "koka-skill", &data) } -const replaceDash = " ,!?/+();#○◎☆♡'&=♪∀゚∴" +func ExecSkillGroupKK(t *template.Template, w io.Writer, g []NamedID[SkillGroup], s []Skill) error { + data := struct { + Groups []NamedID[SkillGroup] + Skills []Skill + }{g, s} + return t.ExecuteTemplate(w, "koka-skill-group", &data) +} + +const replaceDash = " ,!?/+();#○☆♡'&=♪∀゚∴" var ( kkReplace = func() *strings.Replacer { r := []string{ "Triple 7s", "Triple-Sevens", // hard to replace with the right thing automatically - "1,500,000 CC", "Million-CC", + "1,500,000 CC", "One-Million-CC", + "15,000,000 CC", "Fifteen-Million-CC", "1st", "First", ".", "", "'s", "s", "ó", "o", "∞", "Infinity", + "×", "x", + "◎", "Lv2", } for _, c := range replaceDash { r = append(r, string(c), "-") diff --git a/horsegen/load.go b/horsegen/load.go index 3e50aa3..e517451 100644 --- a/horsegen/load.go +++ b/horsegen/load.go @@ -20,6 +20,9 @@ var characterAffinity3SQL string //go:embed skill-group.sql var skillGroupSQL string +//go:embed skill.sql +var skillSQL string + type ( Character struct{} SkillGroup struct{} @@ -174,3 +177,133 @@ func SkillGroups(ctx context.Context, db *sqlitex.Pool) ([]NamedID[SkillGroup], } return r, nil } + +type Skill struct { + ID int + Name string + Description string + GroupID int + GroupName string + Rarity int + GroupRate int + GradeValue int + WitCheck bool + Activations [2]SkillActivation + IconID int + Index int +} + +type SkillActivation struct { + Precondition string + Condition string + Duration float64 + Cooldown float64 + Abilities [3]SkillAbility +} + +type SkillAbility struct { + Type int + ValueUsage int + Value float64 + Target int + TargetValue int +} + +func Skills(ctx context.Context, db *sqlitex.Pool) ([]Skill, error) { + conn, err := db.Take(ctx) + defer db.Put(conn) + if err != nil { + return nil, fmt.Errorf("couldn't get connection for skills: %w", err) + } + stmt, _, err := conn.PrepareTransient(skillSQL) + if err != nil { + return nil, fmt.Errorf("couldn't prepare statement for skills: %w", err) + } + defer stmt.Finalize() + + var r []Skill + for { + ok, err := stmt.Step() + if err != nil { + return nil, fmt.Errorf("error stepping skills: %w", err) + } + if !ok { + break + } + s := Skill{ + ID: stmt.ColumnInt(0), + Name: stmt.ColumnText(1), + Description: stmt.ColumnText(2), + GroupID: stmt.ColumnInt(3), + GroupName: stmt.ColumnText(4), + Rarity: stmt.ColumnInt(5), + GroupRate: stmt.ColumnInt(6), + GradeValue: stmt.ColumnInt(7), + WitCheck: stmt.ColumnInt(8) != 0, + Activations: [2]SkillActivation{ + { + Precondition: stmt.ColumnText(9), + Condition: stmt.ColumnText(10), + Duration: stmt.ColumnFloat(11), + Cooldown: stmt.ColumnFloat(12), + Abilities: [3]SkillAbility{ + { + Type: stmt.ColumnInt(13), + ValueUsage: stmt.ColumnInt(14), + Value: stmt.ColumnFloat(15), + Target: stmt.ColumnInt(16), + TargetValue: stmt.ColumnInt(17), + }, + { + Type: stmt.ColumnInt(18), + ValueUsage: stmt.ColumnInt(19), + Value: stmt.ColumnFloat(20), + Target: stmt.ColumnInt(21), + TargetValue: stmt.ColumnInt(22), + }, + { + Type: stmt.ColumnInt(23), + ValueUsage: stmt.ColumnInt(24), + Value: stmt.ColumnFloat(25), + Target: stmt.ColumnInt(26), + TargetValue: stmt.ColumnInt(27), + }, + }, + }, + { + Precondition: stmt.ColumnText(28), + Condition: stmt.ColumnText(29), + Duration: stmt.ColumnFloat(30), + Cooldown: stmt.ColumnFloat(31), + Abilities: [3]SkillAbility{ + { + Type: stmt.ColumnInt(32), + ValueUsage: stmt.ColumnInt(33), + Value: stmt.ColumnFloat(34), + Target: stmt.ColumnInt(35), + TargetValue: stmt.ColumnInt(36), + }, + { + Type: stmt.ColumnInt(37), + ValueUsage: stmt.ColumnInt(38), + Value: stmt.ColumnFloat(39), + Target: stmt.ColumnInt(40), + TargetValue: stmt.ColumnInt(41), + }, + { + Type: stmt.ColumnInt(42), + ValueUsage: stmt.ColumnInt(43), + Value: stmt.ColumnFloat(44), + Target: stmt.ColumnInt(45), + TargetValue: stmt.ColumnInt(46), + }, + }, + }, + }, + IconID: stmt.ColumnInt(47), + Index: stmt.ColumnInt(48), + } + r = append(r, s) + } + return r, nil +} diff --git a/horsegen/main.go b/horsegen/main.go index 9a6d5ca..6951606 100644 --- a/horsegen/main.go +++ b/horsegen/main.go @@ -47,6 +47,7 @@ func main() { pairs []AffinityRelation trios []AffinityRelation sg []NamedID[SkillGroup] + skills []Skill ) eg.Go(func() error { slog.Info("get characters") @@ -72,6 +73,12 @@ func main() { sg = r return err }) + eg.Go(func() error { + slog.Info("get skills") + r, err := Skills(ctx, db) + skills = r + return err + }) if err := eg.Wait(); err != nil { slog.Error("load", slog.Any("err", err)) os.Exit(1) @@ -92,7 +99,15 @@ func main() { return err } slog.Info("write skills") - return ExecSkillKK(t, sf, sg) + return ExecSkillKK(t, sf, sg, skills) + }) + eg.Go(func() error { + sf, err := os.Create(filepath.Join(out, "skill-group.kk")) + if err != nil { + return err + } + slog.Info("write skill groups") + return ExecSkillGroupKK(t, sf, sg, skills) }) if err := eg.Wait(); err != nil { slog.Error("generate", slog.Any("err", err)) diff --git a/horsegen/skill.kk.template b/horsegen/skill.kk.template index 1ddde94..d35fe9e 100644 --- a/horsegen/skill.kk.template +++ b/horsegen/skill.kk.template @@ -1,7 +1,7 @@ -{{ define "koka-skill" -}} -module horse/skill +{{- define "koka-skill-group" -}} +module horse/skill-group -// Automatically generated with the horsegen tool; DO NOT EDIT +// Automatically generated with horsegen; DO NOT EDIT // Skill groups. // A skill group may contain white, circle, double-circle, gold, and purple skills @@ -27,7 +27,7 @@ pub fip(1) fun skill-group/from-id(^id: int): maybe {{- end }} _ -> Nothing -// Get names for skill groups. +// Get the name for a skill group. // Skill group names are the name of the base skill in the group. pub fun skill-group/show(sg: skill-group): string match sg @@ -45,4 +45,291 @@ pub fip fun skill-group/order2(a: skill-group, b: skill-group): order2 {{ $s.ID }} + {{- end }} + +// Get the skill for an ID. +pub fip(1) fun skill/from-id(^id: int): maybe + match id + {{- range $s := $.Skills }} + {{ $s.ID }} -> Just( {{- kkenum $s.Name -}} ) + {{- end }} + _ -> Nothing + +// Get the name of a skill. +pub fun skill/show(s: skill): string + match s + {{- range $s := $.Skills }} + {{ kkenum $s.Name }} -> {{ printf "%q" $s.Name }} + {{- end }} + +// Compare two skills by ID order. +pub fip fun skill/order2(a: skill, b: skill): order2 + match cmp(a.skill-id, b.skill-id) + Lt -> Lt2(a, b) + Eq -> Eq2(a) + Gt -> Gt2(a, b) + +pub fun skill/(==)(a: skill, b: skill): bool + a.skill-id == b.skill-id + +// Get complete skill info. +pub fun skill/detail(^s: skill): skill-detail + match s + {{- range $s := $.Skills }} + {{ kkenum $s.Name }} -> {{ template "kk-render-skill-detail" $s }} + {{- end }} + +// Details about a skill. +pub struct skill-detail + skill-id: int + name: string + description: string + group: skill-group + rarity: rarity + group-rate: int + grade-value: int + wit-check: bool + activations: list + icon-id: int + +// Automatically generated. +// Shows a string representation of the `skill-detail` type. +pub fun skill-detail/show(this : skill-detail) : e string + match this + Skill-detail(skill-id, name, description, group, rarity, group-rate, grade-value, wit-check, activations, icon-id) -> "Skill-detail(skill-id: " ++ skill-id.show ++ ", name: " ++ name.show ++ ", description: " ++ description.show ++ ", group: " ++ group.show ++ ", rarity: " ++ rarity.show ++ ", group-rate: " ++ group-rate.show ++ ", grade-value: " ++ grade-value.show ++ ", wit-check: " ++ wit-check.show ++ ", activations: " ++ activations.show ++ ", icon-id: " ++ icon-id.show ++ ")" + +// Skill rarity. +pub type rarity + Common // white + Rare // gold + Unique-Low // 1*/2* unique + Unique-Upgraded // 3*+ unique on a trainee upgraded from 1*/2* + Unique // base 3* unique + +pub fun rarity/show(r: rarity): string + match r + Common -> "Common" + Rare -> "Rare" + Unique-Low -> "Unique (1☆/2☆)" + Unique-Upgraded -> "Unique (3☆+ from 1☆/2☆ upgraded)" + Unique -> "Unique (3☆+)" + +// Condition and precondition logic. +pub alias condition = string + +// Activation conditions and effects. +// A skill has one or two activations. +pub struct activation + precondition: condition + condition: condition + duration: float64 // seconds + cooldown: float64 // seconds + abilities: list // one to three elements + +pub fun activation/show(a: activation): string + match a + Activation("", condition, -1.0, _, abilities) -> condition ++ " -> " ++ abilities.show + Activation("", condition, duration, cooldown, abilities) | cooldown >= 500.0 -> condition ++ " -> " ++ abilities.show ++ " for " ++ duration.show ++ "s" + Activation("", condition, duration, cooldown, abilities) -> condition ++ " -> " ++ abilities.show ++ " for " ++ duration.show ++ "s on " ++ cooldown.show ++ "s cooldown" + Activation(precondition, condition, -1.0, _, abilities)-> precondition ++ " -> " ++ condition ++ " -> " ++ abilities.show + Activation(precondition, condition, duration, cooldown, abilities) | cooldown >= 500.0 -> precondition ++ " -> " ++ condition ++ " -> " ++ abilities.show ++ " for " ++ duration.show ++ "s" + Activation(precondition, condition, duration, cooldown, abilities) -> precondition ++ "-> " ++ condition ++ " -> " ++ abilities.show ++ " for " ++ duration.show ++ "s on " ++ cooldown.show ++ "s cooldown" + +// Effects of activating a skill. +pub struct ability + ability-type: ability-type + value-usage: value-usage + target: target + +pub fun ability/show(a: ability): string + match a + Ability(t, Direct, Self) -> t.show + Ability(t, Direct, target) -> t.show ++ " " ++ target.show + Ability(t, v, Self) -> t.show ++ " scaling by " ++ v.show + Ability(t, v, target) -> t.show ++ " " ++ target.show ++ " scaling by " ++ v.show + +// Target of a skill activation effect. +pub type ability-type + Passive-Speed(bonus: float64) + Passive-Stamina(bonus: float64) + Passive-Power(bonus: float64) + Passive-Guts(bonus: float64) + Passive-Wit(bonus: float64) + Runaway + Vision(bonus: float64) + HP(rate: float64) + Gate-Delay(rate: float64) + Frenzy(add: float64) + Current-Speed(rate: float64) + Target-Speed(rate: float64) + Lane-Speed(rate: float64) + Accel(rate: float64) + Lane-Change(rate: float64) + +pub fun ability-type/show(a: ability-type): string + match a + Passive-Speed(bonus) -> "passive " ++ bonus.show ++ " Speed" + Passive-Stamina(bonus) -> "passive " ++ bonus.show ++ " Stamina" + Passive-Power(bonus) -> "passive " ++ bonus.show ++ " Power" + Passive-Guts(bonus) -> "passive " ++ bonus.show ++ " Guts" + Passive-Wit(bonus) -> "passive " ++ bonus.show ++ " Wit" + Runaway -> "enable Great Escape style" + Vision(bonus) -> bonus.show ++ " vision" + HP(rate) | rate >= 0.0 -> show(rate * 100.0) ++ "% HP recovery" + HP(rate) -> show(rate * 100.0) ++ "% HP loss" + Gate-Delay(rate) -> rate.show ++ "× gate delay" + Frenzy(add) -> add.show ++ "s longer Rushed" + Current-Speed(rate) -> show(rate * 100.0) ++ "% current speed" + Target-Speed(rate) -> show(rate * 100.0) ++ "% target speed" + Lane-Speed(rate) -> show(rate * 100.0) ++ "% lane speed" + Accel(rate) -> show(rate * 100.0) ++ "% acceleration" + Lane-Change(rate) -> rate.show ++ " course width movement" + +// Special scaling for skill activation effects. +pub type value-usage + Direct + Team-Speed + Team-Stamina + Team-Power + Team-Guts + Team-Wit + Multiply-Random + +pub fun value-usage/show(v: value-usage): string + match v + Direct -> "no scaling" + Team-Speed -> "team's Speed" + Team-Stamina -> "team's Stamina" + Team-Power -> "team's Power" + Team-Guts -> "team's Guts" + Team-Wit -> "team's Wit" + Multiply-Random -> "random multiplier (0× to 0.04×)" + +// Who a skill activation targets. +pub type target + Self + In-View + Ahead(limit: int) + Behind(limit: int) + Style(style: style) + Rushing-Ahead(limit: int) + Rushing-Behind(limit: int) + Rushing-Style(style: style) + +pub fun target/show(t: target): string + match t + Self -> "self" + In-View -> "others in field of view" + Ahead(limit) | limit >= 18 -> "others ahead" + Ahead(limit) -> "next " ++ limit.show ++ " others ahead" + Behind(limit) | limit >= 18 -> "others behind" + Behind(limit) -> "next " ++ limit.show ++ " others behind" + Style(Front-Runner) -> "other Front Runners" + Style(Pace-Chaser) -> "other Pace Chasers" + Style(Late-Surger) -> "other Late Surgers" + Style(End-Closer) -> "other End Closers" + Rushing-Ahead(limit) | limit >= 18 -> "others rushing ahead" + Rushing-Ahead(limit) -> "next " ++ limit.show ++ " others rushing ahead" + Rushing-Behind(limit) | limit >= 18 -> "others rushing behind" + Rushing-Behind(limit) -> "next " ++ limit.show ++ " others rushing behind" + Rushing-Style(Front-Runner) -> "rushing Front Runners" + Rushing-Style(Pace-Chaser) -> "rushing Pace Chasers" + Rushing-Style(Late-Surger) -> "rushing Late Surgers" + Rushing-Style(End-Closer) -> "rushing End Closers" + +// Running style for skill targets. +// TODO(zeph): there is definitely a better place for this to live +pub type style + Front-Runner + Pace-Chaser + Late-Surger + End-Closer + +{{- end -}} + +{{ define "kk-render-skill-detail" }} +{{- /* Call with Skill structure as argument. */ -}} +Skill-detail(skill-id = {{ $.ID -}} + , name = {{ printf "%q" $.Name -}} + , description = {{ printf "%q" $.Description -}} + , group = {{ kkenum $.GroupName -}} + , rarity = {{ if eq $.Rarity 1 }}Common{{ else if eq $.Rarity 2 }}Rare{{ else if eq $.Rarity 3 }}Unique-Low{{ else if eq $.Rarity 4 }}Unique-Upgraded{{ else if eq $.Rarity 5 }}Unique{{ else }}??? $.Rarity={{ $.Rarity }}{{ end -}} + , group-rate = {{ $.GroupRate -}} + , grade-value = {{ $.GradeValue -}} + , wit-check = {{ if $.WitCheck }}True{{ else }}False{{ end -}} + , activations = [ + {{- range $a := $.Activations -}} + {{- if ne $a.Condition "" -}} + Activation(precondition = {{ printf "%q" $a.Precondition -}} + , condition = {{ printf "%q" $a.Condition -}} + , duration = {{ printf "%f" $a.Duration -}} + , cooldown = {{ printf "%f" $a.Cooldown -}} + , abilities = [ + {{- range $abil := $a.Abilities -}} + {{- if ne $abil.Type 0 -}} + Ability(ability-type = + {{- if eq $abil.Type 1 -}}Passive-Speed({{ printf "%f" $abil.Value }}) + {{- else if eq $abil.Type 2 -}}Passive-Stamina({{ printf "%f" $abil.Value }}) + {{- else if eq $abil.Type 3 -}}Passive-Power({{ printf "%f" $abil.Value }}) + {{- else if eq $abil.Type 4 -}}Passive-Guts({{ printf "%f" $abil.Value }}) + {{- else if eq $abil.Type 5 -}}Passive-Wit({{ printf "%f" $abil.Value }}) + {{- else if eq $abil.Type 6 -}}Runaway + {{- else if eq $abil.Type 8 -}}Vision({{ printf "%f" $abil.Value }}) + {{- else if eq $abil.Type 9 -}}HP({{ printf "%f" $abil.Value }}) + {{- else if eq $abil.Type 10 -}}Gate-Delay({{ printf "%f" $abil.Value }}) + {{- else if eq $abil.Type 13 -}}Frenzy({{ printf "%f" $abil.Value }}) + {{- else if eq $abil.Type 21 -}}Current-Speed({{ printf "%f" $abil.Value }}) + {{- else if eq $abil.Type 27 -}}Target-Speed({{ printf "%f" $abil.Value }}) + {{- else if eq $abil.Type 28 -}}Lane-Speed({{ printf "%f" $abil.Value }}) + {{- else if eq $abil.Type 31 -}}Accel({{ printf "%f" $abil.Value }}) + {{- else if eq $abil.Type 35 -}}Lane-Change({{ printf "%f" $abil.Value }}) + {{- else -}}??? $abil.Type={{$abil.Type}} + {{- end -}} + , value-usage = + {{- if eq $abil.ValueUsage 1 -}}Direct + {{- else if eq $abil.ValueUsage 3 -}}Team-Speed + {{- else if eq $abil.ValueUsage 4 -}}Team-Stamina + {{- else if eq $abil.ValueUsage 5 -}}Team-Power + {{- else if eq $abil.ValueUsage 6 -}}Team-Guts + {{- else if eq $abil.ValueUsage 7 -}}Team-Wit + {{- else if eq $abil.ValueUsage 8 -}}Multiply-Random + {{- else -}}??? $abil.ValueUsage={{ $abil.ValueUsage }} + {{- end -}} + , target = + {{- if eq $abil.Target 1 -}}Self + {{- else if eq $abil.Target 4 -}}In-View + {{- else if eq $abil.Target 9 -}}Ahead({{ $abil.TargetValue }}) + {{- else if eq $abil.Target 10 -}}Behind({{ $abil.TargetValue }}) + {{- else if eq $abil.Target 18 -}}Style({{ if eq $abil.TargetValue 1 }}Front-Runner{{ else if eq $abil.TargetValue 2 }}Pace-Chaser{{ else if eq $abil.TargetValue 3 }}Late-Surger{{ else if eq $abil.TargetValue 4 }}End-Closer{{ else }}??? $abil.TargetValue={{ $abil.TargetValue }}{{ end }}) + {{- else if eq $abil.Target 19 -}}Rushing-Ahead({{ $abil.TargetValue }}) + {{- else if eq $abil.Target 20 -}}Rushing-Behind({{ $abil.TargetValue }}) + {{- else if eq $abil.Target 21 -}}Rushing-Style({{ if eq $abil.TargetValue 1 }}Front-Runner{{ else if eq $abil.TargetValue 2 }}Pace-Chaser{{ else if eq $abil.TargetValue 3 }}Late-Surger{{ else if eq $abil.TargetValue 4 }}End-Closer{{ else }}??? $abil.TargetValue={{ $abil.TargetValue }}{{ end }}) + {{- end -}} + ), + {{- end -}} + {{- end -}} + ]), + {{- end -}} + {{- end -}} + ], icon-id = {{ $.IconID -}} +) +{{- end -}} diff --git a/horsegen/skill.sql b/horsegen/skill.sql new file mode 100644 index 0000000..1d32e37 --- /dev/null +++ b/horsegen/skill.sql @@ -0,0 +1,69 @@ +WITH skill_names AS ( + SELECT + n."index" AS "id", + n."text" AS "name", + d."text" AS "description" + FROM text_data n + JOIN text_data d ON n."index" = d."index" AND n."category" = 47 AND d."category" = 48 +), skill_groups AS ( + SELECT + group_id, + name + FROM skill_data d + JOIN skill_names n ON d.id = n.id + WHERE group_rate = 1 +) +SELECT + d.id, + n.name, + n.description, + d.group_id, + g.name, + d.rarity, + d.group_rate, + d.grade_value, + d.activate_lot, + d.precondition_1, + d.condition_1, + IIF(d.float_ability_time_1 <= 0, CAST(d.float_ability_time_1 AS REAL), d.float_ability_time_1 / 1e4) AS float_ability_time_1, + IIF(d.float_cooldown_time_1 <= 0, CAST(d.float_cooldown_time_1 AS REAL), d.float_cooldown_time_1 / 1e4) AS float_cooldown_time_1, + d.ability_type_1_1, + d.ability_value_usage_1_1, + d.float_ability_value_1_1 / 1e4 AS float_ability_value_1_1, + d.target_type_1_1, + d.target_value_1_1, + d.ability_type_1_2, + d.ability_value_usage_1_2, + d.float_ability_value_1_2 / 1e4 AS float_ability_value_1_2, + d.target_type_1_2, + d.target_value_1_2, + d.ability_type_1_3, + d.ability_value_usage_1_3, + d.float_ability_value_1_3 / 1e4 AS float_ability_value_1_3, + d.target_type_1_3, + d.target_value_1_3, + d.precondition_2, + d.condition_2, + IIF(d.float_ability_time_2 <= 0, CAST(d.float_ability_time_2 AS REAL), d.float_ability_time_2 / 1e4) AS float_ability_time_2, + IIF(d.float_cooldown_time_2 <= 0, CAST(d.float_cooldown_time_2 AS REAL), d.float_cooldown_time_2 / 1e4) AS float_cooldown_time_2, + d.ability_type_2_1, + d.ability_value_usage_2_1, + d.float_ability_value_2_1 / 1e4 AS float_ability_value_2_1, + d.target_type_2_1, + d.target_value_2_1, + d.ability_type_2_2, + d.ability_value_usage_2_2, + d.float_ability_value_2_2 / 1e4 AS float_ability_value_2_2, + d.target_type_2_2, + d.target_value_2_2, + d.ability_type_2_3, + d.ability_value_usage_2_3, + d.float_ability_value_2_3 / 1e4 AS float_ability_value_2_3, + d.target_type_2_3, + d.target_value_2_3, + d.icon_id, + ROW_NUMBER() OVER (ORDER BY d.id) - 1 AS "index" +FROM skill_data d + JOIN skill_names n ON d.id = n.id + JOIN skill_groups g ON d.group_id = g.group_id +ORDER BY d.id