Skip to content

Commit 154f0e3

Browse files
authored
Merge pull request #3088 from Xiazhiliao/PR-Branch
bugfix
2 parents b8d33d7 + e447b22 commit 154f0e3

File tree

5 files changed

+107
-98
lines changed

5 files changed

+107
-98
lines changed

character/extra/skill.js

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,12 @@ const skills = {
8383
});
8484
},
8585
async cost(event, trigger, player) {
86-
const storage = player.getStorage(
87-
event.skill,
88-
lib.inpile.filter(name => get.type(name) == "delay")
89-
);
86+
const storage = player
87+
.getStorage(
88+
event.skill,
89+
lib.inpile.filter(name => get.type(name) == "delay")
90+
)
91+
.filter(name => player.hasUseTarget(name));
9092
const choice = storage
9193
.map(name => [name, player.getUseValue(get.autoViewAs({ name, isCard: false }, "unsure"))])
9294
.reduce(
@@ -134,10 +136,12 @@ const skills = {
134136
return get.equipValue(link);
135137
});
136138
if (result?.bool && result.cards?.length) {
137-
const storage = player.getStorage(
138-
"zc26_shenxie",
139-
lib.inpile.filter(name => get.type(name) == "delay")
140-
);
139+
const storage = player
140+
.getStorage(
141+
event.name,
142+
lib.inpile.filter(name => get.type(name) == "delay")
143+
)
144+
.filter(name => player.hasUseTarget(name));
141145
const links = await player
142146
.chooseVCardButton(true, "神械:请选择要使用的延时锦囊牌", storage.slice())
143147
.set("ai", ({ link: [_, __, name] }) => {
@@ -13943,7 +13947,7 @@ const skills = {
1394313947
if (
1394413948
player.hasMark("drlt_jieying_mark") &&
1394513949
game.hasPlayer(current => {
13946-
return current.hasSkill("drlt_jieying") && get.attitude(player, current) <= 0;
13950+
return current.hasSkill("drlt_jieying") && current != player && get.attitude(player, current) <= 0;
1394713951
})
1394813952
) {
1394913953
return Math.max(num, 0) + 1;
@@ -13956,7 +13960,7 @@ const skills = {
1395613960
return (
1395713961
player.hasMark("drlt_jieying_mark") &&
1395813962
game.hasPlayer(current => {
13959-
return current.hasSkill("drlt_jieying") && get.attitude(player, current) <= 0;
13963+
return current.hasSkill("drlt_jieying") && current != player;
1396013964
})
1396113965
);
1396213966
},

character/newjiang/skill.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { lib, game, ui, get, ai, _status } from "../../noname.js";
44
const skills = {
55
biancai: {
66
trigger: {
7-
player: ["phaseBegin"],
7+
global: ["phaseBegin"],
88
},
99
check(event, player) {
1010
return true;
@@ -15,10 +15,10 @@ const skills = {
1515
async content(event, trigger, player) {
1616
const result = await player.judge().forResult();
1717
if (result?.color == "red") {
18-
const card = get.cardPile(card => get.type(card) == "equip", "cradPile");
18+
const card = get.cardPile(card => get.type(card) == "equip", "cardPile");
1919
await player.gain(card, "gain2");
2020
} else if (result?.color == "black") {
21-
const card = get.cardPile(card => get.type(card) == "equip", "discradPile");
21+
const card = get.cardPile(card => get.type(card) == "equip", "discardPile");
2222
await player.gain(card, "gain2");
2323
} else {
2424
player.popup("杯具");

character/sp2/skill.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2316,7 +2316,10 @@ const skills = {
23162316
return current2.countCards("h") > current.countCards("h");
23172317
});
23182318
})
2319-
.countCards("h");
2319+
?.countCards("h");
2320+
if (!maxNum) {
2321+
return;
2322+
}
23202323
const leastDiscardNum = num - maxNum + 1;
23212324
const prompt = logged ? `是否将手牌弃置至不为最多?` : get.prompt("starminghui");
23222325
const next = player

character/xianding/skill.js

Lines changed: 85 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -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: {

character/xianding/sort.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const characterSort = {
2-
sp2_huben: ["linglie", "lvju", "dc_zhangren", "dc_jiangqing", "chendong", "wangshuang", "wenyang", "re_liuzan", "dc_huangzu", "wulan", "leitong", "chentai", "dc_duyu", "dc_wangjun", "dc_xiahouba", "old_huangfusong", "huzun", "dc_lingcao", "dc_taohuang"],
2+
sp2_huben: ["linglie", "lvju", "dc_zhangren", "dc_jiangqing", "chendong", "wangshuang", "wenyang", "re_liuzan", "dc_huangzu", "wulan", "leitong", "chentai", "dc_duyu", "dc_wangjun", "dc_xiahouba", "old_huangfusong", "huzun", "dc_lingcao", "taohuang"],
33
sp2_shengun: ["suyue", "puyuan", "guanlu", "gexuan", "wufan", "re_zhangbao", "dukui", "zhaozhi", "zhujianping", "dc_zhouxuān", "zerong"],
44
sp2_bizhe: ["dc_zhushuo", "dc_wuzhi", "dc_zhongyu", "dc_luotong", "dc_wangchang", "chengbing", "dc_yangbiao", "ruanji", "cuimao"],
55
sp2_huangjia: ["dc_xiahouhui", "caomao", "liubian", "dc_liuyu", "quanhuijie", "dingshangwan", "yuanji", "xielingyu", "sunyu", "ganfurenmifuren", "dc_ganfuren", "dc_mifuren", "dc_shixie", "caofang", "zhupeilan", "bianyue", "sunba", "xuxin", "liujinliupei"],

0 commit comments

Comments
 (0)