部分技能ai优化

【归心】、【英霸】;
【夺锐】指示线
This commit is contained in:
157 2023-10-05 11:38:06 +08:00 committed by GitHub
parent 7d2ffba9b4
commit 53595c9343
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 57 additions and 26 deletions

View File

@ -2442,6 +2442,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
yingba:{ yingba:{
audio:2, audio:2,
mod:{
aiOrder:function(player,card,num){
if(num>0&&_status.event&&_status.event.type=='phase'&&get.tag(card,'recover')){
if(player.needsToDiscard()) return num/3;
return 0;
}
}
},
enable:'phaseUse', enable:'phaseUse',
usable:1, usable:1,
filter:(event,player)=>(game.hasPlayer((current)=>(current!=player&&current.maxHp>1))), filter:(event,player)=>(game.hasPlayer((current)=>(current!=player&&current.maxHp>1))),
@ -4298,24 +4306,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return 1; return 1;
}, },
effect:{ effect:{
target:function (card,player,target){ target:function(card,player,target){
if(get.tag(card,'damage')){ if(get.tag(card,'damage')&&target.hp>(player.hasSkillTag('damageBonus',true,{
card:card,
target:target
})?2:1)){
if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
if(target.hp==1) return 0.8; let gain=game.countPlayer(function(current){
if(target.isTurnedOver()) return [0,3]; if(target==current) return 0;
var num=game.countPlayer(function(current){ if(get.attitude(target,current)>0){
if(current.countCards('he')&&current!=player&&get.attitude(player,current)<=0){ if(current.hasCard((cardx)=>lib.filter.canBeGained(cardx,target,current,'new_guixin')&&get.effect(current,cardx,current,current)<0,'j')) return 1.3;
return true; return 0;
}
if(current.countCards('j')&&current!=player&&get.attitude(player,current)>0){
return true;
} }
if(current.hasCard((cardx)=>lib.filter.canBeGained(cardx,target,current,'new_guixin')&&get.effect(current,cardx,current,current)>0,'e')) return 1.1;
if(current.hasCard((cardx)=>lib.filter.canBeGained(cardx,target,current,'new_guixin'),'h')) return 0.9;
return 0;
}); });
if(num>2) return [0,1]; if(target.isTurnedOver()) gain+=2.3;
if(num==2) return [0.5,1]; else gain-=2.3;
return [1,Math.max(0,gain)];
} }
}, }
}, }
}, },
}, },
ol_shenfen:{ ol_shenfen:{
@ -4860,6 +4872,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
jilue_zhiheng:{ jilue_zhiheng:{
audio:1, audio:1,
mod:{
aiOrder:function(player,card,num){
if(num<=0||get.itemtype(card)!='card'||get.type(card)!='equip') return num;
let eq=player.getEquip(get.subtype(card));
if(eq&&get.equipValue(card)-get.equipValue(eq)<Math.max(1.2,6-player.hp)) return 0;
}
},
enable:'phaseUse', enable:'phaseUse',
usable:1, usable:1,
filter:function(event,player){ filter:function(event,player){
@ -4897,7 +4916,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.draw(event.num+cards.length); player.draw(event.num+cards.length);
}, },
ai:{ ai:{
order:1, order:function(item,player){
if(player.hasCard((i)=>get.value(i)>Math.max(6,9-player.hp),'he')) return 1;
return 10;
},
result:{ result:{
player:function(player){ player:function(player){
var num=0; var num=0;
@ -4912,6 +4934,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return 0; return 0;
} }
}, },
nokeep:true,
skillTagFilter:function(player,tag,arg){
if(tag==='nokeep') return player.isPhaseUsing()&&!player.getStat().skill.jilue_zhiheng&&player.hasCard((card)=>get.name(card)!=='tao','h');
},
threaten:1.5 threaten:1.5
}, },
}, },
@ -5234,20 +5260,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
effect:{ effect:{
target:function(card,player,target){ target:function(card,player,target){
if(get.tag(card,'damage')){ if(get.tag(card,'damage')&&target.hp>(player.hasSkillTag('damageBonus',true,{
card:card,
target:target
})?2:1)){
if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
if(target.hp==1) return 0.8; let gain=game.countPlayer(function(current){
if(target.isTurnedOver()) return [0,3]; if(target==current) return 0;
var num=game.countPlayer(function(current){ if(get.attitude(target,current)>0){
if(current.countCards('he')&&current!=player&&get.attitude(player,current)<=0){ if(current.hasCard((cardx)=>lib.filter.canBeGained(cardx,target,current,'guixin')&&get.effect(current,cardx,current,current)<0,'ej')) return 1.3;
return true; return 0;
}
if(current.countCards('j')&&current!=player&&get.attitude(player,current)>0){
return true;
} }
if(current.hasCard((cardx)=>lib.filter.canBeGained(cardx,target,current,'guixin')&&get.effect(current,cardx,current,current)>0,'ej')) return 1.1;
if(current.hasCard((cardx)=>lib.filter.canBeGained(cardx,target,current,'guixin'),'h')) return 0.9;
return 0;
}); });
if(num>2) return [0,1]; if(target.isTurnedOver()) gain+=2.3;
if(num==2) return [0.5,1]; else gain-=2.3;
return [1,Math.max(0,gain)];
} }
} }
} }
@ -6405,6 +6435,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
bannedList:[ bannedList:[
'bifa','buqu','gzbuqu','songci','funan','xinfu_guhuo','reguhuo','huashen','rehuashen','old_guhuo','shouxi','xinpojun','taoluan','xintaoluan','yinbing','xinfu_yingshi','zhenwei','zhengnan','xinzhengnan','zhoufu', 'bifa','buqu','gzbuqu','songci','funan','xinfu_guhuo','reguhuo','huashen','rehuashen','old_guhuo','shouxi','xinpojun','taoluan','xintaoluan','yinbing','xinfu_yingshi','zhenwei','zhengnan','xinzhengnan','zhoufu',
], ],
logTarget:'player',
content:function(){ content:function(){
'step 0' 'step 0'
var list=[]; var list=[];