From 18b361f191ee4fc86fbe247668d2086ab51bb3c9 Mon Sep 17 00:00:00 2001 From: 157 <3619242020@qq.com> Date: Sat, 1 Jun 2024 00:34:46 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E7=BB=86=E8=8A=82=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/extra/skill.js | 12 +++++++++++- character/onlyOL/skill.js | 1 - character/refresh/skill.js | 1 - character/shiji/translate.js | 2 +- character/standard/skill.js | 3 +++ 5 files changed, 15 insertions(+), 4 deletions(-) diff --git a/character/extra/skill.js b/character/extra/skill.js index 6072b5ce5..aad130050 100644 --- a/character/extra/skill.js +++ b/character/extra/skill.js @@ -1992,7 +1992,17 @@ const skills = { }, }, ai: { - combo: "dctuoyu", + effect: { + player(card, player, target) { + if ( + !get.tag(card, "damage") || + player.countMark("dcxianjin") % 2 || + !player.hasSkillTag("jueqing", null, target) + ) return; + if (player.isMaxHandcard()) return [1, 1]; + return [1, Math.min(3, 1 + player.getStorage("dctuoyu").length)]; + } + } }, }, dcqijing: { diff --git a/character/onlyOL/skill.js b/character/onlyOL/skill.js index 724926850..f636485fa 100644 --- a/character/onlyOL/skill.js +++ b/character/onlyOL/skill.js @@ -1049,7 +1049,6 @@ const skills = { } } }, - ai: { combo: "olsbyufeng" }, }, //界高顺 olxianzhen: { diff --git a/character/refresh/skill.js b/character/refresh/skill.js index 3cc50b8d7..6e9dbbf1c 100644 --- a/character/refresh/skill.js +++ b/character/refresh/skill.js @@ -335,7 +335,6 @@ const skills = { } return bool; }, - ai: { combo: "rejijun" }, }, //界司马朗 requji: { diff --git a/character/shiji/translate.js b/character/shiji/translate.js index ae6c651d6..a11863cce 100644 --- a/character/shiji/translate.js +++ b/character/shiji/translate.js @@ -54,7 +54,7 @@ const translates = { mjchenshi: "陈势", mjchenshi_player: "陈势", mjchenshi_target: "陈势", - mjchenshi_info: "当有角色使用【兵临城下】指定第一个目标后,其可交给你一张牌,并将牌堆的顶三张牌中所有不为【杀】的牌置入弃牌堆;当有角色成为【兵临城下】的目标后,其可交给你一张牌,然后将牌堆顶三张牌中所有的【杀】置入弃牌堆。", + mjchenshi_info: "当有角色使用【兵临城下】指定第一个目标后,其可交给你一张牌,并将牌堆顶三张牌中所有不为【杀】的牌置入弃牌堆;当有角色成为【兵临城下】的目标后,其可交给你一张牌,然后将牌堆顶三张牌中所有的【杀】置入弃牌堆。", mjmouzhi: "谋识", mjmouzhi_info: "锁定技,当你受到伤害时,若伤害渠道对应的牌和你上次受到的伤害花色相同,则你防止此伤害。", luotong: "手杀骆统", diff --git a/character/standard/skill.js b/character/standard/skill.js index 917fef3fa..9e2b5f692 100644 --- a/character/standard/skill.js +++ b/character/standard/skill.js @@ -237,6 +237,9 @@ const skills = { player.popup("盗书"); game.log(player, "重置了技能", "#g【盗书】"); }, + ai: { + combo: "stddaoshu" + }, }, //周处 stdxiongxia: { From d58e7f72a24fa7069a0a00c3c02970a1b8472c84 Mon Sep 17 00:00:00 2001 From: 157 <3619242020@qq.com> Date: Sat, 1 Jun 2024 01:11:16 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E7=BB=99=E9=9C=80=E8=A6=81=E4=BB=81?= =?UTF-8?q?=E5=BA=93=E3=80=81=E8=AE=AE=E4=BA=8B=E3=80=81=E5=BD=B1=E3=80=81?= =?UTF-8?q?=E6=9A=B4=E8=99=90=E5=80=BC=E3=80=81=E6=8A=A4=E7=94=B2=E5=8F=91?= =?UTF-8?q?=E5=8A=A8=E7=9A=84=E6=8A=80=E8=83=BD=E6=B7=BB=E5=8A=A0combo?= =?UTF-8?q?=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/jsrg/skill.js | 10 ++++++ character/mobile/skill.js | 59 ++------------------------------ character/sb/skill.js | 9 ++++- character/shiji/skill.js | 71 +++++++++++++++++++++++++++++++++++++++ character/tw/skill.js | 4 +++ 5 files changed, 96 insertions(+), 57 deletions(-) diff --git a/character/jsrg/skill.js b/character/jsrg/skill.js index 9d0fb222a..b73a13333 100644 --- a/character/jsrg/skill.js +++ b/character/jsrg/skill.js @@ -1835,6 +1835,9 @@ const skills = { }, }, }, + ai: { + combo: "jsrgjinfa" + }, }, jsrgxuanfeng: { audio: 2, @@ -1867,6 +1870,7 @@ const skills = { }, ai: { order: 2, + combo: "jsrgjinfa" }, }, //陆逊 @@ -2921,6 +2925,9 @@ const skills = { } player.logSkill("jsrgbazheng", dissident); }, + ai: { + combo: "jsrgyaoyan" + }, }, //刘永 jsrgdanxin: { @@ -9399,6 +9406,9 @@ const skills = { target.damage(); } }, + ai: { + combo: "jsrgshelun" + }, }, jsrgtushe: { audio: "xinfu_tushe", diff --git a/character/mobile/skill.js b/character/mobile/skill.js index 3f8f03a7d..1d0faa786 100644 --- a/character/mobile/skill.js +++ b/character/mobile/skill.js @@ -1379,6 +1379,9 @@ const skills = { async content(event, trigger, player) { trigger.num++; }, + ai: { + combo: "zhoulin" + }, }, zhoulin: { audio: 2, @@ -8387,62 +8390,6 @@ const skills = { } }, }, - //新华歆 - yuanqing: { - audio: 2, - trigger: { player: "phaseUseEnd" }, - forced: true, - filter: function (event, player) { - return player.hasHistory("useCard", function (evt) { - return evt.getParent("phaseUse") == event; - }); - }, - content: function () { - var map = {}, - cards = []; - player.getHistory("useCard", function (evt) { - if (evt.getParent("phaseUse") == trigger) { - var type = get.type2(evt.card, false); - if (!map[type]) map[type] = []; - } - }); - for (var i = 0; i < ui.discardPile.childNodes.length; i++) { - var card = ui.discardPile.childNodes[i], - type = get.type2(card, false); - if (map[type]) map[type].push(card); - } - for (var i in map) { - if (map[i].length) cards.push(map[i].randomGet()); - } - if (cards.length) { - player.$gain2(cards, false); - game.cardsGotoSpecial(cards, "toRenku"); - game.log(player, "将", cards, "置入了仁库"); - game.delayx(); - } - }, - init: function (player) { - player.storage.renku = true; - }, - }, - shuchen: { - audio: 2, - init: function (player) { - player.storage.renku = true; - }, - trigger: { global: "dying" }, - forced: true, - filter: function (event, player) { - return _status.renku.length > 3; - }, - logTarget: "player", - content: function () { - player.gain(_status.renku, "gain2", "fromRenku"); - _status.renku.length = 0; - game.updateRenku(); - trigger.player.recover(); - }, - }, //谯周 zhiming: { audio: 2, diff --git a/character/sb/skill.js b/character/sb/skill.js index 646e29a89..695480e09 100644 --- a/character/sb/skill.js +++ b/character/sb/skill.js @@ -6279,6 +6279,7 @@ const skills = { }); }, ai: { + combo: "sbjushou", order: 8, result: { target: -1, @@ -7178,6 +7179,9 @@ const skills = { player.addSkills("sbduojing"); player.storage.sbkeji = true; }, + ai: { + combo: "sbkeji" + }, }, sbduojing: { audio: 2, @@ -7252,7 +7256,10 @@ const skills = { } else player.removeSkill("sbxiayuan_round"); }, subSkill: { round: { charlotte: true } }, - ai: { expose: 0.2 }, + ai: { + combo: "sbjieyue", + expose: 0.2 + }, }, sbjieyue: { audio: 4, diff --git a/character/shiji/skill.js b/character/shiji/skill.js index dfe94fe68..9fcf161dc 100644 --- a/character/shiji/skill.js +++ b/character/shiji/skill.js @@ -4001,6 +4001,9 @@ const skills = { content: function () { game.cardsGotoSpecial(get.cards(), "toRenku"); }, + ai: { + combo: "spsongshu" + }, }, spsongshu: { audio: 2, @@ -4042,6 +4045,9 @@ const skills = { intro: { content: "不能对其他角色使用牌" }, }, }, + ai: { + combo: "gebo" + }, }, //张机 jishi: { @@ -4079,6 +4085,9 @@ const skills = { }, }, }, + ai: { + combo: "binglun" + }, }, xinliaoyi: { audio: "liaoyi", @@ -4294,6 +4303,7 @@ const skills = { }, }, ai: { + combo: "jishi", order: 2, result: { player: 1, @@ -5059,6 +5069,67 @@ const skills = { onremove: true, intro: { content: "已对$发动过此技能" }, }, + yuanqing: { + audio: 2, + trigger: { player: "phaseUseEnd" }, + forced: true, + filter: function (event, player) { + return player.hasHistory("useCard", function (evt) { + return evt.getParent("phaseUse") == event; + }); + }, + content: function () { + var map = {}, + cards = []; + player.getHistory("useCard", function (evt) { + if (evt.getParent("phaseUse") == trigger) { + var type = get.type2(evt.card, false); + if (!map[type]) map[type] = []; + } + }); + for (var i = 0; i < ui.discardPile.childNodes.length; i++) { + var card = ui.discardPile.childNodes[i], + type = get.type2(card, false); + if (map[type]) map[type].push(card); + } + for (var i in map) { + if (map[i].length) cards.push(map[i].randomGet()); + } + if (cards.length) { + player.$gain2(cards, false); + game.cardsGotoSpecial(cards, "toRenku"); + game.log(player, "将", cards, "置入了仁库"); + game.delayx(); + } + }, + init: function (player) { + player.storage.renku = true; + }, + ai: { + combo: "shuchen" + }, + }, + shuchen: { + audio: 2, + init: function (player) { + player.storage.renku = true; + }, + trigger: { global: "dying" }, + forced: true, + filter: function (event, player) { + return _status.renku.length > 3; + }, + logTarget: "player", + content: function () { + player.gain(_status.renku, "gain2", "fromRenku"); + _status.renku.length = 0; + game.updateRenku(); + trigger.player.recover(); + }, + ai: { + combo: "yuanqing" + }, + }, hxrenshi: { audio: 2, enable: "phaseUse", diff --git a/character/tw/skill.js b/character/tw/skill.js index ab3706dc3..03286f0ce 100644 --- a/character/tw/skill.js +++ b/character/tw/skill.js @@ -4355,6 +4355,7 @@ const skills = { target.damage(); }, ai: { + combo: "twjuntun", expose: 0.25, order: 8, result: { @@ -4439,6 +4440,9 @@ const skills = { }, }, }, + ai: { + combo: "twjuntun" + }, }, //蒋济 twjichou: { From c1d2a499609d1d55416814edc09e540a479789b5 Mon Sep 17 00:00:00 2001 From: 157 <3619242020@qq.com> Date: Sat, 1 Jun 2024 13:29:32 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=88=9A=E7=9B=B4?= =?UTF-8?q?=E5=92=8C=E7=BB=9D=E6=83=85tag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/extra/skill.js | 4 ++-- character/offline/skill.js | 16 ++++++++-------- character/onlyOL/skill.js | 2 +- character/refresh/skill.js | 6 +++--- character/sp2/skill.js | 25 +++++++++++++++++++++++++ character/standard/skill.js | 2 +- character/tw/skill.js | 30 ++++++++++-------------------- character/xianding/skill.js | 4 ++-- character/yijiang/skill.js | 2 +- noname/library/element/player.js | 4 +--- 10 files changed, 54 insertions(+), 41 deletions(-) diff --git a/character/extra/skill.js b/character/extra/skill.js index aad130050..8d2cf937e 100644 --- a/character/extra/skill.js +++ b/character/extra/skill.js @@ -1997,7 +1997,7 @@ const skills = { if ( !get.tag(card, "damage") || player.countMark("dcxianjin") % 2 || - !player.hasSkillTag("jueqing", null, target) + !player.hasSkillTag("jueqing", false, target) ) return; if (player.isMaxHandcard()) return [1, 1]; return [1, Math.min(3, 1 + player.getStorage("dctuoyu").length)]; @@ -5782,7 +5782,7 @@ const skills = { if (!target.hasFriend()) return; let rec = get.tag(card, "recover"), damage = get.tag(card, "damage"); if (!rec && !damage) return; - if (damage && player.hasSkillTag("jueqing", null, target)) return 1.7; + if (damage && player.hasSkillTag("jueqing", false, target)) return 1.7; let die = [null, 1], temp; game.filterPlayer(i => { diff --git a/character/offline/skill.js b/character/offline/skill.js index cf45fe7d5..2690b2fe7 100644 --- a/character/offline/skill.js +++ b/character/offline/skill.js @@ -845,8 +845,6 @@ const skills = { var go = false, d1 = false; if (get.attitude(player, trigger.player) > 0) { - d1 = true; - if (trigger.player.hasSkill("jueqing") || trigger.player.hasSkill("gangzhi")) d1 = false; for (var target of trigger.targets) { if ( !target.mayHaveShan( @@ -866,15 +864,17 @@ const skills = { true ) ) { - if (!target.hasSkill("gangzhi")) d1 = false; if ( - target.hasSkillTag("filterDamage", null, { + get.attitude(player, target) < 0 && + !trigger.player.hasSkillTag("jueqing", false, target) && + !target.hasSkillTag("filterDamage", null, { player: trigger.player, card: trigger.card, - }) || - get.attitude(player, target) >= 0 - ) - d1 = false; + }) + ) { + d1 = true; + break; + } } } if (trigger.addCount === false || !trigger.player.isPhaseUsing()) go = false; diff --git a/character/onlyOL/skill.js b/character/onlyOL/skill.js index f636485fa..4211a4e93 100644 --- a/character/onlyOL/skill.js +++ b/character/onlyOL/skill.js @@ -869,7 +869,7 @@ const skills = { true ) ) { - if (player.hasSkill("jueqing") || target.hasSkill("gangzhi")) extra_num--; + if (player.hasSkillTag("jueqing", false, target)) extra_num--; else if ( target.hasSkillTag("filterDamage", null, { player: event.player, diff --git a/character/refresh/skill.js b/character/refresh/skill.js index 6e9dbbf1c..13a6fb7b5 100644 --- a/character/refresh/skill.js +++ b/character/refresh/skill.js @@ -3199,7 +3199,7 @@ const skills = { threaten: 0.9, effect: { target: function (card, player, target) { - if (player.hasSkillTag("jueqing")) return; + if (player.hasSkillTag("jueqing", false, target)) return; if (target.hujia) return; if (player._shibei_tmp) return; if (target.hasSkill("shibei_ai")) return; @@ -12842,8 +12842,8 @@ const skills = { ai: { effect: { target: (card, player, target) => { - if (typeof card !== "object" || !get.tag(card, "damage") || target.hasSkill("gangzhi")) return; - if (player.hasSkillTag("jueqing", null, true)) return; + if (typeof card !== "object" || !get.tag(card, "damage")) return; + if (player.hasSkillTag("jueqing", false, target)) return; if (get.color(card) === "red") return [1, 0, 1, 0.6]; return [1, 0.6]; }, diff --git a/character/sp2/skill.js b/character/sp2/skill.js index 98b94fcbd..3538b4b3a 100644 --- a/character/sp2/skill.js +++ b/character/sp2/skill.js @@ -8687,6 +8687,31 @@ const skills = { ai: { jueqing: true, }, + init(player) { + game.addGlobalSkill("gangzhi_jueqing"); + }, + onremove(player) { + game.removeGlobalSkill("gangzhi_jueqing"); + }, + subSkill: { + jueqing: { + trigger: {player: "dieAfter"}, + filter(event, player) { + return !game.hasPlayer(cur => cur.hasSkill("gangzhi")); + }, + silent: true, + forceDie: true, + content() { + game.removeGlobalSkill("gangzhi_jueqing"); + }, + ai: { + jueqing: true, + skillTagFilter(player, tag, arg) { + if (tag === "jueqing") return arg && arg.hasSkill("gangzhi"); + } + } + } + }, }, beizhan: { trigger: { player: "phaseJieshuBegin" }, diff --git a/character/standard/skill.js b/character/standard/skill.js index 9e2b5f692..50d13ce5b 100644 --- a/character/standard/skill.js +++ b/character/standard/skill.js @@ -496,7 +496,7 @@ const skills = { threaten: 0.9, effect: { target: function (card, player, target) { - if (player.hasSkillTag("jueqing")) return; + if (player.hasSkillTag("jueqing", false, target)) return; if (player._stdjinjian_tmp) return; const count = player.storage.counttrigger; if (count && count.stdjinjian_player && count.stdjinjian_player > 0) return; diff --git a/character/tw/skill.js b/character/tw/skill.js index 03286f0ce..387b11384 100644 --- a/character/tw/skill.js +++ b/character/tw/skill.js @@ -1942,8 +1942,7 @@ const skills = { .set( "goon", (function () { - var d1 = true; - if (player.hasSkill("jueqing") || player.hasSkill("gangzhi")) d1 = false; + var d1 = false; if ( !target.mayHaveShan( player, @@ -1962,15 +1961,7 @@ const skills = { true ) ) { - if (!target.hasSkill("gangzhi")) d1 = false; - if ( - !target.hasSkillTag("filterDamage", null, { - player: player, - card: trigger.card, - }) && - get.attitude(player, target) < 0 - ) - return true; + if (get.attitude(player, target) < 0 && !player.hasSkillTag("jueqing", false, target)) return true; } if (d1) return get.damageEffect(player, player, player) > 0; return false; @@ -13720,8 +13711,6 @@ const skills = { "goon", (function () { if (get.attitude(target, player) < 0) return false; - var d1 = true; - if (trigger.player.hasSkill("jueqing") || trigger.player.hasSkill("gangzhi")) d1 = false; for (var target of trigger.targets) { if ( !target.mayHaveShan( @@ -13741,18 +13730,19 @@ const skills = { true ) ) { - if (!target.hasSkill("gangzhi")) d1 = false; if ( + + get.attitude(player, target) < 0 && + !trigger.player.hasSkillTag("jueqing", false, target) && !target.hasSkillTag("filterDamage", null, { player: trigger.player, card: trigger.card, - }) && - get.attitude(player, target) < 0 + }) ) return true; } } - return d1; + return false; })() ); if (!event.target.isUnderControl(true) && !event.target.isOnline()) game.delayx(); @@ -16112,9 +16102,8 @@ const skills = { return event.card.name == "sha" && (event.player == player || player.inRange(event.player)) && player.countCards("he") > 0; }, checkx(event, player) { - let d1 = true, + let d1 = false, e = false; - if (event.player.hasSkill("jueqing") || event.player.hasSkill("gangzhi")) d1 = false; for (let tar of event.targets) { if (event.card.name == "sha") { if ( @@ -16135,13 +16124,14 @@ const skills = { true ) ) { - if (!tar.hasSkill("gangzhi")) d1 = false; if ( + !event.player.hasSkillTag("jueqing", false, tar) && !tar.hasSkillTag("filterDamage", null, { player: event.player, card: event.card, }) ) { + d1 = true; let att = get.attitude(_status.event.player, tar); if (att > 0) return false; if (att < 0) e = true; diff --git a/character/xianding/skill.js b/character/xianding/skill.js index 9cc0fd2a8..8e1a68a26 100644 --- a/character/xianding/skill.js +++ b/character/xianding/skill.js @@ -3705,7 +3705,7 @@ const skills = { ai: { effect: { target: function (card, player, target) { - if (target.countCards("h") > target.getHp() || player.hasSkillTag("jueqing")) return; + if (target.countCards("h") > target.getHp() || player.hasSkillTag("jueqing", false, target)) return; if (player._dcxiongmu_temp) return; if (_status.event.getParent("useCard", true) || _status.event.getParent("_wuxie", true)) return; if (get.tag(card, "damage")) { @@ -12999,7 +12999,7 @@ const skills = { threaten: 0.9, effect: { target: function (card, player, target) { - if (player.hasSkillTag("jueqing")) return; + if (player.hasSkillTag("jueqing", false, target)) return; //if(target.hujia) return; if (player._jinjian_tmp) return; if (_status.event.getParent("useCard", true) || _status.event.getParent("_wuxie", true)) return; diff --git a/character/yijiang/skill.js b/character/yijiang/skill.js index 716a85585..7d6da59da 100644 --- a/character/yijiang/skill.js +++ b/character/yijiang/skill.js @@ -14383,7 +14383,7 @@ const skills = { threaten: 0.9, effect: { target: function (card, player, target) { - if (player.hasSkillTag("jueqing")) return; + if (player.hasSkillTag("jueqing", false, target)) return; if (target.hujia) return; if (player._shibei_tmp) return; if (target.hasSkill("shibei_ai")) return; diff --git a/noname/library/element/player.js b/noname/library/element/player.js index d242c67f6..5e57b93cc 100644 --- a/noname/library/element/player.js +++ b/noname/library/element/player.js @@ -9028,9 +9028,7 @@ export class Player extends HTMLDivElement { */ hasSkillTag(tag, hidden, arg, globalskill) { var skills = this.getSkills(hidden); - if (globalskill) { - skills.addArray(lib.skill.global); - } + if (globalskill !== false) skills.addArray(lib.skill.global); game.expandSkills(skills); for (var i = 0; i < skills.length; i++) { var info = lib.skill[skills[i]]; From af78a574b7b1518fd315979aec220cb6eaf27db9 Mon Sep 17 00:00:00 2001 From: 157 <3619242020@qq.com> Date: Sat, 1 Jun 2024 13:53:01 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E6=A0=87=E7=AD=BE=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=92=8C=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/clan/skill.js | 1 + character/key/skill.js | 10 ++++++++++ character/mobile/translate.js | 2 +- character/offline/skill.js | 3 +++ character/refresh/skill.js | 3 +++ character/sb/skill.js | 9 +++++++++ character/sp/skill.js | 3 +++ character/tw/skill.js | 2 +- character/yingbian/skill.js | 3 +++ 9 files changed, 34 insertions(+), 2 deletions(-) diff --git a/character/clan/skill.js b/character/clan/skill.js index 227297489..84e7cd145 100644 --- a/character/clan/skill.js +++ b/character/clan/skill.js @@ -1420,6 +1420,7 @@ const skills = { delete event.result.skill; }, ai: { + combo: "clanzhongliu", order(item, player) { player = player || _status.event.player; var storage = _status.event.player.storage.clanjiexuan; diff --git a/character/key/skill.js b/character/key/skill.js index aec651483..6d4e19198 100644 --- a/character/key/skill.js +++ b/character/key/skill.js @@ -8635,6 +8635,16 @@ const skills = { }, }, riki_nvzhuang: { + init(player) { + if (get.character(player.name1, 3).includes("riki_nvzhuang")) { + player.storage.riki_nvzhuang = player.sex; + if (player.sex === "male") player.sex = "double"; + else player.sex = "female"; + } + }, + onremove(player) { + if (player.storage.riki_nvzhuang) player.sex = player.storage.riki_nvzhuang; + }, trigger: { player: "phaseJieshuBegin" }, forced: true, content() { diff --git a/character/mobile/translate.js b/character/mobile/translate.js index 6c8d906aa..d988d0fc8 100644 --- a/character/mobile/translate.js +++ b/character/mobile/translate.js @@ -32,7 +32,7 @@ const translates = { kuangcai: "狂才", kuangcai_info: "出牌阶段开始时,你可以令你此阶段内的主动出牌时间变为5秒。若如此做,你于此阶段内使用牌没距离和次数限制,且每当你于此阶段内使用牌时,你摸一张牌且主动出牌时间-1秒。若主动出牌时间减至0,则你结束出牌阶段。", shejian: "舌剑", - shejian_info: "弃牌阶段结束时,若你于此阶段弃置的所有牌花色均不相同,则你可以弃置一名其他角色的一张牌。", + shejian_info: "弃牌阶段结束时,若你于此阶段弃置过至少两张牌且这些牌花色均不相同,则你可以弃置一名其他角色的一张牌。", xinfu_daigong: "怠攻", xinfu_daigong_info: "每回合限一次。当你受到伤害时,你可以展示所有手牌,然后令伤害来源选择一项:交给你一张与你所有手牌花色均不相同的一张牌,或防止此伤害。", xinfu_zhaoxin: "昭心", diff --git a/character/offline/skill.js b/character/offline/skill.js index 2690b2fe7..519dd8082 100644 --- a/character/offline/skill.js +++ b/character/offline/skill.js @@ -5037,6 +5037,9 @@ const skills = { player.gift(result.cards, target); } }, + ai: { + combo: "yixiandao" + }, }, yjyibing: { trigger: { diff --git a/character/refresh/skill.js b/character/refresh/skill.js index 13a6fb7b5..a00affbbb 100644 --- a/character/refresh/skill.js +++ b/character/refresh/skill.js @@ -9792,6 +9792,9 @@ const skills = { player.recover(); player.draw(); }, + ai: { + combo: "rejiushi" + }, }, rejiushi: { audio: 2, diff --git a/character/sb/skill.js b/character/sb/skill.js index 695480e09..efe5d5872 100644 --- a/character/sb/skill.js +++ b/character/sb/skill.js @@ -379,6 +379,9 @@ const skills = { }, }, }, + ai: { + combo: "sbqiaomeng" + }, }, sbqiaomeng: { audio: 2, @@ -434,6 +437,9 @@ const skills = { if (num > 0) player.addMark("charge", num); } }, + ai: { + combo: "sbyicong" + }, }, //高顺 sbxianzhen: { @@ -6976,6 +6982,9 @@ const skills = { }, }, }, + ai: { + combo: "sbliangzhu" + }, }, sbliangzhu: { audio: 2, diff --git a/character/sp/skill.js b/character/sp/skill.js index 39f28f02d..e7d423f0d 100644 --- a/character/sp/skill.js +++ b/character/sp/skill.js @@ -1873,6 +1873,9 @@ const skills = { ) await player.recover(cards.length); }, + ai: { + combo: "olgongjie" + }, }, //OL飞扬 olfeiyang: { diff --git a/character/tw/skill.js b/character/tw/skill.js index 387b11384..bf94d1736 100644 --- a/character/tw/skill.js +++ b/character/tw/skill.js @@ -3249,7 +3249,7 @@ const skills = { player.addMark("twshoushou_plus", 1, false); }, ai: { - halfneg: true, + neg: true, }, subSkill: { damage: { diff --git a/character/yingbian/skill.js b/character/yingbian/skill.js index 32dc72cb0..52e8458d4 100644 --- a/character/yingbian/skill.js +++ b/character/yingbian/skill.js @@ -2313,6 +2313,9 @@ const skills = { if (player.getEquips(5).length) return distance - 1; }, }, + ai: { + combo: "chexuan" + }, }, cheliji_sichengliangyu: { trigger: { global: "phaseJieshuBegin" }, From dc8abd7ecb9a0c38fa798860ecf8b7edfb906979 Mon Sep 17 00:00:00 2001 From: 157 <3619242020@qq.com> Date: Sat, 1 Jun 2024 15:17:59 +0800 Subject: [PATCH 5/7] xunli combo zhishi --- character/huicui/skill.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/character/huicui/skill.js b/character/huicui/skill.js index 02cfbc981..5f81ab3b3 100644 --- a/character/huicui/skill.js +++ b/character/huicui/skill.js @@ -9753,6 +9753,9 @@ const skills = { }, }, }, + ai: { + combo: "zhishi" + }, }, zhishi: { audio: 2, From 2344d6e863ecd5d1d93f1764d7fd8ef49e76e141 Mon Sep 17 00:00:00 2001 From: 157 <3619242020@qq.com> Date: Sat, 1 Jun 2024 15:41:28 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=A8=E9=97=B4?= =?UTF-8?q?=E8=B4=BE=E8=AF=A9=E3=80=90=E6=8B=A5=E5=AB=A1=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/offline/skill.js | 75 +++++++++++++++----------------------- 1 file changed, 30 insertions(+), 45 deletions(-) diff --git a/character/offline/skill.js b/character/offline/skill.js index 519dd8082..2b4b8d2be 100644 --- a/character/offline/skill.js +++ b/character/offline/skill.js @@ -4374,61 +4374,46 @@ const skills = { intro: { content: "limited", }, - direct: true, - content: function () { - "step 0"; - player - .chooseTarget(get.prompt2("yjyongdi"), function (card, player, target) { - return target.hasSex("male") || target.name == "key_yuri"; - }) - .set("ai", function (target) { + async cost(event, trigger, player) { + event.result = await player + .chooseTarget( + get.prompt2("yjyongdi"), + (card, player, target) => { + return target.hasSex("male") || target.name == "key_yuri"; + } + ) + .set("ai", target => { if (!_status.event.goon) return 0; var player = _status.event.player; var att = get.attitude(player, target); if (att <= 1) return 0; var mode = get.mode(); if (mode == "identity" || (mode == "versus" && _status.mode == "four")) { - if (target.name && lib.character[target.name]) { - for (var i = 0; i < lib.character[target.name][3].length; i++) { - if (lib.skill[lib.character[target.name][3][i]].zhuSkill) { - return att * 2; - } - } - } + if (target.getStockSkills(true, true).some(i => { + if (target.hasSkill(i)) return false; + let info = get.info(i); + return info && info.zhuSkill; + })) return att * 2; } return att; }) - .set("goon", !player.hasUnknown()); - "step 1"; - if (result.bool) { - player.awakenSkill("yjyongdi"); - player.logSkill("yjyongdi", result.targets); - var target = result.targets[0]; - target.gainMaxHp(true); - target.recover(); - var mode = get.mode(); - if (mode == "identity" || (mode == "versus" && _status.mode == "four") || mode == "doudizhu") { - if (target.name && lib.character[target.name]) { - var skills = lib.character[target.name][3]; - target.storage.zhuSkill_yjyongdi = []; - for (var i = 0; i < skills.length; i++) { - var info = lib.skill[skills[i]]; - if (info.zhuSkill) { - target.storage.zhuSkill_yjyongdi.push(skills[i]); - if (info.init) { - info.init(target); - } - if (info.init2) { - info.init2(target); - } - } - } - } - } - } + .set("goon", !player.hasUnknown()) + .forResult(); }, - ai: { - expose: 0.2, + async content(event, trigger, player) { + player.awakenSkill("yjyongdi"); + let target = event.targets[0], mode = get.mode(); + if (player !== target && (mode !== "identity" || player.identity !== "nei")) player.addExpose(0.3); + target.gainMaxHp(true); + target.recover(); + if (mode == "identity" || (mode == "versus" && _status.mode == "four") || mode == "doudizhu") { + let skills = target.getStockSkills(true, true).filter(i => { + if (target.hasSkill(i)) return false; + let info = get.info(i); + return info && info.zhuSkill; + }); + if (skills.length) target.addSkills(skills); + } }, }, //用间篇豪华版盒子许攸 From 83ad0fb58e64dea3577af72e33fd54fdd12e8691 Mon Sep 17 00:00:00 2001 From: 157 <3619242020@qq.com> Date: Sat, 1 Jun 2024 17:18:40 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E3=80=90=E6=8B=A5=E5=AB=A1=E3=80=91cost?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/sp/skill.js | 69 +++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 36 deletions(-) diff --git a/character/sp/skill.js b/character/sp/skill.js index e7d423f0d..7e3d3a131 100644 --- a/character/sp/skill.js +++ b/character/sp/skill.js @@ -21120,49 +21120,46 @@ const skills = { animationColor: "thunder", skillAnimation: "legend", mark: true, - direct: true, - content: function () { - "step 0"; - player - .chooseTarget(get.prompt2("yongdi"), function (card, player, target) { - return (target.hasSex("male") || target.name == "key_yuri") && target != player; - }) - .set("ai", function (target) { + async cost(event, trigger, player) { + event.result = await player + .chooseTarget( + get.prompt2("yongdi"), + (card, player, target) => { + if (player === target) return false; + return target.hasSex("male") || target.name == "key_yuri"; + } + ) + .set("ai", target => { if (!_status.event.goon) return 0; - var player = _status.event.player; - var att = get.attitude(player, target); + let player = _status.event.player; + let att = get.attitude(player, target); if (att <= 1) return 0; - var mode = get.mode(); + let mode = get.mode(); if (mode == "identity" || (mode == "versus" && (_status.mode == "four" || _status.mode == "guandu"))) { - if (target.name && lib.character[target.name]) { - for (var i = 0; i < lib.character[target.name][3].length; i++) { - if (lib.skill[lib.character[target.name][3][i]].zhuSkill) { - return att * 2; - } - } - } + if (target.getStockSkills(true, true).some(i => { + if (target.hasSkill(i)) return false; + let info = get.info(i); + return info && info.zhuSkill; + })) return att * 2; } return att; }) - .set("goon", !player.hasUnknown()); - "step 1"; - if (result.bool) { - var target = result.targets[0]; - player.logSkill("yongdi", target); - player.awakenSkill("yongdi"); - target.gainMaxHp(); - target.recover(); - var skills = target.getStockSkills(true, true).filter(skill => { - if (target.hasSkill(skill)) return false; - var info = get.info(skill); - return info && info.zhuSkill; - }); - if (skills.length) { - target.addSkills(skills); - } - } + .set("goon", !player.hasUnknown()) + .forResult(); + }, + async content(event, trigger, player) { + player.awakenSkill("yongdi"); + let target = event.targets[0], mode = get.mode(); + if (mode !== "identity" || player.identity !== "nei") player.addExpose(0.25); + target.gainMaxHp(); + target.recover(); + let skills = target.getStockSkills(true, true).filter(skill => { + if (target.hasSkill(skill)) return false; + let info = get.info(skill); + return info && info.zhuSkill; + }); + if (skills.length) target.addSkills(skills); }, - ai: { expose: 0.2 }, }, regushe: { audio: "gushe",