aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/APITypes.d.ts17
-rw-r--r--src/lib/minecraft/inventory.ts4
-rw-r--r--src/lib/sections/AccessoryBagUpgrades.svelte100
-rw-r--r--src/lib/sections/Inventories.svelte27
4 files changed, 137 insertions, 11 deletions
diff --git a/src/lib/APITypes.d.ts b/src/lib/APITypes.d.ts
index ff84d46..6402721 100644
--- a/src/lib/APITypes.d.ts
+++ b/src/lib/APITypes.d.ts
@@ -26,6 +26,7 @@ export interface CleanMemberProfilePlayer extends CleanPlayer {
harp: HarpData
coopInvitation: CoopInvitation | null
farmingContests: FarmingContests
+ accessoryBagUpgrades: AccessoryBagUpgrades
left: boolean
}
@@ -90,7 +91,7 @@ export declare const INVENTORIES: {
armor: string
inventory: string
ender_chest: string
- talisman_bag: string
+ accessory_bag: string
potion_bag: string
fishing_bag: string
quiver: string
@@ -419,3 +420,17 @@ export interface Skills {
*/
apiEnabled: boolean
}
+
+
+export interface AccessoryBagUpgrades {
+ tuningTemplates: Record<string, number>[]
+ upgrades: {
+ purchased: number
+ coinsSpent: number
+ extraSlots: number
+ }
+ powers: {
+ selected: string | null
+ list: string[]
+ }
+}
diff --git a/src/lib/minecraft/inventory.ts b/src/lib/minecraft/inventory.ts
index 1d950b8..1d2a91e 100644
--- a/src/lib/minecraft/inventory.ts
+++ b/src/lib/minecraft/inventory.ts
@@ -25,7 +25,7 @@ const INVENTORIES = {
armor: 'inv_armor',
inventory: 'inv_contents',
ender_chest: 'ender_chest_contents',
- talisman_bag: 'talisman_bag',
+ accessory_bag: 'talisman_bag',
potion_bag: 'potion_bag',
fishing_bag: 'fishing_bag',
quiver: 'quiver',
@@ -44,7 +44,7 @@ export const inventoryIconMap: Record<string, string | Item> = {
vanillaId: 'ender_chest',
display: { name: '\\u00a7aEnder Chest' },
},
- talisman_bag: {
+ accessory_bag: {
vanillaId: 'skull:3',
display: { name: 'Accessory Bag' },
headTexture: '961a918c0c49ba8d053e522cb91abc74689367b4d8aa06bfc1ba9154730985ff',
diff --git a/src/lib/sections/AccessoryBagUpgrades.svelte b/src/lib/sections/AccessoryBagUpgrades.svelte
new file mode 100644
index 0000000..74530d1
--- /dev/null
+++ b/src/lib/sections/AccessoryBagUpgrades.svelte
@@ -0,0 +1,100 @@
+<script lang="ts">
+ import type { CleanMemberProfile } from '$lib/APITypes'
+ import Emoji from '$lib/Emoji.svelte'
+ import ListItemWithIcon from '$lib/ListItemWithIcon.svelte'
+ import { cleanId, skyblockTime } from '$lib/utils'
+
+ export let data: CleanMemberProfile
+
+ $: bagData = data.member.accessoryBagUpgrades
+</script>
+
+<span class="accessory-bag-upgrades">
+ <h3>Upgrades</h3>
+ <div class="accessory-bag-info-text">
+ <p>Purchased: <b>{bagData.upgrades.purchased}</b></p>
+ <p>Coins spent: <b>{bagData.upgrades.coinsSpent.toLocaleString()}</b></p>
+ <p>Extra slots: <b>{bagData.upgrades.extraSlots}</b></p>
+ </div>
+
+ <h3>Powers</h3>
+ {#if bagData.powers.selected}
+ <p class="accessory-bag-info-text">
+ Selected: <b>{cleanId(bagData.powers.selected)}</b>
+ </p>
+ {/if}
+ <ul>
+ {#each bagData.powers.list as power}
+ <li>
+ {#if bagData.powers.selected === power}
+ <b>{cleanId(power)}</b>
+ {:else}
+ {cleanId(power)}
+ {/if}
+ </li>
+ {/each}
+ </ul>
+
+ <div class="tuning-templates">
+ {#each bagData.tuningTemplates as template, template_index}
+ <div class="tuning-template">
+ <h3>Template #{template_index + 1}</h3>
+ <div class="accessory-bag-info-text">
+ {#each Object.entries(template) as [statName, statValue]}
+ <p>{cleanId(statName)}: <b>{statValue}</b></p>
+ {/each}
+ </div>
+ </div>
+ {/each}
+ </div>
+</span>
+
+<style>
+ p,
+ ul {
+ margin: 0;
+ }
+ ul {
+ padding-left: 1.5em;
+ }
+ h3 {
+ margin: 0.5em 0 0 0;
+ }
+
+ .accessory-bag-info-text {
+ color: var(--theme-darker-text);
+ }
+ .accessory-bag-info-text b {
+ color: var(--theme-main-text);
+ }
+
+ .tuning-templates {
+ display: flex;
+ flex-wrap: wrap;
+ max-width: 40rem;
+ column-gap: 0.5rem;
+ row-gap: 0.5rem;
+ margin-top: 1rem;
+ }
+ .tuning-template {
+ border: 1px solid rgba(255, 255, 255, 0.1);
+ background: rgba(0, 0, 0, 0.1);
+ padding: 0.75em;
+ border-radius: 1em;
+ }
+ .tuning-template h3 {
+ margin: 0;
+ }
+
+ .accessory-bag-upgrades {
+ /* width: 5rem; */
+ }
+ @media only screen and (min-width: 1160px) {
+ .accessory-bag-upgrades {
+ display: inline-grid;
+ position: relative;
+ top: -1.5em;
+ left: 0.5em;
+ }
+ }
+</style>
diff --git a/src/lib/sections/Inventories.svelte b/src/lib/sections/Inventories.svelte
index 07d5504..1dd7d28 100644
--- a/src/lib/sections/Inventories.svelte
+++ b/src/lib/sections/Inventories.svelte
@@ -3,8 +3,10 @@
import Inventory from '$lib/minecraft/Inventory.svelte'
import type { MatcherFile } from 'skyblock-assets'
import { cleanId } from '$lib/utils'
+ import AccessoryBagUpgrades from './AccessoryBagUpgrades.svelte'
+ import type { CleanMemberProfile } from '$lib/APITypes'
- export let data
+ export let data: CleanMemberProfile
export let pack: MatcherFile
let displayingInventories: string[] = []
@@ -35,13 +37,18 @@
{/each}
</div>
{/if}
-{#each displayingInventories as inventoryName}
- {#if inventoryName === selectedInventoryName}
- <div id={inventoryName} class="inventory-content">
- <Inventory items={data.member.inventories[inventoryName]} {pack} name={inventoryName} />
- </div>
- {/if}
-{/each}
+{#if data.member.inventories}
+ {#each displayingInventories as inventoryName}
+ {#if inventoryName === selectedInventoryName}
+ <span id={inventoryName} class="inventory-content">
+ <Inventory items={data.member.inventories[inventoryName]} {pack} name={inventoryName} />
+ </span>
+ {#if inventoryName == 'accessory_bag'}
+ <AccessoryBagUpgrades {data} />
+ {/if}
+ {/if}
+ {/each}
+{/if}
<style>
#inventory-tabs {
@@ -80,6 +87,10 @@
background-color: rgba(40, 40, 40, 0.9);
}
+ .inventory-content {
+ display: inline-grid;
+ }
+
@media only screen and (max-width: 480px) {
.inventory-content :global(.item) {
/* there's no good way to override the existing 32px size without !important :( */