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 { getProficiencyLabel, getProficiencyOptions } from '$lib/utils/proficiency'
|
||||||
import { getWeaponSeriesOptions, getWeaponSeriesSlug } from '$lib/utils/weaponSeries'
|
import { getWeaponSeriesOptions, getWeaponSeriesSlug } from '$lib/utils/weaponSeries'
|
||||||
|
|
||||||
|
type ElementName = 'wind' | 'fire' | 'water' | 'earth' | 'dark' | 'light'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
weapon: any
|
weapon: any
|
||||||
editMode?: boolean
|
editMode?: boolean
|
||||||
|
|
@ -18,6 +20,13 @@
|
||||||
const elementOptions = getElementOptions()
|
const elementOptions = getElementOptions()
|
||||||
const proficiencyOptions = getProficiencyOptions()
|
const proficiencyOptions = getProficiencyOptions()
|
||||||
const seriesOptions = [{ value: 0, label: 'None' }, ...getWeaponSeriesOptions()]
|
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>
|
</script>
|
||||||
|
|
||||||
<DetailsContainer title="Details">
|
<DetailsContainer title="Details">
|
||||||
|
|
@ -44,12 +53,28 @@
|
||||||
options={seriesOptions}
|
options={seriesOptions}
|
||||||
/>
|
/>
|
||||||
<DetailItem
|
<DetailItem
|
||||||
label="New Series"
|
label="Extra"
|
||||||
sublabel="Secondary series classification"
|
sublabel="Can be placed in Additional Weapons"
|
||||||
bind:value={editData.newSeries}
|
bind:value={editData.extra}
|
||||||
editable={true}
|
editable={true}
|
||||||
type="select"
|
type="checkbox"
|
||||||
options={seriesOptions}
|
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}
|
{:else}
|
||||||
<DetailItem label="Element" value={getElementLabel(weapon.element)} />
|
<DetailItem label="Element" value={getElementLabel(weapon.element)} />
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@
|
||||||
import DetailsContainer from '$lib/components/ui/DetailsContainer.svelte'
|
import DetailsContainer from '$lib/components/ui/DetailsContainer.svelte'
|
||||||
import DetailItem from '$lib/components/ui/DetailItem.svelte'
|
import DetailItem from '$lib/components/ui/DetailItem.svelte'
|
||||||
import UncapIndicator from '$lib/components/uncap/UncapIndicator.svelte'
|
import UncapIndicator from '$lib/components/uncap/UncapIndicator.svelte'
|
||||||
import { getMaxUncapLevel } from '$lib/utils/uncap'
|
|
||||||
import { getElementLabel } from '$lib/utils/element'
|
import { getElementLabel } from '$lib/utils/element'
|
||||||
|
|
||||||
type ElementName = 'wind' | 'fire' | 'water' | 'earth' | 'dark' | 'light'
|
type ElementName = 'wind' | 'fire' | 'water' | 'earth' | 'dark' | 'light'
|
||||||
|
|
@ -25,7 +24,8 @@
|
||||||
const flb = $derived(uncap.flb ?? false)
|
const flb = $derived(uncap.flb ?? false)
|
||||||
const ulb = $derived(uncap.ulb ?? false)
|
const ulb = $derived(uncap.ulb ?? false)
|
||||||
const transcendence = $derived(uncap.transcendence ?? 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)
|
const transcendenceStage = $derived(transcendence ? 5 : 0)
|
||||||
|
|
||||||
// Get element name for checkbox theming
|
// Get element name for checkbox theming
|
||||||
|
|
@ -103,29 +103,5 @@
|
||||||
element={elementName}
|
element={elementName}
|
||||||
onchange={handleTranscendenceChange}
|
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}
|
{/if}
|
||||||
</DetailsContainer>
|
</DetailsContainer>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue