weapons: move extra/limit/ax to taxonomy, fix uncap stars
This commit is contained in:
parent
c2b2de9e96
commit
dea8a3bc24
2 changed files with 32 additions and 31 deletions
|
|
@ -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)} />
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in a new issue