Character
-
+ Level v <= build.maxLevel), build.level])).sort((a, b) => a - b)} onChange={(v) => update("level", v)} /> Ascension cap onChange({ ...build, maxLevel: v, level: Math.min(build.level, v) })} /> Constellation update("constellation", v)} /> Talents NA / Skill / Burst {build.talents.map((value, index) => { const next = [...build.talents] as Build["talents"]; next[index] = Number(event.target.value); update("talents", next); }} aria-label={["Normal attack", "Skill", "Burst"][index]} />)}
- Weapon onChange({ ...build, weaponId: item.id, weaponKey: item.key, weaponName: item.name })} placeholder="Choose weapon" /> Level v <= build.weaponMaxLevel)} onChange={(v) => update("weaponLevel", v)} /> Ascension cap onChange({ ...build, weaponMaxLevel: v, weaponLevel: Math.min(build.weaponLevel, v) })} /> Refinement update("refinement", v)} />
+ Weapon onChange({ ...build, weaponId: item.id, weaponKey: item.key, weaponName: item.name, importedParams: build.importedParams ? { ...build.importedParams, weapon: undefined } : undefined })} placeholder="Choose weapon" /> Level v <= build.weaponMaxLevel), build.weaponLevel])).sort((a, b) => a - b)} onChange={(v) => update("weaponLevel", v)} /> Ascension cap onChange({ ...build, weaponMaxLevel: v, weaponLevel: Math.min(build.weaponLevel, v) })} /> Refinement update("refinement", v)} />
- Artifact sets and main stats Set layout update("artifactMode", v as Build["artifactMode"])}>4-piece set 2-piece + 2-piece First set onChange({ ...build, artifactOneId: item.id, artifactOneKey: item.key, artifactOneName: item.name })} placeholder="Choose artifact" /> {build.artifactMode === "2+2" ? Second set item.id !== build.artifactOneId)} value={build.artifactTwoId} onChange={(item) => onChange({ ...build, artifactTwoId: item.id, artifactTwoKey: item.key, artifactTwoName: item.name })} placeholder="Choose artifact" /> : null}Sands update("sands", v as Build["sands"])} /> Goblet update("goblet", v as Build["goblet"])} /> Circlet update("circlet", v as Build["circlet"])} />
+ {build.importedSets ? : Artifact sets and main stats Set layout update("artifactMode", v as Build["artifactMode"])}>4-piece set 2-piece + 2-piece First set onChange({ ...build, artifactOneId: item.id, artifactOneKey: item.key, artifactOneName: item.name })} placeholder="Choose artifact" /> {build.artifactMode === "2+2" ? Second set item.id !== build.artifactOneId)} value={build.artifactTwoId} onChange={(item) => onChange({ ...build, artifactTwoId: item.id, artifactTwoKey: item.key, artifactTwoName: item.name })} placeholder="Choose artifact" /> : null}{!build.importedStats && <>Sands update("sands", v as Build["sands"])} /> Goblet update("goblet", v as Build["goblet"])} /> Circlet update("circlet", v as Build["circlet"])} /> >}
}
+ {build.importedSets && !build.importedStats && Artifact main stats Sands update("sands", v as Build["sands"])} /> Goblet update("goblet", v as Build["goblet"])} /> Circlet update("circlet", v as Build["circlet"])} /> }
- Average substat rolls Enter roll counts. Values use gcsim's KQM average-roll scalars. {rollKeys.map((key) => {key.toUpperCase()} × {key.includes("%") || ["er","cr","cd"].includes(key) ? `${(SUBSTAT_SCALARS[key] * 100).toFixed(2)}%` : SUBSTAT_SCALARS[key]} update("rolls", { ...build.rolls, [key]: Math.max(0, Math.min(99, Number(event.target.value))) })} />{key.includes("%") || ["er","cr","cd"].includes(key) ? `${(calculated[key] * 100).toFixed(2)}%` : calculated[key].toFixed(2)} )}
+ {build.importedStats ? : Average substat rolls Enter roll counts. Values use gcsim's KQM average-roll scalars. {rollKeys.map((key) => {key.toUpperCase()} × {key.includes("%") || ["er","cr","cd"].includes(key) ? `${(SUBSTAT_SCALARS[key] * 100).toFixed(2)}%` : SUBSTAT_SCALARS[key]} update("rolls", { ...build.rolls, [key]: Math.max(0, Math.min(99, Number(event.target.value))) })} />{key.includes("%") || ["er","cr","cd"].includes(key) ? `${(calculated[key] * 100).toFixed(2)}%` : calculated[key].toFixed(2)} )}
}
+ {build.importedParams && Imported parameters: {Object.entries(build.importedParams).filter(([, value]) => value).map(([key, value]) => `${key} ${value}`).join(" · ")} }