zenno/doc/race: add reference links to doccy
This commit is contained in:
@@ -7,12 +7,13 @@
|
|||||||
h?: 1 | 2 | 3 | 4 | 5 | 6;
|
h?: 1 | 2 | 3 | 4 | 5 | 6;
|
||||||
id: string;
|
id: string;
|
||||||
children: Snippet;
|
children: Snippet;
|
||||||
|
ref?: string;
|
||||||
top?: string;
|
top?: string;
|
||||||
toc?: boolean;
|
toc?: boolean;
|
||||||
class?: ClassValue | null;
|
class?: ClassValue | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
let { h = 1, id, children, top = '#top', toc = true, class: className }: Props = $props();
|
let { h = 1, id, children, ref, top = '#top', toc = true, class: className }: Props = $props();
|
||||||
|
|
||||||
const tag = $derived(`h${h}`);
|
const tag = $derived(`h${h}`);
|
||||||
const href = $derived(`#${id}`);
|
const href = $derived(`#${id}`);
|
||||||
@@ -39,9 +40,12 @@
|
|||||||
<svelte:element this={tag} {id} class={['relative w-full', className]}>
|
<svelte:element this={tag} {id} class={['relative w-full', className]}>
|
||||||
<!-- eslint-disable svelte/no-navigation-without-resolve -->
|
<!-- eslint-disable svelte/no-navigation-without-resolve -->
|
||||||
<a {href}><span class="hidden md:inline">{sign}</span> {@render children()}</a>
|
<a {href}><span class="hidden md:inline">{sign}</span> {@render children()}</a>
|
||||||
{#if h >= 2}
|
<div class="absolute right-0 bottom-0 inline-block text-end align-bottom text-sm whitespace-nowrap">
|
||||||
<a href={top} class="absolute right-0 bottom-0 text-end align-bottom text-sm whitespace-nowrap transition-all hover:bottom-px"
|
{#if ref != null}
|
||||||
>Top ▲</a
|
<a href={ref} target="_blank" rel="noopener noreferrer">Ref ↗</a>
|
||||||
>
|
{/if}
|
||||||
{/if}
|
{#if h >= 2}
|
||||||
|
<a href={top} class="ml-4">Top ▲</a>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
</svelte:element>
|
</svelte:element>
|
||||||
|
|||||||
@@ -215,6 +215,16 @@
|
|||||||
{/if}
|
{/if}
|
||||||
{/snippet}
|
{/snippet}
|
||||||
|
|
||||||
|
{#snippet docref(h: string)}
|
||||||
|
<p class="ml-auto text-right text-sm italic">
|
||||||
|
<a
|
||||||
|
href={`https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=${h}`}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer">ref ↗</a
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
{/snippet}
|
||||||
|
|
||||||
<Article>
|
<Article>
|
||||||
{#snippet head()}
|
{#snippet head()}
|
||||||
<Sec h={1} id="top" class="text-center">Race Mechanics Charts</Sec>
|
<Sec h={1} id="top" class="text-center">Race Mechanics Charts</Sec>
|
||||||
@@ -239,23 +249,43 @@
|
|||||||
|
|
||||||
<Sec h={2} id="speed">Speed</Sec>
|
<Sec h={2} id="speed">Speed</Sec>
|
||||||
|
|
||||||
<Sec h={3} id="spurt-speed">Spurt Speed</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="spurt-speed"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.mpfjmgpzqalr"
|
||||||
|
>Spurt Speed</Sec
|
||||||
|
>
|
||||||
<p>Target speed during the Uma's last spurt. See also <a href="#spurt-speed-guts">the effect of Guts</a>.</p>
|
<p>Target speed during the Uma's last spurt. See also <a href="#spurt-speed-guts">the effect of Guts</a>.</p>
|
||||||
{@render statChart(race.Stat.Speed, spurtSpeed, 'Spurt Speed (m/s)', [20, 26.5], { len: true, style: true, dist: true })}
|
{@render statChart(race.Stat.Speed, spurtSpeed, 'Spurt Speed (m/s)', [20, 26.5], { len: true, style: true, dist: true })}
|
||||||
|
|
||||||
<Sec h={3} id="late-race-speed">Late Race Speed</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="late-race-speed"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.43unjgrhmm7e"
|
||||||
|
>Late Race Speed</Sec
|
||||||
|
>
|
||||||
<p>Base target speed during late race when the Uma is not spurting (but not dead yet).</p>
|
<p>Base target speed during late race when the Uma is not spurting (but not dead yet).</p>
|
||||||
{@render statChart(race.Stat.Speed, nonSpurtSpeed, 'Base Target Speed (m/s)', [18, 23], { len: true, style: true, dist: true })}
|
{@render statChart(race.Stat.Speed, nonSpurtSpeed, 'Base Target Speed (m/s)', [18, 23], { len: true, style: true, dist: true })}
|
||||||
|
|
||||||
<Sec h={2} id="stamina">Stamina</Sec>
|
<Sec h={2} id="stamina">Stamina</Sec>
|
||||||
|
|
||||||
<Sec h={3} id="hp">HP</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="hp"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.fnd75v9k5dx3"
|
||||||
|
>HP</Sec
|
||||||
|
>
|
||||||
<p>Max HP, i.e. starting HP.</p>
|
<p>Max HP, i.e. starting HP.</p>
|
||||||
{@render statChart(race.Stat.Stamina, hp, 'HP', [1000, 5000], { len: true })}
|
{@render statChart(race.Stat.Stamina, hp, 'HP', [1000, 5000], { len: true })}
|
||||||
|
|
||||||
<Sec h={2} id="power">Power</Sec>
|
<Sec h={2} id="power">Power</Sec>
|
||||||
|
|
||||||
<Sec h={3} id="move-lane-mod">Move Lane Modifier</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="move-lane-mod"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.s5glz57t0wzd"
|
||||||
|
>Move Lane Modifier</Sec
|
||||||
|
>
|
||||||
<p>
|
<p>
|
||||||
Target speed bonus when changing lanes while under the effect of a lane change speed skill. See <a
|
Target speed bonus when changing lanes while under the effect of a lane change speed skill. See <a
|
||||||
href={resolve('/doc/frbm#lane-combo')}>lane combo</a
|
href={resolve('/doc/frbm#lane-combo')}>lane combo</a
|
||||||
@@ -263,15 +293,30 @@
|
|||||||
</p>
|
</p>
|
||||||
{@render statChart(race.Stat.Power, moveLane, 'Target Speed Modifier (m/s)', [0.2, 0.6])}
|
{@render statChart(race.Stat.Power, moveLane, 'Target Speed Modifier (m/s)', [0.2, 0.6])}
|
||||||
|
|
||||||
<Sec h={3} id="uphill">Uphill Target Speed Loss</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="uphill"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.wdj69udyo340"
|
||||||
|
>Uphill Target Speed Loss</Sec
|
||||||
|
>
|
||||||
<p>Target speed modifier while running uphill.</p>
|
<p>Target speed modifier while running uphill.</p>
|
||||||
{@render statChart(race.Stat.Power, uphill, 'Target Speed Modifier (m/s)', [-2, 0])}
|
{@render statChart(race.Stat.Power, uphill, 'Target Speed Modifier (m/s)', [-2, 0])}
|
||||||
|
|
||||||
<Sec h={3} id="acceleration">Acceleration</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="acceleration"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.t9fv1oq5lsu9"
|
||||||
|
>Acceleration</Sec
|
||||||
|
>
|
||||||
<p>Acceleration.</p>
|
<p>Acceleration.</p>
|
||||||
{@render statChart(race.Stat.Power, accel, 'Acceleration (m/s²)', [0.1, 0.55], { style: true })}
|
{@render statChart(race.Stat.Power, accel, 'Acceleration (m/s²)', [0.1, 0.55], { style: true })}
|
||||||
|
|
||||||
<Sec h={3} id="lane-change-target-speed">Lane Change Target Speed</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="lane-change-target-speed"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.8brkec5lv1fh"
|
||||||
|
>Lane Change Target Speed</Sec
|
||||||
|
>
|
||||||
<p>Horizontal (rather than forward) target speed of changing lanes.</p>
|
<p>Horizontal (rather than forward) target speed of changing lanes.</p>
|
||||||
<div class="mb-4 h-60 w-full md:h-96">
|
<div class="mb-4 h-60 w-full md:h-96">
|
||||||
<StatChart
|
<StatChart
|
||||||
@@ -283,8 +328,16 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Sec h={3} id="conserve-power">Conserve Power Acceleration</Sec>
|
<Sec
|
||||||
<p>Bonus acceleration at spurt start from the Conserve Power mechanic.</p>
|
h={3}
|
||||||
|
id="conserve-power"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.9edgwx6l733b"
|
||||||
|
>Fully Charged Acceleration</Sec
|
||||||
|
>
|
||||||
|
<p>
|
||||||
|
Bonus acceleration at spurt start from the Charge Up/Fully Charged mechanic. Scales with base power plus passive skills, so
|
||||||
|
modifiers for ground conditions and career mode do not apply.
|
||||||
|
</p>
|
||||||
<p>
|
<p>
|
||||||
This mechanic does not appear to be well understood, in particular how long the acceleration bonus lasts and how the rushed
|
This mechanic does not appear to be well understood, in particular how long the acceleration bonus lasts and how the rushed
|
||||||
and spot struggle multipliers apply.
|
and spot struggle multipliers apply.
|
||||||
@@ -293,26 +346,51 @@
|
|||||||
|
|
||||||
<Sec h={2} id="guts">Guts</Sec>
|
<Sec h={2} id="guts">Guts</Sec>
|
||||||
|
|
||||||
<Sec h={3} id="spurt-speed-guts">Spurt Speed</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="spurt-speed-guts"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.mpfjmgpzqalr"
|
||||||
|
>Spurt Speed</Sec
|
||||||
|
>
|
||||||
<p>Target speed during the Uma's last spurt. See also <a href="#spurt-speed">the effect of Speed</a>.</p>
|
<p>Target speed during the Uma's last spurt. See also <a href="#spurt-speed">the effect of Speed</a>.</p>
|
||||||
{@render statChart(race.Stat.Guts, gutsSpurt, 'Spurt Speed (m/s)', [20, 26.5], { len: true, style: true, dist: true })}
|
{@render statChart(race.Stat.Guts, gutsSpurt, 'Spurt Speed (m/s)', [20, 26.5], { len: true, style: true, dist: true })}
|
||||||
|
|
||||||
<Sec h={3} id="min-speed">Minimum Speed</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="min-speed"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.nn1kp5g8fdhu"
|
||||||
|
>Minimum Speed</Sec
|
||||||
|
>
|
||||||
<p>Forced minimum speed, as well as target speed when out of HP.</p>
|
<p>Forced minimum speed, as well as target speed when out of HP.</p>
|
||||||
{@render statChart(race.Stat.Guts, minSpeed, 'Target Speed (m/s)', [15.8, 18.5], { len: true })}
|
{@render statChart(race.Stat.Guts, minSpeed, 'Target Speed (m/s)', [15.8, 18.5], { len: true })}
|
||||||
|
|
||||||
<Sec h={3} id="hp-rate-mod">Late Race HP Consumption Rate Modifier</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="hp-rate-mod"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.o0be6rj0myb1"
|
||||||
|
>Late Race HP Consumption Rate Modifier</Sec
|
||||||
|
>
|
||||||
<p>Multiplier on HP consumption rate during late race and last spurt phase.</p>
|
<p>Multiplier on HP consumption rate during late race and last spurt phase.</p>
|
||||||
{@render statChart(race.Stat.Guts, gutsHPRate, 'HP Consumption Multiplier', [1.2, 1.6])}
|
{@render statChart(race.Stat.Guts, gutsHPRate, 'HP Consumption Multiplier', [1.2, 1.6])}
|
||||||
|
|
||||||
<Sec h={3} id="spot-struggle">Spot Struggle</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="spot-struggle"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.5l523bk8k3vz"
|
||||||
|
>Spot Struggle</Sec
|
||||||
|
>
|
||||||
<p>Speed boost and duration of spot struggle.</p>
|
<p>Speed boost and duration of spot struggle.</p>
|
||||||
<div class="mb-4 grid h-96 w-full md:grid-cols-2">
|
<div class="mb-4 grid h-96 w-full md:grid-cols-2">
|
||||||
<StatChart stat={race.Stat.Guts} y={ssBoost} yLabel="Speed Bonus (m/s)" range={[0, 0.4]} />
|
<StatChart stat={race.Stat.Guts} y={ssBoost} yLabel="Speed Bonus (m/s)" range={[0, 0.4]} />
|
||||||
<StatChart stat={race.Stat.Guts} y={ssDur} yLabel="Duration (s)" range={[0, 14]} />
|
<StatChart stat={race.Stat.Guts} y={ssDur} yLabel="Duration (s)" range={[0, 14]} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Sec h={3} id="dueling">Dueling</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="dueling"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.98rgrb7ww1td"
|
||||||
|
>Dueling</Sec
|
||||||
|
>
|
||||||
<p>Speed boost and acceleration boost of dueling.</p>
|
<p>Speed boost and acceleration boost of dueling.</p>
|
||||||
<div class="mb-4 grid h-96 w-full md:grid-cols-2">
|
<div class="mb-4 grid h-96 w-full md:grid-cols-2">
|
||||||
<StatChart stat={race.Stat.Guts} y={duelSpeed} yLabel="Speed Bonus (m/s)" range={[0, 0.8]} />
|
<StatChart stat={race.Stat.Guts} y={duelSpeed} yLabel="Speed Bonus (m/s)" range={[0, 0.8]} />
|
||||||
@@ -321,7 +399,12 @@
|
|||||||
|
|
||||||
<Sec h={2} id="wit">Wit</Sec>
|
<Sec h={2} id="wit">Wit</Sec>
|
||||||
|
|
||||||
<Sec h={3} id="section-speed">Section Speed</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="section-speed"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.xdha40q2176g"
|
||||||
|
>Section Speed</Sec
|
||||||
|
>
|
||||||
<p>Random variance in target speed per race section.</p>
|
<p>Random variance in target speed per race section.</p>
|
||||||
<div class="mb-24 h-60 w-full md:mb-20 md:h-96">
|
<div class="mb-24 h-60 w-full md:mb-20 md:h-96">
|
||||||
<StatChart
|
<StatChart
|
||||||
@@ -353,29 +436,54 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Sec h={3} id="downhill">Downhill Accel Mode Chance</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="downhill"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.wdj69udyo340"
|
||||||
|
>Downhill Accel Mode Chance</Sec
|
||||||
|
>
|
||||||
<p>Chance each second to enter downhill accel mode when eligible.</p>
|
<p>Chance each second to enter downhill accel mode when eligible.</p>
|
||||||
{@render statChart(race.Stat.Wit, downhill, 'Entry Chance (% each second)', [0, 75])}
|
{@render statChart(race.Stat.Wit, downhill, 'Entry Chance (% each second)', [0, 75])}
|
||||||
|
|
||||||
<Sec h={3} id="spurt-accept">Reduced Spurt Accept Chance</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="spurt-accept"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.mpfjmgpzqalr"
|
||||||
|
>Reduced Spurt Accept Chance</Sec
|
||||||
|
>
|
||||||
<p>Chance to accept each checked spurt delay and speed when not full spurting.</p>
|
<p>Chance to accept each checked spurt delay and speed when not full spurting.</p>
|
||||||
{@render statChart(race.Stat.Wit, reducedSpurt, 'Accept Chance (% each candidate)', [0, 100])}
|
{@render statChart(race.Stat.Wit, reducedSpurt, 'Accept Chance (% each candidate)', [0, 100])}
|
||||||
|
|
||||||
<Sec h={3} id="skill">Skill Activation Chance</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="skill"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.23v0k7wyzcmb"
|
||||||
|
>Skill Activation Chance</Sec
|
||||||
|
>
|
||||||
<p>
|
<p>
|
||||||
Chance that each skill that has a wit check will be eligible to activate. This uses base wit, so style aptitude and passive
|
Chance that each skill that has a wit check will be eligible to activate. This uses base wit, so style aptitude and passive
|
||||||
wit skills do not affect the chance, although mood does.
|
wit skills do not affect the chance, although mood does.
|
||||||
</p>
|
</p>
|
||||||
{@render statChart(race.Stat.Wit, skillChance, 'Skill Activation Chance (%)', [0, 100])}
|
{@render statChart(race.Stat.Wit, skillChance, 'Skill Activation Chance (%)', [0, 100])}
|
||||||
|
|
||||||
<Sec h={3} id="poskeep">Position Keep Mode Chance</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="poskeep"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.tulele26d1pm"
|
||||||
|
>Position Keep Mode Chance</Sec
|
||||||
|
>
|
||||||
<p>
|
<p>
|
||||||
Chance for front runners to enter speed-up or overtake mode, or for non-front runners to enter pace-up mode (but no effect on
|
Chance for front runners to enter speed-up or overtake mode, or for non-front runners to enter pace-up mode (but no effect on
|
||||||
pace-down mode), each 2 seconds when eligible.
|
pace-down mode), each 2 seconds when eligible.
|
||||||
</p>
|
</p>
|
||||||
{@render statChart(race.Stat.Wit, poskeep, 'Mode Entry Chance (%)', [0, 50])}
|
{@render statChart(race.Stat.Wit, poskeep, 'Mode Entry Chance (%)', [0, 50])}
|
||||||
|
|
||||||
<Sec h={3} id="rushed">Rushed Chance</Sec>
|
<Sec
|
||||||
|
h={3}
|
||||||
|
id="rushed"
|
||||||
|
ref="https://docs.google.com/document/d/15VzW9W2tXBBTibBRbZ8IVpW6HaMX8H0RP03kq6Az7Xg/edit?tab=t.0#heading=h.awbjufvej6ud"
|
||||||
|
>Rushed Chance</Sec
|
||||||
|
>
|
||||||
<p>Chance for runners to become rushed at some point during the race. Rushed chance is bracketed to integer percentages.</p>
|
<p>Chance for runners to become rushed at some point during the race. Rushed chance is bracketed to integer percentages.</p>
|
||||||
{@render statChart(race.Stat.Wit, rushed, 'Rushed Chance (%)', [0, 30])}
|
{@render statChart(race.Stat.Wit, rushed, 'Rushed Chance (%)', [0, 30])}
|
||||||
</Article>
|
</Article>
|
||||||
|
|||||||
Reference in New Issue
Block a user