diff --git a/character/clan/voices.js b/character/clan/voices.js
index b337bf18b..44089d94a 100644
--- a/character/clan/voices.js
+++ b/character/clan/voices.js
@@ -140,4 +140,6 @@ export default {
"#clanbaozu_clan_zhongyao1": "立规定矩,教习钟门之材。",
"#clanbaozu_clan_zhongyao2": "放任纨绔,于族是祸非福。",
"#clan_zhongyao:die": "幼子得宠而无忌,恐生无妄之祸……",
+ "#qice_clan_xunyou1": "二袁相争,此曹公得利之时。",
+ "#qice_clan_xunyou2": "穷寇宜追,需防死蛇之不僵。",
};
diff --git a/character/collab/voices.js b/character/collab/voices.js
index 3ce0f5698..ff33615f0 100644
--- a/character/collab/voices.js
+++ b/character/collab/voices.js
@@ -43,4 +43,6 @@ export default {
"#dcnutao3": "智勇深沉,一世之雄!",
"#dcnutao4": "波涛怒天,神力无边!",
"#taoshen:die": "马革裹尸,身沉江心。",
+ "#jieyuan_more": "我所有的努力,都是为了杀你!",
+ "#jieyuan_less": "我必须活下去!",
};
diff --git a/character/extra/voices.js b/character/extra/voices.js
index 1ddcb6117..b2ae0d8ec 100644
--- a/character/extra/voices.js
+++ b/character/extra/voices.js
@@ -189,4 +189,34 @@ export default {
"#longhun3": "金甲映日,驱邪祛秽。",
"#longhun4": "腾龙行云,首尾不见。",
"#boss_zhaoyun:die": "血染鳞甲,龙坠九天。",
+ "#dccuixin1": "今兵临城下,其王庭可摧。",
+ "#dccuixin2": "四面皆奏楚歌,问汝降是不降?",
+ "#dili_shengzhi1": "位继父兄,承弘德以继往。",
+ "#dili_shengzhi2": "英魂犹在,履功业而开来。",
+ "#dili_quandao1": "继策掌权,符令吴会。",
+ "#dili_quandao2": "以权驭衡,谋定天下。",
+ "#dili_chigang1": "秉承伦常,扶树纲纪。",
+ "#dili_chigang2": "至尊临位,则朝野自肃。",
+ "#shenzhu1": "力引强弓百斤,矢除贯手著棼!",
+ "#shenzhu2": "箭既已在弦上,吾又岂能不发!",
+ "#jilue_guicai1": "老夫,即是天命!",
+ "#jilue_fangzhu1": "赦你死罪,你去吧!",
+ "#wansha_shen_simayi1": "天要亡你,谁人能救?",
+ "#wansha_shen_simayi2": "天要亡你,谁人能救?",
+ "#jilue_zhiheng1": "天之道,轮回也。",
+ "#jilue_jizhi1": "顺应天意,得道多助。",
+ "#wushuang_shen_lvbu1": "燎原千里,凶名远扬!",
+ "#wushuang_shen_lvbu2": "铁蹄奋进,所向披靡!",
+ "#tianxing1": "孤之行,天之意。",
+ "#tianxing2": "我做的决定,便是天的旨意。",
+ "#rejianxiong_shen_caopi1": "孤之所长,继父之所长。",
+ "#rejianxiong_shen_caopi2": "乱世枭雄,哼,孤亦是。",
+ "#rerende_shen_caopi1": "这些都是孤赏赐给你的。",
+ "#rerende_shen_caopi2": "这些都是孤赏赐给你的。",
+ "#rezhiheng_shen_caopi1": "有些事情,还需多加思索。",
+ "#rezhiheng_shen_caopi2": "有些事情,还需多加思索。",
+ "#olluanji_shen_caopi1": "违逆我的,都该处罚。",
+ "#olluanji_shen_caopi2": "违逆我的,都该处罚。",
+ "#olfangquan_shen_caopi1": "此等小事,你们处理即可。",
+ "#olfangquan_shen_caopi2": "此等小事,你们处理即可。",
};
diff --git a/character/huicui/voices.js b/character/huicui/voices.js
index 492a2c6f4..08c1ad388 100644
--- a/character/huicui/voices.js
+++ b/character/huicui/voices.js
@@ -445,4 +445,18 @@ export default {
"#dcshuliang1": "北伐鏖战正酣,此正需粮之时。",
"#dcshuliang2": "粮草先于兵马而动,此军心之本。",
"#dc_lifeng:die": "黍穗重丰,不见丞相还……",
+ "#dcfudou1": "既作困禽,何妨铤险以覆车?",
+ "#dcfudou2": "据将覆之巢,必作犹斗之困兽。",
+ "#sppanqin1": "百兽嘶鸣筋骨振,蛮王起兮万人随!",
+ "#sppanqin2": "呼勒格诗惹之民,召南中群雄复起!",
+ "#dctaji1": "仙途本寂寥,结发叹长生。",
+ "#dctaji2": "仙者不言,手执春风。",
+ "#dcqinghuang1": "上士无争,焉生妄心。",
+ "#dcqinghuang2": "心有草木,何畏荒芜?",
+ "#huomo_huzhao1": "行文挥毫,得心应手。",
+ "#huomo_huzhao2": "泼墨走笔,挥洒自如。",
+ "#llqshenwei1": "锋镝鸣手中,锐戟映秋霜。",
+ "#llqshenwei2": "红妆非我愿,学武觅封侯。",
+ "#wushuang_lvlingqi1": "猛将策良骥,长戟破敌营。",
+ "#wushuang_lvlingqi2": "杀气腾剑戟,严风卷戎装。",
};
diff --git a/character/jsrg/skill.js b/character/jsrg/skill.js
index 15cbc6fce..80f1272f4 100644
--- a/character/jsrg/skill.js
+++ b/character/jsrg/skill.js
@@ -6104,7 +6104,7 @@ const skills = {
player.removeInvisibleSkill(skills);
},
onremove: function (player, skill) {
- lib.skill.sbyingmen.removeVisitors(player.getSkills("sbyingmen"), player);
+ lib.skill.sbyingmen.removeVisitors(player.getStorage("sbyingmen"), player);
player.removeSkillBlocker("sbyingmen");
},
skillBlocker: function (skill, player) {
diff --git a/character/jsrg/voices.js b/character/jsrg/voices.js
index 6bea30181..db3a11e1a 100644
--- a/character/jsrg/voices.js
+++ b/character/jsrg/voices.js
@@ -2,4 +2,5 @@ export default {
"#jsrg_zoushi:die": "年老色衰了吗……",
"#jsrg_zhangren:die": "老臣,绝不事二主!",
"#jsrg_huangzhong:die": "不得不服老啦~",
+ "#jsrg_liuhong:die": "权利的滋味,让人沉沦。",
};
diff --git a/character/mobile/voices.js b/character/mobile/voices.js
index d59214388..ca2be33d6 100644
--- a/character/mobile/voices.js
+++ b/character/mobile/voices.js
@@ -562,4 +562,40 @@ export default {
"#scsanruo1": "小伤无碍,安心修养便可。",
"#wangzun_old_yuanshu1": "这玉玺,当然是能者居之。",
"#wangzun_old_yuanshu2": "我就是皇帝,我就是天!",
+ "#sbqingzheng_mb_caomao1": "朕虽不德,昧于大道,思与宇内共臻兹路。",
+ "#sbqingzheng_mb_caomao2": "愿遵前人教诲,为一国明帝贤君。",
+ "#rejiushi_mb_caomao1": "心忿无所表,下笔即成篇。",
+ "#rejiushi_mb_caomao2": "气幽但求醉,醒后寻复来。",
+ "#sbfangzhu_mb_caomao1": "卿当竭命纳忠,何为此逾矩之举!",
+ "#sbfangzhu_mb_caomao2": "朕继文帝风流,亦当效其权略。",
+ "#mbjuejin1": "朕宁拼一死,逆贼安敢一战!",
+ "#mbjuejin2": "朕安可坐受废辱,今日当与卿自出讨之!",
+ "#yanxiang:die": "若遇明主,或可青史留名……",
+ "#baoxin:die": "区区黄巾流寇,如何挡我?呃啊……",
+ "#jiangji:die": "洛水之誓,言犹在耳……咳咳咳……",
+ "#liwei:die": "安南重任,万不可轻之……",
+ "#binghuo1": "黄巾既起,必灭不义之师!",
+ "#binghuo2": "诛官杀吏,尽诛朝廷爪牙!",
+ "#paiyi_re_zhonghui1": "艾命不尊,死有余辜。",
+ "#paiyi_re_zhonghui2": "非我族类,其心必异。",
+ "#guanxing_re_jiangwei1": "知天易则观之,逆天难亦行之。",
+ "#guanxing_re_jiangwei2": "欲尽人事,亦先听天命。",
+ "#jixi_re_dengai1": "攻敌之不备,斩将夺辎!",
+ "#jixi_re_dengai2": "奇兵正攻,敌何能为?",
+ "#drlt_qingce1": "感明帝之恩,清君侧之贼。",
+ "#drlt_qingce2": "得太后手诏,清奸佞乱臣。",
+ "#reyingzi_re_heqi1": "人靠衣装马靠鞍!",
+ "#reyingzi_re_heqi2": "人靠衣装马靠鞍!",
+ "#qixi_re_heqi1": "可真是一把好刀啊!",
+ "#qixi_re_heqi2": "可真是一把好刀啊!",
+ "#xuanfeng_re_heqi1": "我的船队,要让全建业城的人都看见!",
+ "#xuanfeng_re_heqi2": "我的船队,要让全建业城的人都看见!",
+ "#jingong1": "若无老夫之谋,尔等皆化为腐土也。",
+ "#jingong2": "董贼旧部,可尽诛之!",
+ "#jijiang1_re_liushan1": "还望诸卿勠力同心,以保国祚。",
+ "#jijiang1_re_liushan2": "哪位爱卿愿意报效国家?",
+ "#reyingzi_re_sunben1": "有公瑾助我,可平天下。",
+ "#reyingzi_re_sunben2": "所到之处,战无不胜。",
+ "#yinghun_re_sunben1": "武烈之魂,助我扬名。",
+ "#yinghun_re_sunben2": "江东之主,众望所归。",
};
diff --git a/character/offline/voices.js b/character/offline/voices.js
index a08170d90..ec9e6c330 100644
--- a/character/offline/voices.js
+++ b/character/offline/voices.js
@@ -59,4 +59,12 @@ export default {
"#manjuan": "漫卷纵酒,白首狂歌。",
"#zuixiang": "懵懵醉乡中,天下心中藏。",
"#sp_pangtong:die": "纵有治世才,难遇治世主……",
+ "#spmiewu1": "倾荡之势已成,石城尽在眼下",
+ "#spmiewu2": "吾军势如破竹,江东六郡唾手可得。",
+ "#gzshilu1": "以杀立威,谁敢反我?",
+ "#gzshilu2": "将这些乱臣贼子,尽皆诛之!",
+ "#gzxiongnve1": "当今天子乃我所立,他敢怎样?",
+ "#gzxiongnve2": "我兄弟三人同掌禁军,有何所惧?",
+ "#ns_lijue:die": "若无内讧,也不至如此。",
+ "#ns_fanchou:die": "唉,稚然疑心,甚重。",
};
diff --git a/character/onlyOL/voices.js b/character/onlyOL/voices.js
index 5e9177706..6f76c3cd2 100644
--- a/character/onlyOL/voices.js
+++ b/character/onlyOL/voices.js
@@ -29,4 +29,5 @@ export default {
"#olsbshishou3": "吾居群士之首,可配剑履否?",
"#ol_sb_yuanshao:die": "众人合而无力,徒负大义也……",
"#ol_yufan:die": "唉,主公不能容我啊!",
+ "#ol_jianyong:die": "此景竟无言以对。",
};
diff --git a/character/refresh/voices.js b/character/refresh/voices.js
index 6d319673b..d6ea08008 100644
--- a/character/refresh/voices.js
+++ b/character/refresh/voices.js
@@ -586,4 +586,36 @@ export default {
"#regongji1": "射石饮羽,弦无虚发!",
"#regongji2": "驭马前行,弓急弦发!",
"#repolu1": "斩敌复城,扬我江东军威!",
+ "#jianyan1": "开言纳谏,社稷之福。",
+ "#jianyan2": "如此如此,敌军自破!",
+ "#wusheng_re_guanzhang1": "青龙驰骋,恍若汉寿再世。",
+ "#wusheng_re_guanzhang2": "偃月幽光,恰如武圣冲阵。",
+ "#paoxiao_re_guanzhang1": "桓侯之子,当效父之勇烈!",
+ "#paoxiao_re_guanzhang2": "蛇矛在手,谁敢与我一战!",
+ "#rejianyan1": "此人之才,胜吾十倍。",
+ "#rejianyan2": "先生大才,请受此礼。",
+ "#xinpaiyi1": "蜀川三千里,皆由我一言决之!",
+ "#xinpaiyi2": "顺我者,封侯拜将!,逆我者,斧钺加身!",
+ "#jixi_ol_dengai1": "良田为济,神兵天降!",
+ "#jixi_ol_dengai2": "明至剑阁,暗袭蜀都!",
+ "#bazhen_ol_pangtong1": "八卦四象,阴阳运转。",
+ "#bazhen_ol_pangtong2": "离火艮山,皆随我用。",
+ "#rehuoji_ol_pangtong1": "火烧赤壁,曹贼必败。",
+ "#rehuoji_ol_pangtong2": "火计诱敌,江水助势。",
+ "#rekanpo_ol_pangtong1": "这些小伎俩,逃不出我的眼睛!",
+ "#rekanpo_ol_pangtong2": "卧龙之才,吾也略懂。",
+ "#gongxin_re_lvmeng1": "哼,早知如此。",
+ "#gongxin_re_lvmeng2": "洞若观火,运筹帷幄。",
+ "#rechanyuan1": "此咒甚重,怨念缠身。",
+ "#rechanyuan2": "不信吾法,无福之缘。",
+ "#guanxing_ol_jiangwei1": "星象相弦,此乃吉兆!",
+ "#guanxing_ol_jiangwei2": "星之分野,各有所属。",
+ "#jijiang1_ol_liushan1": "爱卿爱卿,快来护驾!",
+ "#jijiang1_ol_liushan2": "将军快替我,拦下此贼!",
+ "#sishu1": "蜀乐乡土,怎不思念?",
+ "#sishu2": "思乡心切,徘徊惶惶。",
+ "#reyingzi_re_sunce1": "策虽暗稚,窃有微志。",
+ "#reyingzi_re_sunce2": "收合流散,东据吴会。",
+ "#yinghun_re_sunce1": "东吴繁盛,望父亲可知。",
+ "#yinghun_re_sunce2": "父亲,吾定不负你期望!",
};
diff --git a/character/sb/voices.js b/character/sb/voices.js
index 4b35f4dd3..49685cb4c 100644
--- a/character/sb/voices.js
+++ b/character/sb/voices.js
@@ -221,4 +221,14 @@ export default {
"#sbtianxiang1": "凤眸流盼,美目含情。",
"#sbtianxiang2": "灿如春华,皎如秋月。",
"#sb_xiaoqiao:die": "朱颜易改,初心永在……",
+ "#sbguanxing1": "明星皓月,前路通达。",
+ "#sbguanxing2": "冷夜孤星,正如时局啊。",
+ "#sbkongcheng1": "城下千军万马,我亦谈笑自若。",
+ "#sbkongcheng2": "仲达可愿与我城中一叙?",
+ "#sbduojing1": "快舟轻甲,速袭其后!",
+ "#sbduojing2": "复取荆州,尽在掌握!",
+ "#sbyingzi_sb_sunce1": "今与公瑾相约,共图天下霸业!",
+ "#sbyingzi_sb_sunce2": "空言岂尽意,跨马战沙场!",
+ "#yinghun_sb_sunce1": "父亲英魂犹在,助我定乱平贼!",
+ "#yinghun_sb_sunce2": "扫尽门庭之寇,贼自畏我之威!",
};
diff --git a/character/shenhua/skill.js b/character/shenhua/skill.js
index 6833b2466..1baf89218 100644
--- a/character/shenhua/skill.js
+++ b/character/shenhua/skill.js
@@ -77,7 +77,7 @@ const skills = {
lose: false,
delay: false,
async precontent(event, trigger, player) {
- var result = event.result;
+ const result = event.result;
if (result.targets.length > 0) result.card = get.autoViewAs({ name: "tiesuo" }, result.cards);
},
async content(event, trigger, player) {
@@ -104,8 +104,8 @@ const skills = {
if (player.hasSkill("dcwanglie2", null, null, false)) return true;
if (["wuzhong", "kaihua", "dongzhuxianji"].includes(event.card.name)) return false;
player._wanglie_temp = true;
- var eff = 0;
- for (var i of event.targets) {
+ let eff = 0;
+ for (const i of event.targets) {
eff += get.effect(i, event.card, player, player);
}
delete player._wanglie_temp;
@@ -167,13 +167,13 @@ const skills = {
//if(tag=='pretao') return true;
if (player._wanglie_temp) return false;
player._wanglie_temp = true;
- var bool = (function () {
+ const bool = (function () {
if (["wuzhong", "kaihua", "dongzhuxianji"].includes(arg.card.name)) return false;
if (get.attitude(player, arg.target) > 0 || !player.isPhaseUsing()) return false;
- var cards = player.getCards("h", function (card) {
+ let cards = player.getCards("h", function (card) {
return card != arg.card && (!arg.card.cards || !arg.card.cards.includes(card));
});
- var sha = player.getCardUsable("sha");
+ let sha = player.getCardUsable("sha");
if (arg.card.name == "sha") sha--;
cards = cards.filter(function (card) {
if (card.name == "sha" && sha <= 0) return false;
@@ -214,32 +214,30 @@ const skills = {
if (event.name == "cardsGotoSpecial") return !event.notrigger;
return true;
},
- direct: true,
usable: 1,
+ async cost(event, trigger, player) {
+ event.result = await player
+ .chooseTarget(get.prompt("olliangyin"), "选择一名其他角色,你与其各摸一张牌", lib.filter.notMe)
+ .set("ai", function (target) {
+ const player = _status.event.player,
+ num = player.getExpansions("olkongsheng").length - 1;
+ const att = get.attitude(player, target);
+ if (att <= 0) return 0;
+ if (target.countCards("h") == num && target.isDamaged() && get.recoverEffect(target, player, player) > 0) return 3 * att;
+ return att;
+ })
+ .forResult();
+ },
async content(event, trigger, player) {
- const {
- result: { bool, targets },
- } = await player.chooseTarget(get.prompt("olliangyin"), "选择一名其他角色,你与其各摸一张牌", lib.filter.notMe).set("ai", function (target) {
- var player = _status.event.player,
- num = player.getExpansions("olkongsheng").length - 1;
- var att = get.attitude(player, target);
- if (att <= 0) return 0;
- if (target.countCards("h") == num && target.isDamaged() && get.recoverEffect(target, player, player) > 0) return 3 * att;
- return att;
- });
- if (bool) {
- const target = targets[0];
- event.target = target;
- player.logSkill("olliangyin", target);
- await game.asyncDraw([player, target].sortBySeat());
- } else return;
+ const target = event.targets[0];
+ player.logSkill("olliangyin", target);
+ await game.asyncDraw([player, target].sortBySeat());
await game.asyncDelayx();
let num = player.getExpansions("olkongsheng").length;
let check = player => {
if (!player.isIn() || player.isHealthy()) return false;
return player.countCards("h") == num;
};
- const { target } = event;
if (check(player) || check(target)) {
const choiceList = ["令自己回复1点体力", "令" + get.translation(target) + "回复1点体力"];
const choices = [];
@@ -255,9 +253,9 @@ const skills = {
.set("choiceList", choiceList)
.set("prompt", "良姻:是否令一名角色回复体力?")
.set("ai", function () {
- var player = _status.event.player,
+ const player = _status.event.player,
target = _status.event.getParent().target;
- var list = _status.event.controls.slice(0),
+ let list = _status.event.controls.slice(0),
eff1 = 0,
eff2 = 0;
if (list.includes("选项一")) eff1 = get.recoverEffect(player, player, player);
@@ -277,74 +275,71 @@ const skills = {
trigger: {
global: ["loseAfter", "equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"],
},
- direct: true,
filter(event, player) {
return game.hasPlayer(function (current) {
- var evt = event.getl(current);
+ const evt = event.getl(current);
return evt && (evt.xs.length > 0 || evt.ss.length > 0);
});
},
usable: 1,
- async content(event, trigger, player) {
+ async cost(event, trigger, player) {
if (!player.countCards("he") || !game.hasPlayer(current => current != player && current.countCards("he") > 0)) return;
- const {
- result: { bool, targets, cards },
- } = await player.chooseCardTarget({
- prompt: get.prompt("olliangyin"),
- prompt2: "弃置一张牌,并令一名其他角色也弃置一张牌",
- position: "he",
- filterCard: lib.filter.cardDiscardable,
- filterTarget(card, player, target) {
- return target != player && target.countCards("he") > 0;
- },
- ai1(card) {
- let player = _status.event.player;
- if (_status.event.me) {
- if (get.position(card) === _status.event.me) return 12 - player.hp - get.value(card);
- return 0;
- }
- return 5 - get.value(card);
- },
- ai2(target) {
- let player = _status.event.player,
- att = get.attitude(player, target);
- if (att > 0 && (_status.event.me || target.isHealthy())) return -att;
- if (
- att > 0 &&
- (target.countCards("he") > target.hp ||
- target.hasCard(function (card) {
- return get.value(card, target) <= 0;
- }, "e"))
- )
- return att;
- return -att;
- },
- me: (() => {
- if (player.isHealthy() || get.recoverEffect(player, player, _status.event.player) <= 0) return false;
- let ph = player.countCards("h"),
- num = player.getExpansions("olkongsheng").length;
- if (ph === num) {
- if (player.hasSkillTag("noh")) return "h";
- return "e";
- }
- if (ph - 1 === num) return "h";
- return false;
- })(),
- });
- if (bool) {
- const target = targets[0];
- event.target = target;
- player.logSkill("olliangyin_gain", target);
- await player.discard(cards);
- await target.chooseToDiscard("he", true);
- } else return;
+ event.result = await player
+ .chooseCardTarget({
+ prompt: get.prompt("olliangyin"),
+ prompt2: "弃置一张牌,并令一名其他角色也弃置一张牌",
+ position: "he",
+ filterCard: lib.filter.cardDiscardable,
+ filterTarget(card, player, target) {
+ return target != player && target.countCards("he") > 0;
+ },
+ ai1(card) {
+ let player = _status.event.player;
+ if (_status.event.me) {
+ if (get.position(card) === _status.event.me) return 12 - player.hp - get.value(card);
+ return 0;
+ }
+ return 5 - get.value(card);
+ },
+ ai2(target) {
+ let player = _status.event.player,
+ att = get.attitude(player, target);
+ if (att > 0 && (_status.event.me || target.isHealthy())) return -att;
+ if (
+ att > 0 &&
+ (target.countCards("he") > target.hp ||
+ target.hasCard(function (card) {
+ return get.value(card, target) <= 0;
+ }, "e"))
+ )
+ return att;
+ return -att;
+ },
+ me: (() => {
+ if (player.isHealthy() || get.recoverEffect(player, player, _status.event.player) <= 0) return false;
+ let ph = player.countCards("h"),
+ num = player.getExpansions("olkongsheng").length;
+ if (ph === num) {
+ if (player.hasSkillTag("noh")) return "h";
+ return "e";
+ }
+ if (ph - 1 === num) return "h";
+ return false;
+ })(),
+ })
+ .forResult();
+ },
+ async content(event, trigger, player) {
+ const target = event.targets[0];
+ player.logSkill("olliangyin_gain", target);
+ await player.discard(event.cards);
+ await target.chooseToDiscard("he", true);
await game.asyncDelayx();
- let num = player.getExpansions("olkongsheng").length;
- let check = player => {
+ const num = player.getExpansions("olkongsheng").length;
+ const check = player => {
if (!player.isIn() || player.isHealthy()) return false;
return player.countCards("h") == num;
};
- const { target } = event;
if (check(player) || check(target)) {
const choiceList = ["令自己回复1点体力", "令" + get.translation(target) + "回复1点体力"];
const choices = [];
@@ -360,9 +355,9 @@ const skills = {
.set("choiceList", choiceList)
.set("prompt", "良姻:是否令一名角色回复体力?")
.set("ai", function () {
- var player = _status.event.player,
+ const player = _status.event.player,
target = _status.event.getParent().target;
- var list = _status.event.controls.slice(0),
+ let list = _status.event.controls.slice(0),
eff1 = 0,
eff2 = 0;
if (list.includes("选项一")) eff1 = get.recoverEffect(player, player, player);
@@ -381,45 +376,44 @@ const skills = {
olkongsheng: {
audio: "kongsheng",
trigger: { player: "phaseZhunbeiBegin" },
- direct: true,
filter(event, player) {
return player.countCards("he") > 0;
},
- content() {
- "step 0";
- player.chooseCard("he", [1, player.countCards("he")], get.prompt("olkongsheng"), "将任意张牌作为“箜”置于武将牌上").set("ai", function (card) {
- var player = _status.event.player,
- num = player.getExpansions("olkongsheng") + ui.selected.cards.length;
- if (
- ui.selected.cards.length > 0 &&
- game.hasPlayer(function (current) {
- if (current.isHealthy() || get.recoverEffect(current, player, player) <= 0) return false;
- var num2 =
- current.countCards("h", function (card) {
- if (current != player) return true;
- return !ui.selected.cards.includes(card);
- }) + 1;
- return num == num2;
- })
- )
- return 0;
- if (get.type(card, null, false) == "equip") {
- for (var i of ui.selected.cards) {
- if (get.type(i, null, false) == "equip") return 0;
+ async cost(event, trigger, player) {
+ event.result = await player
+ .chooseCard("he", [1, player.countCards("he")], get.prompt("olkongsheng"), "将任意张牌作为“箜”置于武将牌上")
+ .set("ai", function (card) {
+ const player = _status.event.player,
+ num = player.getExpansions("olkongsheng") + ui.selected.cards.length;
+ if (
+ ui.selected.cards.length > 0 &&
+ game.hasPlayer(function (current) {
+ if (current.isHealthy() || get.recoverEffect(current, player, player) <= 0) return false;
+ const num2 =
+ current.countCards("h", function (card) {
+ if (current != player) return true;
+ return !ui.selected.cards.includes(card);
+ }) + 1;
+ return num == num2;
+ })
+ )
+ return 0;
+ if (get.type(card, null, false) == "equip") {
+ for (const i of ui.selected.cards) {
+ if (get.type(i, null, false) == "equip") return 0;
+ }
+ return 5 - get.value(card);
}
- return 5 - get.value(card);
- }
- if (!player.hasValueTarget(card)) return 1;
- return 0;
- });
- "step 1";
- if (result.bool) {
- player.logSkill("olkongsheng");
- player.addToExpansion(result.cards, player, "give").gaintag.add("olkongsheng");
- }
+ if (!player.hasValueTarget(card)) return 1;
+ return 0;
+ })
+ .forResult();
+ },
+ async content(event, trigger, player) {
+ player.addToExpansion(event.cards, player, "give").gaintag.add("olkongsheng");
},
onremove(player, skill) {
- var cards = player.getExpansions(skill);
+ const cards = player.getExpansions(skill);
if (cards.length) player.loseToDiscardpile(cards);
},
intro: {
@@ -439,42 +433,36 @@ const skills = {
}).length > 0
);
},
- content() {
- "step 0";
- var cards = player.getExpansions("olkongsheng").filter(function (card) {
+ async content(event, trigger, player) {
+ let cards = player.getExpansions("olkongsheng").filter(function (card) {
return get.type(card, false) != "equip";
});
- if (cards.length) player.gain(cards, "gain2");
- "step 1";
- var cards = player.getExpansions("olkongsheng");
- if (cards.length > 0) {
- player.chooseTarget(true, "令一名角色使用以下装备牌", get.translation(cards)).set("ai", function (target) {
- var player = _status.event.player;
- return get.effect(target, { name: "losehp" }, player, player);
- });
- } else event.finish();
- "step 2";
- var target = result.targets[0];
- event.target = target;
- player.line(target, "green");
- "step 3";
- var cards = player.getExpansions("olkongsheng").filter(function (i) {
- return target.hasUseTarget(i);
+ if (cards.length) await player.gain(cards, "gain2");
+ cards = player.getExpansions("olkongsheng");
+ if (cards.length <= 0) return;
+ const { result } = await player.chooseTarget(true, "令一名角色使用以下装备牌", get.translation(cards)).set("ai", function (target) {
+ const player = _status.event.player;
+ return get.effect(target, { name: "losehp" }, player, player);
});
- if (cards.length == 1) {
- event._result = { bool: true, links: cards };
- } else if (cards.length)
- target.chooseButton(true, ["选择要使用的装备牌", cards]).set("ai", function (button) {
- return get.order(button.link);
+ const target = result.targets[0];
+ player.line(target, "green");
+ while (true) {
+ const cards = player.getExpansions("olkongsheng").filter(function (i) {
+ return target.hasUseTarget(i);
});
- else event.goto(5);
- "step 4";
- if (result.bool) {
- target.chooseUseTarget(result.links[0], true);
- event.goto(3);
+ if (cards.length) {
+ const card = cards[0];
+ if (cards.length > 1) {
+ const { result } = await target.chooseButton(true, ["选择要使用的装备牌", cards]).set("ai", function (button) {
+ return get.order(button.link);
+ });
+ if (!result.bool) break;
+ card = result.links[0];
+ }
+ await target.chooseUseTarget(card, true);
+ } else break;
}
- "step 5";
- target.loseHp();
+ await target.loseHp();
},
},
},
@@ -482,7 +470,6 @@ const skills = {
//新毌丘俭
zhengrong: {
trigger: { player: "useCardToPlayered" },
- direct: true,
audio: "drlt_zhenrong",
filter(event, player) {
if (!event.isFirstTarget) return false;
@@ -493,31 +480,29 @@ const skills = {
});
return false;
},
- content() {
- "step 0";
- player
+ async cost(event, trigger, player) {
+ event.result = await player
.chooseTarget(get.prompt("zhengrong"), "将一名手牌数不小于你的目标角色的一张牌置于你的武将牌上,成为「荣」", function (card, player, target) {
return _status.event.targets.includes(target) && target.countCards("h") >= player.countCards("h") && target.countCards("he") > 0;
})
.set("ai", function (target) {
return (1 - get.attitude(_status.event.player, target)) / target.countCards("he");
})
- .set("targets", trigger.targets);
- "step 1";
+ .set("targets", trigger.targets)
+ .forResult();
+ },
+ async content(event, trigger, player) {
+ const target = event.targets[0];
+ const next = player.choosePlayerCard(target, "he", true);
+ next.ai = get.buttonValue;
+ const { result } = await next;
if (result.bool) {
- var target = result.targets[0];
- event.target = result.targets[0];
- player.logSkill("zhengrong", target);
- player.choosePlayerCard(target, "he", true).ai = get.buttonValue;
- } else event.finish();
- "step 2";
- if (result.bool) {
- var card = result.links[0];
+ const card = result.links[0];
player.addToExpansion(card, "give", "log", target).gaintag.add("zhengrong");
}
},
onremove(player, skill) {
- var cards = player.getExpansions(skill);
+ const cards = player.getExpansions(skill);
if (cards.length) player.loseToDiscardpile(cards);
},
marktext: "荣",
@@ -538,44 +523,43 @@ const skills = {
filter(event, player) {
return player.getExpansions("zhengrong").length >= 3;
},
- content() {
- "step 0";
+ async content(event, trigger, player) {
player.awakenSkill("hongju");
- var cards = player.getExpansions("zhengrong");
- if (!cards.length || !player.countCards("h")) {
- event.goto(2);
- return;
+ const cards = player.getExpansions("zhengrong");
+ if (cards.length && player.countCards("h")) {
+ const next = player.chooseToMove("征荣:是否交换“荣”和手牌?");
+ next.set("list", [
+ [get.translation(player) + "(你)的“荣”", cards],
+ ["手牌区", player.getCards("h")],
+ ]);
+ next.set("filterMove", function (from, to) {
+ return typeof to != "number";
+ });
+ next.set("processAI", function (list) {
+ const player = _status.event.player,
+ cards = list[0][1].concat(list[1][1]).sort(function (a, b) {
+ return get.value(a) - get.value(b);
+ }),
+ cards2 = cards.splice(0, player.getExpansions("zhengrong").length);
+ return [cards2, cards];
+ });
+ const { result } = await next;
+ if (result.bool) {
+ const pushs = result.moved[0],
+ gains = result.moved[1];
+ pushs.removeArray(player.getExpansions("zhengrong"));
+ gains.removeArray(player.getCards("h"));
+ if (pushs.length && pushs.length == gains.length) {
+ const next = player.addToExpansion(pushs);
+ next.gaintag.add("zhengrong");
+ await next;
+ await player.gain(gains, "gain2", "log");
+ }
+ }
}
- var next = player.chooseToMove("征荣:是否交换“荣”和手牌?");
- next.set("list", [
- [get.translation(player) + "(你)的“荣”", cards],
- ["手牌区", player.getCards("h")],
- ]);
- next.set("filterMove", function (from, to) {
- return typeof to != "number";
- });
- next.set("processAI", function (list) {
- var player = _status.event.player,
- cards = list[0][1].concat(list[1][1]).sort(function (a, b) {
- return get.value(a) - get.value(b);
- }),
- cards2 = cards.splice(0, player.getExpansions("zhengrong").length);
- return [cards2, cards];
- });
- "step 1";
- if (result.bool) {
- var pushs = result.moved[0],
- gains = result.moved[1];
- pushs.removeArray(player.getExpansions("zhengrong"));
- gains.removeArray(player.getCards("h"));
- if (!pushs.length || pushs.length != gains.length) return;
- player.addToExpansion(pushs).gaintag.add("zhengrong");
- player.gain(gains, "gain2", "log");
- }
- "step 2";
- player.addSkills("qingce");
+ await player.addSkills("qingce");
game.log(player, "获得了技能", "#g【清侧】");
- player.loseMaxHp();
+ await player.loseMaxHp();
},
ai: {
combo: "zhengrong",
@@ -605,7 +589,7 @@ const skills = {
ai: {
result: {
target(player, target) {
- var att = get.attitude(player, target);
+ const att = get.attitude(player, target);
if (
att > 0 &&
(target.countCards("j") > 0 ||
@@ -625,13 +609,11 @@ const skills = {
return "选择弃置一张手牌,获得" + get.translation(links[0]) + "并弃置一名角色装备区或判定区内的一张牌";
},
},
- contentx() {
- "step 0";
- var card = lib.skill.qingce_backup.card;
- player.gain(card, "gain2", "log");
- "step 1";
- if (target.countDiscardableCards(player, "ej") > 0) {
- player.discardPlayerCard("ej", true, target);
+ async contentx(event, trigger, player) {
+ const card = lib.skill.qingce_backup.card;
+ await player.gain(card, "gain2", "log");
+ if (event.target.countDiscardableCards(player, "ej") > 0) {
+ await player.discardPlayerCard("ej", true, event.target);
}
},
ai: {
@@ -641,7 +623,7 @@ const skills = {
player(player) {
if (
game.hasPlayer(function (current) {
- var att = get.attitude(player, current);
+ const att = get.attitude(player, current);
if ((att > 0 && current.countCards("j") > 0) || (att < 0 && current.countCards("e") > 0)) return true;
return false;
})
@@ -666,19 +648,17 @@ const skills = {
filter(event, player) {
return event.player != player && event.player.countCards("h") > player.countCards("h");
},
- direct: true,
- content() {
- "step 0";
- player.choosePlayerCard("hej", get.prompt("drlt_zhenrong"), trigger.player).set("ai", function (button) {
+ async cost(event, trigger, player) {
+ const { result } = await player.choosePlayerCard("hej", get.prompt("drlt_zhenrong"), trigger.player).set("ai", function (button) {
return -get.attitude(player, trigger.player) + 1;
});
- "step 1";
if (result && result.links && result.links.length) {
- player.line(player, trigger.player);
- player.logSkill("drlt_zhenrong");
- player.addToExpansion(result.links, trigger.player, "give", "log").gaintag.add("drlt_zhenrong");
+ event.result = result;
}
},
+ async content(event, trigger, player) {
+ player.addToExpansion(event.cards, trigger.player, "give", "log").gaintag.add("drlt_zhenrong");
+ },
},
drlt_hongju: {
skillAnimation: true,
@@ -694,43 +674,42 @@ const skills = {
filter(event, player) {
return player.getExpansions("drlt_zhenrong").length >= 3 && game.dead.length > 0;
},
- content() {
- "step 0";
+ async content(event, trigger, player) {
player.awakenSkill("drlt_hongju");
- var cards = player.getExpansions("drlt_zhenrong");
- if (!cards.length || !player.countCards("h")) {
- event.goto(2);
- return;
+ const cards = player.getExpansions("drlt_zhenrong");
+ if (cards.length && player.countCards("h")) {
+ const next = player.chooseToMove("征荣:是否交换“荣”和手牌?");
+ next.set("list", [
+ [get.translation(player) + "(你)的“荣”", cards],
+ ["手牌区", player.getCards("h")],
+ ]);
+ next.set("filterMove", function (from, to) {
+ return typeof to != "number";
+ });
+ next.set("processAI", function (list) {
+ const player = _status.event.player,
+ cards = list[0][1].concat(list[1][1]).sort(function (a, b) {
+ return get.value(a) - get.value(b);
+ }),
+ cards2 = cards.splice(0, player.getExpansions("drlt_zhenrong").length);
+ return [cards2, cards];
+ });
+ const { result } = await next;
+ if (result.bool) {
+ const pushs = result.moved[0],
+ gains = result.moved[1];
+ pushs.removeArray(player.getExpansions("drlt_zhenrong"));
+ gains.removeArray(player.getCards("h"));
+ if (pushs.length && pushs.length == gains.length) {
+ const next = player.addToExpansion(pushs);
+ next.gaintag.add("drlt_zhenrong");
+ await next;
+ await player.gain(gains, "gain2", "log");
+ }
+ }
}
- var next = player.chooseToMove("征荣:是否交换“荣”和手牌?");
- next.set("list", [
- [get.translation(player) + "(你)的“荣”", cards],
- ["手牌区", player.getCards("h")],
- ]);
- next.set("filterMove", function (from, to) {
- return typeof to != "number";
- });
- next.set("processAI", function (list) {
- var player = _status.event.player,
- cards = list[0][1].concat(list[1][1]).sort(function (a, b) {
- return get.value(a) - get.value(b);
- }),
- cards2 = cards.splice(0, player.getExpansions("drlt_zhenrong").length);
- return [cards2, cards];
- });
- "step 1";
- if (result.bool) {
- var pushs = result.moved[0],
- gains = result.moved[1];
- pushs.removeArray(player.getExpansions("drlt_zhenrong"));
- gains.removeArray(player.getCards("h"));
- if (!pushs.length || pushs.length != gains.length) return;
- player.addToExpansion(pushs).gaintag.add("drlt_zhenrong");
- player.gain(gains, "gain2", "log");
- }
- "step 2";
- player.addSkills("drlt_qingce");
- player.loseMaxHp();
+ await player.addSkills("drlt_qingce");
+ await player.loseMaxHp();
},
ai: {
combo: "drlt_zhenrong",
@@ -745,16 +724,14 @@ const skills = {
filterTarget(card, player, target) {
return target.countDiscardableCards(player, "ej") > 0;
},
- content() {
- "step 0";
- player.chooseCardButton(player.getExpansions("drlt_zhenrong"), 1, "请选择需要弃置的“荣”", true).ai = function (button) {
- return 6 - get.value(button.link);
- };
- "step 1";
+ async content(event, trigger, player) {
+ const next = player.chooseCardButton(player.getExpansions("drlt_zhenrong"), 1, "请选择需要弃置的“荣”", true);
+ next.ai = button => 6 - get.value(button.link);
+ const { result } = await next;
if (result.bool) {
- var cards = result.links;
+ const cards = result.links;
player.loseToDiscardpile(cards);
- player.discardPlayerCard(target, "ej", 1, true);
+ player.discardPlayerCard(event.target, "ej", 1, true);
}
},
ai: {
@@ -773,35 +750,32 @@ const skills = {
trigger: {
player: "phaseJieshuBegin",
},
- direct: true,
- content() {
- "step 0";
- player
+ async cost(event, trigger, player) {
+ event.result = await player
.chooseTarget(get.prompt2("drlt_zhenggu"), function (card, player, target) {
//if(target.storage.drlt_zhenggu_mark&&target.storage.drlt_zhenggu_mark.includes(player)) return false;
return target != player;
})
.set("ai", function (target) {
- var player = _status.event.player;
+ const player = _status.event.player;
//if(target.storage.drlt_zhenggu_mark&&target.storage.drlt_zhenggu_mark.includes(player)) return 0;
- var num = Math.min(5, player.countCards("h")) - target.countCards("h");
- var att = get.attitude(player, target);
+ const num = Math.min(5, player.countCards("h")) - target.countCards("h");
+ const att = get.attitude(player, target);
return num * att;
- });
- "step 1";
- if (result.bool) {
- var target = result.targets[0];
- player.logSkill("drlt_zhenggu", target);
- player.addSkill("drlt_zhenggu2");
- target.addSkill("drlt_zhenggu_mark");
- target.storage.drlt_zhenggu_mark.push(player);
- target.markSkill("drlt_zhenggu_mark");
- lib.skill.drlt_zhenggu.sync(player, target);
- }
+ })
+ .forResult();
+ },
+ async content(event, trigger, player) {
+ const target = event.targets[0];
+ player.addSkill("drlt_zhenggu2");
+ target.addSkill("drlt_zhenggu_mark");
+ target.storage.drlt_zhenggu_mark.push(player);
+ target.markSkill("drlt_zhenggu_mark");
+ lib.skill.drlt_zhenggu.sync(player, target);
},
sync(player, target) {
- var num = player.countCards("h");
- var num2 = target.countCards("h");
+ const num = player.countCards("h");
+ const num2 = target.countCards("h");
if (num < num2) {
target.chooseToDiscard(num2 - num, true, "h");
} else target.drawTo(Math.min(5, num));
@@ -818,7 +792,7 @@ const skills = {
filter(event, player) {
return event.player.storage.drlt_zhenggu_mark && event.player.storage.drlt_zhenggu_mark.includes(player);
},
- content() {
+ async content(event, trigger, player) {
while (trigger.player.storage.drlt_zhenggu_mark.includes(player)) {
trigger.player.storage.drlt_zhenggu_mark.remove(player);
}
@@ -842,7 +816,7 @@ const skills = {
player: "phaseJieshuBegin",
},
check(event, player) {
- var num = 0;
+ let num = 0;
if (
player.hasHistory("lose", function (evt) {
return evt.type == "discard";
@@ -855,7 +829,7 @@ const skills = {
return true;
},
prompt(event, player) {
- var num = 3;
+ let num = 3;
if (
player.hasHistory("lose", function (evt) {
return evt.type == "discard";
@@ -866,87 +840,79 @@ const skills = {
if (!player.getStat("damage")) num--;
return get.prompt("xinfu_zuilun") + "(可获得" + get.cnNumber(num) + "张牌)";
},
- content() {
+ async content(event, trigger, player) {
"step 0";
- event.num = 0;
- event.cards = get.cards(3);
- game.cardsGotoOrdering(cards);
+ let num = 0;
+ const cards = get.cards(3);
+ await game.cardsGotoOrdering(cards);
if (
player.hasHistory("lose", function (evt) {
return evt.type == "discard";
})
)
- event.num++;
- if (!player.isMinHandcard()) event.num++;
- if (!player.getStat("damage")) event.num++;
- "step 1";
- if (event.num == 0) {
- player.gain(event.cards, "draw");
- event.finish();
- } else {
- var prompt = "罪论:将" + get.cnNumber(num) + "张牌置于牌堆顶";
- if (num < 3) prompt += "并获得其余的牌";
- var next = player.chooseToMove(prompt, true);
- if (num < 3) {
- next.set("list", [["牌堆顶", cards], ["获得"]]);
- next.set("filterMove", function (from, to, moved) {
- if (to == 1 && moved[0].length <= _status.event.num) return false;
- return true;
- });
- next.set("filterOk", function (moved) {
- return moved[0].length == _status.event.num;
- });
- } else {
- next.set("list", [["牌堆顶", cards]]);
- }
- next.set("num", num);
- next.set("processAI", function (list) {
- var check = function (card) {
- var player = _status.event.player;
- var next = player.next;
- var att = get.attitude(player, next);
- var judge = next.getCards("j")[tops.length];
- if (judge) {
- return get.judge(judge)(card) * att;
- }
- return next.getUseValue(card) * att;
- };
- var cards = list[0][1].slice(0),
- tops = [];
- while (tops.length < _status.event.num) {
- list.sort(function (a, b) {
- return check(b) - check(a);
- });
- tops.push(cards.shift());
- }
- return [tops, cards];
+ num++;
+ if (!player.isMinHandcard()) num++;
+ if (!player.getStat("damage")) num++;
+ if (num == 0) {
+ await player.gain(cards, "draw");
+ return;
+ }
+ let prompt = "罪论:将" + get.cnNumber(num) + "张牌置于牌堆顶";
+ if (num < 3) prompt += "并获得其余的牌";
+ const chooseToMove = player.chooseToMove(prompt, true);
+ if (num < 3) {
+ chooseToMove.set("list", [["牌堆顶", cards], ["获得"]]);
+ chooseToMove.set("filterMove", function (from, to, moved) {
+ if (to == 1 && moved[0].length <= _status.event.num) return false;
+ return true;
});
- }
- "step 2";
- if (result.bool) {
- var list = result.moved[0];
- var num = list.length - 1;
- for (var i = 0; i < list.length; i++) {
- event.cards.remove(list[num - i]);
- ui.cardPile.insertBefore(list[num - i], ui.cardPile.firstChild);
- }
- }
- "step 3";
- game.updateRoundNumber();
- if (event.cards.length) {
- player.gain(event.cards, "draw");
- event.finish();
- } else {
- player.chooseTarget("请选择一名角色,与其一同失去1点体力", true, function (card, player, target) {
- return target != player;
- }).ai = function (target) {
- return -get.attitude(_status.event.player, target);
+ chooseToMove.set("filterOk", function (moved) {
+ return moved[0].length == _status.event.num;
+ });
+ } else chooseToMove.set("list", [["牌堆顶", cards]]);
+ chooseToMove.set("num", num);
+ chooseToMove.set("processAI", function (list) {
+ const check = function (card) {
+ const player = _status.event.player;
+ const next = player.next;
+ const att = get.attitude(player, next);
+ const judge = next.getCards("j")[tops.length];
+ if (judge) {
+ return get.judge(judge)(card) * att;
+ }
+ return next.getUseValue(card) * att;
};
+ const cards = list[0][1].slice(0),
+ tops = [];
+ while (tops.length < _status.event.num) {
+ list.sort(function (a, b) {
+ return check(b) - check(a);
+ });
+ tops.push(cards.shift());
+ }
+ return [tops, cards];
+ });
+ let result = await chooseToMove.forResult();
+ if (result.bool) {
+ const list = result.moved[0];
+ cards.removeArray(list);
+ await game.cardsGotoPile(list.reverse(), "insert");
}
- "step 4";
+ game.updateRoundNumber();
+ if (cards.length) {
+ await player.gain(cards, "draw");
+ return;
+ }
+ const chooseTarget = player.chooseTarget("请选择一名角色,与其一同失去1点体力", true, function (card, player, target) {
+ return target != player;
+ });
+ chooseTarget.ai = function (target) {
+ return -get.attitude(_status.event.player, target);
+ };
+ result = await chooseTarget.forResult();
player.line(result.targets[0], "fire");
- player.loseHp();
- result.targets[0].loseHp();
+ await player.loseHp();
+ await result.targets[0].loseHp();
},
},
xinfu_fuyin: {
@@ -966,7 +932,7 @@ const skills = {
);
});
},
- content() {
+ async content(event, trigger, player) {
trigger.getParent().excluded.add(player);
},
ai: {
@@ -1022,7 +988,7 @@ const skills = {
filter(event, player) {
return !player.isLinked();
},
- content() {
+ async content(event, trigger, player) {
trigger.cancel();
},
},
@@ -1045,9 +1011,8 @@ const skills = {
filter(event, player) {
return player.hasEnabledSlot(1) || player.hasEnabledSlot(2) || player.hasEnabledSlot(5) || player.hasEnabledSlot("horse");
},
- content() {
- "step 0";
- player.chooseToDisable(true).set("ai", function (event, player, list) {
+ async content(event, trigger, player) {
+ const { control } = await player.chooseToDisable(true).set("ai", function (event, player, list) {
if (list.includes("equip2")) return "equip2";
if (
list.includes("equip1") &&
@@ -1065,9 +1030,8 @@ const skills = {
}) > 1
)
return "equip5";
- });
- "step 1";
- switch (result.control) {
+ }).forResult();
+ switch (control) {
case "equip1":
player.addTempSkill("drlt_jueyan1");
break;
@@ -1154,12 +1118,10 @@ const skills = {
filter(event, player) {
return !player.hasEnabledSlot() || player.hp == 1;
},
- content() {
- "step 0";
+ async content(event, trigger, player) {
player.awakenSkill("drlt_poshi");
- player.loseMaxHp();
- "step 1";
- var num = player.maxHp - player.countCards("h");
+ await player.loseMaxHp();
+ const num = player.maxHp - player.countCards("h");
if (num > 0) player.draw(num);
player.changeSkills(["drlt_huairou"], ["drlt_jueyan"]);
},
@@ -1174,8 +1136,8 @@ const skills = {
if (!_status.event.player.canEquip(card)) return 5;
return 3 - get.value(card);
},
- content() {
- player.recast(cards);
+ async content(event, trigger, player) {
+ player.recast(event.cards);
},
discard: false,
lose: false,
@@ -2419,7 +2381,7 @@ const skills = {
if (cards.length) player.loseToDiscardpile(cards);
},
group: ["nzry_mingren_1", "nzry_mingren_2"],
- ai:{
+ ai: {
combo: "nzry_zhenliang",
},
subSkill: {
diff --git a/character/shenhua/voices.js b/character/shenhua/voices.js
index 2516cd2f9..ae0b2e808 100644
--- a/character/shenhua/voices.js
+++ b/character/shenhua/voices.js
@@ -240,4 +240,22 @@ export default {
"#yinghun_ol_sunjian2": "贼寇草莽,我且出战。",
"#xueyi_re_yuanshao1": "崇王攘夷,生长尊贵。",
"#xueyi_re_yuanshao2": "衣冠华胄,宜蒙优免。",
+ "#chanyuan1": "不识天数,在劫难逃。",
+ "#chanyuan2": "凡人仇怨,皆由心生。",
+ "#guanxing_jiangwei1": "继丞相之遗志,讨篡汉之逆贼!",
+ "#guanxing_jiangwei2": "克复中原,指日可待!",
+ "#jijiang1_liushan1": "匡扶汉室,谁敢出战!",
+ "#jijiang1_liushan2": "谁来替朕出战!",
+ "#jixi1": "攻其无备,出其不意!",
+ "#jixi2": "偷渡阴平,直取蜀汉!",
+ "#reyingzi_sunce1": "尔等看好了!",
+ "#reyingzi_sunce2": "公瑾,助我决一死战!",
+ "#drlt_qingce1": "感明帝之恩,清君侧之贼。",
+ "#drlt_qingce2": "得太后手诏,清奸佞乱臣。",
+ "#rejizhi_lukang1": "智父安能有愚子乎?",
+ "#rejizhi_lukang2": "智父安能有愚子乎?",
+ "#drlt_huairou1": "各保分界,无求细利。",
+ "#drlt_huairou2": "胸怀千万,彰其德,包其柔。",
+ "#shensu11": "吾善于千里袭人!",
+ "#shensu12": "取汝首级,有如探囊取物!",
};
diff --git a/character/shiji/voices.js b/character/shiji/voices.js
index b853b5f3d..ea5e54c77 100644
--- a/character/shiji/voices.js
+++ b/character/shiji/voices.js
@@ -219,4 +219,12 @@ export default {
"#mjmouzhi1": "潜谋于无形,胜于不争不费。",
"#mjmouzhi2": "欲思其成,必虑其败也。",
"#sp_xunchen:die": "袁公不济,吾自当以死继之……",
+ "#gonghuan1": "曹魏势大,吴蜀当共拒之。",
+ "#gonghuan2": "两国得此联姻,邦交更当稳固。",
+ "#mouli1": "澄汰王室,迎立宗子!",
+ "#mouli2": "僣孽为害,吾岂可谋而不行?",
+ "#xuancun1": "阿斗年幼,望子龙将军仔细!",
+ "#xuancun2": "今得见将军,此儿有望生矣。",
+ "#spmiewu1": "倾荡之势已成,石城尽在眼下",
+ "#spmiewu2": "吾军势如破竹,江东六郡唾手可得。",
};
diff --git a/character/sp/voices.js b/character/sp/voices.js
index fceda5a22..f03862186 100644
--- a/character/sp/voices.js
+++ b/character/sp/voices.js
@@ -700,4 +700,58 @@ export default {
"#shuangren2": "仲国大将纪灵在此!",
"#shangyi1": "大丈夫为人坦荡,看下手牌算什么。",
"#shangyi2": "敌情已了然于胸,即刻出发!",
+ "#oltianhou_spade": "月离于毕,俾滂沱矣。",
+ "#oltianhou_heart": "七月流火,涸我山泽。",
+ "#oltianhou_club": "雪瀑寒霜落,霜下可折竹。",
+ "#oltianhou_diamond": "云雾弥野,如夜之幽。",
+ "#olxieju1": "今举大义,誓与仲恭共死。",
+ "#olxieju2": "天降大任,当与志士同忾。",
+ "#olfeibai1": "字之体势,一笔而成。",
+ "#olfeibai2": "超前绝伦,独步无双。",
+ "#sppanqin1": "百兽嘶鸣筋骨振,蛮王起兮万人随!",
+ "#sppanqin2": "呼勒格诗惹之民,召南中群雄复起!",
+ "#weishu1": "水来土掩,兵来将挡。",
+ "#weishu2": "吴人来犯,当用心戒备。",
+ "#lingren_jianxiong1": "且收此弩箭,不日奉还。",
+ "#lingren_xingshang1": "此刀枪军械,尽归我有。",
+ "#tiaoxin_xiahouba1": "跪下受降,饶你不死!",
+ "#tiaoxin_xiahouba2": "黄口小儿,可听过将军名号?",
+ "#paoxiao_xiahouba1": "喝啊!",
+ "#paoxiao_xiahouba2": "受死吧!",
+ "#shensu1_xiahouba1": "冲杀敌阵,来去如电!",
+ "#shensu1_xiahouba2": "今日有恙在身,须得速战速决!",
+ "#xiaoji_sp_sunshangxiang1": "弓马何须忌红妆?",
+ "#xiaoji_sp_sunshangxiang2": "双剑夸巧,不让须眉!",
+ "#benghuai_zhugedan1": "咳……咳咳……",
+ "#benghuai_zhugedan2": "粮草还可支持几日?",
+ "#weizhong1": "定当夷司马氏三族!",
+ "#weizhong2": "定当夷司马氏三族!",
+ "#tiaoxin_sp_jiangwei1": "今日天公作美,怎能不战而退?",
+ "#tiaoxin_sp_jiangwei2": "贼将无胆,何不早降!",
+ "#ranshang21": "战火燃尽英雄胆!",
+ "#ranshang22": "尔等,竟如此歹毒!",
+ "#jieyuan_more": "我所有的努力,都是为了杀你!",
+ "#jieyuan_less": "我必须活下去!",
+ "#xintan1": "让心中之火慢慢吞噬你吧!哈哈哈哈哈哈……",
+ "#xintan2": "人人心中都有一团欲望之火!",
+ "#tianxiang_daxiaoqiao1": "哼,我才不怕你呢~",
+ "#tianxiang_daxiaoqiao2": "替我挡着吧~",
+ "#liuli_daxiaoqiao1": "不懂得怜香惜玉么~",
+ "#liuli_daxiaoqiao2": "交给你了。",
+ "#wusheng_guansuo1": "逆贼,可识得关氏之勇?",
+ "#wusheng_guansuo2": "逆贼,可识得关氏之勇?",
+ "#dangxian_guansuo1": "各位将军,且让小辈先行出战!",
+ "#dangxian_guansuo2": "各位将军,且让小辈先行出战!",
+ "#zhiman_guansuo1": "蛮夷可抚,不可剿!",
+ "#zhiman_guansuo2": "蛮夷可抚,不可剿!",
+ "#duanbing_heqi1": "可真是一把好刀啊!",
+ "#duanbing_heqi2": "可真是一把好刀啊!",
+ "#reyingzi_heqi1": "人靠衣装马靠鞍!",
+ "#reyingzi_heqi2": "人靠衣装马靠鞍!",
+ "#fenwei_heqi1": "我的船队,要让全建业城的人都看见!",
+ "#fenwei_heqi2": "我的船队,要让全建业城的人都看见!",
+ "#duanbing1": "众将官,短刀出鞘。",
+ "#duanbing2": "短兵轻甲也可取汝性命!",
+ "#jingong1": "若无老夫之谋,尔等皆化为腐土也。",
+ "#jingong2": "董贼旧部,可尽诛之!",
};
diff --git a/character/sp2/voices.js b/character/sp2/voices.js
index ea5e1cf8b..308e549f4 100644
--- a/character/sp2/voices.js
+++ b/character/sp2/voices.js
@@ -391,4 +391,18 @@ export default {
"#qigong1": "打虎亲兄弟!",
"#qigong2": "丞相有令,尔敢不从?",
"#lvkuanglvxiang:die": "此处可是新野……",
+ "#dcnuchen1": "触关某之逆鳞者,杀无赦!",
+ "#dcnuchen2": "天下碌碌之辈,安敢小觑关某?!",
+ "#dczuojian1": "关羽者,刘备之枭将,宜除之。",
+ "#dczuojian2": "主公虽非赵简子,然某可为周舍。",
+ "#longdan_tongyuan": "能进能退,方显名将本色。",
+ "#ocongjian_tongyuan": "察言纳谏,安身立命之道也。",
+ "#chuanyun": "吾枪所至,人马俱亡!",
+ "#zhangu1": "孤军奋战,独破众将。",
+ "#zhangu2": "雄狮搏兔,何须援乎?",
+ "#bmcanshi1": "是你,在召唤我吗?",
+ "#bmcanshi2": "这片土地的人,真是太有趣了。",
+ "#xz_xunxun1": "精挑细选,方能成百年之计。",
+ "#xz_xunxun2": "让我先探他一探。",
+ "#xinfu_xingzhao2": "船,也不是一天就能造出来的。",
};
diff --git a/character/tw/voices.js b/character/tw/voices.js
index b82d207bb..d893a5d5b 100644
--- a/character/tw/voices.js
+++ b/character/tw/voices.js
@@ -315,4 +315,29 @@ export default {
"#renshe1": "无论风雨再大,都无法阻挡我的脚步。",
"#renshe2": "一定不能辜负女王的期望!",
"#nashime:die": "请把这身残躯,带回我的家乡……",
+ "#twxiongjun1": "凶兵愤戾,尽诛长安之民!",
+ "#twxiongjun2": "继董公之命,逞凶历之兵!",
+ "#tw_jiangji:die": "洛水之誓,言犹在耳……咳咳咳……",
+ "#tw_baoxin:die": "区区黄巾流寇,如何挡我?呃啊……",
+ "#twluanlve1": "合兵寇河内,聚众掠太原。",
+ "#twluanlve2": "联白波之众,掠河东之地。",
+ "#tw_liwei:die": "安南重任,万不可轻之……",
+ "#tw_yanxiang:die": "若遇明主,或可青史留名……",
+ "#mouli1": "澄汰王室,迎立宗子!",
+ "#mouli2": "僣孽为害,吾岂可谋而不行?",
+ "#tw_fanchou:die": "唉,稚然疑心,甚重。",
+ "#drlt_qingce1": "感明帝之恩,清君侧之贼。",
+ "#drlt_qingce2": "得太后手诏,清奸佞乱臣。",
+ "#tianxiang_daxiaoqiao1": "哼,我才不怕你呢~",
+ "#tianxiang_daxiaoqiao2": "替我挡着吧~",
+ "#liuli_daxiaoqiao1": "不懂得怜香惜玉么~",
+ "#liuli_daxiaoqiao2": "交给你了。",
+ "#gonghuan1": "曹魏势大,吴蜀当共拒之。",
+ "#gonghuan2": "两国得此联姻,邦交更当稳固。",
+ "#twfeifu1": "此亦久矣,其能复几!",
+ "#twfeifu2": "以侯归第?终败于其!",
+ "#twzhian1": "此等蝼蚁不除,必溃千丈之堤!",
+ "#twzhian2": "尔等权贵贪赃枉法,岂可轻饶?!",
+ "#bmcanshi_tw_beimihu1": "此患不足为惧,可蚕食而尽。",
+ "#bmcanshi_tw_beimihu2": "小则蚕食,大则溃坝。",
};
diff --git a/character/xianding/voices.js b/character/xianding/voices.js
index 476a7a6df..a808bd6bc 100644
--- a/character/xianding/voices.js
+++ b/character/xianding/voices.js
@@ -429,4 +429,44 @@ export default {
"#wlcuorui1": "减辎疾行,挫敌军锐气。",
"#wlcuorui2": "外物当舍,摄敌为重。",
"#wulan:die": "蛮狗,尔敢杀我!",
+ "#wusheng_guansuo1": "逆贼,可识得关氏之勇?",
+ "#wusheng_guansuo2": "逆贼,可识得关氏之勇?",
+ "#dangxian_guansuo1": "各位将军,且让小辈先行出战!",
+ "#dangxian_guansuo2": "各位将军,且让小辈先行出战!",
+ "#zhiman_guansuo1": "蛮夷可抚,不可剿!",
+ "#zhiman_guansuo2": "蛮夷可抚,不可剿!",
+ "#tiaoxin_xiahouba1": "跪下受降,饶你不死!",
+ "#tiaoxin_xiahouba2": "黄口小儿,可听过将军名号?",
+ "#paoxiao_xiahouba1": "喝啊!",
+ "#paoxiao_xiahouba2": "受死吧!",
+ "#shensu1_xiahouba1": "冲杀敌阵,来去如电!",
+ "#shensu1_xiahouba2": "今日有恙在身,须得速战速决!",
+ "#tianxiang_daxiaoqiao1": "哼,我才不怕你呢~",
+ "#tianxiang_daxiaoqiao2": "替我挡着吧~",
+ "#liuli_daxiaoqiao1": "不懂得怜香惜玉么~",
+ "#liuli_daxiaoqiao2": "交给你了。",
+ "#yongjue1": "扶幼主,成霸业!",
+ "#yongjue2": "能救一个是一个!",
+ "#jingong1": "若无老夫之谋,尔等皆化为腐土也。",
+ "#jingong2": "董贼旧部,可尽诛之!",
+ "#dcshouze": "白绫加之我颈,其罪何患无辞。",
+ "#dczimu1": "既为汉吏,当遵汉律。",
+ "#refenyin_wufan1": "奋音鼓劲,片甲不留!",
+ "#refenyin_wufan2": "奋勇杀敌,声罪致讨!",
+ "#olhunzi_re_sunyi1": "身临绝境,亦当心怀壮志!",
+ "#olhunzi_re_sunyi2": "危难之时,自当振奋以对!",
+ "#reyingzi_re_sunyi1": "骁悍果烈,威震江东!",
+ "#gzyinghun_re_sunyi1": "兄弟齐心,以保父兄基业!",
+ "#yuyun1": "春依旧,人消瘦。",
+ "#yuyun2": "泪沾青衫,玉殒香消。",
+ "#beishui1": "某若退却半步,诸将可立斩之!",
+ "#beishui2": "效淮阴之举,力敌数千!",
+ "#qingjiao1": "慈不掌兵,义不养财!",
+ "#qingjiao2": "清蛮夷之乱,剿不臣之贼!",
+ "#hmxili1": "系力而为,助君得胜。",
+ "#hmxili2": "有我在,将军此战必能一举拿下!",
+ "#reyingzi_gexuan1": "仙人之姿,凡目岂见!",
+ "#guanxing_gexuan1": "仙人之栖,群星浩瀚!",
+ "#zhiyan_gexuan1": "仙人之语,凡耳震聩!",
+ "#gongxin_gexuan1": "仙人之目,因果即现!",
};
diff --git a/character/xinghuoliaoyuan/voices.js b/character/xinghuoliaoyuan/voices.js
index 4fd63e1e2..6901705ca 100644
--- a/character/xinghuoliaoyuan/voices.js
+++ b/character/xinghuoliaoyuan/voices.js
@@ -55,4 +55,6 @@ export default {
"#xinfu_limu1": "米贼作乱,吾必为益州自保。",
"#xinfu_limu2": "废史立牧,可得一方安定。",
"#liuyan:die": "背疮难治,世子难继。",
+ "#xinfu_zhanji1": "公瑾安全至吴,心安之。",
+ "#xinfu_zhanji2": "功曹之恩,吾必有展骥之机。",
};
diff --git a/character/yijiang/skill.js b/character/yijiang/skill.js
index a39bc85c8..839e181a3 100644
--- a/character/yijiang/skill.js
+++ b/character/yijiang/skill.js
@@ -1268,34 +1268,28 @@ const skills = {
audio: 2,
trigger: { global: "useCard" },
filter: function (event, player) {
- var history = game.getAllGlobalHistory("useCard");
- var index = history.indexOf(event);
+ const history = game.getAllGlobalHistory("useCard");
+ const index = history.indexOf(event);
if (index <= 0) return false;
- var previous = history[index - 1].player;
+ const previous = history[index - 1].player;
if (event.player == player && previous != player && previous.isIn()) return true;
if (event.player != player && previous == player) return true;
return false;
},
- direct: true,
- content: function () {
- "step 0";
- var history = game.getAllGlobalHistory("useCard");
- var index = history.indexOf(trigger);
- var previous = history[index - 1].player;
- var user = trigger.player,
- target = previous;
- event.user = user;
- event.target = target;
- if (user) {
- user.chooseBool("是否对" + get.translation(target) + "发动【联对】?", "令" + get.translation(target) + "摸两张牌")
- .set("ai", () => _status.event.bool)
- .set("bool", get.effect(target, { name: "draw" }, user, user) > 0);
- }
- "step 1";
- if (result.bool) {
- event.user.logSkill("liandui", target);
- target.draw(2);
- }
+ async cost(event, trigger, player) {
+ if (!trigger.player) return;
+ const history = game.getAllGlobalHistory("useCard");
+ const index = history.indexOf(trigger);
+ const previous = history[index - 1].player;
+ const { result } = await trigger.player
+ .chooseBool("是否对" + get.translation(previous) + "发动【联对】?", "令" + get.translation(previous) + "摸两张牌")
+ .set("ai", () => _status.event.bool)
+ .set("bool", get.effect(previous, { name: "draw" }, trigger.player, trigger.player) > 0);
+ if (result.bool) event.result = { bool: true, cost_data: previous };
+ },
+ async content(event, trigger, player) {
+ const { cost_data: previous } = event;
+ previous.draw(2);
},
},
biejun: {
@@ -8379,14 +8373,20 @@ const skills = {
content: function () {
"step 0";
player.showHandcards();
- const hs = player.getCards("h"), color = get.color(hs[0], player);
- if (hs.length === 1 || !hs.some((card,index) => {
- return index > 0 && get.color(card) !== color;
- })) {
+ const hs = player.getCards("h"),
+ color = get.color(hs[0], player);
+ if (
+ hs.length === 1 ||
+ !hs.some((card, index) => {
+ return index > 0 && get.color(card) !== color;
+ })
+ ) {
event.finish();
}
"step 1";
- const list = [], bannedList = [], indexs = Object.keys(lib.color);
+ const list = [],
+ bannedList = [],
+ indexs = Object.keys(lib.color);
player.getCards("h").forEach(card => {
const color = get.color(card, player);
list.add(color);
@@ -8395,15 +8395,19 @@ const skills = {
list.removeArray(bannedList);
list.sort((a, b) => indexs.indexOf(a) - indexs.indexOf(b));
if (!list.length) event.finish();
- else if(list.length === 1) event._result = {control: list[0]};
- else player.chooseControl(list.map(i => `${i}2`)).set("ai", function () {
- var player = _status.event.player;
- if (player.countCards("h", { color: "red" }) == 1 && player.countCards("h", { color: "black" }) > 1) return 1;
- return 0;
- }).set("prompt", "请选择弃置一种颜色的所有手牌");
+ else if (list.length === 1) event._result = { control: list[0] };
+ else
+ player
+ .chooseControl(list.map(i => `${i}2`))
+ .set("ai", function () {
+ var player = _status.event.player;
+ if (player.countCards("h", { color: "red" }) == 1 && player.countCards("h", { color: "black" }) > 1) return 1;
+ return 0;
+ })
+ .set("prompt", "请选择弃置一种颜色的所有手牌");
"step 2";
event.control = result.control.slice(0, result.control.length - 1);
- var cards = player.getCards("h", {color: event.control});
+ var cards = player.getCards("h", { color: event.control });
player.discard(cards);
event.num = cards.length;
"step 3";
@@ -8442,7 +8446,7 @@ const skills = {
return 1;
},
result: {
- player:(player) => {
+ player: player => {
if (get.color(player.getCards("h")) != "none") return 0;
return 1;
},
diff --git a/character/yijiang/voices.js b/character/yijiang/voices.js
index 4b90aa155..fd4eb3dd4 100644
--- a/character/yijiang/voices.js
+++ b/character/yijiang/voices.js
@@ -369,4 +369,20 @@ export default {
"#yujin:die": "我,无颜面对丞相了……",
"#reqiaoshui1": "慧心妙舌,难题可解。",
"#reqiaoshui2": "巧言善辩,应对自如。",
+ "#wusheng_guanzhang1": "一夫当关,万夫莫当!",
+ "#wusheng_guanzhang2": "一夫当关,万夫莫当!",
+ "#paoxiao_guanzhang1": "喝啊~",
+ "#paoxiao_guanzhang2": "喝啊~",
+ "#luoying_discard1": "别着急扔,给我就好。",
+ "#luoying_discard2": "这些都是我的。",
+ "#luoying_judge1": "别着急扔,给我就好。",
+ "#luoying_judge2": "这些都是我的。",
+ "#jiushi21": "置酒高殿上,亲友从我游。",
+ "#jiushi22": "走马行酒醴,驱车布鱼肉。",
+ "#paiyi1": "妨碍我的人,都得死!",
+ "#paiyi2": "此地容不下你!",
+ "#juexiang_ji1": "一弹一拨,铿锵有力!",
+ "#juexiang_lie1": "一壶烈云烧,一曲人皆醉。",
+ "#juexiang_rou1": "君子以琴会友,以瑟辅人。",
+ "#juexiang_he1": "悠悠琴音,人人自醉。",
};
diff --git a/character/yingbian/skill.js b/character/yingbian/skill.js
index 801c0ba63..28c742746 100644
--- a/character/yingbian/skill.js
+++ b/character/yingbian/skill.js
@@ -1649,9 +1649,13 @@ const skills = {
.getCards("he", function (card) {
return lib.filter.canBeDiscarded(card, player, target);
})
+ .map(c => {
+ link: c;
+ })
.sort(function (a, b) {
return get.buttonValue(b) - get.buttonValue(a);
- });
+ })
+ .map(b => b.link);
if (
target.countCards("h") - player.countCards("h") >=
Math.max(
diff --git a/character/yingbian/voices.js b/character/yingbian/voices.js
index 53d43b6d7..2a10c9fcc 100644
--- a/character/yingbian/voices.js
+++ b/character/yingbian/voices.js
@@ -126,4 +126,10 @@ export default {
"#zhaotao1": "奉诏伐吴,定鼎东南!",
"#zhaotao2": "三陈方得诏,一股下孙吴!",
"#duyu:die": "金瓯尚缺,死难瞑目……",
+ "#xijue_tuxi1": "动如霹雳,威震宵小!",
+ "#xijue_tuxi2": "行略如风,摧枯拉朽!",
+ "#xijue_xiaoguo1": "大丈夫生于世,当沙场效忠!",
+ "#xijue_xiaoguo2": "骁勇善战,刚毅果断!",
+ "#pozhu1": "攻其不备,摧枯拉朽!",
+ "#pozhu2": "势如破竹,铁锁横江亦难挡!",
};
diff --git a/noname/game/index.js b/noname/game/index.js
index ed8ac4841..ee1a64f7f 100644
--- a/noname/game/index.js
+++ b/noname/game/index.js
@@ -1557,9 +1557,7 @@ export class Game {
let [, path = "skill", audioNum, ext = "mp3"] = list;
let _audioname = getName(i => audioname.includes(i));
_audioname = _audioname ? `_${_audioname}` : "";
-
if (audioNum === "true") return [getTextMap(`${path}/`, `${skill}${_audioname}`, `.${ext}`, isDefault)];
-
const audioList = [];
audioNum = parseInt(audioNum);
for (let i = 1; i <= audioNum; i++) {
@@ -1568,15 +1566,14 @@ export class Game {
return audioList;
}
- let path = "",
- ext = "";
+ let path = "", ext = "";
if (!/^db:|^ext:|\//.test(audioInfo)) path = "skill/";
if (!/\.\w+$/.test(audioInfo)) ext = ".mp3";
if (path && ext) return parseAudio(audioInfo, Object.assign(options, { isDefault: true }), defaultInfo);
//@TODO
console.warn(`${skill}中的地址写法(${audioInfo})暂时没有完全支持台词系统。`);
return [getTextMap(path, audioInfo, ext, isDefault)];
- };
+ }
return getAudioList(skill, { audioname: [], history: [], isDefault: false }, skillInfo);
}
@@ -1702,7 +1699,6 @@ export class Game {
if (!lib.config.background_speak) return;
if (info.direct && !directaudio) return;
if (lib.skill.global.includes(skill) && !info.forceaudio) return;
-
let audio,
list = game.parseSkillTextMap(skill, player, skillInfo).randomSort();
return (function play() {
diff --git a/noname/get/index.js b/noname/get/index.js
index c3d24680c..5e223e177 100644
--- a/noname/get/index.js
+++ b/noname/get/index.js
@@ -618,7 +618,7 @@ export class Get {
if (num === 3 || num === 4) return [];
return;
}
- return info || get.convertedCharacter({});
+ return info || get.convertedCharacter({ isNull: true });
}
characterInitFilter(name) {
const info = get.character(name);
diff --git a/noname/library/element/character.js b/noname/library/element/character.js
index 5576d14f0..a25e09f4a 100644
--- a/noname/library/element/character.js
+++ b/noname/library/element/character.js
@@ -160,6 +160,11 @@ export class Character {
* @type { string[] }
*/
tempname = [];
+ /**
+ * 武将牌是否存在(get.character未找到武将使用)
+ * @type { boolean }
+ */
+ isNull = false;
/**
* @param { Object|[string, string, string|number, string[], any[]|undefined, any[]|undefined] } [data]
*/
@@ -208,8 +213,7 @@ export class Character {
* @param { any[] } trash
*/
setPropertiesFromTrash(trash) {
- const keptTrashes = [],
- clans = [];
+ const keptTrashes = [], clans = [], dieAudios=[];
for (let i = 0; i < trash.length; i++) {
const item = trash[i];
if (typeof item !== "string") {
@@ -260,10 +264,11 @@ export class Character {
clans.push(item.slice(5));
} else if (item.startsWith("InitFilter:")) {
this.initFilters = item.slice(11).split(":");
- } else if (item.startsWith("die:")){
- this.dieAudios.push(item.slice(4));
- } else if (item.startsWith("die_audio:")){
- this.dieAudios = item.slice(10).split(":");
+ } else if (item.startsWith("die:")) {
+ dieAudios.add(item.slice(4));
+ } else if (item.startsWith("die_audio:")) {
+ console.warn(`die_audio参数已废弃,请使用多个die参数。`);
+ dieAudios.addArray(item.slice(10).split(":"));
} else if (item.startsWith("tempname:")) {
this.tempname = item.slice(9).split(":");
} else {
@@ -271,6 +276,7 @@ export class Character {
}
}
this.clans = clans;
+ this.dieAudios = dieAudios;
this.trashBin = keptTrashes;
}
/**
@@ -388,8 +394,7 @@ export class Character {
trashes.push(`InitFilters:${character.initFilters.join(":")}`);
}
if (character.dieAudios.length > 0) {
- if (character.dieAudios.length === 1) trashes.push(`die:${character.dieAudios[0]}`)
- else trashes.push(`die_audio:${character.dieAudios.join(":")}`);
+ character.dieAudios.forEach((item) => trashes.push(`die:${item}`));
}
if (character.tempname.length > 0) {
trashes.push(`tempname:${character.tempname.join(":")}`);
diff --git a/noname/library/element/content.js b/noname/library/element/content.js
index 6670cc32c..a367e9ed8 100644
--- a/noname/library/element/content.js
+++ b/noname/library/element/content.js
@@ -8776,20 +8776,9 @@ export const Content = {
game.dead.push(player);
_status.dying.remove(player);
- if (lib.config.background_speak) {
- const audios = game.parseDieTextMap(player).randomGet();
- if (audios.isDefault) {
- const name = audios.key;
- game.playAudio("die", name, function () {
- game.playAudio("die", name.slice(name.indexOf("_") + 1));
- });
- }
- else{
- game.playAudio(audios.file);
- }
- }
}, player);
+ game.tryDieAudio(player);
game.addVideo("diex", player);
if (event.animate !== false) {
player.$die(source);
diff --git a/noname/ui/click/index.js b/noname/ui/click/index.js
index 7fdd018d5..5f57cd088 100644
--- a/noname/ui/click/index.js
+++ b/noname/ui/click/index.js
@@ -3360,7 +3360,7 @@ export class Click {
}
// 添加台词部分
- const dieAudios = game.parseDieTextMap(name).filter(i => "text" in i);
+ const dieAudios = game.parseDieTextMap(name).map(i => i.text).filter(Boolean);
const skillAudioMap = new Map();
nameinfo.skills.forEach(skill => {
const voiceMap = game.parseSkillText(skill, name, null, true);
@@ -3397,10 +3397,10 @@ export class Click {
skillNameSpanStyle2.lineHeight = "1.9";
skillNameSpan2.innerHTML = `• 阵亡台词`;
intro.appendChild(skillNameSpan2);
- dieAudios.forEach((item, index) => {
+ dieAudios.forEach((text, index) => {
const dieTextSpan = document.createElement("span");
dieTextSpan.style.fontSize = "15.2px";
- dieTextSpan.innerHTML = `
${dieAudios.length > 1 ? `${index + 1}. ` : ""}${item.text}`;
+ dieTextSpan.innerHTML = `
${dieAudios.length > 1 ? `${index + 1}. ` : ""}${text}`;
intro.appendChild(dieTextSpan);
});
}
@@ -3677,7 +3677,7 @@ export class Click {
Array.from(htmlParser.childNodes).forEach((value) => introduction.appendChild(value));
// 添加台词部分
- const dieAudios = game.parseDieTextMap(name).filter(i => "text" in i);
+ const dieAudios = game.parseDieTextMap(name).map(i => i.text).filter(Boolean);
const skillAudioMap = new Map();
nameInfo.skills.forEach(skill => {
const voiceMap = game.parseSkillText(skill, name, null, true);
@@ -3712,9 +3712,9 @@ export class Click {
skillNameSpan.innerHTML = `
阵亡台词`;
introduction.appendChild(skillNameSpan);
- dieAudios.forEach((item, index) => {
+ dieAudios.forEach((text, index) => {
const dieTextSpan = document.createElement("span");
- dieTextSpan.innerHTML = `
${dieAudios.length > 1 ? `${index + 1}. ` : ""}${item.text}`;
+ dieTextSpan.innerHTML = `
${dieAudios.length > 1 ? `${index + 1}. ` : ""}${text}`;
introduction.appendChild(dieTextSpan);
});
}