优化拼点函数默认ai

适当降低了牌价值的权重,强调点数而非价值
This commit is contained in:
157 2023-12-21 00:27:20 +08:00
parent 1a5138d3df
commit 0231dd8442
1 changed files with 48 additions and 51 deletions

View File

@ -24394,75 +24394,72 @@ export class Library extends Uninstantable {
next._args = Array.from(arguments); next._args = Array.from(arguments);
return next; return next;
} }
chooseToCompare(target, check) { chooseToCompare(target,check){
var next = game.createEvent('chooseToCompare'); var next=game.createEvent('chooseToCompare');
next.player = this; next.player=this;
if (Array.isArray(target)) { if(Array.isArray(target)){
next.targets = target; next.targets=target;
if (check) next.ai = check; if(check) next.ai=check;
else next.ai = function (card) { else next.ai=function(card){
if (typeof card == 'string' && lib.skill[card]) { if(typeof card=='string'&&lib.skill[card]){
var ais = lib.skill[card].check || function () { return 0 }; var ais=lib.skill[card].check||function(){return 0};
return ais(); return ais();
} }
var addi = (get.value(card) >= 8 && get.type(card) != 'equip') ? -3 : 0; var addi=(get.value(card)>=8&&get.type(card)!='equip')?-3:0;
if (card.name == 'du') addi -= 3; if(card.name=='du') addi-=3;
var source = _status.event.source; var source=_status.event.source;
var player = _status.event.player; var player=_status.event.player;
var event = _status.event.getParent(); var event=_status.event.getParent();
var getn = function (card) { var getn=function(card){
if (player.hasSkill('tianbian') && get.suit(card) == 'heart') return 13 * (event.small ? -1 : 1); if(player.hasSkill('tianbian')&&get.suit(card)=='heart') return 13*(Boolean(event.small)?-1:1);
return get.number(card) * (event.small ? -1 : 1); return get.number(card)*(Boolean(event.small)?-1:1);
} }
if (source && source != player) { if(source&&source!=player){
if (get.attitude(player, source) > 1) { if(get.attitude(player,source)>1){
if (event.small) return getn(card) - get.value(card) / 2 + addi; if(Boolean(event.small)) return getn(card)-get.value(card)/3+addi;
return -getn(card) - get.value(card) / 2 + addi; return -getn(card)-get.value(card)/3+addi;
} }
if (event.small) return -getn(card) - get.value(card) / 2 + addi; if(Boolean(event.small)) return -getn(card)-get.value(card)/5+addi;
return getn(card) - get.value(card) / 2 + addi; return getn(card)-get.value(card)/5+addi;
} }
else { else{
if (event.small) return -getn(card) - get.value(card) / 2 + addi; if(Boolean(event.small)) return -getn(card)-get.value(card)/5+addi;
return getn(card) - get.value(card) / 2 + addi; return getn(card)-get.value(card)/5+addi;
} }
} }
next.setContent('chooseToCompareMultiple'); next.setContent('chooseToCompareMultiple');
} }
else { else{
next.target = target; next.target=target;
if (check) next.ai = check; if(check) next.ai=check;
else next.ai = function (card) { else next.ai=function(card){
if (typeof card == 'string' && lib.skill[card]) { if(typeof card=='string'&&lib.skill[card]){
var ais = lib.skill[card].check || function () { return 0 }; var ais=lib.skill[card].check||function(){return 0};
return ais(); return ais();
} }
var player = get.owner(card); var player=get.owner(card);
var getn = function (card) { var getn=function(card){
if (player.hasSkill('tianbian') && get.suit(card) == 'heart') return 13; if(player.hasSkill('tianbian')&&get.suit(card)=='heart') return 13;
return get.number(card); return get.number(card);
} }
var event = _status.event.getParent(); var event=_status.event.getParent();
var to = (player == event.player ? event.target : event.player); var to=(player==event.player?event.target:event.player);
var addi = (get.value(card) >= 8 && get.type(card) != 'equip') ? -6 : 0; var addi=(get.value(card)>=8&&get.type(card)!='equip')?-6:0;
if (card.name == 'du') addi -= 5; var friend=get.attitude(player,to)>0;
if (player == event.player) { if(card.name=='du') addi-=5;
if (event.small) { if(player==event.player){
return -getn(card) - get.value(card) / 2 + addi; if(Boolean(event.small)) return -getn(card)-get.value(card)/(friend?4:5)+addi;
return getn(card)-get.value(card)/(friend?4:5)+addi;
} }
return getn(card) - get.value(card) / 2 + addi; else{
} if(friend==Boolean(event.small)) return getn(card)-get.value(card)/(friend?3:5)+addi;
else { return -getn(card)-get.value(card)/(friend?3:5)+addi;
if ((get.attitude(player, to) <= 0) == Boolean(event.small)) {
return -getn(card) - get.value(card) / 2 + addi;
}
return getn(card) - get.value(card) / 2 + addi;
} }
} }
next.setContent('chooseToCompare'); next.setContent('chooseToCompare');
} }
next.forceDie = true; next.forceDie=true;
next._args = Array.from(arguments); next._args=Array.from(arguments);
return next; return next;
} }
chooseSkill(target) { chooseSkill(target) {