@@ -579,9 +579,9 @@ const skills = {
579579 return true;
580580 },
581581 async content(event, trigger, player) {
582- let card = get.cardPile2(card => get.type(card , null, false) == "equip", "random");
582+ let card = get.cardPile2(cardx => get.type(cardx , null, false) == "equip", "random");
583583 if (!card) {
584- card = get.discardPile(ard => get.type(card , null, false) == "equip", "random");
584+ card = get.discardPile(cardx => get.type(cardx , null, false) == "equip", "random");
585585 }
586586 if (!card) {
587587 return;
@@ -22546,9 +22546,9 @@ const skills = {
2254622546 trigger: { player: "useCard" },
2254722547 filter(event, player) {
2254822548 return (
22549- !player.hasSkill("dczhanmeng_choice1" ) ||
22550- !player.hasSkill("dczhanmeng_choice2" ) ||
22551- (!player.hasSkill("dczhanmeng_choice0" ) &&
22549+ !player.hasStorage("dczhanmeng_choice", 1 ) ||
22550+ !player.hasStorage("dczhanmeng_choice", 2 ) ||
22551+ (!player.hasStorage("dczhanmeng_choice", 0 ) &&
2255222552 !game.hasPlayer2(current => {
2255322553 const history = current.actionHistory;
2255422554 if (history.length < 2) {
@@ -22565,13 +22565,11 @@ const skills = {
2256522565 }, true))
2256622566 );
2256722567 },
22568- direct: true,
22569- content() {
22570- "step 0";
22571- var list = [];
22572- var choiceList = ["上回合若没有同名牌被使用过,你获得一张非伤害牌", "下回合当同名牌首次被使用后,你获得一张伤害牌", "令一名其他角色弃置两张牌,若点数之和大于10,你对其造成1点火焰伤害"];
22573- var used = game.hasPlayer2(current => {
22574- var history = current.actionHistory;
22568+ async cost(event, trigger, player) {
22569+ let list = [],
22570+ choiceList = ["上回合若没有同名牌被使用过,你获得一张非伤害牌", "下回合当同名牌首次被使用后,你获得一张伤害牌", "令一名其他角色弃置两张牌,若点数之和大于10,你对其造成1点火焰伤害"];
22571+ let used = game.hasPlayer2(current => {
22572+ let history = current.actionHistory;
2257522573 if (history.length < 2) {
2257622574 return false;
2257722575 }
@@ -22584,34 +22582,45 @@ const skills = {
2258422582 }
2258522583 return false;
2258622584 }, true);
22587- if (!player.hasSkill("dczhanmeng_choice0" ) && !used) {
22585+ if (!player.hasStorage("dczhanmeng_choice", 0 ) && !used) {
2258822586 list.push("选项一");
2258922587 } else {
2259022588 choiceList[0] = '<span style="opacity:0.5; ">' + choiceList[0] + (used ? "(同名牌被使用过)" : "(已选择)") + "</span>";
2259122589 }
22592- if (!player.hasSkill("dczhanmeng_choice1" )) {
22590+ if (!player.hasStorage("dczhanmeng_choice", 1 )) {
2259322591 list.push("选项二");
2259422592 } else {
2259522593 choiceList[1] = '<span style="opacity:0.5">' + choiceList[1] + "(已选择)</span>";
2259622594 }
22597- var other = game.hasPlayer(current => current != player);
22598- if (!player.hasSkill("dczhanmeng_choice2" ) && other) {
22595+ let other = game.hasPlayer(current => current != player);
22596+ if (!player.hasStorage("dczhanmeng_choice", 2 ) && other) {
2259922597 list.push("选项三");
2260022598 } else {
2260122599 choiceList[2] = '<span style="opacity:0.5">' + choiceList[2] + (!other ? "(没人啦)" : "(已选择)") + "</span>";
2260222600 }
22603- list.push("cancel2");
22604- player
22605- .chooseControl(list)
22601+ const { result } = await player
22602+ .chooseControl(list, "cancel2")
2260622603 .set("prompt", get.prompt("dczhanmeng"))
22607- .set("ai", () => {
22608- var choices = _status.event.controls.slice().remove("cancel2");
22609- var player = _status.event.player,
22604+ .set("ai", (event, player) => {
22605+ const choices = _status.event.controls.slice().remove("cancel2"),
2261022606 evt = _status.event.getTrigger();
22611- if (!game.hasPlayer(current => get.attitude(player, current) < 0)) {
22607+ if (choices.includes("选项三")) {
22608+ if (
22609+ game.hasPlayer(current => {
22610+ if (current == player || !current.countDiscardableCards(current, "he")) {
22611+ return false;
22612+ }
22613+ let eff1 = get.effect(current, { name: "guohe_copy2" }, player, player) + 0.1,
22614+ eff2 = get.damageEffect(current, player, player, "fire") + 0.1;
22615+ if (eff1 < 0 && eff2 < 0) {
22616+ return false;
22617+ }
22618+ return eff1 * eff2 > 0;
22619+ })
22620+ ) {
22621+ return "选项三";
22622+ }
2261222623 choices.remove("选项三");
22613- } else if (choices.includes("选项三")) {
22614- return "选项三";
2261522624 }
2261622625 if (choices.includes("选项二")) {
2261722626 if (evt.card.name == "sha") {
@@ -22627,82 +22636,74 @@ const skills = {
2262722636 return choices.randomGet();
2262822637 })
2262922638 .set("choiceList", choiceList);
22630- "step 1";
22631- if (result.control == "cancel2") {
22632- event.finish();
22633- return;
22639+ event.result = {
22640+ bool: result?.control ? result.control != "cancel2" : false,
22641+ cost_data: result?.control,
22642+ };
22643+ },
22644+ popup: false,
22645+ async content(event, trigger, player) {
22646+ player.markAuto("dczhanmeng_choice", ["选项一", "选项二", "选项三"].indexOf(event.cost_data), true);
22647+ player.addTempSkill("dczhanmeng_choice");
22648+ if (event.cost_data != "选项三") {
22649+ await player.logSkill(event.name);
22650+ game.log(player, "选择了", "#y" + event.cost_data);
2263422651 }
22635- if (result.control == "选项一") {
22636- player.logSkill("dczhanmeng");
22637- game.log(player, "选择了", "#y" + result.control);
22638- player.addTempSkill("dczhanmeng_choice0");
22639- var card = get.cardPile2(card => {
22652+ if (event.cost_data == "选项一") {
22653+ let card = get.cardPile2(card => {
2264022654 return !get.tag(card, "damage");
2264122655 });
2264222656 if (card) {
22643- player.gain(card, "gain2");
22657+ await player.gain(card, "gain2");
2264422658 }
22645- event.finish();
22646- } else if (result.control == "选项二") {
22647- player.logSkill("dczhanmeng");
22648- game.log(player, "选择了", "#y" + result.control);
22649- player.addTempSkill("dczhanmeng_choice1");
22659+ } else if (event.cost_data == "选项二") {
2265022660 trigger["dczhanmeng_" + player.playerid] = true;
2265122661 player.addSkill("dczhanmeng_delay");
22652- event.finish();
2265322662 } else {
22654- player.addTempSkill("dczhanmeng_choice2");
22655- player.chooseTarget("占梦:令一名其他角色弃置两张牌", lib.filter.notMe, true).set("ai", target => {
22656- var player = _status.event.player;
22657- var eff1 = get.effect(target, { name: "guohe_copy2" }, player, player) + 0.1;
22658- var eff2 = get.damageEffect(target, player, player, "fire") + 0.1;
22663+ const { result } = await player.chooseTarget("占梦:令一名其他角色弃置两张牌", lib.filter.notMe, true).set("ai", target => {
22664+ let player = _status.event.player;
22665+ let eff1 = get.effect(target, { name: "guohe_copy2" }, player, player) + 0.1,
22666+ eff2 = get.damageEffect(target, player, player, "fire") + 0.1;
2265922667 if (eff1 < 0 && eff2 < 0) {
2266022668 return -eff1 * eff2;
2266122669 }
2266222670 return eff1 * eff2;
2266322671 });
22664- }
22665- "step 2";
22666- if (result.bool) {
22667- var target = result.targets[0];
22668- event.target = target;
22669- player.logSkill("dczhanmeng", target);
22670- game.log(player, "选择了", "#y选项三");
22671- target.chooseToDiscard(2, "he", true);
22672- } else {
22673- event.finish();
22674- }
22675- "step 3";
22676- if (result.bool) {
22677- var cards = result.cards;
22678- var num = 0;
22679- for (var card of cards) {
22680- num += get.number(card, false);
22681- }
22682- if (num > 10) {
22683- player.line(target, "fire");
22684- target.damage("fire");
22672+ if (result?.bool && result.targets?.length) {
22673+ const target = result.targets[0];
22674+ await player.logSkill(event.name, target);
22675+ game.log(player, "选择了", "#y选项三");
22676+ if (target.countDiscardableCards(target, "he")) {
22677+ const { result: result2 } = await target.chooseToDiscard(2, "he", true);
22678+ if (result2?.bool && result2.cards?.length) {
22679+ let num = result2.cards.reduce((sum, card) => sum + get.number(card, false), 0);
22680+ if (num > 10) {
22681+ player.line(target, "fire");
22682+ await target.damage("fire");
22683+ }
22684+ }
22685+ }
2268522686 }
2268622687 }
2268722688 },
22688- ai: { threaten: 8 },
2268922689 subSkill: {
22690+ choice: {
22691+ charlotte: true,
22692+ onremove: true,
22693+ },
2269022694 delay: {
22691- trigger: { global: ["useCardAfter", "phaseBeginStart"] },
2269222695 charlotte: true,
22693- forced: true,
22694- popup: false,
22695- silent: true,
22696+ trigger: { global: ["useCardAfter", "phaseBeginStart"] },
2269622697 filter(event, player, name) {
22697- var history = player.actionHistory;
22698+ let history = player.actionHistory;
2269822699 if (history.length < 2) {
2269922700 return false;
2270022701 }
22701- var list = history[history.length - 2].useCard;
22702+ let list = history[history.length - 2].useCard;
2270222703 if (name == "phaseBeginStart") {
2270322704 return !list.some(evt => evt["dczhanmeng_" + player.playerid]);
2270422705 }
22705- for (var evt of list) {
22706+ for (let evt of list) {
2270622707 if (
2270722708 evt["dczhanmeng_" + player.playerid] &&
2270822709 event.card.name == evt.card.name &&
@@ -22717,24 +22718,25 @@ const skills = {
2271722718 }
2271822719 return false;
2271922720 },
22720- content() {
22721+ forced: true,
22722+ popup: false,
22723+ silent: true,
22724+ async content(event, trigger, player) {
2272122725 if (event.triggername != "phaseBeginStart") {
22722- player.logSkill("dczhanmeng_delay ");
22723- var card = get.cardPile2(card => {
22726+ await player.logSkill("dczhanmeng ");
22727+ let card = get.cardPile2(card => {
2272422728 return get.tag(card, "damage");
2272522729 });
2272622730 if (card) {
22727- player.gain(card, "gain2");
22731+ await player.gain(card, "gain2");
2272822732 }
2272922733 } else {
22730- player.removeSkill("dczhanmeng_delay" );
22734+ player.removeSkill(event.name );
2273122735 }
2273222736 },
2273322737 },
22734- choice0: { charlotte: true },
22735- choice1: { charlotte: true },
22736- choice2: { charlotte: true },
2273722738 },
22739+ ai: { threaten: 8 },
2273822740 },
2273922741 //程秉
2274022742 dcjingzao: {
0 commit comments