mirror of
https://github.com/ZZZure/ZZZ-Plugin.git
synced 2025-12-16 13:17:32 +00:00
更新嘉音别名;修复等
This commit is contained in:
parent
2ee4b2ef09
commit
4f189cbb71
7 changed files with 35 additions and 385 deletions
|
|
@ -1,3 +1,10 @@
|
||||||
|
耀嘉音:
|
||||||
|
- 嘉音
|
||||||
|
- 耀佳音
|
||||||
|
- 佳音
|
||||||
|
- 要加衣
|
||||||
|
- '+1'
|
||||||
|
- Astra Yao
|
||||||
「11号」:
|
「11号」:
|
||||||
- 十一号
|
- 十一号
|
||||||
- 十一
|
- 十一
|
||||||
|
|
|
||||||
|
|
@ -30,26 +30,3 @@ export const weaponFileNameToID = name => {
|
||||||
export const getAllWeaponID = () => {
|
export const getAllWeaponID = () => {
|
||||||
return Object.keys(WeaponId2Sprite);
|
return Object.keys(WeaponId2Sprite);
|
||||||
};
|
};
|
||||||
|
|
||||||
const WeaponId2Data = getMapData('WeaponId2Data');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 武器名称转id
|
|
||||||
* @param {string} name 武器全称
|
|
||||||
* @returns {number | null}
|
|
||||||
*/
|
|
||||||
export const weaponNameToID = name => {
|
|
||||||
for (const [id, data] of Object.entries(WeaponId2Data)) {
|
|
||||||
if (data.name === name) return +id;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 武器ID转职业
|
|
||||||
* @param {number} id 武器全称
|
|
||||||
* @returns {number | null}
|
|
||||||
*/
|
|
||||||
export const weaponIDToProfession = id => {
|
|
||||||
return WeaponId2Data[id]?.profession ?? null;
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
import { weaponIDToProfession } from '../../lib/convert/weapon.js';
|
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
export var elementEnum;
|
export var elementEnum;
|
||||||
(function (elementEnum) {
|
(function (elementEnum) {
|
||||||
|
|
@ -90,8 +89,10 @@ export class BuffManager {
|
||||||
// 武器buff职业检查
|
// 武器buff职业检查
|
||||||
if (buff.source === 'Weapon') {
|
if (buff.source === 'Weapon') {
|
||||||
const professionCheck = (avatar) => {
|
const professionCheck = (avatar) => {
|
||||||
const weapon_profession = weaponIDToProfession(avatar.weapon.id);
|
const weapon_profession = avatar.weapon?.profession;
|
||||||
return !weapon_profession || avatar.avatar_profession === weapon_profession;
|
if (!weapon_profession)
|
||||||
|
return true;
|
||||||
|
return avatar.avatar_profession === weapon_profession;
|
||||||
};
|
};
|
||||||
const oriCheck = typeof buff.check === 'function' && buff.check;
|
const oriCheck = typeof buff.check === 'function' && buff.check;
|
||||||
buff.check = ({ avatar, buffM, calc }) => professionCheck(avatar) && (!oriCheck || oriCheck({ avatar, buffM, calc }));
|
buff.check = ({ avatar, buffM, calc }) => professionCheck(avatar) && (!oriCheck || oriCheck({ avatar, buffM, calc }));
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
import type { ZZZAvatarInfo } from '../avatar.js'
|
import type { ZZZAvatarInfo } from '../avatar.js'
|
||||||
import type { Calculator, skill } from './Calculator.ts'
|
import type { Calculator, skill } from './Calculator.ts'
|
||||||
import { weaponIDToProfession } from '../../lib/convert/weapon.js'
|
|
||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
|
|
||||||
export enum elementEnum {
|
export enum elementEnum {
|
||||||
|
|
@ -139,8 +138,9 @@ export class BuffManager {
|
||||||
// 武器buff职业检查
|
// 武器buff职业检查
|
||||||
if (buff.source === 'Weapon') {
|
if (buff.source === 'Weapon') {
|
||||||
const professionCheck = (avatar: ZZZAvatarInfo) => {
|
const professionCheck = (avatar: ZZZAvatarInfo) => {
|
||||||
const weapon_profession = weaponIDToProfession(avatar.weapon.id)
|
const weapon_profession = avatar.weapon?.profession
|
||||||
return !weapon_profession || avatar.avatar_profession === weapon_profession
|
if (!weapon_profession) return true
|
||||||
|
return avatar.avatar_profession === weapon_profession
|
||||||
}
|
}
|
||||||
const oriCheck = typeof buff.check === 'function' && buff.check
|
const oriCheck = typeof buff.check === 'function' && buff.check
|
||||||
buff.check = ({ avatar, buffM, calc }) => professionCheck(avatar) && (!oriCheck || oriCheck({ avatar, buffM, calc }))
|
buff.check = ({ avatar, buffM, calc }) => professionCheck(avatar) && (!oriCheck || oriCheck({ avatar, buffM, calc }))
|
||||||
|
|
|
||||||
|
|
@ -106,8 +106,10 @@ export function avatar_ability(avatar) {
|
||||||
return calc.calc();
|
return calc.calc();
|
||||||
}
|
}
|
||||||
/** 武器加成 */
|
/** 武器加成 */
|
||||||
export function weapon_buff(equipment, buffM) {
|
export function weapon_buff(weapon, buffM) {
|
||||||
const name = equipment.name;
|
const name = weapon?.name;
|
||||||
|
if (!name)
|
||||||
|
return;
|
||||||
logger.debug('武器:' + name);
|
logger.debug('武器:' + name);
|
||||||
const m = calcFnc.weapon[name];
|
const m = calcFnc.weapon[name];
|
||||||
if (!m)
|
if (!m)
|
||||||
|
|
@ -116,29 +118,29 @@ export function weapon_buff(equipment, buffM) {
|
||||||
if (m.buffs)
|
if (m.buffs)
|
||||||
buffM.new(m.buffs);
|
buffM.new(m.buffs);
|
||||||
if (m.calc)
|
if (m.calc)
|
||||||
m.calc(buffM, equipment.star);
|
m.calc(buffM, weapon.star);
|
||||||
buffM.default({});
|
buffM.default({});
|
||||||
}
|
}
|
||||||
/** 套装加成 */
|
/** 套装加成 */
|
||||||
export function set_buff(equip, buffM) {
|
export function set_buff(equips, buffM) {
|
||||||
buffM.default({ name: '', source: 'Set' });
|
buffM.default({ name: '', source: 'Set' });
|
||||||
const setCount = {};
|
const setCount = {};
|
||||||
for (const equip_detail of equip) {
|
for (const equip of equips) {
|
||||||
if (equip_detail.equipment_type == 5) {
|
if (equip.equipment_type == 5) {
|
||||||
// 属伤加成
|
// 属伤加成
|
||||||
const index = [31503, 31603, 31703, 31803, 31903].indexOf(equip_detail.main_properties[0].property_id);
|
const index = [31503, 31603, 31703, 31803, 31903].indexOf(equip.main_properties[0].property_id);
|
||||||
if (index > -1 && elementEnum[index]) {
|
if (index > -1 && elementEnum[index]) {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
buffM.new({
|
buffM.new({
|
||||||
name: '驱动盘5号位',
|
name: '驱动盘5号位',
|
||||||
type: '增伤',
|
type: '增伤',
|
||||||
value: Number(equip_detail.main_properties[0].base.replace('%', '')) / 100,
|
value: Number(equip.main_properties[0].base.replace('%', '')) / 100,
|
||||||
isForever: true,
|
isForever: true,
|
||||||
element: elementEnum[index]
|
element: elementEnum[index]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const suit_name = equip_detail.equip_suit.name;
|
const suit_name = equip.equip_suit.name;
|
||||||
setCount[suit_name] = (setCount[suit_name] || 0) + 1;
|
setCount[suit_name] = (setCount[suit_name] || 0) + 1;
|
||||||
}
|
}
|
||||||
buffM.setCount = setCount;
|
buffM.setCount = setCount;
|
||||||
|
|
|
||||||
|
|
@ -133,37 +133,38 @@ export function avatar_ability(avatar: ZZZAvatarInfo) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 武器加成 */
|
/** 武器加成 */
|
||||||
export function weapon_buff(equipment: ZZZAvatarInfo['weapon'], buffM: BuffManager) {
|
export function weapon_buff(weapon: ZZZAvatarInfo['weapon'], buffM: BuffManager) {
|
||||||
const name = equipment.name
|
const name = weapon?.name
|
||||||
|
if (!name) return
|
||||||
logger.debug('武器:' + name)
|
logger.debug('武器:' + name)
|
||||||
const m = calcFnc.weapon[name]
|
const m = calcFnc.weapon[name]
|
||||||
if (!m) return
|
if (!m) return
|
||||||
buffM.default({ name, source: 'Weapon' })
|
buffM.default({ name, source: 'Weapon' })
|
||||||
if (m.buffs) buffM.new(m.buffs)
|
if (m.buffs) buffM.new(m.buffs)
|
||||||
if (m.calc) m.calc(buffM, equipment.star)
|
if (m.calc) m.calc(buffM, weapon.star)
|
||||||
buffM.default({})
|
buffM.default({})
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 套装加成 */
|
/** 套装加成 */
|
||||||
export function set_buff(equip: ZZZAvatarInfo['equip'], buffM: BuffManager) {
|
export function set_buff(equips: ZZZAvatarInfo['equip'], buffM: BuffManager) {
|
||||||
buffM.default({ name: '', source: 'Set' })
|
buffM.default({ name: '', source: 'Set' })
|
||||||
const setCount: { [name: string]: number } = {}
|
const setCount: { [name: string]: number } = {}
|
||||||
for (const equip_detail of equip) {
|
for (const equip of equips) {
|
||||||
if (equip_detail.equipment_type == 5) {
|
if (equip.equipment_type == 5) {
|
||||||
// 属伤加成
|
// 属伤加成
|
||||||
const index = [31503, 31603, 31703, 31803, 31903].indexOf(equip_detail.main_properties[0].property_id)
|
const index = [31503, 31603, 31703, 31803, 31903].indexOf(equip.main_properties[0].property_id)
|
||||||
if (index > -1 && elementEnum[index]) {
|
if (index > -1 && elementEnum[index]) {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
buffM.new({
|
buffM.new({
|
||||||
name: '驱动盘5号位',
|
name: '驱动盘5号位',
|
||||||
type: '增伤',
|
type: '增伤',
|
||||||
value: Number(equip_detail.main_properties[0].base.replace('%', '')) / 100,
|
value: Number(equip.main_properties[0].base.replace('%', '')) / 100,
|
||||||
isForever: true,
|
isForever: true,
|
||||||
element: elementEnum[index]
|
element: elementEnum[index]
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const suit_name = equip_detail.equip_suit.name
|
const suit_name = equip.equip_suit.name
|
||||||
setCount[suit_name] = (setCount[suit_name] || 0) + 1
|
setCount[suit_name] = (setCount[suit_name] || 0) + 1
|
||||||
}
|
}
|
||||||
buffM.setCount = setCount
|
buffM.setCount = setCount
|
||||||
|
|
|
||||||
|
|
@ -1,338 +0,0 @@
|
||||||
{
|
|
||||||
"12001": {
|
|
||||||
"id": 12001,
|
|
||||||
"name": "「月相」-望",
|
|
||||||
"rarity": "B",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"12002": {
|
|
||||||
"id": 12002,
|
|
||||||
"name": "「月相」-晦",
|
|
||||||
"rarity": "B",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"12003": {
|
|
||||||
"id": 12003,
|
|
||||||
"name": "「月相」-朔",
|
|
||||||
"rarity": "B",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"12004": {
|
|
||||||
"id": 12004,
|
|
||||||
"name": "「残响」-Ⅰ型",
|
|
||||||
"rarity": "B",
|
|
||||||
"profession": 4
|
|
||||||
},
|
|
||||||
"12005": {
|
|
||||||
"id": 12005,
|
|
||||||
"name": "「残响」-Ⅱ型",
|
|
||||||
"rarity": "B",
|
|
||||||
"profession": 4
|
|
||||||
},
|
|
||||||
"12006": {
|
|
||||||
"id": 12006,
|
|
||||||
"name": "「残响」-Ⅲ型",
|
|
||||||
"rarity": "B",
|
|
||||||
"profession": 4
|
|
||||||
},
|
|
||||||
"12007": {
|
|
||||||
"id": 12007,
|
|
||||||
"name": "「湍流」-铳型",
|
|
||||||
"rarity": "B",
|
|
||||||
"profession": 2
|
|
||||||
},
|
|
||||||
"12008": {
|
|
||||||
"id": 12008,
|
|
||||||
"name": "「湍流」-矢型",
|
|
||||||
"rarity": "B",
|
|
||||||
"profession": 2
|
|
||||||
},
|
|
||||||
"12009": {
|
|
||||||
"id": 12009,
|
|
||||||
"name": "「湍流」-斧型",
|
|
||||||
"rarity": "B",
|
|
||||||
"profession": 2
|
|
||||||
},
|
|
||||||
"12010": {
|
|
||||||
"id": 12010,
|
|
||||||
"name": "「电磁暴」-壹式",
|
|
||||||
"rarity": "B",
|
|
||||||
"profession": 3
|
|
||||||
},
|
|
||||||
"12011": {
|
|
||||||
"id": 12011,
|
|
||||||
"name": "「电磁暴」-贰式",
|
|
||||||
"rarity": "B",
|
|
||||||
"profession": 3
|
|
||||||
},
|
|
||||||
"12012": {
|
|
||||||
"id": 12012,
|
|
||||||
"name": "「电磁暴」-叁式",
|
|
||||||
"rarity": "B",
|
|
||||||
"profession": 3
|
|
||||||
},
|
|
||||||
"12013": {
|
|
||||||
"id": 12013,
|
|
||||||
"name": "「恒等式」-本格",
|
|
||||||
"rarity": "B",
|
|
||||||
"profession": 5
|
|
||||||
},
|
|
||||||
"12014": {
|
|
||||||
"id": 12014,
|
|
||||||
"name": "「恒等式」-变格",
|
|
||||||
"rarity": "B",
|
|
||||||
"profession": 5
|
|
||||||
},
|
|
||||||
"13001": {
|
|
||||||
"id": 13001,
|
|
||||||
"name": "街头巨星",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"13002": {
|
|
||||||
"id": 13002,
|
|
||||||
"name": "时光切片",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 4
|
|
||||||
},
|
|
||||||
"13003": {
|
|
||||||
"id": 13003,
|
|
||||||
"name": "雨林饕客",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 3
|
|
||||||
},
|
|
||||||
"13004": {
|
|
||||||
"id": 13004,
|
|
||||||
"name": "星徽引擎",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"13005": {
|
|
||||||
"id": 13005,
|
|
||||||
"name": "人为刀俎",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 2
|
|
||||||
},
|
|
||||||
"13006": {
|
|
||||||
"id": 13006,
|
|
||||||
"name": "贵重骨核",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 2
|
|
||||||
},
|
|
||||||
"13007": {
|
|
||||||
"id": 13007,
|
|
||||||
"name": "正版变身器",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 5
|
|
||||||
},
|
|
||||||
"13008": {
|
|
||||||
"id": 13008,
|
|
||||||
"name": "双生泣星",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 3
|
|
||||||
},
|
|
||||||
"13009": {
|
|
||||||
"id": 13009,
|
|
||||||
"name": "触电唇彩",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 3
|
|
||||||
},
|
|
||||||
"13010": {
|
|
||||||
"id": 13010,
|
|
||||||
"name": "兔能环",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 5
|
|
||||||
},
|
|
||||||
"13011": {
|
|
||||||
"id": 13011,
|
|
||||||
"name": "春日融融",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 5
|
|
||||||
},
|
|
||||||
"13013": {
|
|
||||||
"id": 13013,
|
|
||||||
"name": "鎏金花信",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"13015": {
|
|
||||||
"id": 13015,
|
|
||||||
"name": "强音热望",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"13101": {
|
|
||||||
"id": 13101,
|
|
||||||
"name": "德玛拉电池Ⅱ型",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 2
|
|
||||||
},
|
|
||||||
"13103": {
|
|
||||||
"id": 13103,
|
|
||||||
"name": "聚宝箱",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 4
|
|
||||||
},
|
|
||||||
"13106": {
|
|
||||||
"id": 13106,
|
|
||||||
"name": "家政员",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"13108": {
|
|
||||||
"id": 13108,
|
|
||||||
"name": "仿制星徽引擎",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"13111": {
|
|
||||||
"id": 13111,
|
|
||||||
"name": "旋钻机-赤轴",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"13112": {
|
|
||||||
"id": 13112,
|
|
||||||
"name": "比格气缸",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 5
|
|
||||||
},
|
|
||||||
"13113": {
|
|
||||||
"id": 13113,
|
|
||||||
"name": "含羞恶面",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 4
|
|
||||||
},
|
|
||||||
"13115": {
|
|
||||||
"id": 13115,
|
|
||||||
"name": "好斗的阿炮",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 4
|
|
||||||
},
|
|
||||||
"13127": {
|
|
||||||
"id": 13127,
|
|
||||||
"name": "维序者-特化型",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 5
|
|
||||||
},
|
|
||||||
"13128": {
|
|
||||||
"id": 13128,
|
|
||||||
"name": "轰鸣座驾",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 3
|
|
||||||
},
|
|
||||||
"14001": {
|
|
||||||
"id": 14001,
|
|
||||||
"name": "加农转子",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"14002": {
|
|
||||||
"id": 14002,
|
|
||||||
"name": "逍遥游球",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 4
|
|
||||||
},
|
|
||||||
"14003": {
|
|
||||||
"id": 14003,
|
|
||||||
"name": "左轮转子",
|
|
||||||
"rarity": "A",
|
|
||||||
"profession": 2
|
|
||||||
},
|
|
||||||
"14102": {
|
|
||||||
"id": 14102,
|
|
||||||
"name": "钢铁肉垫",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"14104": {
|
|
||||||
"id": 14104,
|
|
||||||
"name": "硫磺石",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"14107": {
|
|
||||||
"id": 14107,
|
|
||||||
"name": "奔袭獠牙",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 5
|
|
||||||
},
|
|
||||||
"14109": {
|
|
||||||
"id": 14109,
|
|
||||||
"name": "霰落星殿",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 3
|
|
||||||
},
|
|
||||||
"14110": {
|
|
||||||
"id": 14110,
|
|
||||||
"name": "燃狱齿轮",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 2
|
|
||||||
},
|
|
||||||
"14114": {
|
|
||||||
"id": 14114,
|
|
||||||
"name": "拘缚者",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 2
|
|
||||||
},
|
|
||||||
"14116": {
|
|
||||||
"id": 14116,
|
|
||||||
"name": "焰心桂冠",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 2
|
|
||||||
},
|
|
||||||
"14117": {
|
|
||||||
"id": 14117,
|
|
||||||
"name": "灼心摇壶",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 3
|
|
||||||
},
|
|
||||||
"14118": {
|
|
||||||
"id": 14118,
|
|
||||||
"name": "嵌合编译器",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 3
|
|
||||||
},
|
|
||||||
"14119": {
|
|
||||||
"id": 14119,
|
|
||||||
"name": "深海访客",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"14120": {
|
|
||||||
"id": 14120,
|
|
||||||
"name": "残心青囊",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"14121": {
|
|
||||||
"id": 14121,
|
|
||||||
"name": "啜泣摇篮",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 4
|
|
||||||
},
|
|
||||||
"14122": {
|
|
||||||
"id": 14122,
|
|
||||||
"name": "时流贤者",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 3
|
|
||||||
},
|
|
||||||
"14124": {
|
|
||||||
"id": 14124,
|
|
||||||
"name": "防暴者Ⅵ型",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 1
|
|
||||||
},
|
|
||||||
"14125": {
|
|
||||||
"id": 14125,
|
|
||||||
"name": "玉壶青冰",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 2
|
|
||||||
},
|
|
||||||
"14126": {
|
|
||||||
"id": 14126,
|
|
||||||
"name": "淬锋钳刺",
|
|
||||||
"rarity": "S",
|
|
||||||
"profession": 3
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue