2024-04-15 18:36:20 +00:00
|
|
|
|
import { lib, game, ui, get, ai, _status } from "../noname.js";
|
|
|
|
|
game.import("card", function () {
|
|
|
|
|
return {
|
|
|
|
|
name: "hearth",
|
|
|
|
|
card: {
|
|
|
|
|
linghunzhihuo: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: true,
|
|
|
|
|
filterTarget: true,
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
target.damage("fire");
|
|
|
|
|
"step 1";
|
|
|
|
|
var hs = player.getCards("h");
|
|
|
|
|
if (hs.length) {
|
|
|
|
|
player.discard(hs.randomGet());
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
basic: {
|
|
|
|
|
order: 1.8,
|
|
|
|
|
value: [6, 1],
|
|
|
|
|
useful: [4, 1],
|
|
|
|
|
},
|
|
|
|
|
result: {
|
|
|
|
|
player: function (player, target) {
|
|
|
|
|
if (player == target) return -1;
|
|
|
|
|
if (player.countCards("h") >= player.hp) return -0.1;
|
|
|
|
|
if (player.countCards("h") > 1) return -0.5;
|
|
|
|
|
return 0;
|
|
|
|
|
},
|
|
|
|
|
target: -1,
|
|
|
|
|
},
|
|
|
|
|
tag: {
|
|
|
|
|
damage: 1,
|
|
|
|
|
fireDamage: 1,
|
|
|
|
|
natureDamage: 1,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
jihuocard: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: true,
|
|
|
|
|
toself: true,
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return player == target;
|
|
|
|
|
},
|
|
|
|
|
selectTarget: -1,
|
|
|
|
|
modTarget: true,
|
|
|
|
|
content: function () {
|
|
|
|
|
if (_status.currentPhase == target) {
|
|
|
|
|
target.addTempSkill("jihuocard2");
|
|
|
|
|
}
|
|
|
|
|
target.draw();
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
order: 10,
|
|
|
|
|
result: {
|
|
|
|
|
target: 1,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
zhaomingdan: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: true,
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return player != target && target.countCards("hej") > 0;
|
|
|
|
|
},
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
if (target.countCards("hej")) {
|
|
|
|
|
var next = player.discardPlayerCard("hej", target, true);
|
|
|
|
|
next.visible = true;
|
|
|
|
|
next.delay = false;
|
|
|
|
|
} else {
|
|
|
|
|
event.goto(2);
|
|
|
|
|
}
|
|
|
|
|
"step 1";
|
|
|
|
|
if (result.bool) {
|
|
|
|
|
game.delay(0.5);
|
|
|
|
|
}
|
|
|
|
|
"step 2";
|
|
|
|
|
target.draw(false);
|
|
|
|
|
target.$draw();
|
|
|
|
|
game.delay(0.5);
|
|
|
|
|
"step 3";
|
|
|
|
|
player.draw();
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
order: 9.5,
|
|
|
|
|
value: 6,
|
|
|
|
|
useful: 3,
|
|
|
|
|
result: {
|
|
|
|
|
target: function (player, target) {
|
|
|
|
|
if (get.attitude(player, target) > 0) {
|
|
|
|
|
var js = target.getCards("j");
|
|
|
|
|
if (js.length) {
|
|
|
|
|
var jj = js[0].viewAs ? { name: js[0].viewAs } : js[0];
|
|
|
|
|
if (jj.name == "zhaomingdan") return 3;
|
|
|
|
|
if (js.length == 1 && get.effect(target, jj, target, player) >= 0) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
return 3;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var es = target.getCards("e");
|
|
|
|
|
var nh = target.countCards("h");
|
|
|
|
|
var noe = es.length == 0 || target.hasSkillTag("noe");
|
|
|
|
|
var noe2 = es.length == 1 && es[0].name == "baiyin" && target.hp < target.maxHp;
|
|
|
|
|
var noh = nh == 0 || target.hasSkillTag("noh");
|
|
|
|
|
if (noh && noe) return 0;
|
|
|
|
|
if (noh && noe2) return 0.01;
|
|
|
|
|
if (get.attitude(player, target) <= 0)
|
|
|
|
|
return target.countCards("he") ? -1.5 : 1.5;
|
|
|
|
|
return 0.1;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
shijieshu: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
enable: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return !target.isMin();
|
|
|
|
|
},
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
var cards = [];
|
|
|
|
|
var subtype = null;
|
|
|
|
|
for (var i = 0; i < 2; i++) {
|
|
|
|
|
var card = get.cardPile(function (card) {
|
|
|
|
|
if (get.type(card) == "equip") {
|
|
|
|
|
if (subtype) {
|
|
|
|
|
if (get.subtype(card) == subtype) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
subtype = get.subtype(card);
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
});
|
|
|
|
|
if (card) {
|
|
|
|
|
ui.special.appendChild(card);
|
|
|
|
|
cards.push(card);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
switch (cards.length) {
|
|
|
|
|
case 1: {
|
|
|
|
|
target.$gain(cards[0]);
|
|
|
|
|
game.delay();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case 2: {
|
|
|
|
|
target.$gain(cards[0]);
|
|
|
|
|
setTimeout(function () {
|
|
|
|
|
target.$gain(cards[1]);
|
|
|
|
|
}, 250);
|
|
|
|
|
game.delay();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
event.cards = cards;
|
|
|
|
|
"step 1";
|
|
|
|
|
if (event.cards.length) {
|
|
|
|
|
target.equip(event.cards.shift());
|
|
|
|
|
game.delay(0.5);
|
|
|
|
|
if (event.cards.length) {
|
|
|
|
|
event.redo();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
"step 2";
|
|
|
|
|
game.delay(0.5);
|
|
|
|
|
"step 3";
|
|
|
|
|
if (target.countCards("he")) {
|
|
|
|
|
target.chooseToDiscard("he", true);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
order: 9,
|
|
|
|
|
value: 6,
|
|
|
|
|
useful: 2,
|
|
|
|
|
result: {
|
|
|
|
|
target: function (player, target) {
|
|
|
|
|
return Math.max(0, 2 - target.countCards("e"));
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
tag: {
|
|
|
|
|
norepeat: 1,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
shandianjian: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: true,
|
|
|
|
|
cardnature: "thunder",
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
if (player != game.me && player.countCards("h") < 2) return false;
|
|
|
|
|
return target.countCards("h") > 0;
|
|
|
|
|
},
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
if (target.countCards("h") == 0) {
|
|
|
|
|
event.finish();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var rand = Math.random() < 0.5;
|
|
|
|
|
target.chooseCard(true).ai = function (card) {
|
|
|
|
|
if (rand) return Math.random();
|
|
|
|
|
return get.value(card);
|
|
|
|
|
};
|
|
|
|
|
"step 1";
|
|
|
|
|
event.dialog = ui.create.dialog(
|
|
|
|
|
get.translation(target.name) + "展示的手牌",
|
|
|
|
|
result.cards
|
|
|
|
|
);
|
|
|
|
|
event.card2 = result.cards[0];
|
|
|
|
|
event.videoId = lib.status.videoId++;
|
|
|
|
|
game.addVideo("cardDialog", null, [
|
|
|
|
|
get.translation(target.name) + "展示的手牌",
|
|
|
|
|
get.cardsInfo(result.cards),
|
|
|
|
|
event.videoId,
|
|
|
|
|
]);
|
|
|
|
|
game.log(target, "展示了", event.card2);
|
|
|
|
|
player.chooseToDiscard(
|
|
|
|
|
function (card) {
|
|
|
|
|
return get.suit(card) == get.suit(_status.event.parent.card2);
|
|
|
|
|
},
|
|
|
|
|
function (card) {
|
|
|
|
|
if (get.damageEffect(target, player, player, "thunder") > 0) {
|
|
|
|
|
return 6 - get.value(card, _status.event.player);
|
|
|
|
|
}
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
).prompt = false;
|
|
|
|
|
game.delay(2);
|
|
|
|
|
"step 2";
|
|
|
|
|
if (result.bool) {
|
|
|
|
|
target.damage("thunder");
|
|
|
|
|
} else {
|
|
|
|
|
target.addTempSkill("huogong2");
|
|
|
|
|
}
|
|
|
|
|
game.addVideo("cardDialog", null, event.videoId);
|
|
|
|
|
event.dialog.close();
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
basic: {
|
|
|
|
|
order: 4,
|
|
|
|
|
value: [3, 1],
|
|
|
|
|
useful: 1,
|
|
|
|
|
},
|
|
|
|
|
wuxie: function (target, card, player, current, state) {
|
|
|
|
|
if (get.attitude(current, player) >= 0 && state > 0) return false;
|
|
|
|
|
},
|
|
|
|
|
result: {
|
|
|
|
|
player: function (player) {
|
|
|
|
|
var nh = player.countCards("h");
|
|
|
|
|
if (nh <= player.hp && nh <= 4 && _status.event.name == "chooseToUse") {
|
|
|
|
|
if (
|
|
|
|
|
typeof _status.event.filterCard == "function" &&
|
|
|
|
|
_status.event.filterCard(new lib.element.VCard({ name: "shandianjian" }))
|
|
|
|
|
) {
|
|
|
|
|
return -10;
|
|
|
|
|
}
|
|
|
|
|
if (_status.event.skill) {
|
|
|
|
|
var viewAs = get.info(_status.event.skill).viewAs;
|
|
|
|
|
if (viewAs == "shandianjian") return -10;
|
|
|
|
|
if (viewAs && viewAs.name == "shandianjian") return -10;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
},
|
|
|
|
|
target: function (player, target) {
|
|
|
|
|
if (target.hasSkill("huogong2") || target.countCards("h") == 0) return 0;
|
|
|
|
|
if (player.countCards("h") <= 1) return 0;
|
|
|
|
|
if (target == player) {
|
|
|
|
|
if (
|
|
|
|
|
typeof _status.event.filterCard == "function" &&
|
|
|
|
|
_status.event.filterCard(new lib.element.VCard({ name: "shandianjian" }))
|
|
|
|
|
) {
|
|
|
|
|
return -1.5;
|
|
|
|
|
}
|
|
|
|
|
if (_status.event.skill) {
|
|
|
|
|
var viewAs = get.info(_status.event.skill).viewAs;
|
|
|
|
|
if (viewAs == "shandianjian") return -1.5;
|
|
|
|
|
if (viewAs && viewAs.name == "shandianjian") return -1.5;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
return -1.5;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
tag: {
|
|
|
|
|
damage: 1,
|
|
|
|
|
thunderDamage: 1,
|
|
|
|
|
natureDamage: 1,
|
|
|
|
|
norepeat: 1,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
shihuawuqi: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "basic",
|
|
|
|
|
enable: true,
|
|
|
|
|
usable: 1,
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return player == target;
|
|
|
|
|
},
|
|
|
|
|
selectTarget: -1,
|
|
|
|
|
content: function () {
|
|
|
|
|
player.addTempSkill("shihuawuqi");
|
|
|
|
|
if (!player.countCards("h", "sha")) {
|
|
|
|
|
var card = get.cardPile("sha");
|
|
|
|
|
if (card) {
|
|
|
|
|
player.gain(card, "gain2");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
value: 4,
|
|
|
|
|
useful: 2,
|
|
|
|
|
order: 8,
|
|
|
|
|
result: {
|
|
|
|
|
target: function (player, target) {
|
|
|
|
|
return target.countCards("h", "sha") ? 0 : 1;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
siwangchanrao: {
|
|
|
|
|
enable: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return player != target && target.countCards("h") > 0;
|
|
|
|
|
},
|
|
|
|
|
selectTarget: 1,
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
var hs = target.getCards("h");
|
|
|
|
|
if (hs.length) {
|
|
|
|
|
target.discard(hs.randomGet());
|
|
|
|
|
}
|
|
|
|
|
"step 1";
|
|
|
|
|
if (!target.countCards("h")) {
|
|
|
|
|
player.draw();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
order: 9,
|
|
|
|
|
value: 4,
|
|
|
|
|
useful: 1,
|
|
|
|
|
result: {
|
|
|
|
|
target: -1,
|
|
|
|
|
player: function (player, target) {
|
|
|
|
|
if (target.countCards("h") == 1) return 1;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
dunpaigedang: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
enable: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
toself: true,
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return player == target;
|
|
|
|
|
},
|
|
|
|
|
selectTarget: -1,
|
|
|
|
|
modTarget: true,
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
target.changeHujia();
|
|
|
|
|
target.draw();
|
|
|
|
|
"step 1";
|
|
|
|
|
if (target.countCards("he")) {
|
|
|
|
|
target.chooseToDiscard("he", true);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
order: 8.5,
|
|
|
|
|
value: 7,
|
|
|
|
|
useful: 3,
|
|
|
|
|
result: {
|
|
|
|
|
target: 1,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
chuansongmen: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: true,
|
|
|
|
|
discard: false,
|
|
|
|
|
toself: true,
|
|
|
|
|
selectTarget: -1,
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return target == player;
|
|
|
|
|
},
|
|
|
|
|
modTarget: true,
|
|
|
|
|
// usable:3,
|
|
|
|
|
// forceUsable:true,
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
var gained = get.cards()[0];
|
|
|
|
|
target.gain(gained, "gain2");
|
|
|
|
|
if (
|
|
|
|
|
event.getParent(3).name == "phaseUse" &&
|
|
|
|
|
_status.currentPhase == target &&
|
|
|
|
|
lib.filter.filterCard(gained, target, event.getParent(2))
|
|
|
|
|
) {
|
|
|
|
|
var next = target.chooseToUse();
|
|
|
|
|
next.filterCard = function (card) {
|
|
|
|
|
return card == gained;
|
|
|
|
|
};
|
|
|
|
|
next.prompt = "是否使用" + get.translation(gained) + "?";
|
|
|
|
|
if (cards[0]) {
|
|
|
|
|
ui.special.appendChild(cards[0]);
|
|
|
|
|
} else {
|
|
|
|
|
event.finish();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// if(cards[0]){
|
|
|
|
|
// cards[0].discard();
|
|
|
|
|
// }
|
|
|
|
|
event.finish();
|
|
|
|
|
}
|
|
|
|
|
"step 1";
|
|
|
|
|
if (result.bool && !target.hasSkill("chuansongmen3")) {
|
|
|
|
|
if (target.hasSkill("chuansongmen2")) {
|
|
|
|
|
target.addTempSkill("chuansongmen3");
|
|
|
|
|
} else {
|
|
|
|
|
target.addTempSkill("chuansongmen2");
|
|
|
|
|
}
|
|
|
|
|
cards[0].fix();
|
|
|
|
|
target.gain(cards, "gain2");
|
|
|
|
|
} else {
|
|
|
|
|
cards[0].discard();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
order: 9.5,
|
|
|
|
|
value: 7,
|
|
|
|
|
useful: 3,
|
|
|
|
|
result: {
|
|
|
|
|
target: 1,
|
|
|
|
|
},
|
|
|
|
|
tag: {
|
|
|
|
|
norepeat: 1,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
tanshezhiren: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: true,
|
|
|
|
|
// recastable:true,
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return target == player;
|
|
|
|
|
},
|
|
|
|
|
selectTarget: -1,
|
|
|
|
|
modTarget: true,
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
event.current = target;
|
|
|
|
|
event.num = game.countPlayer();
|
|
|
|
|
if (event.num % 2 == 0) {
|
|
|
|
|
event.num--;
|
|
|
|
|
}
|
|
|
|
|
"step 1";
|
|
|
|
|
if (event.num) {
|
|
|
|
|
var enemies = event.current.getEnemies();
|
|
|
|
|
enemies.remove(player);
|
|
|
|
|
for (var i = 0; i < enemies.length; i++) {
|
|
|
|
|
if (!enemies[i].countCards("h")) {
|
|
|
|
|
enemies.splice(i--, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (enemies.length) {
|
|
|
|
|
var enemy = enemies.randomGet();
|
|
|
|
|
event.current.line(enemy);
|
|
|
|
|
enemy.discard(enemy.getCards("h").randomGet());
|
|
|
|
|
event.current = enemy;
|
|
|
|
|
event.num--;
|
|
|
|
|
event.redo();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
order: 8.5,
|
|
|
|
|
wuxie: function () {
|
|
|
|
|
return 0;
|
|
|
|
|
},
|
|
|
|
|
result: {
|
|
|
|
|
player: 1,
|
|
|
|
|
},
|
|
|
|
|
tag: {
|
|
|
|
|
multineg: 1,
|
|
|
|
|
multitarget: 1,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
xingjiegoutong: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: true,
|
|
|
|
|
selectTarget: -1,
|
|
|
|
|
modTarget: true,
|
|
|
|
|
toself: true,
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return player == target;
|
|
|
|
|
},
|
|
|
|
|
content: function () {
|
|
|
|
|
target.gainMaxHp();
|
|
|
|
|
target.recover();
|
|
|
|
|
target.discard(target.getCards("h"));
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
basic: {
|
|
|
|
|
useful: [1, 1],
|
|
|
|
|
value: [1, 1],
|
|
|
|
|
},
|
|
|
|
|
order: 1,
|
|
|
|
|
result: {
|
|
|
|
|
target: function (player, target) {
|
|
|
|
|
if (target.countCards("h", "tao")) return 0;
|
|
|
|
|
var nh = target.countCards("h");
|
|
|
|
|
if (nh <= 2) return 1;
|
|
|
|
|
if (target.hp == 1 && target.maxHp > 2) return 1;
|
|
|
|
|
return 0;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
tag: {
|
|
|
|
|
recover: 1,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
shenenshu: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
enable: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
selectTarget: -1,
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return target == player;
|
|
|
|
|
},
|
|
|
|
|
modTarget: true,
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
var cards = target.getCards("h");
|
|
|
|
|
if (cards.length) {
|
|
|
|
|
target.lose(cards)._triggered = null;
|
|
|
|
|
}
|
|
|
|
|
event.num = 1 + cards.length;
|
|
|
|
|
"step 1";
|
|
|
|
|
var cards = [];
|
|
|
|
|
var list = get.typeCard("basic");
|
|
|
|
|
list.remove("du");
|
|
|
|
|
if (list.length) {
|
|
|
|
|
for (var i = 0; i < event.num; i++) {
|
|
|
|
|
cards.push(game.createCard(list.randomGet()));
|
|
|
|
|
}
|
|
|
|
|
target.directgain(cards);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
order: 1,
|
|
|
|
|
result: {
|
|
|
|
|
target: function (player, target) {
|
|
|
|
|
var hs = target.getCards("h");
|
|
|
|
|
for (var i = 0; i < hs.length; i++) {
|
|
|
|
|
if (get.type(hs[i]) != "basic" && get.useful(hs[i]) >= 6) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 1;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
zhiliaobo: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
enable: true,
|
|
|
|
|
filterTarget: function (card, player, target) {
|
|
|
|
|
return target.hp < target.maxHp;
|
|
|
|
|
},
|
|
|
|
|
type: "trick",
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
target.judge(function (card) {
|
|
|
|
|
return get.color(card) == "red" ? 1 : 0;
|
|
|
|
|
});
|
|
|
|
|
"step 1";
|
|
|
|
|
if (result.bool) {
|
|
|
|
|
target.recover();
|
|
|
|
|
} else {
|
|
|
|
|
target.changeHujia();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
order: 4,
|
|
|
|
|
value: [7, 3],
|
|
|
|
|
useful: [6, 3],
|
|
|
|
|
result: {
|
|
|
|
|
target: function (player, target) {
|
|
|
|
|
var eff = get.recoverEffect(target, player, target);
|
|
|
|
|
if (eff <= 0) return 0;
|
|
|
|
|
var num = target.maxHp - target.hp;
|
|
|
|
|
if (num < 1) return 0;
|
|
|
|
|
if (num == 1) return 1;
|
|
|
|
|
if (target.hp == 1) return 2.5;
|
|
|
|
|
return 2;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
tag: {
|
|
|
|
|
recover: 1,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
yuansuhuimie: {
|
|
|
|
|
fullskin: true,
|
|
|
|
|
type: "trick",
|
|
|
|
|
enable: true,
|
|
|
|
|
selectTarget: -1,
|
|
|
|
|
filterTarget: true,
|
|
|
|
|
reverseOrder: true,
|
|
|
|
|
content: function () {
|
|
|
|
|
"step 0";
|
|
|
|
|
target.chooseToDiscard([1, 2], "he").ai = function (card) {
|
|
|
|
|
if (get.damageEffect(target, player, target, "thunder") >= 0) {
|
|
|
|
|
if (target.hasSkillTag("maixie")) {
|
|
|
|
|
if (ui.selected.cards.length) return 0;
|
|
|
|
|
} else {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (player.hasSkillTag("notricksource")) return 0;
|
|
|
|
|
if (target.hasSkillTag("notrick")) return 0;
|
|
|
|
|
if (card.name == "tao") return 0;
|
|
|
|
|
if (target.hp == 1 && card.name == "jiu") return 0;
|
|
|
|
|
if (get.type(card) != "basic") {
|
|
|
|
|
return 10 - get.value(card);
|
|
|
|
|
}
|
|
|
|
|
return 8 - get.value(card);
|
|
|
|
|
};
|
|
|
|
|
"step 1";
|
|
|
|
|
if (!result.bool || result.cards.length < 2) {
|
|
|
|
|
if (result.bool) target.damage(2 - result.cards.length, "thunder");
|
|
|
|
|
else target.damage(2, "thunder");
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
ai: {
|
|
|
|
|
basic: {
|
|
|
|
|
order: 7,
|
|
|
|
|
useful: [5, 1],
|
|
|
|
|
},
|
|
|
|
|
result: {
|
|
|
|
|
target: function (player, target) {
|
|
|
|
|
if (target.hasSkillTag("nothunder")) return 0;
|
|
|
|
|
if (player.hasUnknown(2)) return 0;
|
|
|
|
|
var nh = target.countCards("he");
|
|
|
|
|
if (target == player) nh--;
|
|
|
|
|
if (nh == 2) return -2.5;
|
|
|
|
|
if (nh == 1) return -3;
|
|
|
|
|
if (nh == 0) return -4;
|
|
|
|
|
return -2;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
tag: {
|
|
|
|
|
damage: 1,
|
|
|
|
|
natureDamage: 1,
|
|
|
|
|
thunderDamage: 1,
|
|
|
|
|
multitarget: 1,
|
|
|
|
|
multineg: 1,
|
|
|
|
|
discard: 2,
|
|
|
|
|
loseCard: 2,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
skill: {
|
|
|
|
|
chuansongmen2: {},
|
|
|
|
|
chuansongmen3: {},
|
|
|
|
|
shihuawuqi: {
|
|
|
|
|
mod: {
|
|
|
|
|
attackFrom: function (from, to, distance) {
|
|
|
|
|
return distance - 1;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
jihuocard2: {
|
|
|
|
|
mod: {
|
|
|
|
|
maxHandcard: function (player, num) {
|
|
|
|
|
return num + 2;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
translate: {
|
|
|
|
|
linghunzhihuo: "灵魂之火",
|
|
|
|
|
linghunzhihuo_info: "对一名角色造成1点火焰伤害,然后随机弃置一张手牌。",
|
|
|
|
|
shenenshu: "神恩术",
|
|
|
|
|
shenenshu_info: "出牌阶段对自己使用,将所有手牌(含此张)替换为基本牌。",
|
|
|
|
|
zhiliaobo: "治疗波",
|
|
|
|
|
zhiliaobo_info:
|
|
|
|
|
"出牌阶段对一名受伤角色使用,目标进行一次判定,若结果为红色,则回复1点体力,否则获得1点护甲。",
|
|
|
|
|
yuansuhuimie: "元素毁灭",
|
|
|
|
|
yuansuhuimie_info: "对所有角色使用,令目标弃置0~2张牌,并受到2-X点雷电伤害,X为其弃置的手牌数。",
|
|
|
|
|
xingjiegoutong: "星界沟通",
|
|
|
|
|
xingjiegoutong_info: "增加1点体力上限并回复1点体力,弃置你的所有手牌。",
|
|
|
|
|
tanshezhiren: "弹射之刃",
|
|
|
|
|
tanshezhiren_info:
|
|
|
|
|
"出牌阶段对自己使用,依次按敌方-友方-敌方-的顺序随机弃置阵营内一名随机角色的一张牌(目标不包含你),共结算X次,X为存活角色数,若X为偶数,改为X-1。",
|
|
|
|
|
chuansongmen: "传送门",
|
|
|
|
|
chuansongmen_info:
|
|
|
|
|
"摸一张牌并展示,若发生在出牌阶段,你可以立即使用摸到的牌,若如此做,你将传送门收回手牌(每阶段最多收回2张传送门)。",
|
|
|
|
|
dunpaigedang: "盾牌格挡",
|
|
|
|
|
dunpaigedang_info: "获得1点护甲值,摸一张牌,然后弃置一张牌。",
|
|
|
|
|
siwangchanrao: "死亡缠绕",
|
|
|
|
|
siwangchanrao_infox: "弃置一名其他角色的一张手牌,若其此时没有手牌,则你摸一张牌。",
|
|
|
|
|
shihuawuqi: "石化武器",
|
|
|
|
|
shihuawuqi_infox: "本回合内攻击范围+1;若你手牌中没有杀,则从牌堆中获得一张杀。",
|
|
|
|
|
shandianjian: "闪电箭",
|
|
|
|
|
shandianjian_info:
|
|
|
|
|
"目标角色展示一张手牌,然后若你能弃掉一张与所展示牌相同花色的手牌,则对该角色造成1点雷电伤害。",
|
|
|
|
|
shijieshu: "视界术",
|
|
|
|
|
shijieshu_info: "目标从牌堆或弃牌堆中随机装备两张类别不同的装备牌,然后弃置一张牌。",
|
|
|
|
|
zhaomingdan: "照明弹",
|
|
|
|
|
zhaomingdan_info: "观看一名其他角色的手牌,并弃置其区域内的一张牌,然后其与你各摸一张牌。",
|
|
|
|
|
jihuocard: "激活",
|
|
|
|
|
jihuocard_info: "摸一张牌,本回合手牌上限+2。",
|
|
|
|
|
},
|
|
|
|
|
list: [
|
|
|
|
|
["heart", 2, "shenenshu"],
|
|
|
|
|
["diamond", 12, "shenenshu"],
|
|
|
|
|
["club", 7, "zhiliaobo"],
|
|
|
|
|
["spade", 1, "zhiliaobo"],
|
|
|
|
|
["spade", 13, "yuansuhuimie"],
|
|
|
|
|
["spade", 13, "xingjiegoutong"],
|
|
|
|
|
["diamond", 2, "tanshezhiren"],
|
|
|
|
|
["diamond", 2, "chuansongmen"],
|
|
|
|
|
["heart", 2, "chuansongmen"],
|
|
|
|
|
["club", 3, "dunpaigedang"],
|
|
|
|
|
["club", 3, "shandianjian", "thunder"],
|
|
|
|
|
["spade", 1, "shandianjian", "thunder"],
|
|
|
|
|
["spade", 7, "shijieshu"],
|
|
|
|
|
["diamond", 5, "zhaomingdan"],
|
|
|
|
|
["heart", 10, "zhaomingdan"],
|
|
|
|
|
["diamond", 2, "jihuocard"],
|
|
|
|
|
["diamond", 1, "linghunzhihuo"],
|
|
|
|
|
],
|
|
|
|
|
};
|
|
|
|
|
});
|