Merge pull request #1394 from PZ157/PR-Branch

ai优化
This commit is contained in:
Spmario233 2024-05-27 23:55:40 +08:00 committed by GitHub
commit b0965b0e09
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 58 additions and 29 deletions

View File

@ -1407,7 +1407,7 @@ game.import("card", function () {
return 1;
},
basic: {
order: 9,
order: 7.2,
useful: [5, 1],
value: 5,
},
@ -1700,7 +1700,7 @@ game.import("card", function () {
return 1;
},
basic: {
order: 9,
order: 7.2,
useful: 1,
value: 5,
},
@ -1843,7 +1843,7 @@ game.import("card", function () {
}
},
basic: {
order: 7.2,
order: 7,
useful: 4.5,
value: 9.2,
},
@ -2111,12 +2111,13 @@ game.import("card", function () {
pos = get.position(button.link),
name = get.name(button.link);
if (pos == "j") {
if (name == "lebu") {
let viewAs = button.link.viewAs;
if (viewAs == "lebu") {
let needs = target.needsToDiscard(2);
btv *= 1.08 + 0.2 * needs;
} else if (name == "shandian" || name == "fulei" || name == "plague") btv /= 2;
} else if (viewAs == "shandian" || viewAs == "fulei") btv /= 2;
}
if (get.attitude(player, get.owner(button.link)) > 0) btv = -btv;
if (att > 0) btv = -btv;
if (pos != "e") {
if (pos == "h" && !player.hasSkillTag("viewHandcard", null, target, true))
return btv + 0.1;
@ -2156,6 +2157,7 @@ game.import("card", function () {
return get.value(card, target) > 0 && card != target.getEquip('jinhe');
}) && !js.some(card => {
var cardj = card.viewAs ? { name: card.viewAs } : card;
if (cardj.name == "xumou_jsrg") return true;
return get.effect(target, cardj, target, player) < 0;
})) return 0;
}
@ -2164,6 +2166,7 @@ game.import("card", function () {
return get.value(card, target) <= 0;
}) || js.some(card => {
var cardj = card.viewAs ? { name: card.viewAs } : card;
if (cardj.name == "xumou_jsrg") return false;
return get.effect(target, cardj, target, player) < 0;
})) ? 1.5 : 0;
}
@ -2180,6 +2183,7 @@ game.import("card", function () {
return get.value(card, target) > 0 && card != target.getEquip('jinhe');
}) || js.some(card => {
var cardj = card.viewAs ? { name: card.viewAs } : card;
if (cardj.name == "xumou_jsrg") return true;
return get.effect(target, cardj, target, player) < 0;
})) ? -1.5 : 1.5;
}
@ -2187,6 +2191,7 @@ game.import("card", function () {
return get.value(card, target) <= 0;
}) || js.some(card => {
var cardj = card.viewAs ? { name: card.viewAs } : card;
if (cardj.name == "xumou_jsrg") return false;
return get.effect(target, cardj, target, player) < 0;
})) ? 1.5 : -1.5;
},
@ -2218,6 +2223,7 @@ game.import("card", function () {
}) ||
js.some((card) => {
var cardj = card.viewAs ? { name: card.viewAs } : card;
if (cardj.name == "xumou_jsrg") return true;
return get.effect(target, cardj, target, player) < 0;
})
? -1.5
@ -2228,6 +2234,7 @@ game.import("card", function () {
}) ||
js.some((card) => {
var cardj = card.viewAs ? { name: card.viewAs } : card;
if (cardj.name == "xumou_jsrg") return false;
return get.effect(target, cardj, target, player) < 0;
})
? 1.5
@ -2250,6 +2257,7 @@ game.import("card", function () {
}) &&
!js.some((card) => {
var cardj = card.viewAs ? { name: card.viewAs } : card;
if (cardj.name == "xumou_jsrg") return true;
return get.effect(target, cardj, target, player) < 0;
})
)
@ -2260,6 +2268,7 @@ game.import("card", function () {
}) ||
js.some((card) => {
var cardj = card.viewAs ? { name: card.viewAs } : card;
if (cardj.name == "xumou_jsrg") return false;
return get.effect(target, cardj, target, player) < 0;
})
? 1.5
@ -2423,12 +2432,13 @@ game.import("card", function () {
pos = get.position(button.link),
name = get.name(button.link);
if (pos === "j") {
if (name === "lebu") {
let viewAs = button.link.viewAs;
if (viewAs === "lebu") {
let needs = target.needsToDiscard(2);
val *= 1.08 + 0.2 * needs;
} else if (name == "shandian" || name == "fulei" || name == "plague") val /= 2;
} else if (viewAs == "shandian" || viewAs == "fulei") val /= 2;
}
if (get.attitude(player, get.owner(button.link)) > 0) val = -val;
if (att > 0) val = -val;
if (pos !== "e") return val;
let sub = get.subtypes(button.link);
if (sub.includes("equip1")) return (val * Math.min(3.6, target.hp)) / 3;
@ -2466,6 +2476,7 @@ game.import("card", function () {
if (att > 0) {
if (js.some(card => {
const cardj = card.viewAs ? { name: card.viewAs } : card;
if (cardj.name == "xumou_jsrg") return false;
return get.effect(target, cardj, target, player) < 0;
})) return 3;
if (target.isDamaged() && es.some(card => card.name == 'baiyin') &&
@ -2485,6 +2496,7 @@ game.import("card", function () {
}));
const noj = (js.length == 0 || !js.some(card => {
const cardj = card.viewAs ? { name: card.viewAs } : card;
if (cardj.name == "xumou_jsrg") return true;
return get.effect(target, cardj, target, player) < 0;
}))
if (noh && noe2 && noj) return 1.5;
@ -2518,6 +2530,7 @@ game.import("card", function () {
if (
js.some((card) => {
const cardj = card.viewAs ? { name: card.viewAs } : card;
if (cardj.name == "xumou_jsrg") return false;
return get.effect(target, cardj, target, player) < 0;
})
)
@ -2548,6 +2561,7 @@ game.import("card", function () {
js.length == 0 ||
!js.some((card) => {
const cardj = card.viewAs ? { name: card.viewAs } : card;
if (cardj.name == "xumou_jsrg") return true;
return get.effect(target, cardj, target, player) < 0;
});
if (noh && noe2 && noj) return 1.5;

View File

@ -61,7 +61,7 @@ game.import("card", function () {
var base = 0;
if (get.cardtag(card, "yingbian_all")) {
if (
targets.filter(function (current) {
targets.some(function (current) {
var att = get.attitude(player, current);
if (att <= 0)
return (
@ -74,7 +74,7 @@ game.import("card", function () {
return get.position(card) == "j" || get.value(card, current) <= 0;
}) > 1
);
}).length
})
)
base += 6;
}
@ -138,13 +138,11 @@ game.import("card", function () {
? -1.5
: 1.5;
var js = target.getCards("j");
if (js.length) {
var jj = js[0].viewAs ? { name: js[0].viewAs } : js[0];
if (js.length == 1 && get.effect(target, jj, target, player) >= 0) {
return -1.5;
}
return 3;
}
if (js.length && js.some(i => {
let cardj = i.viewAs ? { name: i.viewAs } : i;
if (cardj.name == "xumou_jsrg") return false;
return get.effect(target, cardj, target, player) < 0;
})) return 3;
return -1.5;
},
player: function (player, target) {
@ -159,13 +157,11 @@ game.import("card", function () {
}
if (get.attitude(player, target) > 1) {
var js = target.getCards("j");
if (js.length) {
var jj = js[0].viewAs ? { name: js[0].viewAs } : js[0];
if (js.length == 1 && get.effect(target, jj, target, player) >= 0) {
return 0;
}
return 1;
}
if (js.length && js.some(i => {
let cardj = i.viewAs ? { name: i.viewAs } : i;
if (cardj.name == "xumou_jsrg") return false;
return get.effect(target, cardj, target, player) < 0;
})) return 1;
return 0;
}
return 1;

View File

@ -119,6 +119,9 @@ const skills = {
if (cards.length) await player.discard(cards);
await player.draw(4);
},
ai: {
combo: "mbpanxiang"
},
},
//李昭焦伯
mbzuoyou: {

View File

@ -1635,9 +1635,12 @@ const skills = {
return target.countCards("he") > 0 && target != player;
})
.set("ai", target => {
var player = _status.event.player;
if (_status.event.goon) return get.attitude(player, target) * Math.sqrt(target.countCards("he"));
return (-get.attitude(player, target) / (target.countCards("he") + 1)) * 10;
var player = _status.event.player, att = get.attitude(player, target);
if (_status.event.goon) {
if (att > 0) return att * Math.sqrt(target.countCards("he"));
return (1 - att) / (target.countCards("he") + 1);
}
return -10 * att / (target.countCards("he") + 1);
})
.set("goon", player.countCards("hs", card => player.hasValueTarget(card)) >= 2);
"step 1";
@ -1661,6 +1664,14 @@ const skills = {
},
subSkill: {
effect: {
mod: {
aiOrder(player, card, num) {
if (num <= 0 || !player.getExpansions("rekuangbi_effect").length) return;
let suit = get.suit(card);
if (player.getExpansions("rekuangbi_effect").some(i => get.suit(i) == suit)) return num + 10;
return num / 4;
}
},
trigger: { player: "useCard" },
charlotte: true,
forced: true,

View File

@ -25173,7 +25173,12 @@ const skills = {
usable: 1,
content: function () {
"step 0";
player.judge();
player.judge(card => {
if (game.hasPlayer(cur => {
return get.event("player").canUse("sha", cur);
})) return get.number(card);
return 1 / get.number(card);
});
"step 1";
player.storage.qiangwu = result.number;
player.addTempSkill("qiangwu3", "phaseUseEnd");