├── env.d.ts
├── .gitattributes
├── original_Loader.vue
├── src
├── assets
│ ├── maids.png
│ ├── favicon.ico
│ ├── index_bg.jpg
│ ├── nikke-db.png
│ ├── index_bg2.webp
│ └── notice_imgs
│ │ ├── HQ.png
│ │ ├── LQ.png
│ │ ├── fourk.png
│ │ ├── layerEditor1.png
│ │ ├── layerEditor2.png
│ │ ├── layerEditor3.png
│ │ ├── layerEditor4.png
│ │ └── layerEditor5.png
├── utils
│ ├── interfaces
│ │ ├── contributor.ts
│ │ ├── tierlist
│ │ │ ├── character.ts
│ │ │ ├── tier.ts
│ │ │ └── tierlist.ts
│ │ ├── levelingRecord.ts
│ │ ├── outpostBattleRecords.ts
│ │ ├── gallery.ts
│ │ └── live2d.ts
│ ├── json
│ │ ├── Gallery
│ │ │ ├── 777.json
│ │ │ ├── boomsday.json
│ │ │ ├── colorless.json
│ │ │ ├── darkhero.json
│ │ │ ├── liarsend.json
│ │ │ ├── doutsiders.json
│ │ │ ├── newflavor.json
│ │ │ ├── bonds.json
│ │ │ ├── killthelord.json
│ │ │ ├── fullfoolday.json
│ │ │ ├── brandnewyear.json
│ │ │ ├── nyanyaparadise.json
│ │ │ ├── forrest.json
│ │ │ ├── jinxplayer.json
│ │ │ ├── juveniledays.json
│ │ │ ├── blankticket.json
│ │ │ ├── rebornevil.json
│ │ │ ├── outerautomata.json
│ │ │ ├── foolburstday.json
│ │ │ ├── overthehorizon.json
│ │ │ ├── bluewaterisland.json
│ │ │ ├── goninjathief.json
│ │ │ ├── madeinrush.json
│ │ │ ├── miraclesnow.json
│ │ │ ├── recipeforyou.json
│ │ │ ├── side04.json
│ │ │ ├── bbqmaster.json
│ │ │ ├── side01.json
│ │ │ ├── side02.json
│ │ │ ├── neverland.json
│ │ │ ├── story8.json
│ │ │ ├── voltroad.json
│ │ │ ├── evangelion.json
│ │ │ ├── absolute.json
│ │ │ ├── goldencoinrush.json
│ │ │ ├── 4koma_zh.json
│ │ │ ├── bfgcleanup.json
│ │ │ ├── seayouagain.json
│ │ │ ├── story9.json
│ │ │ ├── beautyfullshot.json
│ │ │ ├── story5.json
│ │ │ ├── story2.json
│ │ │ ├── dragondungeonrun.json
│ │ │ ├── story1.json
│ │ │ ├── overzone.json
│ │ │ ├── side03.json
│ │ │ ├── story7.json
│ │ │ ├── memoriesteller.json
│ │ │ ├── coinsinrush.json
│ │ │ ├── secondquest.json
│ │ │ ├── boomtheghost.json
│ │ │ ├── footstepwalkrun.json
│ │ │ ├── icedragonsaga.json
│ │ │ ├── redash.json
│ │ │ ├── snowfalloasis.json
│ │ │ ├── story10.json
│ │ │ ├── lastkingdom.json
│ │ │ ├── story4.json
│ │ │ ├── story3.json
│ │ │ ├── story6.json
│ │ │ ├── unbreakablesphere.json
│ │ │ ├── whitememory.json
│ │ │ ├── albums.json
│ │ │ ├── goddessfall.json
│ │ │ ├── chapters.json
│ │ │ └── oldtales.json
│ │ └── honorifics.json
│ ├── style
│ │ ├── global_variables.less
│ │ └── naive-ui-theme-overrides.json
│ ├── utils.ts
│ ├── animationMappings.ts
│ ├── LayerEditorUtils.ts
│ ├── enum
│ │ └── globalParams.ts
│ └── tierlistUtils.ts
├── components
│ ├── common
│ │ ├── Spine
│ │ │ ├── WrapperPC.vue
│ │ │ ├── Tools
│ │ │ │ ├── BackgroundImagePack.vue
│ │ │ │ ├── ResetCoordinates.vue
│ │ │ │ ├── ChangeQualityMode.vue
│ │ │ │ ├── HideUI.vue
│ │ │ │ ├── Yapping.vue
│ │ │ │ ├── Export.vue
│ │ │ │ ├── PoseSelector.vue
│ │ │ │ ├── Screenshot.vue
│ │ │ │ ├── AttachmentEditorColorSlider.vue
│ │ │ │ ├── AttachmentEditorListing.vue
│ │ │ │ ├── AttachmentEditorListItem.vue
│ │ │ │ ├── ChangeScreenshotSize.vue
│ │ │ │ ├── BackgroundColor.vue
│ │ │ │ └── CustomLoaderItem.vue
│ │ │ ├── CharacterList.vue
│ │ │ ├── ToolList.vue
│ │ │ └── WrapperMobile.vue
│ │ ├── Footer
│ │ │ └── Footer.vue
│ │ ├── Header
│ │ │ ├── routes2Display.ts
│ │ │ ├── HeaderSelector.vue
│ │ │ ├── VisitorCounter.vue
│ │ │ ├── HeaderPC.vue
│ │ │ └── HeaderMobile.vue
│ │ ├── Gallery
│ │ │ ├── ButtonTemplate.vue
│ │ │ └── ArrowTemplate.vue
│ │ ├── Tierlistmaker
│ │ │ ├── CharacterCard.vue
│ │ │ └── ImportFromText.vue
│ │ ├── Credits
│ │ │ ├── Template.vue
│ │ │ └── Table.vue
│ │ └── Tools
│ │ │ ├── Template.vue
│ │ │ └── AlphaConverters.vue
│ └── views
│ │ ├── StoryGenerator.vue
│ │ ├── Tools.vue
│ │ ├── L2D.vue
│ │ ├── notices
│ │ └── HighAndLowQualityAssets.vue
│ │ ├── Chibi.vue
│ │ └── Index.vue
├── main.ts
├── stores
│ ├── loaderStore.ts
│ ├── market.ts
│ ├── messageStore.ts
│ └── globalParamsStore.ts
├── Wrapper.vue
├── router
│ └── index.ts
└── App.vue
├── tsconfig.vitest.json
├── .prettierrc.json
├── tsconfig.app.json
├── tsconfig.json
├── .gitignore
├── vitest.config.ts
├── tsconfig.node.json
├── index.html
├── LICENSE.md
├── vite.config.ts
├── README.md
├── .eslintrc.cjs
└── package.json
/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.js linguist-detectable=false
2 | *.css linguist-detectable=false
--------------------------------------------------------------------------------
/original_Loader.vue:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nikke-db/nikke-db-vue/HEAD/original_Loader.vue
--------------------------------------------------------------------------------
/src/assets/maids.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nikke-db/nikke-db-vue/HEAD/src/assets/maids.png
--------------------------------------------------------------------------------
/src/assets/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nikke-db/nikke-db-vue/HEAD/src/assets/favicon.ico
--------------------------------------------------------------------------------
/src/assets/index_bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nikke-db/nikke-db-vue/HEAD/src/assets/index_bg.jpg
--------------------------------------------------------------------------------
/src/assets/nikke-db.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nikke-db/nikke-db-vue/HEAD/src/assets/nikke-db.png
--------------------------------------------------------------------------------
/src/assets/index_bg2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nikke-db/nikke-db-vue/HEAD/src/assets/index_bg2.webp
--------------------------------------------------------------------------------
/src/assets/notice_imgs/HQ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nikke-db/nikke-db-vue/HEAD/src/assets/notice_imgs/HQ.png
--------------------------------------------------------------------------------
/src/assets/notice_imgs/LQ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nikke-db/nikke-db-vue/HEAD/src/assets/notice_imgs/LQ.png
--------------------------------------------------------------------------------
/src/assets/notice_imgs/fourk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nikke-db/nikke-db-vue/HEAD/src/assets/notice_imgs/fourk.png
--------------------------------------------------------------------------------
/src/assets/notice_imgs/layerEditor1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nikke-db/nikke-db-vue/HEAD/src/assets/notice_imgs/layerEditor1.png
--------------------------------------------------------------------------------
/src/assets/notice_imgs/layerEditor2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nikke-db/nikke-db-vue/HEAD/src/assets/notice_imgs/layerEditor2.png
--------------------------------------------------------------------------------
/src/assets/notice_imgs/layerEditor3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nikke-db/nikke-db-vue/HEAD/src/assets/notice_imgs/layerEditor3.png
--------------------------------------------------------------------------------
/src/assets/notice_imgs/layerEditor4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nikke-db/nikke-db-vue/HEAD/src/assets/notice_imgs/layerEditor4.png
--------------------------------------------------------------------------------
/src/assets/notice_imgs/layerEditor5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Nikke-db/nikke-db-vue/HEAD/src/assets/notice_imgs/layerEditor5.png
--------------------------------------------------------------------------------
/src/utils/interfaces/contributor.ts:
--------------------------------------------------------------------------------
1 | export interface help {
2 | name: string
3 | contribution: string
4 | tier: string | null
5 | }
6 |
--------------------------------------------------------------------------------
/src/utils/interfaces/tierlist/character.ts:
--------------------------------------------------------------------------------
1 | export interface character {
2 | id: string
3 | name: string
4 | subtext: string
5 | }
6 |
--------------------------------------------------------------------------------
/src/utils/interfaces/levelingRecord.ts:
--------------------------------------------------------------------------------
1 | export interface levelingRecordInterface {
2 | level: number
3 | gold: number
4 | character_exp: number
5 | character_exp_2: number
6 | }
7 |
--------------------------------------------------------------------------------
/src/utils/interfaces/outpostBattleRecords.ts:
--------------------------------------------------------------------------------
1 | export interface outpostBattleRecordInterface {
2 | id: number,
3 | credit: number,
4 | character_exp1: number,
5 | user_exp: number,
6 | character_exp2: number
7 | }
--------------------------------------------------------------------------------
/tsconfig.vitest.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.app.json",
3 | "exclude": [],
4 | "compilerOptions": {
5 | "lib": [
6 | "ES2021.String"
7 | ],
8 | "types": ["node", "jsdom"]
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "semi": false,
3 | "tabWidth": 2,
4 | "singleQuote": true,
5 | "trailingComma": "none",
6 | "bracketSpacing": true,
7 | "bracketSameLine": false,
8 | "arrowParens": "always",
9 | "printWidth": 999
10 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/777.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "777/",
3 | "type": "large",
4 | "id": "777",
5 | "title": "777",
6 | "content": [
7 | {
8 | "name": "EventTitle_BunnyX777_01",
9 | "text": "777 1"
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/src/utils/style/global_variables.less:
--------------------------------------------------------------------------------
1 | @main-dark-theme: #212529;
2 | @main-dark-theme-transparent: #212529ea;
3 | @alt-dark-theme: #2f353a;
4 | @alt-dark-theme-transparent: #2f353aea;
5 | @grey-color: rgb(180, 175, 175);
6 | @gold: #ffd700;
7 | @naive-green: #63e2b7;
8 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/boomsday.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "boomsday/",
3 | "type": "large",
4 | "id": "boomsday",
5 | "title": "BOOM's DAY",
6 | "content": [
7 | {
8 | "name": "EventTitle_BoomsDay_01",
9 | "text": "BOOM's DAY 1"
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/colorless.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "colorless/",
3 | "type": "large",
4 | "id": "colorless",
5 | "title": "Colorless",
6 | "content": [
7 | {
8 | "name": "colorless_bg_list_hard",
9 | "text": "Colorless 1"
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/darkhero.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "darkhero/",
3 | "type": "large",
4 | "id": "darkhero",
5 | "title": "D.ARK HERO",
6 | "content": [
7 | {
8 | "name": "EventTitle_Darkhero_01",
9 | "text": "D.ARK HERO 1"
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/liarsend.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "liarsend/",
3 | "type": "large",
4 | "id": "liarsend",
5 | "title": "Liar's End",
6 | "content": [
7 | {
8 | "name": "EventScene_lairsend_01",
9 | "text": "Liar's End"
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/src/utils/interfaces/tierlist/tier.ts:
--------------------------------------------------------------------------------
1 | import type { character } from '@/utils/interfaces/tierlist/character'
2 |
3 | export interface tier {
4 | name: string
5 | color_bg: string
6 | color_name: string
7 | subtext: string
8 | items: character[]
9 | }
10 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/doutsiders.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "doutsiders/",
3 | "type": "large",
4 | "id": "doutsiders",
5 | "title": "D Outsiders",
6 | "content": [
7 | {
8 | "name": "EventScene_Doutsiders",
9 | "text": "D Outsiders"
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/newflavor.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "newflavor/",
3 | "type": "large",
4 | "id": "newflavor",
5 | "title": "New Flavor",
6 | "content": [
7 | {
8 | "name": "newflavor_list_normal_bg",
9 | "text": "New Flavor 1"
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/bonds.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "bonds/",
3 | "type": "large",
4 | "id": "bonds",
5 | "title": "Bond Exclusive Scenes",
6 | "content": [
7 | {
8 | "name": "EventScene_Evacuation",
9 | "text": "Rapunzel Episode 4"
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/killthelord.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "killthelord/",
3 | "type": "large",
4 | "id": "killthelord",
5 | "title": "Kill The Lord",
6 | "content": [
7 | {
8 | "name": "bg_killthelord_nor",
9 | "text": "Kill The Lord 1"
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/fullfoolday.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "fullfoolday/",
3 | "type": "large",
4 | "id": "fullfoolday",
5 | "title": "Full Fool Day",
6 | "content": [
7 | {
8 | "name": "EventScene_FullFoolDay_01",
9 | "text": "Full Fool Day 2023"
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/brandnewyear.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "brandnewyear/",
3 | "type": "large",
4 | "id": "brandnewyear",
5 | "title": "Brand New Year",
6 | "content": [
7 | {
8 | "name": "EventScene_BrandNewYear_01",
9 | "text": "Brand New Year 1"
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/nyanyaparadise.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "nyanyaparadise/",
3 | "type": "large",
4 | "id": "nyanyaparadise",
5 | "title": "Nya Nya Paradise",
6 | "content": [
7 | {
8 | "name": "EventTitle_NyaNyaParadise_01",
9 | "text": "Nya Nya Paradise 1"
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/src/utils/interfaces/gallery.ts:
--------------------------------------------------------------------------------
1 | export interface galleryItemInterface {
2 | name: string,
3 | text: string
4 | }
5 |
6 | export interface galleryInterface {
7 | path: string,
8 | type: string,
9 | title: string,
10 | id: string,
11 | content: galleryItemInterface[],
12 | notice: string | null
13 | }
--------------------------------------------------------------------------------
/src/components/common/Spine/WrapperPC.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@vue/tsconfig/tsconfig.dom.json",
3 | "include": ["env.d.ts", "src/**/*", "src/**/*.vue", "*.vue"],
4 | "exclude": ["src/**/__tests__/*"],
5 | "compilerOptions": {
6 | // "composite": true,
7 | "baseUrl": ".",
8 | "paths": {
9 | "@/*": ["./src/*"]
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/forrest.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "forrest/",
3 | "type": "large",
4 | "id": "forrest",
5 | "title": "For Rest",
6 | "content": [
7 | {
8 | "name": "EventTitle_forrest_01",
9 | "text": "For Rest 1"
10 | },{
11 | "name": "forrest_hard_bg",
12 | "text": "For Rest 2"
13 | }
14 | ]
15 | }
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "references": [
4 | {
5 | "path": "./tsconfig.node.json"
6 | },
7 | {
8 | "path": "./tsconfig.app.json"
9 | },
10 | {
11 | "path": "./tsconfig.vitest.json"
12 | }
13 | ],
14 | "compilerOptions": {
15 | "lib": [
16 | "ES2021.String"
17 | ]
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/utils/interfaces/tierlist/tierlist.ts:
--------------------------------------------------------------------------------
1 | import type { tier } from '@/utils/interfaces/tierlist/tier'
2 |
3 | export interface tierlist {
4 | name: string
5 | author: string
6 | tiers: tier[],
7 | benchTier: tier //bench tier will be for characters not in the tier list yet
8 | print_NikkeDB: boolean
9 | printBenchTier: boolean
10 | }
11 |
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import { createPinia } from 'pinia'
3 | import naive from 'naive-ui'
4 |
5 | import Wrapper from './Wrapper.vue'
6 | import router from './router'
7 |
8 | const pinia = createPinia()
9 |
10 | const app = createApp(Wrapper)
11 |
12 | app.use(pinia)
13 | app.use(router)
14 | app.use(naive)
15 |
16 | app.mount('#app')
17 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/jinxplayer.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "jinxplayer/",
3 | "type": "large",
4 | "id": "jinxplayer",
5 | "title": "Jinx Player",
6 | "content": [
7 | {
8 | "name": "jinxplayer_list_bg_normal",
9 | "text": "Jinx Player 1"
10 | },
11 | {
12 | "name": "jinxplayer_list_bg_hard",
13 | "text": "Jinx Player 2"
14 | }
15 | ]
16 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/juveniledays.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "juveniledays/",
3 | "type": "large",
4 | "id": "juveniledays",
5 | "title": "Juvenile Days",
6 | "content": [
7 | {
8 | "name": "juveniledays_list_bg_nor",
9 | "text": "Juvenile Days 1"
10 | },
11 | {
12 | "name": "juveniledays_list_bg_hard",
13 | "text": "Juvenile Days 2"
14 | }
15 | ]
16 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | .DS_Store
12 | dist
13 | dist-ssr
14 | coverage
15 | *.local
16 |
17 | /cypress/videos/
18 | /cypress/screenshots/
19 |
20 | # Editor directories and files
21 | .vscode/*
22 | !.vscode/extensions.json
23 | .idea
24 | *.suo
25 | *.ntvs*
26 | *.njsproj
27 | *.sln
28 | *.sw?
29 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/blankticket.json:
--------------------------------------------------------------------------------
1 | {"path":"blankticket/","type":"large","id":"blankticket","title":"Blank Ticket","content":[{"name":"blankticket_list_nor_top.png","text":"Blank Ticket 1"},{"name":"blankticket_main_bg_01.png","text":"Blank Ticket 2"},{"name":"blankticket_main_bg_01_mid.png","text":"Blank Ticket 3"},{"name":"blankticket_main_bg_02.png","text":"Blank Ticket 4"},{"name":"blankticket_main_bg_02_mid.png","text":"Blank Ticket 5"}]}
--------------------------------------------------------------------------------
/src/utils/json/Gallery/rebornevil.json:
--------------------------------------------------------------------------------
1 | {"path":"rebornevil/","type":"large","id":"rebornevil","title":"Reborn Evil","notice":"Compressed from 24 to 1.5mb","content":[{"name":"EventScene_ce007_01.webp","text":"Reborn Evil 1"},{"name":"EventScene_ce007_02.webp","text":"Reborn Evil 2"},{"name":"EventScene_ce007_03_1.webp","text":"Reborn Evil 3"},{"name":"EventScene_ce007_04.webp","text":"Reborn Evil 4"},{"name":"EventScene_ce007_05.webp","text":"Reborn Evil 5"}]}
--------------------------------------------------------------------------------
/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { fileURLToPath } from 'node:url'
2 | import { mergeConfig, defineConfig, configDefaults } from 'vitest/config'
3 | import viteConfig from './vite.config'
4 |
5 | export default mergeConfig(
6 | viteConfig,
7 | defineConfig({
8 | test: {
9 | environment: 'jsdom',
10 | exclude: [...configDefaults.exclude, 'e2e/*'],
11 | root: fileURLToPath(new URL('./', import.meta.url))
12 | }
13 | })
14 | )
15 |
--------------------------------------------------------------------------------
/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@tsconfig/node18/tsconfig.json",
3 | "include": [
4 | "vite.config.*",
5 | "vitest.config.*",
6 | "cypress.config.*",
7 | "nightwatch.conf.*",
8 | "playwright.config.*"
9 | ],
10 | "compilerOptions": {
11 | "composite": true,
12 | "module": "ESNext",
13 | "moduleResolution": "Bundler",
14 | "types": ["node"],
15 | "lib": [
16 | "ES2021.String"
17 | ]
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/outerautomata.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "outerautomata/",
3 | "type": "large",
4 | "id": "outerautomata",
5 | "title": "Outer Automata",
6 | "content": [
7 | {
8 | "name": "EventTitle_OUTERAUTOMATA_02",
9 | "text": "Outer Automata 1"
10 | },
11 | {
12 | "name": "EventScene_ce_02_01",
13 | "text": "Outer Automata 2"
14 | },
15 | {
16 | "name": "EventScene_ce_02_02",
17 | "text": "Outer Automata 3"
18 | }
19 |
20 | ]
21 | }
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Nikke-DB
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/foolburstday.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "foolburstday/",
3 | "type": "large",
4 | "id": "foolburstday",
5 | "title": "Fool Burst Day",
6 | "content": [
7 | {
8 | "name": "2025FoolsDay",
9 | "text": "Fool Burst Day 1"
10 | },
11 | {
12 | "name": "EventScene_foolburstday_01",
13 | "text": "Fool Burst Day 2"
14 | },
15 | {
16 | "name": "EventScene_foolburstday_02",
17 | "text": "Fool Burst Day 3"
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/overthehorizon.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "overthehorizon/",
3 | "type": "large",
4 | "id": "overthehorizon",
5 | "title": "Over the Horizon",
6 | "content": [
7 | {
8 | "name": "EventTitle_overthehorizon_01",
9 | "text": "Over the Horizon 1"
10 | },
11 | {
12 | "name": "overthehorizon_list_nor_top",
13 | "text": "Over the Horizon 2"
14 | },
15 | {
16 | "name": "overthehorizon_list_hard_top",
17 | "text": "Over the Horizon 3"
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/src/stores/loaderStore.ts:
--------------------------------------------------------------------------------
1 | import { ref, type Ref } from 'vue'
2 | import { defineStore } from 'pinia'
3 |
4 | export const useLoaderStore = defineStore('loader', () => {
5 | const load = ref('done') as Ref<'done' | 'loading' | 'error'>
6 |
7 | const beginLoad = () => {
8 | load.value = 'loading'
9 | }
10 |
11 | const endLoad = () => {
12 | load.value = 'done'
13 | }
14 |
15 | const errorLoad = () => {
16 | load.value = 'error'
17 | }
18 |
19 | return { load, beginLoad, endLoad, errorLoad }
20 | })
21 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/bluewaterisland.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "bluewaterisland/",
3 | "type": "large",
4 | "id": "bluewaterisland",
5 | "title": "Blue Water Island",
6 | "content": [
7 | {
8 | "name": "EventScene_BluewaterIsland_02",
9 | "text": "Blue Water Island 1"
10 | },
11 | {
12 | "name": "EventScene_BluewaterIsland_03",
13 | "text": "Blue Water Island 2"
14 | },
15 | {
16 | "name": "EventScene_BluewaterIsland_04",
17 | "text": "Blue Water Island 3"
18 | }
19 | ]
20 | }
--------------------------------------------------------------------------------
/src/components/common/Footer/Footer.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | Nikke-DB | 2022 - {{ new Date().getFullYear() }} | By Koshirei |
4 |
5 | Credits
6 |
7 |
8 |
9 |
10 |
11 |
12 |
21 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/goninjathief.json:
--------------------------------------------------------------------------------
1 | {"path":"goninjathief/","type":"large","id":"goninjathief","title":"Go! Ninja Thief","content":[{"name":"goninjathief_list_hard_char.png","text":"Go! Ninja Thief 1"},{"name":"goninjathief_main_char_delta.png","text":"Go! Ninja Thief 2"},{"name":"goninjathief_main_char_miranda.png","text":"Go! Ninja Thief 3"},{"name":"goninjathief_main_char_phantom.png","text":"Go! Ninja Thief 4"},{"name":"goninjathief_main_char_poli.png","text":"Go! Ninja Thief 5"},{"name":"goninjathief_main_char_quency.png","text":"Go! Ninja Thief 6"}]}
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
2 | Version 2, December 2004
3 |
4 | Copyright (C) 2004 Sam Hocevar
5 |
6 | Everyone is permitted to copy and distribute verbatim or modified
7 | copies of this license document, and changing it is allowed as long
8 | as the name is changed.
9 |
10 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
11 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
12 |
13 | 0. You just DO WHAT THE FUCK YOU WANT TO.
14 |
15 | http://www.wtfpl.net
--------------------------------------------------------------------------------
/src/utils/interfaces/live2d.ts:
--------------------------------------------------------------------------------
1 | export interface live2d_interface {
2 | name: string
3 | id: string
4 | tl?: string
5 | }
6 |
7 | export interface AttachmentItemColorInterface {
8 | r: number,
9 | b: number,
10 | g: number,
11 | a: number
12 | }
13 | export interface AttachmentItemInterface {
14 | bones: number[],
15 | color: AttachmentItemColorInterface,
16 | name: string
17 | }
18 |
19 | export interface AttachmentInterface {
20 | [key: string]: AttachmentItemInterface
21 | }
22 |
23 | export interface RailStyleInterface {
24 | focused: boolean,
25 | checked: boolean
26 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/madeinrush.json:
--------------------------------------------------------------------------------
1 | {"path":"madeinrush/","type":"large","id":"madeinrush","title":"Made In Rush","content":[{"name":"madeinrush_cutscene_1.png","text":"Made In Rush 1"},{"name":"madeinrush_cutscene_2.png","text":"Made In Rush 2"},{"name":"madeinrush_cutscene_3.png","text":"Made In Rush 3"},{"name":"madeinrush_cutscene_4.png","text":"Made In Rush 4"},{"name":"madeinrush_cutscene_5.png","text":"Made In Rush 5"},{"name":"madeinrush_cutscene_6.png","text":"Made In Rush 6"},{"name":"madeinrush_cutscene_7.png","text":"Made In Rush 7"},{"name":"madeinrush_cutscene_8.png","text":"Made In Rush 8"}]}
--------------------------------------------------------------------------------
/src/utils/json/Gallery/miraclesnow.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "miraclesnow/",
3 | "type": "large",
4 | "id": "miraclesnow",
5 | "title": "Miracle Snow",
6 | "content": [
7 | {
8 | "name": "EventScene_MiracleSnow_01",
9 | "text": "Miracle Snow 1"
10 | },
11 | {
12 | "name": "EventScene_MiracleSnow_02",
13 | "text": "Miracle Snow 2"
14 | },
15 | {
16 | "name": "EventScene_MiracleSnow_03",
17 | "text": "Miracle Snow 3"
18 | },
19 | {
20 | "name": "EventScene_MiracleSnow_04",
21 | "text": "Miracle Snow 4"
22 | }
23 | ]
24 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/recipeforyou.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "recipeforyou/",
3 | "type": "large",
4 | "id": "recipeforyou",
5 | "title": "Re:Cipe For You",
6 | "content": [
7 | {
8 | "name": "EventTitle_ReCIPEFORYOU_01",
9 | "text": "Re:Cipe For You 1"
10 | },
11 | {
12 | "name": "EventTitle_ReCIPEFORYOU_02",
13 | "text": "Re:Cipe For You 2"
14 | },
15 | {
16 | "name": "EventScene_ce_03_03",
17 | "text": "Re:Cipe For You 3"
18 | },
19 | {
20 | "name": "EventScene_ce_03_02",
21 | "text": "Re:Cipe For You 4"
22 | }
23 | ]
24 | }
--------------------------------------------------------------------------------
/src/components/common/Spine/Tools/BackgroundImagePack.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | Background
4 | Image Pack
5 |
6 |
7 |
8 |
16 |
17 |
24 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/side04.json:
--------------------------------------------------------------------------------
1 | {"path":"side04/","type":"large","id":"side04","title":"Eden Spear","notice":"Compressed from 24 to 1.9mb","content":[{"name":"EventScene_Side_04_01_1.webp","text":"Eden Spear 1"},{"name":"EventScene_Side_04_01_2.webp","text":"Eden Spear 2"},{"name":"EventScene_Side_04_01_3.webp","text":"Eden Spear 3"},{"name":"EventScene_Side_04_01_4.webp","text":"Eden Spear 4"},{"name":"EventScene_Side_04_01_5.webp","text":"Eden Spear 5"},{"name":"EventScene_Side_04_02_1.webp","text":"Eden Spear 6"},{"name":"EventScene_Side_04_02_2.webp","text":"Eden Spear 7"},{"name":"EventScene_Side_04_03.webp","text":"Eden Spear 8"}]}
--------------------------------------------------------------------------------
/src/utils/utils.ts:
--------------------------------------------------------------------------------
1 | const rand = (max: number) => {
2 | return Math.floor(Math.random() * max)
3 | }
4 |
5 | const rgb2hex = (r: number, g: number, b: number) => {
6 | let rr = r.toString(16)
7 | let gg = g.toString(16)
8 | let bb = b.toString(16)
9 |
10 | if (rr.length === 1) rr = '0' + rr
11 | if (gg.length === 1) gg = '0' + gg
12 | if (bb.length === 1) bb = '0' + bb
13 |
14 | return '#' + rr + gg + bb
15 | }
16 |
17 | const returnRandomHex = () => {
18 | const r = rand(255)
19 | const g = rand(255)
20 | const b = rand(255)
21 | return rgb2hex(r, g, b)
22 | }
23 |
24 | export { rand, rgb2hex, returnRandomHex }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/bbqmaster.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "bbqmaster/",
3 | "type": "large",
4 | "id": "bbqmaster",
5 | "title": "BBQ Master",
6 | "content": [
7 | {
8 | "name": "EventScene_bbqmaster_01",
9 | "text": "BBQ 1"
10 | },
11 | {
12 | "name": "EventScene_bbqmaster_02",
13 | "text": "BBQ 2"
14 | },
15 | {
16 | "name": "EventScene_bbqmaster_03",
17 | "text": "BBQ 3"
18 | },
19 | {
20 | "name": "EventScene_bbqmaster_04",
21 | "text": "BBQ 4"
22 | },
23 | {
24 | "name": "EventScene_bbqmaster_05",
25 | "text": "BBQ 5"
26 | }
27 | ]
28 | }
--------------------------------------------------------------------------------
/src/stores/market.ts:
--------------------------------------------------------------------------------
1 | import { defineStore } from 'pinia'
2 | import { useLoaderStore } from './loaderStore'
3 | import { useGlobalParamsStore } from './globalParamsStore'
4 | import { useRoute } from 'vue-router'
5 | import { useLive2dStore } from './live2dStore'
6 | import { useMessageStore } from './messageStore'
7 |
8 | export const useMarket = defineStore('market', () => {
9 | const load = useLoaderStore()
10 | const globalParams = useGlobalParamsStore()
11 | const live2d = useLive2dStore()
12 | const route = useRoute()
13 | const message = useMessageStore()
14 |
15 | return { load, globalParams, live2d, route, message }
16 | })
17 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { fileURLToPath, URL } from 'node:url'
2 |
3 | import { defineConfig } from 'vite'
4 | import vue from '@vitejs/plugin-vue'
5 | import vueJsx from '@vitejs/plugin-vue-jsx'
6 |
7 | // https://vitejs.dev/config/
8 | export default defineConfig({
9 | plugins: [vue(), vueJsx()],
10 | resolve: {
11 | alias: {
12 | '@': fileURLToPath(new URL('./src', import.meta.url))
13 | }
14 | },
15 | server: {
16 | proxy: {
17 | '/alltalk': {
18 | target: 'http://127.0.0.1:7851',
19 | changeOrigin: true,
20 | rewrite: (path) => path.replace(/^\/alltalk/, '')
21 | }
22 | }
23 | }
24 | })
25 |
--------------------------------------------------------------------------------
/src/components/common/Spine/Tools/ResetCoordinates.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | Reset (z)
4 |
5 |
6 |
7 |
22 |
23 |
29 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/side01.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "side01/",
3 | "type": "large",
4 | "id": "side01",
5 | "title": "Second Affection",
6 | "content": [
7 | {
8 | "name": "EventScene_Side_01_01",
9 | "text": "Side Story 01-1"
10 | },
11 | {
12 | "name": "EventScene_Side_01_02",
13 | "text": "Side Story 01-2"
14 | },
15 | {
16 | "name": "EventScene_Side_01_03",
17 | "text": "Side Story 01-3"
18 | },
19 | {
20 | "name": "EventScene_Side_01_04",
21 | "text": "Side Story 01-4"
22 | },
23 | {
24 | "name": "EventScene_Side_01_05",
25 | "text": "Side Story 01-5"
26 | }
27 | ]
28 | }
--------------------------------------------------------------------------------
/src/components/views/StoryGenerator.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/stores/messageStore.ts:
--------------------------------------------------------------------------------
1 | import { defineStore } from 'pinia'
2 | import { ref } from 'vue'
3 | import type { MessageApiInjection } from 'naive-ui/es/message/src/MessageProvider'
4 |
5 | export const useMessageStore = defineStore('message', () => {
6 | const message: MessageApiInjection | any = ref('')
7 | const short_message = { duration: 1000 }
8 | const long_message = { duration: 10000 }
9 |
10 | const setMessage = (messageInjection: MessageApiInjection) => {
11 | message.value = messageInjection
12 | }
13 |
14 | const getMessage = (): MessageApiInjection => {
15 | return message.value
16 | }
17 |
18 | return { message, setMessage, getMessage, long_message, short_message }
19 | })
20 |
--------------------------------------------------------------------------------
/src/components/common/Spine/Tools/ChangeQualityMode.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | HQ Assets
4 | LQ Assets
5 |
6 |
7 |
8 |
18 |
19 |
25 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/side02.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "side02/",
3 | "type": "large",
4 | "id": "side02",
5 | "title": "Wordless",
6 | "content": [
7 | {
8 | "name": "EventScene_Side_02_01_1",
9 | "text": "Side Story 02-1"
10 | },
11 | {
12 | "name": "EventScene_Side_02_01_2",
13 | "text": "Side Story 02-2"
14 | },
15 | {
16 | "name": "EventScene_Side_02_01_3",
17 | "text": "Side Story 02-3"
18 | },
19 | {
20 | "name": "EventScene_Side_02_01_4",
21 | "text": "Side Story 02-4"
22 | },
23 | {
24 | "name": "EventScene_Side_02_02",
25 | "text": "Side Story 02-5"
26 | },
27 | {
28 | "name": "EventScene_Side_02_03",
29 | "text": "Side Story 02-6"
30 | }
31 | ]
32 | }
--------------------------------------------------------------------------------
/src/stores/globalParamsStore.ts:
--------------------------------------------------------------------------------
1 | import { ref } from 'vue'
2 | import { defineStore } from 'pinia'
3 |
4 | export const useGlobalParamsStore = defineStore('globalParams', () => {
5 | const isMobile = ref(true)
6 | const isMobileHeaderVisibile = ref(true)
7 |
8 | const setMobile = () => {
9 | isMobile.value = true
10 | }
11 |
12 | const setComputer = () => {
13 | isMobile.value = false
14 | }
15 |
16 | const hideMobileHeader = () => {
17 | isMobileHeaderVisibile.value = false
18 | }
19 |
20 | const showMobileHeader = () => {
21 | isMobileHeaderVisibile.value = true
22 | }
23 |
24 | return {
25 | isMobile,
26 | setMobile,
27 | setComputer,
28 | isMobileHeaderVisibile,
29 | hideMobileHeader,
30 | showMobileHeader
31 | }
32 | })
33 |
--------------------------------------------------------------------------------
/src/components/common/Spine/Tools/HideUI.vue:
--------------------------------------------------------------------------------
1 |
2 | Hide UI
3 |
4 |
5 |
22 |
23 |
29 |
--------------------------------------------------------------------------------
/src/components/common/Spine/Tools/Yapping.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Yap mode
7 |
8 |
9 |
10 |
26 |
27 |
--------------------------------------------------------------------------------
/src/components/views/Tools.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
27 |
28 |
37 |
--------------------------------------------------------------------------------
/src/components/common/Header/routes2Display.ts:
--------------------------------------------------------------------------------
1 | export interface route2DisplayInterface {
2 | path: string
3 | text: string
4 | mobile: boolean
5 | }
6 |
7 | export const ROUTES: route2DisplayInterface[] = [
8 | {
9 | path: 'tools',
10 | text: 'Tools',
11 | mobile: true
12 | },
13 | {
14 | path: 'visualiser',
15 | text: 'Live2D Visualiser',
16 | mobile: true
17 | },
18 | {
19 | path: 'chibi',
20 | text: 'Chibi',
21 | mobile: true
22 | },
23 | {
24 | path: 'gallery',
25 | text: 'Gallery',
26 | mobile: true
27 | },
28 | {
29 | path: 'story-gen',
30 | text: 'Story/Roleplaying Generator',
31 | mobile: true
32 | }
33 | // {
34 | // path: 'tierlistmaker',
35 | // text: 'Tier List Maker',
36 | // mobile: false
37 | // }
38 | ]
39 |
--------------------------------------------------------------------------------
/src/components/common/Spine/Tools/Export.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | Export
4 |
5 |
6 |
7 |
8 | Colored
9 |
10 |
11 | Transparent
12 |
13 |
14 |
15 |
16 |
25 |
26 |
35 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/neverland.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "neverland/",
3 | "type": "large",
4 | "id": "neverland",
5 | "title": "Neverland",
6 | "content": [
7 | {
8 | "name": "EventScene_NeverLand_01",
9 | "text": "Neverland 1"
10 | },
11 | {
12 | "name": "EventScene_NeverLand_02_1",
13 | "text": "Neverland 2"
14 | },
15 | {
16 | "name": "EventScene_NeverLand_02_2",
17 | "text": "Neverland 3"
18 | },
19 | {
20 | "name": "EventScene_NeverLand_03",
21 | "text": "Neverland 4"
22 | },
23 | {
24 | "name": "EventScene_NeverLand_04",
25 | "text": "Neverland 5"
26 | },
27 | {
28 | "name": "EventScene_NeverLand_05_1",
29 | "text": "Neverland 6"
30 | },
31 | {
32 | "name": "EventScene_NeverLand_05_2",
33 | "text": "Neverland 7"
34 | }
35 | ]
36 | }
--------------------------------------------------------------------------------
/src/components/common/Gallery/ButtonTemplate.vue:
--------------------------------------------------------------------------------
1 |
2 | {{ dataToLoad.title }}
6 |
7 |
8 |
27 |
28 |
--------------------------------------------------------------------------------
/src/components/common/Tierlistmaker/CharacterCard.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
{{ props.nikke.name }}
5 |
6 |
7 |
8 |
24 |
25 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/story8.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "story8/",
3 | "type": "large",
4 | "id": "story8",
5 | "title": "Chapters 37 to 38",
6 | "notice": "Compressed from 34mb total to 1.5mb",
7 | "content": [
8 | {
9 | "name": "EventScene_Chap_37_01",
10 | "text": "Oh Lord Oh God"
11 | },
12 | {
13 | "name": "EventScene_Chap_37_02",
14 | "text": "Need this but with behemoth"
15 | },
16 | {
17 | "name": "EventScene_Chap_38_01",
18 | "text": "1% drop rate future characters despite note being canonical OverSpecs"
19 | },
20 | {
21 | "name": "EventScene_Chap_38_02_1",
22 | "text": "Beam"
23 | },
24 | {
25 | "name": "EventScene_Chap_38_02_2",
26 | "text": "bbeeaamm"
27 | },
28 | {
29 | "name": "EventScene_Chap_38_02_3",
30 | "text": "bbbeeeaaammm"
31 | },
32 | {
33 | "name": "EventScene_Chap_38_03",
34 | "text": "A hole's a hole."
35 | }
36 | ]
37 | }
--------------------------------------------------------------------------------
/src/components/common/Header/HeaderSelector.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
13 |
14 |
32 |
33 |
38 |
--------------------------------------------------------------------------------
/src/components/views/L2D.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/voltroad.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "voltroad/",
3 | "type": "large",
4 | "id": "voltroad",
5 | "title": "Volt Road",
6 | "content": [
7 | {
8 | "name": "EventScene_voltroad_SD_01_01",
9 | "text": "Volt Road 1"
10 | },
11 | {
12 | "name": "EventScene_voltroad_SD_01_02",
13 | "text": "Volt Road 2"
14 | },
15 | {
16 | "name": "EventScene_voltroad_SD_01_03",
17 | "text": "Volt Road 3"
18 | },
19 | {
20 | "name": "EventScene_voltroad_SD_01_04",
21 | "text": "Volt Road 4"
22 | },
23 | {
24 | "name": "EventScene_voltroad_SD_01_05",
25 | "text": "Volt Road 5"
26 | },
27 | {
28 | "name": "EventScene_voltroad_SD_01_06",
29 | "text": "Volt Road 6"
30 | },
31 | {
32 | "name": "EventScene_voltroad_SD_01_07",
33 | "text": "Volt Road 7"
34 | },
35 | {
36 | "name": "EventScene_voltroad_SD_01_08",
37 | "text": "Volt Road 8"
38 | }
39 | ]
40 | }
--------------------------------------------------------------------------------
/src/components/common/Credits/Template.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ props.title }}
4 | {{ props.subTitle }}
5 |
6 |
7 |
8 |
9 |
35 |
36 |
42 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/evangelion.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "evangelion/",
3 | "type": "large",
4 | "id": "evangelion",
5 | "title": "Evangelion",
6 | "content": [
7 | {
8 | "name": "ce004_part03_bg_01",
9 | "text": "Evangelion 1"
10 | },
11 | {
12 | "name": "EventScene_ce004_01_1",
13 | "text": "Evangelion 2"
14 | },
15 | {
16 | "name": "EventScene_ce004_01_2",
17 | "text": "Evangelion 3"
18 | },
19 | {
20 | "name": "EventScene_ce004_02",
21 | "text": "Evangelion 4"
22 | },
23 | {
24 | "name": "EventScene_ce004_03",
25 | "text": "Evangelion 5"
26 | },
27 | {
28 | "name": "EventScene_ce004_04",
29 | "text": "Evangelion 6"
30 | },
31 | {
32 | "name": "EventScene_ce004_05",
33 | "text": "Evangelion 7"
34 | },
35 | {
36 | "name": "EventScene_ce004_06",
37 | "text": "Evangelion 8"
38 | },
39 | {
40 | "name": "EventScene_ce004_07",
41 | "text": "Evangelion 9"
42 | }
43 | ]
44 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/absolute.json:
--------------------------------------------------------------------------------
1 | {"path":"absolute/","type":"large","id":"absolute","title":"ABSOLUTE","notice":"Compressed from 39 to 2.4mb","content":[{"name":"EventScene_absolute_01_1.webp","text":"ABSOLUTE 1"},{"name":"EventScene_absolute_02_1.webp","text":"ABSOLUTE 2"},{"name":"EventScene_absolute_02_2.webp","text":"ABSOLUTE 3"},{"name":"EventScene_absolute_02_3.webp","text":"ABSOLUTE 4"},{"name":"EventScene_absolute_02_4.webp","text":"ABSOLUTE 5"},{"name":"EventScene_absolute_03_1.webp","text":"ABSOLUTE 6"},{"name":"EventScene_absolute_04_1.webp","text":"ABSOLUTE 7"},{"name":"EventScene_absolute_04_2.webp","text":"ABSOLUTE 8"},{"name":"EventScene_absolute_05_1.webp","text":"ABSOLUTE 9"},{"name":"absolute_main_part1_chr_01.webp","text":"ABSOLUTE 10"},{"name":"absolute_main_part1_chr_02.webp","text":"ABSOLUTE 11"},{"name":"absolute_main_part1_chr_03.webp","text":"ABSOLUTE 12"},{"name":"absolute_main_part2_char_01.webp","text":"ABSOLUTE 13"},{"name":"absolute_main_part2_char_02.webp","text":"ABSOLUTE 14"},{"name":"absolute_main_part2_char_03.webp","text":"ABSOLUTE 15"}]}
--------------------------------------------------------------------------------
/src/utils/json/Gallery/goldencoinrush.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "goldencoinrush/",
3 | "type": "large",
4 | "id": "goldencoinrush",
5 | "title": "Golden Coin Rush",
6 | "content": [
7 | {
8 | "name": "EventScene_GoldenCoinRush_01_1",
9 | "text": "Golden Coin Rush 1"
10 | },
11 | {
12 | "name": "EventScene_GoldenCoinRush_01_2",
13 | "text": "Golden Coin Rush 2"
14 | },
15 | {
16 | "name": "EventScene_GoldenCoinRush_02",
17 | "text": "Golden Coin Rush 3"
18 | },
19 | {
20 | "name": "EventScene_GoldenCoinRush_03",
21 | "text": "Golden Coin Rush 4"
22 | },
23 | {
24 | "name": "EventScene_GoldenCoinRush_04",
25 | "text": "Golden Coin Rush 5"
26 | },
27 | {
28 | "name": "EventScene_GoldenCoinRush_05_1",
29 | "text": "Golden Coin Rush 6"
30 | },
31 | {
32 | "name": "EventScene_GoldenCoinRush_05_2",
33 | "text": "Golden Coin Rush 7"
34 | },
35 | {
36 | "name": "EventScene_GoldenCoinRush_06",
37 | "text": "Golden Coin Rush 8"
38 | }
39 | ]
40 | }
--------------------------------------------------------------------------------
/src/components/common/Header/VisitorCounter.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
21 |
22 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/4koma_zh.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "4koma_zh/",
3 | "type": "large",
4 | "id": "4koma_zh",
5 | "title": "『妮在干嘛』四格漫画",
6 | "content": [
7 | {
8 | "name": "1",
9 | "text": "https://t.bilibili.com/1040051243708317712"
10 | },
11 | {
12 | "name": "2",
13 | "text": "https://t.bilibili.com/1042648839909015568"
14 | },
15 | {
16 | "name": "3",
17 | "text": "https://t.bilibili.com/1044875351002447921"
18 | },
19 | {
20 | "name": "4",
21 | "text": "https://t.bilibili.com/1047472947229360129"
22 | },
23 | {
24 | "name": "5",
25 | "text": "https://t.bilibili.com/1052668139627610129"
26 | },
27 | {
28 | "name": "6",
29 | "text": "https://t.bilibili.com/1059347672810389511"
30 | },
31 | {
32 | "name": "7",
33 | "text": "https://t.bilibili.com/1064542865230659609"
34 | },
35 | {
36 | "name": "8",
37 | "text": "https://t.bilibili.com/1072613967754428432"
38 | },
39 | {
40 | "name": "9",
41 | "text": "https://t.bilibili.com/1079757357391544328"
42 | }
43 | ]
44 | }
45 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/bfgcleanup.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "bfgcleanup/",
3 | "type": "large",
4 | "id": "bfgcleanup",
5 | "title": "BFG Clean UP !",
6 | "content": [
7 | {
8 | "name": "clear_scene_1",
9 | "text": "Door Should Be Smashed With an Ax"
10 | },
11 | {
12 | "name": "clear_scene_2",
13 | "text": "The Clown Is Always Smiling"
14 | },
15 | {
16 | "name": "clear_scene_3",
17 | "text": "The Horror Under the Covers"
18 | },
19 | {
20 | "name": "clear_scene_4",
21 | "text": "Monsters of Silent Hill"
22 | },
23 | {
24 | "name": "clear_scene_5",
25 | "text": "Scream and Shout!"
26 | },
27 | {
28 | "name": "clear_scene_skill_1",
29 | "text": "Body Burster!"
30 | },
31 | {
32 | "name": "clear_scene_skill_2",
33 | "text": "It's Freezing in the Well"
34 | },
35 | {
36 | "name": "bg_basic",
37 | "text": "Boom and Shock"
38 | },
39 | {
40 | "name": "bg_middle",
41 | "text": "Red Flavor"
42 | },
43 | {
44 | "name": "bg_high",
45 | "text": "Serendipity"
46 | }
47 | ]
48 | }
--------------------------------------------------------------------------------
/src/Wrapper.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
43 |
--------------------------------------------------------------------------------
/src/components/common/Credits/Table.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Name
6 | Contribution
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
28 |
29 |
63 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/seayouagain.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "seayouagain/",
3 | "type": "large",
4 | "id": "seayouagain",
5 | "title": "Sea You Again",
6 | "content": [
7 | {
8 | "name": "EventScene_SeaYouAgain_01_1",
9 | "text": "Sea You Again 1"
10 | },
11 | {
12 | "name": "EventScene_SeaYouAgain_01_2",
13 | "text": "Sea You Again 2"
14 | },
15 | {
16 | "name": "EventScene_SeaYouAgain_02_1",
17 | "text": "Sea You Again 3"
18 | },
19 | {
20 | "name": "EventScene_SeaYouAgain_02_2",
21 | "text": "Sea You Again 4"
22 | },
23 | {
24 | "name": "EventScene_SeaYouAgain_02_3",
25 | "text": "Sea You Again 5"
26 | },
27 | {
28 | "name": "EventScene_SeaYouAgain_03_1",
29 | "text": "Sea You Again 6"
30 | },
31 | {
32 | "name": "EventScene_SeaYouAgain_03_2",
33 | "text": "Sea You Again 7"
34 | },
35 | {
36 | "name": "EventScene_SeaYouAgain_03_3",
37 | "text": "Sea You Again 8"
38 | },
39 | {
40 | "name": "EventScene_SeaYouAgain_03_4",
41 | "text": "Sea You Again 9"
42 | },
43 | {
44 | "name": "EventScene_SeaYouAgain_05",
45 | "text": "Sea You Again 10"
46 | },
47 | {
48 | "name": "EventTitle_SeaYouAgain_02",
49 | "text": "Sea You Again 11"
50 | }
51 | ]
52 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/story9.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "story9/",
3 | "type": "large",
4 | "id": "story9",
5 | "title": "Chapters 39 to 40",
6 | "notice": "Compressed from 53.5mb total to 2.6mb",
7 | "content": [
8 | {
9 | "name": "EventScene_Chap_39_01",
10 | "text": "Nayuta"
11 | },
12 | {
13 | "name": "EventScene_Chap_39_02",
14 | "text": "Wasn't commander's uniform supposed to be brown?"
15 | },
16 | {
17 | "name": "EventScene_Chap_39_03",
18 | "text": "Me when chinese people come in DMs and doesn't bother talking in english "
19 | },
20 | {
21 | "name": "EventScene_Chap_39_04",
22 | "text": "Dress"
23 | },
24 | {
25 | "name": "EventScene_Chap_40_01",
26 | "text": "Liberalio"
27 | },
28 | {
29 | "name": "EventScene_Chap_40_02",
30 | "text": "Ziz drool emoticon"
31 | },
32 | {
33 | "name": "EventScene_Chap_40_06",
34 | "text": "Behemoth drool emoticon"
35 | },
36 | {
37 | "name": "EventScene_Chap_40_03",
38 | "text": "That scene was supposed to happen in a building. Not sure why she's in the streets."
39 | },
40 | {
41 | "name": "EventScene_Chap_40_04",
42 | "text": "Neon downloaded the Ubisoft patch"
43 | },
44 | {
45 | "name": "EventScene_Chap_40_05",
46 | "text": "Smash Smash Pass"
47 | }
48 | ]
49 | }
--------------------------------------------------------------------------------
/src/utils/style/naive-ui-theme-overrides.json:
--------------------------------------------------------------------------------
1 | {
2 | "Card": {
3 | "textColor": "rgba(255, 255, 255, 1)",
4 | "titleTextColor": "rgba(255, 255, 255, 1)",
5 | "actionColor": "rgba(255, 255, 255, 0.06)",
6 | "borderColor": "rgba(255, 255, 255, 0.5)",
7 | "titleFontSizeMedium": "24px",
8 | "lineHeight": "1.8"
9 | },
10 | "Typography": {
11 | "pFontSize": "16px",
12 | "pTextColor": "rgba(255,255,255,1)",
13 | "liTextColor": "rgba(255, 255, 255, 1)",
14 | "liFontSize": "16px"
15 | },
16 | "Scrollbar": {
17 | "color": "rgba(99, 226, 183, 0.2)",
18 | "colorHover": "rgba(99, 226, 183, 0.3)"
19 | },
20 | "Message": {
21 | "colorSuccess": "rgba(37, 96, 76, 1)",
22 | "color": "rgb(72, 72, 78)",
23 | "colorInfo": "rgba(54, 54, 108, 1)",
24 | "textColor": "rgba(255, 255, 255, 1)",
25 | "textColorSuccess": "rgba(255, 255, 255, 1)",
26 | "iconColorSuccess": "#63e2b7",
27 | "iconColorLoading": "#FFFFFFFF",
28 | "colorError": "rgba(109, 36, 36, 1)",
29 | "textColorInfo": "rgba(255, 255, 255, 1)",
30 | "textColorError": "rgba(255, 255, 255, 1)",
31 | "textColorWarning": "rgba(255, 255, 255, 1)",
32 | "textColorLoading": "rgba(255, 255, 255, 1)",
33 | "colorWarning": "rgba(125, 112, 40, 1)"
34 | },
35 | "Form": {
36 | "labelFontSizeTopLarge": "18px",
37 | "feedbackPadding": "4px 0 8px 2px"
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Nikke-DB-Vue
2 |
3 | New front-end code for the Nikke-db website. Stars are welcomed.
4 |
5 | Files are hosted in the repo [https://github.com/Nikke-db/Nikke-db.github.io](https://github.com/Nikke-db/Nikke-db.github.io) and uploaded to a cloudflare page website for access.
6 |
7 | Made by Koshirei
8 |
9 | ```git clone, npm install, npm run dev```
10 | If you know, you know.
11 |
12 | ## Want to help?
13 | Sure ! Fork the repository and fix a bug you've found, a bug someone else found, or make your own feature! If possible use Naive UI components that fits the theme of the website. Once the feature is done, open a Pull Request and after trying out the fix or feature I'll add it to the website.
14 | Make sure mobile display is good enough ( not asking for perfection ), grab width and conditions from other components to have the same workflow. To test it out run ```npm run serve``` and open a network url on your mobile device ( connected on the same wifi ! ) to instantly test out your modification on mobile.
15 |
16 | ## Pull Requests requirements
17 | Before asking any pull request, run ```npm run lint```, fix all the warning and errors from eslint.
18 | If your feature require to use files, especially spine assets, "si_" icons, "mi_" banners, or anything else, host them on [https://github.com/Nikke-db/Nikke-db.github.io](https://github.com/Nikke-db/Nikke-db.github.io) and make a Pull Request there as well.
19 |
20 |
--------------------------------------------------------------------------------
/src/components/common/Gallery/ArrowTemplate.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | {{ index }} / {{ total }}
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
34 |
35 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/beautyfullshot.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "beautyfullshot/",
3 | "type": "large",
4 | "id": "beautyfullshot",
5 | "title": "Beauty Full Shot",
6 | "content": [
7 | {
8 | "name": "beautyfullshot_opening_bg_after_exilegae",
9 | "text": "Beauty Full Shot 1"
10 | },
11 | {
12 | "name": "EventScene_BeautyFullShot_01",
13 | "text": "Beauty Full Shot 2"
14 | },
15 | {
16 | "name": "EventScene_BeautyFullShot_02",
17 | "text": "Beauty Full Shot 3"
18 | },
19 | {
20 | "name": "EventScene_BeautyFullShot_03",
21 | "text": "Beauty Full Shot 4"
22 | },
23 | {
24 | "name": "EventScene_BeautyFullShot_04",
25 | "text": "Beauty Full Shot 5"
26 | },
27 | {
28 | "name": "EventScene_BeautyFullShot_05",
29 | "text": "Beauty Full Shot 6"
30 | },
31 | {
32 | "name": "EventScene_BeautyFullShot_06",
33 | "text": "Beauty Full Shot 7"
34 | },
35 | {
36 | "name": "beautyfullshot_album_bg",
37 | "text": "Island"
38 | },
39 | {
40 | "name": "beautyfullshot_hub_pic_01",
41 | "text": "le fishmael"
42 | },
43 | {
44 | "name": "beautyfullshot_hub_pic_02",
45 | "text": "Melon Flavored Tits"
46 | },
47 | {
48 | "name": "beautyfullshot_hub_pic_03",
49 | "text": "60$ slop"
50 | },
51 | {
52 | "name": "beautyfullshot_hub_pic_04",
53 | "text": "Rosanna."
54 | }
55 | ]
56 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/story5.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "story5/",
3 | "type": "large",
4 | "id": "story5",
5 | "title": "Chapters 31 to 32",
6 | "content": [
7 | {
8 | "name": "EventScene_Chap_31_01_01",
9 | "text": "Finally a good character design"
10 | },
11 | {
12 | "name": "EventScene_Chap_31_01_02",
13 | "text": "Tsundere"
14 | },
15 | {
16 | "name": "EventScene_Chap_32_01",
17 | "text": "Tsun Tsun"
18 | },
19 | {
20 | "name": "EventScene_Chap_31_01_03",
21 | "text": "L"
22 | },
23 | {
24 | "name": "EventScene_Chap_31_01_04",
25 | "text": "Behemoth"
26 | },
27 | {
28 | "name": "EventScene_Chap_32_02",
29 | "text": "Biblically accurate angel"
30 | },
31 | {
32 | "name": "EventScene_Chap_32_03",
33 | "text": "F tier unit finally useful"
34 | },
35 | {
36 | "name": "EventScene_Chap_32_04",
37 | "text": "Cinderella"
38 | },
39 | {
40 | "name": "EventScene_Chap_32_05_01",
41 | "text": "Shikicum"
42 | },
43 | {
44 | "name": "EventScene_Chap_32_05_02",
45 | "text": "would"
46 | },
47 | {
48 | "name": "EventScene_Chap_32_06_01",
49 | "text": "Citrus 1"
50 | },
51 | {
52 | "name": "EventScene_Chap_32_06_02",
53 | "text": "Citrus 2"
54 | },
55 | {
56 | "name": "EventScene_Chap_32_06_03",
57 | "text": "Citrus 3"
58 | },
59 | {
60 | "name": "EventScene_Chap_32_07",
61 | "text": "on god I'd take behemoth every day instead of cinderella the beauty slop"
62 | }
63 | ]
64 | }
--------------------------------------------------------------------------------
/src/components/common/Spine/Tools/PoseSelector.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
62 |
63 |
68 |
--------------------------------------------------------------------------------
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | /* eslint-env node */
2 | require('@rushstack/eslint-patch/modern-module-resolution')
3 |
4 | module.exports = {
5 | root: true,
6 | extends: [
7 | 'plugin:vue/vue3-essential',
8 | 'eslint:recommended',
9 | '@vue/eslint-config-typescript',
10 | '@vue/eslint-config-prettier/skip-formatting'
11 | ],
12 | parserOptions: {
13 | ecmaVersion: 'latest'
14 | },
15 | rules: {
16 | '@typescript-eslint/type-annotation-spacing': 'error',
17 | 'arrow-parens': ['error', 'always'],
18 | 'arrow-spacing': ['error', {
19 | 'before': true, 'after': true
20 | }],
21 | 'comma-spacing': ['error', {
22 | 'before': false, 'after': true
23 | }],
24 | 'block-spacing': ['error', 'always'],
25 | 'default-case': 'error',
26 | 'default-case-last': 'error',
27 | 'default-param-last': 'error',
28 | 'eqeqeq': 'error',
29 | 'func-call-spacing': ['error', 'never'],
30 | 'indent': [ 'error', 2, {
31 | 'SwitchCase': 1
32 | } ],
33 | 'keyword-spacing': ['error', {
34 | 'after': true, 'before': true,
35 | }],
36 | // 'no-trailing-spaces': 'error',
37 | 'no-unreachable': 'error',
38 | 'no-unreachable-loop': 'error',
39 | 'no-unused-vars': 'off',
40 | '@typescript-eslint/no-unused-vars': 'error',
41 | 'no-var': 'error',
42 | 'object-curly-spacing': ['error', 'always'],
43 | 'quotes': [ 'error', 'single' ],
44 | 'semi': [ 'error', 'never' ],
45 | 'space-infix-ops': 'error',
46 | 'switch-colon-spacing': ['error', {
47 | 'after': true, 'before': false
48 | }],
49 | 'vue/multi-word-component-names': 'off',
50 | 'yoda': 'error',
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/story2.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "story2/",
3 | "type": "large",
4 | "id": "story2",
5 | "title": "Chapters 10 to 19",
6 | "content": [
7 | {
8 | "name": "EventScene_Chap_10_01",
9 | "text": "Rapi"
10 | },
11 | {
12 | "name": "EventScene_Chap_11_01",
13 | "text": "Laplace"
14 | },
15 | {
16 | "name": "EventScene_Chap_12_01",
17 | "text": "The Hero"
18 | },
19 | {
20 | "name": "EventScene_Chap_12_02",
21 | "text": "Maiden & Guillotine"
22 | },
23 | {
24 | "name": "EventScene_Chap_12_03",
25 | "text": "Maiden"
26 | },
27 | {
28 | "name": "EventScene_Chap_12_After_02",
29 | "text": "The big four"
30 | },
31 | {
32 | "name": "EventScene_Chap_13_01",
33 | "text": "Infinity Rail"
34 | },
35 | {
36 | "name": "EventScene_Chap_13_01_02",
37 | "text": "The AZX"
38 | },
39 | {
40 | "name": "EventScene_Chap_13_03",
41 | "text": "Chatterbox"
42 | },
43 | {
44 | "name": "EventScene_Chap_13_04",
45 | "text": "Gun"
46 | },
47 | {
48 | "name": "EventScene_Chap_13_05",
49 | "text": "Kick"
50 | },
51 | {
52 | "name": "EventScene_Chap_13_06",
53 | "text": "Red Hood"
54 | },
55 | {
56 | "name": "EventScene_Chap_14_02",
57 | "text": "Triangle"
58 | },
59 | {
60 | "name": "EventScene_Main_15_After_01",
61 | "text": "Matis"
62 | },
63 | {
64 | "name": "EventScene_Main_16_01",
65 | "text": "Exotic"
66 | },
67 | {
68 | "name": "EventScene_Chap_19_01",
69 | "text": "Eden"
70 | }
71 | ]
72 | }
--------------------------------------------------------------------------------
/src/components/common/Spine/Tools/Screenshot.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | Screenshot
14 |
15 |
16 |
17 |
26 |
27 |
38 |
--------------------------------------------------------------------------------
/src/utils/animationMappings.ts:
--------------------------------------------------------------------------------
1 | export const animationMappings: Record = {
2 | 'happy': [
3 | 'delight', 'joy', 'smile', 'laugh', 'excited', 'glee', 'grin', 'chuckle', 'giggle', 'smirk',
4 | 'beam', 'radiant', 'happy', 'content', 'pleased', 'amused', 'cheerful', 'triumph'
5 | ],
6 | 'cry': [
7 | 'cry', 'crying', 'weep', 'tears',
8 | ],
9 | 'sad': [
10 | // High intensity (sad) - actual sadness/very sad/almost crying
11 | 'depressed', 'sorrow', 'tear', 'gloom', 'worry', 'sobbing', 'devastated', 'heartbroken',
12 | 'hurt', 'pain', 'agony', 'grief', 'mourn', 'sad', 'unhappy', 'melancholy',
13 | 'despair', 'hopeless', 'anguish', 'misery',
14 | // Low intensity (sad_02) - about to cry, watery eyes
15 | 'teary', 'upset', 'emotional', 'misty', 'choked up', 'pout', 'whine'
16 | ],
17 | 'angry': [
18 | // High intensity (angry_02)
19 | 'furious', 'rage', 'shouting', 'yelling', 'livid', 'outraged', 'irate', 'mad', 'fury',
20 | 'anger', 'seethe', 'hiss', 'growl', 'snap', 'bitter', 'resent', 'hate', 'loathe', 'vengeful',
21 | // Low intensity (angry_03)
22 | 'stern', 'frown', 'serious', 'disapproving', 'scowl', 'glare', 'cross',
23 | // Medium intensity (angry)
24 | 'annoyed', 'irritated', 'bothered', 'grumpy', 'frustrated', 'groan', 'disgust'
25 | ],
26 | 'surprise': ['shock', 'surprised', 'startle', 'gasp', 'wide-eyed', 'blink', 'stunned', 'amazed', 'astonished', 'aback', 'confused', 'puzzled'],
27 | 'shy': ['blush', 'embarrassed', 'shy', 'bashful', 'timid', 'stutter', 'stammer', 'fluster', 'nervous', 'anxious'],
28 | 'no': ['frowning', 'disapproval', 'skeptical', 'indifferent', 'unimpressed', 'shake head', 'deny', 'refuse', 'reject', 'doubt', 'sigh'],
29 | 'idle': ['stand', 'wait', 'default', 'calm', 'neutral']
30 | }
31 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/dragondungeonrun.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "dragondungeonrun/",
3 | "type": "large",
4 | "id": "dragondungeonrun",
5 | "title": "Dragon Dungeon Run",
6 | "content": [
7 | {
8 | "name": "event_dungeon_run_die_01",
9 | "text": "Gotta catch Guillotine!"
10 | },
11 | {
12 | "name": "event_dungeon_run_die_02",
13 | "text": "It's dark and scary in here! Save me!"
14 | },
15 | {
16 | "name": "event_dungeon_run_die_03",
17 | "text": "We need Eunhwa."
18 | },
19 | {
20 | "name": "event_dungeon_run_die_04",
21 | "text": "Art is an explosion."
22 | },
23 | {
24 | "name": "event_dungeon_run_die_05",
25 | "text": "A surge of premonition."
26 | },
27 | {
28 | "name": "event_dungeon_run_die_06",
29 | "text": "Blasting off again!"
30 | },
31 | {
32 | "name": "event_dungeon_run_die_07",
33 | "text": "Trap ahead."
34 | },
35 | {
36 | "name": "event_dungeon_run_die_08",
37 | "text": "The most powerful White Ice Dragon lets out a roar."
38 | },
39 | {
40 | "name": "event_dungeon_run_ending_01",
41 | "text": "Praise the sun."
42 | },
43 | {
44 | "name": "event_dungeon_run_ending_02",
45 | "text": "Get Over it!"
46 | },
47 | {
48 | "name": "event_dungeon_run_ending_03",
49 | "text": "The excellence of Nikkes is the excellence of courage!"
50 | },
51 | {
52 | "name": "event_dungeon_run_ending_04",
53 | "text": "Shall we go to the dungeon again?"
54 | },
55 | {
56 | "name": "event_dungeon_run_ending_05",
57 | "text": "The cart is insurance."
58 | },
59 | {
60 | "name": "event_dungeon_run_ending_06",
61 | "text": "The battle with despair."
62 | }
63 | ]
64 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/story1.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "story1/",
3 | "type": "large",
4 | "id": "story1",
5 | "title": "Chapters 0 to 9",
6 | "content": [
7 | {
8 | "name": "EventScene_Main_02_01",
9 | "text": "Great Scenery"
10 | },
11 | {
12 | "name": "EventScene_Main_02_02",
13 | "text": "Infiltration"
14 | },
15 | {
16 | "name": "EventScene_Chap_02_After_02",
17 | "text": "Syuen"
18 | },
19 | {
20 | "name": "EventScene_Chap_04_01",
21 | "text": "Euhnwa"
22 | },
23 | {
24 | "name": "EventScene_Chap_04_02",
25 | "text": "Helicopter"
26 | },
27 | {
28 | "name": "EventScene_Chap_04_03",
29 | "text": "Slightly different helicopter"
30 | },
31 | {
32 | "name": "EventScene_Chap_04_05",
33 | "text": "Yuni & Mihara"
34 | },
35 | {
36 | "name": "EventScene_Chap_06_01",
37 | "text": "Modernia"
38 | },
39 | {
40 | "name": "EventScene_Chap_06_02",
41 | "text": "Android"
42 | },
43 | {
44 | "name": "EventScene_Chap_07_01",
45 | "text": "Ludmilla & Alice"
46 | },
47 | {
48 | "name": "EventScene_Chap_07_03",
49 | "text": "Snow White"
50 | },
51 | {
52 | "name": "EventScene_Chap_08_01",
53 | "text": "Anis & Neon"
54 | },
55 | {
56 | "name": "EventScene_Chap_08_01_a",
57 | "text": "Friends"
58 | },
59 | {
60 | "name": "EventScene_Chap_08_02",
61 | "text": "Friendly Anis & Neon"
62 | },
63 | {
64 | "name": "EventScene_Chap_08_02_a",
65 | "text": "Cute"
66 | },
67 | {
68 | "name": "EventScene_Chap_09_01",
69 | "text": "Exia"
70 | },
71 | {
72 | "name": "EventScene_Chap_09_02",
73 | "text": "Dead"
74 | }
75 | ]
76 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/overzone.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "overzone/",
3 | "type": "large",
4 | "id": "overzone",
5 | "title": "Overzone",
6 | "content": [
7 | {
8 | "name": "EventScene_OverZone_02",
9 | "text": "OverZone 1"
10 | },
11 | {
12 | "name": "EventScene_OverZone_03",
13 | "text": "OverZone 2"
14 | },
15 | {
16 | "name": "EventScene_OverZone_03_1",
17 | "text": "OverZone 3"
18 | },
19 | {
20 | "name": "EventScene_OverZone_03_2",
21 | "text": "OverZone 4"
22 | },
23 |
24 | {
25 | "name": "EventScene_OverZone_04",
26 | "text": "OverZone 5"
27 | },
28 | {
29 | "name": "EventScene_OverZone_04_1",
30 | "text": "OverZone 6"
31 | },
32 | {
33 | "name": "EventScene_OverZone_05",
34 | "text": "OverZone 7"
35 | },
36 | {
37 | "name": "EventScene_OverZone_06",
38 | "text": "OverZone 8"
39 | },
40 | {
41 | "name": "EventScene_OverZone_07",
42 | "text": "OverZone 9"
43 | },
44 | {
45 | "name": "EventScene_OverZone_07_1",
46 | "text": "OverZone 10"
47 | },
48 | {
49 | "name": "EventScene_OverZone_08",
50 | "text": "OverZone 11"
51 | },
52 | {
53 | "name": "EventScene_OverZone_08_1",
54 | "text": "OverZone 12"
55 | },
56 | {
57 | "name": "EventScene_OverZone_08_2",
58 | "text": "OverZone 13"
59 | },
60 | {
61 | "name": "EventScene_OverZone_09",
62 | "text": "OverZone 14"
63 | },
64 | {
65 | "name": "EventScene_OverZone_09_1",
66 | "text": "OverZone 15"
67 | },
68 | {
69 | "name": "EventScene_OverZone_09_2",
70 | "text": "OverZone 16"
71 | },
72 | {
73 | "name": "EventScene_OverZone_10",
74 | "text": "OverZone 17"
75 | }
76 | ]
77 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/side03.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "side03/",
3 | "type": "large",
4 | "id": "side03",
5 | "title": "Mudfish",
6 | "notice": "Images are compressed. from 85mb to 5.",
7 | "content": [
8 | {
9 | "name": "EventScene_Side_03_01_1",
10 | "text": "Side Story 03-1"
11 | },
12 | {
13 | "name": "EventScene_Side_03_01_2",
14 | "text": "Side Story 03-2"
15 | },
16 | {
17 | "name": "EventScene_Side_03_01_3",
18 | "text": "Side Story 03-3"
19 | },
20 | {
21 | "name": "EventScene_Side_03_02_1",
22 | "text": "Side Story 03-4"
23 | },
24 | {
25 | "name": "EventScene_Side_03_02_2",
26 | "text": "Side Story 03-5"
27 | }, {
28 | "name": "EventScene_Side_03_02_3",
29 | "text": "Side Story 03-6"
30 | },
31 | {
32 | "name": "EventScene_Side_03_02_4",
33 | "text": "Side Story 03-7"
34 | },
35 | {
36 | "name": "EventScene_Side_03_02_5",
37 | "text": "Side Story 03-8"
38 | },
39 | {
40 | "name": "EventScene_Side_03_03_1",
41 | "text": "Side Story 03-9"
42 | },
43 | {
44 | "name": "EventScene_Side_03_03_2",
45 | "text": "Side Story 03-10"
46 | }, {
47 | "name": "EventScene_Side_03_03_3",
48 | "text": "Side Story 03-11"
49 | },
50 | {
51 | "name": "EventScene_Side_03_04_1",
52 | "text": "Side Story 03-12"
53 | },
54 | {
55 | "name": "EventScene_Side_03_04_2",
56 | "text": "Side Story 03-13"
57 | },
58 | {
59 | "name": "EventScene_Side_03_04_3",
60 | "text": "Side Story 03-14"
61 | },
62 | {
63 | "name": "EventScene_Side_03_04_4",
64 | "text": "Side Story 03-15"
65 | },
66 | {
67 | "name": "EventScene_Side_03_04_5",
68 | "text": "Side Story 03-16"
69 | }
70 | ]
71 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/story7.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "story7/",
3 | "type": "large",
4 | "id": "story7",
5 | "title": "Chapters 35 to 36",
6 | "notice": "Compressed from 80mb total to 4mb",
7 | "content": [
8 | {
9 | "name": "EventScene_Chap_35_01",
10 | "text": "Never forget uncensored Anis design from beta releases"
11 | },
12 | {
13 | "name": "EventScene_Chap_35_02",
14 | "text": "Pass"
15 | },
16 | {
17 | "name": "EventScene_Chap_35_03_01",
18 | "text": "Egg"
19 | },
20 | {
21 | "name": "EventScene_Chap_35_03_02",
22 | "text": "Levivi tummymy"
23 | },
24 | {
25 | "name": "EventScene_Chap_35_04",
26 | "text": "Heretic"
27 | },
28 | {
29 | "name": "EventScene_Chap_35_05_01",
30 | "text": "Laplace"
31 | },
32 | {
33 | "name": "EventScene_Chap_35_05_02",
34 | "text": "Laplace the Hero"
35 | },
36 | {
37 | "name": "EventScene_Chap_35_05_03",
38 | "text": "Drake guhhh :drool:"
39 | },
40 | {
41 | "name": "EventScene_Chap_35_05_04",
42 | "text": "Holed Water"
43 | },
44 | {
45 | "name": "EventScene_Chap_36_01",
46 | "text": "Smash Smash GraGre Pass Smash"
47 | },
48 | {
49 | "name": "EventScene_Chap_36_02",
50 | "text": "Why's her bubble naked but the other aren't"
51 | },
52 | {
53 | "name": "EventScene_Chap_36_03_01",
54 | "text": "Egg"
55 | },
56 | {
57 | "name": "EventScene_Chap_36_03_02",
58 | "text": "Matis"
59 | },
60 | {
61 | "name": "EventScene_Chap_36_03_03",
62 | "text": "Crystals"
63 | },
64 | {
65 | "name": "EventScene_Chap_36_03_04",
66 | "text": "Matis"
67 | },
68 | {
69 | "name": "EventScene_Chap_36_04",
70 | "text": "Levi Footsies "
71 | }
72 | ]
73 | }
--------------------------------------------------------------------------------
/src/components/common/Spine/Tools/AttachmentEditorColorSlider.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 0
5 |
13 | 255
14 |
15 |
16 |
17 |
18 |
52 |
53 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nikke-db-vue",
3 | "version": "0.0.0",
4 | "private": true,
5 | "license": "WTFPL",
6 | "scripts": {
7 | "dev": "vite",
8 | "serve": "vite --host",
9 | "build": "run-p type-check build-only",
10 | "preview": "vite preview",
11 | "test:unit": "vitest",
12 | "build-only": "vite build",
13 | "type-check": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false",
14 | "lint": "eslint . --ext .vue,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
15 | "format": "prettier --write src/"
16 | },
17 | "dependencies": {
18 | "@jacksongross/vue-tweet-embed": "^3.0.1",
19 | "@types/crypto-js": "^4.2.2",
20 | "@vicons/carbon": "^0.12.0",
21 | "@vicons/fa": "^0.12.0",
22 | "@vicons/material": "^0.12.0",
23 | "@vicons/tabler": "^0.12.0",
24 | "crypto-js": "^4.2.0",
25 | "html2canvas": "^1.4.1",
26 | "less": "^4.2.0",
27 | "marked": "^17.0.1",
28 | "naive-ui": "^2.34.4",
29 | "ndarray-pixels": "^3.1.0",
30 | "pinia": "^2.1.6",
31 | "vue": "^3.4.*",
32 | "vue-router": "^4.2.4",
33 | "vuedraggable": "^4.1.0"
34 | },
35 | "devDependencies": {
36 | "@rushstack/eslint-patch": "^1.3.2",
37 | "@tsconfig/node18": "^18.2.0",
38 | "@types/jsdom": "^21.1.1",
39 | "@types/node": "^18.17.5",
40 | "@vicons/antd": "^0.12.0",
41 | "@vitejs/plugin-vue": "^4.3.1",
42 | "@vitejs/plugin-vue-jsx": "^3.0.2",
43 | "@vue/eslint-config-prettier": "^8.0.0",
44 | "@vue/eslint-config-typescript": "^11.0.3",
45 | "@vue/test-utils": "^2.4.1",
46 | "@vue/tsconfig": "^0.4.0",
47 | "eslint": "^8.46.0",
48 | "eslint-plugin-vue": "^9.16.1",
49 | "jsdom": "^22.1.0",
50 | "npm-run-all": "^4.1.5",
51 | "prettier": "^3.0.0",
52 | "typescript": "~5.1.6",
53 | "vite": "^4.4.9",
54 | "vitest": "^0.34.2",
55 | "vue-tsc": "^1.8.8"
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/memoriesteller.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "memoriesteller/",
3 | "type": "large",
4 | "id": "memoriesteller",
5 | "title": "Memories Teller",
6 | "notice": "Compressed from 86.4mb to 5.5mb",
7 | "content": [
8 | {
9 | "name": "EventScene_memoriesteller_01",
10 | "text": "Memories Teller 1"
11 | },
12 | {
13 | "name": "EventScene_memoriesteller_02",
14 | "text": "Memories Teller 2"
15 | },
16 | {
17 | "name": "EventScene_memoriesteller_03",
18 | "text": "Memories Teller 3"
19 | },
20 | {
21 | "name": "EventScene_memoriesteller_04_01",
22 | "text": "Memories Teller 4"
23 | },
24 | {
25 | "name": "EventScene_memoriesteller_04_02",
26 | "text": "Memories Teller 5"
27 | },
28 | {
29 | "name": "EventScene_memoriesteller_04_03",
30 | "text": "Memories Teller 6"
31 | },
32 | {
33 | "name": "EventScene_memoriesteller_04_04",
34 | "text": "Memories Teller 7"
35 | },
36 | {
37 | "name": "EventScene_memoriesteller_04_05",
38 | "text": "Memories Teller 8"
39 | },
40 | {
41 | "name": "EventScene_memoriesteller_05_01",
42 | "text": "Memories Teller 9"
43 | },
44 | {
45 | "name": "EventScene_memoriesteller_05_02",
46 | "text": "Memories Teller 10"
47 | },
48 | {
49 | "name": "EventScene_memoriesteller_06",
50 | "text": "GYATDAMN GIRL"
51 | },
52 | {
53 | "name": "EventScene_memoriesteller_07",
54 | "text": "Memories Teller 12"
55 | },
56 | {
57 | "name": "EventScene_memoriesteller_08",
58 | "text": "Memories Teller 13"
59 | },
60 | {
61 | "name": "EventScene_memoriesteller_09_5",
62 | "text": "Memories Teller 14"
63 | },
64 | {
65 | "name": "EventScene_memoriesteller_09_5_1",
66 | "text": "Memories Teller 15"
67 | }
68 | ]
69 | }
--------------------------------------------------------------------------------
/src/utils/LayerEditorUtils.ts:
--------------------------------------------------------------------------------
1 | import type { AttachmentItemColorInterface, AttachmentInterface } from '@/utils/interfaces/live2d'
2 |
3 | export interface layerEditorImportableInterface {
4 | author: string,
5 | description: string,
6 | date: number,
7 | cid: string,
8 | pose: 'fb' | 'cover' | 'aim' | 'temp',
9 | exportVersion: number
10 | layers: {
11 | [key: string]: AttachmentItemColorInterface | string
12 | }[]
13 |
14 |
15 | }
16 |
17 | export const getExportableContent = (cid: string, pose: 'fb' | 'cover' | 'aim' | 'temp', layers: AttachmentInterface[]) => {
18 | const content: layerEditorImportableInterface = {
19 | author: 'Default',
20 | description: 'Layer edition of a character on Nikke-DB. Do not modify a single field besides author and description.',
21 | date: new Date().getTime(),
22 | cid: cid,
23 | pose: pose,
24 | exportVersion: 1,
25 | layers: []
26 | }
27 |
28 | layers.forEach((l: AttachmentInterface) => {
29 | if (l === undefined) content.layers.push({ 'undefined' : 'undefined' })
30 | else {
31 | const keys = Object.keys(l)
32 | keys.forEach((k) => {
33 | content.layers.push({
34 | [k]: { ...l[k].color }
35 | })
36 | })
37 | }
38 | })
39 |
40 | return content
41 | }
42 |
43 | export const getImportedContentV1 = (file: File) => {
44 | return new Promise((resolve) => {
45 | const fr = new FileReader()
46 | fr.readAsText(file)
47 | fr.onload = () => {
48 | resolve(JSON.parse(fr.result as string))
49 | }
50 | })
51 | }
52 |
53 | export const getKeyOfContentByString = (content: layerEditorImportableInterface, key: string) => {
54 |
55 | const foundLayer = content.layers.find((l) => {
56 | return Object.keys(l)[0] === key
57 | })
58 |
59 | if (foundLayer !== undefined) {
60 | return foundLayer[key] as AttachmentItemColorInterface
61 | }
62 | }
--------------------------------------------------------------------------------
/src/components/common/Tools/Template.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{
5 | props.title
6 | }}
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
48 |
49 |
90 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/coinsinrush.json:
--------------------------------------------------------------------------------
1 | {"path":"coinsinrush/","type":"large","id":"coinsinrush","title":"Coins In Rush","notice":"Compressed from 71 to 8.75mb","content":[{"name":"EventScene_coinsinrush_01_1.webp","text":"Coins In Rush 1"},{"name":"EventScene_coinsinrush_01_2.webp","text":"Coins In Rush 2"},{"name":"EventScene_coinsinrush_02.webp","text":"Coins In Rush 3"},{"name":"EventScene_coinsinrush_03.webp","text":"Coins In Rush 4"},{"name":"EventScene_coinsinrush_04_1.webp","text":"Coins In Rush 5"},{"name":"EventScene_coinsinrush_04_2.webp","text":"Coins In Rush 6"},{"name":"EventScene_coinsinrush_04_3.webp","text":"Coins In Rush 7"},{"name":"EventScene_coinsinrush_05.webp","text":"Coins In Rush 8"},{"name":"EventScene_coinsinrush_06_1.webp","text":"Coins In Rush 9"},{"name":"EventScene_coinsinrush_06_2.webp","text":"Coins In Rush 10"},{"name":"coinsinrush_opening_char.png","text":"Coins In Rush 11"},{"name":"coinsinrush_opening_char_01.png","text":"Coins In Rush 12"},{"name":"coinsinrush_opening_char_02.png","text":"Coins In Rush 13"},{"name":"coinsinrush_opening_char_03.png","text":"Coins In Rush 14"},{"name":"coinsinrush_opening_char_04.png","text":"Coins In Rush 15"},{"name":"coinsinrush_opening_char_05.png","text":"Coins In Rush 16"},{"name":"coinsinrush_opening_char_06.png","text":"Coins In Rush 17"},{"name":"coinsinrush_opening_char_07.png","text":"Coins In Rush 18"},{"name":"coinsinrush_opening_char_09.png","text":"Coins In Rush 19"},{"name":"coinsinrush_part1_char_01.png","text":"Coins In Rush 20"},{"name":"coinsinrush_part1_char_02.png","text":"Coins In Rush 21"},{"name":"coinsinrush_part2_char_02_low.png","text":"Coins In Rush 22"},{"name":"coinsinrush_part2_char_03_low.png","text":"Coins In Rush 23"},{"name":"coinsinrush_part2_char_04_low.png","text":"Coins In Rush 24"},{"name":"coinsinrush_part2_full_char_01.png","text":"Coins In Rush 25"},{"name":"coinsinrush_part2_full_char_02.png","text":"Coins In Rush 26"},{"name":"coinsinrush_part2_full_char_03.png","text":"Coins In Rush 27"},{"name":"coinsinrush_part2_list_nor_char.png","text":"Coins In Rush 28"}]}
--------------------------------------------------------------------------------
/src/utils/json/Gallery/secondquest.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "secondquest/",
3 | "type": "large",
4 | "id": "secondquest",
5 | "title": "Second Quest",
6 | "notice": "Full sized images. Maybe not in order.",
7 | "content": [
8 | {
9 | "name": "EventScene_ce005_01_1",
10 | "text": "Second Quest 1"
11 | },
12 | {
13 | "name": "EventScene_ce005_01_2",
14 | "text": "Second Quest 2"
15 | },
16 | {
17 | "name": "EventScene_ce005_01_3",
18 | "text": "Second Quest 3"
19 | },
20 | {
21 | "name": "EventScene_ce005_01_4",
22 | "text": "Second Quest 4"
23 | },
24 | {
25 | "name": "EventScene_ce005_01_5",
26 | "text": "Second Quest 5"
27 | },
28 | {
29 | "name": "EventScene_ce005_01_6",
30 | "text": "Second Quest 6"
31 | },
32 | {
33 | "name": "EventScene_ce005_01_7",
34 | "text": "Second Quest 7"
35 | },
36 | {
37 | "name": "EventScene_ce005_02_1",
38 | "text": "Second Quest 8"
39 | },
40 | {
41 | "name": "EventScene_ce005_02_2",
42 | "text": "Second Quest 9"
43 | },
44 | {
45 | "name": "EventScene_ce005_02_3",
46 | "text": "Second Quest 10"
47 | },
48 | {
49 | "name": "EventScene_ce005_03",
50 | "text": "Second Quest 11"
51 | },
52 | {
53 | "name": "EventScene_ce005_04_1",
54 | "text": "Second Quest 12"
55 | },
56 | {
57 | "name": "EventScene_ce005_04_2",
58 | "text": "Second Quest 13"
59 | },
60 | {
61 | "name": "EventScene_ce005_06_1",
62 | "text": "Second Quest 14"
63 | },
64 | {
65 | "name": "EventScene_ce005_06_2",
66 | "text": "Second Quest 15"
67 | },
68 | {
69 | "name": "EventScene_ce005_06_3",
70 | "text": "Second Quest 16"
71 | },
72 | {
73 | "name": "EventScene_ce005_06_4",
74 | "text": "Second Quest 17"
75 | },
76 | {
77 | "name": "EventScene_ce005_06_5",
78 | "text": "Second Quest 18"
79 | },
80 | {
81 | "name": "EventScene_ce005_06_6",
82 | "text": "Second Quest 19"
83 | }
84 | ]
85 | }
--------------------------------------------------------------------------------
/src/components/common/Tierlistmaker/ImportFromText.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Import from Txt
5 |
6 |
7 |
19 |
20 |
21 | Tier List name
22 |
27 |
28 |
29 |
30 |
31 |
32 | If the website breaks because you imported a falsy text, the default tier list will be generated
33 |
34 |
35 |
36 |
37 |
38 | Confirming the import will instantly override the current tier list you have made.
39 | Be sure to export the current tier list before importing another one.
40 |
41 |
42 |
43 |
44 |
45 |
68 |
69 |
--------------------------------------------------------------------------------
/src/components/views/notices/HighAndLowQualityAssets.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | I will use this space to explain what exactly is the purpose of the High quality vs Low quality asset tool.
4 | I am not sure how to begin this type of explanations so let's get straight to showing the differences:
5 |
6 |
7 |
8 | High Quality Asset
9 |
10 |
11 |
12 |
13 | Low Quality Asset
14 |
15 |
16 |
17 |
18 | As you can see the high quality image offers a much clearer picture when you are zooming a lot, and this was the way it used to be when the website released around septembre 2023.
19 | However this method breaks the website for certain monitors that have resolutions of 2k or more, where the asset will start being cropped out.
20 | Because this issue became more and more recurrent in my feedback pipeline, I decided to go toward a permanent low quality mode that'd fix the issue for everyone.
21 | I though people that wanted high quality zoomed frames would use the screenshot feature, but I often saw cropped screenshots for memes quite pixelated which makes me think they did it raw through the website.
22 | I hope this toggle will be able to handle every cases, offer a high quality resolution for 1080p or lower monitors, and people that have their asset cropped would use the low quality asset.
23 | See below for an example of a cropped asset on 2k+ monitors.
24 |
25 |
26 |
27 | 4k monitor with a cropped asset in "High Quality Mode". The issue is fixed in "Low Quality Mode"
28 |
29 |
30 |
31 |
32 |
38 |
39 |
--------------------------------------------------------------------------------
/src/components/common/Spine/Tools/AttachmentEditorListing.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | updateAttachments(key, i)"
12 | @triggerpreview="(key: string, i: number) => triggerPreview(key, i)"
13 | @stoppreview="(key: string, i: number) => stopPreview(key, i)"
14 | :searchQuery="props.searchQuery"
15 | :colors="props.colors"
16 | />
17 |
18 |
19 |
20 |
21 |
22 |
23 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/src/utils/enum/globalParams.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | enum globalParams {
3 | GITHUB = 'https://github.com/Nikke-db/nikke-db-vue',
4 | LOCALHOST = 'http://localhost:5500/',
5 | NIKKE_DB = 'https://nikke-db-legacy.pages.dev/',
6 | // NIKKE_DB = LOCALHOST,
7 | PATH_L2D = NIKKE_DB + 'l2d/',
8 | PATH_L2D_AIM = 'aim/',
9 | PATH_L2D_COVER = 'cover/',
10 | PATH_SPRITE_1 = 'images/sprite/si_',
11 | PATH_SPRITE_2 = '_00_s.png',
12 | BUILD_PATH = 'chibi/Build/',
13 | STREAMING_ASSETS_PATH = 'chibi/StreamingAssets',
14 | GALLERY_PATH = 'images/gallery/',
15 | CHIBI_BUILD = NIKKE_DB + BUILD_PATH,
16 | STREAMING_ASSETS = NIKKE_DB + STREAMING_ASSETS_PATH,
17 | GALLERY = NIKKE_DB + GALLERY_PATH,
18 | LOCALHOST_CHIBI_BUILD = LOCALHOST + BUILD_PATH,
19 | LOCALHOST_STREAMING_ASSETS = LOCALHOST + STREAMING_ASSETS_PATH,
20 | CRYPTOJS_AES_KEY = 'Nikke DB AES Key' //never change this or it'll break tierlist save slots
21 | }
22 |
23 | enum messagesEnum {
24 | MESSAGE_ERROR = 'Something went wrong, if it is unexpected contact me on discord or GitHub',
25 | MESSAGE_ASSET_LOADED = 'Assets loaded',
26 | MESSAGE_LOCALSTORAGE_SAVED = 'Data saved to the local storage',
27 | MESSAGE_CANCELLED = 'Action Cancelled',
28 | MESSAGE_CANNOT_SAVE_EMPTY = 'Cannot save an empty value',
29 | MESSAGE_WRONG_FORM_DATA = 'Something is wrong with the form data you\'ve entered',
30 | MESSAGE_PROCESSING = 'Processing',
31 | MESSAGE_UNLOAD = "Unloaded older asset successfully",
32 | MESSAGE_WRONG_FILE_FORMAT = "Wrong file format",
33 | MESSAGE_UI_SHOWBACK = "Press the \"Enter\" key to show the UI back",
34 | MESSAGE_TIERLIST_DELETE_ROW = "Row deleted, characters that were in that row have been transferred to the bench",
35 | MESSAGE_TIERLIST_UPDATED_ROW = "Row updated",
36 | MESSAGE_TIERLIST_SCREENSHOT_CONVERT2CANVAS = "Converting HTML data to a canvas object...",
37 | MESSAGE_TIERLIST_SCREENSHOT_CANVAS2PNG = "Downloading a canvas to a PNG file",
38 | MESSAGE_EXPORT_ANIMATION = "Replaying and exporting animation...",
39 | MESSAGE_EXPORT_ANIMATION_SUCCESS = "Animation exported successfully",
40 | MESSAGE_EXPORT_ANIMATION_FAILED = "Animation export failed",
41 | }
42 |
43 | enum theme {
44 | BACKGROUND_COLOR = '#2f353a',
45 | BACKGROUND_COLOR_2 = '#212529',
46 | NAIVE_GREEN = '#63e2b7',
47 | GREY = 'rgb(180, 175, 175)'
48 | }
49 |
50 | export { globalParams, messagesEnum, theme }
51 |
--------------------------------------------------------------------------------
/src/components/common/Header/HeaderPC.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | View the source code on GitHub
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
23 | {{ route.text }}
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
49 |
50 |
96 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/boomtheghost.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "boomtheghost/",
3 | "type": "large",
4 | "id": "boomtheghost",
5 | "title": "Boom the Ghost",
6 | "notice": "Compressed from 60mb to 6mb",
7 | "content": [
8 | {
9 | "name": "EventScene_boomtheghost_01_1",
10 | "text": "Boom the Ghost 1"
11 | },
12 | {
13 | "name": "EventScene_boomtheghost_01_2",
14 | "text": "Boom the Ghost 2"
15 | },
16 | {
17 | "name": "EventScene_boomtheghost_01_3",
18 | "text": "Boom the Ghost 3"
19 | },
20 | {
21 | "name": "EventScene_boomtheghost_01_4",
22 | "text": "Boom the Ghost 4"
23 | },
24 |
25 | {
26 | "name": "EventScene_boomtheghost_02_1",
27 | "text": "Boom the Ghost 5"
28 | },
29 | {
30 | "name": "EventScene_boomtheghost_02_2",
31 | "text": "Boom the Ghost 6"
32 | },
33 | {
34 | "name": "EventScene_boomtheghost_03_1",
35 | "text": "Boom the Ghost 7"
36 | },
37 | {
38 | "name": "EventScene_boomtheghost_03_2",
39 | "text": "Boom the Ghost 8"
40 | },
41 | {
42 | "name": "EventScene_boomtheghost_04",
43 | "text": "Boom the Ghost 9"
44 | },
45 | {
46 | "name": "EventScene_boomtheghost_05_1",
47 | "text": "Boom the Ghost 10"
48 | },
49 | {
50 | "name": "EventScene_boomtheghost_05_2",
51 | "text": "Boom the Ghost 11"
52 | },
53 | {
54 | "name": "EventScene_boomtheghost_06_1",
55 | "text": "Boom the Ghost 12"
56 | },
57 | {
58 | "name": "EventScene_boomtheghost_06_2",
59 | "text": "Boom the Ghost 13"
60 | },
61 | {
62 | "name": "EventScene_boomtheghost_07",
63 | "text": "Boom the Ghost 14"
64 | },
65 | {
66 | "name": "EventScene_boomtheghost_08",
67 | "text": "Boom the Ghost 15"
68 | },
69 | {
70 | "name": "boomtheghost_main_part2_ex",
71 | "text": "Boom the Ghost 16"
72 | },
73 | {
74 | "name": "boomtheghost_opening_fullshot",
75 | "text": "Boom the Ghost 17"
76 | },
77 | {
78 | "name": "boomtheghost_opening_char_elegg",
79 | "text": "Boom the Ghost 18"
80 | },
81 | {
82 | "name": "boomtheghost_attendance_chr",
83 | "text": "Boom the Ghost 19"
84 | },
85 | {
86 | "name": "boomtheghost_main_part1_ghost_bg_01",
87 | "text": "Boom the Ghost 20"
88 | }
89 | ]
90 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/footstepwalkrun.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "footstepwalkrun/",
3 | "type": "large",
4 | "id": "footstepwalkrun",
5 | "title": "Footstep Walk Run",
6 | "notice": "Original was 97mb. blabla now 5mb. blabla maybe not in order.",
7 | "content": [
8 | {
9 | "name": "EventScene_footstepwalkrun_01",
10 | "text": "Footstep Walk Run 1"
11 | },
12 | {
13 | "name": "EventScene_footstepwalkrun_02_1",
14 | "text": "Footstep Walk Run 2"
15 | },
16 | {
17 | "name": "EventScene_footstepwalkrun_02_2",
18 | "text": "Footstep Walk Run 3"
19 | },
20 | {
21 | "name": "EventScene_footstepwalkrun_02_3",
22 | "text": "Footstep Walk Run 4"
23 | },
24 | {
25 | "name": "EventScene_footstepwalkrun_02_4",
26 | "text": "Footstep Walk Run 5"
27 | },
28 | {
29 | "name": "EventScene_footstepwalkrun_02_5",
30 | "text": "Footstep Walk Run 6"
31 | },
32 | {
33 | "name": "EventScene_footstepwalkrun_03",
34 | "text": "Footstep Walk Run 7"
35 | },
36 | {
37 | "name": "EventScene_footstepwalkrun_04_1",
38 | "text": "Footstep Walk Run 8"
39 | },
40 | {
41 | "name": "EventScene_footstepwalkrun_04_2",
42 | "text": "Footstep Walk Run 9"
43 | },
44 | {
45 | "name": "EventScene_footstepwalkrun_04_3",
46 | "text": "Footstep Walk Run 10"
47 | },
48 | {
49 | "name": "EventScene_footstepwalkrun_04_4",
50 | "text": "Footstep Walk Run 11"
51 | },
52 | {
53 | "name": "EventScene_footstepwalkrun_05",
54 | "text": "Footstep Walk Run 12"
55 | },
56 | {
57 | "name": "EventScene_footstepwalkrun_06_1",
58 | "text": "Footstep Walk Run 13"
59 | },
60 | {
61 | "name": "EventScene_footstepwalkrun_06_2",
62 | "text": "Footstep Walk Run 14"
63 | },
64 | {
65 | "name": "footstepwalkrun_part2_bg_list_hard",
66 | "text": "Footstep Walk Run 15"
67 | },
68 | {
69 | "name": "footstepwalkrun_part1_main_char_03",
70 | "text": "Footstep Walk Run 16"
71 | },
72 | {
73 | "name": "footstepwalkrun_part1_main_char_02",
74 | "text": "Footstep Walk Run 17"
75 | },
76 | {
77 | "name": "footstepwalkrun_part1_main_char_01",
78 | "text": "Footstep Walk Run 18"
79 | },
80 | {
81 | "name": "footstepwalkrun_part2_main_cha",
82 | "text": "Footstep Walk Run 19"
83 | }
84 | ]
85 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/icedragonsaga.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "icedragonsaga/",
3 | "type": "large",
4 | "id": "icedragonsaga",
5 | "title": "Ice Dragon Saga",
6 | "notice": "The original in-game raw images totals over 114mb. Compressed to 6mb. Probably not in order.",
7 | "content": [
8 | {
9 | "name": "EventScene_icedragonsaga_01",
10 | "text": "Ice Dragon Saga 1"
11 | },
12 | {
13 | "name": "EventScene_icedragonsaga_02_1",
14 | "text": "Ice Dragon Saga 2"
15 | },
16 | {
17 | "name": "EventScene_icedragonsaga_02_2",
18 | "text": "Ice Dragon Saga 3"
19 | },
20 | {
21 | "name": "EventScene_icedragonsaga_03",
22 | "text": "Ice Dragon Saga 4"
23 | },
24 | {
25 | "name": "EventScene_icedragonsaga_04",
26 | "text": "Ice Dragon Saga 5"
27 | },
28 | {
29 | "name": "EventScene_icedragonsaga_05_1",
30 | "text": "Ice Dragon Saga 6"
31 | },
32 | {
33 | "name": "EventScene_icedragonsaga_05_2",
34 | "text": "Ice Dragon Saga 7"
35 | },
36 | {
37 | "name": "EventScene_icedragonsaga_05_3",
38 | "text": "Ice Dragon Saga 8"
39 | },
40 | {
41 | "name": "EventScene_icedragonsaga_06",
42 | "text": "Ice Dragon Saga 9"
43 | },
44 | {
45 | "name": "EventScene_icedragonsaga_07",
46 | "text": "Ice Dragon Saga 10"
47 | },
48 | {
49 | "name": "EventScene_icedragonsaga_08_1",
50 | "text": "Ice Dragon Saga 11"
51 | },
52 | {
53 | "name": "EventScene_icedragonsaga_08_2",
54 | "text": "Ice Dragon Saga 12"
55 | },
56 | {
57 | "name": "EventScene_icedragonsaga_09_1",
58 | "text": "Ice Dragon Saga 13"
59 | },
60 | {
61 | "name": "EventScene_icedragonsaga_09_2",
62 | "text": "Ice Dragon Saga 14"
63 | },
64 | {
65 | "name": "EventScene_icedragonsaga_10_1",
66 | "text": "Ice Dragon Saga 15"
67 | },
68 | {
69 | "name": "EventScene_icedragonsaga_10_2",
70 | "text": "Ice Dragon Saga 16"
71 | },
72 | {
73 | "name": "EventScene_icedragonsaga_10_3",
74 | "text": "Ice Dragon Saga 17"
75 | },
76 | {
77 | "name": "EventScene_icedragonsaga_11",
78 | "text": "Ice Dragon Saga 18"
79 | },
80 | {
81 | "name": "EventTitle_icedragonsaga_01",
82 | "text": "Ice Dragon Saga 19"
83 | },
84 | {
85 | "name": "EventTitle_icedragonsaga_03",
86 | "text": "Ice Dragon Saga 20"
87 | }
88 | ]
89 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/redash.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "redash/",
3 | "type": "large",
4 | "id": "redash",
5 | "title": "RED ASH",
6 | "content": [
7 | {
8 | "name": "EventScene_redash_10_1",
9 | "text": "RED ASH 1"
10 | },
11 | {
12 | "name": "EventScene_redash_10_2",
13 | "text": "RED ASH 2"
14 | },
15 | {
16 | "name": "EventScene_redash_01_02_f",
17 | "text": "RED ASH 3"
18 | },
19 | {
20 | "name": "EventScene_redash_01_01_f",
21 | "text": "RED ASH 4"
22 | },
23 | {
24 | "name": "EventScene_redash_01_03_f",
25 | "text": "RED ASH 5"
26 | },
27 | {
28 | "name": "EventScene_redash_01_04_f",
29 | "text": "RED ASH 6"
30 | },
31 | {
32 | "name": "EventScene_redash_12_1",
33 | "text": "RED ASH 7"
34 | },
35 | {
36 | "name": "EventScene_redash_12_2",
37 | "text": "RED ASH 8"
38 | },
39 | {
40 | "name": "EventScene_redash_13",
41 | "text": "RED ASH 9"
42 | },
43 | {
44 | "name": "EventScene_redash_09_3",
45 | "text": "RED ASH 10"
46 | },
47 | {
48 | "name": "EventScene_redash_09_1",
49 | "text": "RED ASH 11"
50 | },
51 | {
52 | "name": "EventScene_redash_09_2",
53 | "text": "RED ASH 12"
54 | },
55 | {
56 | "name": "EventScene_redash_02_1",
57 | "text": "RED ASH 13"
58 | },
59 | {
60 | "name": "EventScene_redash_02_2",
61 | "text": "RED ASH 14"
62 | },
63 | {
64 | "name": "EventScene_redash_03_1",
65 | "text": "RED ASH 15"
66 | },
67 | {
68 | "name": "EventScene_redash_03_2",
69 | "text": "RED ASH 16"
70 | },
71 | {
72 | "name": "EventScene_redash_03_3",
73 | "text": "RED ASH 17"
74 | },
75 | {
76 | "name": "EventScene_redash_04_1",
77 | "text": "RED ASH 18"
78 | },
79 | {
80 | "name": "EventScene_redash_04_2",
81 | "text": "RED ASH 19"
82 | },
83 | {
84 | "name": "EventScene_redash_04_3",
85 | "text": "RED ASH 20"
86 | },
87 | {
88 | "name": "EventScene_redash_06",
89 | "text": "RED ASH 21"
90 | },
91 | {
92 | "name": "EventScene_redash_07",
93 | "text": "RED ASH 22"
94 | },
95 | {
96 | "name": "EventTitle_redash_t2",
97 | "text": "RED ASH 23"
98 | },
99 | {
100 | "name": "EventScene_redash_08",
101 | "text": "RED ASH 24"
102 | }
103 | ]
104 | }
--------------------------------------------------------------------------------
/src/components/common/Header/HeaderMobile.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
15 |
16 |
17 |
18 |
24 |
25 | Navigation
26 |
27 |
28 |
29 | Nikke-DB by Koshirei,
30 | Credits
31 | Visit the source code on GitHub
34 |
35 |
36 |
37 |
44 | {{ route.text }}
45 |
46 |
47 |
48 |
49 |
50 |
51 |
76 |
77 |
108 |
--------------------------------------------------------------------------------
/src/router/index.ts:
--------------------------------------------------------------------------------
1 | import { createRouter, createWebHistory } from 'vue-router'
2 | import Index from '@/components/views/Index.vue'
3 | import L2D from '@/components/views/L2D.vue'
4 | import Credits from '@/components/views/Credits.vue'
5 | import Tools from '@/components/views/Tools.vue'
6 | import Chibi from '@/components/views/Chibi.vue'
7 | import Gallery from '@/components/views/Gallery.vue'
8 | import StoryGenerator from '@/components/views/StoryGenerator.vue'
9 | import TierListMaker from '@/components/views/Tierlistmaker.vue'
10 | import HighAndLowQualityAssets from '@/components/views/notices/HighAndLowQualityAssets.vue'
11 | import AttachmentEditor from '@/components/views/notices/AttachmentEditor.vue'
12 |
13 | const router = createRouter({
14 | history: createWebHistory(import.meta.env.BASE_URL),
15 | routes: [
16 | {
17 | path: '/',
18 | name: 'home',
19 | component: Index
20 | },
21 | {
22 | path: '/v',
23 | redirect: {
24 | path: '/visualiser'
25 | }
26 | },
27 | {
28 | path: '/v_m',
29 | redirect: {
30 | path: '/visualiser'
31 | }
32 | },
33 | {
34 | path: '/visualiser',
35 | name: 'visualiser',
36 | component: L2D
37 | },
38 | {
39 | path: '/credits',
40 | name: 'credits',
41 | component: Credits
42 | },
43 | {
44 | path: '/t',
45 | redirect: {
46 | path: '/tools'
47 | }
48 | },
49 | {
50 | path: '/tools',
51 | name: 'tools',
52 | component: Tools
53 | },
54 | {
55 | path: '/:pathMatch(.*)*',
56 | name: 'any',
57 | component: Index
58 | },
59 | {
60 | path: '/chibi',
61 | name: 'chibi',
62 | component: Chibi
63 | },
64 | {
65 | path: '/gallery',
66 | name: 'gallery',
67 | component: Gallery
68 | },
69 | {
70 | path: '/story-gen',
71 | name: 'story-gen',
72 | component: StoryGenerator
73 | },
74 | // {
75 | // path: '/tierlistmaker',
76 | // name: 'tierlistmaker',
77 | // component: TierListMaker
78 | // },
79 | {
80 | path: '/notice/HQvqLQAssets',
81 | name: 'HQvqLQAssets',
82 | component: HighAndLowQualityAssets
83 | },
84 | {
85 | path: '/notice/layerEditor',
86 | name: 'layerEditor',
87 | component: AttachmentEditor
88 | }
89 | // {
90 | // path: '/about',
91 | // name: 'about',
92 | // route level code-splitting
93 | // this generates a separate chunk (About.[hash].js) for this route
94 | // which is lazy-loaded when the route is visited.
95 | // component: () => import('../views/AboutView.vue')
96 | // }
97 | ],
98 | scrollBehavior() {
99 | return { top: 0 }
100 | }
101 | })
102 |
103 | export default router
104 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/snowfalloasis.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "snowfalloasis/",
3 | "type": "large",
4 | "id": "snowfalloasis",
5 | "title": "Snow Fall Oasis",
6 | "content": [
7 | {
8 | "name": "EventTitle_snowfalloasis_02",
9 | "text": "Snow Fall Oasis"
10 | },
11 | {
12 | "name": "EventScene_snowfalloasis_04_1",
13 | "text": "Legend of the Bridge: Out 1"
14 | },
15 | {
16 | "name": "EventScene_snowfalloasis_04_2",
17 | "text": "Legend of the Bridge: Out 2"
18 | },
19 | {
20 | "name": "EventScene_snowfalloasis_04_3",
21 | "text": "Legend of the Bridge: In"
22 | },
23 | {
24 | "name": "EventScene_snowfalloasis_05_1",
25 | "text": "Legend of the Waterfall: Out"
26 | },
27 | {
28 | "name": "EventScene_snowfalloasis_05_2",
29 | "text": "Legend of the Waterfall: In"
30 | },
31 | {
32 | "name": "EventScene_snowfalloasis_06_1",
33 | "text": "Legend of the Walking Trail: Out"
34 | },
35 | {
36 | "name": "EventScene_snowfalloasis_06_2",
37 | "text": "Legend of the Walking Trail: In"
38 | },
39 | {
40 | "name": "EventScene_snowfalloasis_01_1",
41 | "text": "Legend of the Hot Spring: Out"
42 | },
43 | {
44 | "name": "EventScene_snowfalloasis_01_2",
45 | "text": "Legend of the Hot Spring: In"
46 | },
47 | {
48 | "name": "EventScene_snowfalloasis_09",
49 | "text": "The Menu"
50 | },
51 | {
52 | "name": "EventScene_snowfalloasis_10",
53 | "text": "Fireworks"
54 | },
55 | {
56 | "name": "EventScene_snowfalloasis_11",
57 | "text": "Snowfield Festival"
58 | },
59 | {
60 | "name": "EventScene_snowfalloasis_03_1",
61 | "text": "Legend of the Dormitory: Out"
62 | },
63 | {
64 | "name": "EventScene_snowfalloasis_03_2",
65 | "text": "Legend of the Dormitory: In"
66 | },
67 | {
68 | "name": "EventScene_snowfalloasis_12",
69 | "text": "Lucky Hot Spring"
70 | },
71 | {
72 | "name": "EventScene_snowfalloasis_13",
73 | "text": "Snowfield Special Date"
74 | },
75 | {
76 | "name": "EventScene_snowfalloasis_14",
77 | "text": "Farewell Party"
78 | },
79 | {
80 | "name": "EventScene_snowfalloasis_02_1",
81 | "text": "Legend of the Bamboo Forest: Out"
82 | },
83 | {
84 | "name": "EventScene_snowfalloasis_02_3",
85 | "text": "Legend of the Bamboo Forest: In 1"
86 | },
87 | {
88 | "name": "EventScene_snowfalloasis_02_2",
89 | "text": "Legend of the Bamboo Forest: In 2"
90 | },
91 | {
92 | "name": "EventScene_snowfalloasis_07",
93 | "text": "The Last Legend: Out"
94 | },
95 | {
96 | "name": "EventScene_snowfalloasis_08",
97 | "text": "The Last Legend: In"
98 | }
99 | ]
100 | }
--------------------------------------------------------------------------------
/src/components/common/Spine/Tools/AttachmentEditorListItem.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
12 |
13 |
14 | {{ props.item.name}}
15 |
16 |
17 |
18 |
19 |
92 |
93 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/story10.json:
--------------------------------------------------------------------------------
1 | {"path":"story10/","type":"large","id":"story10","title":"Chapter 41 to 42","notice":"Compressed from 240mb ( for some reason ) to 22mb","content":[{"name":"EventScene_Chap_41_01.webp","text":"Chapter 41 to 42 1"},{"name":"EventScene_Chap_41_02_1.webp","text":"Chapter 41 to 42 2"},{"name":"EventScene_Chap_41_02_2.webp","text":"Chapter 41 to 42 3"},{"name":"EventScene_Chap_41_03.webp","text":"Chapter 41 to 42 4"},{"name":"EventScene_Chap_41_04_1.webp","text":"Chapter 41 to 42 5"},{"name":"EventScene_Chap_41_04_2.webp","text":"Chapter 41 to 42 6"},{"name":"EventScene_Chap_41_04_3.webp","text":"Chapter 41 to 42 7"},{"name":"EventScene_Chap_41_05.webp","text":"Chapter 41 to 42 8"},{"name":"EventScene_Chap_41_06.webp","text":"Chapter 41 to 42 9"},{"name":"EventScene_Chap_41_07.webp","text":"Chapter 41 to 42 10"},{"name":"EventScene_Chap_41_08_1.webp","text":"Chapter 41 to 42 11"},{"name":"EventScene_Chap_41_08_2.webp","text":"Chapter 41 to 42 12"},{"name":"EventScene_Chap_41_08_3.webp","text":"Chapter 41 to 42 13"},{"name":"EventScene_Chap_41_09_1.webp","text":"Chapter 41 to 42 14"},{"name":"EventScene_Chap_41_09_2.webp","text":"Chapter 41 to 42 15"},{"name":"EventScene_Chap_41_09_3.webp","text":"Chapter 41 to 42 16"},{"name":"EventScene_Chap_42_01_1.webp","text":"Chapter 41 to 42 17"},{"name":"EventScene_Chap_42_01_2.webp","text":"Chapter 41 to 42 18"},{"name":"EventScene_Chap_42_02_1.webp","text":"Chapter 41 to 42 19"},{"name":"EventScene_Chap_42_02_2.webp","text":"Chapter 41 to 42 20"},{"name":"EventScene_Chap_42_02_3.webp","text":"Chapter 41 to 42 21"},{"name":"EventScene_Chap_42_03_1.webp","text":"Chapter 41 to 42 22"},{"name":"EventScene_Chap_42_03_2.webp","text":"Chapter 41 to 42 23"},{"name":"EventScene_Chap_42_04_1.webp","text":"Chapter 41 to 42 24"},{"name":"EventScene_Chap_42_04_2.webp","text":"Chapter 41 to 42 25"},{"name":"EventScene_Chap_42_04_3.webp","text":"Chapter 41 to 42 26"},{"name":"EventScene_Chap_42_04_4.webp","text":"Chapter 41 to 42 27"},{"name":"EventScene_Chap_42_05_1.webp","text":"Chapter 41 to 42 28"},{"name":"EventScene_Chap_42_05_2.webp","text":"Chapter 41 to 42 29"},{"name":"EventScene_Chap_42_05_3.webp","text":"Chapter 41 to 42 30"},{"name":"EventScene_Chap_42_06.webp","text":"Chapter 41 to 42 31"},{"name":"EventScene_Chap_42_07_1.webp","text":"Chapter 41 to 42 32"},{"name":"EventScene_Chap_42_07_2.webp","text":"Chapter 41 to 42 33"},{"name":"EventScene_Chap_42_07_3.webp","text":"Chapter 41 to 42 34"},{"name":"EventScene_Chap_42_08_1.webp","text":"Chapter 41 to 42 35"},{"name":"EventScene_Chap_42_08_2.webp","text":"Chapter 41 to 42 36"},{"name":"EventScene_Chap_42_09.webp","text":"Chapter 41 to 42 37"},{"name":"EventScene_Chap_42_10.webp","text":"Chapter 41 to 42 38"},{"name":"EventScene_Chap_42_11.webp","text":"Chapter 41 to 42 39"},{"name":"EventScene_Chap_42_11_1.webp","text":"Chapter 41 to 42 40"},{"name":"EventScene_Chap_42_11_2.webp","text":"Chapter 41 to 42 41"},{"name":"EventScene_Chap_42_12_1.webp","text":"Chapter 41 to 42 42"},{"name":"EventScene_Chap_42_12_2.webp","text":"Chapter 41 to 42 43"},{"name":"EventScene_Chap_42_12_3.webp","text":"Chapter 41 to 42 44"}]}
--------------------------------------------------------------------------------
/src/components/common/Spine/Tools/ChangeScreenshotSize.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Screenshot Options
9 |
10 |
11 |
12 |
25 |
26 | Screenshots are a square, chose the dimension wanted. Default dimension
27 | is 3000.
28 | Value will be saved to your local storage
29 |
30 |
38 | pixels
39 |
40 |
41 |
42 |
43 |
44 |
45 |
90 |
91 |
102 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/lastkingdom.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "lastkingdom/",
3 | "type": "large",
4 | "id": "lastkingdom",
5 | "title": "Last Kingdom",
6 | "content": [
7 | {
8 | "name": "EventScene_lastkingdom_01_1",
9 | "text": "Last Kingdom 1"
10 | },
11 | {
12 | "name": "EventScene_lastkingdom_01_2",
13 | "text": "Last Kingdom 2"
14 | },
15 | {
16 | "name": "EventScene_lastkingdom_01_3",
17 | "text": "Last Kingdom 3"
18 | },
19 | {
20 | "name": "EventScene_lastkingdom_02",
21 | "text": "Last Kingdom 4"
22 | },
23 | {
24 | "name": "EventScene_lastkingdom_03",
25 | "text": "Last Kingdom 5"
26 | },
27 | {
28 | "name": "EventScene_lastkingdom_04_1",
29 | "text": "Last Kingdom 6"
30 | },
31 | {
32 | "name": "EventScene_lastkingdom_04_2",
33 | "text": "Last Kingdom 7"
34 | },
35 | {
36 | "name": "EventScene_lastkingdom_05",
37 | "text": "Last Kingdom 8"
38 | },
39 | {
40 | "name": "EventScene_lastkingdom_06_1",
41 | "text": "Last Kingdom 9"
42 | },
43 | {
44 | "name": "EventScene_lastkingdom_06_2",
45 | "text": "Last Kingdom 10"
46 | },
47 | {
48 | "name": "EventScene_lastkingdom_06_3",
49 | "text": "Last Kingdom 11"
50 | },
51 | {
52 | "name": "EventScene_lastkingdom_07",
53 | "text": "Last Kingdom 12"
54 | },
55 | {
56 | "name": "EventScene_lastkingdom_08",
57 | "text": "Last Kingdom 13"
58 | },
59 | {
60 | "name": "EventScene_lastkingdom_09",
61 | "text": "Last Kingdom 14"
62 | },
63 | {
64 | "name": "EventScene_lastkingdom_11_1",
65 | "text": "Last Kingdom 15"
66 | },
67 | {
68 | "name": "EventScene_lastkingdom_11_2",
69 | "text": "Last Kingdom 16"
70 | },
71 | {
72 | "name": "EventScene_lastkingdom_12_1",
73 | "text": "Last Kingdom 17"
74 | },
75 | {
76 | "name": "EventScene_lastkingdom_12_2",
77 | "text": "Last Kingdom 18"
78 | },
79 | {
80 | "name": "EventScene_lastkingdom_12_3",
81 | "text": "Last Kingdom 19"
82 | },
83 | {
84 | "name": "EventScene_lastkingdom_10",
85 | "text": "Last Kingdom 20"
86 | },
87 | {
88 | "name": "EventScene_lastkingdom_13_1",
89 | "text": "Last Kingdom 21"
90 | },
91 | {
92 | "name": "EventScene_lastkingdom_13_2",
93 | "text": "Last Kingdom 22"
94 | },
95 | {
96 | "name": "EventScene_lastkingdom_13_3",
97 | "text": "Last Kingdom 23"
98 | },
99 | {
100 | "name": "EventScene_lastkingdom_14",
101 | "text": "Last Kingdom 24"
102 | },
103 | {
104 | "name": "EventScene_lastkingdom_15_1",
105 | "text": "Last Kingdom 25"
106 | },
107 | {
108 | "name": "EventScene_lastkingdom_15_2",
109 | "text": "Last Kingdom 26"
110 | },
111 | {
112 | "name": "EventScene_lastkingdom_16",
113 | "text": "Last Kingdom 27"
114 | }
115 | ]
116 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/story4.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "story4/",
3 | "type": "large",
4 | "id": "story4",
5 | "title": "Chapters 26 to 30",
6 | "content": [
7 | {
8 | "name": "EventScene_Chap_26_01",
9 | "text": "Red Eye"
10 | },
11 | {
12 | "name": "EventScene_Chap_26_03",
13 | "text": "Music Box"
14 | },
15 | {
16 | "name": "EventScene_Chap_26_04",
17 | "text": "Red Hood"
18 | },
19 | {
20 | "name": "EventScene_Chap_26_05",
21 | "text": "Rapi"
22 | },
23 | {
24 | "name": "EventScene_Chap_26_06",
25 | "text": "Rapi"
26 | },
27 | {
28 | "name": "EventScene_Chap_26_07",
29 | "text": "Mother Whale ?"
30 | },
31 | {
32 | "name": "EventScene_Chap_26_08",
33 | "text": "Raptillion!"
34 | },
35 | {
36 | "name": "EventScene_Chap_26_After_01",
37 | "text": "Exploration"
38 | },
39 | {
40 | "name": "EventScene_Chap_27_01",
41 | "text": "Dying Rapture"
42 | },
43 | {
44 | "name": "EventScene_Chap_27_02",
45 | "text": "Dying Rapture 2"
46 | },
47 | {
48 | "name": "EventScene_Chap_27_03",
49 | "text": "BOOM"
50 | },
51 | {
52 | "name": "EventScene_Chap_28_01",
53 | "text": "BOOOOOOM"
54 | },
55 | {
56 | "name": "EventScene_Chap_28_02",
57 | "text": "Seven Dwarves"
58 | },
59 | {
60 | "name": "EventScene_Chap_28_03",
61 | "text": "I love futuristic military war weapons"
62 | },
63 | {
64 | "name": "EventScene_Chap_28_04",
65 | "text": "Get out of the way"
66 | },
67 | {
68 | "name": "EventScene_Chap_28_05",
69 | "text": "OUT OF THE WAY"
70 | },
71 | {
72 | "name": "EventScene_Chap_28_06",
73 | "text": "Hole"
74 | },
75 | {
76 | "name": "EventScene_Chap_28_07",
77 | "text": "Elevator shaft"
78 | },
79 | {
80 | "name": "EventScene_Chap_29_01",
81 | "text": "Trapped"
82 | },
83 | {
84 | "name": "EventScene_Chap_30_01",
85 | "text": "Hole in pants"
86 | },
87 | {
88 | "name": "EventScene_Chap_30_02",
89 | "text": "Soon to be made Hole in pants"
90 | },
91 | {
92 | "name": "EventScene_Chap_30_03_01",
93 | "text": "Hammering"
94 | },
95 | {
96 | "name": "EventScene_Chap_30_03_02",
97 | "text": "Hammering 2"
98 | },
99 | {
100 | "name": "EventScene_Chap_30_04_01",
101 | "text": "Manga 1"
102 | },
103 | {
104 | "name": "EventScene_Chap_30_04_02",
105 | "text": "Manga 2"
106 | },
107 | {
108 | "name": "EventScene_Chap_30_04_03",
109 | "text": "Manga 3"
110 | },
111 | {
112 | "name": "EventScene_Chap_30_04_04",
113 | "text": "Manga 4"
114 | },
115 | {
116 | "name": "EventScene_Chap_30_04_05",
117 | "text": "Manga 5"
118 | },
119 | {
120 | "name": "EventScene_Chap_30_04_06",
121 | "text": "Manga 6"
122 | },
123 | {
124 | "name": "EventScene_Chap_30_04_07",
125 | "text": "Manga 7"
126 | }
127 | ]
128 | }
--------------------------------------------------------------------------------
/src/components/common/Spine/CharacterList.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
13 |
21 |
22 |
23 |
24 |
25 | {{ character.name }}
26 |
27 |
28 |
29 |
30 |
31 |
32 |
65 |
66 |
122 |
--------------------------------------------------------------------------------
/src/components/common/Spine/Tools/BackgroundColor.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Background
5 | Color
6 |
7 |
8 |
21 |
22 | Chosen color will be saved in localstorage.
23 |
31 |
32 |
33 |
34 |
35 |
36 |
105 |
106 |
120 |
--------------------------------------------------------------------------------
/src/components/views/Chibi.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | View in Full Screen
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
88 |
89 |
99 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/story3.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "story3/",
3 | "type": "large",
4 | "id": "story3",
5 | "title": "Chapters 20 to 25",
6 | "content": [
7 | {
8 | "name": "EventScene_Chap_20_01",
9 | "text": "Johan"
10 | },
11 | {
12 | "name": "EventScene_Chap_20_02_01",
13 | "text": "Shooting Star"
14 | },
15 | {
16 | "name": "EventScene_Chap_20_03",
17 | "text": "Dragon"
18 | },
19 | {
20 | "name": "EventScene_Chap_21_02_01",
21 | "text": "Mother Whale 1"
22 | },
23 | {
24 | "name": "EventScene_Chap_21_02_02",
25 | "text": "Mother Whale 2"
26 | },
27 | {
28 | "name": "EventScene_Chap_21_02",
29 | "text": "Mother Whale 3"
30 | },
31 | {
32 | "name": "EventScene_Chap_21_02_03",
33 | "text": "Mother Whale 4"
34 | },
35 | {
36 | "name": "EventScene_Chap_21_03",
37 | "text": "Mother Whale 5"
38 | },
39 | {
40 | "name": "EventScene_Chap_21_02_04",
41 | "text": "Mother Whale 6"
42 | },
43 | {
44 | "name": "EventScene_Chap_21_04",
45 | "text": "Mother Whale 7"
46 | },
47 | {
48 | "name": "EventScene_Chap_21_05",
49 | "text": "Mother Whale 8"
50 | },
51 | {
52 | "name": "EventScene_Chap_21_06",
53 | "text": "Mother Whale 9"
54 | },
55 | {
56 | "name": "EventScene_Chap_21_07_01",
57 | "text": "Mother Whale 10"
58 | },
59 | {
60 | "name": "EventScene_Chap_21_07_02",
61 | "text": "Mother Whale 11"
62 | },
63 | {
64 | "name": "EventScene_Chap_21_07",
65 | "text": "Vapauss"
66 | },
67 | {
68 | "name": "EventScene_Chap_22_02",
69 | "text": "Enikk"
70 | },
71 | {
72 | "name": "EventScene_Chap_22_03",
73 | "text": "Nihilister"
74 | },
75 | {
76 | "name": "EventScene_Chap_22_04",
77 | "text": "Destruction"
78 | },
79 | {
80 | "name": "EventScene_Chap_22_05",
81 | "text": "Goddess"
82 | },
83 | {
84 | "name": "EventScene_Chap_22_06",
85 | "text": "Dorothy"
86 | },
87 | {
88 | "name": "EventScene_Chap_23_01",
89 | "text": "Moran"
90 | },
91 | {
92 | "name": "EventScene_Chap_23_02",
93 | "text": "Chuunibyou & Dog"
94 | },
95 | {
96 | "name": "EventScene_Chap_24_01",
97 | "text": "Viper"
98 | },
99 | {
100 | "name": "EventScene_Chap_24_02",
101 | "text": "Viper"
102 | },
103 | {
104 | "name": "EventScene_Chap_24_03",
105 | "text": "Viper"
106 | },
107 | {
108 | "name": "EventScene_Chap_24_04",
109 | "text": "Rapi"
110 | },
111 | {
112 | "name": "EventScene_Chap_24_05",
113 | "text": "Rapi & Scarf"
114 | },
115 | {
116 | "name": "EventScene_Chap_24_06",
117 | "text": "Scarf"
118 | },
119 | {
120 | "name": "EventScene_Chap_24_07",
121 | "text": "Call an ambulance"
122 | },
123 | {
124 | "name": "EventScene_Chap_24_08",
125 | "text": "But not for me"
126 | },
127 | {
128 | "name": "EventScene_Chap_24_After2_01",
129 | "text": "Andersen "
130 | },
131 | {
132 | "name": "EventScene_Chap_24_09",
133 | "text": "Syuen"
134 | }
135 | ]
136 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/story6.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "story6/",
3 | "type": "large",
4 | "id": "story6",
5 | "title": "Chapters 33 to 34",
6 | "notice": "The original in-game raw images totals over 185mb. It's way too high. The images here are compressed to a total of 7mb, thus they aren't original quality, but fairly close.",
7 | "content": [
8 | {
9 | "name": "EventScene_Chap_33_01_03",
10 | "text": "Oil"
11 | },
12 | {
13 | "name": "EventScene_Chap_33_01_01",
14 | "text": "Levi"
15 | },
16 | {
17 | "name": "EventScene_Chap_33_01_02",
18 | "text": "Leviathan"
19 | },
20 | {
21 | "name": "EventScene_Chap_33_02",
22 | "text": "gun"
23 | },
24 | {
25 | "name": "EventScene_Chap_33_03",
26 | "text": "Florida"
27 | },
28 | {
29 | "name": "EventScene_Chap_33_04_01",
30 | "text": "Ball"
31 | },
32 | {
33 | "name": "EventScene_Chap_33_04_02",
34 | "text": "Balling"
35 | },
36 | {
37 | "name": "EventScene_Chap_33_04_03",
38 | "text": "Disco Ball"
39 | },
40 | {
41 | "name": "EventScene_Chap_33_05",
42 | "text": "Average One Piece sakuga frame"
43 | },
44 | {
45 | "name": "EventScene_Chap_33_06_01",
46 | "text": "Another one"
47 | },
48 | {
49 | "name": "EventScene_Chap_33_06_02",
50 | "text": "Another one"
51 | },
52 | {
53 | "name": "EventScene_Chap_34_01",
54 | "text": "Rapi pout :("
55 | },
56 | {
57 | "name": "EventScene_Chap_34_02",
58 | "text": "Dead Space low on hp"
59 | },
60 | {
61 | "name": "EventScene_Chap_34_03_01",
62 | "text": "Would"
63 | },
64 | {
65 | "name": "EventScene_Chap_34_03_02",
66 | "text": "Would"
67 | },
68 | {
69 | "name": "EventScene_Chap_34_04_01",
70 | "text": "wouldn't"
71 | },
72 | {
73 | "name": "EventScene_Chap_34_04_02",
74 | "text": "yikes, they're trying so hard to make them armpit girls"
75 | },
76 | {
77 | "name": "EventScene_Chap_34_05_01",
78 | "text": "guns"
79 | },
80 | {
81 | "name": "EventScene_Chap_34_05_02",
82 | "text": "Made in Abyss ahh hole"
83 | },
84 | {
85 | "name": "EventScene_Chap_34_05_03",
86 | "text": "Would"
87 | },
88 | {
89 | "name": "EventScene_Chap_34_05_04",
90 | "text": "Still would ngl"
91 | },
92 | {
93 | "name": "EventScene_Chap_34_07",
94 | "text": "Never let BA players know about Leviathan"
95 | },
96 | {
97 | "name": "EventScene_Chap_34_08_01",
98 | "text": "Not this bitch again"
99 | },
100 | {
101 | "name": "EventScene_Chap_34_08_02",
102 | "text": "Ok good she's gone"
103 | },
104 | {
105 | "name": "EventScene_Chap_34_09",
106 | "text": "Can't wait for rh to never appear again"
107 | },
108 | {
109 | "name": "EventScene_Chap_34_10_01",
110 | "text": "Your tits will never recover the slop you made"
111 | },
112 | {
113 | "name": "EventScene_Chap_34_10_02",
114 | "text": "Hopefully the last pixels she'll ever waste on story mode"
115 | },
116 | {
117 | "name": "EventScene_Chap_34_11",
118 | "text": "Rapi Yoko Littner Tengen Toppa Gurren Lagann"
119 | }
120 | ]
121 | }
--------------------------------------------------------------------------------
/src/utils/json/honorifics.json:
--------------------------------------------------------------------------------
1 | {
2 | "Emma": "Commander",
3 | "Privaty": "Commander",
4 | "Privaty: Unkind Maid": "Master",
5 | "Signal": "Commander",
6 | "Poli": "Commander",
7 | "Miranda": "Commander",
8 | "Brid": "Commander",
9 | "Soline": "Commander",
10 | "Diesel": "Commander",
11 | "Vesti": "Commander",
12 | "Eunhwa": "Weakling",
13 | "Eunhwa: Tactical Upgrade": "Junior Blockhead",
14 | "Guillotine": "Partner",
15 | "Maiden": "Commander",
16 | "D": "Commander",
17 | "D: Killer Wife": "Honey",
18 | "Helm": "Subordinate",
19 | "Mast": "Captain",
20 | "Mast: Romantic Maid": "Master Captain",
21 | "Marciana": "Commander",
22 | "Quiry": "Commander",
23 | "Rapi": "Commander",
24 | "Neon": "Master",
25 | "Delta": "Commander",
26 | "Anchor": "Captain",
27 | "Anchor: Innocent Maid": "Master",
28 | "Maxwell": "Cutie Pie",
29 | "Yuni": "Commander",
30 | "Liter": "Greenhorn",
31 | "Julia": "Conductor",
32 | "Centi": "Boss",
33 | "Drake": "Moron",
34 | "Crow": "Commander",
35 | "Pepper": "Commander",
36 | "Admi": "Commander",
37 | "Jackal": "Commander",
38 | "Laplace": "Birdie",
39 | "Guilty": "Counselor",
40 | "Sin": "Instructor",
41 | "Quency": "Instructor",
42 | "Epinel": "Coach",
43 | "Naga": "Teacher",
44 | "Tia": "Teacher",
45 | "Mihara": "Commander",
46 | "Anne": "Teacher",
47 | "Ether": "No. 7",
48 | "Sugar": "Partner",
49 | "Exia": "Noob",
50 | "Alice": "Rabbity",
51 | "Blanc": "Pit Boss",
52 | "Noir": "Pit Boss",
53 | "Folkwang": "Coach",
54 | "Sakura": "Commander-kun",
55 | "Viper": "Honey",
56 | "Cocoa": "Master",
57 | "Soda": "Master",
58 | "Biscuit": "Trainer",
59 | "Rei": "Teacher",
60 | "Aria": "Maestro",
61 | "Noise": "Producer",
62 | "Rumani": "Gym Rat",
63 | "Papillon": "Honey",
64 | "Scarlet": "My Lord",
65 | "Dorothy": "Your Grace",
66 | "Rapunzel": "Believer",
67 | "Modernia": "Commander",
68 | "Red Hood": "Handsome",
69 | "Snow White": "Commander",
70 | "Ludmilla": "Servant",
71 | "Noah": "Impostor",
72 | "Novel": "Watson",
73 | "Harran": "Follower",
74 | "Isabel": "Darling",
75 | "Nihilister": "Human",
76 | "Rupee": "Sweetie",
77 | "Dolla": "Client",
78 | "Belorta": "Old-Timer",
79 | "Mica": "Old-Timer",
80 | "Nero": "Scoops",
81 | "Milk": "Pal",
82 | "Tove": "Survivalist",
83 | "Neve": "Burly Bear",
84 | "Rouge": "Highroller",
85 | "Frima": "You",
86 | "Crown": "Advisor",
87 | "Flora": "Blossom",
88 | "Bready": "Bonne Bouche",
89 | "Moran": "Cadet",
90 | "Sora": "Captain",
91 | "Cielo": "Captain",
92 | "Sky": "Captain",
93 | "Bay": "Coach",
94 | "Clay": "Coach",
95 | "Only One": "Daddy",
96 | "Cecil": "Darling",
97 | "Mori": "Evaluator",
98 | "Nayuta": "Great Hero",
99 | "Chatterbox": "Human",
100 | "Liberalio": "Human",
101 | "Behemoth": "Human",
102 | "Mecha Shifty": "Human",
103 | "Ade": "Master",
104 | "Rosanna": "Mister",
105 | "Phantom": "Monsieur",
106 | "Crust": "Mr. Gourmand",
107 | "Yulha": "Newbie",
108 | "Jien": "No. 7",
109 | "Cinderella": "Prince",
110 | "Little Mermaid": "Prince",
111 | "Chime": "Rapscallion",
112 | "Yan": "Rookie",
113 | "Trina": "Sun",
114 | "Grave": "Superhuman",
115 | "Einkk": "Sweetie",
116 | "Ein": "Teacher",
117 | "N102": "Teacher",
118 | "Zwei": "Teacher",
119 | "Ziz": "Young Man",
120 | "Bahamut": "Young Man",
121 | "Leona": "Zoo Keeper",
122 | "Asuka: WILLE": "Lilin",
123 | "Volume": "Manager",
124 | "K": "Commander",
125 | "Arcana": "Commander",
126 | "Elegg": "Mr. Commander"
127 | }
128 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/unbreakablesphere.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "unbreakablesphere/",
3 | "type": "large",
4 | "id": "unbreakablesphere",
5 | "title": "Unbreakable Sphere",
6 | "notice": "Compressed from 140mb total to 7mb",
7 | "content": [
8 | {
9 | "name": "EventScene_unbreakablesphere_01_1",
10 | "text": "Unbreakable Sphere 1"
11 | },
12 | {
13 | "name": "EventScene_unbreakablesphere_01_2",
14 | "text": "Unbreakable Sphere 2"
15 | },
16 | {
17 | "name": "EventScene_unbreakablesphere_02_1",
18 | "text": "Unbreakable Sphere 3"
19 | },
20 | {
21 | "name": "EventScene_unbreakablesphere_02_2",
22 | "text": "Unbreakable Sphere 4"
23 | },
24 | {
25 | "name": "EventScene_unbreakablesphere_02_3",
26 | "text": "Unbreakable Sphere 5"
27 | },
28 | {
29 | "name": "EventScene_unbreakablesphere_03_1",
30 | "text": "Unbreakable Sphere 6"
31 | },
32 | {
33 | "name": "EventScene_unbreakablesphere_03_2",
34 | "text": "Unbreakable Sphere 7"
35 | },
36 | {
37 | "name": "EventScene_unbreakablesphere_03_3",
38 | "text": "Unbreakable Sphere 8"
39 | },
40 | {
41 | "name": "EventScene_unbreakablesphere_04",
42 | "text": "Unbreakable Sphere 9"
43 | },
44 | {
45 | "name": "EventScene_unbreakablesphere_05",
46 | "text": "Unbreakable Sphere 10"
47 | },
48 | {
49 | "name": "EventScene_unbreakablesphere_06",
50 | "text": "Unbreakable Sphere 11"
51 | },
52 | {
53 | "name": "EventScene_unbreakablesphere_07_1",
54 | "text": "Unbreakable Sphere 12"
55 | },
56 | {
57 | "name": "EventScene_unbreakablesphere_07_2",
58 | "text": "Unbreakable Sphere 13"
59 | },
60 | {
61 | "name": "EventScene_unbreakablesphere_07_3",
62 | "text": "Unbreakable Sphere 14"
63 | },
64 | {
65 | "name": "EventScene_unbreakablesphere_08_1",
66 | "text": "Unbreakable Sphere 15"
67 | },
68 | {
69 | "name": "EventScene_unbreakablesphere_08_2",
70 | "text": "Unbreakable Sphere 16"
71 | },
72 | {
73 | "name": "EventScene_unbreakablesphere_09",
74 | "text": "Unbreakable Sphere 17"
75 | },
76 | {
77 | "name": "EventScene_unbreakablesphere_10_1",
78 | "text": "Unbreakable Sphere 18"
79 | },
80 | {
81 | "name": "EventScene_unbreakablesphere_10_2",
82 | "text": "Unbreakable Sphere 19"
83 | },
84 | {
85 | "name": "EventScene_unbreakablesphere_11_1",
86 | "text": "Unbreakable Sphere 20"
87 | },
88 | {
89 | "name": "EventScene_unbreakablesphere_11_2",
90 | "text": "Unbreakable Sphere 21"
91 | },
92 | {
93 | "name": "EventScene_unbreakablesphere_11_3",
94 | "text": "Unbreakable Sphere 22"
95 | },
96 | {
97 | "name": "EventScene_unbreakablesphere_11_4",
98 | "text": "Unbreakable Sphere 23"
99 | },
100 | {
101 | "name": "EventScene_unbreakablesphere_11_5",
102 | "text": "Unbreakable Sphere 24"
103 | },
104 | {
105 | "name": "EventScene_unbreakablesphere_11_6",
106 | "text": "Unbreakable Sphere 25"
107 | },
108 | {
109 | "name": "EventScene_unbreakablesphere_12",
110 | "text": "Unbreakable Sphere 26"
111 | },
112 | {
113 | "name": "EventScene_unbreakablesphere_13",
114 | "text": "Unbreakable Sphere 27"
115 | },
116 | {
117 | "name": "unbreakablesphere_list_part2_nor_bg_01",
118 | "text": "Unbreakable Sphere 28"
119 | },
120 | {
121 | "name": "unbreakablesphere_list_part2_hard_list_top",
122 | "text": "Unbreakable Sphere 29"
123 | }
124 | ]
125 | }
--------------------------------------------------------------------------------
/src/components/common/Spine/ToolList.vue:
--------------------------------------------------------------------------------
1 |
2 |
60 |
61 |
62 |
80 |
81 |
132 |
--------------------------------------------------------------------------------
/src/components/common/Tools/AlphaConverters.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Straight Alpha to premultiplied Alpha
5 |
6 |
12 |
13 | Drag a png to convert to PMA
14 |
15 |
16 |
17 |
18 |
19 | Premultiplied Alpha to Straight Alpha
20 |
21 |
27 |
28 | Drag a png to convert to STA
29 |
30 |
31 |
32 |
33 |
34 |
35 | Learn more about the converting algorithm
36 |
37 | Yes. there is quality loss when you convert a picture due to rounding numbers.
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/whitememory.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "whitememory/",
3 | "type": "large",
4 | "id": "whitememory",
5 | "title": "White Memory",
6 | "content": [
7 | {
8 | "name": "whitememory_01",
9 | "text": "The Woods"
10 | },
11 | {
12 | "name": "whitememory_02_1",
13 | "text": "The Pond"
14 | },
15 | {
16 | "name": "whitememory_02_2",
17 | "text": "The Log"
18 | },
19 | {
20 | "name": "whitememory_03",
21 | "text": "The City"
22 | },
23 | {
24 | "name": "whitememory_04",
25 | "text": "The Path"
26 | },
27 | {
28 | "name": "whitememory_05_1",
29 | "text": "The Watchtower"
30 | },
31 | {
32 | "name": "whitememory_05_2",
33 | "text": "Morning Walk"
34 | },
35 | {
36 | "name": "whitememory_06_1",
37 | "text": "The Girl"
38 | },
39 | {
40 | "name": "whitememory_06_2",
41 | "text": "The Smiling Girl"
42 | },
43 | {
44 | "name": "whitememory_07",
45 | "text": "Flowers"
46 | },
47 | {
48 | "name": "whitememory_08_1",
49 | "text": "Patience"
50 | },
51 | {
52 | "name": "whitememory_08_2",
53 | "text": "Fishing"
54 | },
55 | {
56 | "name": "whitememory_09",
57 | "text": "The Failure"
58 | },
59 | {
60 | "name": "whitememory_10",
61 | "text": "Tonight's Dinner"
62 | },
63 | {
64 | "name": "whitememory_11_1",
65 | "text": "I hope she didn't put anything weird in the food"
66 | },
67 | {
68 | "name": "whitememory_11_2",
69 | "text": "It's ready"
70 | },
71 | {
72 | "name": "whitememory_12_1",
73 | "text": "Notes"
74 | },
75 | {
76 | "name": "whitememory_12_2",
77 | "text": "Can't read them anymore there are people in front"
78 | },
79 | {
80 | "name": "whitememory_13_1",
81 | "text": "Open Field"
82 | },
83 | {
84 | "name": "whitememory_13_2",
85 | "text": "Can't find a name"
86 | },
87 | {
88 | "name": "whitememory_14_1",
89 | "text": "The Coffin"
90 | },
91 | {
92 | "name": "whitememory_14_2",
93 | "text": "The Commander"
94 | },
95 | {
96 | "name": "whitememory_15_1",
97 | "text": "The House"
98 | },
99 | {
100 | "name": "whitememory_15_2",
101 | "text": "Posters"
102 | },
103 | {
104 | "name": "whitememory_15_3",
105 | "text": "The Other Side"
106 | },
107 | {
108 | "name": "whitememory_16",
109 | "text": "The Fence"
110 | },
111 | {
112 | "name": "whitememory_17",
113 | "text": "What is that ?"
114 | },
115 | {
116 | "name": "whitememory_18",
117 | "text": "The Deer"
118 | },
119 | {
120 | "name": "whitememory_19_1",
121 | "text": "Hunger"
122 | },
123 | {
124 | "name": "whitememory_19_2",
125 | "text": "Meat"
126 | },
127 | {
128 | "name": "whitememory_20",
129 | "text": "The Flower"
130 | },
131 | {
132 | "name": "whitememory_21",
133 | "text": "Dog Tags"
134 | },
135 | {
136 | "name": "whitememory_22",
137 | "text": "Rocks"
138 | },
139 | {
140 | "name": "whitememory_23",
141 | "text": "Mushrooms"
142 | },
143 | {
144 | "name": "whitememory_24",
145 | "text": "The Radio"
146 | },
147 | {
148 | "name": "whitememory_25",
149 | "text": "Not sure what this is either"
150 | },
151 | {
152 | "name": "whitememory_26",
153 | "text": "The META character"
154 | },
155 | {
156 | "name": "whitememory_27",
157 | "text": "The Umbrella"
158 | },
159 | {
160 | "name": "whitememory_28",
161 | "text": "The Pervert"
162 | }
163 | ]
164 | }
--------------------------------------------------------------------------------
/src/components/views/Index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 | Last Update: {{ updates[updates.length-1].date }}
9 |
10 |
11 | VIDEO
12 |
13 |
14 |
15 |
16 |
17 | I have quit the game and pretty much only "play" to do website updates.
18 | As such I can't really know NPC names anymore. So every NPCs I can't datamine from now on will have their names be "NPC: TBA" in the L2D viewer.
19 | Please open github tickets or send me discord messages so I can complete their names. Of course I'll at least need a picture or their c_id.
20 | I will still try to delay galleries just to avoid getting some cease and desist or copyrights.
21 |
22 |
23 |
24 |
25 |
26 | Now stopping to answer DMs asking how to datamine or extracting specific files for your own use.
27 | Please only come for feedback about the website.
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | {{ update.date }} :
37 | {{ update.update }}
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
79 |
80 |
124 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/albums.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "albums/",
3 | "type": "img",
4 | "id": "albums",
5 | "title": "Album Covers",
6 | "content": [
7 | {
8 | "name": "album_field_01",
9 | "text": "Sleeping Forest"
10 | },
11 | {
12 | "name": "album_menu_01",
13 | "text": "After World"
14 | },
15 | {
16 | "name": "album_lostsector_01",
17 | "text": "Lost Sector"
18 | },
19 | {
20 | "name": "album_story_01",
21 | "text": "Folk Tales"
22 | },
23 | {
24 | "name": "album_event_01",
25 | "text": "Events"
26 | },
27 | {
28 | "name": "album_field_02",
29 | "text": "Living Land"
30 | },
31 | {
32 | "name": "album_field_03",
33 | "text": "Wandering Soul"
34 | },
35 | {
36 | "name": "album_field_04",
37 | "text": "Wonderland"
38 | },
39 | {
40 | "name": "album_field_05",
41 | "text": "White Snow"
42 | },
43 | {
44 | "name": "album_field_06",
45 | "text": "Hand On Hand"
46 | },
47 | {
48 | "name": "album_field_07",
49 | "text": "Two Top"
50 | },
51 | {
52 | "name": "album_field_08",
53 | "text": "Red Eye, Smile"
54 | },
55 | {
56 | "name": "album_field_09",
57 | "text": "Sand Storm"
58 | },
59 | {
60 | "name": "album_field_10",
61 | "text": "Eternal Scar"
62 | },
63 | {
64 | "name": "album_field_11",
65 | "text": "Morning Star"
66 | },
67 | {
68 | "name": "album_field_13",
69 | "text": "Invasion"
70 | },
71 | {
72 | "name": "album_field_14",
73 | "text": "Trace"
74 | },
75 | {
76 | "name": "album_field_15",
77 | "text": "Unknown"
78 | },
79 | {
80 | "name": "album_field_16",
81 | "text": "Succession"
82 | },
83 | {
84 | "name": "album_field_17",
85 | "text": "From the Sky, From the Land"
86 | },
87 | {
88 | "name": "album_lastkingdom_01",
89 | "text": "Last Kingdom"
90 | },
91 | {
92 | "name": "album_redash_01",
93 | "text": "REDASH"
94 | },
95 | {
96 | "name": "album_overzone_01",
97 | "text": "Over Zone"
98 | },
99 | {
100 | "name": "album_bluewater_01",
101 | "text": "Blue Water Island"
102 | },
103 | {
104 | "name": "album_outerautomata_01",
105 | "text": "Outer Automata"
106 | },
107 | {
108 | "name": "album_neverland_01",
109 | "text": "Neverland"
110 | },
111 | {
112 | "name": "album_recipe_01",
113 | "text": "Re: Cipe For You"
114 | },
115 | {
116 | "name": "album_golden_01",
117 | "text": "Golden Coin Rush"
118 | },
119 | {
120 | "name": "album_beauty_01",
121 | "text": "Beauty Full Shot"
122 | },
123 | {
124 | "name": "album_ce004_01",
125 | "text": "EVANGELION"
126 | },
127 | {
128 | "name": "album_oldtales_01",
129 | "text": "Old Tales"
130 | },
131 | {
132 | "name": "album_icedragonsaga_01",
133 | "text": "Ice Dragon Saga"
134 | },
135 | {
136 | "name": "album_ce005_01",
137 | "text": "SECOND QUEST"
138 | },
139 | {
140 | "name": "album_unbreakablesphere_01",
141 | "text": "UNBREAKable SPHERE"
142 | },
143 | {
144 | "name": "album_ce006_01",
145 | "text": "Memoriess TELLER"
146 | },
147 | {
148 | "name": "album_boomtheghost_01",
149 | "text": "Boom the Ghost"
150 | },
151 | {
152 | "name": "album_absolute_01",
153 | "text": "ABSOLUTE"
154 | },
155 | {
156 | "name": "album_coinsinrush_01",
157 | "text": "COINS IN RUSH"
158 | },
159 | {
160 | "name": "album_ce007_01",
161 | "text": "Reborn Evil"
162 | },
163 | {
164 | "name": "album_special_01",
165 | "text": "Special Sound Track"
166 | },
167 | {
168 | "name": "album_goddessfall_01",
169 | "text": "Goddess Fall"
170 | }
171 | ]
172 | }
--------------------------------------------------------------------------------
/src/components/common/Spine/WrapperMobile.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
12 |
13 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 | The header is currently visible
29 |
30 | The header is currently hidden
31 |
32 |
33 |
34 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 | It is extremely recommended for mobile users to pause the frame
50 | they want to screenshot before pressing the button, as the pop up
51 | make it really hard to get the frame you want.
52 | Custom screenshot size and better resolution will happen in the
53 | future, for now the screenshot will have the width and height of
54 | your screen.
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
103 |
104 |
149 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
55 |
56 |
174 |
--------------------------------------------------------------------------------
/src/components/common/Spine/Tools/CustomLoaderItem.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | handleMultipleListChange(e)"
8 | @update:file-list="handleFileListChange()"
9 | :multiple="props.multiple"
10 | >
11 |
12 |
13 |
14 | Load {{ props.multiple ? 'multiple' : 'a'}} .{{ props.fileType }} {{ props.multiple ? 'files': 'file'}}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
120 |
121 |
--------------------------------------------------------------------------------
/src/utils/json/Gallery/goddessfall.json:
--------------------------------------------------------------------------------
1 | {"path":"goddessfall/","type":"large","id":"goddessfall","title":"Goddess Fall","notice":"Compressed from 350mb ( wtf is that size ) to 28mb","content":[{"name":"EventScene_goddessfall_01.webp","text":"Goddess Fall 1"},{"name":"EventScene_goddessfall_02.webp","text":"Goddess Fall 2"},{"name":"EventScene_goddessfall_03.webp","text":"Goddess Fall 3"},{"name":"EventScene_goddessfall_04.webp","text":"Goddess Fall 4"},{"name":"EventScene_goddessfall_05_1.webp","text":"Goddess Fall 5"},{"name":"EventScene_goddessfall_05_2.webp","text":"Goddess Fall 6"},{"name":"EventScene_goddessfall_05_3.webp","text":"Goddess Fall 7"},{"name":"EventScene_goddessfall_05_4.webp","text":"Goddess Fall 8"},{"name":"EventScene_goddessfall_06_1.webp","text":"Goddess Fall 9"},{"name":"EventScene_goddessfall_06_2.webp","text":"Goddess Fall 10"},{"name":"EventScene_goddessfall_06_3.webp","text":"Goddess Fall 11"},{"name":"EventScene_goddessfall_07_1.webp","text":"Goddess Fall 12"},{"name":"EventScene_goddessfall_07_2.webp","text":"Goddess Fall 13"},{"name":"EventScene_goddessfall_07_3.webp","text":"Goddess Fall 14"},{"name":"EventScene_goddessfall_07_4.webp","text":"Goddess Fall 15"},{"name":"EventScene_goddessfall_08.webp","text":"Goddess Fall 16"},{"name":"EventScene_goddessfall_09.webp","text":"Goddess Fall 17"},{"name":"EventScene_goddessfall_10.webp","text":"Goddess Fall 18"},{"name":"EventScene_goddessfall_11.webp","text":"Goddess Fall 19"},{"name":"EventScene_goddessfall_12_1.webp","text":"Goddess Fall 20"},{"name":"EventScene_goddessfall_12_2.webp","text":"Goddess Fall 21"},{"name":"EventScene_goddessfall_13.webp","text":"Goddess Fall 22"},{"name":"EventScene_goddessfall_14_1.webp","text":"Goddess Fall 23"},{"name":"EventScene_goddessfall_14_2.webp","text":"Goddess Fall 24"},{"name":"EventScene_goddessfall_14_3.webp","text":"Goddess Fall 25"},{"name":"EventScene_goddessfall_14_4.webp","text":"Goddess Fall 26"},{"name":"EventScene_goddessfall_15_1.webp","text":"Goddess Fall 27"},{"name":"EventScene_goddessfall_15_2.webp","text":"Goddess Fall 28"},{"name":"EventScene_goddessfall_16_1.webp","text":"Goddess Fall 29"},{"name":"EventScene_goddessfall_16_2.webp","text":"Goddess Fall 30"},{"name":"EventScene_goddessfall_16_3.webp","text":"Goddess Fall 31"},{"name":"EventScene_goddessfall_16_4.webp","text":"Goddess Fall 32"},{"name":"EventScene_goddessfall_16_5.webp","text":"Goddess Fall 33"},{"name":"EventScene_goddessfall_16_6.webp","text":"Goddess Fall 34"},{"name":"EventScene_goddessfall_17_1.webp","text":"Goddess Fall 35"},{"name":"EventScene_goddessfall_17_2.webp","text":"Goddess Fall 36"},{"name":"EventScene_goddessfall_18_1.webp","text":"Goddess Fall 37"},{"name":"EventScene_goddessfall_18_2.webp","text":"Goddess Fall 38"},{"name":"EventScene_goddessfall_19_1.webp","text":"Goddess Fall 39"},{"name":"EventScene_goddessfall_19_2.webp","text":"Goddess Fall 40"},{"name":"EventScene_goddessfall_19_3.webp","text":"Goddess Fall 41"},{"name":"EventScene_goddessfall_20_1.webp","text":"Goddess Fall 42"},{"name":"EventScene_goddessfall_20_2.webp","text":"Goddess Fall 43"},{"name":"EventScene_goddessfall_20_3.webp","text":"Goddess Fall 44"},{"name":"EventScene_goddessfall_20_4.webp","text":"Goddess Fall 45"},{"name":"EventScene_goddessfall_20_5.webp","text":"Goddess Fall 46"},{"name":"EventScene_goddessfall_21.webp","text":"Goddess Fall 47"},{"name":"EventScene_goddessfall_22_1.webp","text":"Goddess Fall 48"},{"name":"EventScene_goddessfall_22_2.webp","text":"Goddess Fall 49"},{"name":"EventScene_goddessfall_23_1.webp","text":"Goddess Fall 50"},{"name":"EventScene_goddessfall_23_2.webp","text":"Goddess Fall 51"},{"name":"EventScene_goddessfall_23_3.webp","text":"Goddess Fall 52"},{"name":"EventScene_goddessfall_24.webp","text":"Goddess Fall 53"},{"name":"EventScene_goddessfall_25_1.webp","text":"Goddess Fall 54"},{"name":"EventScene_goddessfall_25_2.webp","text":"Goddess Fall 55"},{"name":"EventScene_goddessfall_25_3.webp","text":"Goddess Fall 56"},{"name":"EventScene_goddessfall_25_4.webp","text":"Goddess Fall 57"},{"name":"EventScene_goddessfall_26.webp","text":"Goddess Fall 58"},{"name":"EventScene_goddessfall_27.webp","text":"Goddess Fall 59"},{"name":"EventScene_goddessfall_28_1.webp","text":"Goddess Fall 60"},{"name":"EventScene_goddessfall_28_2.webp","text":"Goddess Fall 61"},{"name":"EventScene_goddessfall_28_3.webp","text":"Goddess Fall 62"},{"name":"EventScene_goddessfall_28_4.webp","text":"Goddess Fall 63"},{"name":"EventScene_goddessfall_28_5.webp","text":"Goddess Fall 64"},{"name":"EventTitle_goddessfall_01.webp","text":"Goddess Fall 65"},{"name":"goddessfall_opening_queen_02_open.webp","text":"Goddess Fall 66"}]}
--------------------------------------------------------------------------------
/src/utils/json/Gallery/chapters.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "chapters/",
3 | "type": "img",
4 | "id": "chapters",
5 | "title": "Chapter Thumbnails",
6 | "content": [
7 | {
8 | "name": "img_album_chapter00",
9 | "text": "Chapter 00: Fall"
10 | },
11 | {
12 | "name": "img_album_chapter01",
13 | "text": "Chapter 01: Corruption"
14 | },
15 | {
16 | "name": "img_album_chapter02",
17 | "text": "Chapter 02: Identification"
18 | },
19 | {
20 | "name": "img_album_chapter03",
21 | "text": "Chapter 03: Enlightenment"
22 | },
23 | {
24 | "name": "img_album_chapter04",
25 | "text": "Chapter 04: Bouquet"
26 | },
27 | {
28 | "name": "img_album_chapter05",
29 | "text": "Chapter 05: Wonderland"
30 | },
31 | {
32 | "name": "img_album_chapter06",
33 | "text": "Chapter 06: Pilgrim"
34 | },
35 | {
36 | "name": "img_album_chapter07",
37 | "text": "Chapter 07: Reunited"
38 | },
39 | {
40 | "name": "img_album_chapter08",
41 | "text": "Chapter 08: Conflict"
42 | },
43 | {
44 | "name": "img_album_chapter09",
45 | "text": "Chapter 09: Secret"
46 | },
47 | {
48 | "name": "img_album_chapter10",
49 | "text": "Chapter 10: Comrade"
50 | },
51 | {
52 | "name": "img_album_chapter11",
53 | "text": "Chapter 11: The Strongest"
54 | },
55 | {
56 | "name": "img_album_chapter12",
57 | "text": "Chapter 12: Hometown"
58 | },
59 | {
60 | "name": "img_album_chapter13",
61 | "text": "Chapter 13: Return"
62 | },
63 | {
64 | "name": "img_album_chapter14",
65 | "text": "Chapter 14: Journey"
66 | },
67 | {
68 | "name": "img_album_chapter15",
69 | "text": "Chapter 15: Luck"
70 | },
71 | {
72 | "name": "img_album_chapter16",
73 | "text": "Chapter 16: Brand"
74 | },
75 | {
76 | "name": "img_album_chapter17",
77 | "text": "Chapter 17: Purpose"
78 | },
79 | {
80 | "name": "img_album_chapter18",
81 | "text": "Chapter 18: Hero"
82 | },
83 | {
84 | "name": "img_album_chapter19",
85 | "text": "Chapter 19: Eden"
86 | },
87 | {
88 | "name": "img_album_chapter20",
89 | "text": "Chapter 20: Fire Dragon"
90 | },
91 | {
92 | "name": "img_album_chapter21",
93 | "text": "Chapter 21: Giant Whale"
94 | },
95 | {
96 | "name": "img_album_chapter22",
97 | "text": "Chapter 22: Invasion"
98 | },
99 | {
100 | "name": "img_album_chapter23",
101 | "text": "Chapter 23: Prison"
102 | },
103 | {
104 | "name": "img_album_chapter24",
105 | "text": "Chapter 24: Banishment"
106 | },
107 | {
108 | "name": "img_album_chapter25",
109 | "text": "Chapter 25: Tracking"
110 | },
111 | {
112 | "name": "img_album_chapter26",
113 | "text": "Chapter 26: Return"
114 | },
115 | {
116 | "name": "img_album_chapter27",
117 | "text": "Chapter 27: Exploration"
118 | },
119 | {
120 | "name": "img_album_chapter28",
121 | "text": "Chapter 28: The Unknown"
122 | },
123 | {
124 | "name": "img_album_chapter29",
125 | "text": "Chapter 29: Rescue"
126 | },
127 | {
128 | "name": "img_album_chapter30",
129 | "text": "Chapter 30: Treasure"
130 | },
131 | {
132 | "name": "img_album_chapter31",
133 | "text": "Chapter 31: Mabeast"
134 | },
135 | {
136 | "name": "img_album_chapter32",
137 | "text": "Chapter 32: Advance"
138 | },
139 | {
140 | "name": "img_album_chapter33",
141 | "text": "Chapter 33: Clash"
142 | },
143 | {
144 | "name": "img_album_chapter34",
145 | "text": "Chapter 34: Inheritance"
146 | },
147 | {
148 | "name": "img_album_chapter35",
149 | "text": "Chapter 35: Conversation"
150 | },
151 | {
152 | "name": "img_album_chapter36",
153 | "text": "Chapter 36: Betrayal"
154 | },
155 | {
156 | "name": "img_album_chapter37",
157 | "text": "Chapter 37: Struggle"
158 | },
159 | {
160 | "name": "img_album_chapter38",
161 | "text": "Chapter 38: Gluttony"
162 | },
163 | {
164 | "name": "img_album_chapter39",
165 | "text": "Chapter 39: Gene"
166 | },
167 | {
168 | "name": "img_album_chapter40",
169 | "text": "Chapter 40: Choice"
170 | },
171 | {
172 | "name": "img_album_chapter40",
173 | "text": "Chapter 41: Birth"
174 | },
175 | {
176 | "name": "img_album_chapter40",
177 | "text": "Chapter 42: Only One"
178 | }
179 | ]
180 | }
--------------------------------------------------------------------------------
/src/utils/tierlistUtils.ts:
--------------------------------------------------------------------------------
1 | import type { tierlist } from '@/utils/interfaces/tierlist/tierlist'
2 | import l2d from '@/utils/json/l2d.json'
3 | import type { live2d_interface } from '@/utils/interfaces/live2d'
4 | import type { tier } from '@/utils/interfaces/tierlist/tier'
5 | import { returnRandomHex } from '@/utils/utils'
6 | import { globalParams } from '@/utils/enum/globalParams'
7 | import CryptoJS from 'crypto-js'
8 |
9 | const initDefaultTierList = (): tierlist => {
10 | const tierList: tierlist = {
11 | name: 'Sample Tier List',
12 | author: 'Koshirei',
13 | print_NikkeDB: true,
14 | printBenchTier: true,
15 | benchTier: initBenchTier(),
16 | tiers: initDefaultTiers()
17 | }
18 | return tierList
19 | }
20 |
21 | const initBenchTier = (): tier => {
22 | const benchTier: tier = initEmptyTier()
23 | benchTier.name = 'Bench'
24 | benchTier.subtext = 'Cuties waiting to be tier listed'
25 | benchTier.color_bg = '#8d96a6'
26 | benchTier.color_name = '#000000'
27 |
28 | const base_array: live2d_interface[] = l2d
29 | base_array.forEach((item) => {
30 | if (item.tl === 'nikke' || item.tl === 'NPC') {
31 | benchTier.items.push({
32 | id: item.id,
33 | name: item.name,
34 | subtext: ''
35 | })
36 | }
37 | })
38 |
39 | return benchTier
40 | }
41 |
42 | const initEmptyTier = (): tier => {
43 | return {
44 | name: '',
45 | subtext: '',
46 | color_bg: '',
47 | color_name: '',
48 | items: []
49 | }
50 | }
51 |
52 | const initTierFromConstructor = (name: string, subtext: string, color_bg: string, color_name: string): tier => {
53 | return {
54 | name: name,
55 | items: [],
56 | subtext: subtext,
57 | color_bg: color_bg,
58 | color_name: color_name
59 | }
60 | }
61 |
62 | const initDefaultTiers = (): tier[] => {
63 | return [
64 | initTierFromConstructor('SSS', 'SSS rank', '#32a852', '#050a07'),
65 | initTierFromConstructor('SS', 'SS rank', '#356296', '#050a07'),
66 | initTierFromConstructor('S', 'S rank', '#e622d8', '#050a07'),
67 | initTierFromConstructor('A', 'A rank', '#ecff17', '#050a07')
68 | ]
69 | }
70 |
71 | const randomNewTier = (): tier => {
72 | return initTierFromConstructor('New Tier', 'New Tier Subtext', returnRandomHex(), returnRandomHex())
73 | }
74 |
75 | const saveTierListToLocalStorage = (tierlist: tierlist, slot: number = 0) => {
76 | const strTier = JSON.stringify(tierlist)
77 | const aes_encrypt = CryptoJS.AES.encrypt(strTier, globalParams.CRYPTOJS_AES_KEY).toString()
78 | localStorage.setItem('tierlist_slot' + slot, aes_encrypt)
79 | }
80 |
81 | const saveTierListToLocalStorageFromImportText = (importedText: string, slot: number = 0) => {
82 | localStorage.setItem('tierlist_slot' + slot, importedText)
83 | }
84 |
85 | const retrieveTierListFromLocalStorage = (slot: number = 0): tierlist => {
86 | const localStorageContent = localStorage.getItem('tierlist_slot' + slot)
87 |
88 | try {
89 | if (localStorageContent === undefined || localStorageContent === null || localStorageContent === '') {
90 | return initDefaultTierList()
91 | } else {
92 | const aes_decrypt = CryptoJS.AES.decrypt(localStorageContent, globalParams.CRYPTOJS_AES_KEY)
93 | const tierList = JSON.parse(aes_decrypt.toString(CryptoJS.enc.Utf8)) as tierlist
94 |
95 | return tierList
96 | }
97 | } catch (e) {
98 | const defaultTierList = initDefaultTierList()
99 | saveTierListToLocalStorage(defaultTierList)
100 | return defaultTierList
101 | }
102 | }
103 |
104 | const checkForMissingCharactersAndAddToBench = (tierlist: tierlist): tierlist => {
105 | const base_array: live2d_interface[] = l2d
106 |
107 | base_array.forEach((item) => {
108 | if (item.tl === 'nikke' || item.tl === 'NPC') {
109 | let shouldAddCharacter = true
110 |
111 | tierlist.tiers.forEach((tier) => {
112 | if (shouldAddCharacter && tier.items.some((character) => character.id === item.id)) {
113 | shouldAddCharacter = false
114 | }
115 | })
116 |
117 | if (shouldAddCharacter && tierlist.benchTier.items.some((character) => character.id === item.id)) {
118 | shouldAddCharacter = false
119 | }
120 |
121 | if (shouldAddCharacter) {
122 | tierlist.benchTier.items.push({
123 | id: item.id,
124 | name: item.name,
125 | subtext: ''
126 | })
127 | }
128 | }
129 | })
130 |
131 | tierlist.benchTier.items.sort((a, b) => {
132 | if (a.id.localeCompare(b.id) > 0) {
133 | return 1
134 | } else {
135 | return -1
136 | }
137 | })
138 | return tierlist
139 | }
140 |
141 | export {
142 | initDefaultTierList,
143 | randomNewTier,
144 | saveTierListToLocalStorage,
145 | retrieveTierListFromLocalStorage,
146 | checkForMissingCharactersAndAddToBench,
147 | saveTierListToLocalStorageFromImportText
148 | }
--------------------------------------------------------------------------------
/src/utils/json/Gallery/oldtales.json:
--------------------------------------------------------------------------------
1 | {
2 | "path": "oldtales/",
3 | "type": "large",
4 | "id": "oldtales",
5 | "title": "Old Tales",
6 | "notice": "The original in-game raw images totals over 230mb. It's way too high. The images here are compressed to a total of 12.5mb, thus they aren't original quality, but fairly close. Also this is probably out of order, I skipped the event and went by image id.",
7 |
8 | "content": [
9 | {
10 | "name": "EventScene_oldtales_01_1",
11 | "text": "Old Tales 1"
12 | },
13 | {
14 | "name": "EventScene_oldtales_01_2",
15 | "text": "Old Tales 2"
16 | },
17 | {
18 | "name": "EventScene_oldtales_02_1",
19 | "text": "Old Tales 3"
20 | },
21 | {
22 | "name": "EventScene_oldtales_02_2",
23 | "text": "Old Tales 4"
24 | },
25 | {
26 | "name": "EventScene_oldtales_03_1",
27 | "text": "Old Tales 5"
28 | },
29 | {
30 | "name": "EventScene_oldtales_03_2",
31 | "text": "Old Tales 6"
32 | },
33 | {
34 | "name": "EventScene_oldtales_03_3",
35 | "text": "Old Tales 7"
36 | },
37 | {
38 | "name": "EventScene_oldtales_03_4",
39 | "text": "Old Tales 8"
40 | },
41 | {
42 | "name": "EventScene_oldtales_03_5",
43 | "text": "Old Tales 9"
44 | },
45 | {
46 | "name": "EventScene_oldtales_04",
47 | "text": "Old Tales 10"
48 | },
49 | {
50 | "name": "EventScene_oldtales_05",
51 | "text": "Old Tales 11"
52 | },
53 | {
54 | "name": "EventScene_oldtales_06_1",
55 | "text": "Old Tales 12"
56 | },
57 | {
58 | "name": "EventScene_oldtales_06_2",
59 | "text": "Old Tales 13"
60 | },
61 | {
62 | "name": "EventScene_oldtales_06_3",
63 | "text": "Old Tales 14"
64 | },
65 | {
66 | "name": "EventScene_oldtales_06_4",
67 | "text": "Old Tales 15"
68 | },
69 | {
70 | "name": "EventScene_oldtales_07_1",
71 | "text": "Old Tales 16"
72 | },
73 | {
74 | "name": "EventScene_oldtales_07_2",
75 | "text": "Old Tales 17"
76 | },
77 | {
78 | "name": "EventScene_oldtales_08_1",
79 | "text": "Old Tales 18"
80 | },
81 | {
82 | "name": "EventScene_oldtales_08_2",
83 | "text": "Old Tales 19"
84 | },
85 | {
86 | "name": "EventScene_oldtales_08_3",
87 | "text": "Old Tales 20"
88 | },
89 | {
90 | "name": "EventScene_oldtales_08_4",
91 | "text": "Old Tales 21"
92 | },
93 | {
94 | "name": "EventScene_oldtales_08_5",
95 | "text": "Old Tales 22"
96 | },
97 | {
98 | "name": "EventScene_oldtales_08_6",
99 | "text": "Old Tales 23"
100 | },
101 | {
102 | "name": "EventScene_oldtales_09",
103 | "text": "Old Tales 24"
104 | },
105 | {
106 | "name": "EventScene_oldtales_10",
107 | "text": "Old Tales 25"
108 | },
109 | {
110 | "name": "EventScene_oldtales_11_1",
111 | "text": "Old Tales 26"
112 | },
113 | {
114 | "name": "EventScene_oldtales_11_2",
115 | "text": "Old Tales 27"
116 | },
117 | {
118 | "name": "EventScene_oldtales_11_3",
119 | "text": "Old Tales 28"
120 | },
121 | {
122 | "name": "EventScene_oldtales_11_4",
123 | "text": "Old Tales 29"
124 | },
125 | {
126 | "name": "EventScene_oldtales_11_5",
127 | "text": "Old Tales 30"
128 | },
129 | {
130 | "name": "EventScene_oldtales_12_1",
131 | "text": "Old Tales 31"
132 | },
133 | {
134 | "name": "EventScene_oldtales_12_2",
135 | "text": "Old Tales 32"
136 | },
137 | {
138 | "name": "EventScene_oldtales_12_3",
139 | "text": "Old Tales 33"
140 | },
141 | {
142 | "name": "EventScene_oldtales_12_4",
143 | "text": "Old Tales 34"
144 | },
145 | {
146 | "name": "EventScene_oldtales_12_5",
147 | "text": "Old Tales 35"
148 | },
149 | {
150 | "name": "EventScene_oldtales_13_1",
151 | "text": "Old Tales 36"
152 | },
153 | {
154 | "name": "EventScene_oldtales_13_2",
155 | "text": "Old Tales 37"
156 | },
157 | {
158 | "name": "EventScene_oldtales_13_3",
159 | "text": "Old Tales 38"
160 | },
161 | {
162 | "name": "EventScene_oldtales_14",
163 | "text": "Old Tales 39"
164 | },
165 | {
166 | "name": "EventScene_oldtales_15",
167 | "text": "Old Tales 40"
168 | },
169 | {
170 | "name": "EventScene_oldtales_16",
171 | "text": "Old Tales 41"
172 | },
173 | {
174 | "name": "EventScene_oldtales_17_1",
175 | "text": "Old Tales 42"
176 | },
177 | {
178 | "name": "EventScene_oldtales_17_2",
179 | "text": "Old Tales 43"
180 | },
181 | {
182 | "name": "EventScene_oldtales_17_3",
183 | "text": "Old Tales 44"
184 | },
185 | {
186 | "name": "EventScene_oldtales_18_1",
187 | "text": "Old Tales 45"
188 | },
189 | {
190 | "name": "EventScene_oldtales_18_2",
191 | "text": "Old Tales 46"
192 | },
193 | {
194 | "name": "EventScene_oldtales_18_3",
195 | "text": "Old Tales 47"
196 | },
197 | {
198 | "name": "EventScene_oldtales_18_4",
199 | "text": "Old Tales 48"
200 | },
201 | {
202 | "name": "EventScene_oldtales_18_5",
203 | "text": "Old Tales 49"
204 | },
205 | {
206 | "name": "EventScene_oldtales_19_1",
207 | "text": "Old Tales 50"
208 | },
209 | {
210 | "name": "EventScene_oldtales_19_2",
211 | "text": "Old Tales 51"
212 | },
213 | {
214 | "name": "EventScene_oldtales_20",
215 | "text": "Old Tales 52"
216 | },
217 | {
218 | "name": "EventScene_oldtales_21",
219 | "text": "Old Tales 53"
220 | }
221 | ]
222 | }
--------------------------------------------------------------------------------