优化【亿金】ai
This commit is contained in:
parent
ffcc086318
commit
7f12b6677a
|
@ -3821,30 +3821,32 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
derivation:['yijin_wushi','yijin_jinmi','yijin_guxiong','yijin_tongshen','yijin_yongbi','yijin_houren'],
|
derivation:['yijin_wushi','yijin_jinmi','yijin_guxiong','yijin_tongshen','yijin_yongbi','yijin_houren'],
|
||||||
getValue:function(player,mark,target){
|
getValue:function(player,mark,target){
|
||||||
var att=get.attitude(player,target);
|
let dis=Math.sqrt(get.distance(player,target,'absolute'));
|
||||||
var dis=Math.sqrt(get.distance(player,target,'absolute'));
|
if(target.isTurnedOver()) dis++;
|
||||||
|
let draw=get.effect(target,{name:'wuzhong'},target,target)/2;
|
||||||
switch(mark.slice(6)){
|
switch(mark.slice(6)){
|
||||||
case 'wushi':
|
case 'wushi':
|
||||||
return get.effect(target,{name:'wuzhong'},player,player)*2.5/dis;
|
if(target.hasJudge('bingliang')) return 12/(1+target.getCardUsable('sha',true));
|
||||||
|
return 5*draw/dis+12/(1+target.getCardUsable('sha',true));
|
||||||
case 'jinmi':
|
case 'jinmi':
|
||||||
if(target.hasJudge('lebu')&&!target.hasCard({name:'wuxie'},'hs')) return 1;
|
if(target.hasJudge('lebu')&&!target.hasCard({name:'wuxie'},'hs')) return draw*target.needsToDiscard(2.2)/dis;
|
||||||
return get.effect(target,{name:'lebu'},player,player)/dis;
|
return get.effect(target,{name:'lebu'},target,target)+draw*target.needsToDiscard(2.2)/dis;
|
||||||
case 'guxiong':
|
case 'guxiong':
|
||||||
return get.effect(target,{name:'losehp'},player,player)*2/dis;
|
if(target.hasJudge('lebu')) return -draw*target.needsToDiscard(3)/dis;
|
||||||
|
return get.effect(target,{name:'losehp'},target,target)*2/dis-draw*target.needsToDiscard(3)/dis;
|
||||||
case 'tongshen':
|
case 'tongshen':
|
||||||
if(target.isMin()) return 0;
|
if(target.isMin()) return 0;
|
||||||
var eff=get.damageEffect(target,player,target);
|
var eff=-get.damageEffect(target,player,target);
|
||||||
if(eff>=0) return 0;
|
if(eff<=0) return 0;
|
||||||
if(att>=4){
|
if(target.hp<2) return eff*dis*2;
|
||||||
if(target.hp==1) return att*5/Math.max(0.1,5-dis);
|
if(target.hp<3&&target.countCards('he')<3) return eff*dis*1.5;
|
||||||
if(target.hp==2&&target.countCards('he')<=2) return att*3/Math.max(0.1,5-dis);
|
if(target.hp>3) return eff*dis/target.hp;
|
||||||
}
|
return eff*dis;
|
||||||
if(att>0) return 0;
|
|
||||||
return -eff/5*dis;
|
|
||||||
case 'yongbi':
|
case 'yongbi':
|
||||||
return get.effect(target,{name:'bingliang'},player,player)*2;
|
if(target.hasJudge('bingliang')&&!target.hasCard({name:'wuxie'},'hs')) return 0;
|
||||||
|
return get.effect(target,{name:'bingliang'},player,target)*2/dis;
|
||||||
case 'houren':
|
case 'houren':
|
||||||
return get.recoverEffect(target,player,player)/dis;
|
return Math.min(5,2+target.getDamagedHp())*get.recoverEffect(target,player,target)/dis;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
content:function(){
|
content:function(){
|
||||||
|
@ -3852,8 +3854,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
player.chooseTarget('亿金:令一名其他角色获得1枚“金”',true,(card,player,target)=>{
|
player.chooseTarget('亿金:令一名其他角色获得1枚“金”',true,(card,player,target)=>{
|
||||||
return player!=target&&!lib.skill.yijin.getKane(target).length;
|
return player!=target&&!lib.skill.yijin.getKane(target).length;
|
||||||
}).set('ai',target=>{
|
}).set('ai',target=>{
|
||||||
var player=_status.event.player,kane=lib.skill.yijin.getKane(player);
|
let player=_status.event.player,att=get.attitude(player,target),kane=lib.skill.yijin.getKane(player);
|
||||||
return Math.abs(Math.max.apply(Math.max,kane.map(i=>lib.skill.yijin.getValue(player,i,target))));
|
if(Math.abs(att)>1) att=Math.sign(att)*Math.sqrt(Math.abs(att));
|
||||||
|
return Math.max.apply(Math.max,kane.map(i=>{
|
||||||
|
return att*lib.skill.yijin.getValue(player,i,target);
|
||||||
|
}));
|
||||||
});
|
});
|
||||||
'step 1'
|
'step 1'
|
||||||
if(result.bool){
|
if(result.bool){
|
||||||
|
@ -3866,8 +3871,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
'<div>'+get.skillInfoTranslation(i,player)+'</div>';
|
'<div>'+get.skillInfoTranslation(i,player)+'</div>';
|
||||||
});
|
});
|
||||||
player.chooseControl(kane).set('choiceList',choiceList).set('displayIndex',false).set('prompt','选择令'+get.translation(target)+'获得的“金”').set('ai',()=>{
|
player.chooseControl(kane).set('choiceList',choiceList).set('displayIndex',false).set('prompt','选择令'+get.translation(target)+'获得的“金”').set('ai',()=>{
|
||||||
var controls=_status.event.controls,player=_status.event.player,target=_status.event.getParent().target;
|
let controls=_status.event.controls,player=_status.event.player,target=_status.event.getParent().target,att=get.attitude(player,target);
|
||||||
var list=controls.map(i=>[i,lib.skill.yijin.getValue(player,i,target)])//.filter(i=>i[1]>=0);
|
if(Math.abs(att)>1) att=Math.sign(att)*Math.sqrt(Math.abs(att));
|
||||||
|
let list=controls.map(i=>{
|
||||||
|
return [i,att*lib.skill.yijin.getValue(player,i,target)];
|
||||||
|
});
|
||||||
list.sort((a,b)=>b[1]-a[1]);
|
list.sort((a,b)=>b[1]-a[1]);
|
||||||
if(list.length) return list[0][0];
|
if(list.length) return list[0][0];
|
||||||
return controls.randomGet();
|
return controls.randomGet();
|
||||||
|
|
Loading…
Reference in New Issue