Merge branch 'PR-Branch' of https://github.com/libccy/noname into dev
This commit is contained in:
commit
ab83ac028a
|
@ -11,12 +11,12 @@ const cards = {
|
||||||
content() {
|
content() {
|
||||||
"step 0";
|
"step 0";
|
||||||
target.draw();
|
target.draw();
|
||||||
"step 1";
|
("step 1");
|
||||||
var hs = target.getCards("he");
|
var hs = target.getCards("he");
|
||||||
if (!hs.length) event.finish();
|
if (!hs.length) event.finish();
|
||||||
else if (hs.length == 1) event._result = { bool: true, cards: hs };
|
else if (hs.length == 1) event._result = { bool: true, cards: hs };
|
||||||
else target.chooseCard("he", true, "选择一张牌置入仁库");
|
else target.chooseCard("he", true, "选择一张牌置入仁库");
|
||||||
"step 2";
|
("step 2");
|
||||||
if (result.bool) {
|
if (result.bool) {
|
||||||
var card = result.cards[0];
|
var card = result.cards[0];
|
||||||
target.$throw(card, 1000);
|
target.$throw(card, 1000);
|
||||||
|
@ -33,8 +33,10 @@ const cards = {
|
||||||
var color = get.color(cards[0], false),
|
var color = get.color(cards[0], false),
|
||||||
type = get.type(cards[0], false);
|
type = get.type(cards[0], false);
|
||||||
for (var i = 1; i < cards.length; i++) {
|
for (var i = 1; i < cards.length; i++) {
|
||||||
if (color && get.color(cards[i], false) != color) color = false;
|
if (color && get.color(cards[i], false) != color)
|
||||||
if (type && get.type(cards[i], false) != type) type = false;
|
color = false;
|
||||||
|
if (type && get.type(cards[i], false) != type)
|
||||||
|
type = false;
|
||||||
if (!color && !type) return false;
|
if (!color && !type) return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -101,5 +103,5 @@ const cards = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
};
|
||||||
export default cards;
|
export default cards;
|
|
@ -1,86 +1,448 @@
|
||||||
const characters = {
|
const characters = {
|
||||||
sp_key_yuri: ["female", "qun", 4, ["mubing", "ziqu", "diaoling"], ["border:key"]],
|
sp_key_yuri: {
|
||||||
key_lucia: ["female", "key", "2/3", ["lucia_duqu", "lucia_zhenren"]],
|
sex: "female",
|
||||||
key_kyousuke: ["male", "key", 4, ["nk_shekong", "key_huanjie"]],
|
group: "qun",
|
||||||
key_yuri: ["female", "key", 3, ["yuri_xingdong", "key_huanjie", "yuri_wangxi"], ["zhu"]],
|
hp: 4,
|
||||||
key_haruko: ["female", "key", 4, ["haruko_haofang", "haruko_zhuishi"]],
|
skills: ["mubing", "ziqu", "diaoling"],
|
||||||
key_umi: ["female", "key", 3, ["umi_chaofan", "umi_lunhui", "umi_qihuan"]],
|
groupBorder: "key",
|
||||||
key_umi2: ["female", "key", 3, [], ["unseen"]],
|
},
|
||||||
key_rei: ["male", "key", 4, ["xiandeng", "shulv", "xisheng"]],
|
key_lucia: {
|
||||||
key_komari: ["female", "key", 3, ["komari_tiankou", "komari_xueshang"]],
|
sex: "female",
|
||||||
key_yukine: ["female", "key", 3, ["yukine_wenzhou"]],
|
group: "key",
|
||||||
key_yusa: ["female", "key", 3, ["yusa_yanyi", "yusa_misa", "dualside"], ["dualside:key_misa"]],
|
hp: 2,
|
||||||
key_misa: ["female", "key", 3, ["misa_yehuo", "misa_yusa", "dualside"], ["unseen"]],
|
maxHp: 3,
|
||||||
key_masato: ["male", "key", "4/8", ["masato_baoquan"]],
|
skills: ["lucia_duqu", "lucia_zhenren"],
|
||||||
key_iwasawa: ["female", "key", 3, ["iwasawa_yinhang", "iwasawa_mysong"]],
|
},
|
||||||
key_kengo: ["male", "key", 4, ["kengo_weishang", "kengo_guidui"]],
|
key_kyousuke: {
|
||||||
key_yoshino: ["male", "key", 4, ["yoshino_jueyi"]],
|
sex: "male",
|
||||||
key_yui: ["female", "key", 3, ["yui_jiang", "yui_lieyin", "yui_takaramono"]],
|
group: "key",
|
||||||
key_tsumugi: ["female", "key", 3, ["tsumugi_mugyu", "tsumugi_huilang"]],
|
hp: 4,
|
||||||
key_saya: ["female", "key", 3, ["saya_shouji", "saya_powei"]],
|
skills: ["nk_shekong", "key_huanjie"],
|
||||||
key_harukakanata: ["female", "key", 3, ["haruka_shuangche"]],
|
},
|
||||||
key_inari: ["female", "key", 2, ["inari_baiwei", "inari_huhun"]],
|
key_yuri: {
|
||||||
key_shiina: ["female", "key", 3, ["shiina_qingshen", "shiina_feiyan"]],
|
sex: "female",
|
||||||
key_sunohara: [
|
group: "key",
|
||||||
"double",
|
hp: 3,
|
||||||
"key",
|
skills: ["yuri_xingdong", "key_huanjie", "yuri_wangxi"],
|
||||||
"3/3/2",
|
isZhugong: true,
|
||||||
["sunohara_chengshuang", "sunohara_tiaoyin", "sunohara_jianren"],
|
},
|
||||||
|
key_haruko: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 4,
|
||||||
|
skills: ["haruko_haofang", "haruko_zhuishi"],
|
||||||
|
},
|
||||||
|
key_umi: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["umi_chaofan", "umi_lunhui", "umi_qihuan"],
|
||||||
|
},
|
||||||
|
key_umi2: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
isUnseen: true,
|
||||||
|
},
|
||||||
|
key_rei: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 4,
|
||||||
|
skills: ["xiandeng", "shulv", "xisheng"],
|
||||||
|
},
|
||||||
|
key_komari: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["komari_tiankou", "komari_xueshang"],
|
||||||
|
},
|
||||||
|
key_yukine: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["yukine_wenzhou"],
|
||||||
|
},
|
||||||
|
key_yusa: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["yusa_yanyi", "yusa_misa", "dualside"],
|
||||||
|
dualSideCharacter: "key_misa",
|
||||||
|
},
|
||||||
|
key_misa: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["misa_yehuo", "misa_yusa", "dualside"],
|
||||||
|
isUnseen: true,
|
||||||
|
},
|
||||||
|
key_masato: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 4,
|
||||||
|
maxHp: 8,
|
||||||
|
skills: ["masato_baoquan"],
|
||||||
|
},
|
||||||
|
key_iwasawa: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["iwasawa_yinhang", "iwasawa_mysong"],
|
||||||
|
},
|
||||||
|
key_kengo: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 4,
|
||||||
|
skills: ["kengo_weishang", "kengo_guidui"],
|
||||||
|
},
|
||||||
|
key_yoshino: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 4,
|
||||||
|
skills: ["yoshino_jueyi"],
|
||||||
|
},
|
||||||
|
key_yui: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["yui_jiang", "yui_lieyin", "yui_takaramono"],
|
||||||
|
},
|
||||||
|
key_tsumugi: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["tsumugi_mugyu", "tsumugi_huilang"],
|
||||||
|
},
|
||||||
|
key_saya: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["saya_shouji", "saya_powei"],
|
||||||
|
},
|
||||||
|
key_harukakanata: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["haruka_shuangche"],
|
||||||
|
},
|
||||||
|
key_inari: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 2,
|
||||||
|
skills: ["inari_baiwei", "inari_huhun"],
|
||||||
|
},
|
||||||
|
key_shiina: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["shiina_qingshen", "shiina_feiyan"],
|
||||||
|
},
|
||||||
|
key_sunohara: {
|
||||||
|
sex: "double",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
hujia: 2,
|
||||||
|
skills: [
|
||||||
|
"sunohara_chengshuang",
|
||||||
|
"sunohara_tiaoyin",
|
||||||
|
"sunohara_jianren",
|
||||||
],
|
],
|
||||||
key_rin: ["female", "key", 3, ["rin_baoqiu"]],
|
},
|
||||||
key_sasami: ["female", "key", 3, ["sasami_miaobian"]],
|
key_rin: {
|
||||||
key_akane: ["female", "key", 3, ["akane_jugu", "akane_quanqing", "akane_yifu"], ["zhu"]],
|
sex: "female",
|
||||||
key_doruji: ["female", "key", 16, ["doruji_feiqu"]],
|
group: "key",
|
||||||
key_yuiko: ["female", "key", 3, ["yuiko_fenglun", "yuiko_dilve"]],
|
hp: 3,
|
||||||
key_riki: ["double", "key", 3, ["riki_spwenji", "riki_nvzhuang", "riki_mengzhong"]],
|
skills: ["rin_baoqiu"],
|
||||||
key_hisako: ["female", "key", 3, ["hisako_yinbao", "hisako_zhuanyun"]],
|
},
|
||||||
key_hinata: ["male", "key", 4, ["hinata_qiulve", "hinata_ehou"]],
|
key_sasami: {
|
||||||
key_noda: ["male", "key", 4, ["noda_fengcheng", "noda_xunxin"]],
|
sex: "female",
|
||||||
key_tomoya: ["male", "key", 4, ["tomoya_shangxian", "tomoya_wangjin"]],
|
group: "key",
|
||||||
key_nagisa: ["female", "key", 3, ["nagisa_tiandu", "nagisa_fuxin"]],
|
hp: 3,
|
||||||
key_ayato: ["male", "key", 3, ["ayato_jianshen", "ayato_zonghuan"]],
|
skills: ["sasami_miaobian"],
|
||||||
key_ao: ["female", "key", 3, ["ao_xishi", "ao_kuihun", "ao_shixin"]],
|
},
|
||||||
key_yuzuru: ["male", "key", 5, ["yuzuru_wuxin", "yuzuru_deyi"]],
|
key_akane: {
|
||||||
sp_key_kanade: ["female", "key", 3, ["kanade_mapo", "kanade_benzhan"]],
|
sex: "female",
|
||||||
key_mio: ["female", "key", 3, ["mio_tuifu", "mio_tishen"]],
|
group: "key",
|
||||||
key_midori: ["female", "key", 3, ["midori_nonghuan", "midori_tishen"]],
|
hp: 3,
|
||||||
key_kyoko: ["female", "key", 3, ["kyoko_juwu", "kyoko_zhengyi"]],
|
skills: ["akane_jugu", "akane_quanqing", "akane_yifu"],
|
||||||
key_shizuru: ["female", "key", 3, ["shizuru_nianli", "shizuru_benzhan"]],
|
isZhugong: true,
|
||||||
key_shiorimiyuki: ["female", "key", 3, ["shiorimiyuki_banyin", "shiorimiyuki_tingxian"]],
|
},
|
||||||
key_miki: ["female", "key", 3, ["miki_shenqiang", "miki_huanmeng", "miki_zhiluo"]],
|
key_doruji: {
|
||||||
key_shiori: ["female", "key", "2/3", ["shiori_huijuan"]],
|
sex: "female",
|
||||||
key_kaori: ["female", "key", "3/4", ["kaori_siyuan"]],
|
group: "key",
|
||||||
key_akiko: ["female", "key", 3, ["akiko_dongcha"]],
|
hp: 16,
|
||||||
key_abyusa: ["female", "key", 3, ["abyusa_jueqing", "abyusa_dunying"]],
|
skills: ["doruji_feiqu"],
|
||||||
key_godan: ["male", "key", 6, ["godan_yuanyi", "godan_feiqu", "godan_xiaoyuan"]],
|
},
|
||||||
key_yuu: ["male", "key", 3, ["yuu_lveduo"]],
|
key_yuiko: {
|
||||||
key_ryoichi: ["male", "key", 4, ["ryoichi_baoyi", "ryoichi_tuipi"]],
|
sex: "female",
|
||||||
key_kotori: ["female", "key", 3, ["kotori_yumo", "kotori_huazhan"]],
|
group: "key",
|
||||||
key_jojiro: ["male", "key", 4, ["jojiro_shensu", "jojiro_shunying"]],
|
hp: 3,
|
||||||
key_shiroha: ["female", "key", 3, ["shiroha_yuzhao", "shiroha_guying", "shiroha_jiezhao"]],
|
skills: ["yuiko_fenglun", "yuiko_dilve"],
|
||||||
key_shizuku: ["female", "key", 3, ["shizuku_sizhi", "shizuku_biyi", "shizuku_sanhua"]],
|
},
|
||||||
key_hiroto: ["male", "key", 3, ["hiroto_huyu", "hiroto_tuolao"]],
|
key_riki: {
|
||||||
key_sakuya: ["male", "key", 3, ["youlong", "luanfeng", "sakuya_junbu"]],
|
sex: "double",
|
||||||
key_youta: ["male", "key", 4, []],
|
group: "key",
|
||||||
key_rumi: ["female", "key", "3/4", ["rumi_shuwu"]],
|
hp: 3,
|
||||||
key_chihaya: ["female", "key", 3, ["chihaya_liewu", "chihaya_youfeng"]],
|
skills: ["riki_spwenji", "riki_nvzhuang", "riki_mengzhong"],
|
||||||
key_yukito: ["male", "key", 4, ["yukito_kongwu", "yukito_yaxiang"]],
|
},
|
||||||
key_crow: ["male", "key", 4, [], ["unseen"]],
|
key_hisako: {
|
||||||
key_asara: ["female", "key", 3, ["asara_shelu", "asara_yingwei"]],
|
sex: "female",
|
||||||
key_kotomi: ["female", "key", 3, ["kotomi_qinji", "kotomi_chuanxiang"]],
|
group: "key",
|
||||||
key_mia: ["female", "key", 3, ["mia_shihui", "mia_qianmeng"]],
|
hp: 3,
|
||||||
key_kano: ["female", "key", 3, ["kano_liezhen", "kano_poyu"]],
|
skills: ["hisako_yinbao", "hisako_zhuanyun"],
|
||||||
db_key_liyingxia: [
|
},
|
||||||
"female",
|
key_hinata: {
|
||||||
"shu",
|
sex: "male",
|
||||||
3,
|
group: "key",
|
||||||
["liyingxia_sanli", "liyingxia_zhenjun", "liyingxia_wumai"],
|
hp: 4,
|
||||||
["doublegroup:shu:key"],
|
skills: ["hinata_qiulve", "hinata_ehou"],
|
||||||
],
|
},
|
||||||
key_erika: ["female", "key", "3/3/2", ["erika_shisong", "erika_yousheng"]],
|
key_noda: {
|
||||||
key_satomi: ["female", "key", 3, ["satomi_luodao", "satomi_daohai"]],
|
sex: "male",
|
||||||
key_iriya: ["female", "key", 3, ["iriya_yinji", "iriya_haozhi"]],
|
group: "key",
|
||||||
key_fuuko: ["female", "key", 3, ["fuuko_xingdiao", "fuuko_chuanyuan"]],
|
hp: 4,
|
||||||
|
skills: ["noda_fengcheng", "noda_xunxin"],
|
||||||
|
},
|
||||||
|
key_tomoya: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 4,
|
||||||
|
skills: ["tomoya_shangxian", "tomoya_wangjin"],
|
||||||
|
},
|
||||||
|
key_nagisa: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["nagisa_tiandu", "nagisa_fuxin"],
|
||||||
|
},
|
||||||
|
key_ayato: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["ayato_jianshen", "ayato_zonghuan"],
|
||||||
|
},
|
||||||
|
key_ao: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["ao_xishi", "ao_kuihun", "ao_shixin"],
|
||||||
|
},
|
||||||
|
key_yuzuru: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 5,
|
||||||
|
skills: ["yuzuru_wuxin", "yuzuru_deyi"],
|
||||||
|
},
|
||||||
|
sp_key_kanade: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["kanade_mapo", "kanade_benzhan"],
|
||||||
|
},
|
||||||
|
key_mio: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["mio_tuifu", "mio_tishen"],
|
||||||
|
},
|
||||||
|
key_midori: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["midori_nonghuan", "midori_tishen"],
|
||||||
|
},
|
||||||
|
key_kyoko: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["kyoko_juwu", "kyoko_zhengyi"],
|
||||||
|
},
|
||||||
|
key_shizuru: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["shizuru_nianli", "shizuru_benzhan"],
|
||||||
|
},
|
||||||
|
key_shiorimiyuki: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["shiorimiyuki_banyin", "shiorimiyuki_tingxian"],
|
||||||
|
},
|
||||||
|
key_miki: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["miki_shenqiang", "miki_huanmeng", "miki_zhiluo"],
|
||||||
|
},
|
||||||
|
key_shiori: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 2,
|
||||||
|
maxHp: 3,
|
||||||
|
skills: ["shiori_huijuan"],
|
||||||
|
},
|
||||||
|
key_kaori: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
maxHp: 4,
|
||||||
|
skills: ["kaori_siyuan"],
|
||||||
|
},
|
||||||
|
key_akiko: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["akiko_dongcha"],
|
||||||
|
},
|
||||||
|
key_abyusa: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["abyusa_jueqing", "abyusa_dunying"],
|
||||||
|
},
|
||||||
|
key_godan: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 6,
|
||||||
|
skills: ["godan_yuanyi", "godan_feiqu", "godan_xiaoyuan"],
|
||||||
|
},
|
||||||
|
key_yuu: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["yuu_lveduo"],
|
||||||
|
},
|
||||||
|
key_ryoichi: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 4,
|
||||||
|
skills: ["ryoichi_baoyi", "ryoichi_tuipi"],
|
||||||
|
},
|
||||||
|
key_kotori: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["kotori_yumo", "kotori_huazhan"],
|
||||||
|
},
|
||||||
|
key_jojiro: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 4,
|
||||||
|
skills: ["jojiro_shensu", "jojiro_shunying"],
|
||||||
|
},
|
||||||
|
key_shiroha: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["shiroha_yuzhao", "shiroha_guying", "shiroha_jiezhao"],
|
||||||
|
},
|
||||||
|
key_shizuku: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["shizuku_sizhi", "shizuku_biyi", "shizuku_sanhua"],
|
||||||
|
},
|
||||||
|
key_hiroto: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["hiroto_huyu", "hiroto_tuolao"],
|
||||||
|
},
|
||||||
|
key_sakuya: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["youlong", "luanfeng", "sakuya_junbu"],
|
||||||
|
},
|
||||||
|
key_youta: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 4,
|
||||||
|
skills: [],
|
||||||
|
},
|
||||||
|
key_rumi: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
maxHp: 4,
|
||||||
|
skills: ["rumi_shuwu"],
|
||||||
|
},
|
||||||
|
key_chihaya: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["chihaya_liewu", "chihaya_youfeng"],
|
||||||
|
},
|
||||||
|
key_yukito: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 4,
|
||||||
|
skills: ["yukito_kongwu", "yukito_yaxiang"],
|
||||||
|
},
|
||||||
|
key_crow: {
|
||||||
|
sex: "male",
|
||||||
|
group: "key",
|
||||||
|
hp: 4,
|
||||||
|
skills: [],
|
||||||
|
isUnseen: true,
|
||||||
|
},
|
||||||
|
key_asara: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["asara_shelu", "asara_yingwei"],
|
||||||
|
},
|
||||||
|
key_kotomi: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["kotomi_qinji", "kotomi_chuanxiang"],
|
||||||
|
},
|
||||||
|
key_mia: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["mia_shihui", "mia_qianmeng"],
|
||||||
|
},
|
||||||
|
key_kano: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["kano_liezhen", "kano_poyu"],
|
||||||
|
},
|
||||||
|
db_key_liyingxia: {
|
||||||
|
sex: "female",
|
||||||
|
group: "shu",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["liyingxia_sanli", "liyingxia_zhenjun", "liyingxia_wumai"],
|
||||||
|
doubleGroup: ["shu", "key"],
|
||||||
|
},
|
||||||
|
key_erika: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
hujia: 2,
|
||||||
|
skills: ["erika_shisong", "erika_yousheng"],
|
||||||
|
},
|
||||||
|
key_satomi: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["satomi_luodao", "satomi_daohai"],
|
||||||
|
},
|
||||||
|
key_iriya: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["iriya_yinji", "iriya_haozhi"],
|
||||||
|
},
|
||||||
|
key_fuuko: {
|
||||||
|
sex: "female",
|
||||||
|
group: "key",
|
||||||
|
hp: 3,
|
||||||
|
skills: ["fuuko_xingdiao", "fuuko_chuanyuan"],
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default characters;
|
export default characters;
|
|
@ -7,7 +7,7 @@ import translates from "./translate.js";
|
||||||
|
|
||||||
game.import("character", function () {
|
game.import("character", function () {
|
||||||
return {
|
return {
|
||||||
name: "key/index",
|
name: "key",
|
||||||
character: { ...characters },
|
character: { ...characters },
|
||||||
characterFilter: {
|
characterFilter: {
|
||||||
key_jojiro(mode) {
|
key_jojiro(mode) {
|
||||||
|
@ -18,7 +18,9 @@ game.import("character", function () {
|
||||||
mode == "identity" ||
|
mode == "identity" ||
|
||||||
mode == "doudizhu" ||
|
mode == "doudizhu" ||
|
||||||
mode == "single" ||
|
mode == "single" ||
|
||||||
(mode == "versus" && _status.mode != "standard" && _status.mode != "three")
|
(mode == "versus" &&
|
||||||
|
_status.mode != "standard" &&
|
||||||
|
_status.mode != "three")
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
key_tomoya(mode) {
|
key_tomoya(mode) {
|
||||||
|
|
|
@ -87,5 +87,5 @@ const pinyins = {
|
||||||
神山识: ["Kamiyama", "Shiki"],
|
神山识: ["Kamiyama", "Shiki"],
|
||||||
佐藤雏: ["Satou", "Hina"],
|
佐藤雏: ["Satou", "Hina"],
|
||||||
篝: ["Kagari"],
|
篝: ["Kagari"],
|
||||||
}
|
};
|
||||||
export default pinyins;
|
export default pinyins;
|
File diff suppressed because it is too large
Load Diff
|
@ -87,7 +87,8 @@ const translates = {
|
||||||
nk_shekong_info:
|
nk_shekong_info:
|
||||||
"出牌阶段限一次,你可以弃置任意张手牌并选择一名其他角色(不能超过该角色的牌数),然后令其选择一项:弃置一张牌并令你摸X张牌,或弃置X张牌并令你摸一张牌。然后,你将你与其弃置的且位于弃牌堆中的牌以任意顺序置于牌堆顶。",
|
"出牌阶段限一次,你可以弃置任意张手牌并选择一名其他角色(不能超过该角色的牌数),然后令其选择一项:弃置一张牌并令你摸X张牌,或弃置X张牌并令你摸一张牌。然后,你将你与其弃置的且位于弃牌堆中的牌以任意顺序置于牌堆顶。",
|
||||||
key_huanjie: "幻界",
|
key_huanjie: "幻界",
|
||||||
key_huanjie_info: "锁定技,当你进行判定或摸牌时,你改为从牌堆的另一端获取相应的牌。",
|
key_huanjie_info:
|
||||||
|
"锁定技,当你进行判定或摸牌时,你改为从牌堆的另一端获取相应的牌。",
|
||||||
yuri_xingdong: "行动",
|
yuri_xingdong: "行动",
|
||||||
yuri_xingdong_info:
|
yuri_xingdong_info:
|
||||||
"锁定技,出牌阶段开始时,你获得一张【杀】或普通锦囊牌。出牌阶段限一次,你可以将一张【杀】或普通锦囊牌交给一名其他角色,然后该角色选择一项:对除你以外的角色使用此牌并在此牌结算完成后和你各摸一张牌;或跳过下回合的判定阶段和摸牌阶段。",
|
"锁定技,出牌阶段开始时,你获得一张【杀】或普通锦囊牌。出牌阶段限一次,你可以将一张【杀】或普通锦囊牌交给一名其他角色,然后该角色选择一项:对除你以外的角色使用此牌并在此牌结算完成后和你各摸一张牌;或跳过下回合的判定阶段和摸牌阶段。",
|
||||||
|
@ -135,7 +136,8 @@ const translates = {
|
||||||
masato_baoquan_info:
|
masato_baoquan_info:
|
||||||
"锁定技,当你即将造成伤害时,你选择一项:1.令此伤害+2并减1点体力上限。2.防止此伤害。",
|
"锁定技,当你即将造成伤害时,你选择一项:1.令此伤害+2并减1点体力上限。2.防止此伤害。",
|
||||||
iwasawa_yinhang: "引吭",
|
iwasawa_yinhang: "引吭",
|
||||||
iwasawa_yinhang_info: "锁定技,当你的体力值变化1点时,你可以令至多两名角色摸一张牌。",
|
iwasawa_yinhang_info:
|
||||||
|
"锁定技,当你的体力值变化1点时,你可以令至多两名角色摸一张牌。",
|
||||||
iwasawa_mysong: "My Song",
|
iwasawa_mysong: "My Song",
|
||||||
iwasawa_mysong_info:
|
iwasawa_mysong_info:
|
||||||
"锁定技,当你即将进行濒死结算时,取消之。回合开始时,若你的体力值小于1,则你获得技能〖奋音〗直到回合结束。回合结束时,若你的体力值小于1,你死亡。",
|
"锁定技,当你即将进行濒死结算时,取消之。回合开始时,若你的体力值小于1,则你获得技能〖奋音〗直到回合结束。回合结束时,若你的体力值小于1,你死亡。",
|
||||||
|
@ -168,9 +170,11 @@ const translates = {
|
||||||
"觉醒技,准备阶段,若你满足以下条件中的至少两个:①体力值不大于1;②场上有已死亡的角色;③已因〖激昂〗累计获得过至少三张牌;则你获得技能〖引吭〗,将〖烈音〗描述中的「你选择」改为「你可选择」,然后加1点体力上限并回复1点体力。",
|
"觉醒技,准备阶段,若你满足以下条件中的至少两个:①体力值不大于1;②场上有已死亡的角色;③已因〖激昂〗累计获得过至少三张牌;则你获得技能〖引吭〗,将〖烈音〗描述中的「你选择」改为「你可选择」,然后加1点体力上限并回复1点体力。",
|
||||||
//ユイ/孙笨双将组合时,孙笨的〖激昂〗不计入〖珍宝〗的次数统计
|
//ユイ/孙笨双将组合时,孙笨的〖激昂〗不计入〖珍宝〗的次数统计
|
||||||
yui_yinhang: "引吭",
|
yui_yinhang: "引吭",
|
||||||
yui_yinhang_info: "锁定技,当你的体力值变化1点时,你可以令至多两名角色摸一张牌。",
|
yui_yinhang_info:
|
||||||
|
"锁定技,当你的体力值变化1点时,你可以令至多两名角色摸一张牌。",
|
||||||
tsumugi_mugyu: "姆啾",
|
tsumugi_mugyu: "姆啾",
|
||||||
tsumugi_mugyu_info: "当你成为牌的目标后,若你的手牌数小于体力上限,则你可以摸一张牌。",
|
tsumugi_mugyu_info:
|
||||||
|
"当你成为牌的目标后,若你的手牌数小于体力上限,则你可以摸一张牌。",
|
||||||
tsumugi_huilang: "回廊",
|
tsumugi_huilang: "回廊",
|
||||||
tsumugi_huilang2: "回廊",
|
tsumugi_huilang2: "回廊",
|
||||||
tsumugi_huilang_info:
|
tsumugi_huilang_info:
|
||||||
|
@ -193,7 +197,8 @@ const translates = {
|
||||||
//〖破围〗不会因为〖铁骑〗无效
|
//〖破围〗不会因为〖铁骑〗无效
|
||||||
inari_baiwei: "摆尾",
|
inari_baiwei: "摆尾",
|
||||||
inari_baiwei_draw: "摆尾",
|
inari_baiwei_draw: "摆尾",
|
||||||
inari_baiwei_info: "你可以将一张♦牌当做任意基本牌使用或打出。此牌结算完成后,你摸一张牌。",
|
inari_baiwei_info:
|
||||||
|
"你可以将一张♦牌当做任意基本牌使用或打出。此牌结算完成后,你摸一张牌。",
|
||||||
//你不能以此法使用【毒】
|
//你不能以此法使用【毒】
|
||||||
inari_baiwei_backup: "摆尾",
|
inari_baiwei_backup: "摆尾",
|
||||||
inari_baiwei_sha: "摆尾",
|
inari_baiwei_sha: "摆尾",
|
||||||
|
@ -210,7 +215,8 @@ const translates = {
|
||||||
//你不能对稻荷和多鲁基发动〖飞燕〗
|
//你不能对稻荷和多鲁基发动〖飞燕〗
|
||||||
sunohara_chengshuang: "成双",
|
sunohara_chengshuang: "成双",
|
||||||
sunohara_chengshuang_phase: "成双",
|
sunohara_chengshuang_phase: "成双",
|
||||||
sunohara_chengshuang_info: "锁定技,游戏开始时,你选择你的性别。回合开始时,你可以切换你的性别。",
|
sunohara_chengshuang_info:
|
||||||
|
"锁定技,游戏开始时,你选择你的性别。回合开始时,你可以切换你的性别。",
|
||||||
sunohara_tiaoyin: "挑引",
|
sunohara_tiaoyin: "挑引",
|
||||||
sunohara_tiaoyin_info:
|
sunohara_tiaoyin_info:
|
||||||
"出牌阶段限一次,你可以弃置任意张花色各不相同的手牌,然后获得等量角色区域内的各一张牌。若你以此法获得了异性角色区域内的牌,则你失去1点体力。",
|
"出牌阶段限一次,你可以弃置任意张花色各不相同的手牌,然后获得等量角色区域内的各一张牌。若你以此法获得了异性角色区域内的牌,则你失去1点体力。",
|
||||||
|
@ -233,7 +239,8 @@ const translates = {
|
||||||
sasami_baoqiu_info:
|
sasami_baoqiu_info:
|
||||||
"锁定技,你的攻击范围+2。当你使用【杀】指定目标后,你进行判定。若结果:为红色,此【杀】对其的伤害值基数+1;为黑色,其无法闪避此【杀】;为♠/♥,此【杀】不计入使用次数限制且你摸一张牌;为♦/♣,目标角色的所有非锁定技失效直到回合结束,且你弃置其一张牌。",
|
"锁定技,你的攻击范围+2。当你使用【杀】指定目标后,你进行判定。若结果:为红色,此【杀】对其的伤害值基数+1;为黑色,其无法闪避此【杀】;为♠/♥,此【杀】不计入使用次数限制且你摸一张牌;为♦/♣,目标角色的所有非锁定技失效直到回合结束,且你弃置其一张牌。",
|
||||||
akane_jugu: "巨贾",
|
akane_jugu: "巨贾",
|
||||||
akane_jugu_info: "锁定技,1.你的手牌上限+X。2.游戏开始时,你摸X张牌(X为你的体力上限)。",
|
akane_jugu_info:
|
||||||
|
"锁定技,1.你的手牌上限+X。2.游戏开始时,你摸X张牌(X为你的体力上限)。",
|
||||||
akane_quanqing: "权倾",
|
akane_quanqing: "权倾",
|
||||||
akane_quanqing_info:
|
akane_quanqing_info:
|
||||||
"出牌阶段,你可选择:1.弃置一张点数大于10的牌并对攻击范围内的一名其他角色造成1点伤害;2.弃置一张点数大于6的牌并弃置攻击范围内的一名其他角色区域内的一张牌。3.弃置一张牌并令攻击范围内的一名其他角色摸一张牌。",
|
"出牌阶段,你可选择:1.弃置一张点数大于10的牌并对攻击范围内的一名其他角色造成1点伤害;2.弃置一张点数大于6的牌并弃置攻击范围内的一名其他角色区域内的一张牌。3.弃置一张牌并令攻击范围内的一名其他角色摸一张牌。",
|
||||||
|
@ -242,12 +249,14 @@ const translates = {
|
||||||
akane_yifu_info:
|
akane_yifu_info:
|
||||||
"主公技,其他键势力角色的出牌阶段限一次,其可交给你一张手牌。然后你摸一张牌,并将一张手牌交给该角色。",
|
"主公技,其他键势力角色的出牌阶段限一次,其可交给你一张手牌。然后你摸一张牌,并将一张手牌交给该角色。",
|
||||||
doruji_feiqu: "肥躯",
|
doruji_feiqu: "肥躯",
|
||||||
doruji_feiqu_info: "锁定技,当你使用【杀】时,或你成为【杀】的目标后,你令此【杀】不可被响应。",
|
doruji_feiqu_info:
|
||||||
|
"锁定技,当你使用【杀】时,或你成为【杀】的目标后,你令此【杀】不可被响应。",
|
||||||
yuiko_fenglun: "锋论",
|
yuiko_fenglun: "锋论",
|
||||||
yuiko_fenglun_info:
|
yuiko_fenglun_info:
|
||||||
"出牌阶段限一次,你可以和一名其他角色拼点。若你赢,你本阶段内使用牌没有次数和距离限制。",
|
"出牌阶段限一次,你可以和一名其他角色拼点。若你赢,你本阶段内使用牌没有次数和距离限制。",
|
||||||
yuiko_dilve: "底略",
|
yuiko_dilve: "底略",
|
||||||
yuiko_dilve_info: "你可以使用牌堆底的一张牌进行拼点。当你拼点后,你可以获得两张拼点牌。",
|
yuiko_dilve_info:
|
||||||
|
"你可以使用牌堆底的一张牌进行拼点。当你拼点后,你可以获得两张拼点牌。",
|
||||||
riki_spwenji: "问计",
|
riki_spwenji: "问计",
|
||||||
riki_spwenji_info:
|
riki_spwenji_info:
|
||||||
"出牌阶段开始时,你可以令一名其他角色交给你一张牌。你于本回合内使用与该牌名称相同的牌时不能被其他角色响应。",
|
"出牌阶段开始时,你可以令一名其他角色交给你一张牌。你于本回合内使用与该牌名称相同的牌时不能被其他角色响应。",
|
||||||
|
@ -294,7 +303,8 @@ const translates = {
|
||||||
ayato_zonghuan_info:
|
ayato_zonghuan_info:
|
||||||
"出牌阶段限一次,你可以观看一名其他角色的手牌,然后选择一项:将其中的一张牌置入弃牌堆,或以该角色的视角使用其中的一张,然后摸一张牌。",
|
"出牌阶段限一次,你可以观看一名其他角色的手牌,然后选择一项:将其中的一张牌置入弃牌堆,或以该角色的视角使用其中的一张,然后摸一张牌。",
|
||||||
ao_xishi: "习事",
|
ao_xishi: "习事",
|
||||||
ao_xishi_info: "锁定技,当你使用或打出♦牌时,或其他角色使用♦牌指定你为目标后,你摸一张牌。",
|
ao_xishi_info:
|
||||||
|
"锁定技,当你使用或打出♦牌时,或其他角色使用♦牌指定你为目标后,你摸一张牌。",
|
||||||
ao_kuihun: "窥魂",
|
ao_kuihun: "窥魂",
|
||||||
ao_kuihun_info:
|
ao_kuihun_info:
|
||||||
"其他角色进入濒死状态时,你可以摸一张牌,然后观看其手牌并将其中一张牌置于你的武将牌上,称为「蝶」。你使用与一张「蝶」花色相同的牌时无距离和次数限制。你的手牌上限+X(X为蝶数)。",
|
"其他角色进入濒死状态时,你可以摸一张牌,然后观看其手牌并将其中一张牌置于你的武将牌上,称为「蝶」。你使用与一张「蝶」花色相同的牌时无距离和次数限制。你的手牌上限+X(X为蝶数)。",
|
||||||
|
@ -303,7 +313,8 @@ const translates = {
|
||||||
"觉醒技,准备阶段,若你的「蝶」中包含至少三种花色,则你加1点体力上限并回复1点体力,失去〖窥魂〗并获得〖蝶归〗。",
|
"觉醒技,准备阶段,若你的「蝶」中包含至少三种花色,则你加1点体力上限并回复1点体力,失去〖窥魂〗并获得〖蝶归〗。",
|
||||||
ao_diegui: "蝶归",
|
ao_diegui: "蝶归",
|
||||||
ao_diegui_backup: "蝶归",
|
ao_diegui_backup: "蝶归",
|
||||||
ao_diegui_info: "出牌阶段限一次,你可以将一张「蝶」交给一名角色,该角色摸两张牌并复原武将牌。",
|
ao_diegui_info:
|
||||||
|
"出牌阶段限一次,你可以将一张「蝶」交给一名角色,该角色摸两张牌并复原武将牌。",
|
||||||
yuzuru_wuxin: "无心",
|
yuzuru_wuxin: "无心",
|
||||||
yuzuru_wuxin_info:
|
yuzuru_wuxin_info:
|
||||||
"结束阶段,你可以选择一项:失去1点体力并令一名角色摸两张牌,或弃置两张牌并回复1点体力。",
|
"结束阶段,你可以选择一项:失去1点体力并令一名角色摸两张牌,或弃置两张牌并回复1点体力。",
|
||||||
|
@ -320,14 +331,17 @@ const translates = {
|
||||||
yuzuru_quji_info:
|
yuzuru_quji_info:
|
||||||
"出牌阶段限一次,你可以弃置X张牌并选择至多等量已受伤的其他角色,这些角色各回复1点体力。若你以此法弃置了黑色牌,则你失去1点体力。(X为你已损失的体力值)",
|
"出牌阶段限一次,你可以弃置X张牌并选择至多等量已受伤的其他角色,这些角色各回复1点体力。若你以此法弃置了黑色牌,则你失去1点体力。(X为你已损失的体力值)",
|
||||||
yuzuru_kunfen_rewrite: "困奋·改",
|
yuzuru_kunfen_rewrite: "困奋·改",
|
||||||
yuzuru_kunfen_rewrite_info: "锁定技,结束阶段,你摸两张牌。然后你可以将两张牌交给一名其他角色。",
|
yuzuru_kunfen_rewrite_info:
|
||||||
|
"锁定技,结束阶段,你摸两张牌。然后你可以将两张牌交给一名其他角色。",
|
||||||
yuzuru_quji_rewrite: "去疾·改",
|
yuzuru_quji_rewrite: "去疾·改",
|
||||||
yuzuru_quji_rewrite_info:
|
yuzuru_quji_rewrite_info:
|
||||||
"出牌阶段限一次,你可以弃置X张牌并选择至多等量已受伤的其他角色,这些角色各回复1点体力。(X为你已损失的体力值)",
|
"出牌阶段限一次,你可以弃置X张牌并选择至多等量已受伤的其他角色,这些角色各回复1点体力。(X为你已损失的体力值)",
|
||||||
yuzuru_bujin: "步进",
|
yuzuru_bujin: "步进",
|
||||||
yuzuru_bujin_info: "锁定技,己方其他角色计算与其他角色的距离-1且摸牌阶段的额定摸牌数+1。",
|
yuzuru_bujin_info:
|
||||||
|
"锁定技,己方其他角色计算与其他角色的距离-1且摸牌阶段的额定摸牌数+1。",
|
||||||
kanade_mapo: "麻婆",
|
kanade_mapo: "麻婆",
|
||||||
kanade_mapo_info: "你可以将一张♥牌当做【麻婆豆腐】使用。你使用的【麻婆豆腐】可以多指定一个目标。",
|
kanade_mapo_info:
|
||||||
|
"你可以将一张♥牌当做【麻婆豆腐】使用。你使用的【麻婆豆腐】可以多指定一个目标。",
|
||||||
kanade_benzhan: "奔战",
|
kanade_benzhan: "奔战",
|
||||||
kanade_benzhan_info:
|
kanade_benzhan_info:
|
||||||
"每回合限一次。当你使用或打出牌响应其他角色,或其他角色使用或打出牌响应你后,若此牌为:基本牌,你可令一名角色弃置两张牌或令一名角色摸两张牌;非基本牌,你可对一名角色造成1点伤害或令一名其他角色回复1点体力。",
|
"每回合限一次。当你使用或打出牌响应其他角色,或其他角色使用或打出牌响应你后,若此牌为:基本牌,你可令一名角色弃置两张牌或令一名角色摸两张牌;非基本牌,你可对一名角色造成1点伤害或令一名其他角色回复1点体力。",
|
||||||
|
@ -359,7 +373,8 @@ const translates = {
|
||||||
shizuru_benzhan_info:
|
shizuru_benzhan_info:
|
||||||
"每回合限一次。当你使用或打出牌响应其他角色,或其他角色使用或打出牌响应你后,若此牌为:基本牌,你可令一名角色弃置两张牌或令一名角色摸两张牌;非基本牌,你可对一名角色造成1点伤害或令一名其他角色回复1点体力。",
|
"每回合限一次。当你使用或打出牌响应其他角色,或其他角色使用或打出牌响应你后,若此牌为:基本牌,你可令一名角色弃置两张牌或令一名角色摸两张牌;非基本牌,你可对一名角色造成1点伤害或令一名其他角色回复1点体力。",
|
||||||
shiorimiyuki_banyin: "伴音",
|
shiorimiyuki_banyin: "伴音",
|
||||||
shiorimiyuki_banyin_info: "当你受到伤害或回复体力后,你可令一名其他角色回复1点体力。",
|
shiorimiyuki_banyin_info:
|
||||||
|
"当你受到伤害或回复体力后,你可令一名其他角色回复1点体力。",
|
||||||
shiorimiyuki_tingxian: "铤险",
|
shiorimiyuki_tingxian: "铤险",
|
||||||
shiorimiyuki_tingxian_info:
|
shiorimiyuki_tingxian_info:
|
||||||
"出牌阶段开始时,你可以摸至多三张牌。若如此做,你回复1点体力,且此阶段结束时你失去X点体力。(X为你得到的牌中仍在手牌区的牌的数量)",
|
"出牌阶段开始时,你可以摸至多三张牌。若如此做,你回复1点体力,且此阶段结束时你失去X点体力。(X为你得到的牌中仍在手牌区的牌的数量)",
|
||||||
|
@ -403,7 +418,8 @@ const translates = {
|
||||||
godan_yuanyi_info:
|
godan_yuanyi_info:
|
||||||
"锁定技,回合开始时,你摸X张牌并进行一个额外的出牌阶段。(X为游戏轮数且至多为3)",
|
"锁定技,回合开始时,你摸X张牌并进行一个额外的出牌阶段。(X为游戏轮数且至多为3)",
|
||||||
godan_feiqu: "肥躯",
|
godan_feiqu: "肥躯",
|
||||||
godan_feiqu_info: "锁定技,当你使用【杀】时,或你成为【杀】的目标后,你令此【杀】不可被响应。",
|
godan_feiqu_info:
|
||||||
|
"锁定技,当你使用【杀】时,或你成为【杀】的目标后,你令此【杀】不可被响应。",
|
||||||
godan_xiaoyuan: "消元",
|
godan_xiaoyuan: "消元",
|
||||||
godan_xiaoyuan_info:
|
godan_xiaoyuan_info:
|
||||||
"觉醒技,当你扣减体力时,若你的体力值小于4,则你减3点体力上限并摸三张牌,失去【肥躯】。",
|
"觉醒技,当你扣减体力时,若你的体力值小于4,则你减3点体力上限并摸三张牌,失去【肥躯】。",
|
||||||
|
@ -430,7 +446,8 @@ const translates = {
|
||||||
kotori_skill_shu_info:
|
kotori_skill_shu_info:
|
||||||
"你使用【杀】上限+1;出牌阶段结束时,若你于此阶段使用【杀】次数不少于2,摸一张牌。",
|
"你使用【杀】上限+1;出牌阶段结束时,若你于此阶段使用【杀】次数不少于2,摸一张牌。",
|
||||||
kotori_skill_wu: "吴耀",
|
kotori_skill_wu: "吴耀",
|
||||||
kotori_skill_wu_info: "回合结束时,若你的手牌数不等于你的体力值,则你摸一张牌。",
|
kotori_skill_wu_info:
|
||||||
|
"回合结束时,若你的手牌数不等于你的体力值,则你摸一张牌。",
|
||||||
kotori_skill_qun: "群心",
|
kotori_skill_qun: "群心",
|
||||||
kotori_skill_qun_info:
|
kotori_skill_qun_info:
|
||||||
"锁定技,弃牌阶段开始时,若你的手牌数比体力值多2或更多,你本回合手牌上限+1;若你已损失体力值大于1,你手牌上限+1。",
|
"锁定技,弃牌阶段开始时,若你的手牌数比体力值多2或更多,你本回合手牌上限+1;若你已损失体力值大于1,你手牌上限+1。",
|
||||||
|
@ -480,7 +497,8 @@ const translates = {
|
||||||
shizuku_biyi_info:
|
shizuku_biyi_info:
|
||||||
"当你受到伤害后,你可以进行一次判定,然后若你弃置任意张点数之和与判定结果点数相同的牌,你回复1点体力。",
|
"当你受到伤害后,你可以进行一次判定,然后若你弃置任意张点数之和与判定结果点数相同的牌,你回复1点体力。",
|
||||||
shizuku_sanhua: "散花",
|
shizuku_sanhua: "散花",
|
||||||
shizuku_sanhua_info: "当你死亡时,你可令一名其他角色从牌堆中获得四张名称各不相同的基本牌。",
|
shizuku_sanhua_info:
|
||||||
|
"当你死亡时,你可令一名其他角色从牌堆中获得四张名称各不相同的基本牌。",
|
||||||
hiroto_huyu: "虎驭",
|
hiroto_huyu: "虎驭",
|
||||||
hiroto_huyu2: "虎驭",
|
hiroto_huyu2: "虎驭",
|
||||||
hiroto_huyu_info:
|
hiroto_huyu_info:
|
||||||
|
@ -536,7 +554,8 @@ const translates = {
|
||||||
mia_qianmeng_info:
|
mia_qianmeng_info:
|
||||||
"使命技。①游戏开始时,你摸一张牌,然后将一张牌置于牌堆的正中央。②使命:当有角色获得“潜梦”牌时,其将此牌交给你。你将体力值回复至上限,失去〖时迴〗并获得〖风发〗。③失败:当你死亡时,你可令一名角色获得牌堆中所有与“潜梦”牌花色点数相同的牌。",
|
"使命技。①游戏开始时,你摸一张牌,然后将一张牌置于牌堆的正中央。②使命:当有角色获得“潜梦”牌时,其将此牌交给你。你将体力值回复至上限,失去〖时迴〗并获得〖风发〗。③失败:当你死亡时,你可令一名角色获得牌堆中所有与“潜梦”牌花色点数相同的牌。",
|
||||||
mia_fengfa: "风发",
|
mia_fengfa: "风发",
|
||||||
mia_fengfa_info: "锁定技。摸牌阶段,你多摸X张牌(X为你上回合使用过的牌数)。",
|
mia_fengfa_info:
|
||||||
|
"锁定技。摸牌阶段,你多摸X张牌(X为你上回合使用过的牌数)。",
|
||||||
kano_liezhen: "列阵",
|
kano_liezhen: "列阵",
|
||||||
kano_liezhen_info:
|
kano_liezhen_info:
|
||||||
"结束阶段,若你本回合内使用过牌且这些牌的类型:不均相同,你可视为使用【排兵布阵】或智囊;均相同,你获得仁库中的所有牌(没有则改为摸两张牌)。",
|
"结束阶段,若你本回合内使用过牌且这些牌的类型:不均相同,你可视为使用【排兵布阵】或智囊;均相同,你获得仁库中的所有牌(没有则改为摸两张牌)。",
|
||||||
|
@ -569,7 +588,8 @@ const translates = {
|
||||||
satomi_daohai: "稻海",
|
satomi_daohai: "稻海",
|
||||||
satomi_daohai_info:
|
satomi_daohai_info:
|
||||||
"结束阶段,若你本回合内弃置过牌,则你可以视为使用一张【五谷丰登】。然后你可以将你于此【五谷丰登】中得到的牌当做【乐不思蜀】使用。",
|
"结束阶段,若你本回合内弃置过牌,则你可以视为使用一张【五谷丰登】。然后你可以将你于此【五谷丰登】中得到的牌当做【乐不思蜀】使用。",
|
||||||
satomi_daohai_append: '<span style="font-family: yuanli">五穀豊穣、刈り入れ時だね!</span>',
|
satomi_daohai_append:
|
||||||
|
'<span style="font-family: yuanli">五穀豊穣、刈り入れ時だね!</span>',
|
||||||
tenzen_fenghuan: "封还",
|
tenzen_fenghuan: "封还",
|
||||||
tenzen_fenghuan_info:
|
tenzen_fenghuan_info:
|
||||||
"其他角色使用的【杀】或伤害性锦囊牌结算结束后,若你是此牌的唯一目标,则你可以弃置任意张点数之和大于等于此牌点数两倍的牌,然后视为对其使用一张名称相同的牌。",
|
"其他角色使用的【杀】或伤害性锦囊牌结算结束后,若你是此牌的唯一目标,则你可以弃置任意张点数之和大于等于此牌点数两倍的牌,然后视为对其使用一张名称相同的牌。",
|
||||||
|
@ -577,7 +597,8 @@ const translates = {
|
||||||
tenzen_retianquan_info:
|
tenzen_retianquan_info:
|
||||||
"每回合限一次。当你使用【杀】指定目标后,你可失去1点体力或弃置一张牌,然后亮出牌堆顶的三张牌(若你的体力值小于体力上限的50%,则改为展示五张牌)。这些牌中每有一张基本牌,响应此牌所需的【闪】的数量便+1。此牌结算结束后,若此牌造成过伤害,则你获得展示牌中的所有非基本牌。",
|
"每回合限一次。当你使用【杀】指定目标后,你可失去1点体力或弃置一张牌,然后亮出牌堆顶的三张牌(若你的体力值小于体力上限的50%,则改为展示五张牌)。这些牌中每有一张基本牌,响应此牌所需的【闪】的数量便+1。此牌结算结束后,若此牌造成过伤害,则你获得展示牌中的所有非基本牌。",
|
||||||
iriya_yinji: "殷极",
|
iriya_yinji: "殷极",
|
||||||
iriya_yinji_info: "锁定技。出牌阶段开始时,你将手牌摸至17张。你不能直接使用以此法得到的牌。",
|
iriya_yinji_info:
|
||||||
|
"锁定技。出牌阶段开始时,你将手牌摸至17张。你不能直接使用以此法得到的牌。",
|
||||||
iriya_haozhi: "豪掷",
|
iriya_haozhi: "豪掷",
|
||||||
iriya_haozhi_info:
|
iriya_haozhi_info:
|
||||||
"出牌阶段,你可以按照斗地主牌型弃置至少两张牌,且其他角色可以依次对其进行一轮响应。最后一名进行响应的角色可以根据对应牌型执行对应效果。" +
|
"出牌阶段,你可以按照斗地主牌型弃置至少两张牌,且其他角色可以依次对其进行一轮响应。最后一名进行响应的角色可以根据对应牌型执行对应效果。" +
|
||||||
|
@ -594,6 +615,6 @@ const translates = {
|
||||||
fuuko_chuanyuan: "传愿",
|
fuuko_chuanyuan: "传愿",
|
||||||
fuuko_chuanyuan_info:
|
fuuko_chuanyuan_info:
|
||||||
"锁定技。当你失去一张“星”后,你回复1点体力,然后从牌堆中获得一张和“星”花色点数相同的牌(没有则改为摸一张牌,且使用此牌无距离和次数限制)。",
|
"锁定技。当你失去一张“星”后,你回复1点体力,然后从牌堆中获得一张和“星”花色点数相同的牌(没有则改为摸一张牌,且使用此牌无距离和次数限制)。",
|
||||||
}
|
};
|
||||||
|
|
||||||
export default translates;
|
export default translates;
|
|
@ -22,6 +22,23 @@ if (core === "chrome" && !isNaN(version) && version < 77) {
|
||||||
boot().then(() => {
|
boot().then(() => {
|
||||||
// 判断是否从file协议切换到http/s协议
|
// 判断是否从file协议切换到http/s协议
|
||||||
if (canUseHttpProtocol()) {
|
if (canUseHttpProtocol()) {
|
||||||
|
// 保存协议的切换状态
|
||||||
|
const saveProtocol = () => {
|
||||||
|
const url = sendUpdate();
|
||||||
|
if (typeof url == "string") {
|
||||||
|
if (
|
||||||
|
typeof window.require == "function" &&
|
||||||
|
typeof window.process == "object"
|
||||||
|
) {
|
||||||
|
// @ts-ignore
|
||||||
|
const remote = require("@electron/remote");
|
||||||
|
const thisWindow = remote.getCurrentWindow();
|
||||||
|
thisWindow.loadURL(url);
|
||||||
|
} else {
|
||||||
|
location.href = url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
/*
|
/*
|
||||||
升级方法:
|
升级方法:
|
||||||
1. 游戏启动后导出数据,然后以http/s协议重启
|
1. 游戏启动后导出数据,然后以http/s协议重启
|
||||||
|
@ -61,23 +78,6 @@ boot().then(() => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// 保存协议的切换状态
|
|
||||||
function saveProtocol() {
|
|
||||||
const url = sendUpdate();
|
|
||||||
if (typeof url == "string") {
|
|
||||||
if (
|
|
||||||
typeof window.require == "function" &&
|
|
||||||
typeof window.process == "object"
|
|
||||||
) {
|
|
||||||
// @ts-ignore
|
|
||||||
const remote = require("@electron/remote");
|
|
||||||
const thisWindow = remote.getCurrentWindow();
|
|
||||||
thisWindow.loadURL(url);
|
|
||||||
} else {
|
|
||||||
location.href = url;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
// 成功导入后删除noname.config.txt
|
// 成功导入后删除noname.config.txt
|
||||||
let searchParams = new URLSearchParams(location.search);
|
let searchParams = new URLSearchParams(location.search);
|
||||||
|
|
22
mode/boss.js
22
mode/boss.js
|
@ -25,13 +25,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
}
|
}
|
||||||
for (var i in lib.characterPack.mode_boss) {
|
for (var i in lib.characterPack.mode_boss) {
|
||||||
lib.character[i] = lib.characterPack.mode_boss[i];
|
lib.character[i] = lib.characterPack.mode_boss[i];
|
||||||
if (!lib.character[i][4]) {
|
|
||||||
lib.character[i][4] = [];
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// for(var i in lib.cardPack.mode_boss){
|
|
||||||
// lib.card[i]=lib.cardPack.mode_boss[i];
|
|
||||||
// }
|
|
||||||
for (var i in lib.skill) {
|
for (var i in lib.skill) {
|
||||||
if (lib.skill[i].changeSeat) {
|
if (lib.skill[i].changeSeat) {
|
||||||
lib.skill[i] = {};
|
lib.skill[i] = {};
|
||||||
|
@ -82,7 +76,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
if (lib.storage.current == undefined) lib.storage.current = "boss_hundun";
|
if (lib.storage.current == undefined) lib.storage.current = "boss_hundun";
|
||||||
for (var i in lib.character) {
|
for (var i in lib.character) {
|
||||||
var info = lib.character[i];
|
var info = lib.character[i];
|
||||||
if (info[4].includes("boss")) {
|
if (info.isBoss) {
|
||||||
// var cfg=i+'_bossconfig';
|
// var cfg=i+'_bossconfig';
|
||||||
// if(get.config(cfg)==undefined){
|
// if(get.config(cfg)==undefined){
|
||||||
// game.saveConfig(cfg,true,true);
|
// game.saveConfig(cfg,true,true);
|
||||||
|
@ -1443,7 +1437,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
},
|
},
|
||||||
init: function () {
|
init: function () {
|
||||||
for (var i in lib.characterPack.mode_boss) {
|
for (var i in lib.characterPack.mode_boss) {
|
||||||
if (lib.characterPack.mode_boss[i][4].includes("hiddenboss")) continue;
|
if (get.convertedCharacter(lib.characterPack.mode_boss[i]).isHiddenBoss) continue;
|
||||||
lib.mode.boss.config[i + "_boss_config"] = {
|
lib.mode.boss.config[i + "_boss_config"] = {
|
||||||
name: get.translation(i),
|
name: get.translation(i),
|
||||||
init: true,
|
init: true,
|
||||||
|
@ -1643,10 +1637,10 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
var list = [];
|
var list = [];
|
||||||
event.list = list;
|
event.list = list;
|
||||||
for (i in lib.character) {
|
for (i in lib.character) {
|
||||||
if (lib.character[i][4].includes("minskin")) continue;
|
if (lib.character[i].isMinskin) continue;
|
||||||
if (lib.character[i][4].includes("boss")) continue;
|
if (lib.character[i].isBoss) continue;
|
||||||
if (lib.character[i][4].includes("hiddenboss")) continue;
|
if (lib.character[i].isHiddenBoss) continue;
|
||||||
if (lib.character[i][4] && lib.character[i][4].includes("forbidai")) continue;
|
if (lib.character[i].isAiForbidden) continue;
|
||||||
if (lib.config.forbidboss.includes(i)) continue;
|
if (lib.config.forbidboss.includes(i)) continue;
|
||||||
if (lib.filter.characterDisabled(i)) continue;
|
if (lib.filter.characterDisabled(i)) continue;
|
||||||
list.push(i);
|
list.push(i);
|
||||||
|
@ -7027,8 +7021,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
}
|
}
|
||||||
for (var i in lib.character) {
|
for (var i in lib.character) {
|
||||||
if (lib.character[i][1] != "wei") continue;
|
if (lib.character[i][1] != "wei") continue;
|
||||||
if (lib.character[i][4].includes("boss")) continue;
|
if (lib.character[i].isBoss) continue;
|
||||||
if (lib.character[i][4].includes("minskin")) continue;
|
if (lib.character[i].isMinskin) continue;
|
||||||
if (player.storage.xiongcai.includes(i)) continue;
|
if (player.storage.xiongcai.includes(i)) continue;
|
||||||
if (list2.includes(i)) continue;
|
if (list2.includes(i)) continue;
|
||||||
list.push(i);
|
list.push(i);
|
||||||
|
|
|
@ -533,9 +533,11 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
if (lib.filter.characterDisabled(name)) continue;
|
if (lib.filter.characterDisabled(name)) continue;
|
||||||
if (name.indexOf("old_") == 0) continue;
|
if (name.indexOf("old_") == 0) continue;
|
||||||
var skillsx = lib.character[name][3].slice(0);
|
var skillsx = lib.character[name][3].slice(0);
|
||||||
lib.character[name][2] = 4;
|
lib.character[name].hp = 4;
|
||||||
lib.character[name][3] = [];
|
lib.character[name].maxHp = 4;
|
||||||
if (lib.character[name][4]) lib.character[name][4].remove("hiddenSkill");
|
lib.character[name].hujia = 0;
|
||||||
|
lib.character[name].skills = [];
|
||||||
|
lib.character[name].hasHiddenSkill = false;
|
||||||
characters.push(name);
|
characters.push(name);
|
||||||
var list = skillsx.slice(0);
|
var list = skillsx.slice(0);
|
||||||
for (var j = 0; j < skillsx.length; j++) {
|
for (var j = 0; j < skillsx.length; j++) {
|
||||||
|
|
|
@ -45,9 +45,6 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
}
|
}
|
||||||
if (!playback && i.indexOf("leader_") == 0 && _status.mode != "leader") continue;
|
if (!playback && i.indexOf("leader_") == 0 && _status.mode != "leader") continue;
|
||||||
lib.character[i] = lib.characterPack.mode_chess[i];
|
lib.character[i] = lib.characterPack.mode_chess[i];
|
||||||
if (!lib.character[i][4]) {
|
|
||||||
lib.character[i][4] = [];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (get.config("chess_card")) {
|
if (get.config("chess_card")) {
|
||||||
|
@ -106,7 +103,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
} else {
|
} else {
|
||||||
game.chooseCharacterDouble(
|
game.chooseCharacterDouble(
|
||||||
function (i) {
|
function (i) {
|
||||||
if (lib.character[i][4].includes("chessboss")) {
|
if (lib.character[i].isChessBoss) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return !lib.filter.characterDisabled(i);
|
return !lib.filter.characterDisabled(i);
|
||||||
|
@ -3957,15 +3954,15 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
var jiangelist = [];
|
var jiangelist = [];
|
||||||
event.list = list;
|
event.list = list;
|
||||||
for (i in lib.character) {
|
for (i in lib.character) {
|
||||||
if (lib.character[i][4].includes("chessboss")) {
|
if (lib.character[i].isChessBoss) {
|
||||||
bosslist.push(i);
|
bosslist.push(i);
|
||||||
continue;
|
continue;
|
||||||
} else if (lib.character[i][4].includes("jiangeboss")) {
|
} else if (lib.character[i].isJiangeBoss) {
|
||||||
// if(get.config('chess_jiange')) jiangelist.push(i);
|
// if(get.config('chess_jiange')) jiangelist.push(i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (i.indexOf("treasure_") == 0) continue;
|
if (i.indexOf("treasure_") == 0) continue;
|
||||||
if (lib.character[i][4].includes("minskin")) continue;
|
if (lib.character[i].isMinskin) continue;
|
||||||
if (lib.config.forbidchess.includes(i)) continue;
|
if (lib.config.forbidchess.includes(i)) continue;
|
||||||
if (lib.filter.characterDisabled(i)) continue;
|
if (lib.filter.characterDisabled(i)) continue;
|
||||||
list.push(i);
|
list.push(i);
|
||||||
|
|
|
@ -9,25 +9,13 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
if (lib.character[i.slice(3)]) continue;
|
if (lib.character[i.slice(3)]) continue;
|
||||||
}
|
}
|
||||||
lib.character[i] = lib.characterPack.mode_guozhan[i];
|
lib.character[i] = lib.characterPack.mode_guozhan[i];
|
||||||
if (!lib.character[i][4]) {
|
|
||||||
lib.character[i][4] = [];
|
|
||||||
}
|
|
||||||
if (!lib.translate[i]) {
|
if (!lib.translate[i]) {
|
||||||
lib.translate[i] = lib.translate[i.slice(3)];
|
lib.translate[i] = lib.translate[i.slice(3)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (var i in lib.character) {
|
for (var i in lib.character) {
|
||||||
if (lib.character[i][1] == "shen") {
|
if (lib.character[i].group == "shen") {
|
||||||
if (lib.character[i][4]) {
|
lib.character[i].group = (lib.character[i].groupInGuozhan || "qun");
|
||||||
var group = lib.character[i][4].find(
|
|
||||||
(group) =>
|
|
||||||
lib.group.includes(group) || group == "key" || group.startsWith("gzgroup:")
|
|
||||||
);
|
|
||||||
if (group) {
|
|
||||||
if (group.startsWith("gzgroup:")) lib.character[i][1] = group.slice(8);
|
|
||||||
else lib.character[i][1] = group;
|
|
||||||
} else lib.character[i][1] = "qun";
|
|
||||||
} else lib.character[i][1] = "qun";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -35,25 +23,13 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
var pack = lib.characterPack.mode_guozhan;
|
var pack = lib.characterPack.mode_guozhan;
|
||||||
for (var i in pack) {
|
for (var i in pack) {
|
||||||
lib.character[i] = pack[i];
|
lib.character[i] = pack[i];
|
||||||
if (!lib.character[i][4]) {
|
|
||||||
lib.character[i][4] = [];
|
|
||||||
}
|
|
||||||
if (!lib.translate[i]) {
|
if (!lib.translate[i]) {
|
||||||
lib.translate[i] = lib.translate[i.slice(3)];
|
lib.translate[i] = lib.translate[i.slice(3)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (var i in lib.character) {
|
for (var i in lib.character) {
|
||||||
if (lib.character[i][1] == "shen") {
|
if (lib.character[i].group == "shen") {
|
||||||
if (lib.character[i][4]) {
|
lib.character[i].group = (lib.character[i].groupInGuozhan || "qun");
|
||||||
var group = lib.character[i][4].find(
|
|
||||||
(group) =>
|
|
||||||
lib.group.includes(group) || group == "key" || group.startsWith("gzgroup:")
|
|
||||||
);
|
|
||||||
if (group) {
|
|
||||||
if (group.startsWith("gzgroup:")) lib.character[i][1] = group.slice(8);
|
|
||||||
else lib.character[i][1] = group;
|
|
||||||
} else lib.character[i][1] = "qun";
|
|
||||||
} else lib.character[i][1] = "qun";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -91,7 +67,6 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
delete lib.translate.shuiyanqijunx_info_guozhan;
|
delete lib.translate.shuiyanqijunx_info_guozhan;
|
||||||
const pack = lib.yingbian_guozhan;
|
const pack = lib.yingbian_guozhan;
|
||||||
for (const i in pack) {
|
for (const i in pack) {
|
||||||
if (!pack[i][4]) pack[i][4] = [];
|
|
||||||
lib.character[i] = pack[i];
|
lib.character[i] = pack[i];
|
||||||
lib.characterPack.mode_guozhan[i] = pack[i];
|
lib.characterPack.mode_guozhan[i] = pack[i];
|
||||||
if (!lib.translate[i]) lib.translate[i] = lib.translate[i.slice(3)];
|
if (!lib.translate[i]) lib.translate[i] = lib.translate[i.slice(3)];
|
||||||
|
@ -144,7 +119,6 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
delete lib.translate.shuiyanqijunx_info_guozhan;
|
delete lib.translate.shuiyanqijunx_info_guozhan;
|
||||||
const pack2 = lib.yingbian_guozhan;
|
const pack2 = lib.yingbian_guozhan;
|
||||||
for (const i in pack2) {
|
for (const i in pack2) {
|
||||||
if (!pack2[i][4]) pack2[i][4] = [];
|
|
||||||
pack[i] = pack2[i];
|
pack[i] = pack2[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,28 +128,13 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
}
|
}
|
||||||
for (var i in pack) {
|
for (var i in pack) {
|
||||||
lib.character[i] = pack[i];
|
lib.character[i] = pack[i];
|
||||||
if (!lib.character[i][4]) {
|
|
||||||
lib.character[i][4] = [];
|
|
||||||
}
|
|
||||||
if (!lib.translate[i]) {
|
if (!lib.translate[i]) {
|
||||||
lib.translate[i] = lib.translate[i.slice(3)];
|
lib.translate[i] = lib.translate[i.slice(3)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (var i in lib.character) {
|
for (var i in lib.character) {
|
||||||
if (lib.character[i][1] == "shen") {
|
if (lib.character[i][1] == "shen") {
|
||||||
if (lib.character[i][4]) {
|
lib.character[i].group = (lib.character[i].groupInGuozhan || "qun");
|
||||||
var group = lib.character[i][4].find(
|
|
||||||
(group) =>
|
|
||||||
lib.group.includes(group) ||
|
|
||||||
group == "key" ||
|
|
||||||
group.startsWith("gzgroup:")
|
|
||||||
);
|
|
||||||
if (group) {
|
|
||||||
if (group.startsWith("gzgroup:"))
|
|
||||||
lib.character[i][1] = group.slice(8);
|
|
||||||
else lib.character[i][1] = group;
|
|
||||||
} else lib.character[i][1] = "qun";
|
|
||||||
} else lib.character[i][1] = "qun";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//lib.characterReplace={};
|
//lib.characterReplace={};
|
||||||
|
@ -22319,9 +22278,9 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
continue;
|
continue;
|
||||||
if (get.is.jun(i)) continue;
|
if (get.is.jun(i)) continue;
|
||||||
}
|
}
|
||||||
if (lib.character[i][4].includes("hiddenSkill")) continue;
|
if (lib.character[i].hasHiddenSkill) continue;
|
||||||
if (lib.character[i][2] == 3 || lib.character[i][2] == 4 || lib.character[i][2] == 5)
|
const hp = lib.character[i].hp, maxHp = lib.character[i].maxHp;
|
||||||
event.list.push(i);
|
if (hp === maxHp && hp >= 3 && hp <= 5) event.list.push(i);
|
||||||
}
|
}
|
||||||
_status.characterlist = event.list.slice(0);
|
_status.characterlist = event.list.slice(0);
|
||||||
_status.yeidentity = [];
|
_status.yeidentity = [];
|
||||||
|
@ -22368,7 +22327,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (lib.character[button.link][4].includes("hiddenSkill")) return false;
|
if (lib.character[button.link].hasHiddenSkill) return false;
|
||||||
var filterChoice = function (name1, name2) {
|
var filterChoice = function (name1, name2) {
|
||||||
if (_status.separatism) return true;
|
if (_status.separatism) return true;
|
||||||
var group1 = lib.character[name1][1];
|
var group1 = lib.character[name1][1];
|
||||||
|
|
|
@ -1051,7 +1051,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
list.push(group);
|
list.push(group);
|
||||||
}
|
}
|
||||||
map[group].push(i);
|
map[group].push(i);
|
||||||
if (lib.character[i][4] && lib.character[i][4].includes("zhu")) {
|
if (lib.character[i].isZhugong) {
|
||||||
if (!map_zhu[group]) {
|
if (!map_zhu[group]) {
|
||||||
map_zhu[group] = [];
|
map_zhu[group] = [];
|
||||||
}
|
}
|
||||||
|
@ -1230,7 +1230,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
list.push(group);
|
list.push(group);
|
||||||
}
|
}
|
||||||
map[group].push(i);
|
map[group].push(i);
|
||||||
if (lib.character[i][4] && lib.character[i][4].includes("zhu")) {
|
if (lib.character[i].isZhugong) {
|
||||||
if (!map_zhu[group]) {
|
if (!map_zhu[group]) {
|
||||||
map_zhu[group] = [];
|
map_zhu[group] = [];
|
||||||
}
|
}
|
||||||
|
@ -1496,8 +1496,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
if (
|
if (
|
||||||
get.is.double(result[i][0]) ||
|
get.is.double(result[i][0]) ||
|
||||||
(lib.character[result[i][0]] &&
|
(lib.character[result[i][0]] &&
|
||||||
lib.character[result[i][0]][1] == "shen" &&
|
lib.character[result[i][0]].group == "shen" &&
|
||||||
!lib.character[result[i][0]][4].includes("hiddenSkill"))
|
!lib.character[result[i][0]].hasHiddenSkill)
|
||||||
)
|
)
|
||||||
shen.push(lib.playerOL[i]);
|
shen.push(lib.playerOL[i]);
|
||||||
}
|
}
|
||||||
|
@ -2098,7 +2098,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
} else {
|
} else {
|
||||||
var bool = false;
|
var bool = false;
|
||||||
for (var j of ix) {
|
for (var j of ix) {
|
||||||
if (lib.character[j][4] && lib.character[j][4].includes("zhu")) {
|
if (lib.character[j].isZhugong) {
|
||||||
bool = true;
|
bool = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2113,7 +2113,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
if (lib.filter.characterDisabled(i)) continue;
|
if (lib.filter.characterDisabled(i)) continue;
|
||||||
event.list.push(i);
|
event.list.push(i);
|
||||||
list4.push(i);
|
list4.push(i);
|
||||||
if (!stratagemMode && lib.character[i][4] && lib.character[i][4].includes("zhu")) {
|
if (!stratagemMode && lib.character[i].isZhugong) {
|
||||||
list2.push(i);
|
list2.push(i);
|
||||||
} else {
|
} else {
|
||||||
list3.push(i);
|
list3.push(i);
|
||||||
|
@ -2366,8 +2366,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
game.me._groupChosen = true;
|
game.me._groupChosen = true;
|
||||||
game.me.chooseControl(get.is.double(name, true)).set("prompt", "请选择你的势力");
|
game.me.chooseControl(get.is.double(name, true)).set("prompt", "请选择你的势力");
|
||||||
} else if (
|
} else if (
|
||||||
lib.character[name][1] == "shen" &&
|
lib.character[name].group == "shen" &&
|
||||||
!lib.character[name][4].includes("hiddenSkill") &&
|
!lib.character[name].hasHiddenSkill &&
|
||||||
get.config("choose_group")
|
get.config("choose_group")
|
||||||
) {
|
) {
|
||||||
var list = lib.group.slice(0);
|
var list = lib.group.slice(0);
|
||||||
|
@ -2560,7 +2560,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
var pack = lib.characterPack[lib.configOL.characterPack[i]];
|
var pack = lib.characterPack[lib.configOL.characterPack[i]];
|
||||||
for (var j in pack) {
|
for (var j in pack) {
|
||||||
// if(j=='zuoci') continue;
|
// if(j=='zuoci') continue;
|
||||||
if (lib.character[j]) libCharacter[j] = pack[j];
|
if (lib.character[j]) libCharacter[j] = lib.character[j];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (i in lib.characterReplace) {
|
for (i in lib.characterReplace) {
|
||||||
|
@ -2575,7 +2575,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
list4.addArray(ix);
|
list4.addArray(ix);
|
||||||
var bool = false;
|
var bool = false;
|
||||||
for (var j of ix) {
|
for (var j of ix) {
|
||||||
if (libCharacter[j][4] && libCharacter[j][4].includes("zhu")) {
|
if (libCharacter[j].isZhugong) {
|
||||||
bool = true;
|
bool = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2597,7 +2597,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
event.list.push(i);
|
event.list.push(i);
|
||||||
event.list2.push(i);
|
event.list2.push(i);
|
||||||
list4.push(i);
|
list4.push(i);
|
||||||
if (libCharacter[i][4] && libCharacter[i][4].includes("zhu")) {
|
if (libCharacter[i].isZhugong) {
|
||||||
list2.push(i);
|
list2.push(i);
|
||||||
} else {
|
} else {
|
||||||
list3.push(i);
|
list3.push(i);
|
||||||
|
@ -2772,8 +2772,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
if (
|
if (
|
||||||
get.is.double(result[i][0]) ||
|
get.is.double(result[i][0]) ||
|
||||||
(lib.character[result[i][0]] &&
|
(lib.character[result[i][0]] &&
|
||||||
lib.character[result[i][0]][1] == "shen" &&
|
lib.character[result[i][0]].group == "shen" &&
|
||||||
!lib.character[result[i][0]][4].includes("hiddenSkill"))
|
!lib.character[result[i][0]].hasHiddenSkill)
|
||||||
)
|
)
|
||||||
shen.push(lib.playerOL[i]);
|
shen.push(lib.playerOL[i]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -307,9 +307,6 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
if (_status.mode != "normal") return;
|
if (_status.mode != "normal") return;
|
||||||
for (var i in lib.characterSingle) {
|
for (var i in lib.characterSingle) {
|
||||||
lib.character[i] = lib.characterSingle[i];
|
lib.character[i] = lib.characterSingle[i];
|
||||||
if (!lib.character[i][4]) {
|
|
||||||
lib.character[i][4] = [];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
for (var j in lib.singleTranslate) lib.translate[j] = lib.singleTranslate[j];
|
for (var j in lib.singleTranslate) lib.translate[j] = lib.singleTranslate[j];
|
||||||
},
|
},
|
||||||
|
@ -352,11 +349,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
for (var j in singleTranslate) lib.translate[j] = singleTranslate[j];
|
for (var j in singleTranslate) lib.translate[j] = singleTranslate[j];
|
||||||
_status.characterlist = [];
|
_status.characterlist = [];
|
||||||
for (var i in characterSingle) {
|
for (var i in characterSingle) {
|
||||||
if (!jin && characterSingle[i][1] == "jin") continue;
|
if (!jin && get.convertedCharacter(characterSingle[i]) == "jin") continue;
|
||||||
lib.character[i] = characterSingle[i];
|
lib.character[i] = characterSingle[i];
|
||||||
if (!lib.character[i][4]) {
|
|
||||||
lib.character[i][4] = [];
|
|
||||||
}
|
|
||||||
_status.characterlist.push(i);
|
_status.characterlist.push(i);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -647,7 +641,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
[game.me, game.me.enemy].forEach((current) => {
|
[game.me, game.me.enemy].forEach((current) => {
|
||||||
if (
|
if (
|
||||||
current.storage.nohp ||
|
current.storage.nohp ||
|
||||||
(lib.character[current.name1][4].includes("hiddenSkill") && !current.noclick)
|
(lib.character[current.name1].hasHiddenSkil && !current.noclick)
|
||||||
) {
|
) {
|
||||||
current.storage.rawHp = 1;
|
current.storage.rawHp = 1;
|
||||||
current.storage.rawMaxHp = 1;
|
current.storage.rawMaxHp = 1;
|
||||||
|
@ -1116,7 +1110,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
current.init(result[i][0]);
|
current.init(result[i][0]);
|
||||||
if (
|
if (
|
||||||
current.storage.nohp ||
|
current.storage.nohp ||
|
||||||
(lib.character[current.name1][4].includes("hiddenSkill") && !current.noclick)
|
(lib.character[current.name1].hasHiddenSkil && !current.noclick)
|
||||||
) {
|
) {
|
||||||
current.storage.rawHp = 1;
|
current.storage.rawHp = 1;
|
||||||
current.storage.rawMaxHp = 1;
|
current.storage.rawMaxHp = 1;
|
||||||
|
@ -1134,7 +1128,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
current.init(result[i][0]);
|
current.init(result[i][0]);
|
||||||
if (
|
if (
|
||||||
current.storage.nohp ||
|
current.storage.nohp ||
|
||||||
(lib.character[current.name1][4].includes("hiddenSkill") &&
|
(lib.character[current.name1].hasHiddenSkil &&
|
||||||
!current.noclick)
|
!current.noclick)
|
||||||
) {
|
) {
|
||||||
current.storage.rawHp = 1;
|
current.storage.rawHp = 1;
|
||||||
|
|
|
@ -2256,33 +2256,33 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
var i, j, name;
|
var i, j, name;
|
||||||
for (var i in lib.characterPack.mode_stone) {
|
for (var i in lib.characterPack.mode_stone) {
|
||||||
lib.character[i] = lib.characterPack.mode_stone[i];
|
lib.character[i] = lib.characterPack.mode_stone[i];
|
||||||
if (lib.characterPack.mode_stone[i][4].includes("stonespecial")) continue;
|
if (lib.character[i].isSpecialInStoneMode) continue;
|
||||||
lib.character[i][3].add("stonesha");
|
lib.character[i].skills.add("stonesha");
|
||||||
lib.character[i][3].add("stoneshan");
|
lib.character[i].skills.add("stoneshan");
|
||||||
lib.character[i][3].add("stonedraw");
|
lib.character[i].skills.add("stonedraw");
|
||||||
name = i + "_stonecharacter";
|
name = i + "_stonecharacter";
|
||||||
lib.card[name] = {
|
lib.card[name] = {
|
||||||
image: "mode/stone/character/" + i,
|
image: "mode/stone/character/" + i,
|
||||||
stoneact: lib.character[i][5][0],
|
stoneact: lib.character[i].stoneModeData[0],
|
||||||
career: lib.character[i][5][2] || null,
|
career: lib.character[i].stoneModeData[2] || null,
|
||||||
};
|
};
|
||||||
for (j in lib.element.stonecharacter) {
|
for (j in lib.element.stonecharacter) {
|
||||||
lib.card[name][j] = lib.element.stonecharacter[j];
|
lib.card[name][j] = lib.element.stonecharacter[j];
|
||||||
}
|
}
|
||||||
lib.translate[name] = get.translation(i);
|
lib.translate[name] = get.translation(i);
|
||||||
lib.translate[name + "_info"] = get.skillintro(i);
|
lib.translate[name + "_info"] = get.skillintro(i);
|
||||||
if (lib.character[i][4].includes("stonehidden")) {
|
if (lib.character[i].isHiddenInStoneMode) {
|
||||||
lib.card[name].stonehidden = true;
|
lib.card[name].stonehidden = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!lib.character[i][5][2]) {
|
if (!lib.character[i].stoneModeData[2]) {
|
||||||
if (lib.character[i][5][0] < 3) {
|
if (lib.character[i].stoneModeData[0] < 3) {
|
||||||
list.push(name);
|
list.push(name);
|
||||||
} else {
|
} else {
|
||||||
list2.push(name);
|
list2.push(name);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
list3[lib.character[i][5][2]].push(name);
|
list3[lib.character[i].stoneModeData[2]].push(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_status.mode == "deck") {
|
if (_status.mode == "deck") {
|
||||||
|
@ -2415,8 +2415,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
var list = [];
|
var list = [];
|
||||||
event.list = list;
|
event.list = list;
|
||||||
for (i in lib.character) {
|
for (i in lib.character) {
|
||||||
if (lib.character[i][4] && lib.character[i][4].includes("minskin")) continue;
|
if (lib.character[i].isMinskin) continue;
|
||||||
if (lib.character[i][4] && lib.character[i][4].includes("stonehidden")) continue;
|
if (lib.character[i].isHiddenInStoneMode) continue;
|
||||||
if (lib.config.forbidstone.includes(i)) continue;
|
if (lib.config.forbidstone.includes(i)) continue;
|
||||||
if (lib.filter.characterDisabled(i)) continue;
|
if (lib.filter.characterDisabled(i)) continue;
|
||||||
list.push(i);
|
list.push(i);
|
||||||
|
@ -5867,7 +5867,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
return target.isMin();
|
return target.isMin();
|
||||||
},
|
},
|
||||||
content: function () {
|
content: function () {
|
||||||
target.clearSkills();
|
target.clearSkills(true);
|
||||||
target.init("stone_qingwa");
|
target.init("stone_qingwa");
|
||||||
target.noPhaseDelay = true;
|
target.noPhaseDelay = true;
|
||||||
},
|
},
|
||||||
|
@ -7232,10 +7232,10 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
var list = [];
|
var list = [];
|
||||||
for (var i in lib.character) {
|
for (var i in lib.character) {
|
||||||
if (
|
if (
|
||||||
lib.character[i][4].includes("stone") &&
|
lib.character[i].isFellowInStoneMode &&
|
||||||
!lib.character[i][4].includes("stonehidden") &&
|
!lib.character[i].isHiddenInStoneMode &&
|
||||||
lib.character[i][5] &&
|
lib.character[i].stoneModeData &&
|
||||||
lib.character[i][5][0] == num
|
lib.character[i].stoneModeData[0] == num
|
||||||
) {
|
) {
|
||||||
list.push(i);
|
list.push(i);
|
||||||
}
|
}
|
||||||
|
@ -7787,10 +7787,10 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
var list = [];
|
var list = [];
|
||||||
for (var i in lib.character) {
|
for (var i in lib.character) {
|
||||||
if (
|
if (
|
||||||
lib.character[i][4].includes("stone") &&
|
lib.character[i].isFellowInStoneMode &&
|
||||||
!lib.character[i][4].includes("stonehidden") &&
|
!lib.character[i].isHiddenInStoneMode &&
|
||||||
lib.character[i][5] &&
|
lib.character[i].stoneModeData &&
|
||||||
lib.character[i][5][0] == 1
|
lib.character[i].stoneModeData[0] == 1
|
||||||
) {
|
) {
|
||||||
list.push(i);
|
list.push(i);
|
||||||
}
|
}
|
||||||
|
@ -10366,9 +10366,9 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
var list = [];
|
var list = [];
|
||||||
var list2 = [];
|
var list2 = [];
|
||||||
for (var i in lib.character) {
|
for (var i in lib.character) {
|
||||||
if (lib.character[i][4].includes("stonelegend_" + player.career)) {
|
if (lib.character[i].trashBin.includes("stonelegend_" + player.career)) {
|
||||||
list.push(i);
|
list.push(i);
|
||||||
} else if (lib.character[i][4].includes("stonelegend")) {
|
} else if (lib.character[i].trashBin.includes("stonelegend")) {
|
||||||
list2.push(i);
|
list2.push(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,9 +85,6 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
lib.mechlist.push(i);
|
lib.mechlist.push(i);
|
||||||
}
|
}
|
||||||
lib.character[i] = lib.characterPack.mode_tafang[i];
|
lib.character[i] = lib.characterPack.mode_tafang[i];
|
||||||
if (!lib.character[i][4]) {
|
|
||||||
lib.character[i][4] = [];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ui.create.cardsAsync();
|
ui.create.cardsAsync();
|
||||||
game.finishCards();
|
game.finishCards();
|
||||||
|
@ -245,9 +242,9 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
for (i in lib.character) {
|
for (i in lib.character) {
|
||||||
if (i.indexOf("treasure_") == 0) continue;
|
if (i.indexOf("treasure_") == 0) continue;
|
||||||
if (i.indexOf("tafang_mech_") == 0) continue;
|
if (i.indexOf("tafang_mech_") == 0) continue;
|
||||||
if (lib.character[i][4].includes("minskin")) continue;
|
if (lib.character[i].isMinskin) continue;
|
||||||
if (lib.config.forbidchess.includes(i)) continue;
|
if (lib.config.forbidchess.includes(i)) continue;
|
||||||
if (lib.character[i][4].includes("boss")) continue;
|
if (lib.character[i].isBoss) continue;
|
||||||
if (lib.filter.characterDisabled(i)) continue;
|
if (lib.filter.characterDisabled(i)) continue;
|
||||||
list.push(i);
|
list.push(i);
|
||||||
}
|
}
|
||||||
|
|
|
@ -717,9 +717,6 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
ui.arena.classList.add("choose-character");
|
ui.arena.classList.add("choose-character");
|
||||||
for (var i in lib.characterPack.mode_versus) {
|
for (var i in lib.characterPack.mode_versus) {
|
||||||
lib.character[i] = lib.characterPack.mode_versus[i];
|
lib.character[i] = lib.characterPack.mode_versus[i];
|
||||||
if (!lib.character[i][4]) {
|
|
||||||
lib.character[i][4] = [];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
lib.characterIntro.boss_liedixuande = lib.characterIntro.liubei;
|
lib.characterIntro.boss_liedixuande = lib.characterIntro.liubei;
|
||||||
lib.characterIntro.boss_gongshenyueying = lib.characterIntro.huangyueying;
|
lib.characterIntro.boss_gongshenyueying = lib.characterIntro.huangyueying;
|
||||||
|
@ -753,10 +750,10 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
event.list = list;
|
event.list = list;
|
||||||
if (lib.characterPack.boss) {
|
if (lib.characterPack.boss) {
|
||||||
for (var i in lib.characterPack.boss) {
|
for (var i in lib.characterPack.boss) {
|
||||||
if (!lib.character[i] && lib.characterPack.boss[i][4]) {
|
if (!lib.character[i]) {
|
||||||
if (
|
if (
|
||||||
lib.characterPack.boss[i][4].includes("jiangeboss") ||
|
get.convertedCharacter(lib.characterPack.boss[i]).isJiangeBoss ||
|
||||||
lib.characterPack.boss[i][4].includes("jiangemech")
|
get.convertedCharacter(lib.characterPack.boss[i]).isJiangeMech
|
||||||
) {
|
) {
|
||||||
lib.character[i] = lib.characterPack.boss[i];
|
lib.character[i] = lib.characterPack.boss[i];
|
||||||
}
|
}
|
||||||
|
@ -764,20 +761,18 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (var i in lib.character) {
|
for (var i in lib.character) {
|
||||||
if (lib.character[i][4]) {
|
if (lib.character[i].isJiangeBoss) {
|
||||||
if (lib.character[i][4].includes("jiangeboss")) {
|
list[lib.character[i].group + "boss"].push(i);
|
||||||
list[lib.character[i][1] + "boss"].push(i);
|
|
||||||
continue;
|
continue;
|
||||||
} else if (lib.character[i][4].includes("jiangemech")) {
|
} else if (lib.character[i].isJiangeMech) {
|
||||||
list[lib.character[i][1] + "mech"].push(i);
|
list[lib.character[i].group + "mech"].push(i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (lib.filter.characterDisabled(i)) continue;
|
if (lib.filter.characterDisabled(i)) continue;
|
||||||
if (get.is.double(i)) continue;
|
if (get.is.double(i)) continue;
|
||||||
if (lib.character[i][1] == "wei") {
|
if (lib.character[i].group == "wei") {
|
||||||
list.weilist.push(i);
|
list.weilist.push(i);
|
||||||
} else if (lib.character[i][1] == "shu") {
|
} else if (lib.character[i].group == "shu") {
|
||||||
list.shulist.push(i);
|
list.shulist.push(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -821,10 +816,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
};
|
};
|
||||||
var createCharacterDialog = function () {
|
var createCharacterDialog = function () {
|
||||||
event.dialogxx = ui.create.characterDialog("heightset", function (name) {
|
event.dialogxx = ui.create.characterDialog("heightset", function (name) {
|
||||||
if (lib.character[name][4]) {
|
if (lib.character[name].isJiangeBoss) return true;
|
||||||
if (lib.character[name][4].includes("jiangeboss")) return true;
|
if (lib.character[name].isJiangeMech) return true;
|
||||||
if (lib.character[name][4].includes("jiangemech")) return true;
|
|
||||||
}
|
|
||||||
if (lib.character[name][1] != game.me.identity) return true;
|
if (lib.character[name][1] != game.me.identity) return true;
|
||||||
});
|
});
|
||||||
if (ui.cheat2) {
|
if (ui.cheat2) {
|
||||||
|
@ -1753,7 +1746,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
if (event.filterChoice(i)) continue;
|
if (event.filterChoice(i)) continue;
|
||||||
if (lib.filter.characterDisabled(i)) continue;
|
if (lib.filter.characterDisabled(i)) continue;
|
||||||
event.list.push(i);
|
event.list.push(i);
|
||||||
if (lib.character[i][4] && lib.character[i][4].includes("zhu")) {
|
if (lib.character[i].isZhugong) {
|
||||||
list2.push(i);
|
list2.push(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3455,7 +3448,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
||||||
if (_status.event.player.identity == "zhu") {
|
if (_status.event.player.identity == "zhu") {
|
||||||
if (Math.random() < 0.8) {
|
if (Math.random() < 0.8) {
|
||||||
var info = lib.character[button.link];
|
var info = lib.character[button.link];
|
||||||
if (!info[4] || !info[4].includes("zhu")) {
|
if (!info || !info.isZhugong) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4702,6 +4702,7 @@ export class Game {
|
||||||
* @param { { extension: string, sex: Sex, group: string, hp: string | number, skills?: string[], tags?: any[], translate: string } } information
|
* @param { { extension: string, sex: Sex, group: string, hp: string | number, skills?: string[], tags?: any[], translate: string } } information
|
||||||
*/
|
*/
|
||||||
addCharacter(name, information) {
|
addCharacter(name, information) {
|
||||||
|
//TODO: 这一坨也要改
|
||||||
const extensionName = _status.extension || information.extension,
|
const extensionName = _status.extension || information.extension,
|
||||||
character = [
|
character = [
|
||||||
information.sex,
|
information.sex,
|
||||||
|
@ -4731,6 +4732,7 @@ export class Game {
|
||||||
let extname = _status.extension || "扩展";
|
let extname = _status.extension || "扩展";
|
||||||
let gzFlag = false;
|
let gzFlag = false;
|
||||||
packagename = packagename || extname;
|
packagename = packagename || extname;
|
||||||
|
//TODO: 把这里一大坨改成新写法
|
||||||
for (let i in pack) {
|
for (let i in pack) {
|
||||||
if (i == "mode") {
|
if (i == "mode") {
|
||||||
if (pack[i] == "guozhan") gzFlag = true;
|
if (pack[i] == "guozhan") gzFlag = true;
|
||||||
|
|
|
@ -31,6 +31,15 @@ export class Get {
|
||||||
const [major, minor, patch] = result[1].split(".");
|
const [major, minor, patch] = result[1].split(".");
|
||||||
return ["safari", parseInt(major), parseInt(minor), parseInt(patch)];
|
return ["safari", parseInt(major), parseInt(minor), parseInt(patch)];
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 将一个传统格式的character转化为Character对象格式
|
||||||
|
* @param { Array|Object|import("../library/element/character").Character } data
|
||||||
|
* @returns {import("../library/element/character").Character}
|
||||||
|
*/
|
||||||
|
convertedCharacter(data){
|
||||||
|
if(!(data instanceof lib.element.Character)) return new lib.element.Character(data);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 返回 VCard[] 形式的所有牌,用于印卡将遍历
|
* 返回 VCard[] 形式的所有牌,用于印卡将遍历
|
||||||
* @param {Function} filter
|
* @param {Function} filter
|
||||||
|
@ -591,7 +600,7 @@ export class Get {
|
||||||
/**
|
/**
|
||||||
* @overload
|
* @overload
|
||||||
* @param { string } name
|
* @param { string } name
|
||||||
* @returns { Character }
|
* @returns { import("../library/element/character").Character }
|
||||||
*/
|
*/
|
||||||
/**
|
/**
|
||||||
* @template { 0 | 1 | 2 | 3 | 4 } T
|
* @template { 0 | 1 | 2 | 3 | 4 } T
|
||||||
|
@ -604,7 +613,7 @@ export class Get {
|
||||||
let info = lib.character[name];
|
let info = lib.character[name];
|
||||||
if (!info) {
|
if (!info) {
|
||||||
const pack = Object.keys(lib.characterPack).find((pack) => name in lib.characterPack[pack]);
|
const pack = Object.keys(lib.characterPack).find((pack) => name in lib.characterPack[pack]);
|
||||||
if (pack) info = lib.characterPack[pack][name];
|
if (pack) info = get.convertedCharacter(lib.characterPack[pack][name]);
|
||||||
}
|
}
|
||||||
if (typeof num === "number") {
|
if (typeof num === "number") {
|
||||||
if (!info) info = [];
|
if (!info) info = [];
|
||||||
|
@ -616,10 +625,8 @@ export class Get {
|
||||||
}
|
}
|
||||||
characterInitFilter(name) {
|
characterInitFilter(name) {
|
||||||
const info = get.character(name);
|
const info = get.character(name);
|
||||||
if (!info || !info[4]) return [];
|
if (!info) return [];
|
||||||
const filter = info[4].find((tag) => tag.startsWith("InitFilter"));
|
return info.initFilters || [];
|
||||||
if (!filter) return [];
|
|
||||||
return filter.split(":").slice(1);
|
|
||||||
}
|
}
|
||||||
characterIntro(name) {
|
characterIntro(name) {
|
||||||
if (lib.characterIntro[name]) return lib.characterIntro[name];
|
if (lib.characterIntro[name]) return lib.characterIntro[name];
|
||||||
|
@ -638,15 +645,8 @@ export class Get {
|
||||||
return "暂无武将介绍";
|
return "暂无武将介绍";
|
||||||
}
|
}
|
||||||
bordergroup(info, raw) {
|
bordergroup(info, raw) {
|
||||||
if (!Array.isArray(info)) {
|
if(info.groupBorder) return info.groupBorder;
|
||||||
info = lib.character[info];
|
return raw ? "" : info.group || "";
|
||||||
if (!info) return "";
|
|
||||||
}
|
|
||||||
if (Array.isArray(info[4]))
|
|
||||||
for (const str of info[4]) {
|
|
||||||
if (typeof str == "string" && str.startsWith("border:")) return str.slice(7);
|
|
||||||
}
|
|
||||||
return raw ? "" : info[1] || "";
|
|
||||||
}
|
}
|
||||||
groupnature(group, method) {
|
groupnature(group, method) {
|
||||||
var nature = lib.groupnature[group];
|
var nature = lib.groupnature[group];
|
||||||
|
@ -1358,11 +1358,11 @@ export class Get {
|
||||||
if (rank.bm.includes(name)) return num ? Math.round((2 * (num - 1)) / 8 + 1) : "bm";
|
if (rank.bm.includes(name)) return num ? Math.round((2 * (num - 1)) / 8 + 1) : "bm";
|
||||||
if (rank.c.includes(name)) return num ? Math.round((1 * (num - 1)) / 8 + 1) : "c";
|
if (rank.c.includes(name)) return num ? Math.round((1 * (num - 1)) / 8 + 1) : "c";
|
||||||
if (rank.d.includes(name)) return num ? Math.round((0 * (num - 1)) / 8 + 1) : "d";
|
if (rank.d.includes(name)) return num ? Math.round((0 * (num - 1)) / 8 + 1) : "d";
|
||||||
if (lib.character[name] && lib.character[name][4]) {
|
if (lib.character[name]) {
|
||||||
if (
|
if (
|
||||||
lib.character[name][4].includes("boss") ||
|
lib.character[name].isBoss ||
|
||||||
lib.character[name][4].includes("bossallowed") ||
|
lib.character[name].isBossAllowed ||
|
||||||
lib.character[name][4].includes("hiddenboss")
|
lib.character[name].isHiddenBoss
|
||||||
) {
|
) {
|
||||||
return num ? Math.round((9 * (num - 1)) / 8 + 1) : "sp";
|
return num ? Math.round((9 * (num - 1)) / 8 + 1) : "sp";
|
||||||
}
|
}
|
||||||
|
@ -2592,14 +2592,11 @@ export class Get {
|
||||||
for (var i in lib.character) {
|
for (var i in lib.character) {
|
||||||
if (lib.filter.characterDisabled(i)) continue;
|
if (lib.filter.characterDisabled(i)) continue;
|
||||||
if (lib.filter.characterDisabled2(i)) continue;
|
if (lib.filter.characterDisabled2(i)) continue;
|
||||||
if (lib.character[i][4]) {
|
if (lib.character[i].isBoss) continue;
|
||||||
if (lib.character[i][4].includes("boss")) continue;
|
if (lib.character[i].isHiddenBoss) continue;
|
||||||
if (lib.character[i][4].includes("hiddenboss")) continue;
|
if (lib.character[i].isMinskin) continue;
|
||||||
if (lib.character[i][4].includes("minskin")) continue;
|
if (lib.character[i].isUnseen) continue;
|
||||||
if (lib.character[i][4].includes("unseen")) continue;
|
for (var skill of lib.character[i].skills) {
|
||||||
}
|
|
||||||
for (var j = 0; j < lib.character[i][3].length; j++) {
|
|
||||||
var skill = lib.character[i][3][j];
|
|
||||||
var info = lib.skill[skill];
|
var info = lib.skill[skill];
|
||||||
if (lib.filter.skillDisabled(skill)) continue;
|
if (lib.filter.skillDisabled(skill)) continue;
|
||||||
if (func && !func(info, skill, i)) continue;
|
if (func && !func(info, skill, i)) continue;
|
||||||
|
@ -2613,14 +2610,11 @@ export class Get {
|
||||||
gainableSkillsName(name, func) {
|
gainableSkillsName(name, func) {
|
||||||
var list = [];
|
var list = [];
|
||||||
if (name && lib.character[name]) {
|
if (name && lib.character[name]) {
|
||||||
if (lib.character[name][4]) {
|
if (lib.character[name].isBoss) return list;
|
||||||
if (lib.character[name][4].includes("boss")) return list;
|
if (lib.character[name].isHiddenBoss) return list;
|
||||||
if (lib.character[name][4].includes("hiddenboss")) return list;
|
if (lib.character[name].isMinskin) return list;
|
||||||
if (lib.character[name][4].includes("minskin")) return list;
|
if (lib.character[name].isUnseen) return list;
|
||||||
if (lib.character[name][4].includes("unseen")) return list;
|
for (var skill of lib.character[name].skills) {
|
||||||
}
|
|
||||||
for (var j = 0; j < lib.character[name][3].length; j++) {
|
|
||||||
var skill = lib.character[name][3][j];
|
|
||||||
var info = lib.skill[skill];
|
var info = lib.skill[skill];
|
||||||
if (lib.filter.skillDisabled(skill)) continue;
|
if (lib.filter.skillDisabled(skill)) continue;
|
||||||
if (func && !func(info, skill, name)) continue;
|
if (func && !func(info, skill, name)) continue;
|
||||||
|
@ -2938,15 +2932,7 @@ export class Get {
|
||||||
}
|
}
|
||||||
skillintro(name, learn, learn2) {
|
skillintro(name, learn, learn2) {
|
||||||
var str = "";
|
var str = "";
|
||||||
var infoitem = lib.character[name];
|
var infoitem = get.character(name);
|
||||||
if (!infoitem) {
|
|
||||||
for (var itemx in lib.characterPack) {
|
|
||||||
if (lib.characterPack[itemx][name]) {
|
|
||||||
infoitem = lib.characterPack[itemx][name];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var skills = infoitem[3];
|
var skills = infoitem[3];
|
||||||
var opacity;
|
var opacity;
|
||||||
for (var i = 0; i < skills.length; i++) {
|
for (var i = 0; i < skills.length; i++) {
|
||||||
|
@ -3614,7 +3600,7 @@ export class Get {
|
||||||
if (avatar2) {
|
if (avatar2) {
|
||||||
if (
|
if (
|
||||||
gzbool &&
|
gzbool &&
|
||||||
lib.character[nameskin2][4].includes("gzskin") &&
|
lib.character[nameskin2].hasSkinInGuozhan &&
|
||||||
lib.config.mode_config.guozhan.guozhanSkin
|
lib.config.mode_config.guozhan.guozhanSkin
|
||||||
)
|
)
|
||||||
node.node.avatar2.setBackground(nameskin2, "character");
|
node.node.avatar2.setBackground(nameskin2, "character");
|
||||||
|
@ -3622,7 +3608,7 @@ export class Get {
|
||||||
} else {
|
} else {
|
||||||
if (
|
if (
|
||||||
gzbool &&
|
gzbool &&
|
||||||
lib.character[nameskin2][4].includes("gzskin") &&
|
lib.character[nameskin2].hasSkinInGuozhan &&
|
||||||
lib.config.mode_config.guozhan.guozhanSkin
|
lib.config.mode_config.guozhan.guozhanSkin
|
||||||
)
|
)
|
||||||
node.node.avatar.setBackground(nameskin2, "character");
|
node.node.avatar.setBackground(nameskin2, "character");
|
||||||
|
@ -3637,7 +3623,7 @@ export class Get {
|
||||||
} else {
|
} else {
|
||||||
if (
|
if (
|
||||||
gzbool &&
|
gzbool &&
|
||||||
lib.character[nameskin2][4].includes("gzskin") &&
|
lib.character[nameskin2].hasSkinInGuozhan &&
|
||||||
lib.config.mode_config.guozhan.guozhanSkin
|
lib.config.mode_config.guozhan.guozhanSkin
|
||||||
)
|
)
|
||||||
button.setBackground(nameskin2, "character", "noskin");
|
button.setBackground(nameskin2, "character", "noskin");
|
||||||
|
@ -4240,7 +4226,7 @@ export class Get {
|
||||||
delete lib.config.skin[nameskin];
|
delete lib.config.skin[nameskin];
|
||||||
if (
|
if (
|
||||||
gzbool &&
|
gzbool &&
|
||||||
lib.character[nameskin2][4].includes("gzskin") &&
|
lib.character[nameskin2].hasSkinInGuozhan &&
|
||||||
lib.config.mode_config.guozhan.guozhanSkin
|
lib.config.mode_config.guozhan.guozhanSkin
|
||||||
)
|
)
|
||||||
node.setBackground(nameskin2, "character");
|
node.setBackground(nameskin2, "character");
|
||||||
|
@ -4254,7 +4240,7 @@ export class Get {
|
||||||
} else {
|
} else {
|
||||||
if (
|
if (
|
||||||
gzbool &&
|
gzbool &&
|
||||||
lib.character[nameskin2][4].includes("gzskin") &&
|
lib.character[nameskin2].hasSkinInGuozhan &&
|
||||||
lib.config.mode_config.guozhan.guozhanSkin
|
lib.config.mode_config.guozhan.guozhanSkin
|
||||||
)
|
)
|
||||||
button.setBackground(nameskin2, "character", "noskin");
|
button.setBackground(nameskin2, "character", "noskin");
|
||||||
|
|
|
@ -206,15 +206,13 @@ export class Is {
|
||||||
/**
|
/**
|
||||||
* 是否是双势力武将
|
* 是否是双势力武将
|
||||||
* @param { string } name
|
* @param { string } name
|
||||||
* @param { string[] } array
|
* @param { string[] } [array]
|
||||||
* @returns { boolean | string[] }
|
* @returns { boolean | string[] }
|
||||||
*/
|
*/
|
||||||
double(name, array) {
|
double(name, array) {
|
||||||
const extraInformations = get.character(name, 4);
|
const extraInformation = get.character(name);
|
||||||
if (!extraInformations) return false;
|
if(extraInformation && extraInformation.doubleGroup && extraInformation.doubleGroup.length>0){
|
||||||
for (const extraInformation of extraInformations) {
|
return array ? extraInformation.doubleGroup.slice(0) : true;
|
||||||
if (!extraInformation.startsWith("doublegroup:")) continue;
|
|
||||||
return array ? extraInformation.split(":").slice(1) : true;
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,11 +21,18 @@ export function canUseHttpProtocol() {
|
||||||
// 手机端
|
// 手机端
|
||||||
if (window.cordova) {
|
if (window.cordova) {
|
||||||
// 直接确定包名
|
// 直接确定包名
|
||||||
if (nonameInitialized.endsWith("com.noname.shijian/")) {
|
// 因为懒人包作者不一定会改成什么版本
|
||||||
|
// @ts-ignore
|
||||||
|
if (nonameInitialized.endsWith("com.noname.shijian/") && window.noname_shijianInterfaces && typeof window.noname_shijianInterfaces.sendUpdate === 'function') {
|
||||||
// 每个app自定义能升级的渠道,比如判断版本
|
// 每个app自定义能升级的渠道,比如判断版本
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
return window.noname_shijianInterfaces.getApkVersion() >= 16000;
|
return window.noname_shijianInterfaces.getApkVersion() >= 16000;
|
||||||
}
|
}
|
||||||
|
// 由理版判断,后续所有app都通过此接口来升级协议
|
||||||
|
// @ts-ignore
|
||||||
|
if (window.NonameAndroidBridge && typeof window.NonameAndroidBridge.sendUpdate === 'function') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 电脑端
|
// 电脑端
|
||||||
else if (typeof window.require == "function" && typeof window.process == "object") {
|
else if (typeof window.require == "function" && typeof window.process == "object") {
|
||||||
|
@ -55,11 +62,19 @@ export function sendUpdate() {
|
||||||
// 手机端
|
// 手机端
|
||||||
if (window.cordova) {
|
if (window.cordova) {
|
||||||
// 直接确定包名
|
// 直接确定包名
|
||||||
if (nonameInitialized && nonameInitialized.includes("com.noname.shijian")) {
|
// @ts-ignore
|
||||||
|
if (nonameInitialized && nonameInitialized.includes("com.noname.shijian") && window.noname_shijianInterfaces && typeof window.noname_shijianInterfaces.sendUpdate === 'function') {
|
||||||
// 给诗笺版apk的java层传递升级完成的信息
|
// 给诗笺版apk的java层传递升级完成的信息
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
return window.noname_shijianInterfaces.sendUpdate() + "?sendUpdate=true";
|
return window.noname_shijianInterfaces.sendUpdate() + "?sendUpdate=true";
|
||||||
}
|
}
|
||||||
|
// 由理版判断
|
||||||
|
// @ts-ignore
|
||||||
|
if (window.NonameAndroidBridge && typeof window.NonameAndroidBridge.sendUpdate === 'function') {
|
||||||
|
// 给由理版apk的java层传递升级完成的信息
|
||||||
|
// @ts-ignore
|
||||||
|
return window.NonameAndroidBridge.sendUpdate() + "?sendUpdate=true";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 电脑端
|
// 电脑端
|
||||||
else if (typeof window.require == "function" && typeof window.process == "object") {
|
else if (typeof window.require == "function" && typeof window.process == "object") {
|
||||||
|
|
|
@ -307,6 +307,10 @@ export async function onload(resetGameTimeout) {
|
||||||
}
|
}
|
||||||
for (k in character[i][j]) {
|
for (k in character[i][j]) {
|
||||||
if (j == "character") {
|
if (j == "character") {
|
||||||
|
if (lib.config.forbidai_user && lib.config.forbidai_user.includes(k)) {
|
||||||
|
lib.config.forbidai.add(k);
|
||||||
|
}
|
||||||
|
if (Array.isArray(character[i][j][k])) {
|
||||||
if (!character[i][j][k][4]) {
|
if (!character[i][j][k][4]) {
|
||||||
character[i][j][k][4] = [];
|
character[i][j][k][4] = [];
|
||||||
}
|
}
|
||||||
|
@ -316,13 +320,21 @@ export async function onload(resetGameTimeout) {
|
||||||
) {
|
) {
|
||||||
lib.config.forbidai.add(k);
|
lib.config.forbidai.add(k);
|
||||||
}
|
}
|
||||||
if (lib.config.forbidai_user && lib.config.forbidai_user.includes(k)) {
|
|
||||||
lib.config.forbidai.add(k);
|
|
||||||
}
|
|
||||||
for (var l = 0; l < character[i][j][k][3].length; l++) {
|
for (var l = 0; l < character[i][j][k][3].length; l++) {
|
||||||
lib.skilllist.add(character[i][j][k][3][l]);
|
lib.skilllist.add(character[i][j][k][3][l]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
if (character[i][j][k].isBoss || character[i][j][k].isHiddenBoss) {
|
||||||
|
lib.config.forbidai.add(k);
|
||||||
|
}
|
||||||
|
if (character[i][j][k].skills) {
|
||||||
|
for (var l = 0; l < character[i][j][k].skills.length; l++ ) {
|
||||||
|
lib.skilllist.add(character[i][j][k].skills[l]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (
|
if (
|
||||||
j == "skill" &&
|
j == "skill" &&
|
||||||
k[0] == "_" &&
|
k[0] == "_" &&
|
||||||
|
@ -346,6 +358,8 @@ export async function onload(resetGameTimeout) {
|
||||||
nopop: character[i][j][k].nopop,
|
nopop: character[i][j][k].nopop,
|
||||||
derivation: character[i][j][k].derivation,
|
derivation: character[i][j][k].derivation,
|
||||||
};
|
};
|
||||||
|
} else if (j === 'character') {
|
||||||
|
lib.character[k] = character[i][j][k];
|
||||||
} else {
|
} else {
|
||||||
Object.defineProperty(
|
Object.defineProperty(
|
||||||
lib[j],
|
lib[j],
|
||||||
|
@ -649,8 +663,7 @@ export async function onload(resetGameTimeout) {
|
||||||
console.log(`加载《${lib.extensions[i][0]}》扩展的content时出现错误。`, e);
|
console.log(`加载《${lib.extensions[i][0]}》扩展的content时出现错误。`, e);
|
||||||
if (!lib.config.extension_alert)
|
if (!lib.config.extension_alert)
|
||||||
alert(
|
alert(
|
||||||
`加载《${
|
`加载《${lib.extensions[i][0]
|
||||||
lib.extensions[i][0]
|
|
||||||
}》扩展的content时出现错误。\n该错误本身可能并不影响扩展运行。您可以在“设置→通用→无视扩展报错”中关闭此弹窗。\n${decodeURI(
|
}》扩展的content时出现错误。\n该错误本身可能并不影响扩展运行。您可以在“设置→通用→无视扩展报错”中关闭此弹窗。\n${decodeURI(
|
||||||
e.stack
|
e.stack
|
||||||
)}`
|
)}`
|
||||||
|
|
|
@ -150,7 +150,7 @@ Reflect.defineProperty(HTMLDivElement.prototype, "setBackground", {
|
||||||
if (
|
if (
|
||||||
lib.config.mode_config.guozhan.guozhanSkin &&
|
lib.config.mode_config.guozhan.guozhanSkin &&
|
||||||
lib.character[name] &&
|
lib.character[name] &&
|
||||||
lib.character[name][4].includes("gzskin")
|
lib.character[name].hasSkinInGuozhan
|
||||||
)
|
)
|
||||||
gzbool = true;
|
gzbool = true;
|
||||||
name = name.slice(3);
|
name = name.slice(3);
|
||||||
|
|
|
@ -0,0 +1,358 @@
|
||||||
|
import { get } from "../../get/index.js";
|
||||||
|
import { game } from "../../game/index.js";
|
||||||
|
import { lib } from "../index.js";
|
||||||
|
import { _status } from "../../status/index.js";
|
||||||
|
import { ui } from "../../ui/index.js";
|
||||||
|
|
||||||
|
export class Character {
|
||||||
|
/**
|
||||||
|
* 武将牌的性别
|
||||||
|
* @type { string }
|
||||||
|
**/
|
||||||
|
sex;
|
||||||
|
/**
|
||||||
|
* 武将牌的体力值
|
||||||
|
* @type { number }
|
||||||
|
**/
|
||||||
|
hp;
|
||||||
|
/**
|
||||||
|
* 武将牌的体力上限
|
||||||
|
* @type { number }
|
||||||
|
**/
|
||||||
|
maxHp;
|
||||||
|
/**
|
||||||
|
* 武将牌的护甲值
|
||||||
|
* @type { number }
|
||||||
|
**/
|
||||||
|
hujia = 0;
|
||||||
|
/**
|
||||||
|
* 武将牌的势力
|
||||||
|
* @type { string }
|
||||||
|
**/
|
||||||
|
group;
|
||||||
|
/**
|
||||||
|
* 武将牌的势力边框颜色(如徐庶“身在曹营心在汉”)
|
||||||
|
* @type { string }
|
||||||
|
**/
|
||||||
|
groupBorder;
|
||||||
|
/**
|
||||||
|
* 神武将牌在国战模式下的势力
|
||||||
|
* @type { string }
|
||||||
|
**/
|
||||||
|
groupInGuozhan;
|
||||||
|
/**
|
||||||
|
* 武将牌拥有的技能
|
||||||
|
* @type { string[] }
|
||||||
|
**/
|
||||||
|
skills = [];
|
||||||
|
/**
|
||||||
|
* 武将牌是否为常备主公
|
||||||
|
* @type { boolean }
|
||||||
|
**/
|
||||||
|
isZhugong = false;
|
||||||
|
/**
|
||||||
|
* 武将牌是否为隐藏武将
|
||||||
|
* @type { boolean }
|
||||||
|
**/
|
||||||
|
isUnseen = false;
|
||||||
|
/**
|
||||||
|
* 武将牌是否拥有隐匿技能
|
||||||
|
* @type { boolean }
|
||||||
|
**/
|
||||||
|
hasHiddenSkill = false;
|
||||||
|
/**
|
||||||
|
* 垃圾桶,用于存储原本Character[4]的垃圾数据
|
||||||
|
* @type { Array }
|
||||||
|
**/
|
||||||
|
trashBin = [];
|
||||||
|
/**
|
||||||
|
* 武将牌对应的另一半双面武将牌
|
||||||
|
* @type { string }
|
||||||
|
**/
|
||||||
|
dualSideCharacter;
|
||||||
|
/**
|
||||||
|
* 多势力武将牌的全部势力
|
||||||
|
* @type { Array }
|
||||||
|
**/
|
||||||
|
doubleGroup = [];
|
||||||
|
/**
|
||||||
|
* 武将牌是否为minskin
|
||||||
|
* @type { boolean }
|
||||||
|
**/
|
||||||
|
isMinskin = false;
|
||||||
|
/**
|
||||||
|
* 武将牌是否为挑战模式下的BOSS
|
||||||
|
* @type { boolean }
|
||||||
|
**/
|
||||||
|
isBoss = false;
|
||||||
|
/**
|
||||||
|
* 武将牌是否为隐藏BOSS
|
||||||
|
* @type { boolean }
|
||||||
|
**/
|
||||||
|
isHiddenBoss = false;
|
||||||
|
/**
|
||||||
|
* 武将牌是否“仅点将可用”
|
||||||
|
* @type { boolean }
|
||||||
|
**/
|
||||||
|
isAiForbidden = false;
|
||||||
|
/**
|
||||||
|
* 武将牌在炉石模式下的特殊信息
|
||||||
|
* @type { array|undefined }
|
||||||
|
**/
|
||||||
|
stoneModeData;
|
||||||
|
/**
|
||||||
|
* 武将牌是否为炉石模式下的随从
|
||||||
|
* @type { boolean }
|
||||||
|
**/
|
||||||
|
isFellowInStoneMode = false;
|
||||||
|
/**
|
||||||
|
* 武将牌是否为炉石模式下的隐藏武将
|
||||||
|
* @type { boolean }
|
||||||
|
**/
|
||||||
|
isHiddenInStoneMode = false;
|
||||||
|
/**
|
||||||
|
* 武将牌是否为炉石模式下的特殊随从(可以使用装备和法术)
|
||||||
|
* @type { boolean }
|
||||||
|
**/
|
||||||
|
isSpecialInStoneMode = false;
|
||||||
|
/**
|
||||||
|
* 武将牌是否为bossallowed
|
||||||
|
* @type { boolean }
|
||||||
|
**/
|
||||||
|
isBossAllowed = false;
|
||||||
|
/**
|
||||||
|
* 武将牌是否为战旗模式下的BOSS
|
||||||
|
* @type { boolean }
|
||||||
|
**/
|
||||||
|
isChessBoss = false;
|
||||||
|
/**
|
||||||
|
* 武将牌是否为剑阁模式下的BOSS
|
||||||
|
* @type { boolean }
|
||||||
|
**/
|
||||||
|
isJiangeBoss = false;
|
||||||
|
/**
|
||||||
|
* 武将牌是否为剑阁模式下的机械
|
||||||
|
* @type { boolean }
|
||||||
|
**/
|
||||||
|
isJiangeMech = false;
|
||||||
|
/**
|
||||||
|
* 武将牌是否在国战模式下拥有独立的皮肤
|
||||||
|
* @type { boolean }
|
||||||
|
**/
|
||||||
|
hasSkinInGuozhan = false;
|
||||||
|
/**
|
||||||
|
* 武将牌对应的全部宗族
|
||||||
|
* @type { string[] }
|
||||||
|
**/
|
||||||
|
clans = [];
|
||||||
|
/**
|
||||||
|
* 武将牌“无法享受到的主公/地主红利”
|
||||||
|
* @type { string[] }
|
||||||
|
**/
|
||||||
|
initFilters = [];
|
||||||
|
/**
|
||||||
|
* @param { Array|Object } [data]
|
||||||
|
*/
|
||||||
|
constructor(data) {
|
||||||
|
if (Array.isArray(data)) {
|
||||||
|
this.sex = data[0];
|
||||||
|
this.group = data[1];
|
||||||
|
this.hp = get.infoHp(data[2]);
|
||||||
|
this.maxHp = get.infoMaxHp(data[2]);
|
||||||
|
this.hujia = get.infoHujia(data[2]);
|
||||||
|
this.skills = get.copy(data[3] || []);
|
||||||
|
if (data[4]) Character.convertTrashToProperties(this, data[4]);
|
||||||
|
if (data[5]) this.stoneModeData = data[5];
|
||||||
|
} else if (get.is.object(data)) {
|
||||||
|
Object.assign(this, data);
|
||||||
|
if (typeof this.maxHp !== "number") this.maxHp = this.hp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @param { Character } character
|
||||||
|
* @param { Array } trash
|
||||||
|
*/
|
||||||
|
static convertTrashToProperties(character, trash) {
|
||||||
|
let keptTrashes = [],
|
||||||
|
clans = [];
|
||||||
|
for (let i = 0; i < trash.length; i++) {
|
||||||
|
let item = trash[i];
|
||||||
|
if (i === 0 && (lib.group.includes(item) || item === 'key')) {
|
||||||
|
character.groupInGuozhan = item;
|
||||||
|
} else if(item.startsWith("gzgroup:")){
|
||||||
|
character.groupInGuozhan = item.slice(8);
|
||||||
|
} else if (item === "zhu") {
|
||||||
|
character.isZhugong = true;
|
||||||
|
} else if (item === "unseen") {
|
||||||
|
character.isUnseen = true;
|
||||||
|
} else if (item === "minskin") {
|
||||||
|
character.isMinskin = true;
|
||||||
|
} else if (item === "gzskin") {
|
||||||
|
character.hasSkinInGuozhan = true;
|
||||||
|
} else if (item === "boss") {
|
||||||
|
character.isBoss = true;
|
||||||
|
} else if (item === "chessboss") {
|
||||||
|
character.isChessBoss = true;
|
||||||
|
} else if (item === "jiangeboss") {
|
||||||
|
character.isJiangeBoss = true;
|
||||||
|
} else if (item === "jiangemech") {
|
||||||
|
character.isJiangeMech = true;
|
||||||
|
} else if (item === "bossallowed") {
|
||||||
|
character.isBossAllowed = true;
|
||||||
|
} else if (item === "hiddenboss") {
|
||||||
|
character.isHiddenBoss = true;
|
||||||
|
} else if (item === "forbidai") {
|
||||||
|
character.isAiForbidden = true;
|
||||||
|
} else if (item === "stone") {
|
||||||
|
character.isFellowInStoneMode = true;
|
||||||
|
} else if (item === "stonehidden") {
|
||||||
|
character.isHiddenInStoneMode = true;
|
||||||
|
} else if (item === "stonespecial") {
|
||||||
|
character.isSpecialInStoneMode = true;
|
||||||
|
} else if (item === "hiddenSkill") {
|
||||||
|
character.hasHiddenSkill = true;
|
||||||
|
} else if (item.startsWith("border:")) {
|
||||||
|
character.groupBorder = item.slice(7);
|
||||||
|
} else if (item.startsWith("dualside:")) {
|
||||||
|
character.dualSideCharacter = item.slice(9);
|
||||||
|
} else if (item.startsWith("doublegroup:")) {
|
||||||
|
character.doubleGroup = item.slice(12).split(":");
|
||||||
|
} else if (item.startsWith("clan:")) {
|
||||||
|
clans.push(item.slice(5));
|
||||||
|
} else if (item.startsWith("InitFilter:")) {
|
||||||
|
character.initFilters = item.slice(11).split(":");
|
||||||
|
} else {
|
||||||
|
keptTrashes.push(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (clans.length > 0) character.clans = clans;
|
||||||
|
character.trashBin = keptTrashes;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
|
get 0() {
|
||||||
|
return this.sex;
|
||||||
|
}
|
||||||
|
set 0(sex) {
|
||||||
|
this.sex = sex;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
|
get 1() {
|
||||||
|
return this.group;
|
||||||
|
}
|
||||||
|
set 1(group) {
|
||||||
|
this.group = group;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
|
get 2() {
|
||||||
|
if (this.hujia > 0) return `${this.hp}/${this.maxHp}/${this.hujia}`;
|
||||||
|
else if (this.hp !== this.maxHp) return `${this.hp}/${this.maxHp}`;
|
||||||
|
return this.hp;
|
||||||
|
}
|
||||||
|
set 2(hp) {
|
||||||
|
this.hp = get.infoHp(hp);
|
||||||
|
this.maxHp = get.infoMaxHp(hp);
|
||||||
|
this.hujia = get.infoHujia(hp);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
|
get 3() {
|
||||||
|
return this.skills;
|
||||||
|
}
|
||||||
|
set 3(skills) {
|
||||||
|
this.skills = skills;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 把新格式下的数据转换回传统的屎山
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
|
get 4() {
|
||||||
|
const trashes = [],
|
||||||
|
character = this;
|
||||||
|
if (lib.group.includes(character.groupInGuozhan)) {
|
||||||
|
trashes.push(`gzgroup:${character.groupInGuozhan}`);
|
||||||
|
}
|
||||||
|
if (character.isZhugong) {
|
||||||
|
trashes.push("zhu");
|
||||||
|
}
|
||||||
|
if (character.isUnseen) {
|
||||||
|
trashes.push("unseen");
|
||||||
|
}
|
||||||
|
if (character.isMinskin) {
|
||||||
|
trashes.push("minskin");
|
||||||
|
}
|
||||||
|
if (character.hasSkinInGuozhan) {
|
||||||
|
trashes.push("gzskin");
|
||||||
|
}
|
||||||
|
if (character.isBoss) {
|
||||||
|
trashes.push("boss");
|
||||||
|
}
|
||||||
|
if (character.isChessBoss) {
|
||||||
|
trashes.push("chessboss");
|
||||||
|
}
|
||||||
|
if (character.isJiangeBoss) {
|
||||||
|
trashes.push("jiangeboss");
|
||||||
|
}
|
||||||
|
if (character.isJiangeMech) {
|
||||||
|
trashes.push("jiangemech");
|
||||||
|
}
|
||||||
|
if (character.isBossAllowed) {
|
||||||
|
trashes.push("bossallowed");
|
||||||
|
}
|
||||||
|
if (character.isHiddenBoss) {
|
||||||
|
trashes.push("hiddenboss");
|
||||||
|
}
|
||||||
|
if (character.isAiForbidden) {
|
||||||
|
trashes.push("forbidai");
|
||||||
|
}
|
||||||
|
if (character.isFellowInStoneMode) {
|
||||||
|
trashes.push("stone");
|
||||||
|
}
|
||||||
|
if (character.isHiddenInStoneMode) {
|
||||||
|
trashes.push("stonehidden");
|
||||||
|
}
|
||||||
|
if (character.isSpecialInStoneMode) {
|
||||||
|
trashes.push("stonespecial");
|
||||||
|
}
|
||||||
|
if (character.hasHiddenSkill) {
|
||||||
|
trashes.push("hiddenSkill");
|
||||||
|
}
|
||||||
|
if (character.groupBorder) {
|
||||||
|
trashes.push(`border:${character.groupBorder}`);
|
||||||
|
}
|
||||||
|
if (character.dualSideCharacter) {
|
||||||
|
trashes.push(`duaslside:${character.dualSideCharacter}`);
|
||||||
|
}
|
||||||
|
if (character.doubleGroup.length > 0) {
|
||||||
|
trashes.push(`doublegroup:${character.doubleGroup.join(":")}`);
|
||||||
|
}
|
||||||
|
if (character.clans.length > 0) {
|
||||||
|
character.clans.forEach((item) => trashes.push(`clan:${item}`));
|
||||||
|
}
|
||||||
|
if (character.initFilters.length > 0) {
|
||||||
|
trashes.push(`InitFilters:${character.initFilters.join(":")}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return trashes.concat(character.trashBin);
|
||||||
|
}
|
||||||
|
set 4(trashBin) {
|
||||||
|
console.warn("你set你🐎的废弃属性");
|
||||||
|
}
|
||||||
|
|
||||||
|
get 5(){
|
||||||
|
return this.stoneModeData;
|
||||||
|
}
|
||||||
|
set 5(stoneData){
|
||||||
|
this.stoneModeData = stoneData;
|
||||||
|
}
|
||||||
|
}
|
|
@ -131,7 +131,7 @@ export const Content = {
|
||||||
game.log(
|
game.log(
|
||||||
player,
|
player,
|
||||||
"获得了技能",
|
"获得了技能",
|
||||||
...event.addSkill.map((i) => {
|
...event.addSkill.filter(i => i in lib.translate).map((i) => {
|
||||||
return "#g【" + get.translation(i) + "】";
|
return "#g【" + get.translation(i) + "】";
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
@ -141,7 +141,7 @@ export const Content = {
|
||||||
game.log(
|
game.log(
|
||||||
player,
|
player,
|
||||||
"失去了技能",
|
"失去了技能",
|
||||||
...event.removeSkill.map((i) => {
|
...event.removeSkill.filter(i => i in lib.translate).map((i) => {
|
||||||
return "#g【" + get.translation(i) + "】";
|
return "#g【" + get.translation(i) + "】";
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
@ -2400,6 +2400,7 @@ export const Content = {
|
||||||
}
|
}
|
||||||
for (j in character[i]) {
|
for (j in character[i]) {
|
||||||
if (j == "mode" || j == "forbid" || j == "characterSort") continue;
|
if (j == "mode" || j == "forbid" || j == "characterSort") continue;
|
||||||
|
//TODO: 改掉这第二坨
|
||||||
for (k in character[i][j]) {
|
for (k in character[i][j]) {
|
||||||
if (j == "character") {
|
if (j == "character") {
|
||||||
if (!character[i][j][k][4]) {
|
if (!character[i][j][k][4]) {
|
||||||
|
|
|
@ -10,3 +10,4 @@ export { GameEventPromise } from "./gameEventPromise.js";
|
||||||
export { NodeWS } from "./nodeWS.js";
|
export { NodeWS } from "./nodeWS.js";
|
||||||
export { Player } from "./player.js";
|
export { Player } from "./player.js";
|
||||||
export { VCard } from "./vcard.js";
|
export { VCard } from "./vcard.js";
|
||||||
|
export { Character } from "./character.js"
|
||||||
|
|
|
@ -1492,27 +1492,28 @@ export class Player extends HTMLDivElement {
|
||||||
else this.markSkill("cooperation_" + reason);
|
else this.markSkill("cooperation_" + reason);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @param { string } clan 氏族名称
|
|
||||||
* @param { boolean } unseen 是否无视暗将的限制
|
* @param { boolean } unseen 是否无视暗将的限制
|
||||||
|
* @returns { string[] }
|
||||||
*/
|
*/
|
||||||
hasClan(clan, unseen) {
|
getClans(unseen){
|
||||||
|
const clans = [];
|
||||||
if (unseen || !this.isUnseen(0)) {
|
if (unseen || !this.isUnseen(0)) {
|
||||||
let info = lib.character[this.name1];
|
let info = lib.character[this.name1];
|
||||||
if (info && info[4]) {
|
if (info && info.clans) clans.addArray(info.clans);
|
||||||
for (let i of info[4]) {
|
|
||||||
if (typeof i == "string" && i.startsWith("clan:") && i.slice(5) == clan) return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (this.name2 && (unseen || !this.isUnseen(1))) {
|
if (this.name2 && (unseen || !this.isUnseen(1))) {
|
||||||
let info = lib.character[this.name2];
|
let info = lib.character[this.name2];
|
||||||
if (info && info[4]) {
|
if (info && info.clans) clans.addArray(info.clans);
|
||||||
for (let i of info[4]) {
|
|
||||||
if (typeof i == "string" && i.startsWith("clan:") && i.slice(5) == clan) return true;
|
|
||||||
}
|
}
|
||||||
|
return clans;
|
||||||
}
|
}
|
||||||
}
|
/**
|
||||||
return false;
|
* @param { string } clan 氏族名称
|
||||||
|
* @param { boolean } unseen 是否无视暗将的限制
|
||||||
|
* @returns { boolean }
|
||||||
|
*/
|
||||||
|
hasClan(clan, unseen) {
|
||||||
|
return this.getClans(unseen).includes(clan);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @param { string } skill
|
* @param { string } skill
|
||||||
|
@ -2358,17 +2359,14 @@ export class Player extends HTMLDivElement {
|
||||||
}
|
}
|
||||||
var info = lib.character[character];
|
var info = lib.character[character];
|
||||||
if (!info) {
|
if (!info) {
|
||||||
info = ["", "", 1, [], []];
|
info = get.convertedCharacter(["", "", 1, [], []]);
|
||||||
}
|
}
|
||||||
if (!info[4]) {
|
var skills = info.skills.slice(0);
|
||||||
info[4] = [];
|
|
||||||
}
|
|
||||||
var skills = info[3].slice(0);
|
|
||||||
this.clearSkills(true);
|
this.clearSkills(true);
|
||||||
|
|
||||||
var hp1 = get.infoHp(info[2]);
|
var hp1 = info.hp;
|
||||||
var maxHp1 = get.infoMaxHp(info[2]);
|
var maxHp1 = info.maxHp;
|
||||||
var hujia1 = get.infoHujia(info[2]);
|
var hujia1 = info.hujia;
|
||||||
|
|
||||||
this.name = character;
|
this.name = character;
|
||||||
this.name1 = character;
|
this.name1 = character;
|
||||||
|
@ -2377,8 +2375,8 @@ export class Player extends HTMLDivElement {
|
||||||
name: character,
|
name: character,
|
||||||
name2: character2,
|
name2: character2,
|
||||||
};
|
};
|
||||||
this.sex = info[0];
|
this.sex = info.sex;
|
||||||
this.group = info[1];
|
this.group = info.group;
|
||||||
this.hp = hp1;
|
this.hp = hp1;
|
||||||
this.maxHp = maxHp1;
|
this.maxHp = maxHp1;
|
||||||
this.hujia = hujia1;
|
this.hujia = hujia1;
|
||||||
|
@ -2389,7 +2387,7 @@ export class Player extends HTMLDivElement {
|
||||||
if (this.classList.contains("minskin") && this.node.name.querySelectorAll("br").length >= 4) {
|
if (this.classList.contains("minskin") && this.node.name.querySelectorAll("br").length >= 4) {
|
||||||
this.node.name.classList.add("long");
|
this.node.name.classList.add("long");
|
||||||
}
|
}
|
||||||
if (info[4].includes("hiddenSkill") && !this.noclick) {
|
if (info.hasHiddenSkill && !this.noclick) {
|
||||||
if (!this.hiddenSkills) this.hiddenSkills = [];
|
if (!this.hiddenSkills) this.hiddenSkills = [];
|
||||||
this.hiddenSkills.addArray(skills);
|
this.hiddenSkills.addArray(skills);
|
||||||
skills = [];
|
skills = [];
|
||||||
|
@ -2401,16 +2399,13 @@ export class Player extends HTMLDivElement {
|
||||||
if (character2 && lib.character[character2]) {
|
if (character2 && lib.character[character2]) {
|
||||||
var info2 = lib.character[character2];
|
var info2 = lib.character[character2];
|
||||||
if (!info2) {
|
if (!info2) {
|
||||||
info2 = ["", "", 1, [], []];
|
info2 = get.convertedCharacter(["", "", 1, [], []]);
|
||||||
}
|
|
||||||
if (!info2[4]) {
|
|
||||||
info2[4] = [];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.name2 = character2;
|
this.name2 = character2;
|
||||||
var hp2 = get.infoHp(info2[2]);
|
var hp2 = info2.hp;
|
||||||
var maxHp2 = get.infoMaxHp(info2[2]);
|
var maxHp2 = info2.maxHp;
|
||||||
var hujia2 = get.infoHujia(info2[2]);
|
var hujia2 = info2.hujia;
|
||||||
this.hujia += hujia2;
|
this.hujia += hujia2;
|
||||||
var double_hp;
|
var double_hp;
|
||||||
if (_status.connectMode || get.mode() == "single") {
|
if (_status.connectMode || get.mode() == "single") {
|
||||||
|
@ -2445,12 +2440,12 @@ export class Player extends HTMLDivElement {
|
||||||
this.hp = hp1 + hp2 - 3;
|
this.hp = hp1 + hp2 - 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (info2[4].includes("hiddenSkill") && !this.noclick) {
|
if (info2.hasHiddenSkill && !this.noclick) {
|
||||||
if (!this.hiddenSkills) this.hiddenSkills = [];
|
if (!this.hiddenSkills) this.hiddenSkills = [];
|
||||||
this.hiddenSkills.addArray(info2[3]);
|
this.hiddenSkills.addArray(info2.skills);
|
||||||
hidden = true;
|
hidden = true;
|
||||||
skills.add("g_hidden_ai");
|
skills.add("g_hidden_ai");
|
||||||
} else skills = skills.concat(info2[3]);
|
} else skills = skills.concat(info2.skills);
|
||||||
}
|
}
|
||||||
if (this.storage.nohp || hidden) {
|
if (this.storage.nohp || hidden) {
|
||||||
this.storage.rawHp = this.hp;
|
this.storage.rawHp = this.hp;
|
||||||
|
@ -2493,18 +2488,15 @@ export class Player extends HTMLDivElement {
|
||||||
this.classList.add("fullskin");
|
this.classList.add("fullskin");
|
||||||
var info = lib.character[character];
|
var info = lib.character[character];
|
||||||
if (!info) {
|
if (!info) {
|
||||||
info = ["", "", 1, [], []];
|
info = get.convertedCharacter(["", "", 1, [], []]);
|
||||||
}
|
|
||||||
if (!info[4]) {
|
|
||||||
info[4] = [];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!game.minskin && get.is.newLayout() && !info[4].includes("minskin")) {
|
if (!game.minskin && get.is.newLayout() && !info.isMinskin) {
|
||||||
this.classList.remove("minskin");
|
this.classList.remove("minskin");
|
||||||
this.node.avatar.setBackground(character, "character");
|
this.node.avatar.setBackground(character, "character");
|
||||||
} else {
|
} else {
|
||||||
this.node.avatar.setBackground(character, "character");
|
this.node.avatar.setBackground(character, "character");
|
||||||
if (info[4].includes("minskin")) {
|
if (info.isMinskin) {
|
||||||
this.classList.add("minskin");
|
this.classList.add("minskin");
|
||||||
} else if (game.minskin) {
|
} else if (game.minskin) {
|
||||||
this.classList.add("minskin");
|
this.classList.add("minskin");
|
||||||
|
@ -2524,7 +2516,7 @@ export class Player extends HTMLDivElement {
|
||||||
if (this.classList.contains("minskin") && this.node.name.querySelectorAll("br").length >= 4) {
|
if (this.classList.contains("minskin") && this.node.name.querySelectorAll("br").length >= 4) {
|
||||||
this.node.name.classList.add("long");
|
this.node.name.classList.add("long");
|
||||||
}
|
}
|
||||||
if (info[4].includes("hiddenSkill") && !this.noclick) {
|
if (info.hasHiddenSkill && !this.noclick) {
|
||||||
if (!_status.video && get.mode() != "guozhan") this.classList.add("unseen_show");
|
if (!_status.video && get.mode() != "guozhan") this.classList.add("unseen_show");
|
||||||
this.classList.add(_status.video ? "unseen_v" : "unseen");
|
this.classList.add(_status.video ? "unseen_v" : "unseen");
|
||||||
if (!this.node.name_seat && !_status.video) {
|
if (!this.node.name_seat && !_status.video) {
|
||||||
|
@ -2539,10 +2531,7 @@ export class Player extends HTMLDivElement {
|
||||||
if (character2 && lib.character[character2]) {
|
if (character2 && lib.character[character2]) {
|
||||||
var info2 = lib.character[character2];
|
var info2 = lib.character[character2];
|
||||||
if (!info2) {
|
if (!info2) {
|
||||||
info2 = ["", "", 1, [], []];
|
info2 = get.convertedCharacter(["", "", 1, [], []]);
|
||||||
}
|
|
||||||
if (!info2[4]) {
|
|
||||||
info2[4] = [];
|
|
||||||
}
|
}
|
||||||
this.classList.add("fullskin2");
|
this.classList.add("fullskin2");
|
||||||
this.node.avatar2.setBackground(character2, "character");
|
this.node.avatar2.setBackground(character2, "character");
|
||||||
|
@ -2550,7 +2539,7 @@ export class Player extends HTMLDivElement {
|
||||||
this.name2 = character2;
|
this.name2 = character2;
|
||||||
|
|
||||||
this.node.count.classList.add("p2");
|
this.node.count.classList.add("p2");
|
||||||
if (info2[4].includes("hiddenSkill") && !this.noclick) {
|
if (info2.hasHiddenSkill && !this.noclick) {
|
||||||
if (!_status.video && get.mode() != "guozhan") this.classList.add("unseen2_show");
|
if (!_status.video && get.mode() != "guozhan") this.classList.add("unseen2_show");
|
||||||
this.classList.add(_status.video ? "unseen2_v" : "unseen2");
|
this.classList.add(_status.video ? "unseen2_v" : "unseen2");
|
||||||
}
|
}
|
||||||
|
@ -2573,6 +2562,7 @@ export class Player extends HTMLDivElement {
|
||||||
* @param { string } character
|
* @param { string } character
|
||||||
*/
|
*/
|
||||||
changeSkin(map, character) {
|
changeSkin(map, character) {
|
||||||
|
//TODO: 这一坨改不动了 谁爱改谁改
|
||||||
if (!map || !character) {
|
if (!map || !character) {
|
||||||
console.warn("error: no sourceMap or character to changeSkin", get.translation(this));
|
console.warn("error: no sourceMap or character to changeSkin", get.translation(this));
|
||||||
return;
|
return;
|
||||||
|
@ -7608,6 +7598,7 @@ export class Player extends HTMLDivElement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
game.broadcastAll(
|
game.broadcastAll(
|
||||||
|
//TODO: 这里直接修改trashBin部分,后续需要修改为新写法
|
||||||
function (player, skill, cfg) {
|
function (player, skill, cfg) {
|
||||||
lib.skill[skill] = {
|
lib.skill[skill] = {
|
||||||
intro: {
|
intro: {
|
||||||
|
@ -7623,9 +7614,9 @@ export class Player extends HTMLDivElement {
|
||||||
if (Array.isArray(cfg.image)) {
|
if (Array.isArray(cfg.image)) {
|
||||||
cfg.image.forEach((image) => lib.character[skill][4].push(image));
|
cfg.image.forEach((image) => lib.character[skill][4].push(image));
|
||||||
} else if (typeof cfg.image == "string") {
|
} else if (typeof cfg.image == "string") {
|
||||||
lib.character[skill][4].push(cfg.image);
|
lib.character[skill].trashBin.push(cfg.image);
|
||||||
} else {
|
} else {
|
||||||
lib.character[skill][4].push("character:" + cfg.name);
|
lib.character[skill].trashBin.push("character:" + cfg.name);
|
||||||
}
|
}
|
||||||
lib.translate[skill] = cfg.caption || get.rawName(cfg.name);
|
lib.translate[skill] = cfg.caption || get.rawName(cfg.name);
|
||||||
player.storage[skill] = cfg;
|
player.storage[skill] = cfg;
|
||||||
|
@ -9312,7 +9303,7 @@ export class Player extends HTMLDivElement {
|
||||||
const player = this;
|
const player = this;
|
||||||
for (const name of [player.name, player.name1, player.name2]) {
|
for (const name of [player.name, player.name1, player.name2]) {
|
||||||
if (name && lib.character[name]) {
|
if (name && lib.character[name]) {
|
||||||
const filter = get.characterInitFilter(name);
|
const filter = lib.character[name].initFilters;
|
||||||
if (!filter.includes(tag)) continue;
|
if (!filter.includes(tag)) continue;
|
||||||
if (lib.characterInitFilter[name] && lib.characterInitFilter[name](tag) === false) continue;
|
if (lib.characterInitFilter[name] && lib.characterInitFilter[name](tag) === false) continue;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1170,8 +1170,7 @@ export class Library {
|
||||||
unfrequent: true,
|
unfrequent: true,
|
||||||
item: {},
|
item: {},
|
||||||
intro: () =>
|
intro: () =>
|
||||||
`获取在线扩展时的地址。当前地址:${document.createElement("br").outerHTML}${
|
`获取在线扩展时的地址。当前地址:${document.createElement("br").outerHTML}${lib.config.extension_sources[lib.config.extension_source]
|
||||||
lib.config.extension_sources[lib.config.extension_source]
|
|
||||||
}`,
|
}`,
|
||||||
},
|
},
|
||||||
extension_create: {
|
extension_create: {
|
||||||
|
@ -10108,6 +10107,7 @@ export class Library {
|
||||||
Control: Element.Control,
|
Control: Element.Control,
|
||||||
Client: Element.Client,
|
Client: Element.Client,
|
||||||
NodeWS: Element.NodeWS,
|
NodeWS: Element.NodeWS,
|
||||||
|
Character: Element.Character,
|
||||||
ws: {
|
ws: {
|
||||||
onopen: function () {
|
onopen: function () {
|
||||||
if (_status.connectCallback) {
|
if (_status.connectCallback) {
|
||||||
|
@ -10213,6 +10213,12 @@ export class Library {
|
||||||
get nodews() {
|
get nodews() {
|
||||||
return this.NodeWS.prototype;
|
return this.NodeWS.prototype;
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* @legacy Use {@link lib.element.Character.prototype} instead.
|
||||||
|
*/
|
||||||
|
get character() {
|
||||||
|
return this.Character.prototype;
|
||||||
|
},
|
||||||
};
|
};
|
||||||
card = {
|
card = {
|
||||||
/**
|
/**
|
||||||
|
@ -10525,9 +10531,9 @@ export class Library {
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
characterDisabled: function (i, libCharacter) {
|
characterDisabled: function (i, libCharacter) {
|
||||||
if (!lib.character[i] || (lib.character[i][4] && lib.character[i][4].includes("forbidai")))
|
if (!lib.character[i] || lib.character[i].isAiForbidden)
|
||||||
return true;
|
return true;
|
||||||
if (lib.character[i][4] && lib.character[i][4].includes("unseen")) return true;
|
if (lib.character[i].isUnseen) return true;
|
||||||
if (lib.config.forbidai.includes(i)) return true;
|
if (lib.config.forbidai.includes(i)) return true;
|
||||||
if (lib.characterFilter[i] && !lib.characterFilter[i](get.mode())) return true;
|
if (lib.characterFilter[i] && !lib.characterFilter[i](get.mode())) return true;
|
||||||
if (_status.connectMode) {
|
if (_status.connectMode) {
|
||||||
|
@ -10596,11 +10602,11 @@ export class Library {
|
||||||
var info = lib.character[i];
|
var info = lib.character[i];
|
||||||
if (!info) return true;
|
if (!info) return true;
|
||||||
if (info[4]) {
|
if (info[4]) {
|
||||||
if (info[4].includes("boss")) return true;
|
if (info.isBoss) return true;
|
||||||
if (info[4].includes("hiddenboss")) return true;
|
if (info.isHiddenBoss) return true;
|
||||||
if (info[4].includes("minskin")) return true;
|
if (info.isMinskin) return true;
|
||||||
if (info[4].includes("unseen")) return true;
|
if (info.isUnseen) return true;
|
||||||
if (info[4].includes("forbidai") && (!_status.event.isMine || !_status.event.isMine()))
|
if (info.isAiForbidden && (!_status.event.isMine || !_status.event.isMine()))
|
||||||
return true;
|
return true;
|
||||||
if (lib.characterFilter[i] && !lib.characterFilter[i](get.mode())) return true;
|
if (lib.characterFilter[i] && !lib.characterFilter[i](get.mode())) return true;
|
||||||
}
|
}
|
||||||
|
@ -11132,8 +11138,7 @@ export class Library {
|
||||||
content: (storage, player) => {
|
content: (storage, player) => {
|
||||||
const stratagemFuryMax = _status.stratagemFuryMax,
|
const stratagemFuryMax = _status.stratagemFuryMax,
|
||||||
fury = storage || 0;
|
fury = storage || 0;
|
||||||
return `当前怒气值:${
|
return `当前怒气值:${typeof stratagemFuryMax == "number" ? `${fury}/${stratagemFuryMax}` : fury
|
||||||
typeof stratagemFuryMax == "number" ? `${fury}/${stratagemFuryMax}` : fury
|
|
||||||
}`;
|
}`;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -11288,8 +11293,7 @@ export class Library {
|
||||||
)}点怒气。${prompt()}`;
|
)}点怒气。${prompt()}`;
|
||||||
span.appendChild(li);
|
span.appendChild(li);
|
||||||
});
|
});
|
||||||
return `当你需要使用位于“强化表”内的非虚拟卡牌时,你可以消耗对应数量的怒气将其强化并使用。${
|
return `当你需要使用位于“强化表”内的非虚拟卡牌时,你可以消耗对应数量的怒气将其强化并使用。${document.createElement("hr").outerHTML
|
||||||
document.createElement("hr").outerHTML
|
|
||||||
}${span.outerHTML}`;
|
}${span.outerHTML}`;
|
||||||
},
|
},
|
||||||
onuse: (result, player) => {
|
onuse: (result, player) => {
|
||||||
|
@ -12209,22 +12213,19 @@ export class Library {
|
||||||
trigger: { global: "gameStart", player: "enterGame" },
|
trigger: { global: "gameStart", player: "enterGame" },
|
||||||
silent: true,
|
silent: true,
|
||||||
content: function () {
|
content: function () {
|
||||||
var list = [player.name, player.name1, player.name2];
|
var list = [player.name1, player.name2];
|
||||||
for (var i = 0; i < list.length; i++) {
|
for (var i = 0; i < list.length; i++) {
|
||||||
if (list[i] && lib.character[list[i]]) {
|
if (list[i] && lib.character[list[i]]) {
|
||||||
var info = lib.character[list[i]];
|
var info = lib.character[list[i]];
|
||||||
if (info[3].includes("dualside") && info[4]) {
|
if (info.skills.includes("dualside") && info.dualSideCharacter) {
|
||||||
player.storage.dualside = [list[i], player.hp, player.maxHp];
|
player.storage.dualside = [list[i], player.hp, player.maxHp];
|
||||||
for (var j = 0; j < info[4].length; j++) {
|
var name2 = info.dualSideCharacter;
|
||||||
if (info[4][j].startsWith("dualside:")) {
|
|
||||||
var name2 = info[4][j].slice(9);
|
|
||||||
var info2 = lib.character[name2];
|
var info2 = lib.character[name2];
|
||||||
player.storage.dualside.push(name2);
|
player.storage.dualside.push(name2);
|
||||||
player.storage.dualside.push(get.infoHp(info2[2]));
|
player.storage.dualside.push(info2.hp);
|
||||||
player.storage.dualside.push(get.infoMaxHp(info2[2]));
|
player.storage.dualside.push(info2.maxHp);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var cfg = player.storage.dualside;
|
var cfg = player.storage.dualside;
|
||||||
|
@ -12771,7 +12772,11 @@ export class Library {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
character = {};
|
character = new Proxy({}, {
|
||||||
|
set(target, prop, newValue) {
|
||||||
|
return Reflect.set(target, prop, get.convertedCharacter(newValue));
|
||||||
|
}
|
||||||
|
});
|
||||||
perfectPair = {};
|
perfectPair = {};
|
||||||
cardPile = {};
|
cardPile = {};
|
||||||
message = {
|
message = {
|
||||||
|
|
|
@ -347,7 +347,7 @@ export class Click {
|
||||||
uiintro.listen(function () {
|
uiintro.listen(function () {
|
||||||
_status.clicked = true;
|
_status.clicked = true;
|
||||||
});
|
});
|
||||||
uiintro.style.zIndex = 21;
|
uiintro.style.zIndex = "21";
|
||||||
uiintro.classList.add("popped");
|
uiintro.classList.add("popped");
|
||||||
uiintro.classList.add("static");
|
uiintro.classList.add("static");
|
||||||
uiintro.classList.add("onlineclient");
|
uiintro.classList.add("onlineclient");
|
||||||
|
@ -3186,7 +3186,7 @@ export class Click {
|
||||||
delete lib.config.skin[nameskin];
|
delete lib.config.skin[nameskin];
|
||||||
if (
|
if (
|
||||||
gzbool &&
|
gzbool &&
|
||||||
lib.character[nameskin2][4].includes("gzskin") &&
|
lib.character[nameskin2].hasSkinInGuozhan &&
|
||||||
lib.config.mode_config.guozhan.guozhanSkin
|
lib.config.mode_config.guozhan.guozhanSkin
|
||||||
) {
|
) {
|
||||||
bg.setBackground(nameskin2, "character");
|
bg.setBackground(nameskin2, "character");
|
||||||
|
@ -3206,7 +3206,7 @@ export class Click {
|
||||||
} else {
|
} else {
|
||||||
if (
|
if (
|
||||||
gzbool &&
|
gzbool &&
|
||||||
lib.character[nameskin2][4].includes("gzskin") &&
|
lib.character[nameskin2].hasSkinInGuozhan &&
|
||||||
lib.config.mode_config.guozhan.guozhanSkin
|
lib.config.mode_config.guozhan.guozhanSkin
|
||||||
)
|
)
|
||||||
button.setBackground(nameskin2, "character", "noskin");
|
button.setBackground(nameskin2, "character", "noskin");
|
||||||
|
@ -3483,6 +3483,7 @@ export class Click {
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
// 样式一
|
// 样式一
|
||||||
|
//TODO: 这里的数据也暂时没有改成新格式,需要后续的修改
|
||||||
const introduction = ui.create.div(".characterintro", uiintro),
|
const introduction = ui.create.div(".characterintro", uiintro),
|
||||||
showCharacterNamePinyin = lib.config.show_characternamepinyin;
|
showCharacterNamePinyin = lib.config.show_characternamepinyin;
|
||||||
if (showCharacterNamePinyin != "doNotShow") {
|
if (showCharacterNamePinyin != "doNotShow") {
|
||||||
|
@ -3490,7 +3491,7 @@ export class Click {
|
||||||
span = document.createElement("span");
|
span = document.createElement("span");
|
||||||
span.style.fontWeight = "bold";
|
span.style.fontWeight = "bold";
|
||||||
const nameInfo = get.character(name),
|
const nameInfo = get.character(name),
|
||||||
exInfo = nameInfo[4],
|
exInfo = nameInfo.trashBin,
|
||||||
characterName =
|
characterName =
|
||||||
exInfo && exInfo.includes("ruby") ? lib.translate[name] : get.rawName2(name);
|
exInfo && exInfo.includes("ruby") ? lib.translate[name] : get.rawName2(name);
|
||||||
span.innerHTML = characterName;
|
span.innerHTML = characterName;
|
||||||
|
|
|
@ -1127,16 +1127,16 @@ export class Create {
|
||||||
characterDialog2(filter) {
|
characterDialog2(filter) {
|
||||||
var list = [];
|
var list = [];
|
||||||
for (var i in lib.character) {
|
for (var i in lib.character) {
|
||||||
if (lib.character[i][4].includes("minskin")) continue;
|
if (lib.character[i].isMinskin) continue;
|
||||||
if (
|
if (
|
||||||
lib.character[i][4].includes("boss") ||
|
lib.character[i].isBoss ||
|
||||||
lib.character[i][4].includes("hiddenboss")
|
lib.character[i].isHiddenBoss
|
||||||
) {
|
) {
|
||||||
if (lib.config.mode == "boss") continue;
|
if (lib.config.mode == "boss") continue;
|
||||||
if (!lib.character[i][4].includes("bossallowed")) continue;
|
if (!lib.character[i].isBossAllowed) continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lib.character[i][4].includes("stonehidden")) continue;
|
if (lib.character[i].isHiddenInStoneMode) continue;
|
||||||
if (lib.config.banned.includes(i)) continue;
|
if (lib.config.banned.includes(i)) continue;
|
||||||
if (filter && filter(i)) continue;
|
if (filter && filter(i)) continue;
|
||||||
list.push(i);
|
list.push(i);
|
||||||
|
@ -1306,17 +1306,17 @@ export class Create {
|
||||||
} else {
|
} else {
|
||||||
for (var i in lib.character) {
|
for (var i in lib.character) {
|
||||||
if(lib.character[i][4]) {
|
if(lib.character[i][4]) {
|
||||||
if (lib.character[i][4].includes("minskin")) continue;
|
if (lib.character[i].isMinskin) continue;
|
||||||
if (
|
if (
|
||||||
lib.character[i][4].includes("boss") ||
|
lib.character[i].isBoss ||
|
||||||
lib.character[i][4].includes("hiddenboss")
|
lib.character[i].isHiddenBoss
|
||||||
) {
|
) {
|
||||||
if (lib.config.mode == "boss") continue;
|
if (lib.config.mode == "boss") continue;
|
||||||
if (!lib.character[i][4].includes("bossallowed")) continue;
|
if (!lib.character[i].isBossAllowed) continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lib.character[i][4].includes("stonehidden")) continue;
|
if (lib.character[i].isHiddenInStoneMode) continue;
|
||||||
if (lib.character[i][4].includes("unseen")) continue;
|
if (lib.character[i].isUnseen) continue;
|
||||||
}
|
}
|
||||||
if (lib.config.banned.includes(i)) continue;
|
if (lib.config.banned.includes(i)) continue;
|
||||||
if (
|
if (
|
||||||
|
|
|
@ -159,18 +159,19 @@ export const characterPackMenu = function (connectMenu) {
|
||||||
var alterableCharacters = [];
|
var alterableCharacters = [];
|
||||||
var charactersToAlter = [];
|
var charactersToAlter = [];
|
||||||
for (var i in _info) {
|
for (var i in _info) {
|
||||||
if (_info[i][4] && _info[i][4].includes("unseen")) continue;
|
const characterInfo = get.convertedCharacter( _info[i]);
|
||||||
|
if (characterInfo.isUnseen) continue;
|
||||||
if (connectMenu && lib.connectBanned.includes(i)) continue;
|
if (connectMenu && lib.connectBanned.includes(i)) continue;
|
||||||
list.push(i);
|
list.push(i);
|
||||||
if (boolAI && !lib.config.forbidai_user.includes(i)) boolAI = false;
|
if (boolAI && !lib.config.forbidai_user.includes(i)) boolAI = false;
|
||||||
for (var j = 0; j < _info[i][3].length; j++) {
|
for (var j = 0; j < characterInfo.skills.length; j++) {
|
||||||
if (!lib.skill[_info[i][3][j]]) {
|
if (!lib.skill[characterInfo.skills[j]]) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (lib.skill[_info[i][3][j]].alter) {
|
if (lib.skill[characterInfo.skills[j]].alter) {
|
||||||
alterableSkills.add(_info[i][3][j]);
|
alterableSkills.add(characterInfo.skills[j]);
|
||||||
alterableCharacters.add(i);
|
alterableCharacters.add(i);
|
||||||
if (lib.config.vintageSkills.includes(_info[i][3][j])) {
|
if (lib.config.vintageSkills.includes(characterInfo.skills[j])) {
|
||||||
charactersToAlter.add(i);
|
charactersToAlter.add(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -370,6 +370,7 @@ export const extensionMenu = function (connectMenu) {
|
||||||
",package:" +
|
",package:" +
|
||||||
get.stringify({
|
get.stringify({
|
||||||
//替换die audio,加上扩展名
|
//替换die audio,加上扩展名
|
||||||
|
//TODO: 创建扩展这部分更是重量级
|
||||||
character: ((pack) => {
|
character: ((pack) => {
|
||||||
var character = pack.character;
|
var character = pack.character;
|
||||||
for (var key in character) {
|
for (var key in character) {
|
||||||
|
|
Loading…
Reference in New Issue