Merge branch 'PR-Branch' into Dev-Enhancement-UniteResource
This commit is contained in:
commit
a3f7abbf28
|
@ -140,4 +140,6 @@ export default {
|
||||||
"#clanbaozu_clan_zhongyao1": "立规定矩,教习钟门之材。",
|
"#clanbaozu_clan_zhongyao1": "立规定矩,教习钟门之材。",
|
||||||
"#clanbaozu_clan_zhongyao2": "放任纨绔,于族是祸非福。",
|
"#clanbaozu_clan_zhongyao2": "放任纨绔,于族是祸非福。",
|
||||||
"#clan_zhongyao:die": "幼子得宠而无忌,恐生无妄之祸……",
|
"#clan_zhongyao:die": "幼子得宠而无忌,恐生无妄之祸……",
|
||||||
|
"#qice_clan_xunyou1": "二袁相争,此曹公得利之时。",
|
||||||
|
"#qice_clan_xunyou2": "穷寇宜追,需防死蛇之不僵。",
|
||||||
};
|
};
|
||||||
|
|
|
@ -43,4 +43,6 @@ export default {
|
||||||
"#dcnutao3": "智勇深沉,一世之雄!",
|
"#dcnutao3": "智勇深沉,一世之雄!",
|
||||||
"#dcnutao4": "波涛怒天,神力无边!",
|
"#dcnutao4": "波涛怒天,神力无边!",
|
||||||
"#taoshen:die": "马革裹尸,身沉江心。",
|
"#taoshen:die": "马革裹尸,身沉江心。",
|
||||||
|
"#jieyuan_more": "我所有的努力,都是为了杀你!",
|
||||||
|
"#jieyuan_less": "我必须活下去!",
|
||||||
};
|
};
|
||||||
|
|
|
@ -189,4 +189,34 @@ export default {
|
||||||
"#longhun3": "金甲映日,驱邪祛秽。",
|
"#longhun3": "金甲映日,驱邪祛秽。",
|
||||||
"#longhun4": "腾龙行云,首尾不见。",
|
"#longhun4": "腾龙行云,首尾不见。",
|
||||||
"#boss_zhaoyun:die": "血染鳞甲,龙坠九天。",
|
"#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": "此等小事,你们处理即可。",
|
||||||
};
|
};
|
||||||
|
|
|
@ -445,4 +445,18 @@ export default {
|
||||||
"#dcshuliang1": "北伐鏖战正酣,此正需粮之时。",
|
"#dcshuliang1": "北伐鏖战正酣,此正需粮之时。",
|
||||||
"#dcshuliang2": "粮草先于兵马而动,此军心之本。",
|
"#dcshuliang2": "粮草先于兵马而动,此军心之本。",
|
||||||
"#dc_lifeng:die": "黍穗重丰,不见丞相还……",
|
"#dc_lifeng:die": "黍穗重丰,不见丞相还……",
|
||||||
|
"#dcfudou1": "既作困禽,何妨铤险以覆车?",
|
||||||
|
"#dcfudou2": "据将覆之巢,必作犹斗之困兽。",
|
||||||
|
"#sppanqin1": "百兽嘶鸣筋骨振,蛮王起兮万人随!",
|
||||||
|
"#sppanqin2": "呼勒格诗惹之民,召南中群雄复起!",
|
||||||
|
"#dctaji1": "仙途本寂寥,结发叹长生。",
|
||||||
|
"#dctaji2": "仙者不言,手执春风。",
|
||||||
|
"#dcqinghuang1": "上士无争,焉生妄心。",
|
||||||
|
"#dcqinghuang2": "心有草木,何畏荒芜?",
|
||||||
|
"#huomo_huzhao1": "行文挥毫,得心应手。",
|
||||||
|
"#huomo_huzhao2": "泼墨走笔,挥洒自如。",
|
||||||
|
"#llqshenwei1": "锋镝鸣手中,锐戟映秋霜。",
|
||||||
|
"#llqshenwei2": "红妆非我愿,学武觅封侯。",
|
||||||
|
"#wushuang_lvlingqi1": "猛将策良骥,长戟破敌营。",
|
||||||
|
"#wushuang_lvlingqi2": "杀气腾剑戟,严风卷戎装。",
|
||||||
};
|
};
|
||||||
|
|
|
@ -6104,7 +6104,7 @@ const skills = {
|
||||||
player.removeInvisibleSkill(skills);
|
player.removeInvisibleSkill(skills);
|
||||||
},
|
},
|
||||||
onremove: function (player, skill) {
|
onremove: function (player, skill) {
|
||||||
lib.skill.sbyingmen.removeVisitors(player.getSkills("sbyingmen"), player);
|
lib.skill.sbyingmen.removeVisitors(player.getStorage("sbyingmen"), player);
|
||||||
player.removeSkillBlocker("sbyingmen");
|
player.removeSkillBlocker("sbyingmen");
|
||||||
},
|
},
|
||||||
skillBlocker: function (skill, player) {
|
skillBlocker: function (skill, player) {
|
||||||
|
|
|
@ -2,4 +2,5 @@ export default {
|
||||||
"#jsrg_zoushi:die": "年老色衰了吗……",
|
"#jsrg_zoushi:die": "年老色衰了吗……",
|
||||||
"#jsrg_zhangren:die": "老臣,绝不事二主!",
|
"#jsrg_zhangren:die": "老臣,绝不事二主!",
|
||||||
"#jsrg_huangzhong:die": "不得不服老啦~",
|
"#jsrg_huangzhong:die": "不得不服老啦~",
|
||||||
|
"#jsrg_liuhong:die": "权利的滋味,让人沉沦。",
|
||||||
};
|
};
|
||||||
|
|
|
@ -562,4 +562,40 @@ export default {
|
||||||
"#scsanruo1": "小伤无碍,安心修养便可。",
|
"#scsanruo1": "小伤无碍,安心修养便可。",
|
||||||
"#wangzun_old_yuanshu1": "这玉玺,当然是能者居之。",
|
"#wangzun_old_yuanshu1": "这玉玺,当然是能者居之。",
|
||||||
"#wangzun_old_yuanshu2": "我就是皇帝,我就是天!",
|
"#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": "江东之主,众望所归。",
|
||||||
};
|
};
|
||||||
|
|
|
@ -59,4 +59,12 @@ export default {
|
||||||
"#manjuan": "漫卷纵酒,白首狂歌。",
|
"#manjuan": "漫卷纵酒,白首狂歌。",
|
||||||
"#zuixiang": "懵懵醉乡中,天下心中藏。",
|
"#zuixiang": "懵懵醉乡中,天下心中藏。",
|
||||||
"#sp_pangtong:die": "纵有治世才,难遇治世主……",
|
"#sp_pangtong:die": "纵有治世才,难遇治世主……",
|
||||||
|
"#spmiewu1": "倾荡之势已成,石城尽在眼下",
|
||||||
|
"#spmiewu2": "吾军势如破竹,江东六郡唾手可得。",
|
||||||
|
"#gzshilu1": "以杀立威,谁敢反我?",
|
||||||
|
"#gzshilu2": "将这些乱臣贼子,尽皆诛之!",
|
||||||
|
"#gzxiongnve1": "当今天子乃我所立,他敢怎样?",
|
||||||
|
"#gzxiongnve2": "我兄弟三人同掌禁军,有何所惧?",
|
||||||
|
"#ns_lijue:die": "若无内讧,也不至如此。",
|
||||||
|
"#ns_fanchou:die": "唉,稚然疑心,甚重。",
|
||||||
};
|
};
|
||||||
|
|
|
@ -29,4 +29,5 @@ export default {
|
||||||
"#olsbshishou3": "吾居群士之首,可配剑履否?",
|
"#olsbshishou3": "吾居群士之首,可配剑履否?",
|
||||||
"#ol_sb_yuanshao:die": "众人合而无力,徒负大义也……",
|
"#ol_sb_yuanshao:die": "众人合而无力,徒负大义也……",
|
||||||
"#ol_yufan:die": "唉,主公不能容我啊!",
|
"#ol_yufan:die": "唉,主公不能容我啊!",
|
||||||
|
"#ol_jianyong:die": "此景竟无言以对。",
|
||||||
};
|
};
|
||||||
|
|
|
@ -586,4 +586,36 @@ export default {
|
||||||
"#regongji1": "射石饮羽,弦无虚发!",
|
"#regongji1": "射石饮羽,弦无虚发!",
|
||||||
"#regongji2": "驭马前行,弓急弦发!",
|
"#regongji2": "驭马前行,弓急弦发!",
|
||||||
"#repolu1": "斩敌复城,扬我江东军威!",
|
"#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": "父亲,吾定不负你期望!",
|
||||||
};
|
};
|
||||||
|
|
|
@ -221,4 +221,14 @@ export default {
|
||||||
"#sbtianxiang1": "凤眸流盼,美目含情。",
|
"#sbtianxiang1": "凤眸流盼,美目含情。",
|
||||||
"#sbtianxiang2": "灿如春华,皎如秋月。",
|
"#sbtianxiang2": "灿如春华,皎如秋月。",
|
||||||
"#sb_xiaoqiao:die": "朱颜易改,初心永在……",
|
"#sb_xiaoqiao:die": "朱颜易改,初心永在……",
|
||||||
|
"#sbguanxing1": "明星皓月,前路通达。",
|
||||||
|
"#sbguanxing2": "冷夜孤星,正如时局啊。",
|
||||||
|
"#sbkongcheng1": "城下千军万马,我亦谈笑自若。",
|
||||||
|
"#sbkongcheng2": "仲达可愿与我城中一叙?",
|
||||||
|
"#sbduojing1": "快舟轻甲,速袭其后!",
|
||||||
|
"#sbduojing2": "复取荆州,尽在掌握!",
|
||||||
|
"#sbyingzi_sb_sunce1": "今与公瑾相约,共图天下霸业!",
|
||||||
|
"#sbyingzi_sb_sunce2": "空言岂尽意,跨马战沙场!",
|
||||||
|
"#yinghun_sb_sunce1": "父亲英魂犹在,助我定乱平贼!",
|
||||||
|
"#yinghun_sb_sunce2": "扫尽门庭之寇,贼自畏我之威!",
|
||||||
};
|
};
|
||||||
|
|
|
@ -77,7 +77,7 @@ const skills = {
|
||||||
lose: false,
|
lose: false,
|
||||||
delay: false,
|
delay: false,
|
||||||
async precontent(event, trigger, player) {
|
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);
|
if (result.targets.length > 0) result.card = get.autoViewAs({ name: "tiesuo" }, result.cards);
|
||||||
},
|
},
|
||||||
async content(event, trigger, player) {
|
async content(event, trigger, player) {
|
||||||
|
@ -104,8 +104,8 @@ const skills = {
|
||||||
if (player.hasSkill("dcwanglie2", null, null, false)) return true;
|
if (player.hasSkill("dcwanglie2", null, null, false)) return true;
|
||||||
if (["wuzhong", "kaihua", "dongzhuxianji"].includes(event.card.name)) return false;
|
if (["wuzhong", "kaihua", "dongzhuxianji"].includes(event.card.name)) return false;
|
||||||
player._wanglie_temp = true;
|
player._wanglie_temp = true;
|
||||||
var eff = 0;
|
let eff = 0;
|
||||||
for (var i of event.targets) {
|
for (const i of event.targets) {
|
||||||
eff += get.effect(i, event.card, player, player);
|
eff += get.effect(i, event.card, player, player);
|
||||||
}
|
}
|
||||||
delete player._wanglie_temp;
|
delete player._wanglie_temp;
|
||||||
|
@ -167,13 +167,13 @@ const skills = {
|
||||||
//if(tag=='pretao') return true;
|
//if(tag=='pretao') return true;
|
||||||
if (player._wanglie_temp) return false;
|
if (player._wanglie_temp) return false;
|
||||||
player._wanglie_temp = true;
|
player._wanglie_temp = true;
|
||||||
var bool = (function () {
|
const bool = (function () {
|
||||||
if (["wuzhong", "kaihua", "dongzhuxianji"].includes(arg.card.name)) return false;
|
if (["wuzhong", "kaihua", "dongzhuxianji"].includes(arg.card.name)) return false;
|
||||||
if (get.attitude(player, arg.target) > 0 || !player.isPhaseUsing()) 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));
|
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--;
|
if (arg.card.name == "sha") sha--;
|
||||||
cards = cards.filter(function (card) {
|
cards = cards.filter(function (card) {
|
||||||
if (card.name == "sha" && sha <= 0) return false;
|
if (card.name == "sha" && sha <= 0) return false;
|
||||||
|
@ -214,32 +214,30 @@ const skills = {
|
||||||
if (event.name == "cardsGotoSpecial") return !event.notrigger;
|
if (event.name == "cardsGotoSpecial") return !event.notrigger;
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
direct: true,
|
|
||||||
usable: 1,
|
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) {
|
async content(event, trigger, player) {
|
||||||
const {
|
const target = event.targets[0];
|
||||||
result: { bool, targets },
|
player.logSkill("olliangyin", target);
|
||||||
} = await player.chooseTarget(get.prompt("olliangyin"), "选择一名其他角色,你与其各摸一张牌", lib.filter.notMe).set("ai", function (target) {
|
await game.asyncDraw([player, target].sortBySeat());
|
||||||
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;
|
|
||||||
await game.asyncDelayx();
|
await game.asyncDelayx();
|
||||||
let num = player.getExpansions("olkongsheng").length;
|
let num = player.getExpansions("olkongsheng").length;
|
||||||
let check = player => {
|
let check = player => {
|
||||||
if (!player.isIn() || player.isHealthy()) return false;
|
if (!player.isIn() || player.isHealthy()) return false;
|
||||||
return player.countCards("h") == num;
|
return player.countCards("h") == num;
|
||||||
};
|
};
|
||||||
const { target } = event;
|
|
||||||
if (check(player) || check(target)) {
|
if (check(player) || check(target)) {
|
||||||
const choiceList = ["令自己回复1点体力", "令" + get.translation(target) + "回复1点体力"];
|
const choiceList = ["令自己回复1点体力", "令" + get.translation(target) + "回复1点体力"];
|
||||||
const choices = [];
|
const choices = [];
|
||||||
|
@ -255,9 +253,9 @@ const skills = {
|
||||||
.set("choiceList", choiceList)
|
.set("choiceList", choiceList)
|
||||||
.set("prompt", "良姻:是否令一名角色回复体力?")
|
.set("prompt", "良姻:是否令一名角色回复体力?")
|
||||||
.set("ai", function () {
|
.set("ai", function () {
|
||||||
var player = _status.event.player,
|
const player = _status.event.player,
|
||||||
target = _status.event.getParent().target;
|
target = _status.event.getParent().target;
|
||||||
var list = _status.event.controls.slice(0),
|
let list = _status.event.controls.slice(0),
|
||||||
eff1 = 0,
|
eff1 = 0,
|
||||||
eff2 = 0;
|
eff2 = 0;
|
||||||
if (list.includes("选项一")) eff1 = get.recoverEffect(player, player, player);
|
if (list.includes("选项一")) eff1 = get.recoverEffect(player, player, player);
|
||||||
|
@ -277,74 +275,71 @@ const skills = {
|
||||||
trigger: {
|
trigger: {
|
||||||
global: ["loseAfter", "equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"],
|
global: ["loseAfter", "equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"],
|
||||||
},
|
},
|
||||||
direct: true,
|
|
||||||
filter(event, player) {
|
filter(event, player) {
|
||||||
return game.hasPlayer(function (current) {
|
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);
|
return evt && (evt.xs.length > 0 || evt.ss.length > 0);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
usable: 1,
|
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;
|
if (!player.countCards("he") || !game.hasPlayer(current => current != player && current.countCards("he") > 0)) return;
|
||||||
const {
|
event.result = await player
|
||||||
result: { bool, targets, cards },
|
.chooseCardTarget({
|
||||||
} = await player.chooseCardTarget({
|
prompt: get.prompt("olliangyin"),
|
||||||
prompt: get.prompt("olliangyin"),
|
prompt2: "弃置一张牌,并令一名其他角色也弃置一张牌",
|
||||||
prompt2: "弃置一张牌,并令一名其他角色也弃置一张牌",
|
position: "he",
|
||||||
position: "he",
|
filterCard: lib.filter.cardDiscardable,
|
||||||
filterCard: lib.filter.cardDiscardable,
|
filterTarget(card, player, target) {
|
||||||
filterTarget(card, player, target) {
|
return target != player && target.countCards("he") > 0;
|
||||||
return target != player && target.countCards("he") > 0;
|
},
|
||||||
},
|
ai1(card) {
|
||||||
ai1(card) {
|
let player = _status.event.player;
|
||||||
let player = _status.event.player;
|
if (_status.event.me) {
|
||||||
if (_status.event.me) {
|
if (get.position(card) === _status.event.me) return 12 - player.hp - get.value(card);
|
||||||
if (get.position(card) === _status.event.me) return 12 - player.hp - get.value(card);
|
return 0;
|
||||||
return 0;
|
}
|
||||||
}
|
return 5 - get.value(card);
|
||||||
return 5 - get.value(card);
|
},
|
||||||
},
|
ai2(target) {
|
||||||
ai2(target) {
|
let player = _status.event.player,
|
||||||
let player = _status.event.player,
|
att = get.attitude(player, target);
|
||||||
att = get.attitude(player, target);
|
if (att > 0 && (_status.event.me || target.isHealthy())) return -att;
|
||||||
if (att > 0 && (_status.event.me || target.isHealthy())) return -att;
|
if (
|
||||||
if (
|
att > 0 &&
|
||||||
att > 0 &&
|
(target.countCards("he") > target.hp ||
|
||||||
(target.countCards("he") > target.hp ||
|
target.hasCard(function (card) {
|
||||||
target.hasCard(function (card) {
|
return get.value(card, target) <= 0;
|
||||||
return get.value(card, target) <= 0;
|
}, "e"))
|
||||||
}, "e"))
|
)
|
||||||
)
|
return att;
|
||||||
return att;
|
return -att;
|
||||||
return -att;
|
},
|
||||||
},
|
me: (() => {
|
||||||
me: (() => {
|
if (player.isHealthy() || get.recoverEffect(player, player, _status.event.player) <= 0) return false;
|
||||||
if (player.isHealthy() || get.recoverEffect(player, player, _status.event.player) <= 0) return false;
|
let ph = player.countCards("h"),
|
||||||
let ph = player.countCards("h"),
|
num = player.getExpansions("olkongsheng").length;
|
||||||
num = player.getExpansions("olkongsheng").length;
|
if (ph === num) {
|
||||||
if (ph === num) {
|
if (player.hasSkillTag("noh")) return "h";
|
||||||
if (player.hasSkillTag("noh")) return "h";
|
return "e";
|
||||||
return "e";
|
}
|
||||||
}
|
if (ph - 1 === num) return "h";
|
||||||
if (ph - 1 === num) return "h";
|
return false;
|
||||||
return false;
|
})(),
|
||||||
})(),
|
})
|
||||||
});
|
.forResult();
|
||||||
if (bool) {
|
},
|
||||||
const target = targets[0];
|
async content(event, trigger, player) {
|
||||||
event.target = target;
|
const target = event.targets[0];
|
||||||
player.logSkill("olliangyin_gain", target);
|
player.logSkill("olliangyin_gain", target);
|
||||||
await player.discard(cards);
|
await player.discard(event.cards);
|
||||||
await target.chooseToDiscard("he", true);
|
await target.chooseToDiscard("he", true);
|
||||||
} else return;
|
|
||||||
await game.asyncDelayx();
|
await game.asyncDelayx();
|
||||||
let num = player.getExpansions("olkongsheng").length;
|
const num = player.getExpansions("olkongsheng").length;
|
||||||
let check = player => {
|
const check = player => {
|
||||||
if (!player.isIn() || player.isHealthy()) return false;
|
if (!player.isIn() || player.isHealthy()) return false;
|
||||||
return player.countCards("h") == num;
|
return player.countCards("h") == num;
|
||||||
};
|
};
|
||||||
const { target } = event;
|
|
||||||
if (check(player) || check(target)) {
|
if (check(player) || check(target)) {
|
||||||
const choiceList = ["令自己回复1点体力", "令" + get.translation(target) + "回复1点体力"];
|
const choiceList = ["令自己回复1点体力", "令" + get.translation(target) + "回复1点体力"];
|
||||||
const choices = [];
|
const choices = [];
|
||||||
|
@ -360,9 +355,9 @@ const skills = {
|
||||||
.set("choiceList", choiceList)
|
.set("choiceList", choiceList)
|
||||||
.set("prompt", "良姻:是否令一名角色回复体力?")
|
.set("prompt", "良姻:是否令一名角色回复体力?")
|
||||||
.set("ai", function () {
|
.set("ai", function () {
|
||||||
var player = _status.event.player,
|
const player = _status.event.player,
|
||||||
target = _status.event.getParent().target;
|
target = _status.event.getParent().target;
|
||||||
var list = _status.event.controls.slice(0),
|
let list = _status.event.controls.slice(0),
|
||||||
eff1 = 0,
|
eff1 = 0,
|
||||||
eff2 = 0;
|
eff2 = 0;
|
||||||
if (list.includes("选项一")) eff1 = get.recoverEffect(player, player, player);
|
if (list.includes("选项一")) eff1 = get.recoverEffect(player, player, player);
|
||||||
|
@ -381,45 +376,44 @@ const skills = {
|
||||||
olkongsheng: {
|
olkongsheng: {
|
||||||
audio: "kongsheng",
|
audio: "kongsheng",
|
||||||
trigger: { player: "phaseZhunbeiBegin" },
|
trigger: { player: "phaseZhunbeiBegin" },
|
||||||
direct: true,
|
|
||||||
filter(event, player) {
|
filter(event, player) {
|
||||||
return player.countCards("he") > 0;
|
return player.countCards("he") > 0;
|
||||||
},
|
},
|
||||||
content() {
|
async cost(event, trigger, player) {
|
||||||
"step 0";
|
event.result = await player
|
||||||
player.chooseCard("he", [1, player.countCards("he")], get.prompt("olkongsheng"), "将任意张牌作为“箜”置于武将牌上").set("ai", function (card) {
|
.chooseCard("he", [1, player.countCards("he")], get.prompt("olkongsheng"), "将任意张牌作为“箜”置于武将牌上")
|
||||||
var player = _status.event.player,
|
.set("ai", function (card) {
|
||||||
num = player.getExpansions("olkongsheng") + ui.selected.cards.length;
|
const player = _status.event.player,
|
||||||
if (
|
num = player.getExpansions("olkongsheng") + ui.selected.cards.length;
|
||||||
ui.selected.cards.length > 0 &&
|
if (
|
||||||
game.hasPlayer(function (current) {
|
ui.selected.cards.length > 0 &&
|
||||||
if (current.isHealthy() || get.recoverEffect(current, player, player) <= 0) return false;
|
game.hasPlayer(function (current) {
|
||||||
var num2 =
|
if (current.isHealthy() || get.recoverEffect(current, player, player) <= 0) return false;
|
||||||
current.countCards("h", function (card) {
|
const num2 =
|
||||||
if (current != player) return true;
|
current.countCards("h", function (card) {
|
||||||
return !ui.selected.cards.includes(card);
|
if (current != player) return true;
|
||||||
}) + 1;
|
return !ui.selected.cards.includes(card);
|
||||||
return num == num2;
|
}) + 1;
|
||||||
})
|
return num == num2;
|
||||||
)
|
})
|
||||||
return 0;
|
)
|
||||||
if (get.type(card, null, false) == "equip") {
|
return 0;
|
||||||
for (var i of ui.selected.cards) {
|
if (get.type(card, null, false) == "equip") {
|
||||||
if (get.type(i, null, false) == "equip") return 0;
|
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;
|
||||||
if (!player.hasValueTarget(card)) return 1;
|
})
|
||||||
return 0;
|
.forResult();
|
||||||
});
|
},
|
||||||
"step 1";
|
async content(event, trigger, player) {
|
||||||
if (result.bool) {
|
player.addToExpansion(event.cards, player, "give").gaintag.add("olkongsheng");
|
||||||
player.logSkill("olkongsheng");
|
|
||||||
player.addToExpansion(result.cards, player, "give").gaintag.add("olkongsheng");
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
onremove(player, skill) {
|
onremove(player, skill) {
|
||||||
var cards = player.getExpansions(skill);
|
const cards = player.getExpansions(skill);
|
||||||
if (cards.length) player.loseToDiscardpile(cards);
|
if (cards.length) player.loseToDiscardpile(cards);
|
||||||
},
|
},
|
||||||
intro: {
|
intro: {
|
||||||
|
@ -439,42 +433,36 @@ const skills = {
|
||||||
}).length > 0
|
}).length > 0
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
content() {
|
async content(event, trigger, player) {
|
||||||
"step 0";
|
let cards = player.getExpansions("olkongsheng").filter(function (card) {
|
||||||
var cards = player.getExpansions("olkongsheng").filter(function (card) {
|
|
||||||
return get.type(card, false) != "equip";
|
return get.type(card, false) != "equip";
|
||||||
});
|
});
|
||||||
if (cards.length) player.gain(cards, "gain2");
|
if (cards.length) await player.gain(cards, "gain2");
|
||||||
"step 1";
|
cards = player.getExpansions("olkongsheng");
|
||||||
var cards = player.getExpansions("olkongsheng");
|
if (cards.length <= 0) return;
|
||||||
if (cards.length > 0) {
|
const { result } = await player.chooseTarget(true, "令一名角色使用以下装备牌", get.translation(cards)).set("ai", function (target) {
|
||||||
player.chooseTarget(true, "令一名角色使用以下装备牌", get.translation(cards)).set("ai", function (target) {
|
const player = _status.event.player;
|
||||||
var player = _status.event.player;
|
return get.effect(target, { name: "losehp" }, player, 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 == 1) {
|
const target = result.targets[0];
|
||||||
event._result = { bool: true, links: cards };
|
player.line(target, "green");
|
||||||
} else if (cards.length)
|
while (true) {
|
||||||
target.chooseButton(true, ["选择要使用的装备牌", cards]).set("ai", function (button) {
|
const cards = player.getExpansions("olkongsheng").filter(function (i) {
|
||||||
return get.order(button.link);
|
return target.hasUseTarget(i);
|
||||||
});
|
});
|
||||||
else event.goto(5);
|
if (cards.length) {
|
||||||
"step 4";
|
const card = cards[0];
|
||||||
if (result.bool) {
|
if (cards.length > 1) {
|
||||||
target.chooseUseTarget(result.links[0], true);
|
const { result } = await target.chooseButton(true, ["选择要使用的装备牌", cards]).set("ai", function (button) {
|
||||||
event.goto(3);
|
return get.order(button.link);
|
||||||
|
});
|
||||||
|
if (!result.bool) break;
|
||||||
|
card = result.links[0];
|
||||||
|
}
|
||||||
|
await target.chooseUseTarget(card, true);
|
||||||
|
} else break;
|
||||||
}
|
}
|
||||||
"step 5";
|
await target.loseHp();
|
||||||
target.loseHp();
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -482,7 +470,6 @@ const skills = {
|
||||||
//新毌丘俭
|
//新毌丘俭
|
||||||
zhengrong: {
|
zhengrong: {
|
||||||
trigger: { player: "useCardToPlayered" },
|
trigger: { player: "useCardToPlayered" },
|
||||||
direct: true,
|
|
||||||
audio: "drlt_zhenrong",
|
audio: "drlt_zhenrong",
|
||||||
filter(event, player) {
|
filter(event, player) {
|
||||||
if (!event.isFirstTarget) return false;
|
if (!event.isFirstTarget) return false;
|
||||||
|
@ -493,31 +480,29 @@ const skills = {
|
||||||
});
|
});
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
content() {
|
async cost(event, trigger, player) {
|
||||||
"step 0";
|
event.result = await player
|
||||||
player
|
|
||||||
.chooseTarget(get.prompt("zhengrong"), "将一名手牌数不小于你的目标角色的一张牌置于你的武将牌上,成为「荣」", function (card, player, target) {
|
.chooseTarget(get.prompt("zhengrong"), "将一名手牌数不小于你的目标角色的一张牌置于你的武将牌上,成为「荣」", function (card, player, target) {
|
||||||
return _status.event.targets.includes(target) && target.countCards("h") >= player.countCards("h") && target.countCards("he") > 0;
|
return _status.event.targets.includes(target) && target.countCards("h") >= player.countCards("h") && target.countCards("he") > 0;
|
||||||
})
|
})
|
||||||
.set("ai", function (target) {
|
.set("ai", function (target) {
|
||||||
return (1 - get.attitude(_status.event.player, target)) / target.countCards("he");
|
return (1 - get.attitude(_status.event.player, target)) / target.countCards("he");
|
||||||
})
|
})
|
||||||
.set("targets", trigger.targets);
|
.set("targets", trigger.targets)
|
||||||
"step 1";
|
.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) {
|
if (result.bool) {
|
||||||
var target = result.targets[0];
|
const card = result.links[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];
|
|
||||||
player.addToExpansion(card, "give", "log", target).gaintag.add("zhengrong");
|
player.addToExpansion(card, "give", "log", target).gaintag.add("zhengrong");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onremove(player, skill) {
|
onremove(player, skill) {
|
||||||
var cards = player.getExpansions(skill);
|
const cards = player.getExpansions(skill);
|
||||||
if (cards.length) player.loseToDiscardpile(cards);
|
if (cards.length) player.loseToDiscardpile(cards);
|
||||||
},
|
},
|
||||||
marktext: "荣",
|
marktext: "荣",
|
||||||
|
@ -538,44 +523,43 @@ const skills = {
|
||||||
filter(event, player) {
|
filter(event, player) {
|
||||||
return player.getExpansions("zhengrong").length >= 3;
|
return player.getExpansions("zhengrong").length >= 3;
|
||||||
},
|
},
|
||||||
content() {
|
async content(event, trigger, player) {
|
||||||
"step 0";
|
|
||||||
player.awakenSkill("hongju");
|
player.awakenSkill("hongju");
|
||||||
var cards = player.getExpansions("zhengrong");
|
const cards = player.getExpansions("zhengrong");
|
||||||
if (!cards.length || !player.countCards("h")) {
|
if (cards.length && player.countCards("h")) {
|
||||||
event.goto(2);
|
const next = player.chooseToMove("征荣:是否交换“荣”和手牌?");
|
||||||
return;
|
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("征荣:是否交换“荣”和手牌?");
|
await player.addSkills("qingce");
|
||||||
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");
|
|
||||||
game.log(player, "获得了技能", "#g【清侧】");
|
game.log(player, "获得了技能", "#g【清侧】");
|
||||||
player.loseMaxHp();
|
await player.loseMaxHp();
|
||||||
},
|
},
|
||||||
ai: {
|
ai: {
|
||||||
combo: "zhengrong",
|
combo: "zhengrong",
|
||||||
|
@ -605,7 +589,7 @@ const skills = {
|
||||||
ai: {
|
ai: {
|
||||||
result: {
|
result: {
|
||||||
target(player, target) {
|
target(player, target) {
|
||||||
var att = get.attitude(player, target);
|
const att = get.attitude(player, target);
|
||||||
if (
|
if (
|
||||||
att > 0 &&
|
att > 0 &&
|
||||||
(target.countCards("j") > 0 ||
|
(target.countCards("j") > 0 ||
|
||||||
|
@ -625,13 +609,11 @@ const skills = {
|
||||||
return "选择弃置一张手牌,获得" + get.translation(links[0]) + "并弃置一名角色装备区或判定区内的一张牌";
|
return "选择弃置一张手牌,获得" + get.translation(links[0]) + "并弃置一名角色装备区或判定区内的一张牌";
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
contentx() {
|
async contentx(event, trigger, player) {
|
||||||
"step 0";
|
const card = lib.skill.qingce_backup.card;
|
||||||
var card = lib.skill.qingce_backup.card;
|
await player.gain(card, "gain2", "log");
|
||||||
player.gain(card, "gain2", "log");
|
if (event.target.countDiscardableCards(player, "ej") > 0) {
|
||||||
"step 1";
|
await player.discardPlayerCard("ej", true, event.target);
|
||||||
if (target.countDiscardableCards(player, "ej") > 0) {
|
|
||||||
player.discardPlayerCard("ej", true, target);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
ai: {
|
ai: {
|
||||||
|
@ -641,7 +623,7 @@ const skills = {
|
||||||
player(player) {
|
player(player) {
|
||||||
if (
|
if (
|
||||||
game.hasPlayer(function (current) {
|
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;
|
if ((att > 0 && current.countCards("j") > 0) || (att < 0 && current.countCards("e") > 0)) return true;
|
||||||
return false;
|
return false;
|
||||||
})
|
})
|
||||||
|
@ -666,19 +648,17 @@ const skills = {
|
||||||
filter(event, player) {
|
filter(event, player) {
|
||||||
return event.player != player && event.player.countCards("h") > player.countCards("h");
|
return event.player != player && event.player.countCards("h") > player.countCards("h");
|
||||||
},
|
},
|
||||||
direct: true,
|
async cost(event, trigger, player) {
|
||||||
content() {
|
const { result } = await player.choosePlayerCard("hej", get.prompt("drlt_zhenrong"), trigger.player).set("ai", function (button) {
|
||||||
"step 0";
|
|
||||||
player.choosePlayerCard("hej", get.prompt("drlt_zhenrong"), trigger.player).set("ai", function (button) {
|
|
||||||
return -get.attitude(player, trigger.player) + 1;
|
return -get.attitude(player, trigger.player) + 1;
|
||||||
});
|
});
|
||||||
"step 1";
|
|
||||||
if (result && result.links && result.links.length) {
|
if (result && result.links && result.links.length) {
|
||||||
player.line(player, trigger.player);
|
event.result = result;
|
||||||
player.logSkill("drlt_zhenrong");
|
|
||||||
player.addToExpansion(result.links, trigger.player, "give", "log").gaintag.add("drlt_zhenrong");
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
async content(event, trigger, player) {
|
||||||
|
player.addToExpansion(event.cards, trigger.player, "give", "log").gaintag.add("drlt_zhenrong");
|
||||||
|
},
|
||||||
},
|
},
|
||||||
drlt_hongju: {
|
drlt_hongju: {
|
||||||
skillAnimation: true,
|
skillAnimation: true,
|
||||||
|
@ -694,43 +674,42 @@ const skills = {
|
||||||
filter(event, player) {
|
filter(event, player) {
|
||||||
return player.getExpansions("drlt_zhenrong").length >= 3 && game.dead.length > 0;
|
return player.getExpansions("drlt_zhenrong").length >= 3 && game.dead.length > 0;
|
||||||
},
|
},
|
||||||
content() {
|
async content(event, trigger, player) {
|
||||||
"step 0";
|
|
||||||
player.awakenSkill("drlt_hongju");
|
player.awakenSkill("drlt_hongju");
|
||||||
var cards = player.getExpansions("drlt_zhenrong");
|
const cards = player.getExpansions("drlt_zhenrong");
|
||||||
if (!cards.length || !player.countCards("h")) {
|
if (cards.length && player.countCards("h")) {
|
||||||
event.goto(2);
|
const next = player.chooseToMove("征荣:是否交换“荣”和手牌?");
|
||||||
return;
|
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("征荣:是否交换“荣”和手牌?");
|
await player.addSkills("drlt_qingce");
|
||||||
next.set("list", [
|
await player.loseMaxHp();
|
||||||
[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();
|
|
||||||
},
|
},
|
||||||
ai: {
|
ai: {
|
||||||
combo: "drlt_zhenrong",
|
combo: "drlt_zhenrong",
|
||||||
|
@ -745,16 +724,14 @@ const skills = {
|
||||||
filterTarget(card, player, target) {
|
filterTarget(card, player, target) {
|
||||||
return target.countDiscardableCards(player, "ej") > 0;
|
return target.countDiscardableCards(player, "ej") > 0;
|
||||||
},
|
},
|
||||||
content() {
|
async content(event, trigger, player) {
|
||||||
"step 0";
|
const next = player.chooseCardButton(player.getExpansions("drlt_zhenrong"), 1, "请选择需要弃置的“荣”", true);
|
||||||
player.chooseCardButton(player.getExpansions("drlt_zhenrong"), 1, "请选择需要弃置的“荣”", true).ai = function (button) {
|
next.ai = button => 6 - get.value(button.link);
|
||||||
return 6 - get.value(button.link);
|
const { result } = await next;
|
||||||
};
|
|
||||||
"step 1";
|
|
||||||
if (result.bool) {
|
if (result.bool) {
|
||||||
var cards = result.links;
|
const cards = result.links;
|
||||||
player.loseToDiscardpile(cards);
|
player.loseToDiscardpile(cards);
|
||||||
player.discardPlayerCard(target, "ej", 1, true);
|
player.discardPlayerCard(event.target, "ej", 1, true);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
ai: {
|
ai: {
|
||||||
|
@ -773,35 +750,32 @@ const skills = {
|
||||||
trigger: {
|
trigger: {
|
||||||
player: "phaseJieshuBegin",
|
player: "phaseJieshuBegin",
|
||||||
},
|
},
|
||||||
direct: true,
|
async cost(event, trigger, player) {
|
||||||
content() {
|
event.result = await player
|
||||||
"step 0";
|
|
||||||
player
|
|
||||||
.chooseTarget(get.prompt2("drlt_zhenggu"), function (card, player, target) {
|
.chooseTarget(get.prompt2("drlt_zhenggu"), function (card, player, target) {
|
||||||
//if(target.storage.drlt_zhenggu_mark&&target.storage.drlt_zhenggu_mark.includes(player)) return false;
|
//if(target.storage.drlt_zhenggu_mark&&target.storage.drlt_zhenggu_mark.includes(player)) return false;
|
||||||
return target != player;
|
return target != player;
|
||||||
})
|
})
|
||||||
.set("ai", function (target) {
|
.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;
|
//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");
|
const num = Math.min(5, player.countCards("h")) - target.countCards("h");
|
||||||
var att = get.attitude(player, target);
|
const att = get.attitude(player, target);
|
||||||
return num * att;
|
return num * att;
|
||||||
});
|
})
|
||||||
"step 1";
|
.forResult();
|
||||||
if (result.bool) {
|
},
|
||||||
var target = result.targets[0];
|
async content(event, trigger, player) {
|
||||||
player.logSkill("drlt_zhenggu", target);
|
const target = event.targets[0];
|
||||||
player.addSkill("drlt_zhenggu2");
|
player.addSkill("drlt_zhenggu2");
|
||||||
target.addSkill("drlt_zhenggu_mark");
|
target.addSkill("drlt_zhenggu_mark");
|
||||||
target.storage.drlt_zhenggu_mark.push(player);
|
target.storage.drlt_zhenggu_mark.push(player);
|
||||||
target.markSkill("drlt_zhenggu_mark");
|
target.markSkill("drlt_zhenggu_mark");
|
||||||
lib.skill.drlt_zhenggu.sync(player, target);
|
lib.skill.drlt_zhenggu.sync(player, target);
|
||||||
}
|
|
||||||
},
|
},
|
||||||
sync(player, target) {
|
sync(player, target) {
|
||||||
var num = player.countCards("h");
|
const num = player.countCards("h");
|
||||||
var num2 = target.countCards("h");
|
const num2 = target.countCards("h");
|
||||||
if (num < num2) {
|
if (num < num2) {
|
||||||
target.chooseToDiscard(num2 - num, true, "h");
|
target.chooseToDiscard(num2 - num, true, "h");
|
||||||
} else target.drawTo(Math.min(5, num));
|
} else target.drawTo(Math.min(5, num));
|
||||||
|
@ -818,7 +792,7 @@ const skills = {
|
||||||
filter(event, player) {
|
filter(event, player) {
|
||||||
return event.player.storage.drlt_zhenggu_mark && event.player.storage.drlt_zhenggu_mark.includes(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)) {
|
while (trigger.player.storage.drlt_zhenggu_mark.includes(player)) {
|
||||||
trigger.player.storage.drlt_zhenggu_mark.remove(player);
|
trigger.player.storage.drlt_zhenggu_mark.remove(player);
|
||||||
}
|
}
|
||||||
|
@ -842,7 +816,7 @@ const skills = {
|
||||||
player: "phaseJieshuBegin",
|
player: "phaseJieshuBegin",
|
||||||
},
|
},
|
||||||
check(event, player) {
|
check(event, player) {
|
||||||
var num = 0;
|
let num = 0;
|
||||||
if (
|
if (
|
||||||
player.hasHistory("lose", function (evt) {
|
player.hasHistory("lose", function (evt) {
|
||||||
return evt.type == "discard";
|
return evt.type == "discard";
|
||||||
|
@ -855,7 +829,7 @@ const skills = {
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
prompt(event, player) {
|
prompt(event, player) {
|
||||||
var num = 3;
|
let num = 3;
|
||||||
if (
|
if (
|
||||||
player.hasHistory("lose", function (evt) {
|
player.hasHistory("lose", function (evt) {
|
||||||
return evt.type == "discard";
|
return evt.type == "discard";
|
||||||
|
@ -866,87 +840,79 @@ const skills = {
|
||||||
if (!player.getStat("damage")) num--;
|
if (!player.getStat("damage")) num--;
|
||||||
return get.prompt("xinfu_zuilun") + "(可获得" + get.cnNumber(num) + "张牌)";
|
return get.prompt("xinfu_zuilun") + "(可获得" + get.cnNumber(num) + "张牌)";
|
||||||
},
|
},
|
||||||
content() {
|
async content(event, trigger, player) {
|
||||||
"step 0";
|
"step 0";
|
||||||
event.num = 0;
|
let num = 0;
|
||||||
event.cards = get.cards(3);
|
const cards = get.cards(3);
|
||||||
game.cardsGotoOrdering(cards);
|
await game.cardsGotoOrdering(cards);
|
||||||
if (
|
if (
|
||||||
player.hasHistory("lose", function (evt) {
|
player.hasHistory("lose", function (evt) {
|
||||||
return evt.type == "discard";
|
return evt.type == "discard";
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
event.num++;
|
num++;
|
||||||
if (!player.isMinHandcard()) event.num++;
|
if (!player.isMinHandcard()) num++;
|
||||||
if (!player.getStat("damage")) event.num++;
|
if (!player.getStat("damage")) num++;
|
||||||
"step 1";
|
if (num == 0) {
|
||||||
if (event.num == 0) {
|
await player.gain(cards, "draw");
|
||||||
player.gain(event.cards, "draw");
|
return;
|
||||||
event.finish();
|
}
|
||||||
} else {
|
let prompt = "罪论:将" + get.cnNumber(num) + "张牌置于牌堆顶";
|
||||||
var prompt = "罪论:将" + get.cnNumber(num) + "张牌置于牌堆顶";
|
if (num < 3) prompt += "并获得其余的牌";
|
||||||
if (num < 3) prompt += "并获得其余的牌";
|
const chooseToMove = player.chooseToMove(prompt, true);
|
||||||
var next = player.chooseToMove(prompt, true);
|
if (num < 3) {
|
||||||
if (num < 3) {
|
chooseToMove.set("list", [["牌堆顶", cards], ["获得"]]);
|
||||||
next.set("list", [["牌堆顶", cards], ["获得"]]);
|
chooseToMove.set("filterMove", function (from, to, moved) {
|
||||||
next.set("filterMove", function (from, to, moved) {
|
if (to == 1 && moved[0].length <= _status.event.num) return false;
|
||||||
if (to == 1 && moved[0].length <= _status.event.num) return false;
|
return true;
|
||||||
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];
|
|
||||||
});
|
});
|
||||||
}
|
chooseToMove.set("filterOk", function (moved) {
|
||||||
"step 2";
|
return moved[0].length == _status.event.num;
|
||||||
if (result.bool) {
|
});
|
||||||
var list = result.moved[0];
|
} else chooseToMove.set("list", [["牌堆顶", cards]]);
|
||||||
var num = list.length - 1;
|
chooseToMove.set("num", num);
|
||||||
for (var i = 0; i < list.length; i++) {
|
chooseToMove.set("processAI", function (list) {
|
||||||
event.cards.remove(list[num - i]);
|
const check = function (card) {
|
||||||
ui.cardPile.insertBefore(list[num - i], ui.cardPile.firstChild);
|
const player = _status.event.player;
|
||||||
}
|
const next = player.next;
|
||||||
}
|
const att = get.attitude(player, next);
|
||||||
"step 3";
|
const judge = next.getCards("j")[tops.length];
|
||||||
game.updateRoundNumber();
|
if (judge) {
|
||||||
if (event.cards.length) {
|
return get.judge(judge)(card) * att;
|
||||||
player.gain(event.cards, "draw");
|
}
|
||||||
event.finish();
|
return next.getUseValue(card) * att;
|
||||||
} else {
|
|
||||||
player.chooseTarget("请选择一名角色,与其一同失去1点体力", true, function (card, player, target) {
|
|
||||||
return target != player;
|
|
||||||
}).ai = function (target) {
|
|
||||||
return -get.attitude(_status.event.player, target);
|
|
||||||
};
|
};
|
||||||
|
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.line(result.targets[0], "fire");
|
||||||
player.loseHp();
|
await player.loseHp();
|
||||||
result.targets[0].loseHp();
|
await result.targets[0].loseHp();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
xinfu_fuyin: {
|
xinfu_fuyin: {
|
||||||
|
@ -966,7 +932,7 @@ const skills = {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
content() {
|
async content(event, trigger, player) {
|
||||||
trigger.getParent().excluded.add(player);
|
trigger.getParent().excluded.add(player);
|
||||||
},
|
},
|
||||||
ai: {
|
ai: {
|
||||||
|
@ -1022,7 +988,7 @@ const skills = {
|
||||||
filter(event, player) {
|
filter(event, player) {
|
||||||
return !player.isLinked();
|
return !player.isLinked();
|
||||||
},
|
},
|
||||||
content() {
|
async content(event, trigger, player) {
|
||||||
trigger.cancel();
|
trigger.cancel();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -1045,9 +1011,8 @@ const skills = {
|
||||||
filter(event, player) {
|
filter(event, player) {
|
||||||
return player.hasEnabledSlot(1) || player.hasEnabledSlot(2) || player.hasEnabledSlot(5) || player.hasEnabledSlot("horse");
|
return player.hasEnabledSlot(1) || player.hasEnabledSlot(2) || player.hasEnabledSlot(5) || player.hasEnabledSlot("horse");
|
||||||
},
|
},
|
||||||
content() {
|
async content(event, trigger, player) {
|
||||||
"step 0";
|
const { control } = await player.chooseToDisable(true).set("ai", function (event, player, list) {
|
||||||
player.chooseToDisable(true).set("ai", function (event, player, list) {
|
|
||||||
if (list.includes("equip2")) return "equip2";
|
if (list.includes("equip2")) return "equip2";
|
||||||
if (
|
if (
|
||||||
list.includes("equip1") &&
|
list.includes("equip1") &&
|
||||||
|
@ -1065,9 +1030,8 @@ const skills = {
|
||||||
}) > 1
|
}) > 1
|
||||||
)
|
)
|
||||||
return "equip5";
|
return "equip5";
|
||||||
});
|
}).forResult();
|
||||||
"step 1";
|
switch (control) {
|
||||||
switch (result.control) {
|
|
||||||
case "equip1":
|
case "equip1":
|
||||||
player.addTempSkill("drlt_jueyan1");
|
player.addTempSkill("drlt_jueyan1");
|
||||||
break;
|
break;
|
||||||
|
@ -1154,12 +1118,10 @@ const skills = {
|
||||||
filter(event, player) {
|
filter(event, player) {
|
||||||
return !player.hasEnabledSlot() || player.hp == 1;
|
return !player.hasEnabledSlot() || player.hp == 1;
|
||||||
},
|
},
|
||||||
content() {
|
async content(event, trigger, player) {
|
||||||
"step 0";
|
|
||||||
player.awakenSkill("drlt_poshi");
|
player.awakenSkill("drlt_poshi");
|
||||||
player.loseMaxHp();
|
await player.loseMaxHp();
|
||||||
"step 1";
|
const num = player.maxHp - player.countCards("h");
|
||||||
var num = player.maxHp - player.countCards("h");
|
|
||||||
if (num > 0) player.draw(num);
|
if (num > 0) player.draw(num);
|
||||||
player.changeSkills(["drlt_huairou"], ["drlt_jueyan"]);
|
player.changeSkills(["drlt_huairou"], ["drlt_jueyan"]);
|
||||||
},
|
},
|
||||||
|
@ -1174,8 +1136,8 @@ const skills = {
|
||||||
if (!_status.event.player.canEquip(card)) return 5;
|
if (!_status.event.player.canEquip(card)) return 5;
|
||||||
return 3 - get.value(card);
|
return 3 - get.value(card);
|
||||||
},
|
},
|
||||||
content() {
|
async content(event, trigger, player) {
|
||||||
player.recast(cards);
|
player.recast(event.cards);
|
||||||
},
|
},
|
||||||
discard: false,
|
discard: false,
|
||||||
lose: false,
|
lose: false,
|
||||||
|
@ -2419,7 +2381,7 @@ const skills = {
|
||||||
if (cards.length) player.loseToDiscardpile(cards);
|
if (cards.length) player.loseToDiscardpile(cards);
|
||||||
},
|
},
|
||||||
group: ["nzry_mingren_1", "nzry_mingren_2"],
|
group: ["nzry_mingren_1", "nzry_mingren_2"],
|
||||||
ai:{
|
ai: {
|
||||||
combo: "nzry_zhenliang",
|
combo: "nzry_zhenliang",
|
||||||
},
|
},
|
||||||
subSkill: {
|
subSkill: {
|
||||||
|
|
|
@ -240,4 +240,22 @@ export default {
|
||||||
"#yinghun_ol_sunjian2": "贼寇草莽,我且出战。",
|
"#yinghun_ol_sunjian2": "贼寇草莽,我且出战。",
|
||||||
"#xueyi_re_yuanshao1": "崇王攘夷,生长尊贵。",
|
"#xueyi_re_yuanshao1": "崇王攘夷,生长尊贵。",
|
||||||
"#xueyi_re_yuanshao2": "衣冠华胄,宜蒙优免。",
|
"#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": "取汝首级,有如探囊取物!",
|
||||||
};
|
};
|
||||||
|
|
|
@ -219,4 +219,12 @@ export default {
|
||||||
"#mjmouzhi1": "潜谋于无形,胜于不争不费。",
|
"#mjmouzhi1": "潜谋于无形,胜于不争不费。",
|
||||||
"#mjmouzhi2": "欲思其成,必虑其败也。",
|
"#mjmouzhi2": "欲思其成,必虑其败也。",
|
||||||
"#sp_xunchen:die": "袁公不济,吾自当以死继之……",
|
"#sp_xunchen:die": "袁公不济,吾自当以死继之……",
|
||||||
|
"#gonghuan1": "曹魏势大,吴蜀当共拒之。",
|
||||||
|
"#gonghuan2": "两国得此联姻,邦交更当稳固。",
|
||||||
|
"#mouli1": "澄汰王室,迎立宗子!",
|
||||||
|
"#mouli2": "僣孽为害,吾岂可谋而不行?",
|
||||||
|
"#xuancun1": "阿斗年幼,望子龙将军仔细!",
|
||||||
|
"#xuancun2": "今得见将军,此儿有望生矣。",
|
||||||
|
"#spmiewu1": "倾荡之势已成,石城尽在眼下",
|
||||||
|
"#spmiewu2": "吾军势如破竹,江东六郡唾手可得。",
|
||||||
};
|
};
|
||||||
|
|
|
@ -700,4 +700,58 @@ export default {
|
||||||
"#shuangren2": "仲国大将纪灵在此!",
|
"#shuangren2": "仲国大将纪灵在此!",
|
||||||
"#shangyi1": "大丈夫为人坦荡,看下手牌算什么。",
|
"#shangyi1": "大丈夫为人坦荡,看下手牌算什么。",
|
||||||
"#shangyi2": "敌情已了然于胸,即刻出发!",
|
"#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": "董贼旧部,可尽诛之!",
|
||||||
};
|
};
|
||||||
|
|
|
@ -391,4 +391,18 @@ export default {
|
||||||
"#qigong1": "打虎亲兄弟!",
|
"#qigong1": "打虎亲兄弟!",
|
||||||
"#qigong2": "丞相有令,尔敢不从?",
|
"#qigong2": "丞相有令,尔敢不从?",
|
||||||
"#lvkuanglvxiang:die": "此处可是新野……",
|
"#lvkuanglvxiang:die": "此处可是新野……",
|
||||||
|
"#dcnuchen1": "触关某之逆鳞者,杀无赦!",
|
||||||
|
"#dcnuchen2": "天下碌碌之辈,安敢小觑关某?!",
|
||||||
|
"#dczuojian1": "关羽者,刘备之枭将,宜除之。",
|
||||||
|
"#dczuojian2": "主公虽非赵简子,然某可为周舍。",
|
||||||
|
"#longdan_tongyuan": "能进能退,方显名将本色。",
|
||||||
|
"#ocongjian_tongyuan": "察言纳谏,安身立命之道也。",
|
||||||
|
"#chuanyun": "吾枪所至,人马俱亡!",
|
||||||
|
"#zhangu1": "孤军奋战,独破众将。",
|
||||||
|
"#zhangu2": "雄狮搏兔,何须援乎?",
|
||||||
|
"#bmcanshi1": "是你,在召唤我吗?",
|
||||||
|
"#bmcanshi2": "这片土地的人,真是太有趣了。",
|
||||||
|
"#xz_xunxun1": "精挑细选,方能成百年之计。",
|
||||||
|
"#xz_xunxun2": "让我先探他一探。",
|
||||||
|
"#xinfu_xingzhao2": "船,也不是一天就能造出来的。",
|
||||||
};
|
};
|
||||||
|
|
|
@ -315,4 +315,29 @@ export default {
|
||||||
"#renshe1": "无论风雨再大,都无法阻挡我的脚步。",
|
"#renshe1": "无论风雨再大,都无法阻挡我的脚步。",
|
||||||
"#renshe2": "一定不能辜负女王的期望!",
|
"#renshe2": "一定不能辜负女王的期望!",
|
||||||
"#nashime:die": "请把这身残躯,带回我的家乡……",
|
"#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": "小则蚕食,大则溃坝。",
|
||||||
};
|
};
|
||||||
|
|
|
@ -429,4 +429,44 @@ export default {
|
||||||
"#wlcuorui1": "减辎疾行,挫敌军锐气。",
|
"#wlcuorui1": "减辎疾行,挫敌军锐气。",
|
||||||
"#wlcuorui2": "外物当舍,摄敌为重。",
|
"#wlcuorui2": "外物当舍,摄敌为重。",
|
||||||
"#wulan:die": "蛮狗,尔敢杀我!",
|
"#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": "仙人之目,因果即现!",
|
||||||
};
|
};
|
||||||
|
|
|
@ -55,4 +55,6 @@ export default {
|
||||||
"#xinfu_limu1": "米贼作乱,吾必为益州自保。",
|
"#xinfu_limu1": "米贼作乱,吾必为益州自保。",
|
||||||
"#xinfu_limu2": "废史立牧,可得一方安定。",
|
"#xinfu_limu2": "废史立牧,可得一方安定。",
|
||||||
"#liuyan:die": "背疮难治,世子难继。",
|
"#liuyan:die": "背疮难治,世子难继。",
|
||||||
|
"#xinfu_zhanji1": "公瑾安全至吴,心安之。",
|
||||||
|
"#xinfu_zhanji2": "功曹之恩,吾必有展骥之机。",
|
||||||
};
|
};
|
||||||
|
|
|
@ -1268,34 +1268,28 @@ const skills = {
|
||||||
audio: 2,
|
audio: 2,
|
||||||
trigger: { global: "useCard" },
|
trigger: { global: "useCard" },
|
||||||
filter: function (event, player) {
|
filter: function (event, player) {
|
||||||
var history = game.getAllGlobalHistory("useCard");
|
const history = game.getAllGlobalHistory("useCard");
|
||||||
var index = history.indexOf(event);
|
const index = history.indexOf(event);
|
||||||
if (index <= 0) return false;
|
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 && previous.isIn()) return true;
|
||||||
if (event.player != player && previous == player) return true;
|
if (event.player != player && previous == player) return true;
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
direct: true,
|
async cost(event, trigger, player) {
|
||||||
content: function () {
|
if (!trigger.player) return;
|
||||||
"step 0";
|
const history = game.getAllGlobalHistory("useCard");
|
||||||
var history = game.getAllGlobalHistory("useCard");
|
const index = history.indexOf(trigger);
|
||||||
var index = history.indexOf(trigger);
|
const previous = history[index - 1].player;
|
||||||
var previous = history[index - 1].player;
|
const { result } = await trigger.player
|
||||||
var user = trigger.player,
|
.chooseBool("是否对" + get.translation(previous) + "发动【联对】?", "令" + get.translation(previous) + "摸两张牌")
|
||||||
target = previous;
|
.set("ai", () => _status.event.bool)
|
||||||
event.user = user;
|
.set("bool", get.effect(previous, { name: "draw" }, trigger.player, trigger.player) > 0);
|
||||||
event.target = target;
|
if (result.bool) event.result = { bool: true, cost_data: previous };
|
||||||
if (user) {
|
},
|
||||||
user.chooseBool("是否对" + get.translation(target) + "发动【联对】?", "令" + get.translation(target) + "摸两张牌")
|
async content(event, trigger, player) {
|
||||||
.set("ai", () => _status.event.bool)
|
const { cost_data: previous } = event;
|
||||||
.set("bool", get.effect(target, { name: "draw" }, user, user) > 0);
|
previous.draw(2);
|
||||||
}
|
|
||||||
"step 1";
|
|
||||||
if (result.bool) {
|
|
||||||
event.user.logSkill("liandui", target);
|
|
||||||
target.draw(2);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
biejun: {
|
biejun: {
|
||||||
|
@ -8379,14 +8373,20 @@ const skills = {
|
||||||
content: function () {
|
content: function () {
|
||||||
"step 0";
|
"step 0";
|
||||||
player.showHandcards();
|
player.showHandcards();
|
||||||
const hs = player.getCards("h"), color = get.color(hs[0], player);
|
const hs = player.getCards("h"),
|
||||||
if (hs.length === 1 || !hs.some((card,index) => {
|
color = get.color(hs[0], player);
|
||||||
return index > 0 && get.color(card) !== color;
|
if (
|
||||||
})) {
|
hs.length === 1 ||
|
||||||
|
!hs.some((card, index) => {
|
||||||
|
return index > 0 && get.color(card) !== color;
|
||||||
|
})
|
||||||
|
) {
|
||||||
event.finish();
|
event.finish();
|
||||||
}
|
}
|
||||||
"step 1";
|
"step 1";
|
||||||
const list = [], bannedList = [], indexs = Object.keys(lib.color);
|
const list = [],
|
||||||
|
bannedList = [],
|
||||||
|
indexs = Object.keys(lib.color);
|
||||||
player.getCards("h").forEach(card => {
|
player.getCards("h").forEach(card => {
|
||||||
const color = get.color(card, player);
|
const color = get.color(card, player);
|
||||||
list.add(color);
|
list.add(color);
|
||||||
|
@ -8395,15 +8395,19 @@ const skills = {
|
||||||
list.removeArray(bannedList);
|
list.removeArray(bannedList);
|
||||||
list.sort((a, b) => indexs.indexOf(a) - indexs.indexOf(b));
|
list.sort((a, b) => indexs.indexOf(a) - indexs.indexOf(b));
|
||||||
if (!list.length) event.finish();
|
if (!list.length) event.finish();
|
||||||
else if(list.length === 1) event._result = {control: list[0]};
|
else if (list.length === 1) event._result = { control: list[0] };
|
||||||
else player.chooseControl(list.map(i => `${i}2`)).set("ai", function () {
|
else
|
||||||
var player = _status.event.player;
|
player
|
||||||
if (player.countCards("h", { color: "red" }) == 1 && player.countCards("h", { color: "black" }) > 1) return 1;
|
.chooseControl(list.map(i => `${i}2`))
|
||||||
return 0;
|
.set("ai", function () {
|
||||||
}).set("prompt", "请选择弃置一种颜色的所有手牌");
|
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";
|
"step 2";
|
||||||
event.control = result.control.slice(0, result.control.length - 1);
|
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);
|
player.discard(cards);
|
||||||
event.num = cards.length;
|
event.num = cards.length;
|
||||||
"step 3";
|
"step 3";
|
||||||
|
@ -8442,7 +8446,7 @@ const skills = {
|
||||||
return 1;
|
return 1;
|
||||||
},
|
},
|
||||||
result: {
|
result: {
|
||||||
player:(player) => {
|
player: player => {
|
||||||
if (get.color(player.getCards("h")) != "none") return 0;
|
if (get.color(player.getCards("h")) != "none") return 0;
|
||||||
return 1;
|
return 1;
|
||||||
},
|
},
|
||||||
|
|
|
@ -369,4 +369,20 @@ export default {
|
||||||
"#yujin:die": "我,无颜面对丞相了……",
|
"#yujin:die": "我,无颜面对丞相了……",
|
||||||
"#reqiaoshui1": "慧心妙舌,难题可解。",
|
"#reqiaoshui1": "慧心妙舌,难题可解。",
|
||||||
"#reqiaoshui2": "巧言善辩,应对自如。",
|
"#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": "悠悠琴音,人人自醉。",
|
||||||
};
|
};
|
||||||
|
|
|
@ -1649,9 +1649,13 @@ const skills = {
|
||||||
.getCards("he", function (card) {
|
.getCards("he", function (card) {
|
||||||
return lib.filter.canBeDiscarded(card, player, target);
|
return lib.filter.canBeDiscarded(card, player, target);
|
||||||
})
|
})
|
||||||
|
.map(c => {
|
||||||
|
link: c;
|
||||||
|
})
|
||||||
.sort(function (a, b) {
|
.sort(function (a, b) {
|
||||||
return get.buttonValue(b) - get.buttonValue(a);
|
return get.buttonValue(b) - get.buttonValue(a);
|
||||||
});
|
})
|
||||||
|
.map(b => b.link);
|
||||||
if (
|
if (
|
||||||
target.countCards("h") - player.countCards("h") >=
|
target.countCards("h") - player.countCards("h") >=
|
||||||
Math.max(
|
Math.max(
|
||||||
|
|
|
@ -126,4 +126,10 @@ export default {
|
||||||
"#zhaotao1": "奉诏伐吴,定鼎东南!",
|
"#zhaotao1": "奉诏伐吴,定鼎东南!",
|
||||||
"#zhaotao2": "三陈方得诏,一股下孙吴!",
|
"#zhaotao2": "三陈方得诏,一股下孙吴!",
|
||||||
"#duyu:die": "金瓯尚缺,死难瞑目……",
|
"#duyu:die": "金瓯尚缺,死难瞑目……",
|
||||||
|
"#xijue_tuxi1": "动如霹雳,威震宵小!",
|
||||||
|
"#xijue_tuxi2": "行略如风,摧枯拉朽!",
|
||||||
|
"#xijue_xiaoguo1": "大丈夫生于世,当沙场效忠!",
|
||||||
|
"#xijue_xiaoguo2": "骁勇善战,刚毅果断!",
|
||||||
|
"#pozhu1": "攻其不备,摧枯拉朽!",
|
||||||
|
"#pozhu2": "势如破竹,铁锁横江亦难挡!",
|
||||||
};
|
};
|
||||||
|
|
|
@ -1557,9 +1557,7 @@ export class Game {
|
||||||
let [, path = "skill", audioNum, ext = "mp3"] = list;
|
let [, path = "skill", audioNum, ext = "mp3"] = list;
|
||||||
let _audioname = getName(i => audioname.includes(i));
|
let _audioname = getName(i => audioname.includes(i));
|
||||||
_audioname = _audioname ? `_${_audioname}` : "";
|
_audioname = _audioname ? `_${_audioname}` : "";
|
||||||
|
|
||||||
if (audioNum === "true") return [getTextMap(`${path}/`, `${skill}${_audioname}`, `.${ext}`, isDefault)];
|
if (audioNum === "true") return [getTextMap(`${path}/`, `${skill}${_audioname}`, `.${ext}`, isDefault)];
|
||||||
|
|
||||||
const audioList = [];
|
const audioList = [];
|
||||||
audioNum = parseInt(audioNum);
|
audioNum = parseInt(audioNum);
|
||||||
for (let i = 1; i <= audioNum; i++) {
|
for (let i = 1; i <= audioNum; i++) {
|
||||||
|
@ -1568,15 +1566,14 @@ export class Game {
|
||||||
return audioList;
|
return audioList;
|
||||||
}
|
}
|
||||||
|
|
||||||
let path = "",
|
let path = "", ext = "";
|
||||||
ext = "";
|
|
||||||
if (!/^db:|^ext:|\//.test(audioInfo)) path = "skill/";
|
if (!/^db:|^ext:|\//.test(audioInfo)) path = "skill/";
|
||||||
if (!/\.\w+$/.test(audioInfo)) ext = ".mp3";
|
if (!/\.\w+$/.test(audioInfo)) ext = ".mp3";
|
||||||
if (path && ext) return parseAudio(audioInfo, Object.assign(options, { isDefault: true }), defaultInfo);
|
if (path && ext) return parseAudio(audioInfo, Object.assign(options, { isDefault: true }), defaultInfo);
|
||||||
//@TODO
|
//@TODO
|
||||||
console.warn(`${skill}中的地址写法(${audioInfo})暂时没有完全支持台词系统。`);
|
console.warn(`${skill}中的地址写法(${audioInfo})暂时没有完全支持台词系统。`);
|
||||||
return [getTextMap(path, audioInfo, ext, isDefault)];
|
return [getTextMap(path, audioInfo, ext, isDefault)];
|
||||||
};
|
}
|
||||||
|
|
||||||
return getAudioList(skill, { audioname: [], history: [], isDefault: false }, skillInfo);
|
return getAudioList(skill, { audioname: [], history: [], isDefault: false }, skillInfo);
|
||||||
}
|
}
|
||||||
|
@ -1702,7 +1699,6 @@ export class Game {
|
||||||
if (!lib.config.background_speak) return;
|
if (!lib.config.background_speak) return;
|
||||||
if (info.direct && !directaudio) return;
|
if (info.direct && !directaudio) return;
|
||||||
if (lib.skill.global.includes(skill) && !info.forceaudio) return;
|
if (lib.skill.global.includes(skill) && !info.forceaudio) return;
|
||||||
|
|
||||||
let audio,
|
let audio,
|
||||||
list = game.parseSkillTextMap(skill, player, skillInfo).randomSort();
|
list = game.parseSkillTextMap(skill, player, skillInfo).randomSort();
|
||||||
return (function play() {
|
return (function play() {
|
||||||
|
|
|
@ -618,7 +618,7 @@ export class Get {
|
||||||
if (num === 3 || num === 4) return [];
|
if (num === 3 || num === 4) return [];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return info || get.convertedCharacter({});
|
return info || get.convertedCharacter({ isNull: true });
|
||||||
}
|
}
|
||||||
characterInitFilter(name) {
|
characterInitFilter(name) {
|
||||||
const info = get.character(name);
|
const info = get.character(name);
|
||||||
|
|
|
@ -160,6 +160,11 @@ export class Character {
|
||||||
* @type { string[] }
|
* @type { string[] }
|
||||||
*/
|
*/
|
||||||
tempname = [];
|
tempname = [];
|
||||||
|
/**
|
||||||
|
* 武将牌是否存在(get.character未找到武将使用)
|
||||||
|
* @type { boolean }
|
||||||
|
*/
|
||||||
|
isNull = false;
|
||||||
/**
|
/**
|
||||||
* @param { Object|[string, string, string|number, string[], any[]|undefined, any[]|undefined] } [data]
|
* @param { Object|[string, string, string|number, string[], any[]|undefined, any[]|undefined] } [data]
|
||||||
*/
|
*/
|
||||||
|
@ -208,8 +213,7 @@ export class Character {
|
||||||
* @param { any[] } trash
|
* @param { any[] } trash
|
||||||
*/
|
*/
|
||||||
setPropertiesFromTrash(trash) {
|
setPropertiesFromTrash(trash) {
|
||||||
const keptTrashes = [],
|
const keptTrashes = [], clans = [], dieAudios=[];
|
||||||
clans = [];
|
|
||||||
for (let i = 0; i < trash.length; i++) {
|
for (let i = 0; i < trash.length; i++) {
|
||||||
const item = trash[i];
|
const item = trash[i];
|
||||||
if (typeof item !== "string") {
|
if (typeof item !== "string") {
|
||||||
|
@ -260,10 +264,11 @@ export class Character {
|
||||||
clans.push(item.slice(5));
|
clans.push(item.slice(5));
|
||||||
} else if (item.startsWith("InitFilter:")) {
|
} else if (item.startsWith("InitFilter:")) {
|
||||||
this.initFilters = item.slice(11).split(":");
|
this.initFilters = item.slice(11).split(":");
|
||||||
} else if (item.startsWith("die:")){
|
} else if (item.startsWith("die:")) {
|
||||||
this.dieAudios.push(item.slice(4));
|
dieAudios.add(item.slice(4));
|
||||||
} else if (item.startsWith("die_audio:")){
|
} else if (item.startsWith("die_audio:")) {
|
||||||
this.dieAudios = item.slice(10).split(":");
|
console.warn(`die_audio参数已废弃,请使用多个die参数。`);
|
||||||
|
dieAudios.addArray(item.slice(10).split(":"));
|
||||||
} else if (item.startsWith("tempname:")) {
|
} else if (item.startsWith("tempname:")) {
|
||||||
this.tempname = item.slice(9).split(":");
|
this.tempname = item.slice(9).split(":");
|
||||||
} else {
|
} else {
|
||||||
|
@ -271,6 +276,7 @@ export class Character {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.clans = clans;
|
this.clans = clans;
|
||||||
|
this.dieAudios = dieAudios;
|
||||||
this.trashBin = keptTrashes;
|
this.trashBin = keptTrashes;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -388,8 +394,7 @@ export class Character {
|
||||||
trashes.push(`InitFilters:${character.initFilters.join(":")}`);
|
trashes.push(`InitFilters:${character.initFilters.join(":")}`);
|
||||||
}
|
}
|
||||||
if (character.dieAudios.length > 0) {
|
if (character.dieAudios.length > 0) {
|
||||||
if (character.dieAudios.length === 1) trashes.push(`die:${character.dieAudios[0]}`)
|
character.dieAudios.forEach((item) => trashes.push(`die:${item}`));
|
||||||
else trashes.push(`die_audio:${character.dieAudios.join(":")}`);
|
|
||||||
}
|
}
|
||||||
if (character.tempname.length > 0) {
|
if (character.tempname.length > 0) {
|
||||||
trashes.push(`tempname:${character.tempname.join(":")}`);
|
trashes.push(`tempname:${character.tempname.join(":")}`);
|
||||||
|
|
|
@ -8776,20 +8776,9 @@ export const Content = {
|
||||||
game.dead.push(player);
|
game.dead.push(player);
|
||||||
_status.dying.remove(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);
|
}, player);
|
||||||
|
|
||||||
|
game.tryDieAudio(player);
|
||||||
game.addVideo("diex", player);
|
game.addVideo("diex", player);
|
||||||
if (event.animate !== false) {
|
if (event.animate !== false) {
|
||||||
player.$die(source);
|
player.$die(source);
|
||||||
|
|
|
@ -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();
|
const skillAudioMap = new Map();
|
||||||
nameinfo.skills.forEach(skill => {
|
nameinfo.skills.forEach(skill => {
|
||||||
const voiceMap = game.parseSkillText(skill, name, null, true);
|
const voiceMap = game.parseSkillText(skill, name, null, true);
|
||||||
|
@ -3397,10 +3397,10 @@ export class Click {
|
||||||
skillNameSpanStyle2.lineHeight = "1.9";
|
skillNameSpanStyle2.lineHeight = "1.9";
|
||||||
skillNameSpan2.innerHTML = `• 阵亡台词`;
|
skillNameSpan2.innerHTML = `• 阵亡台词`;
|
||||||
intro.appendChild(skillNameSpan2);
|
intro.appendChild(skillNameSpan2);
|
||||||
dieAudios.forEach((item, index) => {
|
dieAudios.forEach((text, index) => {
|
||||||
const dieTextSpan = document.createElement("span");
|
const dieTextSpan = document.createElement("span");
|
||||||
dieTextSpan.style.fontSize = "15.2px";
|
dieTextSpan.style.fontSize = "15.2px";
|
||||||
dieTextSpan.innerHTML = `<br>${dieAudios.length > 1 ? `${index + 1}. ` : ""}${item.text}`;
|
dieTextSpan.innerHTML = `<br>${dieAudios.length > 1 ? `${index + 1}. ` : ""}${text}`;
|
||||||
intro.appendChild(dieTextSpan);
|
intro.appendChild(dieTextSpan);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -3677,7 +3677,7 @@ export class Click {
|
||||||
Array.from(htmlParser.childNodes).forEach((value) => introduction.appendChild(value));
|
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();
|
const skillAudioMap = new Map();
|
||||||
nameInfo.skills.forEach(skill => {
|
nameInfo.skills.forEach(skill => {
|
||||||
const voiceMap = game.parseSkillText(skill, name, null, true);
|
const voiceMap = game.parseSkillText(skill, name, null, true);
|
||||||
|
@ -3712,9 +3712,9 @@ export class Click {
|
||||||
skillNameSpan.innerHTML = `<br>阵亡台词`;
|
skillNameSpan.innerHTML = `<br>阵亡台词`;
|
||||||
introduction.appendChild(skillNameSpan);
|
introduction.appendChild(skillNameSpan);
|
||||||
|
|
||||||
dieAudios.forEach((item, index) => {
|
dieAudios.forEach((text, index) => {
|
||||||
const dieTextSpan = document.createElement("span");
|
const dieTextSpan = document.createElement("span");
|
||||||
dieTextSpan.innerHTML = `<br>${dieAudios.length > 1 ? `${index + 1}. ` : ""}${item.text}`;
|
dieTextSpan.innerHTML = `<br>${dieAudios.length > 1 ? `${index + 1}. ` : ""}${text}`;
|
||||||
introduction.appendChild(dieTextSpan);
|
introduction.appendChild(dieTextSpan);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue