Merge branch 'PR-Branch' of https://github.com/libccy/noname into dev
This commit is contained in:
commit
ab83ac028a
|
@ -1,105 +1,107 @@
|
|||
import { lib, game, ui, get, ai, _status } from "../../noname.js";
|
||||
|
||||
const cards = {
|
||||
kano_paibingbuzhen: {
|
||||
fullskin: true,
|
||||
type: "trick",
|
||||
enable: true,
|
||||
filterTarget: true,
|
||||
selectTarget: [1, 3],
|
||||
derivation: "key_kano",
|
||||
content() {
|
||||
"step 0";
|
||||
target.draw();
|
||||
"step 1";
|
||||
var hs = target.getCards("he");
|
||||
if (!hs.length) event.finish();
|
||||
else if (hs.length == 1) event._result = { bool: true, cards: hs };
|
||||
else target.chooseCard("he", true, "选择一张牌置入仁库");
|
||||
"step 2";
|
||||
if (result.bool) {
|
||||
var card = result.cards[0];
|
||||
target.$throw(card, 1000);
|
||||
target.lose(card, "toRenku");
|
||||
}
|
||||
},
|
||||
contentAfter() {
|
||||
if (
|
||||
player.isIn() &&
|
||||
_status.renku.length &&
|
||||
(function () {
|
||||
var cards = _status.renku;
|
||||
if (cards.length == 1) return true;
|
||||
var color = get.color(cards[0], false),
|
||||
type = get.type(cards[0], false);
|
||||
for (var i = 1; i < cards.length; i++) {
|
||||
if (color && get.color(cards[i], false) != color) color = false;
|
||||
if (type && get.type(cards[i], false) != type) type = false;
|
||||
if (!color && !type) return false;
|
||||
}
|
||||
return true;
|
||||
})()
|
||||
)
|
||||
player.draw();
|
||||
},
|
||||
ai: {
|
||||
order: 1,
|
||||
result: {
|
||||
player(player, target) {
|
||||
if (player.hasSkill("kano_poyu")) return 2;
|
||||
return 0;
|
||||
},
|
||||
target: 0.1,
|
||||
},
|
||||
},
|
||||
},
|
||||
kamome_suitcase: {
|
||||
fullskin: true,
|
||||
type: "equip",
|
||||
subtype: "equip5",
|
||||
derivation: "key_kamome",
|
||||
skills: ["kamome_suitcase"],
|
||||
ai: {
|
||||
equipValue(card) {
|
||||
return 7;
|
||||
},
|
||||
basic: {
|
||||
equipValue: 7,
|
||||
},
|
||||
},
|
||||
},
|
||||
miki_hydrogladiator: {
|
||||
fullskin: true,
|
||||
type: "equip",
|
||||
subtype: "equip1",
|
||||
derivation: "key_miki",
|
||||
skills: ["miki_hydrogladiator_skill"],
|
||||
distance: {
|
||||
attackFrom: -5,
|
||||
},
|
||||
ai: {
|
||||
equipValue(card) {
|
||||
return 7;
|
||||
},
|
||||
basic: {
|
||||
equipValue: 7,
|
||||
},
|
||||
},
|
||||
},
|
||||
miki_binoculars: {
|
||||
fullskin: true,
|
||||
type: "equip",
|
||||
subtype: "equip5",
|
||||
derivation: "key_miki",
|
||||
skills: ["miki_binoculars"],
|
||||
ai: {
|
||||
equipValue(card) {
|
||||
return 7;
|
||||
},
|
||||
basic: {
|
||||
equipValue: 7,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
kano_paibingbuzhen: {
|
||||
fullskin: true,
|
||||
type: "trick",
|
||||
enable: true,
|
||||
filterTarget: true,
|
||||
selectTarget: [1, 3],
|
||||
derivation: "key_kano",
|
||||
content() {
|
||||
"step 0";
|
||||
target.draw();
|
||||
("step 1");
|
||||
var hs = target.getCards("he");
|
||||
if (!hs.length) event.finish();
|
||||
else if (hs.length == 1) event._result = { bool: true, cards: hs };
|
||||
else target.chooseCard("he", true, "选择一张牌置入仁库");
|
||||
("step 2");
|
||||
if (result.bool) {
|
||||
var card = result.cards[0];
|
||||
target.$throw(card, 1000);
|
||||
target.lose(card, "toRenku");
|
||||
}
|
||||
},
|
||||
contentAfter() {
|
||||
if (
|
||||
player.isIn() &&
|
||||
_status.renku.length &&
|
||||
(function () {
|
||||
var cards = _status.renku;
|
||||
if (cards.length == 1) return true;
|
||||
var color = get.color(cards[0], false),
|
||||
type = get.type(cards[0], false);
|
||||
for (var i = 1; i < cards.length; i++) {
|
||||
if (color && get.color(cards[i], false) != color)
|
||||
color = false;
|
||||
if (type && get.type(cards[i], false) != type)
|
||||
type = false;
|
||||
if (!color && !type) return false;
|
||||
}
|
||||
return true;
|
||||
})()
|
||||
)
|
||||
player.draw();
|
||||
},
|
||||
ai: {
|
||||
order: 1,
|
||||
result: {
|
||||
player(player, target) {
|
||||
if (player.hasSkill("kano_poyu")) return 2;
|
||||
return 0;
|
||||
},
|
||||
target: 0.1,
|
||||
},
|
||||
},
|
||||
},
|
||||
kamome_suitcase: {
|
||||
fullskin: true,
|
||||
type: "equip",
|
||||
subtype: "equip5",
|
||||
derivation: "key_kamome",
|
||||
skills: ["kamome_suitcase"],
|
||||
ai: {
|
||||
equipValue(card) {
|
||||
return 7;
|
||||
},
|
||||
basic: {
|
||||
equipValue: 7,
|
||||
},
|
||||
},
|
||||
},
|
||||
miki_hydrogladiator: {
|
||||
fullskin: true,
|
||||
type: "equip",
|
||||
subtype: "equip1",
|
||||
derivation: "key_miki",
|
||||
skills: ["miki_hydrogladiator_skill"],
|
||||
distance: {
|
||||
attackFrom: -5,
|
||||
},
|
||||
ai: {
|
||||
equipValue(card) {
|
||||
return 7;
|
||||
},
|
||||
basic: {
|
||||
equipValue: 7,
|
||||
},
|
||||
},
|
||||
},
|
||||
miki_binoculars: {
|
||||
fullskin: true,
|
||||
type: "equip",
|
||||
subtype: "equip5",
|
||||
derivation: "key_miki",
|
||||
skills: ["miki_binoculars"],
|
||||
ai: {
|
||||
equipValue(card) {
|
||||
return 7;
|
||||
},
|
||||
basic: {
|
||||
equipValue: 7,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
export default cards;
|
|
@ -1,86 +1,448 @@
|
|||
const characters = {
|
||||
sp_key_yuri: ["female", "qun", 4, ["mubing", "ziqu", "diaoling"], ["border:key"]],
|
||||
key_lucia: ["female", "key", "2/3", ["lucia_duqu", "lucia_zhenren"]],
|
||||
key_kyousuke: ["male", "key", 4, ["nk_shekong", "key_huanjie"]],
|
||||
key_yuri: ["female", "key", 3, ["yuri_xingdong", "key_huanjie", "yuri_wangxi"], ["zhu"]],
|
||||
key_haruko: ["female", "key", 4, ["haruko_haofang", "haruko_zhuishi"]],
|
||||
key_umi: ["female", "key", 3, ["umi_chaofan", "umi_lunhui", "umi_qihuan"]],
|
||||
key_umi2: ["female", "key", 3, [], ["unseen"]],
|
||||
key_rei: ["male", "key", 4, ["xiandeng", "shulv", "xisheng"]],
|
||||
key_komari: ["female", "key", 3, ["komari_tiankou", "komari_xueshang"]],
|
||||
key_yukine: ["female", "key", 3, ["yukine_wenzhou"]],
|
||||
key_yusa: ["female", "key", 3, ["yusa_yanyi", "yusa_misa", "dualside"], ["dualside:key_misa"]],
|
||||
key_misa: ["female", "key", 3, ["misa_yehuo", "misa_yusa", "dualside"], ["unseen"]],
|
||||
key_masato: ["male", "key", "4/8", ["masato_baoquan"]],
|
||||
key_iwasawa: ["female", "key", 3, ["iwasawa_yinhang", "iwasawa_mysong"]],
|
||||
key_kengo: ["male", "key", 4, ["kengo_weishang", "kengo_guidui"]],
|
||||
key_yoshino: ["male", "key", 4, ["yoshino_jueyi"]],
|
||||
key_yui: ["female", "key", 3, ["yui_jiang", "yui_lieyin", "yui_takaramono"]],
|
||||
key_tsumugi: ["female", "key", 3, ["tsumugi_mugyu", "tsumugi_huilang"]],
|
||||
key_saya: ["female", "key", 3, ["saya_shouji", "saya_powei"]],
|
||||
key_harukakanata: ["female", "key", 3, ["haruka_shuangche"]],
|
||||
key_inari: ["female", "key", 2, ["inari_baiwei", "inari_huhun"]],
|
||||
key_shiina: ["female", "key", 3, ["shiina_qingshen", "shiina_feiyan"]],
|
||||
key_sunohara: [
|
||||
"double",
|
||||
"key",
|
||||
"3/3/2",
|
||||
["sunohara_chengshuang", "sunohara_tiaoyin", "sunohara_jianren"],
|
||||
],
|
||||
key_rin: ["female", "key", 3, ["rin_baoqiu"]],
|
||||
key_sasami: ["female", "key", 3, ["sasami_miaobian"]],
|
||||
key_akane: ["female", "key", 3, ["akane_jugu", "akane_quanqing", "akane_yifu"], ["zhu"]],
|
||||
key_doruji: ["female", "key", 16, ["doruji_feiqu"]],
|
||||
key_yuiko: ["female", "key", 3, ["yuiko_fenglun", "yuiko_dilve"]],
|
||||
key_riki: ["double", "key", 3, ["riki_spwenji", "riki_nvzhuang", "riki_mengzhong"]],
|
||||
key_hisako: ["female", "key", 3, ["hisako_yinbao", "hisako_zhuanyun"]],
|
||||
key_hinata: ["male", "key", 4, ["hinata_qiulve", "hinata_ehou"]],
|
||||
key_noda: ["male", "key", 4, ["noda_fengcheng", "noda_xunxin"]],
|
||||
key_tomoya: ["male", "key", 4, ["tomoya_shangxian", "tomoya_wangjin"]],
|
||||
key_nagisa: ["female", "key", 3, ["nagisa_tiandu", "nagisa_fuxin"]],
|
||||
key_ayato: ["male", "key", 3, ["ayato_jianshen", "ayato_zonghuan"]],
|
||||
key_ao: ["female", "key", 3, ["ao_xishi", "ao_kuihun", "ao_shixin"]],
|
||||
key_yuzuru: ["male", "key", 5, ["yuzuru_wuxin", "yuzuru_deyi"]],
|
||||
sp_key_kanade: ["female", "key", 3, ["kanade_mapo", "kanade_benzhan"]],
|
||||
key_mio: ["female", "key", 3, ["mio_tuifu", "mio_tishen"]],
|
||||
key_midori: ["female", "key", 3, ["midori_nonghuan", "midori_tishen"]],
|
||||
key_kyoko: ["female", "key", 3, ["kyoko_juwu", "kyoko_zhengyi"]],
|
||||
key_shizuru: ["female", "key", 3, ["shizuru_nianli", "shizuru_benzhan"]],
|
||||
key_shiorimiyuki: ["female", "key", 3, ["shiorimiyuki_banyin", "shiorimiyuki_tingxian"]],
|
||||
key_miki: ["female", "key", 3, ["miki_shenqiang", "miki_huanmeng", "miki_zhiluo"]],
|
||||
key_shiori: ["female", "key", "2/3", ["shiori_huijuan"]],
|
||||
key_kaori: ["female", "key", "3/4", ["kaori_siyuan"]],
|
||||
key_akiko: ["female", "key", 3, ["akiko_dongcha"]],
|
||||
key_abyusa: ["female", "key", 3, ["abyusa_jueqing", "abyusa_dunying"]],
|
||||
key_godan: ["male", "key", 6, ["godan_yuanyi", "godan_feiqu", "godan_xiaoyuan"]],
|
||||
key_yuu: ["male", "key", 3, ["yuu_lveduo"]],
|
||||
key_ryoichi: ["male", "key", 4, ["ryoichi_baoyi", "ryoichi_tuipi"]],
|
||||
key_kotori: ["female", "key", 3, ["kotori_yumo", "kotori_huazhan"]],
|
||||
key_jojiro: ["male", "key", 4, ["jojiro_shensu", "jojiro_shunying"]],
|
||||
key_shiroha: ["female", "key", 3, ["shiroha_yuzhao", "shiroha_guying", "shiroha_jiezhao"]],
|
||||
key_shizuku: ["female", "key", 3, ["shizuku_sizhi", "shizuku_biyi", "shizuku_sanhua"]],
|
||||
key_hiroto: ["male", "key", 3, ["hiroto_huyu", "hiroto_tuolao"]],
|
||||
key_sakuya: ["male", "key", 3, ["youlong", "luanfeng", "sakuya_junbu"]],
|
||||
key_youta: ["male", "key", 4, []],
|
||||
key_rumi: ["female", "key", "3/4", ["rumi_shuwu"]],
|
||||
key_chihaya: ["female", "key", 3, ["chihaya_liewu", "chihaya_youfeng"]],
|
||||
key_yukito: ["male", "key", 4, ["yukito_kongwu", "yukito_yaxiang"]],
|
||||
key_crow: ["male", "key", 4, [], ["unseen"]],
|
||||
key_asara: ["female", "key", 3, ["asara_shelu", "asara_yingwei"]],
|
||||
key_kotomi: ["female", "key", 3, ["kotomi_qinji", "kotomi_chuanxiang"]],
|
||||
key_mia: ["female", "key", 3, ["mia_shihui", "mia_qianmeng"]],
|
||||
key_kano: ["female", "key", 3, ["kano_liezhen", "kano_poyu"]],
|
||||
db_key_liyingxia: [
|
||||
"female",
|
||||
"shu",
|
||||
3,
|
||||
["liyingxia_sanli", "liyingxia_zhenjun", "liyingxia_wumai"],
|
||||
["doublegroup:shu:key"],
|
||||
],
|
||||
key_erika: ["female", "key", "3/3/2", ["erika_shisong", "erika_yousheng"]],
|
||||
key_satomi: ["female", "key", 3, ["satomi_luodao", "satomi_daohai"]],
|
||||
key_iriya: ["female", "key", 3, ["iriya_yinji", "iriya_haozhi"]],
|
||||
key_fuuko: ["female", "key", 3, ["fuuko_xingdiao", "fuuko_chuanyuan"]],
|
||||
sp_key_yuri: {
|
||||
sex: "female",
|
||||
group: "qun",
|
||||
hp: 4,
|
||||
skills: ["mubing", "ziqu", "diaoling"],
|
||||
groupBorder: "key",
|
||||
},
|
||||
key_lucia: {
|
||||
sex: "female",
|
||||
group: "key",
|
||||
hp: 2,
|
||||
maxHp: 3,
|
||||
skills: ["lucia_duqu", "lucia_zhenren"],
|
||||
},
|
||||
key_kyousuke: {
|
||||
sex: "male",
|
||||
group: "key",
|
||||
hp: 4,
|
||||
skills: ["nk_shekong", "key_huanjie"],
|
||||
},
|
||||
key_yuri: {
|
||||
sex: "female",
|
||||
group: "key",
|
||||
hp: 3,
|
||||
skills: ["yuri_xingdong", "key_huanjie", "yuri_wangxi"],
|
||||
isZhugong: true,
|
||||
},
|
||||
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: {
|
||||
sex: "female",
|
||||
group: "key",
|
||||
hp: 3,
|
||||
skills: ["rin_baoqiu"],
|
||||
},
|
||||
key_sasami: {
|
||||
sex: "female",
|
||||
group: "key",
|
||||
hp: 3,
|
||||
skills: ["sasami_miaobian"],
|
||||
},
|
||||
key_akane: {
|
||||
sex: "female",
|
||||
group: "key",
|
||||
hp: 3,
|
||||
skills: ["akane_jugu", "akane_quanqing", "akane_yifu"],
|
||||
isZhugong: true,
|
||||
},
|
||||
key_doruji: {
|
||||
sex: "female",
|
||||
group: "key",
|
||||
hp: 16,
|
||||
skills: ["doruji_feiqu"],
|
||||
},
|
||||
key_yuiko: {
|
||||
sex: "female",
|
||||
group: "key",
|
||||
hp: 3,
|
||||
skills: ["yuiko_fenglun", "yuiko_dilve"],
|
||||
},
|
||||
key_riki: {
|
||||
sex: "double",
|
||||
group: "key",
|
||||
hp: 3,
|
||||
skills: ["riki_spwenji", "riki_nvzhuang", "riki_mengzhong"],
|
||||
},
|
||||
key_hisako: {
|
||||
sex: "female",
|
||||
group: "key",
|
||||
hp: 3,
|
||||
skills: ["hisako_yinbao", "hisako_zhuanyun"],
|
||||
},
|
||||
key_hinata: {
|
||||
sex: "male",
|
||||
group: "key",
|
||||
hp: 4,
|
||||
skills: ["hinata_qiulve", "hinata_ehou"],
|
||||
},
|
||||
key_noda: {
|
||||
sex: "male",
|
||||
group: "key",
|
||||
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;
|
|
@ -6,97 +6,99 @@ import skills from "./skill.js";
|
|||
import translates from "./translate.js";
|
||||
|
||||
game.import("character", function () {
|
||||
return {
|
||||
name: "key/index",
|
||||
character: { ...characters },
|
||||
characterFilter: {
|
||||
key_jojiro(mode) {
|
||||
return mode == "chess" || mode == "tafang";
|
||||
},
|
||||
key_yuu(mode) {
|
||||
return (
|
||||
mode == "identity" ||
|
||||
mode == "doudizhu" ||
|
||||
mode == "single" ||
|
||||
(mode == "versus" && _status.mode != "standard" && _status.mode != "three")
|
||||
);
|
||||
},
|
||||
key_tomoya(mode) {
|
||||
return mode != "chess" && mode != "tafang" && mode != "stone";
|
||||
},
|
||||
key_sunohara(mode) {
|
||||
return mode != "guozhan";
|
||||
},
|
||||
},
|
||||
characterTitle: {
|
||||
key_satomi: "#rHeaven Burns Red",
|
||||
key_erika: "#rHeaven Burns Red",
|
||||
db_key_liyingxia: "#rHeaven Burns Red",
|
||||
key_kano: "#bAIR",
|
||||
key_mia: "#bLoopers",
|
||||
key_kotomi: "#gClannad<br>技能设计:落英逐紫裙",
|
||||
key_asara: "#bRewrite",
|
||||
key_yukito: "#bAIR",
|
||||
key_chihaya: "#bRewrite",
|
||||
key_rumi: "#rONE ~輝く季節へ~",
|
||||
key_youta: "#b神様になった日",
|
||||
key_sakuya: "#bRewrite",
|
||||
key_hiroto: "#b神様になった日",
|
||||
key_shizuku: "#bSummer Pockets",
|
||||
key_shiroha: "#bSummer Pockets",
|
||||
key_jojiro: "#bCharlotte<br>战棋专属角色",
|
||||
key_kotori: "#bRewrite",
|
||||
key_ryoichi: "#bSummer Pockets",
|
||||
key_yuu: "#bCharlotte",
|
||||
key_godan: "#rAngel Beats!",
|
||||
key_abyusa: "#rAngel Beats!",
|
||||
key_akiko: "#bKanon",
|
||||
key_kaori: "#bKanon",
|
||||
key_shiori: "#bKanon",
|
||||
key_miki: "#bSummer Pockets",
|
||||
key_shiorimiyuki: "#rAngel Beats!",
|
||||
key_shizuru: "#bRewrite",
|
||||
key_kyoko: "#bSummer Pockets",
|
||||
sp_key_kanade: "#rAngel Beats!",
|
||||
key_yuzuru: "#rAngel Beats!",
|
||||
key_tsumugi: "#bSummer Pockets",
|
||||
key_ayato: "#rAngel Beats!",
|
||||
key_nagisa: "#gClannad",
|
||||
key_tomoya: "#gClannad",
|
||||
key_noda: "#rAngel Beats!",
|
||||
key_hinata: "#rAngel Beats!",
|
||||
key_hisako: "#rAngel Beats!",
|
||||
key_doruji: "#bLittle Busters!",
|
||||
key_riki: "#bLittle Busters!",
|
||||
key_yuiko: "#bLittle Busters!",
|
||||
key_akane: "#bRewrite",
|
||||
key_sasami: "#bLittle Busters!",
|
||||
key_rin: "#bLittle Busters!",
|
||||
key_shiina: "#rAngel Beats!",
|
||||
key_inari: "#bSummer Pockets",
|
||||
key_saya: "#bLittle Busters!",
|
||||
key_harukakanata: "#bLittle Busters!",
|
||||
key_yui: "#rAngel Beats!",
|
||||
key_yoshino: "#bRewrite",
|
||||
key_kengo: "#bLittle Busters!",
|
||||
key_iwasawa: "#rAngel Beats!",
|
||||
key_masato: "#bLittle Busters!",
|
||||
key_yusa: "#bCharlotte",
|
||||
key_misa: "#rCharlotte",
|
||||
key_yukine: "#gClannad",
|
||||
key_komari: "#bLittle Busters!",
|
||||
key_umi: "#bSummer Pockets",
|
||||
key_rei: "#gHarmonia",
|
||||
key_lucia: "#bRewrite",
|
||||
key_kyousuke: "#bLittle Busters!",
|
||||
key_yuri: "#rAngel Beats!",
|
||||
key_haruko: "#bAIR",
|
||||
sp_key_yuri: "#bAngel Beats!",
|
||||
key_fuuko: "#gClannad",
|
||||
},
|
||||
card: { ...cards },
|
||||
skill: { ...skills },
|
||||
translate: { ...translates },
|
||||
pinyins: { ...pinyins },
|
||||
};
|
||||
return {
|
||||
name: "key",
|
||||
character: { ...characters },
|
||||
characterFilter: {
|
||||
key_jojiro(mode) {
|
||||
return mode == "chess" || mode == "tafang";
|
||||
},
|
||||
key_yuu(mode) {
|
||||
return (
|
||||
mode == "identity" ||
|
||||
mode == "doudizhu" ||
|
||||
mode == "single" ||
|
||||
(mode == "versus" &&
|
||||
_status.mode != "standard" &&
|
||||
_status.mode != "three")
|
||||
);
|
||||
},
|
||||
key_tomoya(mode) {
|
||||
return mode != "chess" && mode != "tafang" && mode != "stone";
|
||||
},
|
||||
key_sunohara(mode) {
|
||||
return mode != "guozhan";
|
||||
},
|
||||
},
|
||||
characterTitle: {
|
||||
key_satomi: "#rHeaven Burns Red",
|
||||
key_erika: "#rHeaven Burns Red",
|
||||
db_key_liyingxia: "#rHeaven Burns Red",
|
||||
key_kano: "#bAIR",
|
||||
key_mia: "#bLoopers",
|
||||
key_kotomi: "#gClannad<br>技能设计:落英逐紫裙",
|
||||
key_asara: "#bRewrite",
|
||||
key_yukito: "#bAIR",
|
||||
key_chihaya: "#bRewrite",
|
||||
key_rumi: "#rONE ~輝く季節へ~",
|
||||
key_youta: "#b神様になった日",
|
||||
key_sakuya: "#bRewrite",
|
||||
key_hiroto: "#b神様になった日",
|
||||
key_shizuku: "#bSummer Pockets",
|
||||
key_shiroha: "#bSummer Pockets",
|
||||
key_jojiro: "#bCharlotte<br>战棋专属角色",
|
||||
key_kotori: "#bRewrite",
|
||||
key_ryoichi: "#bSummer Pockets",
|
||||
key_yuu: "#bCharlotte",
|
||||
key_godan: "#rAngel Beats!",
|
||||
key_abyusa: "#rAngel Beats!",
|
||||
key_akiko: "#bKanon",
|
||||
key_kaori: "#bKanon",
|
||||
key_shiori: "#bKanon",
|
||||
key_miki: "#bSummer Pockets",
|
||||
key_shiorimiyuki: "#rAngel Beats!",
|
||||
key_shizuru: "#bRewrite",
|
||||
key_kyoko: "#bSummer Pockets",
|
||||
sp_key_kanade: "#rAngel Beats!",
|
||||
key_yuzuru: "#rAngel Beats!",
|
||||
key_tsumugi: "#bSummer Pockets",
|
||||
key_ayato: "#rAngel Beats!",
|
||||
key_nagisa: "#gClannad",
|
||||
key_tomoya: "#gClannad",
|
||||
key_noda: "#rAngel Beats!",
|
||||
key_hinata: "#rAngel Beats!",
|
||||
key_hisako: "#rAngel Beats!",
|
||||
key_doruji: "#bLittle Busters!",
|
||||
key_riki: "#bLittle Busters!",
|
||||
key_yuiko: "#bLittle Busters!",
|
||||
key_akane: "#bRewrite",
|
||||
key_sasami: "#bLittle Busters!",
|
||||
key_rin: "#bLittle Busters!",
|
||||
key_shiina: "#rAngel Beats!",
|
||||
key_inari: "#bSummer Pockets",
|
||||
key_saya: "#bLittle Busters!",
|
||||
key_harukakanata: "#bLittle Busters!",
|
||||
key_yui: "#rAngel Beats!",
|
||||
key_yoshino: "#bRewrite",
|
||||
key_kengo: "#bLittle Busters!",
|
||||
key_iwasawa: "#rAngel Beats!",
|
||||
key_masato: "#bLittle Busters!",
|
||||
key_yusa: "#bCharlotte",
|
||||
key_misa: "#rCharlotte",
|
||||
key_yukine: "#gClannad",
|
||||
key_komari: "#bLittle Busters!",
|
||||
key_umi: "#bSummer Pockets",
|
||||
key_rei: "#gHarmonia",
|
||||
key_lucia: "#bRewrite",
|
||||
key_kyousuke: "#bLittle Busters!",
|
||||
key_yuri: "#rAngel Beats!",
|
||||
key_haruko: "#bAIR",
|
||||
sp_key_yuri: "#bAngel Beats!",
|
||||
key_fuuko: "#gClannad",
|
||||
},
|
||||
card: { ...cards },
|
||||
skill: { ...skills },
|
||||
translate: { ...translates },
|
||||
pinyins: { ...pinyins },
|
||||
};
|
||||
});
|
||||
|
|
|
@ -1,91 +1,91 @@
|
|||
const pinyins = {
|
||||
加藤うみ: ["Kato", "Umi"],
|
||||
仲村由理: ["Nakamura", "Yuri"],
|
||||
此花露西娅: ["Konohana", "Lucia"],
|
||||
枣恭介: ["Natsume", "Kyousuke"],
|
||||
神尾晴子: ["Kamio", "Haruko"],
|
||||
神北小毬: ["Kamikita", "Komari"],
|
||||
宫泽有纪宁: ["Miyazawa", "Yukine"],
|
||||
西森柚咲: ["Nishimori", "Yusa"],
|
||||
黑羽美砂: ["Kurobane", "Misa"],
|
||||
井之原真人: ["Inohara", "Masato"],
|
||||
岩泽雅美: ["Iwasawa", "Masami"],
|
||||
宫泽谦吾: ["Miyazawa", "Kengo"],
|
||||
吉野晴彦: ["Yoshino", "Haruhiko"],
|
||||
由依: ["Yui"],
|
||||
紬文德斯: ["Tsumugi", "Wenders"],
|
||||
朱鹭户沙耶: ["Tokido", "Saya"],
|
||||
"三枝叶留佳&二木佳奈多": ["Saigusa", "Haruka", "Futaki", "Kanata"],
|
||||
三枝二木: ["Saigusa", "Haruka", "Futaki", "Kanata"],
|
||||
稻荷: ["Inari"],
|
||||
椎名: ["Shiina"],
|
||||
"春原阳平&春原芽衣": ["Sunohara", "Youhei", "Sunohara", "Mei"],
|
||||
阳平芽衣: ["Sunohara", "Youhei", "Sunohara", "Mei"],
|
||||
枣铃: ["Natsume", "Rin"],
|
||||
笹濑川佐佐美: ["Sasasegawa", "Sasami"],
|
||||
千里朱音: ["Senri", "Akane"],
|
||||
多鲁基: ["Dorj"],
|
||||
来谷唯湖: ["Kurugaya", "Yuiko"],
|
||||
直枝理树: ["Naoe", "Riki"],
|
||||
渕田久子: ["Fuchita", "Hisako"],
|
||||
日向秀树: ["Hinata", "Hideki"],
|
||||
野田: ["Noda"],
|
||||
冈崎朋也: ["Okazaki", "Tomoya"],
|
||||
古河渚: ["Furukawa", "Nagisa"],
|
||||
直井文人: ["Naoi", "Ayato"],
|
||||
空门苍: ["Sorakado", "Ao"],
|
||||
音无结弦: ["Otonashi", "Yuzuru"],
|
||||
立华奏: ["Tachibana", "Kanade"],
|
||||
西园美鱼: ["Nishizono", "Mio"],
|
||||
西园美鸟: ["Nishizono", "Midori"],
|
||||
岬镜子: ["Misaki", "Kyoko"],
|
||||
中津静流: ["Nakatsu", "Shizuru"],
|
||||
"关根诗织&入江美雪": ["Sekine", "Shiori", "Irie", "Miyuki"],
|
||||
关根入江: ["Sekine", "Shiori", "Irie", "Miyuki"],
|
||||
野村美希: ["Nomura", "Miki"],
|
||||
美坂栞: ["Misaka", "Shiori"],
|
||||
美坂香里: ["Misaka", "Kaori"],
|
||||
水濑秋子: ["Minase", "Akiko"],
|
||||
游佐: ["Yusa"],
|
||||
松下护騨: ["Matsushita", "Godan"],
|
||||
乙坂有宇: ["Otosaka", "Yuu"],
|
||||
三谷良一: ["Mitani", "Ryoichi"],
|
||||
神户小鸟: ["Kanbe", "Kotori"],
|
||||
高城丈士朗: ["Takajyo", "Jyojirou"],
|
||||
鸣濑白羽: ["Naruse", "Shiroha"],
|
||||
水织静久: ["Mizuori", "Shizuku"],
|
||||
铃木央人: ["Suzuki", "Hiroto"],
|
||||
凤咲夜: ["Ootori", "Sakuya"],
|
||||
成神阳太: ["Narukami", "Youta"],
|
||||
七濑留美: ["Nanase", "Rumi"],
|
||||
凤千早: ["Ootori", "Chihaya"],
|
||||
国崎往人: ["Kunisaki", "Yukito"],
|
||||
井上晶: ["Inoue", "Asara"],
|
||||
一之濑琴美: ["Ichinose", "Kotomi"],
|
||||
藤川米娅: ["Fujikawa", "Mia"],
|
||||
雾岛佳乃: ["Kirishima", "Kano"],
|
||||
苍井绘梨花: ["Aoi", "Erika"],
|
||||
藏里见: ["Kura", "Satomi"],
|
||||
"喵呜·喵呼": ["Myau", "Mya-fu"],
|
||||
喵呜喵呼: ["Myau", "Mya-fu"],
|
||||
伊吹风子: ["Ibuki", "Fuuko"],
|
||||
久岛鸥: ["Kushima", "Kamome"],
|
||||
库特莉亚芙卡: ["Noumi", "Kudryavka"],
|
||||
神尾观铃: ["Kamio", "Misuzu"],
|
||||
友利奈绪: ["Tomori", "Nao"],
|
||||
天王寺瑚太朗: ["Tennouji", "Kotarou"],
|
||||
藤林杏: ["Fujibayashi", "Kyou"],
|
||||
伊座并杏子: ["Izanami", "Kyouko"],
|
||||
加纳天善: ["Kano", "Tenzen"],
|
||||
冰室忧希: ["Himuro", "Yuuki"],
|
||||
露娜Q: ["Lunar", "Q"],
|
||||
远野小满: ["Toono", "Michiru"],
|
||||
远野美凪: ["Toono", "Minagi"],
|
||||
樱庭星罗: ["Sakuraba", "Seira"],
|
||||
坂上智代: ["Sakagami", "Tomoyo"],
|
||||
冈崎汐: ["Okazaki", "Ushio"],
|
||||
神山识: ["Kamiyama", "Shiki"],
|
||||
佐藤雏: ["Satou", "Hina"],
|
||||
篝: ["Kagari"],
|
||||
}
|
||||
加藤うみ: ["Kato", "Umi"],
|
||||
仲村由理: ["Nakamura", "Yuri"],
|
||||
此花露西娅: ["Konohana", "Lucia"],
|
||||
枣恭介: ["Natsume", "Kyousuke"],
|
||||
神尾晴子: ["Kamio", "Haruko"],
|
||||
神北小毬: ["Kamikita", "Komari"],
|
||||
宫泽有纪宁: ["Miyazawa", "Yukine"],
|
||||
西森柚咲: ["Nishimori", "Yusa"],
|
||||
黑羽美砂: ["Kurobane", "Misa"],
|
||||
井之原真人: ["Inohara", "Masato"],
|
||||
岩泽雅美: ["Iwasawa", "Masami"],
|
||||
宫泽谦吾: ["Miyazawa", "Kengo"],
|
||||
吉野晴彦: ["Yoshino", "Haruhiko"],
|
||||
由依: ["Yui"],
|
||||
紬文德斯: ["Tsumugi", "Wenders"],
|
||||
朱鹭户沙耶: ["Tokido", "Saya"],
|
||||
"三枝叶留佳&二木佳奈多": ["Saigusa", "Haruka", "Futaki", "Kanata"],
|
||||
三枝二木: ["Saigusa", "Haruka", "Futaki", "Kanata"],
|
||||
稻荷: ["Inari"],
|
||||
椎名: ["Shiina"],
|
||||
"春原阳平&春原芽衣": ["Sunohara", "Youhei", "Sunohara", "Mei"],
|
||||
阳平芽衣: ["Sunohara", "Youhei", "Sunohara", "Mei"],
|
||||
枣铃: ["Natsume", "Rin"],
|
||||
笹濑川佐佐美: ["Sasasegawa", "Sasami"],
|
||||
千里朱音: ["Senri", "Akane"],
|
||||
多鲁基: ["Dorj"],
|
||||
来谷唯湖: ["Kurugaya", "Yuiko"],
|
||||
直枝理树: ["Naoe", "Riki"],
|
||||
渕田久子: ["Fuchita", "Hisako"],
|
||||
日向秀树: ["Hinata", "Hideki"],
|
||||
野田: ["Noda"],
|
||||
冈崎朋也: ["Okazaki", "Tomoya"],
|
||||
古河渚: ["Furukawa", "Nagisa"],
|
||||
直井文人: ["Naoi", "Ayato"],
|
||||
空门苍: ["Sorakado", "Ao"],
|
||||
音无结弦: ["Otonashi", "Yuzuru"],
|
||||
立华奏: ["Tachibana", "Kanade"],
|
||||
西园美鱼: ["Nishizono", "Mio"],
|
||||
西园美鸟: ["Nishizono", "Midori"],
|
||||
岬镜子: ["Misaki", "Kyoko"],
|
||||
中津静流: ["Nakatsu", "Shizuru"],
|
||||
"关根诗织&入江美雪": ["Sekine", "Shiori", "Irie", "Miyuki"],
|
||||
关根入江: ["Sekine", "Shiori", "Irie", "Miyuki"],
|
||||
野村美希: ["Nomura", "Miki"],
|
||||
美坂栞: ["Misaka", "Shiori"],
|
||||
美坂香里: ["Misaka", "Kaori"],
|
||||
水濑秋子: ["Minase", "Akiko"],
|
||||
游佐: ["Yusa"],
|
||||
松下护騨: ["Matsushita", "Godan"],
|
||||
乙坂有宇: ["Otosaka", "Yuu"],
|
||||
三谷良一: ["Mitani", "Ryoichi"],
|
||||
神户小鸟: ["Kanbe", "Kotori"],
|
||||
高城丈士朗: ["Takajyo", "Jyojirou"],
|
||||
鸣濑白羽: ["Naruse", "Shiroha"],
|
||||
水织静久: ["Mizuori", "Shizuku"],
|
||||
铃木央人: ["Suzuki", "Hiroto"],
|
||||
凤咲夜: ["Ootori", "Sakuya"],
|
||||
成神阳太: ["Narukami", "Youta"],
|
||||
七濑留美: ["Nanase", "Rumi"],
|
||||
凤千早: ["Ootori", "Chihaya"],
|
||||
国崎往人: ["Kunisaki", "Yukito"],
|
||||
井上晶: ["Inoue", "Asara"],
|
||||
一之濑琴美: ["Ichinose", "Kotomi"],
|
||||
藤川米娅: ["Fujikawa", "Mia"],
|
||||
雾岛佳乃: ["Kirishima", "Kano"],
|
||||
苍井绘梨花: ["Aoi", "Erika"],
|
||||
藏里见: ["Kura", "Satomi"],
|
||||
"喵呜·喵呼": ["Myau", "Mya-fu"],
|
||||
喵呜喵呼: ["Myau", "Mya-fu"],
|
||||
伊吹风子: ["Ibuki", "Fuuko"],
|
||||
久岛鸥: ["Kushima", "Kamome"],
|
||||
库特莉亚芙卡: ["Noumi", "Kudryavka"],
|
||||
神尾观铃: ["Kamio", "Misuzu"],
|
||||
友利奈绪: ["Tomori", "Nao"],
|
||||
天王寺瑚太朗: ["Tennouji", "Kotarou"],
|
||||
藤林杏: ["Fujibayashi", "Kyou"],
|
||||
伊座并杏子: ["Izanami", "Kyouko"],
|
||||
加纳天善: ["Kano", "Tenzen"],
|
||||
冰室忧希: ["Himuro", "Yuuki"],
|
||||
露娜Q: ["Lunar", "Q"],
|
||||
远野小满: ["Toono", "Michiru"],
|
||||
远野美凪: ["Toono", "Minagi"],
|
||||
樱庭星罗: ["Sakuraba", "Seira"],
|
||||
坂上智代: ["Sakagami", "Tomoyo"],
|
||||
冈崎汐: ["Okazaki", "Ushio"],
|
||||
神山识: ["Kamiyama", "Shiki"],
|
||||
佐藤雏: ["Satou", "Hina"],
|
||||
篝: ["Kagari"],
|
||||
};
|
||||
export default pinyins;
|
19027
character/key/skill.js
19027
character/key/skill.js
File diff suppressed because it is too large
Load Diff
|
@ -87,7 +87,8 @@ const translates = {
|
|||
nk_shekong_info:
|
||||
"出牌阶段限一次,你可以弃置任意张手牌并选择一名其他角色(不能超过该角色的牌数),然后令其选择一项:弃置一张牌并令你摸X张牌,或弃置X张牌并令你摸一张牌。然后,你将你与其弃置的且位于弃牌堆中的牌以任意顺序置于牌堆顶。",
|
||||
key_huanjie: "幻界",
|
||||
key_huanjie_info: "锁定技,当你进行判定或摸牌时,你改为从牌堆的另一端获取相应的牌。",
|
||||
key_huanjie_info:
|
||||
"锁定技,当你进行判定或摸牌时,你改为从牌堆的另一端获取相应的牌。",
|
||||
yuri_xingdong: "行动",
|
||||
yuri_xingdong_info:
|
||||
"锁定技,出牌阶段开始时,你获得一张【杀】或普通锦囊牌。出牌阶段限一次,你可以将一张【杀】或普通锦囊牌交给一名其他角色,然后该角色选择一项:对除你以外的角色使用此牌并在此牌结算完成后和你各摸一张牌;或跳过下回合的判定阶段和摸牌阶段。",
|
||||
|
@ -135,7 +136,8 @@ const translates = {
|
|||
masato_baoquan_info:
|
||||
"锁定技,当你即将造成伤害时,你选择一项:1.令此伤害+2并减1点体力上限。2.防止此伤害。",
|
||||
iwasawa_yinhang: "引吭",
|
||||
iwasawa_yinhang_info: "锁定技,当你的体力值变化1点时,你可以令至多两名角色摸一张牌。",
|
||||
iwasawa_yinhang_info:
|
||||
"锁定技,当你的体力值变化1点时,你可以令至多两名角色摸一张牌。",
|
||||
iwasawa_mysong: "My Song",
|
||||
iwasawa_mysong_info:
|
||||
"锁定技,当你即将进行濒死结算时,取消之。回合开始时,若你的体力值小于1,则你获得技能〖奋音〗直到回合结束。回合结束时,若你的体力值小于1,你死亡。",
|
||||
|
@ -168,9 +170,11 @@ const translates = {
|
|||
"觉醒技,准备阶段,若你满足以下条件中的至少两个:①体力值不大于1;②场上有已死亡的角色;③已因〖激昂〗累计获得过至少三张牌;则你获得技能〖引吭〗,将〖烈音〗描述中的「你选择」改为「你可选择」,然后加1点体力上限并回复1点体力。",
|
||||
//ユイ/孙笨双将组合时,孙笨的〖激昂〗不计入〖珍宝〗的次数统计
|
||||
yui_yinhang: "引吭",
|
||||
yui_yinhang_info: "锁定技,当你的体力值变化1点时,你可以令至多两名角色摸一张牌。",
|
||||
yui_yinhang_info:
|
||||
"锁定技,当你的体力值变化1点时,你可以令至多两名角色摸一张牌。",
|
||||
tsumugi_mugyu: "姆啾",
|
||||
tsumugi_mugyu_info: "当你成为牌的目标后,若你的手牌数小于体力上限,则你可以摸一张牌。",
|
||||
tsumugi_mugyu_info:
|
||||
"当你成为牌的目标后,若你的手牌数小于体力上限,则你可以摸一张牌。",
|
||||
tsumugi_huilang: "回廊",
|
||||
tsumugi_huilang2: "回廊",
|
||||
tsumugi_huilang_info:
|
||||
|
@ -193,7 +197,8 @@ const translates = {
|
|||
//〖破围〗不会因为〖铁骑〗无效
|
||||
inari_baiwei: "摆尾",
|
||||
inari_baiwei_draw: "摆尾",
|
||||
inari_baiwei_info: "你可以将一张♦牌当做任意基本牌使用或打出。此牌结算完成后,你摸一张牌。",
|
||||
inari_baiwei_info:
|
||||
"你可以将一张♦牌当做任意基本牌使用或打出。此牌结算完成后,你摸一张牌。",
|
||||
//你不能以此法使用【毒】
|
||||
inari_baiwei_backup: "摆尾",
|
||||
inari_baiwei_sha: "摆尾",
|
||||
|
@ -210,7 +215,8 @@ const translates = {
|
|||
//你不能对稻荷和多鲁基发动〖飞燕〗
|
||||
sunohara_chengshuang: "成双",
|
||||
sunohara_chengshuang_phase: "成双",
|
||||
sunohara_chengshuang_info: "锁定技,游戏开始时,你选择你的性别。回合开始时,你可以切换你的性别。",
|
||||
sunohara_chengshuang_info:
|
||||
"锁定技,游戏开始时,你选择你的性别。回合开始时,你可以切换你的性别。",
|
||||
sunohara_tiaoyin: "挑引",
|
||||
sunohara_tiaoyin_info:
|
||||
"出牌阶段限一次,你可以弃置任意张花色各不相同的手牌,然后获得等量角色区域内的各一张牌。若你以此法获得了异性角色区域内的牌,则你失去1点体力。",
|
||||
|
@ -233,7 +239,8 @@ const translates = {
|
|||
sasami_baoqiu_info:
|
||||
"锁定技,你的攻击范围+2。当你使用【杀】指定目标后,你进行判定。若结果:为红色,此【杀】对其的伤害值基数+1;为黑色,其无法闪避此【杀】;为♠/♥,此【杀】不计入使用次数限制且你摸一张牌;为♦/♣,目标角色的所有非锁定技失效直到回合结束,且你弃置其一张牌。",
|
||||
akane_jugu: "巨贾",
|
||||
akane_jugu_info: "锁定技,1.你的手牌上限+X。2.游戏开始时,你摸X张牌(X为你的体力上限)。",
|
||||
akane_jugu_info:
|
||||
"锁定技,1.你的手牌上限+X。2.游戏开始时,你摸X张牌(X为你的体力上限)。",
|
||||
akane_quanqing: "权倾",
|
||||
akane_quanqing_info:
|
||||
"出牌阶段,你可选择:1.弃置一张点数大于10的牌并对攻击范围内的一名其他角色造成1点伤害;2.弃置一张点数大于6的牌并弃置攻击范围内的一名其他角色区域内的一张牌。3.弃置一张牌并令攻击范围内的一名其他角色摸一张牌。",
|
||||
|
@ -242,12 +249,14 @@ const translates = {
|
|||
akane_yifu_info:
|
||||
"主公技,其他键势力角色的出牌阶段限一次,其可交给你一张手牌。然后你摸一张牌,并将一张手牌交给该角色。",
|
||||
doruji_feiqu: "肥躯",
|
||||
doruji_feiqu_info: "锁定技,当你使用【杀】时,或你成为【杀】的目标后,你令此【杀】不可被响应。",
|
||||
doruji_feiqu_info:
|
||||
"锁定技,当你使用【杀】时,或你成为【杀】的目标后,你令此【杀】不可被响应。",
|
||||
yuiko_fenglun: "锋论",
|
||||
yuiko_fenglun_info:
|
||||
"出牌阶段限一次,你可以和一名其他角色拼点。若你赢,你本阶段内使用牌没有次数和距离限制。",
|
||||
yuiko_dilve: "底略",
|
||||
yuiko_dilve_info: "你可以使用牌堆底的一张牌进行拼点。当你拼点后,你可以获得两张拼点牌。",
|
||||
yuiko_dilve_info:
|
||||
"你可以使用牌堆底的一张牌进行拼点。当你拼点后,你可以获得两张拼点牌。",
|
||||
riki_spwenji: "问计",
|
||||
riki_spwenji_info:
|
||||
"出牌阶段开始时,你可以令一名其他角色交给你一张牌。你于本回合内使用与该牌名称相同的牌时不能被其他角色响应。",
|
||||
|
@ -294,7 +303,8 @@ const translates = {
|
|||
ayato_zonghuan_info:
|
||||
"出牌阶段限一次,你可以观看一名其他角色的手牌,然后选择一项:将其中的一张牌置入弃牌堆,或以该角色的视角使用其中的一张,然后摸一张牌。",
|
||||
ao_xishi: "习事",
|
||||
ao_xishi_info: "锁定技,当你使用或打出♦牌时,或其他角色使用♦牌指定你为目标后,你摸一张牌。",
|
||||
ao_xishi_info:
|
||||
"锁定技,当你使用或打出♦牌时,或其他角色使用♦牌指定你为目标后,你摸一张牌。",
|
||||
ao_kuihun: "窥魂",
|
||||
ao_kuihun_info:
|
||||
"其他角色进入濒死状态时,你可以摸一张牌,然后观看其手牌并将其中一张牌置于你的武将牌上,称为「蝶」。你使用与一张「蝶」花色相同的牌时无距离和次数限制。你的手牌上限+X(X为蝶数)。",
|
||||
|
@ -303,7 +313,8 @@ const translates = {
|
|||
"觉醒技,准备阶段,若你的「蝶」中包含至少三种花色,则你加1点体力上限并回复1点体力,失去〖窥魂〗并获得〖蝶归〗。",
|
||||
ao_diegui: "蝶归",
|
||||
ao_diegui_backup: "蝶归",
|
||||
ao_diegui_info: "出牌阶段限一次,你可以将一张「蝶」交给一名角色,该角色摸两张牌并复原武将牌。",
|
||||
ao_diegui_info:
|
||||
"出牌阶段限一次,你可以将一张「蝶」交给一名角色,该角色摸两张牌并复原武将牌。",
|
||||
yuzuru_wuxin: "无心",
|
||||
yuzuru_wuxin_info:
|
||||
"结束阶段,你可以选择一项:失去1点体力并令一名角色摸两张牌,或弃置两张牌并回复1点体力。",
|
||||
|
@ -320,14 +331,17 @@ const translates = {
|
|||
yuzuru_quji_info:
|
||||
"出牌阶段限一次,你可以弃置X张牌并选择至多等量已受伤的其他角色,这些角色各回复1点体力。若你以此法弃置了黑色牌,则你失去1点体力。(X为你已损失的体力值)",
|
||||
yuzuru_kunfen_rewrite: "困奋·改",
|
||||
yuzuru_kunfen_rewrite_info: "锁定技,结束阶段,你摸两张牌。然后你可以将两张牌交给一名其他角色。",
|
||||
yuzuru_kunfen_rewrite_info:
|
||||
"锁定技,结束阶段,你摸两张牌。然后你可以将两张牌交给一名其他角色。",
|
||||
yuzuru_quji_rewrite: "去疾·改",
|
||||
yuzuru_quji_rewrite_info:
|
||||
"出牌阶段限一次,你可以弃置X张牌并选择至多等量已受伤的其他角色,这些角色各回复1点体力。(X为你已损失的体力值)",
|
||||
yuzuru_bujin: "步进",
|
||||
yuzuru_bujin_info: "锁定技,己方其他角色计算与其他角色的距离-1且摸牌阶段的额定摸牌数+1。",
|
||||
yuzuru_bujin_info:
|
||||
"锁定技,己方其他角色计算与其他角色的距离-1且摸牌阶段的额定摸牌数+1。",
|
||||
kanade_mapo: "麻婆",
|
||||
kanade_mapo_info: "你可以将一张♥牌当做【麻婆豆腐】使用。你使用的【麻婆豆腐】可以多指定一个目标。",
|
||||
kanade_mapo_info:
|
||||
"你可以将一张♥牌当做【麻婆豆腐】使用。你使用的【麻婆豆腐】可以多指定一个目标。",
|
||||
kanade_benzhan: "奔战",
|
||||
kanade_benzhan_info:
|
||||
"每回合限一次。当你使用或打出牌响应其他角色,或其他角色使用或打出牌响应你后,若此牌为:基本牌,你可令一名角色弃置两张牌或令一名角色摸两张牌;非基本牌,你可对一名角色造成1点伤害或令一名其他角色回复1点体力。",
|
||||
|
@ -359,7 +373,8 @@ const translates = {
|
|||
shizuru_benzhan_info:
|
||||
"每回合限一次。当你使用或打出牌响应其他角色,或其他角色使用或打出牌响应你后,若此牌为:基本牌,你可令一名角色弃置两张牌或令一名角色摸两张牌;非基本牌,你可对一名角色造成1点伤害或令一名其他角色回复1点体力。",
|
||||
shiorimiyuki_banyin: "伴音",
|
||||
shiorimiyuki_banyin_info: "当你受到伤害或回复体力后,你可令一名其他角色回复1点体力。",
|
||||
shiorimiyuki_banyin_info:
|
||||
"当你受到伤害或回复体力后,你可令一名其他角色回复1点体力。",
|
||||
shiorimiyuki_tingxian: "铤险",
|
||||
shiorimiyuki_tingxian_info:
|
||||
"出牌阶段开始时,你可以摸至多三张牌。若如此做,你回复1点体力,且此阶段结束时你失去X点体力。(X为你得到的牌中仍在手牌区的牌的数量)",
|
||||
|
@ -403,7 +418,8 @@ const translates = {
|
|||
godan_yuanyi_info:
|
||||
"锁定技,回合开始时,你摸X张牌并进行一个额外的出牌阶段。(X为游戏轮数且至多为3)",
|
||||
godan_feiqu: "肥躯",
|
||||
godan_feiqu_info: "锁定技,当你使用【杀】时,或你成为【杀】的目标后,你令此【杀】不可被响应。",
|
||||
godan_feiqu_info:
|
||||
"锁定技,当你使用【杀】时,或你成为【杀】的目标后,你令此【杀】不可被响应。",
|
||||
godan_xiaoyuan: "消元",
|
||||
godan_xiaoyuan_info:
|
||||
"觉醒技,当你扣减体力时,若你的体力值小于4,则你减3点体力上限并摸三张牌,失去【肥躯】。",
|
||||
|
@ -430,7 +446,8 @@ const translates = {
|
|||
kotori_skill_shu_info:
|
||||
"你使用【杀】上限+1;出牌阶段结束时,若你于此阶段使用【杀】次数不少于2,摸一张牌。",
|
||||
kotori_skill_wu: "吴耀",
|
||||
kotori_skill_wu_info: "回合结束时,若你的手牌数不等于你的体力值,则你摸一张牌。",
|
||||
kotori_skill_wu_info:
|
||||
"回合结束时,若你的手牌数不等于你的体力值,则你摸一张牌。",
|
||||
kotori_skill_qun: "群心",
|
||||
kotori_skill_qun_info:
|
||||
"锁定技,弃牌阶段开始时,若你的手牌数比体力值多2或更多,你本回合手牌上限+1;若你已损失体力值大于1,你手牌上限+1。",
|
||||
|
@ -480,7 +497,8 @@ const translates = {
|
|||
shizuku_biyi_info:
|
||||
"当你受到伤害后,你可以进行一次判定,然后若你弃置任意张点数之和与判定结果点数相同的牌,你回复1点体力。",
|
||||
shizuku_sanhua: "散花",
|
||||
shizuku_sanhua_info: "当你死亡时,你可令一名其他角色从牌堆中获得四张名称各不相同的基本牌。",
|
||||
shizuku_sanhua_info:
|
||||
"当你死亡时,你可令一名其他角色从牌堆中获得四张名称各不相同的基本牌。",
|
||||
hiroto_huyu: "虎驭",
|
||||
hiroto_huyu2: "虎驭",
|
||||
hiroto_huyu_info:
|
||||
|
@ -536,7 +554,8 @@ const translates = {
|
|||
mia_qianmeng_info:
|
||||
"使命技。①游戏开始时,你摸一张牌,然后将一张牌置于牌堆的正中央。②使命:当有角色获得“潜梦”牌时,其将此牌交给你。你将体力值回复至上限,失去〖时迴〗并获得〖风发〗。③失败:当你死亡时,你可令一名角色获得牌堆中所有与“潜梦”牌花色点数相同的牌。",
|
||||
mia_fengfa: "风发",
|
||||
mia_fengfa_info: "锁定技。摸牌阶段,你多摸X张牌(X为你上回合使用过的牌数)。",
|
||||
mia_fengfa_info:
|
||||
"锁定技。摸牌阶段,你多摸X张牌(X为你上回合使用过的牌数)。",
|
||||
kano_liezhen: "列阵",
|
||||
kano_liezhen_info:
|
||||
"结束阶段,若你本回合内使用过牌且这些牌的类型:不均相同,你可视为使用【排兵布阵】或智囊;均相同,你获得仁库中的所有牌(没有则改为摸两张牌)。",
|
||||
|
@ -569,7 +588,8 @@ const translates = {
|
|||
satomi_daohai: "稻海",
|
||||
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_info:
|
||||
"其他角色使用的【杀】或伤害性锦囊牌结算结束后,若你是此牌的唯一目标,则你可以弃置任意张点数之和大于等于此牌点数两倍的牌,然后视为对其使用一张名称相同的牌。",
|
||||
|
@ -577,7 +597,8 @@ const translates = {
|
|||
tenzen_retianquan_info:
|
||||
"每回合限一次。当你使用【杀】指定目标后,你可失去1点体力或弃置一张牌,然后亮出牌堆顶的三张牌(若你的体力值小于体力上限的50%,则改为展示五张牌)。这些牌中每有一张基本牌,响应此牌所需的【闪】的数量便+1。此牌结算结束后,若此牌造成过伤害,则你获得展示牌中的所有非基本牌。",
|
||||
iriya_yinji: "殷极",
|
||||
iriya_yinji_info: "锁定技。出牌阶段开始时,你将手牌摸至17张。你不能直接使用以此法得到的牌。",
|
||||
iriya_yinji_info:
|
||||
"锁定技。出牌阶段开始时,你将手牌摸至17张。你不能直接使用以此法得到的牌。",
|
||||
iriya_haozhi: "豪掷",
|
||||
iriya_haozhi_info:
|
||||
"出牌阶段,你可以按照斗地主牌型弃置至少两张牌,且其他角色可以依次对其进行一轮响应。最后一名进行响应的角色可以根据对应牌型执行对应效果。" +
|
||||
|
@ -594,6 +615,6 @@ const translates = {
|
|||
fuuko_chuanyuan: "传愿",
|
||||
fuuko_chuanyuan_info:
|
||||
"锁定技。当你失去一张“星”后,你回复1点体力,然后从牌堆中获得一张和“星”花色点数相同的牌(没有则改为摸一张牌,且使用此牌无距离和次数限制)。",
|
||||
}
|
||||
};
|
||||
|
||||
export default translates;
|
|
@ -22,6 +22,23 @@ if (core === "chrome" && !isNaN(version) && version < 77) {
|
|||
boot().then(() => {
|
||||
// 判断是否从file协议切换到http/s协议
|
||||
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协议重启
|
||||
|
@ -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 {
|
||||
// 成功导入后删除noname.config.txt
|
||||
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) {
|
||||
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) {
|
||||
if (lib.skill[i].changeSeat) {
|
||||
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";
|
||||
for (var i in lib.character) {
|
||||
var info = lib.character[i];
|
||||
if (info[4].includes("boss")) {
|
||||
if (info.isBoss) {
|
||||
// var cfg=i+'_bossconfig';
|
||||
// if(get.config(cfg)==undefined){
|
||||
// game.saveConfig(cfg,true,true);
|
||||
|
@ -1443,7 +1437,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
},
|
||||
init: function () {
|
||||
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"] = {
|
||||
name: get.translation(i),
|
||||
init: true,
|
||||
|
@ -1643,10 +1637,10 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
var list = [];
|
||||
event.list = list;
|
||||
for (i in lib.character) {
|
||||
if (lib.character[i][4].includes("minskin")) continue;
|
||||
if (lib.character[i][4].includes("boss")) continue;
|
||||
if (lib.character[i][4].includes("hiddenboss")) continue;
|
||||
if (lib.character[i][4] && lib.character[i][4].includes("forbidai")) continue;
|
||||
if (lib.character[i].isMinskin) continue;
|
||||
if (lib.character[i].isBoss) continue;
|
||||
if (lib.character[i].isHiddenBoss) continue;
|
||||
if (lib.character[i].isAiForbidden) continue;
|
||||
if (lib.config.forbidboss.includes(i)) continue;
|
||||
if (lib.filter.characterDisabled(i)) continue;
|
||||
list.push(i);
|
||||
|
@ -7027,8 +7021,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
}
|
||||
for (var i in lib.character) {
|
||||
if (lib.character[i][1] != "wei") continue;
|
||||
if (lib.character[i][4].includes("boss")) continue;
|
||||
if (lib.character[i][4].includes("minskin")) continue;
|
||||
if (lib.character[i].isBoss) continue;
|
||||
if (lib.character[i].isMinskin) continue;
|
||||
if (player.storage.xiongcai.includes(i)) continue;
|
||||
if (list2.includes(i)) continue;
|
||||
list.push(i);
|
||||
|
|
|
@ -533,9 +533,11 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
if (lib.filter.characterDisabled(name)) continue;
|
||||
if (name.indexOf("old_") == 0) continue;
|
||||
var skillsx = lib.character[name][3].slice(0);
|
||||
lib.character[name][2] = 4;
|
||||
lib.character[name][3] = [];
|
||||
if (lib.character[name][4]) lib.character[name][4].remove("hiddenSkill");
|
||||
lib.character[name].hp = 4;
|
||||
lib.character[name].maxHp = 4;
|
||||
lib.character[name].hujia = 0;
|
||||
lib.character[name].skills = [];
|
||||
lib.character[name].hasHiddenSkill = false;
|
||||
characters.push(name);
|
||||
var list = skillsx.slice(0);
|
||||
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;
|
||||
lib.character[i] = lib.characterPack.mode_chess[i];
|
||||
if (!lib.character[i][4]) {
|
||||
lib.character[i][4] = [];
|
||||
}
|
||||
}
|
||||
}
|
||||
if (get.config("chess_card")) {
|
||||
|
@ -106,7 +103,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
} else {
|
||||
game.chooseCharacterDouble(
|
||||
function (i) {
|
||||
if (lib.character[i][4].includes("chessboss")) {
|
||||
if (lib.character[i].isChessBoss) {
|
||||
return false;
|
||||
}
|
||||
return !lib.filter.characterDisabled(i);
|
||||
|
@ -3957,15 +3954,15 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
var jiangelist = [];
|
||||
event.list = list;
|
||||
for (i in lib.character) {
|
||||
if (lib.character[i][4].includes("chessboss")) {
|
||||
if (lib.character[i].isChessBoss) {
|
||||
bosslist.push(i);
|
||||
continue;
|
||||
} else if (lib.character[i][4].includes("jiangeboss")) {
|
||||
} else if (lib.character[i].isJiangeBoss) {
|
||||
// if(get.config('chess_jiange')) jiangelist.push(i);
|
||||
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.filter.characterDisabled(i)) continue;
|
||||
list.push(i);
|
||||
|
|
|
@ -9,25 +9,13 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
if (lib.character[i.slice(3)]) continue;
|
||||
}
|
||||
lib.character[i] = lib.characterPack.mode_guozhan[i];
|
||||
if (!lib.character[i][4]) {
|
||||
lib.character[i][4] = [];
|
||||
}
|
||||
if (!lib.translate[i]) {
|
||||
lib.translate[i] = lib.translate[i.slice(3)];
|
||||
}
|
||||
}
|
||||
for (var i in lib.character) {
|
||||
if (lib.character[i][1] == "shen") {
|
||||
if (lib.character[i][4]) {
|
||||
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";
|
||||
if (lib.character[i].group == "shen") {
|
||||
lib.character[i].group = (lib.character[i].groupInGuozhan || "qun");
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -35,25 +23,13 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
var pack = lib.characterPack.mode_guozhan;
|
||||
for (var i in pack) {
|
||||
lib.character[i] = pack[i];
|
||||
if (!lib.character[i][4]) {
|
||||
lib.character[i][4] = [];
|
||||
}
|
||||
if (!lib.translate[i]) {
|
||||
lib.translate[i] = lib.translate[i.slice(3)];
|
||||
}
|
||||
}
|
||||
for (var i in lib.character) {
|
||||
if (lib.character[i][1] == "shen") {
|
||||
if (lib.character[i][4]) {
|
||||
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";
|
||||
if (lib.character[i].group == "shen") {
|
||||
lib.character[i].group = (lib.character[i].groupInGuozhan || "qun");
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -91,7 +67,6 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
delete lib.translate.shuiyanqijunx_info_guozhan;
|
||||
const pack = lib.yingbian_guozhan;
|
||||
for (const i in pack) {
|
||||
if (!pack[i][4]) pack[i][4] = [];
|
||||
lib.character[i] = pack[i];
|
||||
lib.characterPack.mode_guozhan[i] = pack[i];
|
||||
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;
|
||||
const pack2 = lib.yingbian_guozhan;
|
||||
for (const i in pack2) {
|
||||
if (!pack2[i][4]) pack2[i][4] = [];
|
||||
pack[i] = pack2[i];
|
||||
}
|
||||
}
|
||||
|
@ -154,28 +128,13 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
}
|
||||
for (var i in pack) {
|
||||
lib.character[i] = pack[i];
|
||||
if (!lib.character[i][4]) {
|
||||
lib.character[i][4] = [];
|
||||
}
|
||||
if (!lib.translate[i]) {
|
||||
lib.translate[i] = lib.translate[i.slice(3)];
|
||||
}
|
||||
}
|
||||
for (var i in lib.character) {
|
||||
if (lib.character[i][1] == "shen") {
|
||||
if (lib.character[i][4]) {
|
||||
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.character[i].group = (lib.character[i].groupInGuozhan || "qun");
|
||||
}
|
||||
}
|
||||
//lib.characterReplace={};
|
||||
|
@ -22319,9 +22278,9 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
continue;
|
||||
if (get.is.jun(i)) continue;
|
||||
}
|
||||
if (lib.character[i][4].includes("hiddenSkill")) continue;
|
||||
if (lib.character[i][2] == 3 || lib.character[i][2] == 4 || lib.character[i][2] == 5)
|
||||
event.list.push(i);
|
||||
if (lib.character[i].hasHiddenSkill) continue;
|
||||
const hp = lib.character[i].hp, maxHp = lib.character[i].maxHp;
|
||||
if (hp === maxHp && hp >= 3 && hp <= 5) event.list.push(i);
|
||||
}
|
||||
_status.characterlist = event.list.slice(0);
|
||||
_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) {
|
||||
if (_status.separatism) return true;
|
||||
var group1 = lib.character[name1][1];
|
||||
|
|
|
@ -1051,7 +1051,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
list.push(group);
|
||||
}
|
||||
map[group].push(i);
|
||||
if (lib.character[i][4] && lib.character[i][4].includes("zhu")) {
|
||||
if (lib.character[i].isZhugong) {
|
||||
if (!map_zhu[group]) {
|
||||
map_zhu[group] = [];
|
||||
}
|
||||
|
@ -1230,7 +1230,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
list.push(group);
|
||||
}
|
||||
map[group].push(i);
|
||||
if (lib.character[i][4] && lib.character[i][4].includes("zhu")) {
|
||||
if (lib.character[i].isZhugong) {
|
||||
if (!map_zhu[group]) {
|
||||
map_zhu[group] = [];
|
||||
}
|
||||
|
@ -1496,8 +1496,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
if (
|
||||
get.is.double(result[i][0]) ||
|
||||
(lib.character[result[i][0]] &&
|
||||
lib.character[result[i][0]][1] == "shen" &&
|
||||
!lib.character[result[i][0]][4].includes("hiddenSkill"))
|
||||
lib.character[result[i][0]].group == "shen" &&
|
||||
!lib.character[result[i][0]].hasHiddenSkill)
|
||||
)
|
||||
shen.push(lib.playerOL[i]);
|
||||
}
|
||||
|
@ -2098,7 +2098,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
} else {
|
||||
var bool = false;
|
||||
for (var j of ix) {
|
||||
if (lib.character[j][4] && lib.character[j][4].includes("zhu")) {
|
||||
if (lib.character[j].isZhugong) {
|
||||
bool = true;
|
||||
break;
|
||||
}
|
||||
|
@ -2113,7 +2113,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
if (lib.filter.characterDisabled(i)) continue;
|
||||
event.list.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);
|
||||
} else {
|
||||
list3.push(i);
|
||||
|
@ -2366,8 +2366,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
game.me._groupChosen = true;
|
||||
game.me.chooseControl(get.is.double(name, true)).set("prompt", "请选择你的势力");
|
||||
} else if (
|
||||
lib.character[name][1] == "shen" &&
|
||||
!lib.character[name][4].includes("hiddenSkill") &&
|
||||
lib.character[name].group == "shen" &&
|
||||
!lib.character[name].hasHiddenSkill &&
|
||||
get.config("choose_group")
|
||||
) {
|
||||
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]];
|
||||
for (var j in pack) {
|
||||
// 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) {
|
||||
|
@ -2575,7 +2575,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
list4.addArray(ix);
|
||||
var bool = false;
|
||||
for (var j of ix) {
|
||||
if (libCharacter[j][4] && libCharacter[j][4].includes("zhu")) {
|
||||
if (libCharacter[j].isZhugong) {
|
||||
bool = true;
|
||||
break;
|
||||
}
|
||||
|
@ -2597,7 +2597,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
event.list.push(i);
|
||||
event.list2.push(i);
|
||||
list4.push(i);
|
||||
if (libCharacter[i][4] && libCharacter[i][4].includes("zhu")) {
|
||||
if (libCharacter[i].isZhugong) {
|
||||
list2.push(i);
|
||||
} else {
|
||||
list3.push(i);
|
||||
|
@ -2772,8 +2772,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
if (
|
||||
get.is.double(result[i][0]) ||
|
||||
(lib.character[result[i][0]] &&
|
||||
lib.character[result[i][0]][1] == "shen" &&
|
||||
!lib.character[result[i][0]][4].includes("hiddenSkill"))
|
||||
lib.character[result[i][0]].group == "shen" &&
|
||||
!lib.character[result[i][0]].hasHiddenSkill)
|
||||
)
|
||||
shen.push(lib.playerOL[i]);
|
||||
}
|
||||
|
|
|
@ -307,9 +307,6 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
if (_status.mode != "normal") return;
|
||||
for (var i in lib.characterSingle) {
|
||||
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];
|
||||
},
|
||||
|
@ -352,11 +349,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
for (var j in singleTranslate) lib.translate[j] = singleTranslate[j];
|
||||
_status.characterlist = [];
|
||||
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];
|
||||
if (!lib.character[i][4]) {
|
||||
lib.character[i][4] = [];
|
||||
}
|
||||
_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) => {
|
||||
if (
|
||||
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.rawMaxHp = 1;
|
||||
|
@ -1116,7 +1110,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
current.init(result[i][0]);
|
||||
if (
|
||||
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.rawMaxHp = 1;
|
||||
|
@ -1134,7 +1128,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
current.init(result[i][0]);
|
||||
if (
|
||||
current.storage.nohp ||
|
||||
(lib.character[current.name1][4].includes("hiddenSkill") &&
|
||||
(lib.character[current.name1].hasHiddenSkil &&
|
||||
!current.noclick)
|
||||
) {
|
||||
current.storage.rawHp = 1;
|
||||
|
|
|
@ -2256,33 +2256,33 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
var i, j, name;
|
||||
for (var i in lib.characterPack.mode_stone) {
|
||||
lib.character[i] = lib.characterPack.mode_stone[i];
|
||||
if (lib.characterPack.mode_stone[i][4].includes("stonespecial")) continue;
|
||||
lib.character[i][3].add("stonesha");
|
||||
lib.character[i][3].add("stoneshan");
|
||||
lib.character[i][3].add("stonedraw");
|
||||
if (lib.character[i].isSpecialInStoneMode) continue;
|
||||
lib.character[i].skills.add("stonesha");
|
||||
lib.character[i].skills.add("stoneshan");
|
||||
lib.character[i].skills.add("stonedraw");
|
||||
name = i + "_stonecharacter";
|
||||
lib.card[name] = {
|
||||
image: "mode/stone/character/" + i,
|
||||
stoneact: lib.character[i][5][0],
|
||||
career: lib.character[i][5][2] || null,
|
||||
stoneact: lib.character[i].stoneModeData[0],
|
||||
career: lib.character[i].stoneModeData[2] || null,
|
||||
};
|
||||
for (j in lib.element.stonecharacter) {
|
||||
lib.card[name][j] = lib.element.stonecharacter[j];
|
||||
}
|
||||
lib.translate[name] = get.translation(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;
|
||||
continue;
|
||||
}
|
||||
if (!lib.character[i][5][2]) {
|
||||
if (lib.character[i][5][0] < 3) {
|
||||
if (!lib.character[i].stoneModeData[2]) {
|
||||
if (lib.character[i].stoneModeData[0] < 3) {
|
||||
list.push(name);
|
||||
} else {
|
||||
list2.push(name);
|
||||
}
|
||||
} else {
|
||||
list3[lib.character[i][5][2]].push(name);
|
||||
list3[lib.character[i].stoneModeData[2]].push(name);
|
||||
}
|
||||
}
|
||||
if (_status.mode == "deck") {
|
||||
|
@ -2415,8 +2415,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
var list = [];
|
||||
event.list = list;
|
||||
for (i in lib.character) {
|
||||
if (lib.character[i][4] && lib.character[i][4].includes("minskin")) continue;
|
||||
if (lib.character[i][4] && lib.character[i][4].includes("stonehidden")) continue;
|
||||
if (lib.character[i].isMinskin) continue;
|
||||
if (lib.character[i].isHiddenInStoneMode) continue;
|
||||
if (lib.config.forbidstone.includes(i)) continue;
|
||||
if (lib.filter.characterDisabled(i)) continue;
|
||||
list.push(i);
|
||||
|
@ -5867,7 +5867,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
return target.isMin();
|
||||
},
|
||||
content: function () {
|
||||
target.clearSkills();
|
||||
target.clearSkills(true);
|
||||
target.init("stone_qingwa");
|
||||
target.noPhaseDelay = true;
|
||||
},
|
||||
|
@ -7232,10 +7232,10 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
var list = [];
|
||||
for (var i in lib.character) {
|
||||
if (
|
||||
lib.character[i][4].includes("stone") &&
|
||||
!lib.character[i][4].includes("stonehidden") &&
|
||||
lib.character[i][5] &&
|
||||
lib.character[i][5][0] == num
|
||||
lib.character[i].isFellowInStoneMode &&
|
||||
!lib.character[i].isHiddenInStoneMode &&
|
||||
lib.character[i].stoneModeData &&
|
||||
lib.character[i].stoneModeData[0] == num
|
||||
) {
|
||||
list.push(i);
|
||||
}
|
||||
|
@ -7787,10 +7787,10 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
var list = [];
|
||||
for (var i in lib.character) {
|
||||
if (
|
||||
lib.character[i][4].includes("stone") &&
|
||||
!lib.character[i][4].includes("stonehidden") &&
|
||||
lib.character[i][5] &&
|
||||
lib.character[i][5][0] == 1
|
||||
lib.character[i].isFellowInStoneMode &&
|
||||
!lib.character[i].isHiddenInStoneMode &&
|
||||
lib.character[i].stoneModeData &&
|
||||
lib.character[i].stoneModeData[0] == 1
|
||||
) {
|
||||
list.push(i);
|
||||
}
|
||||
|
@ -10366,9 +10366,9 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
var list = [];
|
||||
var list2 = [];
|
||||
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);
|
||||
} else if (lib.character[i][4].includes("stonelegend")) {
|
||||
} else if (lib.character[i].trashBin.includes("stonelegend")) {
|
||||
list2.push(i);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -85,9 +85,6 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
lib.mechlist.push(i);
|
||||
}
|
||||
lib.character[i] = lib.characterPack.mode_tafang[i];
|
||||
if (!lib.character[i][4]) {
|
||||
lib.character[i][4] = [];
|
||||
}
|
||||
}
|
||||
ui.create.cardsAsync();
|
||||
game.finishCards();
|
||||
|
@ -245,9 +242,9 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
for (i in lib.character) {
|
||||
if (i.indexOf("treasure_") == 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.character[i][4].includes("boss")) continue;
|
||||
if (lib.character[i].isBoss) continue;
|
||||
if (lib.filter.characterDisabled(i)) continue;
|
||||
list.push(i);
|
||||
}
|
||||
|
|
|
@ -717,9 +717,6 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
ui.arena.classList.add("choose-character");
|
||||
for (var i in lib.characterPack.mode_versus) {
|
||||
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_gongshenyueying = lib.characterIntro.huangyueying;
|
||||
|
@ -753,10 +750,10 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
event.list = list;
|
||||
if (lib.characterPack.boss) {
|
||||
for (var i in lib.characterPack.boss) {
|
||||
if (!lib.character[i] && lib.characterPack.boss[i][4]) {
|
||||
if (!lib.character[i]) {
|
||||
if (
|
||||
lib.characterPack.boss[i][4].includes("jiangeboss") ||
|
||||
lib.characterPack.boss[i][4].includes("jiangemech")
|
||||
get.convertedCharacter(lib.characterPack.boss[i]).isJiangeBoss ||
|
||||
get.convertedCharacter(lib.characterPack.boss[i]).isJiangeMech
|
||||
) {
|
||||
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) {
|
||||
if (lib.character[i][4]) {
|
||||
if (lib.character[i][4].includes("jiangeboss")) {
|
||||
list[lib.character[i][1] + "boss"].push(i);
|
||||
continue;
|
||||
} else if (lib.character[i][4].includes("jiangemech")) {
|
||||
list[lib.character[i][1] + "mech"].push(i);
|
||||
continue;
|
||||
}
|
||||
if (lib.character[i].isJiangeBoss) {
|
||||
list[lib.character[i].group + "boss"].push(i);
|
||||
continue;
|
||||
} else if (lib.character[i].isJiangeMech) {
|
||||
list[lib.character[i].group + "mech"].push(i);
|
||||
continue;
|
||||
}
|
||||
if (lib.filter.characterDisabled(i)) continue;
|
||||
if (get.is.double(i)) continue;
|
||||
if (lib.character[i][1] == "wei") {
|
||||
if (lib.character[i].group == "wei") {
|
||||
list.weilist.push(i);
|
||||
} else if (lib.character[i][1] == "shu") {
|
||||
} else if (lib.character[i].group == "shu") {
|
||||
list.shulist.push(i);
|
||||
}
|
||||
}
|
||||
|
@ -821,10 +816,8 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
};
|
||||
var createCharacterDialog = function () {
|
||||
event.dialogxx = ui.create.characterDialog("heightset", function (name) {
|
||||
if (lib.character[name][4]) {
|
||||
if (lib.character[name][4].includes("jiangeboss")) return true;
|
||||
if (lib.character[name][4].includes("jiangemech")) return true;
|
||||
}
|
||||
if (lib.character[name].isJiangeBoss) return true;
|
||||
if (lib.character[name].isJiangeMech) return true;
|
||||
if (lib.character[name][1] != game.me.identity) return true;
|
||||
});
|
||||
if (ui.cheat2) {
|
||||
|
@ -1753,7 +1746,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
if (event.filterChoice(i)) continue;
|
||||
if (lib.filter.characterDisabled(i)) continue;
|
||||
event.list.push(i);
|
||||
if (lib.character[i][4] && lib.character[i][4].includes("zhu")) {
|
||||
if (lib.character[i].isZhugong) {
|
||||
list2.push(i);
|
||||
}
|
||||
}
|
||||
|
@ -3455,7 +3448,7 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
|
|||
if (_status.event.player.identity == "zhu") {
|
||||
if (Math.random() < 0.8) {
|
||||
var info = lib.character[button.link];
|
||||
if (!info[4] || !info[4].includes("zhu")) {
|
||||
if (!info || !info.isZhugong) {
|
||||
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
|
||||
*/
|
||||
addCharacter(name, information) {
|
||||
//TODO: 这一坨也要改
|
||||
const extensionName = _status.extension || information.extension,
|
||||
character = [
|
||||
information.sex,
|
||||
|
@ -4731,6 +4732,7 @@ export class Game {
|
|||
let extname = _status.extension || "扩展";
|
||||
let gzFlag = false;
|
||||
packagename = packagename || extname;
|
||||
//TODO: 把这里一大坨改成新写法
|
||||
for (let i in pack) {
|
||||
if (i == "mode") {
|
||||
if (pack[i] == "guozhan") gzFlag = true;
|
||||
|
|
|
@ -31,6 +31,15 @@ export class Get {
|
|||
const [major, minor, patch] = result[1].split(".");
|
||||
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[] 形式的所有牌,用于印卡将遍历
|
||||
* @param {Function} filter
|
||||
|
@ -591,7 +600,7 @@ export class Get {
|
|||
/**
|
||||
* @overload
|
||||
* @param { string } name
|
||||
* @returns { Character }
|
||||
* @returns { import("../library/element/character").Character }
|
||||
*/
|
||||
/**
|
||||
* @template { 0 | 1 | 2 | 3 | 4 } T
|
||||
|
@ -604,7 +613,7 @@ export class Get {
|
|||
let info = lib.character[name];
|
||||
if (!info) {
|
||||
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 (!info) info = [];
|
||||
|
@ -616,10 +625,8 @@ export class Get {
|
|||
}
|
||||
characterInitFilter(name) {
|
||||
const info = get.character(name);
|
||||
if (!info || !info[4]) return [];
|
||||
const filter = info[4].find((tag) => tag.startsWith("InitFilter"));
|
||||
if (!filter) return [];
|
||||
return filter.split(":").slice(1);
|
||||
if (!info) return [];
|
||||
return info.initFilters || [];
|
||||
}
|
||||
characterIntro(name) {
|
||||
if (lib.characterIntro[name]) return lib.characterIntro[name];
|
||||
|
@ -638,15 +645,8 @@ export class Get {
|
|||
return "暂无武将介绍";
|
||||
}
|
||||
bordergroup(info, raw) {
|
||||
if (!Array.isArray(info)) {
|
||||
info = lib.character[info];
|
||||
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] || "";
|
||||
if(info.groupBorder) return info.groupBorder;
|
||||
return raw ? "" : info.group || "";
|
||||
}
|
||||
groupnature(group, method) {
|
||||
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.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 (lib.character[name] && lib.character[name][4]) {
|
||||
if (lib.character[name]) {
|
||||
if (
|
||||
lib.character[name][4].includes("boss") ||
|
||||
lib.character[name][4].includes("bossallowed") ||
|
||||
lib.character[name][4].includes("hiddenboss")
|
||||
lib.character[name].isBoss ||
|
||||
lib.character[name].isBossAllowed ||
|
||||
lib.character[name].isHiddenBoss
|
||||
) {
|
||||
return num ? Math.round((9 * (num - 1)) / 8 + 1) : "sp";
|
||||
}
|
||||
|
@ -2592,14 +2592,11 @@ export class Get {
|
|||
for (var i in lib.character) {
|
||||
if (lib.filter.characterDisabled(i)) continue;
|
||||
if (lib.filter.characterDisabled2(i)) continue;
|
||||
if (lib.character[i][4]) {
|
||||
if (lib.character[i][4].includes("boss")) continue;
|
||||
if (lib.character[i][4].includes("hiddenboss")) continue;
|
||||
if (lib.character[i][4].includes("minskin")) continue;
|
||||
if (lib.character[i][4].includes("unseen")) continue;
|
||||
}
|
||||
for (var j = 0; j < lib.character[i][3].length; j++) {
|
||||
var skill = lib.character[i][3][j];
|
||||
if (lib.character[i].isBoss) continue;
|
||||
if (lib.character[i].isHiddenBoss) continue;
|
||||
if (lib.character[i].isMinskin) continue;
|
||||
if (lib.character[i].isUnseen) continue;
|
||||
for (var skill of lib.character[i].skills) {
|
||||
var info = lib.skill[skill];
|
||||
if (lib.filter.skillDisabled(skill)) continue;
|
||||
if (func && !func(info, skill, i)) continue;
|
||||
|
@ -2613,14 +2610,11 @@ export class Get {
|
|||
gainableSkillsName(name, func) {
|
||||
var list = [];
|
||||
if (name && lib.character[name]) {
|
||||
if (lib.character[name][4]) {
|
||||
if (lib.character[name][4].includes("boss")) return list;
|
||||
if (lib.character[name][4].includes("hiddenboss")) return list;
|
||||
if (lib.character[name][4].includes("minskin")) return list;
|
||||
if (lib.character[name][4].includes("unseen")) return list;
|
||||
}
|
||||
for (var j = 0; j < lib.character[name][3].length; j++) {
|
||||
var skill = lib.character[name][3][j];
|
||||
if (lib.character[name].isBoss) return list;
|
||||
if (lib.character[name].isHiddenBoss) return list;
|
||||
if (lib.character[name].isMinskin) return list;
|
||||
if (lib.character[name].isUnseen) return list;
|
||||
for (var skill of lib.character[name].skills) {
|
||||
var info = lib.skill[skill];
|
||||
if (lib.filter.skillDisabled(skill)) continue;
|
||||
if (func && !func(info, skill, name)) continue;
|
||||
|
@ -2938,15 +2932,7 @@ export class Get {
|
|||
}
|
||||
skillintro(name, learn, learn2) {
|
||||
var str = "";
|
||||
var infoitem = lib.character[name];
|
||||
if (!infoitem) {
|
||||
for (var itemx in lib.characterPack) {
|
||||
if (lib.characterPack[itemx][name]) {
|
||||
infoitem = lib.characterPack[itemx][name];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
var infoitem = get.character(name);
|
||||
var skills = infoitem[3];
|
||||
var opacity;
|
||||
for (var i = 0; i < skills.length; i++) {
|
||||
|
@ -3614,7 +3600,7 @@ export class Get {
|
|||
if (avatar2) {
|
||||
if (
|
||||
gzbool &&
|
||||
lib.character[nameskin2][4].includes("gzskin") &&
|
||||
lib.character[nameskin2].hasSkinInGuozhan &&
|
||||
lib.config.mode_config.guozhan.guozhanSkin
|
||||
)
|
||||
node.node.avatar2.setBackground(nameskin2, "character");
|
||||
|
@ -3622,7 +3608,7 @@ export class Get {
|
|||
} else {
|
||||
if (
|
||||
gzbool &&
|
||||
lib.character[nameskin2][4].includes("gzskin") &&
|
||||
lib.character[nameskin2].hasSkinInGuozhan &&
|
||||
lib.config.mode_config.guozhan.guozhanSkin
|
||||
)
|
||||
node.node.avatar.setBackground(nameskin2, "character");
|
||||
|
@ -3637,7 +3623,7 @@ export class Get {
|
|||
} else {
|
||||
if (
|
||||
gzbool &&
|
||||
lib.character[nameskin2][4].includes("gzskin") &&
|
||||
lib.character[nameskin2].hasSkinInGuozhan &&
|
||||
lib.config.mode_config.guozhan.guozhanSkin
|
||||
)
|
||||
button.setBackground(nameskin2, "character", "noskin");
|
||||
|
@ -4240,7 +4226,7 @@ export class Get {
|
|||
delete lib.config.skin[nameskin];
|
||||
if (
|
||||
gzbool &&
|
||||
lib.character[nameskin2][4].includes("gzskin") &&
|
||||
lib.character[nameskin2].hasSkinInGuozhan &&
|
||||
lib.config.mode_config.guozhan.guozhanSkin
|
||||
)
|
||||
node.setBackground(nameskin2, "character");
|
||||
|
@ -4254,7 +4240,7 @@ export class Get {
|
|||
} else {
|
||||
if (
|
||||
gzbool &&
|
||||
lib.character[nameskin2][4].includes("gzskin") &&
|
||||
lib.character[nameskin2].hasSkinInGuozhan &&
|
||||
lib.config.mode_config.guozhan.guozhanSkin
|
||||
)
|
||||
button.setBackground(nameskin2, "character", "noskin");
|
||||
|
|
|
@ -206,15 +206,13 @@ export class Is {
|
|||
/**
|
||||
* 是否是双势力武将
|
||||
* @param { string } name
|
||||
* @param { string[] } array
|
||||
* @param { string[] } [array]
|
||||
* @returns { boolean | string[] }
|
||||
*/
|
||||
double(name, array) {
|
||||
const extraInformations = get.character(name, 4);
|
||||
if (!extraInformations) return false;
|
||||
for (const extraInformation of extraInformations) {
|
||||
if (!extraInformation.startsWith("doublegroup:")) continue;
|
||||
return array ? extraInformation.split(":").slice(1) : true;
|
||||
const extraInformation = get.character(name);
|
||||
if(extraInformation && extraInformation.doubleGroup && extraInformation.doubleGroup.length>0){
|
||||
return array ? extraInformation.doubleGroup.slice(0) : true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -21,11 +21,18 @@ export function canUseHttpProtocol() {
|
|||
// 手机端
|
||||
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自定义能升级的渠道,比如判断版本
|
||||
// @ts-ignore
|
||||
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") {
|
||||
|
@ -55,11 +62,19 @@ export function sendUpdate() {
|
|||
// 手机端
|
||||
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层传递升级完成的信息
|
||||
// @ts-ignore
|
||||
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") {
|
||||
|
|
|
@ -307,20 +307,32 @@ export async function onload(resetGameTimeout) {
|
|||
}
|
||||
for (k in character[i][j]) {
|
||||
if (j == "character") {
|
||||
if (!character[i][j][k][4]) {
|
||||
character[i][j][k][4] = [];
|
||||
}
|
||||
if (
|
||||
character[i][j][k][4].includes("boss") ||
|
||||
character[i][j][k][4].includes("hiddenboss")
|
||||
) {
|
||||
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++) {
|
||||
lib.skilllist.add(character[i][j][k][3][l]);
|
||||
if (Array.isArray(character[i][j][k])) {
|
||||
if (!character[i][j][k][4]) {
|
||||
character[i][j][k][4] = [];
|
||||
}
|
||||
if (
|
||||
character[i][j][k][4].includes("boss") ||
|
||||
character[i][j][k][4].includes("hiddenboss")
|
||||
) {
|
||||
lib.config.forbidai.add(k);
|
||||
}
|
||||
for (var l = 0; l < character[i][j][k][3].length; 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 (
|
||||
|
@ -346,6 +358,8 @@ export async function onload(resetGameTimeout) {
|
|||
nopop: character[i][j][k].nopop,
|
||||
derivation: character[i][j][k].derivation,
|
||||
};
|
||||
} else if (j === 'character') {
|
||||
lib.character[k] = character[i][j][k];
|
||||
} else {
|
||||
Object.defineProperty(
|
||||
lib[j],
|
||||
|
@ -649,8 +663,7 @@ export async function onload(resetGameTimeout) {
|
|||
console.log(`加载《${lib.extensions[i][0]}》扩展的content时出现错误。`, e);
|
||||
if (!lib.config.extension_alert)
|
||||
alert(
|
||||
`加载《${
|
||||
lib.extensions[i][0]
|
||||
`加载《${lib.extensions[i][0]
|
||||
}》扩展的content时出现错误。\n该错误本身可能并不影响扩展运行。您可以在“设置→通用→无视扩展报错”中关闭此弹窗。\n${decodeURI(
|
||||
e.stack
|
||||
)}`
|
||||
|
|
|
@ -150,7 +150,7 @@ Reflect.defineProperty(HTMLDivElement.prototype, "setBackground", {
|
|||
if (
|
||||
lib.config.mode_config.guozhan.guozhanSkin &&
|
||||
lib.character[name] &&
|
||||
lib.character[name][4].includes("gzskin")
|
||||
lib.character[name].hasSkinInGuozhan
|
||||
)
|
||||
gzbool = true;
|
||||
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(
|
||||
player,
|
||||
"获得了技能",
|
||||
...event.addSkill.map((i) => {
|
||||
...event.addSkill.filter(i => i in lib.translate).map((i) => {
|
||||
return "#g【" + get.translation(i) + "】";
|
||||
})
|
||||
);
|
||||
|
@ -141,7 +141,7 @@ export const Content = {
|
|||
game.log(
|
||||
player,
|
||||
"失去了技能",
|
||||
...event.removeSkill.map((i) => {
|
||||
...event.removeSkill.filter(i => i in lib.translate).map((i) => {
|
||||
return "#g【" + get.translation(i) + "】";
|
||||
})
|
||||
);
|
||||
|
@ -2400,6 +2400,7 @@ export const Content = {
|
|||
}
|
||||
for (j in character[i]) {
|
||||
if (j == "mode" || j == "forbid" || j == "characterSort") continue;
|
||||
//TODO: 改掉这第二坨
|
||||
for (k in character[i][j]) {
|
||||
if (j == "character") {
|
||||
if (!character[i][j][k][4]) {
|
||||
|
|
|
@ -10,3 +10,4 @@ export { GameEventPromise } from "./gameEventPromise.js";
|
|||
export { NodeWS } from "./nodeWS.js";
|
||||
export { Player } from "./player.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);
|
||||
}
|
||||
/**
|
||||
* @param { string } clan 氏族名称
|
||||
* @param { boolean } unseen 是否无视暗将的限制
|
||||
* @returns { string[] }
|
||||
*/
|
||||
hasClan(clan, unseen) {
|
||||
getClans(unseen){
|
||||
const clans = [];
|
||||
if (unseen || !this.isUnseen(0)) {
|
||||
let info = lib.character[this.name1];
|
||||
if (info && info[4]) {
|
||||
for (let i of info[4]) {
|
||||
if (typeof i == "string" && i.startsWith("clan:") && i.slice(5) == clan) return true;
|
||||
}
|
||||
}
|
||||
if (info && info.clans) clans.addArray(info.clans);
|
||||
}
|
||||
if (this.name2 && (unseen || !this.isUnseen(1))) {
|
||||
let info = lib.character[this.name2];
|
||||
if (info && info[4]) {
|
||||
for (let i of info[4]) {
|
||||
if (typeof i == "string" && i.startsWith("clan:") && i.slice(5) == clan) return true;
|
||||
}
|
||||
}
|
||||
if (info && info.clans) clans.addArray(info.clans);
|
||||
}
|
||||
return false;
|
||||
return clans;
|
||||
}
|
||||
/**
|
||||
* @param { string } clan 氏族名称
|
||||
* @param { boolean } unseen 是否无视暗将的限制
|
||||
* @returns { boolean }
|
||||
*/
|
||||
hasClan(clan, unseen) {
|
||||
return this.getClans(unseen).includes(clan);
|
||||
}
|
||||
/**
|
||||
* @param { string } skill
|
||||
|
@ -2358,17 +2359,14 @@ export class Player extends HTMLDivElement {
|
|||
}
|
||||
var info = lib.character[character];
|
||||
if (!info) {
|
||||
info = ["", "", 1, [], []];
|
||||
info = get.convertedCharacter(["", "", 1, [], []]);
|
||||
}
|
||||
if (!info[4]) {
|
||||
info[4] = [];
|
||||
}
|
||||
var skills = info[3].slice(0);
|
||||
var skills = info.skills.slice(0);
|
||||
this.clearSkills(true);
|
||||
|
||||
var hp1 = get.infoHp(info[2]);
|
||||
var maxHp1 = get.infoMaxHp(info[2]);
|
||||
var hujia1 = get.infoHujia(info[2]);
|
||||
var hp1 = info.hp;
|
||||
var maxHp1 = info.maxHp;
|
||||
var hujia1 = info.hujia;
|
||||
|
||||
this.name = character;
|
||||
this.name1 = character;
|
||||
|
@ -2377,8 +2375,8 @@ export class Player extends HTMLDivElement {
|
|||
name: character,
|
||||
name2: character2,
|
||||
};
|
||||
this.sex = info[0];
|
||||
this.group = info[1];
|
||||
this.sex = info.sex;
|
||||
this.group = info.group;
|
||||
this.hp = hp1;
|
||||
this.maxHp = maxHp1;
|
||||
this.hujia = hujia1;
|
||||
|
@ -2389,7 +2387,7 @@ export class Player extends HTMLDivElement {
|
|||
if (this.classList.contains("minskin") && this.node.name.querySelectorAll("br").length >= 4) {
|
||||
this.node.name.classList.add("long");
|
||||
}
|
||||
if (info[4].includes("hiddenSkill") && !this.noclick) {
|
||||
if (info.hasHiddenSkill && !this.noclick) {
|
||||
if (!this.hiddenSkills) this.hiddenSkills = [];
|
||||
this.hiddenSkills.addArray(skills);
|
||||
skills = [];
|
||||
|
@ -2401,16 +2399,13 @@ export class Player extends HTMLDivElement {
|
|||
if (character2 && lib.character[character2]) {
|
||||
var info2 = lib.character[character2];
|
||||
if (!info2) {
|
||||
info2 = ["", "", 1, [], []];
|
||||
}
|
||||
if (!info2[4]) {
|
||||
info2[4] = [];
|
||||
info2 = get.convertedCharacter(["", "", 1, [], []]);
|
||||
}
|
||||
|
||||
this.name2 = character2;
|
||||
var hp2 = get.infoHp(info2[2]);
|
||||
var maxHp2 = get.infoMaxHp(info2[2]);
|
||||
var hujia2 = get.infoHujia(info2[2]);
|
||||
var hp2 = info2.hp;
|
||||
var maxHp2 = info2.maxHp;
|
||||
var hujia2 = info2.hujia;
|
||||
this.hujia += hujia2;
|
||||
var double_hp;
|
||||
if (_status.connectMode || get.mode() == "single") {
|
||||
|
@ -2445,12 +2440,12 @@ export class Player extends HTMLDivElement {
|
|||
this.hp = hp1 + hp2 - 3;
|
||||
}
|
||||
}
|
||||
if (info2[4].includes("hiddenSkill") && !this.noclick) {
|
||||
if (info2.hasHiddenSkill && !this.noclick) {
|
||||
if (!this.hiddenSkills) this.hiddenSkills = [];
|
||||
this.hiddenSkills.addArray(info2[3]);
|
||||
this.hiddenSkills.addArray(info2.skills);
|
||||
hidden = true;
|
||||
skills.add("g_hidden_ai");
|
||||
} else skills = skills.concat(info2[3]);
|
||||
} else skills = skills.concat(info2.skills);
|
||||
}
|
||||
if (this.storage.nohp || hidden) {
|
||||
this.storage.rawHp = this.hp;
|
||||
|
@ -2493,18 +2488,15 @@ export class Player extends HTMLDivElement {
|
|||
this.classList.add("fullskin");
|
||||
var info = lib.character[character];
|
||||
if (!info) {
|
||||
info = ["", "", 1, [], []];
|
||||
}
|
||||
if (!info[4]) {
|
||||
info[4] = [];
|
||||
info = get.convertedCharacter(["", "", 1, [], []]);
|
||||
}
|
||||
|
||||
if (!game.minskin && get.is.newLayout() && !info[4].includes("minskin")) {
|
||||
if (!game.minskin && get.is.newLayout() && !info.isMinskin) {
|
||||
this.classList.remove("minskin");
|
||||
this.node.avatar.setBackground(character, "character");
|
||||
} else {
|
||||
this.node.avatar.setBackground(character, "character");
|
||||
if (info[4].includes("minskin")) {
|
||||
if (info.isMinskin) {
|
||||
this.classList.add("minskin");
|
||||
} else if (game.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) {
|
||||
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");
|
||||
this.classList.add(_status.video ? "unseen_v" : "unseen");
|
||||
if (!this.node.name_seat && !_status.video) {
|
||||
|
@ -2539,10 +2531,7 @@ export class Player extends HTMLDivElement {
|
|||
if (character2 && lib.character[character2]) {
|
||||
var info2 = lib.character[character2];
|
||||
if (!info2) {
|
||||
info2 = ["", "", 1, [], []];
|
||||
}
|
||||
if (!info2[4]) {
|
||||
info2[4] = [];
|
||||
info2 = get.convertedCharacter(["", "", 1, [], []]);
|
||||
}
|
||||
this.classList.add("fullskin2");
|
||||
this.node.avatar2.setBackground(character2, "character");
|
||||
|
@ -2550,7 +2539,7 @@ export class Player extends HTMLDivElement {
|
|||
this.name2 = character2;
|
||||
|
||||
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");
|
||||
this.classList.add(_status.video ? "unseen2_v" : "unseen2");
|
||||
}
|
||||
|
@ -2573,6 +2562,7 @@ export class Player extends HTMLDivElement {
|
|||
* @param { string } character
|
||||
*/
|
||||
changeSkin(map, character) {
|
||||
//TODO: 这一坨改不动了 谁爱改谁改
|
||||
if (!map || !character) {
|
||||
console.warn("error: no sourceMap or character to changeSkin", get.translation(this));
|
||||
return;
|
||||
|
@ -7608,6 +7598,7 @@ export class Player extends HTMLDivElement {
|
|||
}
|
||||
}
|
||||
game.broadcastAll(
|
||||
//TODO: 这里直接修改trashBin部分,后续需要修改为新写法
|
||||
function (player, skill, cfg) {
|
||||
lib.skill[skill] = {
|
||||
intro: {
|
||||
|
@ -7623,9 +7614,9 @@ export class Player extends HTMLDivElement {
|
|||
if (Array.isArray(cfg.image)) {
|
||||
cfg.image.forEach((image) => lib.character[skill][4].push(image));
|
||||
} else if (typeof cfg.image == "string") {
|
||||
lib.character[skill][4].push(cfg.image);
|
||||
lib.character[skill].trashBin.push(cfg.image);
|
||||
} 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);
|
||||
player.storage[skill] = cfg;
|
||||
|
@ -9312,7 +9303,7 @@ export class Player extends HTMLDivElement {
|
|||
const player = this;
|
||||
for (const name of [player.name, player.name1, player.name2]) {
|
||||
if (name && lib.character[name]) {
|
||||
const filter = get.characterInitFilter(name);
|
||||
const filter = lib.character[name].initFilters;
|
||||
if (!filter.includes(tag)) continue;
|
||||
if (lib.characterInitFilter[name] && lib.characterInitFilter[name](tag) === false) continue;
|
||||
return true;
|
||||
|
|
|
@ -44,7 +44,7 @@ export class Library {
|
|||
characterDefaultPicturePath = characterDefaultPicturePath;
|
||||
compatibleEdition = Boolean(
|
||||
typeof nonameInitialized == "string" &&
|
||||
nonameInitialized.match(/\/(?:com\.widget|yuri\.nakamura)\.noname\//)
|
||||
nonameInitialized.match(/\/(?:com\.widget|yuri\.nakamura)\.noname\//)
|
||||
);
|
||||
changeLog = [];
|
||||
updates = [];
|
||||
|
@ -342,19 +342,19 @@ export class Library {
|
|||
typeof yingbianZhuzhanAI == "function"
|
||||
? yingbianZhuzhanAI(player, card, source, targets)
|
||||
: (cardx) => {
|
||||
var info = get.info(card);
|
||||
if (info && info.ai && info.ai.yingbian) {
|
||||
var ai = info.ai.yingbian(
|
||||
card,
|
||||
source,
|
||||
targets,
|
||||
player
|
||||
);
|
||||
if (!ai) return 0;
|
||||
return ai - get.value(cardx);
|
||||
} else if (get.attitude(player, source) <= 0) return 0;
|
||||
return 5 - get.value(cardx);
|
||||
},
|
||||
var info = get.info(card);
|
||||
if (info && info.ai && info.ai.yingbian) {
|
||||
var ai = info.ai.yingbian(
|
||||
card,
|
||||
source,
|
||||
targets,
|
||||
player
|
||||
);
|
||||
if (!ai) return 0;
|
||||
return ai - get.value(cardx);
|
||||
} else if (get.attitude(player, source) <= 0) return 0;
|
||||
return 5 - get.value(cardx);
|
||||
},
|
||||
});
|
||||
if (!game.online) return;
|
||||
_status.event._resultid = id;
|
||||
|
@ -1170,8 +1170,7 @@ export class Library {
|
|||
unfrequent: true,
|
||||
item: {},
|
||||
intro: () =>
|
||||
`获取在线扩展时的地址。当前地址:${document.createElement("br").outerHTML}${
|
||||
lib.config.extension_sources[lib.config.extension_source]
|
||||
`获取在线扩展时的地址。当前地址:${document.createElement("br").outerHTML}${lib.config.extension_sources[lib.config.extension_source]
|
||||
}`,
|
||||
},
|
||||
extension_create: {
|
||||
|
@ -1837,7 +1836,7 @@ export class Library {
|
|||
} else {
|
||||
this.lastChild.innerHTML =
|
||||
lib.configMenu.appearence.config.image_background.item[
|
||||
lib.config.image_background
|
||||
lib.config.image_background
|
||||
];
|
||||
return;
|
||||
}
|
||||
|
@ -1860,7 +1859,7 @@ export class Library {
|
|||
} else {
|
||||
this.lastChild.innerHTML =
|
||||
lib.configMenu.appearence.config.image_background.item[
|
||||
lib.config.image_background
|
||||
lib.config.image_background
|
||||
];
|
||||
return;
|
||||
}
|
||||
|
@ -2064,8 +2063,8 @@ export class Library {
|
|||
}
|
||||
ui.css.card_stylesheet = lib.init.sheet(
|
||||
".card:not(*:empty){background-image:url(" +
|
||||
fileLoadedEvent.target.result +
|
||||
")}"
|
||||
fileLoadedEvent.target.result +
|
||||
")}"
|
||||
);
|
||||
};
|
||||
fileReader.readAsDataURL(fileToLoad, "UTF-8");
|
||||
|
@ -2234,8 +2233,8 @@ export class Library {
|
|||
}
|
||||
ui.css.cardback_stylesheet = lib.init.sheet(
|
||||
".card:empty,.card.infohidden{background-image:url(" +
|
||||
fileLoadedEvent.target.result +
|
||||
")}"
|
||||
fileLoadedEvent.target.result +
|
||||
")}"
|
||||
);
|
||||
game.getDB("image", "cardback_style2", function (fileToLoad) {
|
||||
if (!fileToLoad) return;
|
||||
|
@ -2246,8 +2245,8 @@ export class Library {
|
|||
}
|
||||
ui.css.cardback_stylesheet2 = lib.init.sheet(
|
||||
".card.infohidden:not(.infoflip){background-image:url(" +
|
||||
fileLoadedEvent.target.result +
|
||||
")}"
|
||||
fileLoadedEvent.target.result +
|
||||
")}"
|
||||
);
|
||||
};
|
||||
fileReader.readAsDataURL(fileToLoad, "UTF-8");
|
||||
|
@ -2404,8 +2403,8 @@ export class Library {
|
|||
}
|
||||
ui.css.hp_stylesheet1 = lib.init.sheet(
|
||||
'.hp:not(.text):not(.actcount)[data-condition="high"]>div:not(.lost){background-image:url(' +
|
||||
fileLoadedEvent.target.result +
|
||||
")}"
|
||||
fileLoadedEvent.target.result +
|
||||
")}"
|
||||
);
|
||||
};
|
||||
fileReader.readAsDataURL(fileToLoad, "UTF-8");
|
||||
|
@ -2419,8 +2418,8 @@ export class Library {
|
|||
}
|
||||
ui.css.hp_stylesheet2 = lib.init.sheet(
|
||||
'.hp:not(.text):not(.actcount)[data-condition="mid"]>div:not(.lost){background-image:url(' +
|
||||
fileLoadedEvent.target.result +
|
||||
")}"
|
||||
fileLoadedEvent.target.result +
|
||||
")}"
|
||||
);
|
||||
};
|
||||
fileReader.readAsDataURL(fileToLoad, "UTF-8");
|
||||
|
@ -2434,8 +2433,8 @@ export class Library {
|
|||
}
|
||||
ui.css.hp_stylesheet3 = lib.init.sheet(
|
||||
'.hp:not(.text):not(.actcount)[data-condition="low"]>div:not(.lost){background-image:url(' +
|
||||
fileLoadedEvent.target.result +
|
||||
")}"
|
||||
fileLoadedEvent.target.result +
|
||||
")}"
|
||||
);
|
||||
};
|
||||
fileReader.readAsDataURL(fileToLoad, "UTF-8");
|
||||
|
@ -2449,8 +2448,8 @@ export class Library {
|
|||
}
|
||||
ui.css.hp_stylesheet4 = lib.init.sheet(
|
||||
".hp:not(.text):not(.actcount)>.lost{background-image:url(" +
|
||||
fileLoadedEvent.target.result +
|
||||
")}"
|
||||
fileLoadedEvent.target.result +
|
||||
")}"
|
||||
);
|
||||
};
|
||||
fileReader.readAsDataURL(fileToLoad, "UTF-8");
|
||||
|
@ -2571,8 +2570,8 @@ export class Library {
|
|||
}
|
||||
ui.css.player_stylesheet = lib.init.sheet(
|
||||
'#window .player{background-image:url("' +
|
||||
fileLoadedEvent.target.result +
|
||||
'");background-size:100% 100%;}'
|
||||
fileLoadedEvent.target.result +
|
||||
'");background-size:100% 100%;}'
|
||||
);
|
||||
};
|
||||
fileReader.readAsDataURL(fileToLoad, "UTF-8");
|
||||
|
@ -2709,8 +2708,8 @@ export class Library {
|
|||
ui.css.border_stylesheet.id = "ui.css.border";
|
||||
ui.css.border_stylesheet.sheet.insertRule(
|
||||
'#window .player>.framebg{display:block;background-image:url("' +
|
||||
fileLoadedEvent.target.result +
|
||||
'")}',
|
||||
fileLoadedEvent.target.result +
|
||||
'")}',
|
||||
0
|
||||
);
|
||||
ui.css.border_stylesheet.sheet.insertRule(
|
||||
|
@ -2730,18 +2729,18 @@ export class Library {
|
|||
}
|
||||
ui.css.border_stylesheet.sheet.insertRule(
|
||||
'#window .player>.framebg,#window #arena.long.mobile:not(.fewplayer) .player[data-position="0"]>.framebg{display:block;background-image:url("' +
|
||||
lib.assetURL +
|
||||
"theme/style/player/" +
|
||||
layout +
|
||||
'1.png")}',
|
||||
lib.assetURL +
|
||||
"theme/style/player/" +
|
||||
layout +
|
||||
'1.png")}',
|
||||
0
|
||||
);
|
||||
ui.css.border_stylesheet.sheet.insertRule(
|
||||
'#window #arena.long:not(.fewplayer) .player>.framebg, #arena.oldlayout .player>.framebg{background-image:url("' +
|
||||
lib.assetURL +
|
||||
"theme/style/player/" +
|
||||
layout +
|
||||
'3.png")}',
|
||||
lib.assetURL +
|
||||
"theme/style/player/" +
|
||||
layout +
|
||||
'3.png")}',
|
||||
0
|
||||
);
|
||||
ui.css.border_stylesheet.sheet.insertRule(
|
||||
|
@ -2924,8 +2923,8 @@ export class Library {
|
|||
}
|
||||
ui.css.menu_stylesheet = lib.init.sheet(
|
||||
'html #window>.dialog.popped,html .menu,html .menubg{background-image:url("' +
|
||||
fileLoadedEvent.target.result +
|
||||
'");background-size:cover}'
|
||||
fileLoadedEvent.target.result +
|
||||
'");background-size:cover}'
|
||||
);
|
||||
};
|
||||
fileReader.readAsDataURL(fileToLoad, "UTF-8");
|
||||
|
@ -2947,8 +2946,8 @@ export class Library {
|
|||
}
|
||||
ui.css.menu_stylesheet = lib.init.sheet(
|
||||
"html #window>.dialog.popped,html .menu,html .menubg{background-image:" +
|
||||
str +
|
||||
"}"
|
||||
str +
|
||||
"}"
|
||||
);
|
||||
}
|
||||
},
|
||||
|
@ -3062,8 +3061,8 @@ export class Library {
|
|||
}
|
||||
ui.css.control_stylesheet = lib.init.sheet(
|
||||
'#window .control,.menubutton:not(.active):not(.highlight):not(.red):not(.blue),#window #system>div>div{background-image:url("' +
|
||||
fileLoadedEvent.target.result +
|
||||
'")}'
|
||||
fileLoadedEvent.target.result +
|
||||
'")}'
|
||||
);
|
||||
};
|
||||
fileReader.readAsDataURL(fileToLoad, "UTF-8");
|
||||
|
@ -3086,14 +3085,14 @@ export class Library {
|
|||
if (layout == "wood") {
|
||||
ui.css.control_stylesheet = lib.init.sheet(
|
||||
"#window .control,#window .menubutton,#window #system>div>div,#window #system>div>.pressdown2{background-image:" +
|
||||
str +
|
||||
"}"
|
||||
str +
|
||||
"}"
|
||||
);
|
||||
} else {
|
||||
ui.css.control_stylesheet = lib.init.sheet(
|
||||
"#window .control,.menubutton:not(.active):not(.highlight):not(.red):not(.blue),#window #system>div>div{background-image:" +
|
||||
str +
|
||||
"}"
|
||||
str +
|
||||
"}"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -3128,20 +3127,20 @@ export class Library {
|
|||
}
|
||||
ui.css.buttonsheet = lib.init.sheet(
|
||||
"#system>div>div, .caption>div>.tdnode{padding-top:" +
|
||||
cbnum1 +
|
||||
"px !important;padding-bottom:" +
|
||||
cbnum2 +
|
||||
"px !important}",
|
||||
cbnum1 +
|
||||
"px !important;padding-bottom:" +
|
||||
cbnum2 +
|
||||
"px !important}",
|
||||
"#control>.control>div{padding-top:" +
|
||||
cbnum3 +
|
||||
"px;padding-bottom:" +
|
||||
cbnum4 +
|
||||
"px}",
|
||||
cbnum3 +
|
||||
"px;padding-bottom:" +
|
||||
cbnum4 +
|
||||
"px}",
|
||||
"#control>.control{padding-top:" +
|
||||
cbnum5 +
|
||||
"px;padding-bottom:" +
|
||||
cbnum6 +
|
||||
"px}"
|
||||
cbnum5 +
|
||||
"px;padding-bottom:" +
|
||||
cbnum6 +
|
||||
"px}"
|
||||
);
|
||||
}
|
||||
},
|
||||
|
@ -8484,10 +8483,10 @@ export class Library {
|
|||
genAwait(item) {
|
||||
return gnc.is.generator(item)
|
||||
? gnc.of(function* () {
|
||||
for (const content of item) {
|
||||
yield content;
|
||||
}
|
||||
})()
|
||||
for (const content of item) {
|
||||
yield content;
|
||||
}
|
||||
})()
|
||||
: Promise.resolve(item);
|
||||
}
|
||||
gnc = {
|
||||
|
@ -9209,9 +9208,9 @@ export class Library {
|
|||
log("键:" + (f - sf) + "/" + f);
|
||||
log(
|
||||
"已启用:" +
|
||||
(a + b + c + d + e + f - (sa + sb + sc + sd + se + sf)) +
|
||||
"/" +
|
||||
(a + b + c + d + e + f)
|
||||
(a + b + c + d + e + f - (sa + sb + sc + sd + se + sf)) +
|
||||
"/" +
|
||||
(a + b + c + d + e + f)
|
||||
);
|
||||
})();
|
||||
(function () {
|
||||
|
@ -10108,6 +10107,7 @@ export class Library {
|
|||
Control: Element.Control,
|
||||
Client: Element.Client,
|
||||
NodeWS: Element.NodeWS,
|
||||
Character: Element.Character,
|
||||
ws: {
|
||||
onopen: function () {
|
||||
if (_status.connectCallback) {
|
||||
|
@ -10213,6 +10213,12 @@ export class Library {
|
|||
get nodews() {
|
||||
return this.NodeWS.prototype;
|
||||
},
|
||||
/**
|
||||
* @legacy Use {@link lib.element.Character.prototype} instead.
|
||||
*/
|
||||
get character() {
|
||||
return this.Character.prototype;
|
||||
},
|
||||
};
|
||||
card = {
|
||||
/**
|
||||
|
@ -10525,9 +10531,9 @@ export class Library {
|
|||
return true;
|
||||
},
|
||||
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;
|
||||
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.characterFilter[i] && !lib.characterFilter[i](get.mode())) return true;
|
||||
if (_status.connectMode) {
|
||||
|
@ -10596,11 +10602,11 @@ export class Library {
|
|||
var info = lib.character[i];
|
||||
if (!info) return true;
|
||||
if (info[4]) {
|
||||
if (info[4].includes("boss")) return true;
|
||||
if (info[4].includes("hiddenboss")) return true;
|
||||
if (info[4].includes("minskin")) return true;
|
||||
if (info[4].includes("unseen")) return true;
|
||||
if (info[4].includes("forbidai") && (!_status.event.isMine || !_status.event.isMine()))
|
||||
if (info.isBoss) return true;
|
||||
if (info.isHiddenBoss) return true;
|
||||
if (info.isMinskin) return true;
|
||||
if (info.isUnseen) return true;
|
||||
if (info.isAiForbidden && (!_status.event.isMine || !_status.event.isMine()))
|
||||
return true;
|
||||
if (lib.characterFilter[i] && !lib.characterFilter[i](get.mode())) return true;
|
||||
}
|
||||
|
@ -11132,9 +11138,8 @@ export class Library {
|
|||
content: (storage, player) => {
|
||||
const stratagemFuryMax = _status.stratagemFuryMax,
|
||||
fury = storage || 0;
|
||||
return `当前怒气值:${
|
||||
typeof stratagemFuryMax == "number" ? `${fury}/${stratagemFuryMax}` : fury
|
||||
}`;
|
||||
return `当前怒气值:${typeof stratagemFuryMax == "number" ? `${fury}/${stratagemFuryMax}` : fury
|
||||
}`;
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -11207,7 +11212,7 @@ export class Library {
|
|||
return (
|
||||
((zhibi && !zhibi.includes(current)) ||
|
||||
get.effect(current, card, player, player) >=
|
||||
2 - Math.max(0, (storage.stratagem_fury || 0) - 1)) &&
|
||||
2 - Math.max(0, (storage.stratagem_fury || 0) - 1)) &&
|
||||
current.mayHaveShan(
|
||||
player,
|
||||
"use",
|
||||
|
@ -11261,16 +11266,16 @@ export class Library {
|
|||
const cardName = get.name(cards[0], player);
|
||||
return cardName
|
||||
? new lib.element.VCard({
|
||||
name: cardName,
|
||||
nature: get.nature(cards[0], player),
|
||||
suit: get.suit(cards[0], player),
|
||||
number: get.number(cards[0], player),
|
||||
isCard: true,
|
||||
cards: [cards[0]],
|
||||
storage: {
|
||||
stratagem_buffed: 1,
|
||||
},
|
||||
})
|
||||
name: cardName,
|
||||
nature: get.nature(cards[0], player),
|
||||
suit: get.suit(cards[0], player),
|
||||
number: get.number(cards[0], player),
|
||||
isCard: true,
|
||||
cards: [cards[0]],
|
||||
storage: {
|
||||
stratagem_buffed: 1,
|
||||
},
|
||||
})
|
||||
: new lib.element.VCard();
|
||||
}
|
||||
return null;
|
||||
|
@ -11288,9 +11293,8 @@ export class Library {
|
|||
)}点怒气。${prompt()}`;
|
||||
span.appendChild(li);
|
||||
});
|
||||
return `当你需要使用位于“强化表”内的非虚拟卡牌时,你可以消耗对应数量的怒气将其强化并使用。${
|
||||
document.createElement("hr").outerHTML
|
||||
}${span.outerHTML}`;
|
||||
return `当你需要使用位于“强化表”内的非虚拟卡牌时,你可以消耗对应数量的怒气将其强化并使用。${document.createElement("hr").outerHTML
|
||||
}${span.outerHTML}`;
|
||||
},
|
||||
onuse: (result, player) => {
|
||||
player.logSkill(result.skill);
|
||||
|
@ -11325,7 +11329,7 @@ export class Library {
|
|||
return (
|
||||
((zhibi && !zhibi.includes(current)) ||
|
||||
get.effect(current, card, player, player) >=
|
||||
2 - Math.max(0, (storage.stratagem_fury || 0) - 1)) &&
|
||||
2 - Math.max(0, (storage.stratagem_fury || 0) - 1)) &&
|
||||
current.mayHaveShan(
|
||||
player,
|
||||
"use",
|
||||
|
@ -12209,22 +12213,19 @@ export class Library {
|
|||
trigger: { global: "gameStart", player: "enterGame" },
|
||||
silent: true,
|
||||
content: function () {
|
||||
var list = [player.name, player.name1, player.name2];
|
||||
var list = [player.name1, player.name2];
|
||||
for (var i = 0; i < list.length; i++) {
|
||||
if (list[i] && 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];
|
||||
for (var j = 0; j < info[4].length; j++) {
|
||||
if (info[4][j].startsWith("dualside:")) {
|
||||
var name2 = info[4][j].slice(9);
|
||||
var info2 = lib.character[name2];
|
||||
player.storage.dualside.push(name2);
|
||||
player.storage.dualside.push(get.infoHp(info2[2]));
|
||||
player.storage.dualside.push(get.infoMaxHp(info2[2]));
|
||||
}
|
||||
}
|
||||
var name2 = info.dualSideCharacter;
|
||||
var info2 = lib.character[name2];
|
||||
player.storage.dualside.push(name2);
|
||||
player.storage.dualside.push(info2.hp);
|
||||
player.storage.dualside.push(info2.maxHp);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
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 = {};
|
||||
cardPile = {};
|
||||
message = {
|
||||
|
@ -13364,7 +13369,7 @@ export class Library {
|
|||
navigator.clipboard
|
||||
.readText()
|
||||
.then(read)
|
||||
.catch((_) => {});
|
||||
.catch((_) => { });
|
||||
} else {
|
||||
var input = ui.create.node("textarea", ui.window, { opacity: "0" });
|
||||
input.select();
|
||||
|
|
|
@ -347,7 +347,7 @@ export class Click {
|
|||
uiintro.listen(function () {
|
||||
_status.clicked = true;
|
||||
});
|
||||
uiintro.style.zIndex = 21;
|
||||
uiintro.style.zIndex = "21";
|
||||
uiintro.classList.add("popped");
|
||||
uiintro.classList.add("static");
|
||||
uiintro.classList.add("onlineclient");
|
||||
|
@ -3186,7 +3186,7 @@ export class Click {
|
|||
delete lib.config.skin[nameskin];
|
||||
if (
|
||||
gzbool &&
|
||||
lib.character[nameskin2][4].includes("gzskin") &&
|
||||
lib.character[nameskin2].hasSkinInGuozhan &&
|
||||
lib.config.mode_config.guozhan.guozhanSkin
|
||||
) {
|
||||
bg.setBackground(nameskin2, "character");
|
||||
|
@ -3206,7 +3206,7 @@ export class Click {
|
|||
} else {
|
||||
if (
|
||||
gzbool &&
|
||||
lib.character[nameskin2][4].includes("gzskin") &&
|
||||
lib.character[nameskin2].hasSkinInGuozhan &&
|
||||
lib.config.mode_config.guozhan.guozhanSkin
|
||||
)
|
||||
button.setBackground(nameskin2, "character", "noskin");
|
||||
|
@ -3483,6 +3483,7 @@ export class Click {
|
|||
};
|
||||
} else {
|
||||
// 样式一
|
||||
//TODO: 这里的数据也暂时没有改成新格式,需要后续的修改
|
||||
const introduction = ui.create.div(".characterintro", uiintro),
|
||||
showCharacterNamePinyin = lib.config.show_characternamepinyin;
|
||||
if (showCharacterNamePinyin != "doNotShow") {
|
||||
|
@ -3490,7 +3491,7 @@ export class Click {
|
|||
span = document.createElement("span");
|
||||
span.style.fontWeight = "bold";
|
||||
const nameInfo = get.character(name),
|
||||
exInfo = nameInfo[4],
|
||||
exInfo = nameInfo.trashBin,
|
||||
characterName =
|
||||
exInfo && exInfo.includes("ruby") ? lib.translate[name] : get.rawName2(name);
|
||||
span.innerHTML = characterName;
|
||||
|
|
|
@ -1127,16 +1127,16 @@ export class Create {
|
|||
characterDialog2(filter) {
|
||||
var list = [];
|
||||
for (var 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") ||
|
||||
lib.character[i][4].includes("hiddenboss")
|
||||
lib.character[i].isBoss ||
|
||||
lib.character[i].isHiddenBoss
|
||||
) {
|
||||
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 (filter && filter(i)) continue;
|
||||
list.push(i);
|
||||
|
@ -1306,17 +1306,17 @@ export class Create {
|
|||
} else {
|
||||
for (var i in lib.character) {
|
||||
if(lib.character[i][4]) {
|
||||
if (lib.character[i][4].includes("minskin")) continue;
|
||||
if (lib.character[i].isMinskin) continue;
|
||||
if (
|
||||
lib.character[i][4].includes("boss") ||
|
||||
lib.character[i][4].includes("hiddenboss")
|
||||
lib.character[i].isBoss ||
|
||||
lib.character[i].isHiddenBoss
|
||||
) {
|
||||
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][4].includes("unseen")) continue;
|
||||
if (lib.character[i].isHiddenInStoneMode) continue;
|
||||
if (lib.character[i].isUnseen) continue;
|
||||
}
|
||||
if (lib.config.banned.includes(i)) continue;
|
||||
if (
|
||||
|
|
|
@ -159,18 +159,19 @@ export const characterPackMenu = function (connectMenu) {
|
|||
var alterableCharacters = [];
|
||||
var charactersToAlter = [];
|
||||
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;
|
||||
list.push(i);
|
||||
if (boolAI && !lib.config.forbidai_user.includes(i)) boolAI = false;
|
||||
for (var j = 0; j < _info[i][3].length; j++) {
|
||||
if (!lib.skill[_info[i][3][j]]) {
|
||||
for (var j = 0; j < characterInfo.skills.length; j++) {
|
||||
if (!lib.skill[characterInfo.skills[j]]) {
|
||||
continue;
|
||||
}
|
||||
if (lib.skill[_info[i][3][j]].alter) {
|
||||
alterableSkills.add(_info[i][3][j]);
|
||||
if (lib.skill[characterInfo.skills[j]].alter) {
|
||||
alterableSkills.add(characterInfo.skills[j]);
|
||||
alterableCharacters.add(i);
|
||||
if (lib.config.vintageSkills.includes(_info[i][3][j])) {
|
||||
if (lib.config.vintageSkills.includes(characterInfo.skills[j])) {
|
||||
charactersToAlter.add(i);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -370,6 +370,7 @@ export const extensionMenu = function (connectMenu) {
|
|||
",package:" +
|
||||
get.stringify({
|
||||
//替换die audio,加上扩展名
|
||||
//TODO: 创建扩展这部分更是重量级
|
||||
character: ((pack) => {
|
||||
var character = pack.character;
|
||||
for (var key in character) {
|
||||
|
|
Loading…
Reference in New Issue