diff --git a/card/standard.js b/card/standard.js index 1f121d6a7..86f11562f 100644 --- a/card/standard.js +++ b/card/standard.js @@ -1407,7 +1407,7 @@ game.import("card", function () { return 1; }, basic: { - order: 9, + order: 7.2, useful: [5, 1], value: 5, }, @@ -1700,7 +1700,7 @@ game.import("card", function () { return 1; }, basic: { - order: 9, + order: 7.2, useful: 1, value: 5, }, @@ -1843,7 +1843,7 @@ game.import("card", function () { } }, basic: { - order: 7.2, + order: 7, useful: 4.5, value: 9.2, }, @@ -2111,12 +2111,13 @@ game.import("card", function () { pos = get.position(button.link), name = get.name(button.link); if (pos == "j") { - if (name == "lebu") { + let viewAs = button.link.viewAs; + if (viewAs == "lebu") { let needs = target.needsToDiscard(2); btv *= 1.08 + 0.2 * needs; - } else if (name == "shandian" || name == "fulei" || name == "plague") btv /= 2; + } else if (viewAs == "shandian" || viewAs == "fulei") btv /= 2; } - if (get.attitude(player, get.owner(button.link)) > 0) btv = -btv; + if (att > 0) btv = -btv; if (pos != "e") { if (pos == "h" && !player.hasSkillTag("viewHandcard", null, target, true)) return btv + 0.1; @@ -2156,6 +2157,7 @@ game.import("card", function () { return get.value(card, target) > 0 && card != target.getEquip('jinhe'); }) && !js.some(card => { var cardj = card.viewAs ? { name: card.viewAs } : card; + if (cardj.name == "xumou_jsrg") return true; return get.effect(target, cardj, target, player) < 0; })) return 0; } @@ -2164,6 +2166,7 @@ game.import("card", function () { return get.value(card, target) <= 0; }) || js.some(card => { var cardj = card.viewAs ? { name: card.viewAs } : card; + if (cardj.name == "xumou_jsrg") return false; return get.effect(target, cardj, target, player) < 0; })) ? 1.5 : 0; } @@ -2180,6 +2183,7 @@ game.import("card", function () { return get.value(card, target) > 0 && card != target.getEquip('jinhe'); }) || js.some(card => { var cardj = card.viewAs ? { name: card.viewAs } : card; + if (cardj.name == "xumou_jsrg") return true; return get.effect(target, cardj, target, player) < 0; })) ? -1.5 : 1.5; } @@ -2187,6 +2191,7 @@ game.import("card", function () { return get.value(card, target) <= 0; }) || js.some(card => { var cardj = card.viewAs ? { name: card.viewAs } : card; + if (cardj.name == "xumou_jsrg") return false; return get.effect(target, cardj, target, player) < 0; })) ? 1.5 : -1.5; }, @@ -2218,6 +2223,7 @@ game.import("card", function () { }) || js.some((card) => { var cardj = card.viewAs ? { name: card.viewAs } : card; + if (cardj.name == "xumou_jsrg") return true; return get.effect(target, cardj, target, player) < 0; }) ? -1.5 @@ -2228,6 +2234,7 @@ game.import("card", function () { }) || js.some((card) => { var cardj = card.viewAs ? { name: card.viewAs } : card; + if (cardj.name == "xumou_jsrg") return false; return get.effect(target, cardj, target, player) < 0; }) ? 1.5 @@ -2250,6 +2257,7 @@ game.import("card", function () { }) && !js.some((card) => { var cardj = card.viewAs ? { name: card.viewAs } : card; + if (cardj.name == "xumou_jsrg") return true; return get.effect(target, cardj, target, player) < 0; }) ) @@ -2260,6 +2268,7 @@ game.import("card", function () { }) || js.some((card) => { var cardj = card.viewAs ? { name: card.viewAs } : card; + if (cardj.name == "xumou_jsrg") return false; return get.effect(target, cardj, target, player) < 0; }) ? 1.5 @@ -2423,12 +2432,13 @@ game.import("card", function () { pos = get.position(button.link), name = get.name(button.link); if (pos === "j") { - if (name === "lebu") { + let viewAs = button.link.viewAs; + if (viewAs === "lebu") { let needs = target.needsToDiscard(2); val *= 1.08 + 0.2 * needs; - } else if (name == "shandian" || name == "fulei" || name == "plague") val /= 2; + } else if (viewAs == "shandian" || viewAs == "fulei") val /= 2; } - if (get.attitude(player, get.owner(button.link)) > 0) val = -val; + if (att > 0) val = -val; if (pos !== "e") return val; let sub = get.subtypes(button.link); if (sub.includes("equip1")) return (val * Math.min(3.6, target.hp)) / 3; @@ -2466,6 +2476,7 @@ game.import("card", function () { if (att > 0) { if (js.some(card => { const cardj = card.viewAs ? { name: card.viewAs } : card; + if (cardj.name == "xumou_jsrg") return false; return get.effect(target, cardj, target, player) < 0; })) return 3; if (target.isDamaged() && es.some(card => card.name == 'baiyin') && @@ -2485,6 +2496,7 @@ game.import("card", function () { })); const noj = (js.length == 0 || !js.some(card => { const cardj = card.viewAs ? { name: card.viewAs } : card; + if (cardj.name == "xumou_jsrg") return true; return get.effect(target, cardj, target, player) < 0; })) if (noh && noe2 && noj) return 1.5; @@ -2518,6 +2530,7 @@ game.import("card", function () { if ( js.some((card) => { const cardj = card.viewAs ? { name: card.viewAs } : card; + if (cardj.name == "xumou_jsrg") return false; return get.effect(target, cardj, target, player) < 0; }) ) @@ -2548,6 +2561,7 @@ game.import("card", function () { js.length == 0 || !js.some((card) => { const cardj = card.viewAs ? { name: card.viewAs } : card; + if (cardj.name == "xumou_jsrg") return true; return get.effect(target, cardj, target, player) < 0; }); if (noh && noe2 && noj) return 1.5; diff --git a/card/yingbian.js b/card/yingbian.js index d6b5e3bb5..52ea6f60f 100644 --- a/card/yingbian.js +++ b/card/yingbian.js @@ -61,7 +61,7 @@ game.import("card", function () { var base = 0; if (get.cardtag(card, "yingbian_all")) { if ( - targets.filter(function (current) { + targets.some(function (current) { var att = get.attitude(player, current); if (att <= 0) return ( @@ -74,7 +74,7 @@ game.import("card", function () { return get.position(card) == "j" || get.value(card, current) <= 0; }) > 1 ); - }).length + }) ) base += 6; } @@ -138,13 +138,11 @@ game.import("card", function () { ? -1.5 : 1.5; var js = target.getCards("j"); - if (js.length) { - var jj = js[0].viewAs ? { name: js[0].viewAs } : js[0]; - if (js.length == 1 && get.effect(target, jj, target, player) >= 0) { - return -1.5; - } - return 3; - } + if (js.length && js.some(i => { + let cardj = i.viewAs ? { name: i.viewAs } : i; + if (cardj.name == "xumou_jsrg") return false; + return get.effect(target, cardj, target, player) < 0; + })) return 3; return -1.5; }, player: function (player, target) { @@ -159,13 +157,11 @@ game.import("card", function () { } if (get.attitude(player, target) > 1) { var js = target.getCards("j"); - if (js.length) { - var jj = js[0].viewAs ? { name: js[0].viewAs } : js[0]; - if (js.length == 1 && get.effect(target, jj, target, player) >= 0) { - return 0; - } - return 1; - } + if (js.length && js.some(i => { + let cardj = i.viewAs ? { name: i.viewAs } : i; + if (cardj.name == "xumou_jsrg") return false; + return get.effect(target, cardj, target, player) < 0; + })) return 1; return 0; } return 1; diff --git a/character/huicui/skill.js b/character/huicui/skill.js index 8abd2113f..9decf2a3d 100644 --- a/character/huicui/skill.js +++ b/character/huicui/skill.js @@ -3947,12 +3947,6 @@ const skills = { //裴元绍 dcmoyu: { audio: 2, - init() { - game.addGlobalSkill("dcmoyu_ai"); - }, - onremove() { - if (!game.hasPlayer(i => i.hasSkill("dcmoyu"), true)) game.removeGlobalSkill("dcmoyu_ai"); - }, enable: "phaseUse", filter(event, player) { return game.hasPlayer(current => lib.skill.dcmoyu.filterTarget(null, player, current)); @@ -3962,7 +3956,7 @@ const skills = { }, async content(event, trigger, player) { const target = event.target; - player.addTempSkill("dcmoyu_clear"); + player.addTempSkill("dcmoyu_clear", "phaseUseAfter"); player.markAuto("dcmoyu_clear", [target]); await player.gainPlayerCard(target, "hej", true, 1 + player.hasSkill("dcmoyu_add")); player.removeSkill("dcmoyu_add"); @@ -3979,10 +3973,6 @@ const skills = { return lib.filter.targetEnabled.apply(this, arguments); }) .set("sourcex", player) - .set("num", num) - .set("oncard", card => { - _status.event.baseDamage = _status.event.getParent().num; - }) .forResult(); if (result.bool) { if ( @@ -3991,11 +3981,13 @@ const skills = { }) ) { player.tempBanSkill("dcmoyu"); + player.addTempSkill("dcmoyu_ban"); } else { player.addTempSkill("dcmoyu_add", "phaseChange"); } } }, + global: "dcmoyu_ai", subSkill: { clear: { charlotte: true, @@ -4004,7 +3996,7 @@ const skills = { ban: { charlotte: true, mark: true, - marktext: "欲", + marktext: '', intro: { content: "偷马贼被反打了!" }, }, add: { @@ -4014,15 +4006,6 @@ const skills = { intro: { content: "欲望加速,下次抢两张!" }, }, ai: { - trigger: { player: "dieAfter" }, - filter: () => { - return !game.hasPlayer(i => i.hasSkill("dcmoyu"), true); - }, - silent: true, - forceDie: true, - content: () => { - game.removeGlobalSkill("dcmoyu_ai"); - }, ai: { effect: { target: function (card, player, target, current) { diff --git a/character/jsrg/skill.js b/character/jsrg/skill.js index caf693050..9d0fb222a 100644 --- a/character/jsrg/skill.js +++ b/character/jsrg/skill.js @@ -688,6 +688,7 @@ const skills = { ); }, async content(event, trigger, player) { + player.awakenSkill("jsrgjiebing"); await player.gainMaxHp(2); await player.recover(2); await player.addSkills("jsrgbaowei"); @@ -9311,7 +9312,7 @@ const skills = { aiValue: (player, card, num) => { if (num > 0 && get.itemtype(card) === "card" && card.name !== "zhuge" && get.subtype(card) === "equip1" && !player.getEquip(1)) return 0.01 * num; }, - aiUseful: () => { + aiUseful: function () { return lib.skill.jsrgzhenqiao.mod.aiValue.apply(this, arguments); }, }, diff --git a/character/mobile/skill.js b/character/mobile/skill.js index 1489b3883..81e6ccc38 100644 --- a/character/mobile/skill.js +++ b/character/mobile/skill.js @@ -119,6 +119,9 @@ const skills = { if (cards.length) await player.discard(cards); await player.draw(4); }, + ai: { + combo: "mbpanxiang" + }, }, //李昭焦伯 mbzuoyou: { diff --git a/character/offline/skill.js b/character/offline/skill.js index 3a62a7cbf..194ff2e1e 100644 --- a/character/offline/skill.js +++ b/character/offline/skill.js @@ -115,7 +115,7 @@ const skills = { let cards = []; if (event.name == "cardsDiscard") { const evt = event.getParent().relatedEvent; - if (evt && evt.name == "judge" && evt.player == player) { + if (evt && evt.name == "judge" && evt.player != player) { cards.addArray(event.cards.filter(i => get.position(i, true) == "d")); } } else { diff --git a/character/refresh/skill.js b/character/refresh/skill.js index ffc15c369..d66bb70c4 100644 --- a/character/refresh/skill.js +++ b/character/refresh/skill.js @@ -1635,9 +1635,12 @@ const skills = { return target.countCards("he") > 0 && target != player; }) .set("ai", target => { - var player = _status.event.player; - if (_status.event.goon) return get.attitude(player, target) * Math.sqrt(target.countCards("he")); - return (-get.attitude(player, target) / (target.countCards("he") + 1)) * 10; + var player = _status.event.player, att = get.attitude(player, target); + if (_status.event.goon) { + if (att > 0) return att * Math.sqrt(target.countCards("he")); + return (1 - att) / (target.countCards("he") + 1); + } + return -10 * att / (target.countCards("he") + 1); }) .set("goon", player.countCards("hs", card => player.hasValueTarget(card)) >= 2); "step 1"; @@ -1661,6 +1664,14 @@ const skills = { }, subSkill: { effect: { + mod: { + aiOrder(player, card, num) { + if (num <= 0 || !player.getExpansions("rekuangbi_effect").length) return; + let suit = get.suit(card); + if (player.getExpansions("rekuangbi_effect").some(i => get.suit(i) == suit)) return num + 10; + return num / 4; + } + }, trigger: { player: "useCard" }, charlotte: true, forced: true, diff --git a/character/sb/skill.js b/character/sb/skill.js index a163c568f..b459c8763 100644 --- a/character/sb/skill.js +++ b/character/sb/skill.js @@ -1419,33 +1419,28 @@ const skills = { break; } case 4: { - let map = {}; - game.dead.forEach(target => (map[target.playerid] = get.translation(target))); - const { - result: { control }, - } = await player - .chooseControl(Object.values(map)) - .set("ai", () => { - const getNum = target => { - let num = 0; - if (target.name && lib.character[target.name]) num += get.rank(target.name, true); - if (target.name2 && lib.character[target.name2]) num += get.rank(target.name2, true); - return num; - }; - let controls = _status.event.controls.slice(); - controls = controls.map(name => [name, game.dead.find(target => _status.event.map[target.playerid] == name)]); - controls.sort((a, b) => getNum(b[1]) - getNum(a[1])); - return controls[0][0]; + const result = await player + .chooseTarget( + "行殇:请选择一名已阵亡角色", + (card, player, target) => { + return target.isDead(); + }, + true, + "获得一名已阵亡角色的所有技能,然后失去〖行殇〗〖放逐〗〖颂威〗" + ) + .set("ai", target => { + return ["name", "name1", "name2"].reduce((sum, name) => { + if (!target[name] || !lib.character[target[name]] || (name == "name1" && target.name1 == target.name)) return sum; + return sum + get.rank(target[name], true); + }, 0); }) - .set("prompt", "获得一名已阵亡角色的所有技能") - .set("map", map); - if (control) { - const target2 = game.dead.find(targetx => map[targetx.playerid] == control); + .set("deadTarget", true) + .forResult(); + if (result.bool) { + const target2 = result.targets[0]; player.line(target2); game.log(player, "选择了", target2); - const skills = target2.getStockSkills(true, true); - const skills2 = ["sbxingshang", "sbfangzhu", "sbsongwei"]; - player.changeSkills(skills, skills2); + await player.changeSkills(target2.getStockSkills(true, true), ["sbxingshang", "sbfangzhu", "sbsongwei"]); } } } @@ -1485,7 +1480,7 @@ const skills = { case 3: return str + "移去5个“颂”标记,令一名体力上限小于10的角色加1点体力上限并回复1点体力,然后随机恢复一个被废除的装备栏"; case 4: - return str + "移去5个“颂”标记,获得一名已阵亡角色的所有技能,然后失去武将牌上的所有技能"; + return str + "移去5个“颂”标记,获得一名已阵亡角色的所有技能,然后失去〖行殇〗〖放逐〗〖颂威〗"; } }, }, diff --git a/character/sp/character.js b/character/sp/character.js index 1ae7d0b15..1d24b8294 100644 --- a/character/sp/character.js +++ b/character/sp/character.js @@ -1,6 +1,6 @@ const characters = { caimao: ["male", "wei", 4, ["olzuolian", "oljingzhou"]], - ol_peixiu: ["male", "wei", 3, ["olmaozhu", "oljinlan"]], + ol_peixiu: ["male", "wei", 4, ["olmaozhu", "oljinlan"]], yadan: ["male", "qun", 4, ["olqingya", "oltielun"]], sp_sunce: ["male", "qun", 4, ["olliantao"]], ol_liupi: ["male", "qun", 4, ["olyicheng"]], diff --git a/character/sp/intro.js b/character/sp/intro.js index 8347f4eb3..c83a87dc1 100644 --- a/character/sp/intro.js +++ b/character/sp/intro.js @@ -84,7 +84,6 @@ const characterIntro = { bianfuren: "武宣皇后卞氏(159年12月30日-230年7月9日),琅邪开阳(今山东临沂)人,魏武帝曹操的正妻(继室),魏文帝曹丕、任城威王曹彰、陈思王曹植、萧怀王曹熊的母亲。原本是倡家,即汉代专门从事音乐歌舞的乐人家庭,后来与曹操成婚,建安初年,原配丁夫人被废,卞夫人成为曹操的正妻。曹丕继位后尊其为皇太后,曹叡继位后尊其为太皇太后。卞后在太和四年去世,与魏武帝曹操合葬高陵。", shamoke: "沙摩柯(?-222年),东汉末三国时期五溪蛮首领。汉章武元年(221年)初,为报关羽被东吴杀害之仇,刘备亲自领兵攻孙权,以金锦爵赏诱沙摩柯助战。章武二年(222年),吴大都督陆逊以火攻破刘备,率诸军齐击,汉军四十多个营寨被攻破,沙摩柯在大乱中匹马奔逃,被乱军杀死。", lvfan: "吕范(?-228年),字子衡。汝南郡细阳县(今安徽太和)人。汉末至三国时期吴国重臣。吕范年轻为汝南县吏,后避难寿春,结识孙策。此后随孙策、孙权征伐四方,对稳固孙氏在江东的统治做出了杰出的贡献,孙权将其比之于东汉开国元勋吴汉。吴国建立后,吕范累官至前将军、假节、扬州牧,封南昌侯。黄武七年(228年),吕范被拜为大司马,未得授官,便已病逝。孙权悲痛不已,遣使赠其大司马印绶。孙权还都建业后,以太牢礼祭祀吕范。", - liqueguosi: "请分别查看「李傕」和「郭汜」的武将介绍。", maojie: "毛玠(?—216年),字孝先,陈留平丘(今河南封丘)人。东汉末年大臣。年少时为县吏,以清廉公正著称。因战乱而打算到荆州避乱,但中途知道刘表政令不严明,因而改往鲁阳。后来投靠曹操,提出“奉天子以令不臣,脩耕植,畜军资”的战略规划,得到曹操的欣赏。
毛玠与崔琰主持选举,所举用的都是清廉正直之士。而毛玠为人廉洁,激起天下廉洁之风,一改朝中奢华风气。曹操大为赞赏,曹丕也亲自去拜访他。
曹操获封魏公后,毛玠改任尚书仆射,再典选举。又密谏曹操应该立嫡长子曹丕为魏国太子。崔琰被杀后,毛玠十分不快。后来有人诬告毛玠,曹操大怒,将毛玠收于狱中。及后在桓阶、和洽营救下,只被免职,不久逝世于家中。曹操在他死后赐他棺材和钱帛。", huangfusong: "字义真。安定郡朝那县(今宁夏彭阳)人。于黄巾起义时,以中郎将身份讨伐黄巾,用火攻大破张梁、张宝。后接替董卓进攻张梁,连胜七阵。掘张角墓,拜左车骑将军、冀州牧,因拒绝贿赂宦官而被免职。 董卓死,王允命其与吕布等共至郿坞抄籍董卓家产、人口,皇甫嵩将坞中所藏良家子女,尽行释放。", diff --git a/character/sp/skill.js b/character/sp/skill.js index dc881cf9f..1fab8a2ab 100644 --- a/character/sp/skill.js +++ b/character/sp/skill.js @@ -663,7 +663,7 @@ const skills = { cards = moved[0].slice(); if (cards.length) { await game.cardsGotoOrdering(cards); - for (let i = cards.length - 1; i--; i >= 0) { + for (let i = cards.length - 1; i >= 0; i--) { ui.cardPile.insertBefore(cards[i], ui.cardPile.firstChild); } game.log(cards, "被放回了牌堆顶"); @@ -687,7 +687,7 @@ const skills = { cards = hs.slice(); if (cards.length) { await game.cardsGotoOrdering(cards); - for (let i = cards.length - 1; i--; i >= 0) { + for (let i = cards.length - 1; i >= 0; i--) { ui.cardPile.insertBefore(cards[i], ui.cardPile.firstChild); } game.log(cards, "被放回了牌堆顶"); @@ -25173,7 +25173,12 @@ const skills = { usable: 1, content: function () { "step 0"; - player.judge(); + player.judge(card => { + if (game.hasPlayer(cur => { + return get.event("player").canUse("sha", cur); + })) return get.number(card); + return 1 / get.number(card); + }); "step 1"; player.storage.qiangwu = result.number; player.addTempSkill("qiangwu3", "phaseUseEnd"); diff --git a/character/sp/sort.js b/character/sp/sort.js index 0480445e1..d58505e7f 100644 --- a/character/sp/sort.js +++ b/character/sp/sort.js @@ -10,7 +10,7 @@ const characterSort = { sp_qifu: ["ol_feiyi", "caoying", "panshu", "caochun", "yuantanyuanshang", "caoshuang", "wolongfengchu", "guansuo", "baosanniang", "fengfangnv", "jin_zhouchu"], sp_wanglang: ["ol_wanglang", "ol_puyuan", "ol_zhouqun"], sp_zhongdan: ["cuiyan", "huangfusong"], - sp_guozhan2: ["sp_dongzhuo", "liqueguosi", "zhangren"], + sp_guozhan2: ["sp_dongzhuo", "zhangren"], sp_others: ["hanba", "caiyang"], sp_waitforsort: ["ol_luyusheng", "ol_tw_zhangji", "ol_liwan", "ol_liuyan", "ol_peixiu", "caimao"], }; diff --git a/character/sp2/intro.js b/character/sp2/intro.js index da1b541bd..dad15475a 100644 --- a/character/sp2/intro.js +++ b/character/sp2/intro.js @@ -1,4 +1,5 @@ const characterIntro = { + liqueguosi: "请分别查看「李傕」和「郭汜」的武将介绍。", tangji: "唐姬,会稽太守唐瑁女,弘农怀王刘辩的妃子。刘辩死后,唐姬回归故里,因节烈不愿改嫁他人,后被汉献帝下诏封为弘农王妃。", lijue: "李傕(一说“傕”读音“què”)(?—198年),字稚然。北地郡泥阳县(今陕西省耀县)人,汉末群雄之一。东汉末年汉献帝时的军阀、权臣,官至大司马、车骑将军、开府、领司隶校尉、假节。
李傕本为董卓部将,后被董卓的女婿牛辅派遣至中牟与朱儁交战,大破朱儁,进而至陈留、颍川等地劫掠。初平三年(192年)董卓和牛辅被杀后,李傕归无所依,于是采用贾诩之谋,伙同郭汜、张济、樊稠等原董卓部曲将攻向长安。击败吕布,杀死王允等人,占领长安,把持朝廷大权。后诸将不和,李傕在会议上杀死了樊稠,又与郭汜分别劫持了汉献帝和众臣,相互交战,张济率兵赶来和解,于是二人罢兵,李傕出屯池阳黄白城,郭汜、张济等人随汉献帝东归前往弘农。
后来,李傕、郭汜、张济反悔,联合起来追击汉献帝,与杨奉、董承等人几番交战。汉献帝一路逃亡,狼狈不堪,到达安邑,与李傕等人讲和。不久,汉献帝被曹操迎往许都。建安三年(198年),曹操派谒者仆射裴茂召集关西诸将段煨等人征讨李傕,灭其三族。", zhangji: "张济(?-196年),武威郡祖厉县(今甘肃靖远东南)人。东汉末年割据军阀之一。 张济原为董卓部将,董卓被诛杀后,张济与李傕一同率军攻破长安,任中郎将。不久,升任镇东将军,封平阳侯,出屯弘农。献帝东迁时,张济升任骠骑将军,率军护卫献帝,后来因与董承等人有矛盾,便与李傕、郭汜一同追赶献帝。 建安元年(196年),张济因军队缺粮而进攻穰城,中流矢而死。死后,部队由侄儿张绣接管。", diff --git a/character/standard/skill.js b/character/standard/skill.js index 60a4ca291..2d75e09f7 100644 --- a/character/standard/skill.js +++ b/character/standard/skill.js @@ -240,6 +240,7 @@ const skills = { selectCard: 2, position: "hes", viewAs: { name: "juedou" }, + selectTarget: 2, viewAsFilter(player) { if (player.countCards("hes") < 2) return false; }, diff --git a/character/standard/translate.js b/character/standard/translate.js index 0ca3e16df..2ffff3f57 100644 --- a/character/standard/translate.js +++ b/character/standard/translate.js @@ -208,8 +208,8 @@ const translates = { stddaizui: "戴罪", stddaizui_info: "锁定技,当你受到伤害后,你视为本轮未发动过〖盗书〗。", stdxiongxia: "凶侠", - stdxiongxia_info: "你可以将两张牌当作【决斗】使用。你以此法使用的【决斗】结算完毕后,若所有目标角色都受到了此牌造成的伤害,则〖凶侠〗于本回合失效。", - stdhuizhan: "挥战", + stdxiongxia_info: "你可以将两张牌当作【决斗】对两名其他角色使用。你以此法使用的【决斗】结算完毕后,若所有目标角色都受到了此牌造成的伤害,则〖凶侠〗于本回合失效。", + stdhuizhan: "挥戟", stdhuizhan_info: "你使用【杀】可以额外指定至多两个目标。若如此做,目标角色响应此【杀】时,其他目标角色可以代替其使用【闪】。", stdmingfa: "明伐", stdmingfa_info: "出牌阶段,你可以对一名体力值大于1的角色造成1点伤害,然后此技能失效直至其死亡或回复体力。", diff --git a/character/xianding/skill.js b/character/xianding/skill.js index 7f4038e37..9cc0fd2a8 100644 --- a/character/xianding/skill.js +++ b/character/xianding/skill.js @@ -798,6 +798,7 @@ const skills = { subSkill: { g: { audio: "dcwuyou", + forceaudio: true, enable: "phaseUse", usable: 1, filter(event, player) { @@ -934,6 +935,10 @@ const skills = { if (!card.cards) return; if (card.cards.some(card => card.hasGaintag("dcwuyou_transfer"))) return Infinity; }, + targetInRange(card, player) { + if (!card.cards) return; + if (card.cards.some(card => card.hasGaintag("dcwuyou_transfer"))) return true; + }, }, }, }, @@ -1049,11 +1054,11 @@ const skills = { result: { player(player) { const enemies = game.filterPlayer(current => { - return get.rawAttitude(player, current) < 0 && get.attitude(player, current) >= 0; - }), - knownEnemies = game.filterPlayer(current => { - return get.attitude(player, current) < 0; - }); + return (!get.rawAttitude || get.rawAttitude(player, current) < 0) && get.attitude(player, current) >= 0; + }), + knownEnemies = game.filterPlayer(current => { + return get.attitude(player, current) < 0; + }); if ((!knownEnemies.length && player.countCards("e") > 1) || (player.getHp() > 3 && enemies.length > 0 && knownEnemies.length < 2 && knownEnemies.length < enemies.length && !knownEnemies.some(enemy => get.attitude(player, enemy) <= -9))) return 0; const val1 = game .filterPlayer()