Compare commits
4
Commits
04cb6388c3
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
56bd5b460d | ||
|
|
ddaf100069 | ||
|
|
f013aa4765 | ||
|
|
2f676f0a62 |
@@ -6,7 +6,7 @@ when:
|
||||
|
||||
steps:
|
||||
- name: test
|
||||
image: golang:1.26-alpine
|
||||
image: golang:1.27-alpine
|
||||
commands:
|
||||
- go vet ./...
|
||||
- go test ./...
|
||||
|
||||
+1
-2
@@ -323,7 +323,7 @@ type End struct {
|
||||
StoryEventMissions []umadump.Never `json:"story_event_mission_list"`
|
||||
StoryEventCharaBonuses []umadump.Never `json:"story_event_chara_bonus_list"`
|
||||
StartDressInfo []umadump.Never `json:"start_dress_info"`
|
||||
ResumeFactorSelect *umadump.Never `json:"resume_factor_select"`
|
||||
ResumeFactorSelect any `json:"resume_factor_select"` // don't care yet
|
||||
RaceRandomPrograms []umadump.Never `json:"race_random_program_array"`
|
||||
RaceRewardLimitMore []umadump.Never `json:"race_reward_limit_more_list"`
|
||||
SkillFilterSettings []umadump.Never `json:"skill_filter_setting_array"`
|
||||
@@ -344,6 +344,5 @@ type WorkIdleSingleMode struct {
|
||||
ProgressInfo ProgressInfo `json:"progress_info"`
|
||||
ProgressLog IdleSingleModeProgressLog `json:"progress_log_info"`
|
||||
End End `json:"end_info"`
|
||||
OldChara *SingleModeChara `json:"chara_info"`
|
||||
Extra map[string]any `json:"extra_data"`
|
||||
}
|
||||
|
||||
@@ -7,10 +7,6 @@
|
||||
import { resolve } from '$app/paths';
|
||||
import RaceLenSlider from '$lib/RaceLenSlider.svelte';
|
||||
|
||||
function modemean(x: number, bonus: number, p: number): number {
|
||||
return x * (1 - p) + x * bonus * p;
|
||||
}
|
||||
|
||||
let style = $state(race.RunningStyle.FrontRunner);
|
||||
let surfaceApt = $state(race.AptitudeLevel.A);
|
||||
let distanceApt = $state(race.AptitudeLevel.A);
|
||||
@@ -84,39 +80,39 @@
|
||||
];
|
||||
const duelSpeed: ComputedSeries[] = [{ label: 'Dueling Speed Boost', y: (x) => race.duelSpeedMod(x) }];
|
||||
const duelAccel: ComputedSeries[] = [{ label: 'Dueling Acceleration Boost', y: (x) => race.duelAccelMod(x) }];
|
||||
const secSpeed: Array<ComputedAreas | null> = $derived([
|
||||
const secSpeedEarly: Array<ComputedAreas | null> = $derived([
|
||||
{
|
||||
label: 'Early Race',
|
||||
label: styleIsFront ? 'Front S' : 'Style S',
|
||||
y1: (x) => race.sectionSpeed(raceLen, x * 1.1, style, race.Phase.EarlyRace)[0],
|
||||
y2: (x) => race.sectionSpeed(raceLen, x * 1.1, style, race.Phase.EarlyRace)[1],
|
||||
},
|
||||
{
|
||||
label: styleIsFront ? 'Front A' : 'Style A',
|
||||
y1: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[0],
|
||||
y2: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[1],
|
||||
},
|
||||
{
|
||||
label: 'Mid Race',
|
||||
label: styleIsFront ? 'Front A Speed-Up Mode' : 'Style A Pace-Up Mode',
|
||||
y1: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[0] * 1.04,
|
||||
y2: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[1] * 1.04,
|
||||
},
|
||||
]);
|
||||
const secSpeedMid: Array<ComputedAreas | null> = $derived([
|
||||
{
|
||||
label: styleIsFront ? 'Front S' : 'Style S',
|
||||
y1: (x) => race.sectionSpeed(raceLen, x * 1.1, style, race.Phase.MidRace)[0],
|
||||
y2: (x) => race.sectionSpeed(raceLen, x * 1.1, style, race.Phase.MidRace)[1],
|
||||
},
|
||||
{
|
||||
label: styleIsFront ? 'Front A' : 'Style A',
|
||||
y1: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[0],
|
||||
y2: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[1],
|
||||
},
|
||||
styleIsFront
|
||||
? {
|
||||
label: 'Early Race + Mean Speed-Up Mode',
|
||||
y1: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[0], 1.04, race.frontModeEnterChance(x)),
|
||||
y2: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[1], 1.04, race.frontModeEnterChance(x)),
|
||||
}
|
||||
: {
|
||||
label: 'Early Race + Mean Pace-Up Mode',
|
||||
y1: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[0], 1.04, race.paceUpEnterChance(x)),
|
||||
y2: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.EarlyRace)[1], 1.04, race.paceUpEnterChance(x)),
|
||||
},
|
||||
styleIsFront
|
||||
? {
|
||||
label: 'Mid Race + Mean Speed-Up Mode',
|
||||
y1: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[0], 1.04, race.frontModeEnterChance(x)),
|
||||
y2: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[1], 1.04, race.frontModeEnterChance(x)),
|
||||
}
|
||||
: {
|
||||
label: 'Mid Race + Mean Pace-Up Mode',
|
||||
y1: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[0], 1.04, race.paceUpEnterChance(x)),
|
||||
y2: (x) => modemean(race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[1], 1.04, race.paceUpEnterChance(x)),
|
||||
},
|
||||
{
|
||||
label: styleIsFront ? 'Front A Speed-Up Mode' : 'Style A Pace-Up Mode',
|
||||
y1: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[0] * 1.04,
|
||||
y2: (x) => race.sectionSpeed(raceLen, x, style, race.Phase.MidRace)[1] * 1.04,
|
||||
},
|
||||
]);
|
||||
const downhill: ComputedSeries[] = [
|
||||
{ label: 'Style S', y: (x) => race.downhillAccelEnterChance(x * 1.1) * 100 },
|
||||
@@ -396,34 +392,42 @@
|
||||
>Section Speed</Sec
|
||||
>
|
||||
<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-10 grid h-96 w-full md:grid-cols-2">
|
||||
<StatChart
|
||||
class="mx-auto mb-12 h-full w-full max-w-3xl md:mb-10"
|
||||
stat={race.Stat.Wit}
|
||||
yArea={secSpeed}
|
||||
yLabel="Section Speed (m/s)"
|
||||
range={[17, 23]}
|
||||
yArea={secSpeedEarly}
|
||||
yLabel="Early Race Section Speed (m/s)"
|
||||
range={[17, 23.5]}
|
||||
plotOptions={{ color: { legend: true } }}
|
||||
class="h-96 max-h-96"
|
||||
/>
|
||||
<div class="mx-auto flex w-full md:max-w-2xl">
|
||||
<label class="my-auto hidden flex-1 pr-2 text-right text-sm md:inline" for="secSpeedRaceLen">Race Length</label>
|
||||
<input
|
||||
class="my-auto max-w-40 flex-1 md:flex-2"
|
||||
type="range"
|
||||
id="secSpeedRaceLen"
|
||||
min="1000"
|
||||
max="3600"
|
||||
step="100"
|
||||
bind:value={raceLen}
|
||||
/>
|
||||
<span class="my-auto flex-1 pl-2 text-sm">{raceLen}m</span>
|
||||
<label class="my-auto hidden flex-1 pr-2 text-right text-sm md:inline" for="secSpeedStyle">Style</label>
|
||||
<select class="my-auto flex-1 text-sm" id="secSpeedStyle" bind:value={style}>
|
||||
{#each race.RUNNING_STYLES as [name, style] (style)}
|
||||
<option value={style}>{name}</option>
|
||||
{/each}
|
||||
</select>
|
||||
</div>
|
||||
<StatChart
|
||||
stat={race.Stat.Wit}
|
||||
yArea={secSpeedMid}
|
||||
yLabel="Mid Race Section Speed (m/s)"
|
||||
range={[17, 23.5]}
|
||||
plotOptions={{ color: { legend: true } }}
|
||||
class="h-96 max-h-96"
|
||||
/>
|
||||
</div>
|
||||
<div class="mx-auto mb-4 flex w-full md:max-w-2xl">
|
||||
<label class="my-auto hidden flex-1 pr-2 text-right text-sm md:inline" for="secSpeedRaceLen">Race Length</label>
|
||||
<input
|
||||
class="my-auto max-w-40 flex-1 md:flex-2"
|
||||
type="range"
|
||||
id="secSpeedRaceLen"
|
||||
min="1000"
|
||||
max="3600"
|
||||
step="100"
|
||||
bind:value={raceLen}
|
||||
/>
|
||||
<span class="my-auto flex-1 pl-2 text-sm">{raceLen}m</span>
|
||||
<label class="my-auto hidden flex-1 pr-2 text-right text-sm md:inline" for="secSpeedStyle">Style</label>
|
||||
<select class="my-auto flex-1 text-sm" id="secSpeedStyle" bind:value={style}>
|
||||
{#each race.RUNNING_STYLES as [name, style] (style)}
|
||||
<option value={style}>{name}</option>
|
||||
{/each}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<Sec
|
||||
|
||||
Reference in New Issue
Block a user