增加#心海图鉴
功能,可查看突破材料及常用武器
21
CHANGELOG.md
@ -1,6 +1,16 @@
|
||||
# 1.10.3
|
||||
# 1.10.4
|
||||
|
||||
* 角色面板支持旅行者,暂未支持伤害计算
|
||||
* 增加`#心海图鉴`功能,可查看突破材料及常用武器
|
||||
* 功能尚未完全稳定,信息还在继续补全中
|
||||
* 如无需使用,master可通过`#喵喵设置图鉴关闭`关闭,防止覆盖图鉴插件等图鉴功能
|
||||
|
||||
# 1.10.1~1.10.3
|
||||
|
||||
* `#刻晴面板`、`#芭芭拉圣遗物`支持展示角色时装
|
||||
* 如果角色装备了时装,面板的角色图会展示时装立绘
|
||||
* 需要重新`#更新面板`以获取时装数据
|
||||
* 增加赛诺、妮露、坎蒂丝的角色信息,可以通过`#妮露天赋`、`#妮露命座`查看角色信息了
|
||||
* 角色面板支持旅行者,暂未支持伤害计算及圣遗物评分
|
||||
* 需要重新更新旅行者的面板数据
|
||||
* `#雷主天赋`、`#草主命座`功能升级
|
||||
* 页面样式微调,内部处理逻辑升级
|
||||
@ -8,13 +18,6 @@
|
||||
* 框架底层角色相关逻辑重构,角色图像资源迁移为webp格式
|
||||
* 若遇到图像资源无法正常展示,可联系喵喵反馈
|
||||
|
||||
# 1.10.1
|
||||
|
||||
* `#刻晴面板`、`#芭芭拉圣遗物`支持展示角色时装
|
||||
* 如果角色装备了时装,面板的角色图会展示时装立绘
|
||||
* 需要重新`#更新面板`以获取时装数据
|
||||
* 增加赛诺、妮露、坎蒂丝的角色信息,可以通过`#妮露天赋`、`#妮露命座`查看角色信息了
|
||||
|
||||
# 1.10.0
|
||||
|
||||
* 新增`#面板练度统计`功能
|
||||
|
@ -87,7 +87,7 @@ let rule = {
|
||||
describe: '【#角色】 #深渊组队'
|
||||
},
|
||||
wiki: {
|
||||
reg: '^(#|喵喵)?.*(天赋|技能|命座|命之座|资料|照片|写真|图片|图像)$',
|
||||
reg: '^(#|喵喵)?.*(天赋|技能|命座|命之座|资料|图鉴|照片|写真|图片|图像)$',
|
||||
describe: '【#资料】 #神里天赋 #夜兰命座'
|
||||
},
|
||||
help: {
|
||||
|
@ -7,19 +7,18 @@
|
||||
import fetch from 'node-fetch'
|
||||
import { Data } from '../../components/index.js'
|
||||
|
||||
const host = 'http://49.232.91.210:88/miaoPlugin/hutaoApi'
|
||||
const host = 'http://miaoapi.cn/api/hutao'
|
||||
|
||||
function getApi (api) {
|
||||
return `${host}?api=${api}`
|
||||
}
|
||||
|
||||
let HutaoApi = {
|
||||
async req (url, param = {}) {
|
||||
async req (url, param = {}, EX = 3600) {
|
||||
let cacheData = await Data.getCacheJSON(`hutao:${url}`)
|
||||
if (cacheData && param.method !== 'POST') {
|
||||
if (cacheData && cacheData.data && param.method !== 'POST') {
|
||||
return cacheData
|
||||
}
|
||||
|
||||
let response = await fetch(getApi(`${url}`), {
|
||||
...param,
|
||||
method: param.method || 'GET'
|
||||
@ -28,7 +27,7 @@ let HutaoApi = {
|
||||
if (retData && retData.data && param.method !== 'POST') {
|
||||
let d = new Date()
|
||||
retData.lastUpdate = `${d.toLocaleDateString()} ${d.toTimeString().substr(0, 5)}`
|
||||
await Data.setCacheJSON(`hutao:${url}`, retData, 3600)
|
||||
await Data.setCacheJSON(`hutao:${url}`, retData, EX)
|
||||
}
|
||||
return retData
|
||||
},
|
||||
@ -54,6 +53,14 @@ let HutaoApi = {
|
||||
return await HutaoApi.req('/Statistics/Overview')
|
||||
},
|
||||
|
||||
async getWeaponUsage () {
|
||||
return await HutaoApi.req('/Statistics/AvatarWeaponUsage')
|
||||
},
|
||||
|
||||
async getArtisUsage () {
|
||||
return await HutaoApi.req('/Statistics/AvatarReliquaryUsage')
|
||||
},
|
||||
|
||||
async upload (data) {
|
||||
let body = JSON.stringify(data)
|
||||
return await HutaoApi.req('/Record/Upload', {
|
||||
|
48
apps/wiki.js
@ -2,7 +2,8 @@ import { segment } from 'oicq'
|
||||
import lodash from 'lodash'
|
||||
import Calendar from './wiki/calendar.js'
|
||||
import { Format, Cfg, Common } from '../components/index.js'
|
||||
import { Character } from '../models/index.js'
|
||||
import { Character, Weapon } from '../models/index.js'
|
||||
import HutaoApi from './stat/HutaoApi.js'
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
let action = {
|
||||
@ -16,7 +17,7 @@ export async function wiki (e) {
|
||||
return false
|
||||
}
|
||||
|
||||
let reg = /#?(.+)(命座|命之座|天赋|技能|资料|照片|写真|图片|图像)$/
|
||||
let reg = /#?(.+)(命座|命之座|天赋|技能|资料|图鉴|照片|写真|图片|图像)$/
|
||||
let msg = e.msg
|
||||
let ret = reg.exec(msg)
|
||||
|
||||
@ -27,12 +28,14 @@ export async function wiki (e) {
|
||||
let mode = 'talent'
|
||||
if (/命/.test(ret[2])) {
|
||||
mode = 'cons'
|
||||
} else if (/(图鉴|资料)/.test(ret[2])) {
|
||||
mode = 'wiki'
|
||||
} else if (/图|画|写真|照片/.test(ret[2])) {
|
||||
mode = 'pic'
|
||||
}
|
||||
|
||||
if ((mode === 'pic' && Common.isDisable(e, 'wiki.pic')) ||
|
||||
(mode !== 'pic' && Common.isDisable('wiki.wiki'))) {
|
||||
(mode !== 'pic' && Common.isDisable(e, 'wiki.wiki'))) {
|
||||
return
|
||||
}
|
||||
|
||||
@ -50,7 +53,6 @@ export async function wiki (e) {
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
if (char.isCustom) {
|
||||
e.reply('暂不支持自定义角色')
|
||||
return true
|
||||
@ -59,18 +61,47 @@ export async function wiki (e) {
|
||||
for (let i = 1; i <= 15; i++) {
|
||||
lvs.push('Lv' + i)
|
||||
}
|
||||
return await Common.render('wiki/character', {
|
||||
save_id: '天赋' + char.name,
|
||||
if (mode === 'wiki') {
|
||||
return await renderWiki({ e, char })
|
||||
}
|
||||
return await Common.render('wiki/character-talent', {
|
||||
saveId: `${mode}-${char.id}-${char.elem}`,
|
||||
...char.getData(),
|
||||
detail: char.getDetail(),
|
||||
imgs: char.getImgs(),
|
||||
mode,
|
||||
lvs,
|
||||
line: getLineData(char),
|
||||
_char: `/meta/character/${char.name}/`
|
||||
line: getLineData(char)
|
||||
}, { e, scale: 1.1 })
|
||||
}
|
||||
|
||||
async function renderWiki ({ e, char }) {
|
||||
let data = char.getData()
|
||||
lodash.extend(data, char.getData('weaponType,elemName'))
|
||||
let wu = (await HutaoApi.getWeaponUsage()).data || {}
|
||||
let weapons = []
|
||||
if (wu[char.id]) {
|
||||
lodash.forEach(wu[char.id], (ds) => {
|
||||
let weapon = Weapon.get(ds.name) || {}
|
||||
weapons.push({
|
||||
name: ds.name,
|
||||
star: weapon.star || 4,
|
||||
value: Format.percent(ds.value, 1)
|
||||
})
|
||||
})
|
||||
}
|
||||
return await Common.render('wiki/character-wiki', {
|
||||
saveId: `info-${char.id}`,
|
||||
data,
|
||||
attr: char.getAttrList(),
|
||||
detail: char.getDetail(),
|
||||
imgs: char.getImgs(),
|
||||
weapons,
|
||||
materials: char.getMaterials(),
|
||||
elem: char.elem
|
||||
}, { e, scale: 1.4 })
|
||||
}
|
||||
|
||||
const getLineData = function (char) {
|
||||
let ret = []
|
||||
const attrMap = {
|
||||
@ -84,7 +115,6 @@ const getLineData = function (char) {
|
||||
heal: '治疗',
|
||||
dmg: char.elemName + '伤',
|
||||
phy: '物伤'
|
||||
|
||||
}
|
||||
lodash.forEach({ hp: '基础生命', atk: '基础攻击', def: '基础防御' }, (label, key) => {
|
||||
ret.push({
|
||||
|
@ -201,8 +201,17 @@ let Data = {
|
||||
fn(str.trim ? str.trim() : str, idx)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
regRet (reg, txt, idx) {
|
||||
if (reg && txt) {
|
||||
let ret = reg.exec(txt)
|
||||
if (ret && ret[idx]) {
|
||||
return ret[idx]
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
export default Data
|
||||
|
@ -70,7 +70,7 @@ export const characters = {
|
||||
|
||||
// 3.0
|
||||
10000069: ['提纳里', 'Tighnari', '提那里', '小提', '驴'],
|
||||
10000067: ['柯莱', 'Collei', '柯来', '科莱', '科来', '小天使', '须弥安柏', '安柏', '须弥飞行冠军'],
|
||||
10000067: ['柯莱', 'Collei', '柯来', '科莱', '科来', '小天使', '须弥安柏', '草安柏', '须弥飞行冠军'],
|
||||
10000068: ['多莉', 'Dori', '多利', '多力'],
|
||||
10000070: ['妮露', 'nilou', '尼露', '妮璐', '舞娘', '红牛'],
|
||||
10000071: ['赛诺', 'cyno', '塞诺', '胡狼'],
|
||||
|
@ -19,7 +19,14 @@ export default class Base {
|
||||
return Data.getVal(this, key, defaultValue)
|
||||
}
|
||||
|
||||
_expire (time = 10 * 60) {
|
||||
_getCache (uuid = '', time = 10 * 60) {
|
||||
if (uuid && cacheMap[uuid]) {
|
||||
return cacheMap[uuid]._setCache(time)
|
||||
}
|
||||
this._uuid = uuid
|
||||
}
|
||||
|
||||
_setCache (time = 10 * 60) {
|
||||
let id = this._uuid
|
||||
if (id) {
|
||||
reFn[id] && clearTimeout(reFn[id])
|
||||
@ -35,7 +42,5 @@ export default class Base {
|
||||
}
|
||||
}
|
||||
Base.get = (id, time = 10 * 60) => {
|
||||
if (cacheMap[id]) {
|
||||
return cacheMap[id]._expire(time)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,39 +4,35 @@ import { Data } from '../components/index.js'
|
||||
import CharImg from './character-lib/CharImg.js'
|
||||
import CharTalent from './character-lib/CharTalent.js'
|
||||
import CharId from './character-lib/CharId.js'
|
||||
import CharMeta from './character-lib/CharMeta.js'
|
||||
|
||||
const _path = process.cwd()
|
||||
let { abbrMap, wifeMap, idSort } = CharId
|
||||
|
||||
class Character extends Base {
|
||||
constructor ({ id, name = '', elem = '' }) {
|
||||
super()
|
||||
let uuid = CharId.isTraveler(id) ? `character:${id}:${elem || 'anemo'}` : `character:${id}`
|
||||
// 检查缓存
|
||||
let cacheObj = Base.get(uuid)
|
||||
let cacheObj = this._getCache(CharId.isTraveler(id) ? `character:${id}:${elem || 'anemo'}` : `character:${id}`)
|
||||
if (cacheObj) {
|
||||
return cacheObj
|
||||
}
|
||||
// 设置数据
|
||||
this.id = id
|
||||
this.name = name
|
||||
this._uuid = uuid
|
||||
if (!this.isCustom) {
|
||||
let meta = getMeta(name)
|
||||
this.meta = meta
|
||||
for (let key of this._dataKey.split(',')) {
|
||||
if (key === 'elem') {
|
||||
this.elem = CharId.getElem(elem || meta.elem) || 'anemo'
|
||||
} else {
|
||||
this[key] = meta[key]
|
||||
}
|
||||
for (let key of 'abbr,title,star,allegiance,weapon,astro,cncv,jpcv,ver,desc,talentCons'.split(',')) {
|
||||
this[key] = meta[key]
|
||||
}
|
||||
this.elem = CharId.getElem(elem || meta.elem) || 'anemo'
|
||||
} else {
|
||||
this.meta = {}
|
||||
}
|
||||
return this._expire()
|
||||
return this._setCache()
|
||||
}
|
||||
|
||||
// 默认获取的数据
|
||||
_dataKey = 'id,name,abbr,title,star,elem,allegiance,weapon,birthday,astro,cncv,jpcv,ver,desc,talentCons'
|
||||
|
||||
// 是否为自定义角色
|
||||
@ -82,6 +78,15 @@ class Character extends Base {
|
||||
return this.getDetail()
|
||||
}
|
||||
|
||||
getAttrList () {
|
||||
let meta = this.meta
|
||||
return CharMeta.getAttrList(meta.baseAttr, meta.growAttr, this.elemName)
|
||||
}
|
||||
|
||||
getMaterials () {
|
||||
return CharMeta.getMaterials(this)
|
||||
}
|
||||
|
||||
// 获取基础数据
|
||||
get baseAttr () {
|
||||
return this.meta.baseAttr
|
||||
@ -92,6 +97,15 @@ class Character extends Base {
|
||||
return this.meta.growAttr
|
||||
}
|
||||
|
||||
get birthday () {
|
||||
let birth = this.meta.birth
|
||||
if (!birth) {
|
||||
return ''
|
||||
}
|
||||
birth = birth.split('-')
|
||||
return `${birth[0]}月${birth[1]}日`
|
||||
}
|
||||
|
||||
// 获取角色character-img图片
|
||||
getCardImg (se = false, def = true) {
|
||||
if (this.name === '旅行者') {
|
||||
|
89
models/Material.js
Normal file
@ -0,0 +1,89 @@
|
||||
import lodash from 'lodash'
|
||||
import Base from './Base.js'
|
||||
import { Data } from '../components/index.js'
|
||||
import MaterialMeta from './material-lib/MaterialMeta.js'
|
||||
|
||||
|
||||
let data = Data.readJSON('resources/meta/material/data.json')
|
||||
let mMap = {}
|
||||
let getItem = (ds) => {
|
||||
mMap[ds.name] = {
|
||||
type: ds.type,
|
||||
name: ds.name,
|
||||
star: ds.star
|
||||
}
|
||||
return mMap[ds.name]
|
||||
}
|
||||
lodash.forEach(data, (ds) => {
|
||||
let ret = getItem(ds)
|
||||
if (ds.items) {
|
||||
let items = {}
|
||||
lodash.forEach(ds.items, (item) => {
|
||||
getItem(item)
|
||||
items[item.star] = item.title
|
||||
})
|
||||
ret.items = items
|
||||
}
|
||||
})
|
||||
|
||||
class Material extends Base {
|
||||
constructor (name) {
|
||||
super(name)
|
||||
let meta = mMap[name]
|
||||
if (!meta) {
|
||||
return false
|
||||
}
|
||||
let cache = this._getCache(`material:${name}`)
|
||||
if (cache) {
|
||||
return cache
|
||||
}
|
||||
this.name = meta.name
|
||||
this.meta = meta
|
||||
this.type = meta.type
|
||||
this.star = meta.star
|
||||
return this._setCache()
|
||||
}
|
||||
|
||||
get abbr () {
|
||||
if (this.type === 'talent') {
|
||||
return Data.regRet(/「(.+)」/, this.name, 1) || this.name
|
||||
}
|
||||
return this.name
|
||||
}
|
||||
|
||||
get title () {
|
||||
return this.name
|
||||
}
|
||||
|
||||
get label () {
|
||||
let abbr = this.abbr
|
||||
if (this.type === 'talent') {
|
||||
return MaterialMeta.getTalentLabel(abbr)
|
||||
}
|
||||
return abbr
|
||||
}
|
||||
|
||||
get img () {
|
||||
return `meta/material/${this.type}/${this.name}.webp`
|
||||
}
|
||||
|
||||
get icon () {
|
||||
return this.img
|
||||
}
|
||||
|
||||
getSource () {
|
||||
if (this.type === 'talent') {
|
||||
return MaterialMeta.getTalentWeek(this.name)
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
|
||||
Material.get = function (name) {
|
||||
if (mMap[name]) {
|
||||
return new Material(name)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
export default Material
|
@ -25,13 +25,12 @@ export default class ProfileDmg extends Base {
|
||||
let talentData = profile.talent || {}
|
||||
lodash.forEach(['a', 'e', 'q'], (key) => {
|
||||
let level = lodash.isNumber(talentData[key]) ? talentData[key] : (talentData[key].level || 1)
|
||||
|
||||
let map = {}
|
||||
|
||||
lodash.forEach(char.detail.talent[key].tables, (tr) => {
|
||||
let val = tr.values[level - 1]
|
||||
// eslint-disable-next-line no-control-regex
|
||||
val = val.replace(/[^\x00-\xff]/g, '').trim()
|
||||
val = val.replace(/[a-zA-Z]/g, '').trim()
|
||||
let valArr = []
|
||||
let valArr2 = []
|
||||
lodash.forEach(val.split('/'), (v, idx) => {
|
||||
|
53
models/Weapon.js
Normal file
@ -0,0 +1,53 @@
|
||||
import lodash from 'lodash'
|
||||
import Base from './Base.js'
|
||||
import { Data } from '../components/index.js'
|
||||
|
||||
let data = Data.readJSON('resources/meta/weapons/data.json')
|
||||
let wData = {}
|
||||
lodash.forEach(data, (ds) => {
|
||||
wData[ds.name] = ds
|
||||
})
|
||||
|
||||
class Weapon extends Base {
|
||||
constructor (name) {
|
||||
super(name)
|
||||
let meta = wData[name]
|
||||
if (!meta) {
|
||||
return false
|
||||
}
|
||||
let cache = this._getCache(`weapon:${name}`)
|
||||
if (cache) {
|
||||
return cache
|
||||
}
|
||||
this.name = meta.name
|
||||
this.meta = meta
|
||||
this.type = meta.type
|
||||
this.star = meta.star
|
||||
return this._setCache()
|
||||
}
|
||||
|
||||
get abbr () {
|
||||
return this.name
|
||||
}
|
||||
|
||||
get title () {
|
||||
return this.name
|
||||
}
|
||||
|
||||
get img () {
|
||||
return `meta/weapons/icons/${this.name}.webp`
|
||||
}
|
||||
|
||||
get icon () {
|
||||
return this.img
|
||||
}
|
||||
}
|
||||
|
||||
Weapon.get = function (name) {
|
||||
if (wData[name]) {
|
||||
return new Weapon(name)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
export default Weapon
|
@ -1,3 +1,7 @@
|
||||
import lodash from 'lodash'
|
||||
import { Material } from '../index.js'
|
||||
import { Format, Data } from '../../components/index.js'
|
||||
|
||||
// 角色排序
|
||||
export const charPosIdx = {
|
||||
1: '宵宫,雷神,胡桃,甘雨,优菈,一斗,公子,绫人,魈,可莉,迪卢克,凝光,刻晴,辛焱,烟绯,雷泽',
|
||||
@ -16,3 +20,77 @@ export const elemAlias = {
|
||||
hydro: '水,枫丹',
|
||||
cryo: '冰,至冬'
|
||||
}
|
||||
|
||||
export const baseAttrName = {
|
||||
hp: '基础生命',
|
||||
atk: '基础攻击',
|
||||
def: '基础防御'
|
||||
}
|
||||
export const growAttrName = {
|
||||
atkPct: '大攻击',
|
||||
hpPct: '大生命',
|
||||
defPct: '大防御',
|
||||
cpct: '暴击',
|
||||
cdmg: '爆伤',
|
||||
recharge: '充能',
|
||||
mastery: '精通',
|
||||
heal: '治疗',
|
||||
phy: '物伤'
|
||||
}
|
||||
|
||||
const mKeys = [{
|
||||
key: 'gem',
|
||||
num: '1/9/6/6'
|
||||
}, {
|
||||
key: 'boss',
|
||||
num: '46',
|
||||
check: (char) => !char.isTraveler
|
||||
}, {
|
||||
key: 'normal',
|
||||
num: '18/30/36'
|
||||
}, {
|
||||
key: 'specialty',
|
||||
num: '168'
|
||||
}, {
|
||||
key: 'talent'
|
||||
}, {
|
||||
key: 'weekly',
|
||||
star: 5
|
||||
}]
|
||||
|
||||
const CharMeta = {
|
||||
getAttrList (base, grow, elem = '') {
|
||||
let ret = []
|
||||
lodash.forEach(base, (v, k) => {
|
||||
ret.push({
|
||||
title: baseAttrName[k],
|
||||
value: Format.comma(v, 1)
|
||||
})
|
||||
})
|
||||
ret.push({
|
||||
title: '成长·' + (grow.key === 'dmg' ? `${elem}伤` : growAttrName[grow.key]),
|
||||
value: grow.value
|
||||
})
|
||||
return ret
|
||||
},
|
||||
getMaterials (char) {
|
||||
let ds = char.meta.materials
|
||||
let ret = []
|
||||
lodash.forEach(mKeys, (cfg) => {
|
||||
let title = ds[cfg.key]
|
||||
let mat = Material.get(title)
|
||||
if (!mat) {
|
||||
return
|
||||
}
|
||||
if (cfg.check && !cfg.check(char)) {
|
||||
return
|
||||
}
|
||||
ret.push({
|
||||
...mat.getData('label,star,icon,type'),
|
||||
num: cfg.num || mat.getSource() || ''
|
||||
})
|
||||
})
|
||||
return ret
|
||||
}
|
||||
}
|
||||
export default CharMeta
|
||||
|
@ -1,6 +1,7 @@
|
||||
import lodash from 'lodash';
|
||||
import lodash from 'lodash'
|
||||
|
||||
const CharTalent = {
|
||||
// 处理获取天赋数据
|
||||
getAvatarTalent (id, talent, cons, mode, consTalent = {}) {
|
||||
let ret = {}
|
||||
lodash.forEach(['a', 'e', 'q'], (key) => {
|
||||
@ -8,37 +9,34 @@ const CharTalent = {
|
||||
if (!ds) {
|
||||
ds = 1
|
||||
}
|
||||
let value
|
||||
let level
|
||||
let original
|
||||
let aPlus = id === 10000033
|
||||
if (lodash.isNumber(ds)) {
|
||||
level = ds
|
||||
} else {
|
||||
level = mode === 'level' ? ds.level || ds.level_current || ds.original || ds.level_original : ds.original || ds.level_original || ds.level || ds.level_current
|
||||
value = ds
|
||||
}
|
||||
if (mode === 'level') {
|
||||
// 基于level计算original
|
||||
ret[key] = {
|
||||
level,
|
||||
original: (key !== 'a' && cons >= consTalent[key]) ? (level - 3) : level
|
||||
value = value || ds.level || ds.level_current || ds.original || ds.level_original
|
||||
level = value
|
||||
if (key === 'a') {
|
||||
original = aPlus ? value - 1 : value
|
||||
} else {
|
||||
original = cons >= consTalent[key] ? (value - 3) : value
|
||||
}
|
||||
} else {
|
||||
// 基于original计算level
|
||||
ret[key] = {
|
||||
original: level,
|
||||
level: (key !== 'a' && cons >= consTalent[key]) ? (level + 3) : level
|
||||
value = value || ds.original || ds.level_original || ds.level || ds.level_current
|
||||
original = value
|
||||
if (key === 'a') {
|
||||
level = aPlus ? value + 1 : value
|
||||
} else {
|
||||
level = cons >= consTalent[key] ? (value + 3) : value
|
||||
}
|
||||
}
|
||||
ret[key] = { level, original }
|
||||
})
|
||||
if (this.id * 1 !== 10000033) {
|
||||
let a = ret.a || {}
|
||||
if (a.level > 10) {
|
||||
a.level = 10
|
||||
a.original = 10
|
||||
}
|
||||
}
|
||||
if (this.id * 1 === 10000033) {
|
||||
let a = ret.a || {}
|
||||
a.original = a.level - 1
|
||||
}
|
||||
return ret
|
||||
},
|
||||
|
||||
|
@ -8,5 +8,20 @@ import ProfileReq from './ProfileReq.js'
|
||||
import ProfileData from './ProfileData.js'
|
||||
import ProfileArtis from './ProfileArtis.js'
|
||||
import ProfileDmg from './ProfileDmg.js'
|
||||
import Material from './Material.js'
|
||||
import Weapon from './Weapon.js'
|
||||
|
||||
export { Base, Abyss, Character, Artifact, Avatars, ProfileServ, ProfileReq, ProfileData, ProfileArtis, ProfileDmg }
|
||||
export {
|
||||
Base,
|
||||
Abyss,
|
||||
Character,
|
||||
Artifact,
|
||||
Avatars,
|
||||
ProfileServ,
|
||||
ProfileReq,
|
||||
ProfileData,
|
||||
ProfileArtis,
|
||||
ProfileDmg,
|
||||
Material,
|
||||
Weapon
|
||||
}
|
||||
|
52
models/material-lib/MaterialMeta.js
Normal file
@ -0,0 +1,52 @@
|
||||
import lodash from 'lodash'
|
||||
import { Data } from '../../components/index.js'
|
||||
|
||||
const talentMeta = {
|
||||
自由: { week: 1, city: '蒙德' },
|
||||
繁荣: { week: 1, city: '璃月' },
|
||||
浮世: { week: 1, city: '稻妻' },
|
||||
诤言: { week: 1, city: '须弥' },
|
||||
|
||||
抗争: { week: 2, city: '蒙德' },
|
||||
勤劳: { week: 2, city: '璃月' },
|
||||
风雅: { week: 2, city: '稻妻' },
|
||||
巧思: { week: 2, city: '须弥' },
|
||||
|
||||
诗文: { week: 3, city: '蒙德' },
|
||||
黄金: { week: 3, city: '璃月' },
|
||||
天光: { week: 3, city: '稻妻' },
|
||||
笃行: { week: 3, city: '须弥' },
|
||||
}
|
||||
|
||||
const talentReg = new RegExp(`(${lodash.keys(talentMeta).join('|')})`)
|
||||
|
||||
let MaterialMeta = {
|
||||
getTalentData (talent) {
|
||||
talent = MaterialMeta.getTalentKey(talent)
|
||||
return talentMeta[talent]
|
||||
},
|
||||
getTalentKey (name) {
|
||||
return Data.regRet(talentReg, name, 1) || name
|
||||
},
|
||||
getTalentLabel (t) {
|
||||
let key = MaterialMeta.getTalentKey(t)
|
||||
let tm = MaterialMeta.getTalentData(key)
|
||||
if (!tm) {
|
||||
return t
|
||||
}
|
||||
return `${tm.city}·${key}`
|
||||
},
|
||||
getTalentWeek (t) {
|
||||
let tm = MaterialMeta.getTalentData(t)
|
||||
switch (tm.week) {
|
||||
case 1:
|
||||
return '周一/周四'
|
||||
case 2:
|
||||
return '周二/周五'
|
||||
case 3:
|
||||
return '周三/周六'
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
export default MaterialMeta
|
@ -383,16 +383,64 @@ ul.cont-msg li strong,
|
||||
.item-icon.star1 {
|
||||
background-image: url("../common/item/bg1.png");
|
||||
}
|
||||
.item-icon.opacity-bg.star1 {
|
||||
background-image: url("../common/item/bg1-o.png");
|
||||
}
|
||||
.item-icon.star2 {
|
||||
background-image: url("../common/item/bg2.png");
|
||||
}
|
||||
.item-icon.opacity-bg.star2 {
|
||||
background-image: url("../common/item/bg2-o.png");
|
||||
}
|
||||
.item-icon.star3 {
|
||||
background-image: url("../common/item/bg3.png");
|
||||
}
|
||||
.item-icon.opacity-bg.star3 {
|
||||
background-image: url("../common/item/bg3-o.png");
|
||||
}
|
||||
.item-icon.star4 {
|
||||
background-image: url("../common/item/bg4.png");
|
||||
}
|
||||
.item-icon.opacity-bg.star4 {
|
||||
background-image: url("../common/item/bg4-o.png");
|
||||
}
|
||||
.item-icon.star5 {
|
||||
background-image: url("../common/item/bg5.png");
|
||||
}
|
||||
.item-icon.opacity-bg.star5 {
|
||||
background-image: url("../common/item/bg5-o.png");
|
||||
}
|
||||
.item-list {
|
||||
display: flex;
|
||||
}
|
||||
.item-list .item-card {
|
||||
width: 70px;
|
||||
background: #e7e5d9;
|
||||
}
|
||||
.item-list .item-icon {
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 12px;
|
||||
}
|
||||
.item-list .item-title {
|
||||
color: #222;
|
||||
font-size: 13px;
|
||||
text-align: center;
|
||||
padding: 2px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
.item-list .item-icon {
|
||||
height: initial;
|
||||
}
|
||||
.item-list .item-badge {
|
||||
position: absolute;
|
||||
display: block;
|
||||
left: -1px;
|
||||
top: -1px;
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
font-size: 12px;
|
||||
color: #fff;
|
||||
padding: 4px 5px 3px;
|
||||
border-radius: 4px 0 4px 0;
|
||||
}
|
||||
/*# sourceMappingURL=common.css.map */
|
@ -330,5 +330,47 @@ ul.cont-msg, .cont-footer ul {
|
||||
&.star@{value} {
|
||||
background-image: url("../common/item/bg@{value}.png");
|
||||
}
|
||||
&.opacity-bg.star@{value} {
|
||||
background-image: url("../common/item/bg@{value}-o.png");
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
.item-list {
|
||||
display: flex;
|
||||
|
||||
.item-card {
|
||||
width: 70px;
|
||||
background: #e7e5d9;
|
||||
}
|
||||
|
||||
.item-icon {
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 12px;
|
||||
}
|
||||
|
||||
.item-title {
|
||||
color: #222;
|
||||
font-size: 13px;
|
||||
text-align: center;
|
||||
padding: 2px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.item-icon {
|
||||
height: initial;
|
||||
}
|
||||
|
||||
.item-badge {
|
||||
position: absolute;
|
||||
display: block;
|
||||
left: -1px;
|
||||
top: -1px;
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
font-size: 12px;
|
||||
color: #fff;
|
||||
padding: 4px 5px 3px;
|
||||
border-radius: 4px 0 4px 0;
|
||||
}
|
||||
}
|
BIN
resources/common/item/bg1-o.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
resources/common/item/bg2-o.png
Normal file
After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
BIN
resources/common/item/bg3-o.png
Normal file
After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 23 KiB |
BIN
resources/common/item/bg4-o.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
resources/common/item/bg5-o.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
resources/common/item/bg5.psd
Normal file
@ -7,7 +7,7 @@
|
||||
"elem": "cryo",
|
||||
"allegiance": "不卜庐",
|
||||
"weapon": "sword",
|
||||
"britydah": "3-3",
|
||||
"birth": "3-3",
|
||||
"astro": "三清铃座",
|
||||
"desc": "药庐「不卜庐」的采药姑娘兼学徒,面色苍白如纸的不死之人。话很少,也没有什么表情。",
|
||||
"cncv": "宴宁",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "electro",
|
||||
"allegiance": "西风骑士团",
|
||||
"weapon": "catalyst",
|
||||
"britydah": "6-9",
|
||||
"birth": "6-9",
|
||||
"astro": "沙漏座",
|
||||
"desc": "慵懒而博学的图书管理员,须弥教令院「两百年一见」的天才毕业生。",
|
||||
"cncv": "钟可",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "electro",
|
||||
"allegiance": "荒泷派",
|
||||
"weapon": "sword",
|
||||
"britydah": "7-27",
|
||||
"birth": "7-27",
|
||||
"astro": "烦恼刈座",
|
||||
"desc": "干练可靠的「荒泷派」的副手——特别注明:干练可靠形容的不是「荒泷派」而是副手。",
|
||||
"cncv": "杨凝",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "electro",
|
||||
"allegiance": "天领奉行",
|
||||
"weapon": "bow",
|
||||
"britydah": "7-14",
|
||||
"birth": "7-14",
|
||||
"astro": "羽团扇座",
|
||||
"desc": "「天领奉行」的大将,杀伐果断,骁勇善战。",
|
||||
"cncv": "杨梦露",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "geo",
|
||||
"allegiance": "云翰社",
|
||||
"weapon": "polearm",
|
||||
"britydah": "5-21",
|
||||
"birth": "5-21",
|
||||
"astro": "虹章座",
|
||||
"desc": "集剧作与演唱能力于一身的璃月戏曲名角。风格自成一派,雅致柔美,恰如其人。",
|
||||
"cncv": "贺文潇&杨扬",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "geo",
|
||||
"allegiance": "海祇岛",
|
||||
"weapon": "bow",
|
||||
"britydah": "5-18",
|
||||
"birth": "5-18",
|
||||
"astro": "柴犬座",
|
||||
"desc": "海祇岛军的大将,深受部下信赖。",
|
||||
"cncv": "杨昕燃",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "cryo",
|
||||
"allegiance": "西风骑士团",
|
||||
"weapon": "claymore",
|
||||
"britydah": "10-25",
|
||||
"birth": "10-25",
|
||||
"astro": "浪沫座",
|
||||
"desc": "古老家族出身的「浪花骑士」,西风骑士团游击小队队长。身为旧贵族后裔却加入了堪称死对头的西风骑士团,该事件至今仍是蒙德一大谜团。",
|
||||
"cncv": "子音",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "electro",
|
||||
"allegiance": "鸣神大社",
|
||||
"weapon": "catalyst",
|
||||
"britydah": "6-27",
|
||||
"birth": "6-27",
|
||||
"astro": "仙狐座",
|
||||
"desc": "鸣神大社的宫司大人,兼任「八重堂」总编。艳丽动人的外表下藏着令人意想不到的聪慧与狡黠。",
|
||||
"cncv": "杜冥鸦",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "geo",
|
||||
"allegiance": "璃月七星",
|
||||
"weapon": "catalyst",
|
||||
"britydah": "8-26",
|
||||
"birth": "8-26",
|
||||
"astro": "玑衡仪座",
|
||||
"desc": "「璃月七星」中的「天权」,其名下财富之多,全大陆鲜有人能望其项背。",
|
||||
"cncv": "杜冥鸦",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "cryo",
|
||||
"allegiance": "西风骑士团",
|
||||
"weapon": "sword",
|
||||
"britydah": "11-30",
|
||||
"birth": "11-30",
|
||||
"astro": "孔雀羽座",
|
||||
"desc": "异国面容的剑斗士,西风骑士团的头脑派人物。",
|
||||
"cncv": "孙晔",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "electro",
|
||||
"allegiance": "璃月七星",
|
||||
"weapon": "sword",
|
||||
"britydah": "11-20",
|
||||
"birth": "11-20",
|
||||
"astro": "金紫定垂座",
|
||||
"desc": "璃月七星之一,玉衡星。对「帝君一言而决的璃月」颇有微词——但实际上,神挺欣赏她这样的人。",
|
||||
"cncv": "谢莹",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "electro",
|
||||
"allegiance": "南十字船队",
|
||||
"weapon": "claymore",
|
||||
"britydah": "2-14",
|
||||
"birth": "2-14",
|
||||
"astro": "南天海山座",
|
||||
"desc": "武装船队「南十字」的首领,豪快的大姐头。",
|
||||
"cncv": "唐雅菁",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "pyro",
|
||||
"allegiance": "西风骑士团",
|
||||
"weapon": "catalyst",
|
||||
"britydah": "7-27",
|
||||
"birth": "7-27",
|
||||
"astro": "四叶草座",
|
||||
"desc": "西风骑士团禁闭室的常客,蒙德的爆破大师。人称「逃跑的太阳」。",
|
||||
"cncv": "花玲",
|
||||
|
Before Width: | Height: | Size: 396 KiB After Width: | Height: | Size: 403 KiB |
@ -7,7 +7,7 @@
|
||||
"elem": "hydro",
|
||||
"allegiance": "???",
|
||||
"weapon": "polearm",
|
||||
"britydah": "1-1",
|
||||
"birth": "1-1",
|
||||
"astro": "箭盾座",
|
||||
"desc": "有着琥珀色左眼的赤王后裔,阿如村的守护者。",
|
||||
"cncv": "???",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "cryo",
|
||||
"allegiance": "游侠",
|
||||
"weapon": "bow",
|
||||
"britydah": "4-4",
|
||||
"birth": "4-4",
|
||||
"astro": "诺拉勇者座",
|
||||
"desc": "曾经是流放者,如今则是无比机敏的猎手。随时准备着为了正当之事而挽弓放箭。",
|
||||
"cncv": "沐霏",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "electro",
|
||||
"allegiance": "艾尔卡萨扎莱宫",
|
||||
"weapon": "claymore",
|
||||
"britydah": "12-21",
|
||||
"birth": "12-21",
|
||||
"astro": "神灯座",
|
||||
"desc": "神出鬼没的旅行百货商人,最喜欢亮闪闪的摩拉。",
|
||||
"cncv": "王晓彤",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "hydro",
|
||||
"allegiance": "岩上茶室",
|
||||
"weapon": "bow",
|
||||
"britydah": "4-20",
|
||||
"birth": "4-20",
|
||||
"astro": "幽客座",
|
||||
"desc": "自称供职于总务司的神秘人士,却又是总务司名录里的「不存在之人」。",
|
||||
"cncv": "徐慧",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "hydro",
|
||||
"allegiance": "???",
|
||||
"weapon": "sword",
|
||||
"britydah": "1-1",
|
||||
"birth": "1-1",
|
||||
"astro": "睡莲座",
|
||||
"desc": "测试角色",
|
||||
"cncv": "???",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "pyro",
|
||||
"allegiance": "西风骑士团",
|
||||
"weapon": "bow",
|
||||
"britydah": "8-10",
|
||||
"birth": "8-10",
|
||||
"astro": "小兔座",
|
||||
"desc": "永远充满活力的女孩,骑士团最优秀,同时也是最后的侦察骑士。",
|
||||
"cncv": "蔡书瑾",
|
||||
|
Before Width: | Height: | Size: 223 KiB After Width: | Height: | Size: 516 KiB |
@ -7,7 +7,7 @@
|
||||
"elem": "pyro",
|
||||
"allegiance": "长野原烟花店",
|
||||
"weapon": "bow",
|
||||
"britydah": "6-21",
|
||||
"birth": "6-21",
|
||||
"astro": "琉金座",
|
||||
"desc": "「长野原烟花店」店长,「夏祭的女王」,将人们的愿望寄托于烟花中的能工巧匠。",
|
||||
"cncv": "金娜",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "pyro",
|
||||
"allegiance": "社奉行",
|
||||
"weapon": "polearm",
|
||||
"britydah": "1-9",
|
||||
"birth": "1-9",
|
||||
"astro": "赤楯座",
|
||||
"desc": "神里家的家政官,活跃在稻妻的「地头蛇」。",
|
||||
"cncv": "张沛",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "dendro",
|
||||
"allegiance": "化城郭",
|
||||
"weapon": "bow",
|
||||
"britydah": "12-29",
|
||||
"birth": "12-29",
|
||||
"astro": "郭狐座",
|
||||
"desc": "精通植物学的少年学者,现于道成林任巡林官一职。直率热忱,擅长教导脑瓜糊涂的人。",
|
||||
"cncv": "莫然",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "multi",
|
||||
"allegiance": "——",
|
||||
"weapon": "sword",
|
||||
"britydah": "-",
|
||||
"birth": "-",
|
||||
"astro": "旅人座",
|
||||
"desc": "从世界之外漂流而来的旅行者,被神带走血亲,自此踏上寻找七神之路。",
|
||||
"cncv": "多多poi",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "anemo",
|
||||
"allegiance": "终末番",
|
||||
"weapon": "claymore",
|
||||
"britydah": "10-19",
|
||||
"birth": "10-19",
|
||||
"astro": "小貉座",
|
||||
"desc": "隶属于「终末番」的忍者。身形小巧,总像没睡饱一样。",
|
||||
"cncv": "Sakula小舞",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "anemo",
|
||||
"allegiance": "南十字船队",
|
||||
"weapon": "sword",
|
||||
"britydah": "10-29",
|
||||
"birth": "10-29",
|
||||
"astro": "枫红座",
|
||||
"desc": "来自稻妻的浪人武士,如今栖身于璃月船队「南十字」中。性情温和而洒脱,心中埋藏着许多往事。",
|
||||
"cncv": "斑马",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "dendro",
|
||||
"allegiance": "化城郭",
|
||||
"weapon": "bow",
|
||||
"britydah": "5-8",
|
||||
"birth": "5-8",
|
||||
"astro": "薮猫座",
|
||||
"desc": "活跃于道成林的见习巡林员,热情的言行背后是一颗依旧稍显内向的心。",
|
||||
"cncv": "秦文静",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "anemo",
|
||||
"allegiance": "蒙德城",
|
||||
"weapon": "bow",
|
||||
"britydah": "6-16",
|
||||
"birth": "6-16",
|
||||
"astro": "歌仙座歌仙座",
|
||||
"desc": "蒙德城诸多吟游诗人中的一位,自由自在地穿行在街头巷尾。",
|
||||
"cncv": "喵酱",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "pyro",
|
||||
"allegiance": "烟绯律法咨询事务所",
|
||||
"weapon": "catalyst",
|
||||
"britydah": "7-28",
|
||||
"birth": "7-28",
|
||||
"astro": "法兽座",
|
||||
"desc": "活跃在璃月港的知名律法咨询师,混有仙兽血脉的精明少女。",
|
||||
"cncv": "苏子芜",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "hydro",
|
||||
"allegiance": "海祇岛",
|
||||
"weapon": "catalyst",
|
||||
"britydah": "2-22",
|
||||
"birth": "2-22",
|
||||
"astro": "眠龙座",
|
||||
"desc": "海祇岛的「现人神巫女」,统管海祇岛各项事宜的少女。",
|
||||
"cncv": "龟娘",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "pyro",
|
||||
"allegiance": "冒险家协会",
|
||||
"weapon": "sword",
|
||||
"britydah": "2-29",
|
||||
"birth": "2-29",
|
||||
"astro": "险路座",
|
||||
"desc": "蒙德的冒险家少年,拥有与他的善良毫不相称的霉运。",
|
||||
"cncv": "穆雪婷",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "anemo",
|
||||
"allegiance": "西风骑士团",
|
||||
"weapon": "sword",
|
||||
"britydah": "3-14",
|
||||
"birth": "3-14",
|
||||
"astro": "幼狮座",
|
||||
"desc": "正直严谨的蒲公英骑士,蒙德西风骑士团的代理团长。",
|
||||
"cncv": "林簌",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "cryo",
|
||||
"allegiance": "月海亭",
|
||||
"weapon": "bow",
|
||||
"britydah": "12-2",
|
||||
"birth": "12-2",
|
||||
"astro": "仙麟座",
|
||||
"desc": "月海亭的秘书,体内流淌着仙兽「麒麟」的血脉。",
|
||||
"cncv": "林簌",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "cryo",
|
||||
"allegiance": "留云借风真君洞天",
|
||||
"weapon": "polearm",
|
||||
"britydah": "3-10",
|
||||
"birth": "3-10",
|
||||
"astro": "愁疏座",
|
||||
"desc": "气质出尘的仙家子弟。隐修在璃月群山之间,个性也如仙人般淡漠疏离。",
|
||||
"cncv": "秦紫翼",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "anemo",
|
||||
"allegiance": "西风骑士团",
|
||||
"weapon": "catalyst",
|
||||
"britydah": "11-26",
|
||||
"birth": "11-26",
|
||||
"astro": "烧瓶座",
|
||||
"desc": "对万物充满好奇的炼金术士,「生物炼金」学派的研究者。",
|
||||
"cncv": "小敢",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "hydro",
|
||||
"allegiance": "社奉行",
|
||||
"weapon": "sword",
|
||||
"britydah": "3-26",
|
||||
"birth": "3-26",
|
||||
"astro": "神守柏座",
|
||||
"desc": "社奉行神里家年轻有为的现任家主,为人温雅有礼,处事颇有手段。",
|
||||
"cncv": "赵路",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "cryo",
|
||||
"allegiance": "社奉行",
|
||||
"weapon": "sword",
|
||||
"britydah": "9-28",
|
||||
"birth": "9-28",
|
||||
"astro": "雪鹤座",
|
||||
"desc": "稻妻「社奉行」神里家的大小姐。端庄而文雅,聪慧又坚韧。",
|
||||
"cncv": "小N",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "multi",
|
||||
"allegiance": "——",
|
||||
"weapon": "sword",
|
||||
"britydah": "-",
|
||||
"birth": "-",
|
||||
"astro": "旅人座",
|
||||
"desc": "从世界之外漂流而来的旅行者,被神带走血亲,自此踏上寻找七神之路。",
|
||||
"cncv": "鹿喑",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "cryo",
|
||||
"allegiance": "西风教会",
|
||||
"weapon": "polearm",
|
||||
"britydah": "1-24",
|
||||
"birth": "1-24",
|
||||
"astro": "荆冠座",
|
||||
"desc": "除了打扮哪里都不像神职人员的修女。冷淡的言行中透着锐利。总是单独行动。",
|
||||
"cncv": "张安琪",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "pyro",
|
||||
"allegiance": "往生堂",
|
||||
"weapon": "polearm",
|
||||
"britydah": "7-15",
|
||||
"birth": "7-15",
|
||||
"astro": "引蝶座",
|
||||
"desc": "「往生堂」七十七代堂主,年纪轻轻就已主掌璃月的葬仪事务。",
|
||||
"cncv": "陶典",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "hydro",
|
||||
"allegiance": "西风教会",
|
||||
"weapon": "catalyst",
|
||||
"britydah": "7-5",
|
||||
"birth": "7-5",
|
||||
"astro": "金杯座",
|
||||
"desc": "蒙德城的大家都喜欢芭芭拉。「偶像」这个词是她从一本杂志里看到的。",
|
||||
"cncv": "宋媛媛",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "geo",
|
||||
"allegiance": "荒泷派",
|
||||
"weapon": "claymore",
|
||||
"britydah": "6-1",
|
||||
"birth": "6-1",
|
||||
"astro": "天牛座",
|
||||
"desc": "活跃在稻妻城花见坂的「荒泷派」初代目头领。什么,从没听说过荒泷派?你是想找茬吗?",
|
||||
"cncv": "刘照坤",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "multi",
|
||||
"allegiance": "——",
|
||||
"weapon": "sword",
|
||||
"britydah": "-",
|
||||
"birth": "-",
|
||||
"astro": "旅人座",
|
||||
"desc": "从世界之外漂流而来的旅行者,被神带走血亲,自此踏上寻找七神之路。",
|
||||
"cncv": "多多poi",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "hydro",
|
||||
"allegiance": "蒙德城",
|
||||
"weapon": "catalyst",
|
||||
"britydah": "8-31",
|
||||
"birth": "8-31",
|
||||
"astro": "映天座",
|
||||
"desc": "神秘的少女占星术士,声称自己是「伟大的占星术士莫娜」,拥有与名号相符的不俗实力,博学而高傲。",
|
||||
"cncv": "陈婷婷",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "electro",
|
||||
"allegiance": "冒险家协会",
|
||||
"weapon": "bow",
|
||||
"britydah": "5-27",
|
||||
"birth": "5-27",
|
||||
"astro": "幻鸦座",
|
||||
"desc": "自称「断罪之皇女」,与名为奥兹的漆黑夜鸦同行的神秘少女。",
|
||||
"cncv": "Mace&赵悦程",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "hydro",
|
||||
"allegiance": "飞云商会",
|
||||
"weapon": "sword",
|
||||
"britydah": "10-9",
|
||||
"birth": "10-9",
|
||||
"astro": "锦织座",
|
||||
"desc": "经常能在书摊看到的少年人。手执长剑,胸中常怀侠义之心。",
|
||||
"cncv": "唐雅菁",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "geo",
|
||||
"allegiance": "西风骑士团",
|
||||
"weapon": "claymore",
|
||||
"britydah": "3-21",
|
||||
"birth": "3-21",
|
||||
"astro": "心护座",
|
||||
"desc": "「西风骑士团」的可靠女仆,梦想有一天能成为正式的骑士。",
|
||||
"cncv": "宴宁",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "electro",
|
||||
"allegiance": "???",
|
||||
"weapon": "polearm",
|
||||
"britydah": "1-1",
|
||||
"birth": "1-1",
|
||||
"astro": "金狼座",
|
||||
"desc": "测试角色",
|
||||
"cncv": "???",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "pyro",
|
||||
"allegiance": "「红弦」",
|
||||
"weapon": "claymore",
|
||||
"britydah": "10-16",
|
||||
"birth": "10-16",
|
||||
"astro": "红檀四弦座",
|
||||
"desc": "璃月港唯一的摇滚乐手,以音乐和热情歌颂着对「成见」的反抗。",
|
||||
"cncv": "王雅欣",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "hydro",
|
||||
"allegiance": "愚人众",
|
||||
"weapon": "bow",
|
||||
"britydah": "7-20",
|
||||
"birth": "7-20",
|
||||
"astro": "鲸天座",
|
||||
"desc": "愚人众执行官第十一位,「公子」,其战绩威名远扬。",
|
||||
"cncv": "鱼冻",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "pyro",
|
||||
"allegiance": "晨曦酒庄",
|
||||
"weapon": "claymore",
|
||||
"britydah": "4-30",
|
||||
"birth": "4-30",
|
||||
"astro": "夜枭座",
|
||||
"desc": "坐拥蒙德大半酒业的贵公子,财力、人望、能力都令人无法小觑。",
|
||||
"cncv": "马洋",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "cryo",
|
||||
"allegiance": "猫尾酒馆",
|
||||
"weapon": "bow",
|
||||
"britydah": "1-18",
|
||||
"birth": "1-18",
|
||||
"astro": "小猫座",
|
||||
"desc": "遗传了稀薄的「非人」血统的少女,「猫尾酒馆」的超人气调酒师。",
|
||||
"cncv": "诺亚",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "cryo",
|
||||
"allegiance": "天衡方士",
|
||||
"weapon": "claymore",
|
||||
"britydah": "9-7",
|
||||
"birth": "9-7",
|
||||
"astro": "乾坤锋座",
|
||||
"desc": "驱邪世家的年轻方士,为压制自身的「纯阳之体」费尽心机。",
|
||||
"cncv": "kinsen",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "geo",
|
||||
"allegiance": "璃月港",
|
||||
"weapon": "polearm",
|
||||
"britydah": "12-31",
|
||||
"birth": "12-31",
|
||||
"astro": "???岩王帝君座",
|
||||
"desc": "被「往生堂」请来的神秘客人,知识渊博,对各种事物都颇有见地。",
|
||||
"cncv": "彭博",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "geo",
|
||||
"allegiance": "西风骑士团",
|
||||
"weapon": "sword",
|
||||
"britydah": "9-13",
|
||||
"birth": "9-13",
|
||||
"astro": "白垩之子座",
|
||||
"desc": "西风骑士团首席炼金术士兼调查小队队长,被称做「白垩之子」的天才。",
|
||||
"cncv": "Mace",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "electro",
|
||||
"allegiance": "奔狼领",
|
||||
"weapon": "claymore",
|
||||
"britydah": "9-9",
|
||||
"birth": "9-9",
|
||||
"astro": "小狼座",
|
||||
"desc": "住在蒙德地区奔狼领,远离城市与人群,和狼一同生活的少年。直觉锐利,身姿迅捷。",
|
||||
"cncv": "周帅",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "electro",
|
||||
"allegiance": "稻妻城",
|
||||
"weapon": "polearm",
|
||||
"britydah": "6-26",
|
||||
"birth": "6-26",
|
||||
"astro": "天下人座天下人座",
|
||||
"desc": "其身为御建鸣神主尊大御所大人,许稻妻人民以亘古不变之「永恒」。",
|
||||
"cncv": "菊花花",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "pyro",
|
||||
"allegiance": "万民堂",
|
||||
"weapon": "polearm",
|
||||
"britydah": "11-2",
|
||||
"birth": "11-2",
|
||||
"astro": "长杓座",
|
||||
"desc": "来自璃月,名声在外的少女厨师,对料理之道极具热情,拿手麻辣菜肴堪称一绝。",
|
||||
"cncv": "小N",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "anemo",
|
||||
"allegiance": "璃月仙人",
|
||||
"weapon": "polearm",
|
||||
"britydah": "4-17",
|
||||
"birth": "4-17",
|
||||
"astro": "金翅鹏王座",
|
||||
"desc": "守护璃月的仙人,「夜叉」。美号「降魔大圣」,妙称「护法夜叉大将」。",
|
||||
"cncv": "kinsen",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"elem": "anemo",
|
||||
"allegiance": "天领奉行",
|
||||
"weapon": "catalyst",
|
||||
"britydah": "7-24",
|
||||
"birth": "7-24",
|
||||
"astro": "幼鹿座",
|
||||
"desc": "天领奉行的天才少年侦探,直觉敏锐,心思玲珑。",
|
||||
"cncv": "林景",
|
||||
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 35 KiB |
757
resources/meta/weapons/data.json
Normal file
@ -0,0 +1,757 @@
|
||||
{
|
||||
"无锋剑": {
|
||||
"name": "无锋剑",
|
||||
"star": 1,
|
||||
"type": "sword"
|
||||
},
|
||||
"银剑": {
|
||||
"name": "银剑",
|
||||
"star": 2,
|
||||
"type": "sword"
|
||||
},
|
||||
"冷刃": {
|
||||
"name": "冷刃",
|
||||
"star": 3,
|
||||
"type": "sword"
|
||||
},
|
||||
"黎明神剑": {
|
||||
"name": "黎明神剑",
|
||||
"star": 3,
|
||||
"type": "sword"
|
||||
},
|
||||
"旅行剑": {
|
||||
"name": "旅行剑",
|
||||
"star": 3,
|
||||
"type": "sword"
|
||||
},
|
||||
"暗铁剑": {
|
||||
"name": "暗铁剑",
|
||||
"star": 3,
|
||||
"type": "sword"
|
||||
},
|
||||
"吃虎鱼刀": {
|
||||
"name": "吃虎鱼刀",
|
||||
"star": 3,
|
||||
"type": "sword"
|
||||
},
|
||||
"飞天御剑": {
|
||||
"name": "飞天御剑",
|
||||
"star": 3,
|
||||
"type": "sword"
|
||||
},
|
||||
"西风剑": {
|
||||
"name": "西风剑",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"笛剑": {
|
||||
"name": "笛剑",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"祭礼剑": {
|
||||
"name": "祭礼剑",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"宗室长剑": {
|
||||
"name": "宗室长剑",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"匣里龙吟": {
|
||||
"name": "匣里龙吟",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"试作斩岩": {
|
||||
"name": "试作斩岩",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"铁蜂刺": {
|
||||
"name": "铁蜂刺",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"黑岩长剑": {
|
||||
"name": "黑岩长剑",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"黑剑": {
|
||||
"name": "黑剑",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"暗巷闪光": {
|
||||
"name": "暗巷闪光",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"降临之剑": {
|
||||
"name": "降临之剑",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"腐殖之剑": {
|
||||
"name": "腐殖之剑",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"天目影打刀": {
|
||||
"name": "天目影打刀",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"辰砂之纺锤": {
|
||||
"name": "辰砂之纺锤",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"笼钓瓶一心": {
|
||||
"name": "笼钓瓶一心",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"原木刀": {
|
||||
"name": "原木刀",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"西福斯的月光": {
|
||||
"name": "西福斯的月光",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"「一心传」名刀": {
|
||||
"name": "「一心传」名刀",
|
||||
"star": 4,
|
||||
"type": "sword"
|
||||
},
|
||||
"风鹰剑": {
|
||||
"name": "风鹰剑",
|
||||
"star": 5,
|
||||
"type": "sword"
|
||||
},
|
||||
"天空之刃": {
|
||||
"name": "天空之刃",
|
||||
"star": 5,
|
||||
"type": "sword"
|
||||
},
|
||||
"苍古自由之誓": {
|
||||
"name": "苍古自由之誓",
|
||||
"star": 5,
|
||||
"type": "sword"
|
||||
},
|
||||
"斫峰之刃": {
|
||||
"name": "斫峰之刃",
|
||||
"star": 5,
|
||||
"type": "sword"
|
||||
},
|
||||
"磐岩结绿": {
|
||||
"name": "磐岩结绿",
|
||||
"star": 5,
|
||||
"type": "sword"
|
||||
},
|
||||
"雾切之回光": {
|
||||
"name": "雾切之回光",
|
||||
"star": 5,
|
||||
"type": "sword"
|
||||
},
|
||||
"波乱月白经津": {
|
||||
"name": "波乱月白经津",
|
||||
"star": 5,
|
||||
"type": "sword"
|
||||
},
|
||||
"圣显之钥": {
|
||||
"name": "圣显之钥",
|
||||
"star": 5,
|
||||
"type": "sword"
|
||||
},
|
||||
"训练大剑": {
|
||||
"name": "训练大剑",
|
||||
"star": 1,
|
||||
"type": "claymore"
|
||||
},
|
||||
"佣兵重剑": {
|
||||
"name": "佣兵重剑",
|
||||
"star": 2,
|
||||
"type": "claymore"
|
||||
},
|
||||
"铁影阔剑": {
|
||||
"name": "铁影阔剑",
|
||||
"star": 3,
|
||||
"type": "claymore"
|
||||
},
|
||||
"沐浴龙血的剑": {
|
||||
"name": "沐浴龙血的剑",
|
||||
"star": 3,
|
||||
"type": "claymore"
|
||||
},
|
||||
"白铁大剑": {
|
||||
"name": "白铁大剑",
|
||||
"star": 3,
|
||||
"type": "claymore"
|
||||
},
|
||||
"石英大剑": {
|
||||
"name": "石英大剑",
|
||||
"star": 3,
|
||||
"type": "claymore"
|
||||
},
|
||||
"以理服人": {
|
||||
"name": "以理服人",
|
||||
"star": 3,
|
||||
"type": "claymore"
|
||||
},
|
||||
"飞天大御剑": {
|
||||
"name": "飞天大御剑",
|
||||
"star": 3,
|
||||
"type": "claymore"
|
||||
},
|
||||
"西风大剑": {
|
||||
"name": "西风大剑",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"钟剑": {
|
||||
"name": "钟剑",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"祭礼大剑": {
|
||||
"name": "祭礼大剑",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"宗室大剑": {
|
||||
"name": "宗室大剑",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"雨裁": {
|
||||
"name": "雨裁",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"试作古华": {
|
||||
"name": "试作古华",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"白影剑": {
|
||||
"name": "白影剑",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"黑岩斩刀": {
|
||||
"name": "黑岩斩刀",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"螭骨剑": {
|
||||
"name": "螭骨剑",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"千岩古剑": {
|
||||
"name": "千岩古剑",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"雪葬的星银": {
|
||||
"name": "雪葬的星银",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"衔珠海皇": {
|
||||
"name": "衔珠海皇",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"桂木斩长正": {
|
||||
"name": "桂木斩长正",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"玛海菈的水色": {
|
||||
"name": "玛海菈的水色",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"恶王丸": {
|
||||
"name": "恶王丸",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"森林王器": {
|
||||
"name": "森林王器",
|
||||
"star": 4,
|
||||
"type": "claymore"
|
||||
},
|
||||
"天空之傲": {
|
||||
"name": "天空之傲",
|
||||
"star": 5,
|
||||
"type": "claymore"
|
||||
},
|
||||
"狼的末路": {
|
||||
"name": "狼的末路",
|
||||
"star": 5,
|
||||
"type": "claymore"
|
||||
},
|
||||
"松籁响起之时": {
|
||||
"name": "松籁响起之时",
|
||||
"star": 5,
|
||||
"type": "claymore"
|
||||
},
|
||||
"无工之剑": {
|
||||
"name": "无工之剑",
|
||||
"star": 5,
|
||||
"type": "claymore"
|
||||
},
|
||||
"赤角石溃杵": {
|
||||
"name": "赤角石溃杵",
|
||||
"star": 5,
|
||||
"type": "claymore"
|
||||
},
|
||||
"新手长枪": {
|
||||
"name": "新手长枪",
|
||||
"star": 1,
|
||||
"type": "polearm"
|
||||
},
|
||||
"铁尖枪": {
|
||||
"name": "铁尖枪",
|
||||
"star": 2,
|
||||
"type": "polearm"
|
||||
},
|
||||
"白缨枪": {
|
||||
"name": "白缨枪",
|
||||
"star": 3,
|
||||
"type": "polearm"
|
||||
},
|
||||
"钺矛": {
|
||||
"name": "钺矛",
|
||||
"star": 3,
|
||||
"type": "polearm"
|
||||
},
|
||||
"黑缨枪": {
|
||||
"name": "黑缨枪",
|
||||
"star": 3,
|
||||
"type": "polearm"
|
||||
},
|
||||
"匣里灭辰": {
|
||||
"name": "匣里灭辰",
|
||||
"star": 4,
|
||||
"type": "polearm"
|
||||
},
|
||||
"试作星镰": {
|
||||
"name": "试作星镰",
|
||||
"star": 4,
|
||||
"type": "polearm"
|
||||
},
|
||||
"流月针": {
|
||||
"name": "流月针",
|
||||
"star": 4,
|
||||
"type": "polearm"
|
||||
},
|
||||
"黑岩刺枪": {
|
||||
"name": "黑岩刺枪",
|
||||
"star": 4,
|
||||
"type": "polearm"
|
||||
},
|
||||
"决斗之枪": {
|
||||
"name": "决斗之枪",
|
||||
"star": 4,
|
||||
"type": "polearm"
|
||||
},
|
||||
"千岩长枪": {
|
||||
"name": "千岩长枪",
|
||||
"star": 4,
|
||||
"type": "polearm"
|
||||
},
|
||||
"西风长枪": {
|
||||
"name": "西风长枪",
|
||||
"star": 4,
|
||||
"type": "polearm"
|
||||
},
|
||||
"宗室猎枪": {
|
||||
"name": "宗室猎枪",
|
||||
"star": 4,
|
||||
"type": "polearm"
|
||||
},
|
||||
"龙脊长枪": {
|
||||
"name": "龙脊长枪",
|
||||
"star": 4,
|
||||
"type": "polearm"
|
||||
},
|
||||
"喜多院十文字": {
|
||||
"name": "喜多院十文字",
|
||||
"star": 4,
|
||||
"type": "polearm"
|
||||
},
|
||||
"「渔获」": {
|
||||
"name": "「渔获」",
|
||||
"star": 4,
|
||||
"type": "polearm"
|
||||
},
|
||||
"断浪长鳍": {
|
||||
"name": "断浪长鳍",
|
||||
"star": 4,
|
||||
"type": "polearm"
|
||||
},
|
||||
"贯月矢": {
|
||||
"name": "贯月矢",
|
||||
"star": 4,
|
||||
"type": "polearm"
|
||||
},
|
||||
"风信之锋": {
|
||||
"name": "风信之锋",
|
||||
"star": 4,
|
||||
"type": "polearm"
|
||||
},
|
||||
"护摩之杖": {
|
||||
"name": "护摩之杖",
|
||||
"star": 5,
|
||||
"type": "polearm"
|
||||
},
|
||||
"天空之脊": {
|
||||
"name": "天空之脊",
|
||||
"star": 5,
|
||||
"type": "polearm"
|
||||
},
|
||||
"贯虹之槊": {
|
||||
"name": "贯虹之槊",
|
||||
"star": 5,
|
||||
"type": "polearm"
|
||||
},
|
||||
"和璞鸢": {
|
||||
"name": "和璞鸢",
|
||||
"star": 5,
|
||||
"type": "polearm"
|
||||
},
|
||||
"息灾": {
|
||||
"name": "息灾",
|
||||
"star": 5,
|
||||
"type": "polearm"
|
||||
},
|
||||
"薙草之稻光": {
|
||||
"name": "薙草之稻光",
|
||||
"star": 5,
|
||||
"type": "polearm"
|
||||
},
|
||||
"赤沙之杖": {
|
||||
"name": "赤沙之杖",
|
||||
"star": 5,
|
||||
"type": "polearm"
|
||||
},
|
||||
"猎弓": {
|
||||
"name": "猎弓",
|
||||
"star": 1,
|
||||
"type": "bow"
|
||||
},
|
||||
"历练的猎弓": {
|
||||
"name": "历练的猎弓",
|
||||
"star": 2,
|
||||
"type": "bow"
|
||||
},
|
||||
"鸦羽弓": {
|
||||
"name": "鸦羽弓",
|
||||
"star": 3,
|
||||
"type": "bow"
|
||||
},
|
||||
"神射手之誓": {
|
||||
"name": "神射手之誓",
|
||||
"star": 3,
|
||||
"type": "bow"
|
||||
},
|
||||
"反曲弓": {
|
||||
"name": "反曲弓",
|
||||
"star": 3,
|
||||
"type": "bow"
|
||||
},
|
||||
"弹弓": {
|
||||
"name": "弹弓",
|
||||
"star": 3,
|
||||
"type": "bow"
|
||||
},
|
||||
"信使": {
|
||||
"name": "信使",
|
||||
"star": 3,
|
||||
"type": "bow"
|
||||
},
|
||||
"黑檀弓": {
|
||||
"name": "黑檀弓",
|
||||
"star": 3,
|
||||
"type": "bow"
|
||||
},
|
||||
"西风猎弓": {
|
||||
"name": "西风猎弓",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"绝弦": {
|
||||
"name": "绝弦",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"祭礼弓": {
|
||||
"name": "祭礼弓",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"宗室长弓": {
|
||||
"name": "宗室长弓",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"弓藏": {
|
||||
"name": "弓藏",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"试作澹月": {
|
||||
"name": "试作澹月",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"钢轮弓": {
|
||||
"name": "钢轮弓",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"黑岩战弓": {
|
||||
"name": "黑岩战弓",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"苍翠猎弓": {
|
||||
"name": "苍翠猎弓",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"暗巷猎手": {
|
||||
"name": "暗巷猎手",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"落霞": {
|
||||
"name": "落霞",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"幽夜华尔兹": {
|
||||
"name": "幽夜华尔兹",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"风花之颂": {
|
||||
"name": "风花之颂",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"破魔之弓": {
|
||||
"name": "破魔之弓",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"掠食者": {
|
||||
"name": "掠食者",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"曚云之月": {
|
||||
"name": "曚云之月",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"王下近侍": {
|
||||
"name": "王下近侍",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"竭泽": {
|
||||
"name": "竭泽",
|
||||
"star": 4,
|
||||
"type": "bow"
|
||||
},
|
||||
"天空之翼": {
|
||||
"name": "天空之翼",
|
||||
"star": 5,
|
||||
"type": "bow"
|
||||
},
|
||||
"阿莫斯之弓": {
|
||||
"name": "阿莫斯之弓",
|
||||
"star": 5,
|
||||
"type": "bow"
|
||||
},
|
||||
"终末嗟叹之诗": {
|
||||
"name": "终末嗟叹之诗",
|
||||
"star": 5,
|
||||
"type": "bow"
|
||||
},
|
||||
"冬极白星": {
|
||||
"name": "冬极白星",
|
||||
"star": 5,
|
||||
"type": "bow"
|
||||
},
|
||||
"若水": {
|
||||
"name": "若水",
|
||||
"star": 5,
|
||||
"type": "bow"
|
||||
},
|
||||
"飞雷之弦振": {
|
||||
"name": "飞雷之弦振",
|
||||
"star": 5,
|
||||
"type": "bow"
|
||||
},
|
||||
"猎人之径": {
|
||||
"name": "猎人之径",
|
||||
"star": 5,
|
||||
"type": "bow"
|
||||
},
|
||||
"学徒笔记": {
|
||||
"name": "学徒笔记",
|
||||
"star": 1,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"口袋魔导书": {
|
||||
"name": "口袋魔导书",
|
||||
"star": 2,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"魔导绪论": {
|
||||
"name": "魔导绪论",
|
||||
"star": 3,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"讨龙英杰谭": {
|
||||
"name": "讨龙英杰谭",
|
||||
"star": 3,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"异世界行记": {
|
||||
"name": "异世界行记",
|
||||
"star": 3,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"翡玉法球": {
|
||||
"name": "翡玉法球",
|
||||
"star": 3,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"甲级宝珏": {
|
||||
"name": "甲级宝珏",
|
||||
"star": 3,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"琥珀玥": {
|
||||
"name": "琥珀玥",
|
||||
"star": 3,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"西风秘典": {
|
||||
"name": "西风秘典",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"流浪乐章": {
|
||||
"name": "流浪乐章",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"祭礼残章": {
|
||||
"name": "祭礼残章",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"宗室秘法录": {
|
||||
"name": "宗室秘法录",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"匣里日月": {
|
||||
"name": "匣里日月",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"试作金珀": {
|
||||
"name": "试作金珀",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"万国诸海图谱": {
|
||||
"name": "万国诸海图谱",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"黑岩绯玉": {
|
||||
"name": "黑岩绯玉",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"昭心": {
|
||||
"name": "昭心",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"暗巷的酒与诗": {
|
||||
"name": "暗巷的酒与诗",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"忍冬之果": {
|
||||
"name": "忍冬之果",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"嘟嘟可故事集": {
|
||||
"name": "嘟嘟可故事集",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"白辰之环": {
|
||||
"name": "白辰之环",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"证誓之明瞳": {
|
||||
"name": "证誓之明瞳",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"流浪的晚星": {
|
||||
"name": "流浪的晚星",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"盈满之实": {
|
||||
"name": "盈满之实",
|
||||
"star": 4,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"天空之卷": {
|
||||
"name": "天空之卷",
|
||||
"star": 5,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"四风原典": {
|
||||
"name": "四风原典",
|
||||
"star": 5,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"尘世之锁": {
|
||||
"name": "尘世之锁",
|
||||
"star": 5,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"不灭月华": {
|
||||
"name": "不灭月华",
|
||||
"star": 5,
|
||||
"type": "catalyst"
|
||||
},
|
||||
"神乐之真意": {
|
||||
"name": "神乐之真意",
|
||||
"star": 5,
|
||||
"type": "catalyst"
|
||||
}
|
||||
}
|
@ -188,4 +188,4 @@
|
||||
.char-list .cons-bg > div:last-child {
|
||||
border-radius: 0 3px 3px 0;
|
||||
}
|
||||
/*# sourceMappingURL=character.css.map */
|
||||
/*# sourceMappingURL=character-talent.css.map */
|
@ -332,4 +332,4 @@ body {
|
||||
color: #7994a7;
|
||||
margin: 20px 0 10px 0;
|
||||
}
|
||||
/*# sourceMappingURL=character.css.map */
|
||||
/*# sourceMappingURL=character-talent.css.map */
|
@ -1,7 +1,7 @@
|
||||
{{extend elemLayout}}
|
||||
|
||||
{{block 'css'}}
|
||||
<link rel="stylesheet" type="text/css" href="{{_res_path}}/wiki/character.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="{{_res_path}}/wiki/character-talent.css"/>
|
||||
{{/block}}
|
||||
|
||||
{{block 'main'}}
|
117
resources/wiki/character-wiki.css
Normal file
@ -0,0 +1,117 @@
|
||||
.font-YS {
|
||||
font-family: Number, "汉仪文黑-65W", YS, PingFangSC-Medium, "PingFang SC", sans-serif;
|
||||
}
|
||||
.font-NZBZ {
|
||||
font-family: Number, "印品南征北战NZBZ体", NZBZ, "汉仪文黑-65W", YS, PingFangSC-Medium, "PingFang SC", sans-serif;
|
||||
}
|
||||
body {
|
||||
width: 600px;
|
||||
}
|
||||
.container {
|
||||
width: 600px;
|
||||
padding: 0;
|
||||
background-size: cover;
|
||||
overflow: hidden;
|
||||
}
|
||||
.char-title {
|
||||
height: 100px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
.char-title .char-name {
|
||||
font-size: 40px;
|
||||
}
|
||||
.char-title .char-name span {
|
||||
font-size: 28px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
.basic {
|
||||
height: 500px;
|
||||
}
|
||||
.char-desc {
|
||||
padding-left: 240px;
|
||||
font-size: 14px;
|
||||
}
|
||||
.char-meta {
|
||||
padding-left: 370px;
|
||||
}
|
||||
.detail {
|
||||
right: 18px;
|
||||
}
|
||||
.detail .cont {
|
||||
margin-right: 0;
|
||||
}
|
||||
.detail ul.char-attr li {
|
||||
width: 250px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
.detail ul.char-attr li strong {
|
||||
position: initial;
|
||||
color: #d3bc8e;
|
||||
}
|
||||
.detail ul.char-attr li span {
|
||||
color: #fff;
|
||||
right: 20px;
|
||||
text-align: right;
|
||||
width: 150px;
|
||||
}
|
||||
.material-list {
|
||||
display: flex;
|
||||
padding: 5px;
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
bottom: 6px;
|
||||
z-index: 5;
|
||||
}
|
||||
.material-list .num {
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
text-shadow: 0 0 1px #000, 0 0 1px #000, 0 0 3px rgba(0, 0, 0, 0.8);
|
||||
display: block;
|
||||
height: 14px;
|
||||
margin-left: -10px;
|
||||
margin-right: -10px;
|
||||
width: calc(100% + 20px);
|
||||
}
|
||||
.material-list .item-card {
|
||||
width: 47px;
|
||||
margin: 2px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.material-list .item-card .item-icon {
|
||||
background-size: cover;
|
||||
padding: 6px 4px 17px;
|
||||
}
|
||||
.material-list .item-card .item-bg {
|
||||
background-size: contain;
|
||||
background-position: center;
|
||||
}
|
||||
.material-list .item-card .item-title {
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
position: absolute;
|
||||
color: #fff;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
white-space: nowrap;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
padding: 4px 0;
|
||||
width: 68px;
|
||||
text-align: center;
|
||||
transform-origin: left bottom;
|
||||
transform: scale(0.7);
|
||||
text-shadow: 0 0 2px #000;
|
||||
}
|
||||
.talent-cont {
|
||||
text-align: center;
|
||||
}
|
||||
.talent-cont strong {
|
||||
color: #d3bc8e;
|
||||
}
|
||||
.weapon-list {
|
||||
padding: 3px;
|
||||
}
|
||||
.weapon-list .item {
|
||||
margin: 3px;
|
||||
}
|
||||
/*# sourceMappingURL=character-wiki.css.map */
|
76
resources/wiki/character-wiki.html
Normal file
@ -0,0 +1,76 @@
|
||||
{{extend elemLayout}}
|
||||
|
||||
{{block 'css'}}
|
||||
<link rel="stylesheet" type="text/css" href="{{_res_path}}/common/tpl.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="{{_res_path}}/character/profile-detail.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="{{_res_path}}/wiki/character-wiki.css"/>
|
||||
{{/block}}
|
||||
|
||||
{{set weapon = data.weapon}}
|
||||
{{set dataSource = data.dataSource}}
|
||||
|
||||
|
||||
{{block 'main'}}
|
||||
<div class="basic">
|
||||
<div class="main-pic"
|
||||
style="background-image:url({{_res_path}}{{imgs.splash}})"></div>
|
||||
<div class="detail">
|
||||
<div class="char-title">
|
||||
<div class="char-name"><span>{{data.title}} · </span>{{data.name}}</div>
|
||||
<div class="char-lv char-desc">{{data.desc}}</div>
|
||||
</div>
|
||||
<div class="char-meta">
|
||||
<div class="cont">
|
||||
<ul class="attr char-attr">
|
||||
<li><strong>武器类型</strong> <span>{{data.weaponType}}</span></li>
|
||||
<li><strong>命之座</strong> <span>{{data.astro}}</span></li>
|
||||
<li><strong>生日</strong> <span>{{data.birthday}}</span></li>
|
||||
<li><strong>归属</strong> <span>{{data.allegiance}}</span></li>
|
||||
<li><strong>中文CV</strong> <span>{{data.cncv}}</span></li>
|
||||
<li><strong>日文CV</strong> <span>{{data.jpcv}}</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="cont">
|
||||
<div class="cont-title">90级基础属性</div>
|
||||
<ul class="attr char-attr">
|
||||
{{each attr ds}}
|
||||
<li><strong>{{ds.title}}</strong> <span>{{ds.value}}</span></li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="material-list">
|
||||
{{each materials ds}}
|
||||
<div class="material-{{ds.type}}">
|
||||
<div class="num">{{ds.num}}</div>
|
||||
<div class="item-card material-card">
|
||||
<div class="item-icon star{{ds.star}} opacity-bg">
|
||||
<div class="item-bg" style="background-image:url({{_res_path}}{{ds.icon}})"></div>
|
||||
</div>
|
||||
<div class="item-title">{{ds.label}}</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="cont talent-cont">
|
||||
<div class="cont-footer">输入<strong>#{{data.abbr}}天赋、#{{data.abbr}}命座</strong>可查看详细天赋/命座信息</div>
|
||||
</div>
|
||||
{{if weapons.length >0}}
|
||||
<div class="cont">
|
||||
<div class="cont-title">常用武器<span>武器统计来自胡桃Api</span></div>
|
||||
<div class="item-list weapon-list">
|
||||
{{each weapons weapon}}
|
||||
<div class="item item-card">
|
||||
<div class="item-icon star{{weapon.star}}">
|
||||
<div class="item-bg" style="background-image:url({{_res_path}}/meta/weapons/icon/{{weapon.name}}.png)"></div>
|
||||
<div class="item-badge">{{weapon.value}}</div>
|
||||
</div>
|
||||
<div class="item-title">{{weapon.name}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/block}}
|
151
resources/wiki/character-wiki.less
Normal file
@ -0,0 +1,151 @@
|
||||
@import "../common/base.less";
|
||||
|
||||
body {
|
||||
width: 600px;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 600px;
|
||||
padding: 0;
|
||||
background-size: cover;
|
||||
overflow: hidden;
|
||||
|
||||
& > .cont {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.char-title {
|
||||
height: 100px;
|
||||
padding-right: 10px;
|
||||
|
||||
.char-name {
|
||||
font-size: 40px;
|
||||
|
||||
span {
|
||||
font-size: 28px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.basic {
|
||||
height: 500px;
|
||||
|
||||
&:after {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.char-desc {
|
||||
padding-left: 240px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
|
||||
.char-meta {
|
||||
padding-left: 370px;
|
||||
|
||||
.title {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.detail {
|
||||
right: 18px;
|
||||
|
||||
.cont {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
ul.char-attr {
|
||||
|
||||
li {
|
||||
width: 250px;
|
||||
padding-left: 20px;
|
||||
|
||||
strong {
|
||||
position: initial;
|
||||
color: #d3bc8e;
|
||||
}
|
||||
|
||||
span {
|
||||
color: #fff;
|
||||
right: 20px;
|
||||
text-align: right;
|
||||
width: 150px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.material-list {
|
||||
display: flex;
|
||||
padding: 5px;
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
bottom: 6px;
|
||||
z-index: 5;
|
||||
|
||||
.num {
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
text-shadow: 0 0 1px #000, 0 0 1px #000, 0 0 3px rgba(0, 0, 0, 0.8);
|
||||
display: block;
|
||||
height: 14px;
|
||||
margin-left: -10px;
|
||||
margin-right: -10px;
|
||||
width: calc(100% + 20px)
|
||||
}
|
||||
|
||||
|
||||
.item-card {
|
||||
width: 47px;
|
||||
margin: 2px;
|
||||
overflow: hidden;
|
||||
|
||||
.item-icon {
|
||||
background-size: cover;
|
||||
padding: 6px 4px 17px;
|
||||
}
|
||||
|
||||
.item-bg {
|
||||
background-size: contain;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
.item-title {
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
position: absolute;
|
||||
color: #fff;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
white-space: nowrap;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
padding: 4px 0;
|
||||
width: 68px;
|
||||
text-align: center;
|
||||
transform-origin: left bottom;
|
||||
transform: scale(.7);
|
||||
text-shadow: 0 0 2px #000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.talent-cont {
|
||||
text-align: center;
|
||||
|
||||
strong {
|
||||
color: #d3bc8e;
|
||||
}
|
||||
}
|
||||
|
||||
.weapon-list {
|
||||
padding: 3px;
|
||||
|
||||
.item {
|
||||
margin: 3px;
|
||||
}
|
||||
}
|
@ -42,7 +42,7 @@ const CharData = {
|
||||
ret.elem = title('Element').toLowerCase()
|
||||
ret.allegiance = title('Occupation')
|
||||
ret.weapon = title('Weapon').toLowerCase()
|
||||
ret.britydah = title('Month of Birth') + '-' + title('Day of Birth')
|
||||
ret.birthday = title('Month of Birth') + '-' + title('Day of Birth')
|
||||
ret.astro = title('Constellation')
|
||||
ret.desc = title('Description')
|
||||
ret.cncv = fix.cncv || title('Chinese')
|
||||
|
44
tools/weapon-data-sprider.js
Normal file
@ -0,0 +1,44 @@
|
||||
import fetch from 'node-fetch';
|
||||
import cheerio from 'cheerio';
|
||||
import lodash from 'lodash'
|
||||
import { Data } from '../components/index.js'
|
||||
|
||||
let ret = Data.readJSON('resources/meta/weapons/data.json')
|
||||
|
||||
let getWeaponData = async function (type) {
|
||||
let url = `https://genshin.honeyhunterworld.com/fam_${type}/?lang=CHS`
|
||||
console.log('req: ' + url)
|
||||
let req = await fetch(url, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.20',
|
||||
referer: 'https://genshin.honeyhunterworld.com/fam_chars/?lang=CHS',
|
||||
'sec-ch-ua': '"Microsoft Edge";v = "105", " Not;A Brand";v = "99", "Chromium";v = "105"',
|
||||
'sec-ch-ua-mobile': '?0',
|
||||
'sec-ch-ua-platform': 'Windows',
|
||||
'sec-fetch-dest': 'document',
|
||||
'sec-fetch-mode': 'navigate',
|
||||
'sec-fetch-site': 'none',
|
||||
'sec-fetch-user': '?1',
|
||||
'upgrade-insecure-requests': 1
|
||||
}
|
||||
})
|
||||
let txt = await req.text()
|
||||
let sTxt = /sortable_data.push\((.*)\)/.exec(txt)
|
||||
if (sTxt && sTxt[1]) {
|
||||
let tmp = eval(sTxt[1])
|
||||
lodash.forEach(tmp, (ds) => {
|
||||
let name = cheerio.load(ds[1])('a').text()
|
||||
let star = cheerio.load(ds[2])('img').length
|
||||
ret[name] = {
|
||||
name,
|
||||
star,
|
||||
type
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
for (let type of ['sword', 'claymore', 'polearm', 'bow', 'catalyst']) {
|
||||
await getWeaponData(type)
|
||||
}
|
||||
Data.writeJSON('resources/meta/weapons/data.json', ret)
|