Merge pull request #1405 from mengxinzxz/PR-Branch

OL李婉技能更新,语音&台词の甄误&补充,minor fix
This commit is contained in:
Spmario233 2024-05-31 10:19:30 +08:00 committed by GitHub
commit 96e9299a2d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
33 changed files with 227 additions and 53 deletions

Binary file not shown.

BIN
audio/die/old_huaxiong.mp3 Normal file

Binary file not shown.

BIN
audio/die/old_zhoutai.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -31,7 +31,7 @@ const skills = {
)
.set("ai", button => {
if (!get.cardPile2(button.link[2])) return 0;
return get.value({ name: button.link }, get.event("player"));
return get.value({ name: button.link[2] }, get.event("player"));
})
.forResult();
if (result.bool) {
@ -86,8 +86,7 @@ const skills = {
) {
const result = await player
.chooseTarget(get.prompt("dchuanli"), "令一名其他角色的所有技能失效,然后令其获得〖直谏〗和〖固政〗直到其回合结束", (card, player, target) => {
if (player == target) return false;
return !target.hasSkill("dchuanli_zhangzhang") && !target.hasSkill("dchuanli_zhouyu");
return target != player && !target.hasSkill("dchuanli_zhangzhang");
})
.set("ai", target => {
const player = get.event("player");
@ -105,13 +104,12 @@ const skills = {
const target = result.targets[0];
await player.logSkill("dchuanli", target);
target.addTempSkill("dchuanli_zhangzhang", { player: "phaseAfter" });
target.markSkillCharacter("dchuanli_zhangzhang", "re_zhouyu", "唤理-内事", "内事不决问张昭");
target.markSkillCharacter("dchuanli_zhangzhang", "zhangzhang", "唤理-内事", "内事不决问张昭");
await target.addAdditionalSkills("dchuanli_zhangzhang", ["zhijian", "guzheng"]);
}
}
const targets = game.filterPlayer(target => {
if (target == player) return false;
if (target.hasSkill("dchuanli_zhangzhang") || target.hasSkill("dchuanli_zhouyu")) return false;
if (target == player || target.hasSkill("dchuanli_zhouyu")) return false;
return (
player.getHistory("useCard", evt => {
return (evt.targets || []).includes(target);
@ -121,7 +119,6 @@ const skills = {
if (targets.length) {
const result = await player
.chooseTarget(get.prompt("dchuanli"), "令一名其他角色的所有技能失效,然后令其获得〖直谏〗和〖固政〗直到其回合结束", (card, player, target) => {
if (player == target) return false;
return get.event("targets").includes(target);
})
.set("ai", target => {
@ -141,7 +138,7 @@ const skills = {
const target = result.targets[0];
await player.logSkill("dchuanli", target);
target.addTempSkill("dchuanli_zhouyu", { player: "phaseAfter" });
target.markSkillCharacter("dchuanli_zhouyu", "zhangzhang", "唤理-外事", "外事不决问周瑜");
target.markSkillCharacter("dchuanli_zhouyu", "re_zhouyu", "唤理-外事", "外事不决问周瑜");
await target.addAdditionalSkills("dchuanli_zhouyu", ["reyingzi", "refanjian"]);
}
}

View File

@ -2493,7 +2493,7 @@ const skills = {
return get.type(event.card) == "basic" && _status.currentPhase;
},
prompt2: function (event, player) {
const num = Math.pow(2, player.countMark("dccaisi_more") - 1);
const num = Math.pow(2, player.countMark("dccaisi_more"));
return `${player == _status.currentPhase ? "牌堆" : "弃牌"}堆中随机获得${get.cnNumber(num)}张非基本牌`;
},
content: function* (event, map) {
@ -2501,7 +2501,7 @@ const skills = {
trigger = map.trigger;
const position = player == _status.currentPhase ? "cardPile" : "discardPile";
let cards = [],
num = Math.pow(2, player.countMark("dccaisi_more") - 1);
num = Math.pow(2, player.countMark("dccaisi_more"));
while (num > 0) {
num--;
let card = get[position](card => get.type(card) != "basic" && !cards.includes(card));
@ -7079,8 +7079,17 @@ const skills = {
mark: true,
marktext: "仇",
intro: { content: "使用牌不可被响应" },
inherit: "twsaotao",
audio: "dcsuchou",
trigger: { player: "useCard" },
filter(event, player) {
return event.card.name == "sha" || get.type(event.card) == "trick";
},
forced: true,
content() {
trigger.directHit.addArray(game.players);
game.log(trigger.card, "不可被响应");
},
ai: { directHit_ai: true },
},
},
},

View File

@ -1,6 +1,6 @@
export default {
"#jsrg_zoushi:die": "年老色衰了吗?",
"#jsrg_zhangren:die": "老臣,绝不事二主",
"#jsrg_zhangren:die": "本将军败于诸葛,无憾",
"#jsrg_huangzhong:die": "不得不服老啦~",
"#jsrg_liuhong:die": "权利的滋味,让人沉沦……",
};

View File

@ -4,6 +4,7 @@ export default {
"#re_huangzhong:die": "真哉,老将无用矣……",
"#gzbuqu1": "还不够!",
"#gzbuqu2": "我绝不会倒下!",
"#old_zhoutai:die": "已经,尽力了……",
"#jushou1": "我先休息一会!",
"#jushou2": "尽管来吧!",
"#duanliang1_re_xuhuang1": "粮不三载,敌军已犯行军大忌。",
@ -35,7 +36,7 @@ export default {
"#sp_zhangjiao:die": "黄天既覆……苍生何存?",
"#guhuo_guess1": "道法玄机,变幻莫测。",
"#guhuo_guess2": "如真似幻,扑朔迷离。",
"#re_yuji:die": "幻化之物,终是算不得真呐……",
"#re_yuji:die": "道法玄机,竟被参破……",
"#bazhen1": "你可识得此阵?",
"#bazhen2": "太极生两仪,两仪生四象,四象生八卦。",
"#huoji1": "此火可助我军大获全胜。",
@ -86,19 +87,19 @@ export default {
"#haoshi2": "拿去拿去,莫跟哥哥客气!",
"#dimeng1": "合纵连横,方能以弱胜强。",
"#dimeng2": "以和为贵,以和为贵。",
"#re_lusu:die": "一生为国,纵死无憾……",
"#re_lusu:die": "此联盟已破,吴蜀休矣……",
"#yinghun1": "不诛此贼三族,则吾死不瞑目!",
"#yinghun2": "以吾魂魄,保佑吾儿之基业。",
"#sunjian:die": "有埋伏!呃……啊!!",
"#jiuchi1": "呃……再来……一壶……",
"#jiuchi2": "好酒!好酒!",
"#roulin1": "美人儿,来,香一个~~",
"#roulin2": "食色,性也~~",
"#benghuai1": "呃……",
"#benghuai2": "我是不是该减肥了?",
"#baonue21": "杀得好,大大有赏",
"#baonue22": "哈哈哈哈哈哈~不愧是我的好部下",
"#dongzhuo:die": "为何人人……皆与我为敌?",
"#jiuchi1": "呃呵呵呵呵,好酒好酒!",
"#jiuchi2": "呃……再来……一壶……",
"#roulin1": "食色,性也~~",
"#roulin2": "美人儿,来,香一个~~",
"#benghuai1": "嗯呃~",
"#benghuai2": "哎,我是不是该减肥了?",
"#baonue21": "呵哈哈哈哈哈哈哈哈",
"#baonue22": "顺我者昌,逆我者亡",
"#dongzhuo:die": "汉室衰落,非我一人之错……",
"#luanwu1": "哭喊吧,哀求吧,挣扎吧,然后,死吧!",
"#luanwu2": "哼哼哼……坐山观虎斗!",
"#wansha1": "神仙难救,神仙难救啊。",

View File

@ -11,7 +11,7 @@ const characters = {
tianchou: ["male", "qun", 4, ["olshandao"]],
liyi: ["male", "wu", 4, ["olchanshuang", "olzhanjin"]],
caoyu: ["male", "wei", 3, ["olgongjie", "olxiangxv", "olxiangzuo"]],
ol_liwan: ["female", "wei", 3, ["ollianju", "olsilv"]],
ol_liwan: ["female", "wei", 3, ["relianju", "resilv"]],
ol_dingshangwan: ["female", "wei", 3, ["olfudao", "olfengyan"]],
zhangyan: ["male", "qun", 4, ["olsuji", "ollangdao"]],
ol_tw_zhangji: ["male", "wei", 3, ["skill_zhangji_A", "skill_zhangji_B"], ["unseen"]],

View File

@ -2050,6 +2050,162 @@ const skills = {
lose: { charlotte: true },
},
},
relianju: {
audio: "ollianju",
trigger: { player: "phaseJieshuBegin" },
filter(event, player) {
return player.hasHistory("useCard", evt => {
return (evt.cards || []).some(card => get.position(card, true) == "d");
});
},
async cost(event, trigger, player) {
event.result = await player
.chooseTarget(get.prompt("relianju"), "令一名其他角色获得你本回合使用的且进入弃牌堆的至多两张颜色相同的牌", lib.filter.notMe)
.set("ai", target => {
const player = get.event("player");
let att = get.attitude(_status.event.player, target);
if (target.hasJudge("lebu")) att /= 2;
if (target.hasSkillTag("nogain")) att /= 10;
return att / (1 + get.distance(player, target, "absolute"));
})
.forResult();
},
async content(event, trigger, player) {
const cards = player
.getHistory("useCard", evt => {
return (evt.cards || []).some(card => get.position(card, true) == "d");
})
.reduce((sum, evt) => {
return sum.addArray(evt.cards.filter(card => get.position(card, true) == "d"));
}, []),
target = event.targets[0];
const result = await player
.chooseButton(["联句:选择令" + get.translation(target) + "获得的牌", cards], [1, 2], true)
.set("filterButton", button => {
return !ui.selected.buttons.some(but => get.color(but.link) != get.color(button.link));
})
.set("ai", button => {
return get.value(button.link, get.event("target"));
})
.set("target", target)
.forResult();
if (result.bool) {
const color = get.color(result.links[0], false);
await target.gain(result.links, "gain2").set('gaintag', ["resilv"]);
player.when({ global: "phaseJieshuBegin" })
.filter(
evt =>
evt.player == target &&
target.hasHistory("useCard", evt => {
return (evt.cards || []).some(card => get.position(card, true) == "d" && get.color(card) != color);
})
)
.then(() => {
const cards = trigger.player
.getHistory("useCard", evt => {
return (evt.cards || []).some(card => get.position(card, true) == "d" && get.color(card) != color);
})
.reduce((sum, evt) => {
return sum.addArray(evt.cards.filter(card => get.position(card, true) == "d" && get.color(card) != color));
}, []);
player
.chooseButton(["联句:请选择获得的牌", cards], [1, 2], true)
.set("filterButton", button => {
return !ui.selected.buttons.some(but => get.color(but.link) != get.color(button.link));
})
.set("ai", button => {
return get.value(button.link, get.event("target"));
});
})
.then(() => {
if (result.bool) {
player.gain(result.links, "gain2").gaintag.add("resilv");
}
})
.vars({ color: color });
}
},
},
resilv: {
audio: "olsilv",
trigger: { player: "damageEnd" },
forced: true,
content() {
player.draw().gaintag = ["resilv"];
},
group: "resilv_restore",
subSkill: {
restore: {
audio: "olsilv",
trigger: { global: ["loseAfter", "loseAsyncAfter"] },
filter(event, player) {
if (event.type != "discard" || event.getlx === false) return false;
if (event.name == "lose") {
if (!event.player.isIn()) return false;
return event.cards2.some(card => {
return (event.gaintag_map[card.cardid] || []).includes("resilv") && get.position(card, true) == "d";
});
}
return game.hasPlayer(target => {
return target.hasHistory("lose", evt => {
if (evt.getParent() != event || evt.position != ui.discardPile) return false;
return evt.cards2.some(card => {
if (get.position(card, true) != "d") return false;
return (evt.gaintag_map[card.cardid] || []).includes("resilv");
});
});
});
},
forced: true,
logTarget(event, player) {
if (event.name == "lose") return event.player;
return game
.filterPlayer(target => {
return target.hasHistory("lose", evt => {
if (evt.getParent() != event || evt.position != ui.discardPile) return false;
return evt.cards2.some(card => {
if (get.position(card, true) != "d") return false;
return evt.gaintag_map[card.cardid] && evt.gaintag_map[card.cardid].includes("resilv");
});
});
})
.sortBySeat();
},
async content(event, trigger, player) {
if (trigger.name == "lose") {
await trigger.player.gain(
trigger.cards2.filter(card => {
return (trigger.gaintag_map[card.cardid] || []).includes("resilv") && get.position(card, true) == "d";
}),
"gain2"
);
} else {
for (const target of lib.skill.resilv_restore.logTarget(trigger, player)) {
await target.gain(
target
.getHistory("lose", evt => {
if (evt.getParent() != trigger || evt.position != ui.discardPile) return false;
return evt.cards2.some(card => {
if (get.position(card, true) != "d") return false;
return (evt.gaintag_map[card.cardid] || []).includes("resilv");
});
})
.reduce((sum, evt) => {
return sum.addArray(
evt.cards2.filter(card => {
if (get.position(card, true) != "d") return false;
return (evt.gaintag_map[card.cardid] || []).includes("resilv");
})
);
}, []),
"gain2"
);
}
}
},
},
},
},
//丁尚涴
olfudao: {
audio: 2,

View File

@ -1189,6 +1189,10 @@ const translates = {
ollianju_info: "结束阶段你可以令一名其他角色获得你本回合使用的最后一张牌A对应的所有位于弃牌堆的实体牌并记录A的牌名然后其下个结束阶段可以令你获得其本回合使用的最后一张牌B对应的所有位于弃牌堆的实体牌然后若A与B的牌名相同则你失去1点体力若A与B的牌名不同则你可以视为使用A。",
olsilv: "思闾",
olsilv_info: "锁定技,每回合每项限一次,当你获得或失去你发动〖联句〗记录的最后一次牌名的同名牌后,你展示这些牌,然后摸一张牌。",
relianju: "联句",
relianju_info: "结束阶段,你可以令一名其他角色获得你本回合使用的至多两张位于弃牌堆且颜色相同的牌,称为“思闾”,然后你于其下个结束阶段获得其本回合使用的至多两张不同于此颜色的位于弃牌堆且颜色相同且颜色的牌,称为“思闾”。",
resilv: "思闾",
resilv_info: "锁定技。①当你受到伤害后,你摸一张牌,称为“思闾”。②一名角色因弃置“思闾”牌使“思闾”牌进入弃牌堆后,其获得之。",
xueji_old: "血祭",
xueji_old_info: "出牌阶段限一次你可以弃置一张红色牌并对攻击范围内的至多X名角色各造成1点伤害X为你已损失的体力值然后这些角色各摸一张牌。",
oldhuxiao: "虎啸",

View File

@ -653,7 +653,7 @@ export default {
"#chuanxin2": "穿心之痛,细细品吧,哈哈哈哈!",
"#zfengshi1": "大军压境,还不卸甲受降!",
"#zfengshi2": "放下兵器,饶你不死!",
"#zhangren:die": "老臣,绝不事二主",
"#zhangren:die": "本将军败于诸葛,无憾",
"#wylianji1": "两计扣用,以催强势。",
"#wylianji2": "容老夫细细思量。",
"#moucheng1": "董贼伏诛,天下太平!",

View File

@ -11574,30 +11574,8 @@ const skills = {
},
},
xinfu_xingzhao: {
audio: true,
audio: 2,
group: ["xz_xunxun", "xinfu_xingzhao2", "xinfu_xingzhao3"],
mark: true,
intro: {
content: function (storage, player) {
var num = game.countPlayer(function (current) {
return current.isDamaged();
});
var str = "<li>造成的伤害+1";
if (num >= 1) {
str = "<li>视为拥有技能“恂恂”";
}
if (num >= 2) {
str += "<br><li>装备牌进入或离开你的装备区时摸一张牌";
}
if (num >= 3) {
str += "<br><li>始终跳过弃牌阶段";
}
if (num >= 4) {
str += "<br><li>造成的伤害+1";
}
return str;
},
},
trigger: {
player: "loseAfter",
global: ["equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"],
@ -11622,9 +11600,32 @@ const skills = {
content: function () {
player.draw();
},
derivation: "xz_xunxun",
mark: true,
intro: {
content: function (storage, player) {
var num = game.countPlayer(function (current) {
return current.isDamaged();
});
var str = "<li>造成的伤害+1";
if (num >= 1) {
str = "<li>视为拥有技能“恂恂”";
}
if (num >= 2) {
str += "<br><li>装备牌进入或离开你的装备区时摸一张牌";
}
if (num >= 3) {
str += "<br><li>始终跳过弃牌阶段";
}
if (num >= 4) {
str += "<br><li>造成的伤害+1";
}
return str;
},
},
},
xinfu_xingzhao2: {
audio: true,
audio: "xinfu_xingzhao",
trigger: {
player: ["phaseJudgeBefore", "phaseDiscardBefore"],
},

View File

@ -325,7 +325,10 @@ export default {
"#sptunjiang1": "江夏冲要之地,孩儿愿往守之。",
"#sptunjiang2": "皇叔勿惊,吾与关将军已到。",
"#sp_liuqi:die": "父亲,孩儿来,见你了……",
"#xinfu_xingzhao": "拿些上好的木料来。",
"#xinfu_xingzhao1": "拿些上好的木料来。",
"#xinfu_xingzhao2": "精挑细选,方能成百年之计。",
"xz_xunxun1": "让我先探他一探。",
"xz_xunxun2": "船,也不是一天就能造出来的。",
"#xf_tangzi:die": "偷工减料,要不得啊……",
"#xinfu_dianhu1": "就用你,给我军祭旗!",
"#xinfu_dianhu2": "预则立,不预则废!",

View File

@ -91,12 +91,13 @@ export default {
"#sanyao2": "散谣惑敌,不攻自破!",
"#zhiman1": "丞相多虑,且看我的!",
"#zhiman2": "兵法谙熟于心,取胜千里之外!",
"#xin_masu:die": "败军之罪,万死难赎!",
"#danshou1": "以胆为守,扼敌咽喉!",
"#danshou2": "到此为止了!",
"#zhuran:die": "何人竟有如此之胆!?",
"#xinpojun1": "大军在此!汝等休想前进一步!",
"#xinpojun2": "敬请,养精蓄锐!",
"#xusheng:die": "可怜一身胆略,尽随一抔黄土……",
"#xusheng:die": "盛不能奋身出命,不亦辱乎……",
"#ganlu1": "男婚女嫁,须当交换文定之物。",
"#ganlu2": "此真乃吾之佳婿也。",
"#buyi1": "吾乃吴国之母,何人敢放肆?",
@ -364,6 +365,7 @@ export default {
"#xuezong:die": "尔等,竟做如此有辱斯文之事……",
"#shiyong1": "好大一股杀气啊!",
"#shiyong2": "好大一股酒气啊!",
"#old_huaxiong:die": "皮厚,不挡刀啊……",
"#jieyue1": "安营驻寨,严守城防。",
"#jieyue2": "诸军严整,敌军自乱。",
"#yujin:die": "我,无颜面对丞相了……",

View File

@ -636,7 +636,9 @@ window.noname_asset_list = [
"audio/die/ol_liushan.mp3",
"audio/die/ol_lukai.mp3",
"audio/die/ol_lusu.mp3",
"audio/die/ol_masu.mp3",
"audio/die/xin_masu.mp3",
"audio/die/old_zhoutai.mp3",
"audio/die/old_huaxiong.mp3",
"audio/die/ol_mengda.mp3",
"audio/die/ol_pangde.mp3",
"audio/die/ol_pangtong.mp3",

View File

@ -24133,7 +24133,6 @@ game.import("mode", function (lib, game, ui, get, ai, _status) {
"#gz_sunjian:die": "有埋伏!呃……啊!!",
"#gz_xiaoqiao:die": "公瑾,我先走一步……",
"#gz_re_taishici:die": "无妄之灾,难以避免……",
"#buqu1": "哼,这点小伤算什么!",
"#gz_zhoutai:die": "敌众我寡,无力回天……",
"#guzheng2": "固国安邦,居当如是!",
"#gz_zhangzhang:die": "竭力尽智,死而无憾……",