Skip to content

Commit ab32e33

Browse files
authored
Merge pull request #3124 from xizifu/PR-Branch
调整打出手牌改判的技能;bugfix
2 parents 3edaae9 + b6ddc14 commit ab32e33

File tree

16 files changed

+594
-678
lines changed

16 files changed

+594
-678
lines changed

character/diy/skill.js

Lines changed: 122 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -3259,31 +3259,28 @@ const skills = {
32593259
}) > 0
32603260
);
32613261
},
3262-
direct: true,
3263-
content() {
3264-
"step 0";
3265-
player
3266-
.chooseCard(get.translation(trigger.player) + "的" + (trigger.judgestr || "") + "判定为" + get.translation(trigger.player.judging[0]) + "," + get.prompt("nsguidao"), "hes", function (card, player) {
3262+
async cost(event, trigger, player) {
3263+
event.result = await player
3264+
.chooseCard(`${get.translation(trigger.player)}${trigger.judgestr || ""}判定为${get.translation(trigger.player.judging[0])}${get.prompt(event.skill)}`, "hes", card => {
3265+
const player = get.player();
32673266
if (!player.storage.nstaiping && get.color(card) != "black") {
32683267
return false;
32693268
}
3270-
var player = _status.event.player;
3271-
var mod2 = game.checkMod(card, player, "unchanged", "cardEnabled2", player);
3269+
const mod2 = game.checkMod(card, player, "unchanged", "cardEnabled2", player);
32723270
if (mod2 != "unchanged") {
32733271
return mod2;
32743272
}
3275-
var mod = game.checkMod(card, player, "unchanged", "cardRespondable", player);
3273+
const mod = game.checkMod(card, player, "unchanged", "cardRespondable", player);
32763274
if (mod != "unchanged") {
32773275
return mod;
32783276
}
32793277
return true;
32803278
})
3281-
.set("ai", function (card) {
3282-
var trigger = _status.event.getTrigger();
3283-
var player = _status.event.player;
3284-
var judging = _status.event.judging;
3285-
var result = trigger.judge(card) - trigger.judge(judging);
3286-
var attitude = get.attitude(player, trigger.player);
3279+
.set("ai", card => {
3280+
const trigger = get.event().getTrigger();
3281+
const { player, judging } = get.event();
3282+
const result = trigger.judge(card) - trigger.judge(judging);
3283+
const attitude = get.attitude(player, trigger.player);
32873284
let val = get.value(card);
32883285
if (get.subtype(card) == "equip2") {
32893286
val /= 2;
@@ -3298,29 +3295,24 @@ const skills = {
32983295
}
32993296
return -result - val;
33003297
})
3301-
.set("judging", trigger.player.judging[0]);
3302-
"step 1";
3303-
if (result.bool) {
3304-
player.respond(result.cards, "highlight", "nsguidao", "noOrdering");
3305-
} else {
3306-
event.finish();
3307-
}
3308-
"step 2";
3309-
if (result.bool) {
3298+
.set("judging", trigger.player.judging[0])
3299+
.forResult();
3300+
},
3301+
popup: false,
3302+
async content(event, trigger, player) {
3303+
const { cards } = await player.respond(event.cards, event.name, "highlight", "noOrdering");
3304+
if (cards?.length) {
33103305
player.$gain2(trigger.player.judging[0]);
3311-
player.gain(trigger.player.judging[0]);
3312-
trigger.player.judging[0] = result.cards[0];
3313-
trigger.orderingCards.addArray(result.cards);
3314-
game.log(trigger.player, "的判定牌改为", result.cards[0]);
3306+
await player.gain(trigger.player.judging[0]);
3307+
trigger.player.judging[0] = cards[0];
3308+
trigger.orderingCards.addArray(cards);
3309+
game.log(trigger.player, "的判定牌改为", cards);
3310+
await game.delay(2);
33153311
}
3316-
"step 3";
3317-
game.delay(2);
33183312
},
33193313
ai: {
33203314
rejudge: true,
3321-
tag: {
3322-
rejudge: 1,
3323-
},
3315+
tag: { rejudge: 1 },
33243316
},
33253317
},
33263318
nstaiping: {
@@ -3818,7 +3810,7 @@ const skills = {
38183810
trigger: { global: "judge" },
38193811
usable: 1,
38203812
filter(event, player) {
3821-
return _status.currentPhase && _status.currentPhase.countCards("h") > 0;
3813+
return _status.currentPhase?.countCards("hs") > 0;
38223814
},
38233815
logTarget() {
38243816
return _status.currentPhase;
@@ -3853,83 +3845,74 @@ const skills = {
38533845
}
38543846
return false;
38553847
},
3856-
content() {
3857-
"step 0";
3848+
async content(event, trigger, player) {
3849+
const target = _status.currentPhase;
38583850
if (
3859-
!_status.currentPhase.countCards("h", function (card) {
3860-
var player = _status.currentPhase;
3861-
var mod2 = game.checkMod(card, player, "unchanged", "cardEnabled2", player);
3851+
target?.hasCard(card => {
3852+
const player = _status.currentPhase;
3853+
const mod2 = game.checkMod(card, player, "unchanged", "cardEnabled2", player);
38623854
if (mod2 != "unchanged") {
38633855
return mod2;
38643856
}
3865-
var mod = game.checkMod(card, player, "unchanged", "cardRespondable", player);
3857+
const mod = game.checkMod(card, player, "unchanged", "cardRespondable", player);
38663858
if (mod != "unchanged") {
38673859
return mod;
38683860
}
38693861
return true;
3870-
})
3862+
}, "hs")
38713863
) {
3872-
event.finish();
3873-
return;
3874-
}
3875-
_status.currentPhase
3876-
.chooseCard(get.translation(trigger.player) + "的" + (trigger.judgestr || "") + "判定为" + get.translation(trigger.player.judging[0]) + ",请打出一张手牌进行改判", "h", true, function (card) {
3877-
var player = _status.event.player;
3878-
var mod2 = game.checkMod(card, player, "unchanged", "cardEnabled2", player);
3879-
if (mod2 != "unchanged") {
3880-
return mod2;
3881-
}
3882-
var mod = game.checkMod(card, player, "unchanged", "cardRespondable", player);
3883-
if (mod != "unchanged") {
3884-
return mod;
3885-
}
3886-
return true;
3887-
})
3888-
.set("ai", function (card) {
3889-
var trigger = _status.event.getTrigger();
3890-
var player = _status.event.player;
3891-
var judging = _status.event.judging;
3892-
var result = trigger.judge(card) - trigger.judge(judging);
3893-
var attitude = get.attitude(player, trigger.player);
3894-
if (attitude == 0 || result == 0) {
3895-
return 0;
3896-
}
3897-
if (attitude > 0) {
3898-
return result / Math.max(0.1, get.value(card));
3899-
} else {
3900-
return -result / Math.max(0.1, get.value(card));
3901-
}
3902-
})
3903-
.set("judging", trigger.player.judging[0]);
3904-
"step 1";
3905-
if (result.bool) {
3906-
_status.currentPhase.respond(result.cards, "highlight").nopopup = true;
3907-
} else {
3908-
event.finish();
3909-
}
3910-
"step 2";
3911-
if (result.bool) {
3912-
if (trigger.player.judging[0].clone) {
3913-
trigger.player.judging[0].clone.classList.remove("thrownhighlight");
3914-
game.broadcast(function (card) {
3915-
if (card.clone) {
3916-
card.clone.classList.remove("thrownhighlight");
3864+
const { result } = await target
3865+
.chooseCard(`${target == trigger.player ? "你" : get.translation(trigger.player)}${trigger.judgestr || ""}判定为${get.translation(trigger.player.judging[0])},请打出一张手牌进行改判`, "hs", card => {
3866+
const player = get.player();
3867+
const mod2 = game.checkMod(card, player, "unchanged", "cardEnabled2", player);
3868+
if (mod2 != "unchanged") {
3869+
return mod2;
39173870
}
3918-
}, trigger.player.judging[0]);
3919-
game.addVideo("deletenode", player, get.cardsInfo([trigger.player.judging[0].clone]));
3871+
const mod = game.checkMod(card, player, "unchanged", "cardRespondable", player);
3872+
if (mod != "unchanged") {
3873+
return mod;
3874+
}
3875+
return true;
3876+
})
3877+
.set("ai", card => {
3878+
const trigger = get.event().getTrigger();
3879+
const { player, judging } = get.event();
3880+
const result = trigger.judge(card) - trigger.judge(judging);
3881+
const attitude = get.attitude(player, trigger.player);
3882+
if (attitude == 0 || result == 0) {
3883+
return 0;
3884+
}
3885+
if (attitude > 0) {
3886+
return result / Math.max(0.1, get.value(card));
3887+
} else {
3888+
return -result / Math.max(0.1, get.value(card));
3889+
}
3890+
})
3891+
.set("judging", trigger.player.judging[0]);
3892+
if (result?.cards?.length) {
3893+
const { cards } = await target.respond(result.cards, "highlight", "noOrdering").set("nopopup", true);
3894+
if (cards?.length) {
3895+
if (trigger.player.judging[0].clone) {
3896+
trigger.player.judging[0].clone.classList.remove("thrownhighlight");
3897+
game.broadcast(function (card) {
3898+
if (card.clone) {
3899+
card.clone.classList.remove("thrownhighlight");
3900+
}
3901+
}, trigger.player.judging[0]);
3902+
game.addVideo("deletenode", player, get.cardsInfo([trigger.player.judging[0].clone]));
3903+
}
3904+
await game.cardsDiscard(trigger.player.judging[0]);
3905+
trigger.player.judging[0] = cards[0];
3906+
trigger.orderingCards.addArray(cards);
3907+
game.log(trigger.player, "的判定牌改为", cards);
3908+
await game.delay(2);
3909+
}
39203910
}
3921-
game.cardsDiscard(trigger.player.judging[0]);
3922-
trigger.player.judging[0] = result.cards[0];
3923-
trigger.orderingCards.addArray(result.cards);
3924-
game.log(trigger.player, "的判定牌改为", result.cards[0]);
3925-
game.delay(2);
39263911
}
39273912
},
39283913
ai: {
39293914
rejudge: true,
3930-
tag: {
3931-
rejudge: 1,
3932-
},
3915+
tag: { rejudge: 1 },
39333916
},
39343917
},
39353918
nsxianhai: {
@@ -5978,55 +5961,62 @@ const skills = {
59785961
nswangfeng: {
59795962
trigger: { global: "judge" },
59805963
filter(event, player) {
5981-
return player.countCards("he", { color: "red" }) > 0;
5964+
return player.countCards("hes", { color: "red" }) > 0;
59825965
},
5983-
direct: true,
5984-
content() {
5985-
"step 0";
5986-
player
5987-
.chooseCard(get.translation(trigger.player) + "的" + (trigger.judgestr || "") + "判定为" + get.translation(trigger.player.judging[0]) + "," + get.prompt("nswangfeng"), "he", function (card) {
5988-
return get.color(card) == "red";
5966+
async cost(event, trigger, player) {
5967+
event.result = await player
5968+
.chooseCard(`${get.translation(trigger.player)}${trigger.judgestr || ""}判定为${get.translation(trigger.player.judging[0])}${get.prompt(event.skill)}`, "hes", card => {
5969+
const player = get.player();
5970+
if (get.color(card) !== "red") {
5971+
return false;
5972+
}
5973+
const mod2 = game.checkMod(card, player, "unchanged", "cardEnabled2", player);
5974+
if (mod2 != "unchanged") {
5975+
return mod2;
5976+
}
5977+
const mod = game.checkMod(card, player, "unchanged", "cardRespondable", player);
5978+
if (mod != "unchanged") {
5979+
return mod;
5980+
}
5981+
return true;
59895982
})
5990-
.set("ai", function (card) {
5991-
var trigger = _status.event.getTrigger();
5992-
var player = _status.event.player;
5993-
var judging = _status.event.judging;
5994-
var result = trigger.judge(card) - trigger.judge(judging);
5995-
var attitude = get.attitude(player, trigger.player);
5983+
.set("ai", card => {
5984+
const trigger = get.event().getTrigger();
5985+
const { player, judging } = get.event();
5986+
const result = trigger.judge(card) - trigger.judge(judging);
5987+
const attitude = get.attitude(player, trigger.player);
5988+
let val = get.value(card);
5989+
if (get.subtype(card) == "equip2") {
5990+
val /= 2;
5991+
} else {
5992+
val /= 4;
5993+
}
59965994
if (attitude == 0 || result == 0) {
59975995
return 0;
59985996
}
59995997
if (attitude > 0) {
6000-
return result;
6001-
} else {
6002-
return -result;
5998+
return result - val;
60035999
}
6000+
return -result - val;
60046001
})
6005-
.set("judging", trigger.player.judging[0]);
6006-
"step 1";
6007-
if (result.bool) {
6008-
player.respond(result.cards, "highlight");
6009-
} else {
6010-
event.finish();
6011-
}
6012-
"step 2";
6013-
if (result.bool) {
6014-
player.logSkill("nswangfeng");
6002+
.set("judging", trigger.player.judging[0])
6003+
.forResult();
6004+
},
6005+
popup: false,
6006+
async content(event, trigger, player) {
6007+
const { cards } = await player.respond(event.cards, event.name, "highlight", "noOrdering");
6008+
if (cards?.length) {
60156009
player.$gain2(trigger.player.judging[0]);
6016-
player.gain(trigger.player.judging[0]);
6017-
trigger.player.judging[0] = result.cards[0];
6018-
if (!get.owner(result.cards[0], "judge")) {
6019-
trigger.position.appendChild(result.cards[0]);
6020-
}
6021-
game.log(trigger.player, "的判定牌改为", result.cards[0]);
6010+
await player.gain(trigger.player.judging[0]);
6011+
trigger.player.judging[0] = cards[0];
6012+
trigger.orderingCards.addArray(cards);
6013+
game.log(trigger.player, "的判定牌改为", cards);
6014+
await game.delay(2);
60226015
}
6023-
"step 3";
6024-
game.delay(2);
60256016
},
60266017
ai: {
6027-
tag: {
6028-
rejudge: 1,
6029-
},
6018+
rejudge: true,
6019+
tag: { rejudge: 1 },
60306020
},
60316021
},
60326022
nsfuhuo: {

0 commit comments

Comments
 (0)