Skip to content

Commit ec5c554

Browse files
authored
Merge pull request #3092 from AstralBarrage/prbranch
新武将;bugfix
2 parents 154f0e3 + 1eb9400 commit ec5c554

34 files changed

+1508
-156
lines changed

card/xianxia.js

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,84 @@ game.import("card", function () {
510510
},
511511
},
512512
},
513+
liuyedao: {
514+
fullskin: true,
515+
type: "equip",
516+
subtype: "equip1",
517+
distance: { attackFrom: -1 },
518+
ai: {
519+
basic: {
520+
equipValue: 3,
521+
},
522+
},
523+
skills: ["liuyedao_skill"],
524+
},
525+
zj_yexingyi: {
526+
fullskin: true,
527+
type: "equip",
528+
subtype: "equip2",
529+
ai: {
530+
basic: {
531+
equipValue: 5.7,
532+
},
533+
},
534+
skills: ["zj_yexingyi_skill"],
535+
},
536+
zj_lianjunshengyan: {
537+
enable: true,
538+
fullskin: true,
539+
image: "image/card/lianjunshengyan.png",
540+
type: "trick",
541+
toself: true,
542+
filterTarget: lib.filter.notMe,
543+
selectTarget: () => 1,
544+
changeTarget(player, targets) {
545+
targets.push(player);
546+
},
547+
modTarget: true,
548+
async contentBefore(event, trigger, player) {
549+
const evt = event.getParent();
550+
if (!evt.lianjunType) {
551+
const val = evt.targets.reduce((sum, current) => {
552+
sum += get.effect(current, { name: "draw" }, player, player);
553+
sum -= get.recoverEffect(current, player, player);
554+
return sum;
555+
}, 0);
556+
const result = await player
557+
.chooseControl("摸一张牌", "回复1点体力")
558+
.set("prompt", `联军盛宴:选择一项令所有目标执行`)
559+
.set("ai", () => (get.event("val") > 0 ? "摸一张牌" : "回复1点体力"))
560+
.set("val", val)
561+
.forResult();
562+
if (result?.control) {
563+
player.popup(result.control == "摸一张牌" ? "摸牌" : "回血");
564+
evt.lianjunType = result.control == "摸一张牌" ? "draw" : "recover";
565+
}
566+
}
567+
},
568+
async content(event, trigger, player) {
569+
const evt = event.getParent(),
570+
{ target } = event,
571+
type = evt.lianjunType;
572+
await target[type]();
573+
},
574+
ai: {
575+
basic: {
576+
useful: 3,
577+
value: 3,
578+
order: 5,
579+
},
580+
result: {
581+
target(player, target, card) {
582+
return Math.max(get.effect(target, { name: "draw" }, player, target), get.recoverEffect(target, player, target));
583+
},
584+
},
585+
tag: {
586+
gain: 1,
587+
recover: 1,
588+
},
589+
},
590+
},
513591
},
514592
skill: {
515593
tiejili_skill: {
@@ -796,6 +874,86 @@ game.import("card", function () {
796874
},
797875
log: false,
798876
},
877+
liuyedao_skill: {
878+
equipSkill: true,
879+
trigger: {
880+
source: "damageBegin1",
881+
},
882+
filter(event, player) {
883+
if (event.card?.name !== "sha") {
884+
return false;
885+
}
886+
return player.countDiscardableCards(player, "h") > 1;
887+
},
888+
async cost(event, trigger, player) {
889+
event.result = await player
890+
.chooseToDiscard(get.prompt2(event.skill), 2, "h")
891+
.set("ai", card => {
892+
if (get.event("val") <= 0) {
893+
return 0;
894+
}
895+
return 6 - get.value(card);
896+
})
897+
.set("val", get.damageEffect(trigger.player, trigger.source, player))
898+
.set("chooseonly", true)
899+
.forResult();
900+
},
901+
async content(event, trigger, player) {
902+
await player.modedDiscard(event.cards);
903+
trigger.num++;
904+
},
905+
},
906+
zj_yexingyi_skill: {
907+
equipSkill: true,
908+
trigger: { target: "shaBegin" },
909+
forced: true,
910+
priority: 6,
911+
audio: true,
912+
filter(event, player) {
913+
if (player.hasSkillTag("unequip2")) {
914+
return false;
915+
}
916+
if (
917+
event.player.hasSkillTag("unequip", false, {
918+
name: event.card ? event.card.name : null,
919+
target: player,
920+
card: event.card,
921+
})
922+
) {
923+
return false;
924+
}
925+
return event.card.name === "sha" && get.color(event.card) === "red";
926+
},
927+
async content(event, trigger, player) {
928+
trigger.cancel();
929+
},
930+
ai: {
931+
effect: {
932+
target(card, player, target) {
933+
if (typeof card !== "object" || target.hasSkillTag("unequip2")) {
934+
return;
935+
}
936+
if (
937+
player.hasSkillTag("unequip", false, {
938+
name: card ? card.name : null,
939+
target: target,
940+
card: card,
941+
}) ||
942+
player.hasSkillTag("unequip_ai", false, {
943+
name: card ? card.name : null,
944+
target: target,
945+
card: card,
946+
})
947+
) {
948+
return;
949+
}
950+
if (card.name === "sha" && get.color(card) === "red") {
951+
return "zeroplayertarget";
952+
}
953+
},
954+
},
955+
},
956+
},
799957
},
800958
translate: {
801959
tiejili: "铁蒺藜骨朵",
@@ -829,6 +987,16 @@ game.import("card", function () {
829987
dajunyajing_info: "出牌阶段,对一名角色使用。其以外的所有角色依次选择是否将一张牌当无距离限制的【杀】对其使用。",
830988
yushijiesui: "玉石皆碎",
831989
yushijiesui_info: "出牌阶段,对一名角色使用。你对目标角色造成1点伤害,然后失去1点体力。",
990+
liuyedao: "柳叶刀",
991+
liuyedao_info: "你使用【杀】造成伤害时,可以弃置两张手牌令此伤害+1。",
992+
liuyedao_skill: "柳叶刀",
993+
liuyedao_skill_info: "你使用【杀】造成伤害时,可以弃置两张手牌令此伤害+1。",
994+
zj_yexingyi: "夜行衣",
995+
zj_yexingyi_info: "锁定技,红色的【杀】对你无效。",
996+
zj_yexingyi_skill: "夜行衣",
997+
zj_yexingyi_skill_info: "锁定技,红色的【杀】对你无效。",
998+
zj_lianjunshengyan: "联军盛宴",
999+
zj_lianjunshengyan_info: "出牌阶段,对你和一名其他角色使用。选择一项令所有目标执行:1.摸一张牌;2.回复1点体力。",
8321000
},
8331001
list: [
8341002
["diamond", 6, "suibozhuliu"],
@@ -839,6 +1007,9 @@ game.import("card", function () {
8391007
["spade", 5, "qingmingjian"],
8401008
["club", 5, "mengchong"],
8411009
["heart", 5, "yushijiesui"],
1010+
["spade", 1, "liuyedao"],
1011+
["spade", 2, "zj_yexingyi"],
1012+
["heart", 1, "zj_lianjunshengyan"],
8421013
],
8431014
};
8441015
});

character/collab/voices.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,5 +146,5 @@ export default {
146146
"#olnengchen2": "为大汉江山鞠躬尽瘁,臣死犹生。",
147147
"#olhuojie1": "国虽大,忘战必危,好战必亡。",
148148
"#olhuojie2": "这穷兵黩武的罪,让我一人受便可。",
149-
"#ol_jsrg_caocao:die": "此征西将军曹操之墓……",
149+
"#ol_jsrg_caocao:die": "此征西将军曹侯之墓……",
150150
};

character/offline/character.js

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,31 @@ const characters = {
175175
hp: 3,
176176
skills: ["xy_lilu", "xy_yizheng"],
177177
},
178+
wn_zhuling: {
179+
sex: "male",
180+
group: "wei",
181+
hp: 4,
182+
skills: ["wn_zhanyi"],
183+
},
184+
zj_huangchong: {
185+
sex: "male",
186+
group: "shu",
187+
hp: 3,
188+
skills: ["zj_juxian", "zj_lijun"],
189+
img: "image/character/std_huangchong.jpg",
190+
},
191+
zj_dingfeng: {
192+
sex: "male",
193+
group: "wu",
194+
hp: 4,
195+
skills: ["zj_duanbing", "zj_fenxun"],
196+
},
197+
zj_liaohua: {
198+
sex: "male",
199+
group: "shu",
200+
hp: 4,
201+
skills: ["zj_dangxian", "zj_fuli"],
202+
},
178203
zj_zhanghu: {
179204
sex: "male",
180205
group: "wei",
@@ -394,7 +419,7 @@ const characters = {
394419
wn_yangqiú: {
395420
sex: "male",
396421
group: "qun",
397-
hp: 4,
422+
hp: 5,
398423
skills: ["wn_qifeng"],
399424
},
400425
pe_jun_liubei: {
@@ -1473,7 +1498,7 @@ const characters = {
14731498
drag_lvchang: {
14741499
sex: "male",
14751500
group: "wei",
1476-
hp: 3,
1501+
hp: 4,
14771502
skills: ["dragjuwu", "dragshouxiang"],
14781503
},
14791504
jsp_ganfuren: {

character/offline/characterTitle.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ export default {
266266
wn_zhanghe: "料敌机先",
267267
wn_jiaxu: "巧施间策",
268268
wn_xuhuang: "乘虚渡江",
269+
wn_zhuling: "良将之亚",
269270
xy_caocao: "与兵血仇",
270271
xy_chengyu: "腹蕴千军",
271272
xy_xunyu: "令君劝战",
@@ -282,6 +283,8 @@ export default {
282283
zj_zhaotong: "戍边驻阁",
283284
zj_zhaoguang: "沓中独断",
284285
zj_huangchong: "星陨绵竹",
286+
zj_liaohua: "果敢刚直",
287+
zj_dingfeng: "寿春解围",
285288
zj_zhugezhan: "绵竹之殇",
286289
zj_liuyin: "御军定守",
287290
zj_huoyi: "三世忠烈",

0 commit comments

Comments
 (0)