weapons: move extra/limit/ax to taxonomy, fix uncap stars

This commit is contained in:
Justin Edmund 2025-12-01 04:10:41 -08:00
parent c2b2de9e96
commit dea8a3bc24
2 changed files with 32 additions and 31 deletions

View file

@ -7,6 +7,8 @@
import { getProficiencyLabel, getProficiencyOptions } from '$lib/utils/proficiency'
import { getWeaponSeriesOptions, getWeaponSeriesSlug } from '$lib/utils/weaponSeries'
type ElementName = 'wind' | 'fire' | 'water' | 'earth' | 'dark' | 'light'
interface Props {
weapon: any
editMode?: boolean
@ -18,6 +20,13 @@
const elementOptions = getElementOptions()
const proficiencyOptions = getProficiencyOptions()
const seriesOptions = [{ value: 0, label: 'None' }, ...getWeaponSeriesOptions()]
// Get element name for checkbox theming
const elementName = $derived.by((): ElementName | undefined => {
const el = editMode ? editData.element : weapon?.element
const label = getElementLabel(el)
return label !== '—' && label !== 'Null' ? (label.toLowerCase() as ElementName) : undefined
})
</script>
<DetailsContainer title="Details">
@ -44,12 +53,28 @@
options={seriesOptions}
/>
<DetailItem
label="New Series"
sublabel="Secondary series classification"
bind:value={editData.newSeries}
label="Extra"
sublabel="Can be placed in Additional Weapons"
bind:value={editData.extra}
editable={true}
type="select"
options={seriesOptions}
type="checkbox"
element={elementName}
/>
<DetailItem
label="Limit"
sublabel="Only one copy can be placed in a team"
bind:value={editData.limit}
editable={true}
type="checkbox"
element={elementName}
/>
<DetailItem
label="AX Skills"
sublabel="Can have AX Skills"
bind:value={editData.ax}
editable={true}
type="checkbox"
element={elementName}
/>
{:else}
<DetailItem label="Element" value={getElementLabel(weapon.element)} />

View file

@ -4,7 +4,6 @@
import DetailsContainer from '$lib/components/ui/DetailsContainer.svelte'
import DetailItem from '$lib/components/ui/DetailItem.svelte'
import UncapIndicator from '$lib/components/uncap/UncapIndicator.svelte'
import { getMaxUncapLevel } from '$lib/utils/uncap'
import { getElementLabel } from '$lib/utils/element'
type ElementName = 'wind' | 'fire' | 'water' | 'earth' | 'dark' | 'light'
@ -25,7 +24,8 @@
const flb = $derived(uncap.flb ?? false)
const ulb = $derived(uncap.ulb ?? false)
const transcendence = $derived(uncap.transcendence ?? false)
const uncapLevel = $derived(getMaxUncapLevel({ uncap }))
// Weapons: 3 base stars, +1 for FLB (4), +1 for ULB (5), +1 for transcendence (6)
const uncapLevel = $derived(transcendence ? 6 : ulb ? 5 : flb ? 4 : 3)
const transcendenceStage = $derived(transcendence ? 5 : 0)
// Get element name for checkbox theming
@ -103,29 +103,5 @@
element={elementName}
onchange={handleTranscendenceChange}
/>
<DetailItem
label="Extra"
sublabel="Has additional slot (Opus, etc.)"
bind:value={editData.extra}
editable={true}
type="checkbox"
element={elementName}
/>
<DetailItem
label="Limit"
sublabel="Limited availability"
bind:value={editData.limit}
editable={true}
type="checkbox"
element={elementName}
/>
<DetailItem
label="AX Skills"
sublabel="Can have AX skill slots"
bind:value={editData.ax}
editable={true}
type="checkbox"
element={elementName}
/>
{/if}
</DetailsContainer>