diff --git a/apps/character/AvatarCard.js b/apps/character/AvatarCard.js index bdce5b7a..2edf03e3 100644 --- a/apps/character/AvatarCard.js +++ b/apps/character/AvatarCard.js @@ -125,7 +125,7 @@ let Avatar = { } }) } - let char = Character.get(name.trim()) + let char = Character.get(name.trim(), e.game) if (!char) { return false } diff --git a/apps/profile/ProfileDetail.js b/apps/profile/ProfileDetail.js index 892438f5..b8e2ac78 100644 --- a/apps/profile/ProfileDetail.js +++ b/apps/profile/ProfileDetail.js @@ -77,11 +77,12 @@ let ProfileDetail = { if (!Common.cfg('avatarProfile')) { return false // 面板开关关闭 } - let char = Character.get(name.trim()) + let char = Character.get(name.trim(), e.game) if (!char) { return false } if (/星铁/.test(msg) || char.isSr) { + e.game = 'sr' e.isSr = true } diff --git a/models/Weapon.js b/models/Weapon.js index 80c3e1fb..2347254e 100644 --- a/models/Weapon.js +++ b/models/Weapon.js @@ -32,6 +32,12 @@ class Weapon extends Base { return `${this.isGs ? 'meta' : 'meta-sr'}/weapon/${this.type}/${this.name}/icon.webp` } + get abbr () { + let name = this.name + let abbr = this.meta?.abbr + return name.length <= 4 ? name : (abbr || name) + } + get imgs () { if (this.isGs) { return { @@ -117,6 +123,12 @@ class Weapon extends Base { return this._detail } + /** + * 计算武器主属性 + * @param level 武器等级 + * @param promote 武器突破 + * @returns {{atkBase: number, attr: {value: *, key: *}}|{}|boolean} + */ calcAttr (level, promote = -1) { let metaAttr = this.detail?.attr if (!metaAttr) { @@ -168,13 +180,30 @@ class Weapon extends Base { } } - // 获取精炼描述 + /** + * 获取武器精炼描述 + * @param affix 精炼 + * @returns {{name, desc: *}|{}} + */ getAffixDesc (affix = 1) { if (this.isGs) { - return {} + let { text, datas } = this.detail?.affixData || {} + let { descFix } = Meta.getMeta('gs', 'weapon') + let reg = /\$\[(\d)\]/g + let ret + let desc = descFix[this.name] || text || '' + while ((ret = reg.exec(desc)) !== null) { + let idx = ret[1] + let value = datas?.[idx]?.[affix - 1] + desc = desc.replaceAll(ret[0], `${value}`) + } + return { + name: '', + desc + } } let skill = this.detail.skill - let { name, desc, tables } = skill + let { desc, tables } = skill let reg = /\$(\d)\[(?:i|f1)\](\%?)/g let ret while ((ret = reg.exec(desc)) !== null) { @@ -189,11 +218,15 @@ class Weapon extends Base { desc = desc.replaceAll(ret[0], value) } return { - name: skill.name, + name: skill.name || '', desc } } + /** + * 获取当前武器Buff配置 + * @returns {*|boolean} + */ getWeaponBuffs () { let { game } = this let { weaponBuffs } = Meta.getMeta(game, 'weapon') @@ -207,6 +240,12 @@ class Weapon extends Base { return buffs } + /** + * 获取武器精炼 Buff + * @param affix + * @param isStatic + * @returns {*[]} + */ getWeaponAffixBuffs (affix, isStatic = true) { let buffs = this.getWeaponBuffs() let ret = [] diff --git a/resources/character/profile-detail.css b/resources/character/profile-detail.css index ab602b0b..9867df4a 100644 --- a/resources/character/profile-detail.css +++ b/resources/character/profile-detail.css @@ -646,9 +646,8 @@ body { background-position: 0 -80px; } .artis .weapon { - height: 96px; + height: 190px; overflow: visible; - margin-bottom: 10px; } .artis .weapon .img { width: 106px; @@ -662,14 +661,11 @@ body { background-repeat: no-repeat; } .artis .weapon .head { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; + position: relative; + height: 90px; padding: 15px 0 10px 15px; z-index: 3; - border-radius: 10px; + border-radius: 10px 10px 0 0; background: linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7), rgba(25, 25, 25, 0.5), rgba(25, 25, 25, 0), rgba(25, 25, 25, 0)); } .artis .weapon .head strong { @@ -721,9 +717,8 @@ body { right: 0; height: 26px; width: 100%; - background: rgba(0, 0, 0, 0.2); + background: rgba(0, 0, 0, 0.3); line-height: 26px; - border-radius: 0 0 10px 10px; text-align: center; padding: 0 5px 0 10px; } @@ -734,8 +729,26 @@ body { color: #ffe699; font-weight: bold; } -.artis .arti-stat { +.artis .weapon .weapon-desc-cont { + height: 100px; + border-radius: 0 0 10px 10px; + background: rgba(0, 0, 0, 0.4); + overflow: hidden; + text-overflow: ellipsis; +} +.artis .weapon .weapon-desc { + height: 100px; + padding: 6px 5px 7px 10px; + color: #bbb; + display: table-cell; + vertical-align: middle; +} +.arti-stat { height: 84px; + background: url("../common/cont/card-bg.png") top left repeat-x; + margin: 5px 15px 5px 10px; + box-shadow: 0 0 1px 0 #ccc, 2px 2px 4px 0 rgba(50, 50, 50, 0.8); + border-radius: 10px; } .arti-class-title { height: 25px; @@ -970,13 +983,15 @@ body { } .sr-weapon .weapon-desc { margin-top: 7px; + text-shadow: 0 0 1px rgba(0, 0, 0, 0.7), 1px 1px 3px rgba(0, 0, 0, 0.4); +} +.weapon-desc { font-size: 12px; font-weight: normal; color: #fff; white-space: break-spaces; - text-shadow: 0 0 1px rgba(0, 0, 0, 0.7), 1px 1px 3px rgba(0, 0, 0, 0.4); } -.sr-weapon .weapon-desc nobr { +.weapon-desc nobr { color: #ffe699; display: inline-block; border-radius: 4px; @@ -1082,4 +1097,4 @@ body { .copyright.ad { font-size: 12px; } -/*# sourceMappingURL=profile-detail.css.map */ +/*# sourceMappingURL=profile-detail.css.map */ \ No newline at end of file diff --git a/resources/character/profile-detail.html b/resources/character/profile-detail.html index bf82ab81..c6d3505d 100644 --- a/resources/character/profile-detail.html +++ b/resources/character/profile-detail.html @@ -49,7 +49,6 @@ {{set cw = artisDetail?.charWeight || {} }} {{each attrMap title key}}
  • -
    {{title}}
    @@ -113,6 +112,7 @@
    {{if game === 'sr'}} +
    {{each talentMap tName key}} @@ -130,7 +130,6 @@
    - {{each data.treeData tCfg}} {{if tCfg?.type === 'talent' }}
    @@ -153,6 +152,7 @@
    {{if weapon && weapon.name}} +
    @@ -167,13 +167,26 @@
    攻击{{a.atk}}
    防御{{a.def}}
    -
    {{@weapon.desc?.desc}}
    +
    + {{@weapon.desc?.desc}} +
    {{/if}} {{/if}} + + {{if mode === "profile"}} {{set ad = artisDetail}} +
    +
    评分规则:{{ad.classTitle}}
    +
    +
    {{ad.markClass}}圣遗物评级
    +
    {{ad.mark}}圣遗物总分
    +
    +
    + +
    {{ if game === 'gs' }}
    @@ -192,14 +205,11 @@ {{/if}} {{/each}}
    -
    -
    -
    评分规则:{{ad.classTitle}}
    -
    -
    {{ad.markClass}}圣遗物评级
    -
    {{ad.mark}}圣遗物总分
    +
    +
    {{@weapon.desc?.desc}}
    +
    {{/if}} diff --git a/resources/character/profile-detail.less b/resources/character/profile-detail.less index ae6481eb..3b72aee7 100644 --- a/resources/character/profile-detail.less +++ b/resources/character/profile-detail.less @@ -798,9 +798,8 @@ body { .artis .weapon { - height: 96px; + height: 190px; overflow: visible; - margin-bottom: 10px; .img { @@ -816,14 +815,11 @@ body { } .head { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; + position: relative; + height: 90px; padding: 15px 0 10px 15px; z-index: 3; - border-radius: 10px; + border-radius: 10px 10px 0 0; background: linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7), rgba(25, 25, 25, 0.5), rgba(25, 25, 25, 0), rgba(25, 25, 25, 0)); strong { @@ -886,9 +882,8 @@ body { right: 0; height: 26px; width: 100%; - background: rgba(0, 0, 0, .2); + background: rgba(0, 0, 0, .3); line-height: 26px; - border-radius: 0 0 10px 10px; text-align: center; padding: 0 5px 0 10px; @@ -901,10 +896,30 @@ body { } } } + + .weapon-desc-cont { + height: 100px; + border-radius: 0 0 10px 10px; + background: rgba(0, 0, 0, .4); + overflow: hidden; + text-overflow: ellipsis; + } + + .weapon-desc { + height: 100px; + padding: 6px 5px 7px 10px; + color: #bbb; + display: table-cell; + vertical-align: middle; + } } -.artis .arti-stat { +.arti-stat { height: 84px; + background: url("../common/cont/card-bg.png") top left repeat-x; + margin: 5px 15px 5px 10px; + box-shadow: 0 0 1px 0 #ccc, 2px 2px 4px 0 rgba(50, 50, 50, 0.8); + border-radius: 10px; } .arti-class-title { @@ -1210,24 +1225,27 @@ body { .weapon-desc { margin-top: 7px; - font-size: 12px; - font-weight: normal; - color: #fff; - white-space: break-spaces; text-shadow: 0 0 1px rgba(0, 0, 0, 0.7), 1px 1px 3px rgba(0, 0, 0, 0.4); + } +} - nobr { - color: #ffe699; - display: inline-block; - border-radius: 4px; - font-size: 12px; - height: 16px; - line-height: 16px; - background: rgba(0, 0, 0, 0.5); - text-align: center; - padding: 0 3px; - margin: 0 2px; - } +.weapon-desc { + font-size: 12px; + font-weight: normal; + color: #fff; + white-space: break-spaces; + + nobr { + color: #ffe699; + display: inline-block; + border-radius: 4px; + font-size: 12px; + height: 16px; + line-height: 16px; + background: rgba(0, 0, 0, 0.5); + text-align: center; + padding: 0 3px; + margin: 0 2px; } } diff --git a/resources/meta-sr/artifact/index.js b/resources/meta-sr/artifact/index.js index d2534dc0..b8deeb68 100644 --- a/resources/meta-sr/artifact/index.js +++ b/resources/meta-sr/artifact/index.js @@ -11,34 +11,23 @@ let metaData = Data.readJSON('/resources/meta-sr/artifact/meta.json', 'miao') let setMeta = Meta.create('sr', 'artiSet') let artiMeta = Meta.create('sr', 'arti') -let artiMap = {} let idMap = {} -let artiSetMap = {} lodash.forEach(data, (setData) => { let artiSet = { name: setData.name, effect: setData.skill, sets: {} } - artiSetMap[setData.name] = artiSet setMeta.addDataItem(artiSet.name, artiSet) lodash.forEach(setData.idxs, (ds, idx) => { - artiMap[ds.name] = { - ...ds, - set: setData.name, - setId: setData.id, - idx - } artiMeta.addDataItem(ds.name, { ...ds, set: setData.name, setId: setData.id, idx }) - idMap[ds.name] = lodash.keys(ds.ids).join(',') - artiSet.sets[idx] = ds.name }) }) @@ -54,5 +43,3 @@ artiMeta.addMeta({ usefulAttr, ...Data.getData(metaCfg, 'mainAttr,subAttr,attrMap') }) - -export * from './meta.js' diff --git a/resources/meta-sr/character/meta.js b/resources/meta-sr/character/alias.js similarity index 74% rename from resources/meta-sr/character/meta.js rename to resources/meta-sr/character/alias.js index 5024f8f2..6e142988 100644 --- a/resources/meta-sr/character/meta.js +++ b/resources/meta-sr/character/alias.js @@ -1,15 +1,13 @@ -import lodash from 'lodash' - -let alias = { +export const alias = { 三月七: '三月,相遇之缘,37,3月7', 丹恒: '单恒,单桓,冷面,小青龙,冷面小青龙', - 佩拉: '佩菈', + 佩拉: '佩菈,佩拉姐姐', 停云: '幻胧', 克拉拉: '', 卡芙卡: '亲妈,卡夫卡', 姬子: '', 娜塔莎: '纳塔莎,纳塔沙,纳塔沙', - 布洛妮娅: '大鸭鸭,鸭鸭,板鸭,布洛尼亚,布洛妮亚,布洛尼娅', + 布洛妮娅: '大鸭鸭,鸭鸭,板鸭,布洛尼亚,布洛妮亚,布洛尼娅,甘蔗鸭', 希儿: '希尔,蝴蝶,云天明', 希露瓦: '希璐瓦', 彦卿: '延卿,闫卿,彦清,彦青', @@ -22,22 +20,10 @@ let alias = { 罗刹: '罗沙,罗杀', 艾丝妲: '宇宙级富婆', 虎克: '胡可,虎克大人,漆黑的虎克,漆黑的虎克大人,鼹鼠党,鼹鼠党老大', - 银狼: '小鸭鸭,小板鸭,黑客,骇客,骇兔', + 银狼: '小鸭鸭,小板鸭,黑客,骇客,骇兔,憨色鸭,憨鸭', 阿兰: '', 青雀: '赌神,赌圣,青鹊,摸鱼', 黑塔: '转圈圈', '丹恒•饮月': '丹恒·饮月,饮月君,饮月,丹恒饮月,龙尊', '托帕&账账': '托帕,账账' } - -let aliasMap = {} -lodash.forEach(alias, (txt, char) => { - if (!txt) { - return true - } - lodash.forEach(txt.split(','), (t) => { - aliasMap[t] = char - }) -}) - -export { alias, aliasMap } diff --git a/resources/meta-sr/character/index.js b/resources/meta-sr/character/index.js index bda22bec..346bea39 100644 --- a/resources/meta-sr/character/index.js +++ b/resources/meta-sr/character/index.js @@ -1,5 +1,5 @@ import { Data, Meta } from '#miao' -import { alias } from './meta.js' +import { alias } from './alias.js' let data = Data.readJSON('resources/meta-sr/character/data.json', 'miao') let meta = Meta.create('sr', 'char') diff --git a/resources/meta-sr/weapon/index.js b/resources/meta-sr/weapon/index.js index a4494451..73587ad9 100644 --- a/resources/meta-sr/weapon/index.js +++ b/resources/meta-sr/weapon/index.js @@ -1,33 +1,16 @@ import { Data, Meta } from '#miao' import lodash from 'lodash' -import { abbr, alias } from './meta.js' +import { abbr, aliasCfg } from './meta.js' const types = '存护,丰饶,毁灭,同谐,虚无,巡猎,智识'.split(',') +let data = Data.readJSON('/resources/meta-sr/weapon/data.json', 'miao') const meta = Meta.create('sr', 'weapon') - - -let data = Data.readJSON('/resources/meta-sr/weapon/data.json', 'miao') -let aliasMap = {} - -lodash.forEach(data, (ds) => { - aliasMap[ds.id] = ds.id - aliasMap[ds.name] = ds.id -}) -lodash.forEach(alias, (name, alias) => { - if (aliasMap[name]) { - aliasMap[alias] = aliasMap[name] - } -}) - meta.addData(data) -meta.addAlias(alias) - -export const weaponAlias = aliasMap -export const weaponData = data +meta.addAlias(aliasCfg) +meta.addAbbr(abbr) const weaponBuffs = {} - let loadBuffs = async function () { for (let type of types) { let calc = await Data.importDefault(`/resources/meta-sr/weapon/${type}/calc.js`, 'miao') @@ -60,13 +43,13 @@ let loadBuffs = async function () { }) } lodash.forEach(calc, (ds, key) => { - let id = aliasMap[key] - weaponBuffs[id] = ds + let id = meta.getId(key) + if (id) { + weaponBuffs[id] = ds + } }) } } await loadBuffs() meta.addMeta({ weaponBuffs }) - -export { weaponBuffs } diff --git a/resources/meta-sr/weapon/meta.js b/resources/meta-sr/weapon/meta.js index b10db1f4..c04c9808 100644 --- a/resources/meta-sr/weapon/meta.js +++ b/resources/meta-sr/weapon/meta.js @@ -20,7 +20,7 @@ export const abbr = { '今日亦是和平的一日': '今日亦是和平' } -let aliasCfg = { +export const aliasCfg = { // 巡猎 '锋镝': '', '离弦': '', @@ -113,13 +113,3 @@ let aliasCfg = { '银河铁道之夜': '银河铁道,星穹铁道之夜,星穹铁道', '拂晓之前': '拂晓' } -let alias = {} -lodash.forEach(aliasCfg, (txt, name) => { - if (txt) { - lodash.forEach(txt.split(','), (t) => { - alias[t] = name - }) - } - alias[name] = name -}) -export { alias } diff --git a/resources/meta/artifact/index.js b/resources/meta/artifact/index.js index fcbe2bda..355d748f 100644 --- a/resources/meta/artifact/index.js +++ b/resources/meta/artifact/index.js @@ -4,9 +4,6 @@ import calc from './calc.js' import * as metaData from './meta.js' import { usefulAttr } from './artis-mark.js' -let artiSetMap = {} -let artiMap = {} - let setMeta = Meta.create('gs', 'artiSet') let artiMeta = Meta.create('gs', 'arti') @@ -18,7 +15,6 @@ lodash.forEach(artis, (ds) => { effect: ds.effect, sets: {} } - artiSetMap[ds.name] = artiSet setMeta.addDataItem(ds.name, artiSet) lodash.forEach(ds.sets, (as, idx) => { @@ -28,16 +24,12 @@ lodash.forEach(artis, (ds) => { name: as.name, idx } - artiMap[as.name] = tmp artiSet.sets[idx] = as.name artiMeta.addDataItem(as.name, tmp) } }) }) -export { artiMap, artiSetMap, calc } -export * from './meta.js' - setMeta.addAbbr(metaData.abbr) setMeta.addAlias(metaData.aliasCfg) artiMeta.addMeta({ diff --git a/resources/meta/weapon/desc.js b/resources/meta/weapon/desc.js new file mode 100644 index 00000000..0f9bbd23 --- /dev/null +++ b/resources/meta/weapon/desc.js @@ -0,0 +1,54 @@ +// 简化一些过长的装备文案,以在面板中获得更好的展示效果 +export const descFix = { + // 法器 + 万世流涌大典: '生命值提升$[0]。生命值变化时,重击伤害提升$[1]。持续4秒,至多叠加3次;
    叠加至3层或3层时间刷新时,恢复$[2]点能量,每12秒一次。', + 纯水流华: '施放战技时,元素伤害提升$[0],获得24%生命值上限的生命之契,吸收治疗满后移除。移除时,每1000点提供$[1]元素伤害加成,上限$[2],持续12秒。', + 碧落之珑: '施放元素爆发或创造护盾后的3秒内:每2.5秒恢复$[0]能量,基于生命值上限,每1000点提升元素伤害$[1],上限$[2]。处于队伍后台也能触发。', + 不灭月华: '治疗加成提升$[0];普攻击造成的伤害增加,值为角色生命值上限的$[1]。施放爆发后的12秒内,普攻命中敌人恢复0.6点能量。', + 千夜浮梦: '基于其他角色的元素类型为装备者提供效果。每个同元素角色提升$[0]精通;不同元素角色提升$[1]元素伤害。队伍其他角色的精通提升$[2]点。', + 图莱杜拉的回忆: '普通攻击速度提升$[0];施放战技后14秒内:普攻击伤害每1秒提升$[1];普攻命中敌人后,普攻伤害提升$[2],上限$[3]。', + 金流监督: '攻击力提升$[0]。生命值变更时,普攻伤害提升$[1],重击伤害提升$[2],持续4秒,至多3层;3层后攻速提升$[3]。', + 神乐之真意: '施放战技时获得神乐舞效果,持续16秒,至多叠加3层。每层使角色的战技伤害提高$[0]。3层时,角色获得$[1]元素伤害加成。', + 盈满之实: '触发元素反应后,获得效果:每层精通提升$[0]点,攻击力降低5%,至多5层,处于后台时也能触发。未触发元素反应时将每6秒失去一层。', + 流浪的晚星: '每10秒基于精通的$[0]提升攻击力,并基于该提升的30%为其他角色提升攻击力,持续12秒,处于后台时也能触发,多件同名武器可叠加。', + + // 单手剑 + 降临之剑: '普通攻击与重击命中敌人后有50%概率在小范围内造成200%攻击力的伤害。该效果每10秒只能触发一次;
    此外,旅行者装备降临之剑时,攻击力提升66点。', + 天目影打刀: '施放元素战技获得1个胤种,至多同时存在3个。
    施放元素爆发清除所有胤种,并在2秒之后,基于消耗的胤种数量,每个为该角色恢复$[0]点元素能量。', + 风鹰剑: '攻击力提高$[0];
    受到伤害时触发:恢复等同于攻击力的$[1]的生命值,并对周围的敌人造成$[2]攻击力的伤害。每15秒只能触发一次。', + 天空之刃: '暴击率提升$[0];施放元素爆发时:移动速度提升10%,攻击速度提升10%,普通攻击与重击命中时,额外造成$[1]攻击力的伤害,持续12秒。', + 苍古自由之誓: '造成的伤害提高$[0];触发元素反应时,获得奋起之符。拥有2枚时,消耗并获得12秒状态:普攻、重击、下落攻击伤害提高$[1],攻击力提升$[2]。', + 雾切之回光: '获得$[0]所有元素伤害加成。
    获得巴印:普攻造成元素伤害时5秒;施放元素爆发时10秒;能量低于100%时。当持有1/2/3层巴印时,获得$[1]元素伤害加成。', + 波乱月白经津: '获得$[0]元素伤害加成;其他角色施放战技时,产生1层波穗,至多2层。装备武器的角色施放战技时,消耗波穗每层提升$[1]普攻伤害,持续8秒。', + 圣显之钥: '生命值提升$[0]。战技命中敌人时:自己获得$[1]生命上限的精通,至多3层。叠加至3层之后为所有角色提供$[2]生命上限的精通,持续20秒。', + 静水流涌之辉: '装备者生命值变化时,战技伤害提升$[0],持续6秒,至多3层;其他角色生命值变化时,装备者的生命上限提升$[1],持续6秒,至多2层。', + 原木刀: '触发草元素反应后,每20秒产生至多存在10秒的种识之叶,后台也能触发。拾取提升精通$[0]点,持续12秒。', + 西福斯的月光: '每10秒基于精通的$[0]提升充能效率,并基于该提升的30%为其他角色提升充能效率,持续12秒。处于后台时也能触发,多件同名武器可叠加。', + 东花坊时雨: '攻击命中敌人后,为命中的一名敌人施加状态,对该状态敌人造成的伤害提升$[0]。状态持续10秒,每15秒至多一次;敌人被击败时清除CD。', + 船坞长剑: '受到或进行治疗时,获得标记,最多3层,处于后台也能获得。施放战技或爆发时,消耗标记:每枚标记提高$[0]点精通,恢复$[1]点能量。每15秒至多一次。', + 海渊终曲: '施放战技时,攻击力提升$[0],持续12秒,获得24%生命值上限的生命之契,吸收治疗满后移除。基于清除值的$[1]提升至多$[2]点攻击力,持续12秒。', + + // 双手剑 + 便携动力锯: '受到或进行治疗时,获得标记,最多3层,处于后台也能获得。施放战技或爆发时,消耗标记:每枚标记提高$[0]精通,恢复$[1]点能量。', + 松籁响起之时: '攻击力提高$[0];普攻或重击命中时,获得低语之符。拥有4枚低语之符时,将消耗所有:普攻速度提高$[1],攻击力提升$[2],持续12秒。', + 森林王器: '触发草元素反应后,每20秒产生至多存在10秒的种识之叶,后台也能触发。拾取提升精通$[0]点,持续12秒。', + 玛海菈的水色: '每10秒基于精通的$[0]提升攻击力,并基于该提升的30%为其他角色提升攻击力,持续12秒。处于后台时也能触发,多件同名武器可叠加。', + + // 长柄武器 + 勘探钻机: '受到或进行治疗时,获得标记,最多3层,处于后台也能获得。施放战技或爆发时,消耗标记:每枚标记提高$[0]攻击力与$[1]元素伤害加成。', + 贯月矢: '触发草元素反应后,每20秒产生至多存在10秒的种识之叶,后台也能触发。拾取提升攻击力32%,持续12秒。', + + // 弓 + 终末嗟叹之诗: '精通提高$[0]点;战技或爆发命中敌人时,获得追思之符,后台也能触发。4枚时消耗所有追思之符:精通提高$[1]点,攻击力提升$[2],持续12秒。', + 冬极白星: '战技和爆发伤害提高$[0];普攻、重击、战技或爆发命中后,将产生1层效果。处于1/2/3/4层效果时,攻击力将提高$[1]。', + 飞雷之弦振: '攻击力提高$[0],获得巴印:普攻时,持续5秒;施放战技时,持续10秒;能量低于100%时。持有1/2/3层巴印时,普攻伤害提高$[1]。', + 猎人之径: '获得$[0]元素伤害加成。重击命中敌人后:重击伤害值提高,为精通的$[1]。该效果将在生效12次或10秒后消失,每12秒至多获得一次状态。', + 最初的大魔术: '攻击力提升$[0];队伍中每有1/2/3个同属性(包括自身)攻击力提升$[1],每1/2/3个不同属性移动速度提升$[2]。', + 测距规: '受到或进行治疗时,获得标记,最多3层,处于后台也能获得。施放战技或爆发时,消耗标记:每枚标记提高$[0]攻击力与$[1]元素伤害,持续10秒。', + 王下近侍: '施放战技或爆发时,精通提升$[0]点,持续12秒,每20秒至多触发一次。状态结束或切换角色被移除时,对附近一名敌人造成$[1]攻击力的伤害。', + 竭泽: '施放战技后获得持续15秒的状态,CD12秒:在攻击命中敌人时造成$[0]攻击力的范围伤害,每2秒至多一次,触发3次后移除。', + + // "施放元素爆发或创造护盾后的3秒内,将产生「定土玉圭」效果:每2.5秒恢复$[0]点元素能量,并基于装备者的生命值上限,每1000点使其对应元素类型的元素伤害加成提高$[1],至多提高$[2]。装备该武器的角色处于队伍后台时,依然能产生「定土玉圭」效果。", + // +} + diff --git a/resources/meta/weapon/index.js b/resources/meta/weapon/index.js index 1f13fca9..73c80c40 100644 --- a/resources/meta/weapon/index.js +++ b/resources/meta/weapon/index.js @@ -1,6 +1,7 @@ import { Data, Meta } from '#miao' import lodash from 'lodash' import { weaponType, abbr, alias, weaponSet } from './meta.js' +import { descFix } from './desc.js' let weaponBuffs = {} let data = {} @@ -49,5 +50,5 @@ meta.addData(data) meta.addAlias(alias) meta.addAbbr(abbr) meta.addMeta({ - weaponType, weaponSet, weaponBuffs + weaponType, weaponSet, weaponBuffs, descFix })