@@ -1056,65 +1056,33 @@ const skills = {
10561056 backup(links) {
10571057 return {
10581058 audio: "dcsbzhanban",
1059- link: links[0],
10601059 filterTarget: lib.filter.notMe,
10611060 selectTarget: -1,
10621061 log: false,
1063- multitarget: true,
1064- multiline: true,
1065- line: false,
1066- async content(event, trigger, player) {
1067- const link = lib.skill.dcsbzhanban_backup.link;
1062+ async precontent(event, trigger, player) {
1063+ player.logSkill("dcsbzhanban", event.result.targets);
1064+ const link = links[0];
10681065 if (link > 0) {
10691066 await player.draw(link);
10701067 } else if (link < 0) {
10711068 await player.chooseToDiscard(`斩绊:弃置至多三张牌`, "he", [1, 3], true);
10721069 }
1073- let targets = event.targets;
1074- if (player.hasZhuSkill("dcsbtiancheng") && targets.some(target => target.group == "qun")) {
1075- const result = await player
1076- .chooseTarget(`斩绊:你可以选择任意名群雄角色不成为目标或取消不选择`, [1, Infinity], (card, player, target) => {
1077- return target != player && target.group == "qun";
1078- })
1079- .set("ai", target => {
1080- const num = get.player().countCards("h"),
1081- numx = num - target.countCards("h"),
1082- att = get.attitude(get.player(), target);
1083- let val;
1084- if (numx > 0) {
1085- val = numx - 3;
1086- } else if (numx < 0) {
1087- val = numx + 3;
1088- } else {
1089- val = -2;
1090- }
1091- val = val == 0 ? 0.5 : val;
1092- return val * att < 0;
1093- })
1094- .forResult();
1095- if (result?.targets?.length) {
1096- targets.removeArray(result.targets);
1097- }
1098- }
1099- targets = targets.sortBySeat();
1100- player.logSkill("dcsbzhanban", targets);
1101- const num = player.countCards("h");
1102- for (const target of targets) {
1103- const numx = num - target.countCards("h");
1104- if (numx > 0) {
1105- await target.draw(numx, "nodelay");
1106- } else if (numx < 0) {
1107- await target.chooseToDiscard(-numx, "h", true);
1108- }
1109- }
1110- for (const target of targets) {
1111- if (target.hasHistory("gain", evt => evt.getParent(2) == event)) {
1112- await target.chooseToDiscard(3, "h", true);
1113- } else if (target.hasHistory("lose", evt => evt.type == "discard" && evt.getlx !== false && evt.getParent(3) == event)) {
1114- await target.draw(3, "nodelay");
1115- } else {
1116- await target.damage();
1117- }
1070+ },
1071+ async content(event, trigger, player) {
1072+ const num = player.countCards("h"),
1073+ { target } = event;
1074+ const numx = num - target.countCards("h");
1075+ if (numx > 0) {
1076+ await target.draw(numx, "nodelay");
1077+ } else if (numx < 0) {
1078+ await target.chooseToDiscard(-numx, "h", true);
1079+ }
1080+ if (target.hasHistory("gain", evt => evt.getParent(2) == event)) {
1081+ await target.chooseToDiscard(3, "h", true);
1082+ } else if (target.hasHistory("lose", evt => evt.type == "discard" && evt.getlx !== false && evt.getParent(3) == event)) {
1083+ await target.draw(3, "nodelay");
1084+ } else {
1085+ await target.damage();
11181086 }
11191087 },
11201088 };
@@ -1126,6 +1094,9 @@ const skills = {
11261094 player: 1,
11271095 },
11281096 },
1097+ subSkill: {
1098+ backup: {},
1099+ },
11291100 },
11301101 dcsbchensheng: {
11311102 audio: 2,
@@ -1142,6 +1113,37 @@ const skills = {
11421113 dcsbtiancheng: {
11431114 audio: 2,
11441115 zhuSkill: true,
1116+ trigger: { player: "pre_dcsbzhanban_backupBegin" },
1117+ filter(event, player) {
1118+ return event.player == player && game.hasPlayer(target => target != player && target.group == "qun" && event.result.targets.includes(target)) && player.hasZhuSkill("dcsbtiancheng");
1119+ },
1120+ async cost(event, trigger, player) {
1121+ event.result = await player
1122+ .chooseTarget(get.prompt2(event.skill), [1, Infinity], (card, player, target) => {
1123+ return target != player && target.group == "qun" && get.event().getTrigger().result.targets.includes(target);
1124+ })
1125+ .set("ai", target => {
1126+ const num = get.player().countCards("h"),
1127+ numx = num - target.countCards("h"),
1128+ att = get.attitude(get.player(), target);
1129+ let val;
1130+ if (numx > 0) {
1131+ val = numx - 3;
1132+ } else if (numx < 0) {
1133+ val = numx + 3;
1134+ } else {
1135+ val = -2;
1136+ }
1137+ val = val == 0 ? 0.5 : val;
1138+ return val * att < 0;
1139+ })
1140+ .forResult();
1141+ },
1142+ async content(event, trigger, player) {
1143+ const { targets } = event;
1144+ trigger.result.targets.removeArray(targets);
1145+ await game.delayx();
1146+ },
11451147 ai: { combo: "dcsbzhanban" },
11461148 },
11471149 //谋曹洪
0 commit comments