调整缩进、修复描述、ai修复和优化
This commit is contained in:
parent
a5b4c54bf0
commit
077a8a595d
|
@ -308,12 +308,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
if(status*get.attitude(viewer,player._trueMe||player)>0 || target.hasSkillTag('nodamage') || target.hasSkillTag('nofire') || target.hasSkillTag('nothunder') || get.attitude(viewer,player)>0 || (1+target.countCards('hs'))*_status.event.getRand()>1.57) return 0;
|
if(status*get.attitude(viewer,player._trueMe||player)>0 || target.hasSkillTag('nodamage') || target.hasSkillTag('nofire') || target.hasSkillTag('nothunder') || get.attitude(viewer,player)>0 || (1+target.countCards('hs'))*_status.event.getRand()>1.57) return 0;
|
||||||
},
|
},
|
||||||
basic:{
|
basic:{
|
||||||
order:(item,player)=>{
|
order:7.3,
|
||||||
if(player.hasCard(card=>{
|
|
||||||
return get.tag(card,'damage')&&game.hasNature(card)&&player.hasValueTarget(card);
|
|
||||||
},'hs')) return 7.3;
|
|
||||||
return 4.1;
|
|
||||||
},
|
|
||||||
useful:1.2,
|
useful:1.2,
|
||||||
value:4
|
value:4
|
||||||
},
|
},
|
||||||
|
|
|
@ -155,7 +155,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
next.set('useShan',(()=>{
|
next.set('useShan',(()=>{
|
||||||
if(target.hasSkillTag('noShan',null,event)) return false;
|
if(target.hasSkillTag('noShan',null,event)) return false;
|
||||||
if(target.hasSkillTag('useShan',null,event)) return true;
|
if(target.hasSkillTag('useShan',null,event)) return true;
|
||||||
if(event.baseDamage+event.extraDamage<=0 || get.attitude(target,player._trueMe||player)>0) return false;
|
if(event.baseDamage+event.extraDamage<=0 || target.isLink()&&game.hasNature(event.card)&&get.attitude(target,player._trueMe||player)>0) return false;
|
||||||
if(event.shanRequired>1&&target.mayHaveShan(target,'use',null,'count')<event.shanRequired-(event.shanIgnored||0)) return false;
|
if(event.shanRequired>1&&target.mayHaveShan(target,'use',null,'count')<event.shanRequired-(event.shanIgnored||0)) return false;
|
||||||
if(event.baseDamage+event.extraDamage>=target.hp+
|
if(event.baseDamage+event.extraDamage>=target.hp+
|
||||||
((player.hasSkillTag('jueqing',false,target)||target.hasSkill('gangzhi'))?target.hujia:0)) return true;
|
((player.hasSkillTag('jueqing',false,target)||target.hasSkill('gangzhi'))?target.hujia:0)) return true;
|
||||||
|
@ -1271,33 +1271,39 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
||||||
value:5.5
|
value:5.5
|
||||||
},
|
},
|
||||||
result:{
|
result:{
|
||||||
target:-1.5,
|
player(player, target, card) {
|
||||||
player:function(player,target,card){
|
|
||||||
if (player.hasSkillTag('directHit_ai', true, {
|
if (player.hasSkillTag('directHit_ai', true, {
|
||||||
target: target,
|
target: target,
|
||||||
card:card,
|
card: card
|
||||||
},true)){
|
}, true)) return 0;
|
||||||
return 0;
|
if (get.damageEffect(target, player, target) >= 0) return 0;
|
||||||
}
|
let pd = get.damageEffect(player, target, player), att = get.attitude(player, target);
|
||||||
if(get.damageEffect(target,player,target)>0&&get.attitude(player,target)>0&&get.attitude(target,player)>0){
|
if (att > 0 && get.damageEffect(target, player, player) > pd) return 0;
|
||||||
return 0;
|
let ts = target.mayHaveSha(player, 'respond', null, 'count'), ps = player.mayHaveSha(player, 'respond', null, 'count');
|
||||||
}
|
if (ts < 1 && ts << 3 < Math.pow(player.hp, 2)) return 0;
|
||||||
var hs1=target.getCards('h','sha');
|
if (att > 0) {
|
||||||
var hs2=player.getCards('h','sha');
|
if (ts < 1) return 0;
|
||||||
if(hs1.length>hs2.length+1){
|
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
var hsx=target.getCards('h');
|
if (ts - ps + Math.exp(0.8 - player.hp) < 1) return -ts;
|
||||||
if(hsx.length>2&&hs2.length==0&&hsx[0].number<6){
|
if (pd >= 0) return pd / get.attitude(player, player);
|
||||||
return -2;
|
return -2 - ts;
|
||||||
}
|
},
|
||||||
if(hsx.length>3&&hs2.length==0){
|
target(player, target, card) {
|
||||||
return -2;
|
if (player.hasSkillTag('directHit_ai', true, {
|
||||||
}
|
target: target,
|
||||||
if(hs1.length>hs2.length&&(!hs2.length||hs1[0].number>hs2[0].number)){
|
card: card
|
||||||
return -2;
|
}, true)) return -2;
|
||||||
}
|
let td = get.damageEffect(target, player, target);
|
||||||
return -0.5;
|
if (td >= 0) return td / get.attitude(target, target);
|
||||||
|
let pd = get.damageEffect(player, target, player), att = get.attitude(player, target);
|
||||||
|
if (att > 0 && get.damageEffect(target, player, player) > pd) return -2;
|
||||||
|
let ts = target.mayHaveSha(player, 'respond', null, 'count'), ps = player.mayHaveSha(player, 'respond', null, 'count');
|
||||||
|
if (ts < 1) return -1.5;
|
||||||
|
if (att > 0) return -2;
|
||||||
|
if (ts - ps < 1) return -2 - ts;
|
||||||
|
if (pd >= 0) return -1;
|
||||||
|
return -ts;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
tag:{
|
tag:{
|
||||||
|
|
|
@ -7454,6 +7454,42 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
jsrgtushe:{
|
jsrgtushe:{
|
||||||
audio:'xinfu_tushe',
|
audio:'xinfu_tushe',
|
||||||
|
mod: {
|
||||||
|
aiOrder(player, card, num) {
|
||||||
|
if (get.tag(card, 'multitarget')) {
|
||||||
|
if (player.countCards('h', { type: 'basic' })) return num / 10;
|
||||||
|
return num * 10;
|
||||||
|
}
|
||||||
|
if (get.type(card) === 'basic') return num + 10;
|
||||||
|
},
|
||||||
|
aiValue(player, card, num) {
|
||||||
|
if (card.name === 'zhangba') {
|
||||||
|
let fact = (n) => {
|
||||||
|
if (n > 1) return n * fact(n - 1);
|
||||||
|
return 1;
|
||||||
|
}, basic = 0;
|
||||||
|
return fact(Math.min(player.countCards('hs', i => {
|
||||||
|
if (get.tag(i, 'multitarget')) return 2;
|
||||||
|
if (!['shan', 'tao', 'jiu'].includes(card.name)) return 1;
|
||||||
|
basic++;
|
||||||
|
}) / (1 + basic), player.getCardUsable('sha')));
|
||||||
|
}
|
||||||
|
if (['shan', 'tao', 'jiu'].includes(card.name)) {
|
||||||
|
if (player.getEquip('zhangba') && player.countCards('hs') > 1) return 0.01;
|
||||||
|
return num / 2;
|
||||||
|
}
|
||||||
|
if (get.tag(card, 'multitarget')) return num + game.players.length;
|
||||||
|
},
|
||||||
|
aiUseful(player, card, num) {
|
||||||
|
if (get.name(card, player) === 'shan') {
|
||||||
|
if (player.countCards('hs', i => {
|
||||||
|
if (card === i || card.cards && card.cards.includes(i)) return false;
|
||||||
|
return get.name(i, player) === 'shan';
|
||||||
|
})) return -1;
|
||||||
|
return num / Math.pow(Math.max(1, player.hp), 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
trigger:{
|
trigger:{
|
||||||
player:'useCardToPlayered',
|
player:'useCardToPlayered',
|
||||||
},
|
},
|
||||||
|
@ -7465,6 +7501,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
check:function(event,player){
|
check:function(event,player){
|
||||||
return !player.countCards('h',{type:'basic'});
|
return !player.countCards('h',{type:'basic'});
|
||||||
},
|
},
|
||||||
|
locked: false,
|
||||||
content:function (){
|
content:function (){
|
||||||
'step 0'
|
'step 0'
|
||||||
player.showHandcards();
|
player.showHandcards();
|
||||||
|
@ -7480,7 +7517,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
presha:true,
|
presha:true,
|
||||||
pretao:true,
|
pretao:true,
|
||||||
threaten:1.8,
|
threaten:1.8,
|
||||||
},
|
effect: {
|
||||||
|
player(card, player, target) {
|
||||||
|
if (typeof card === 'object' && card.name !== 'shan' && get.type(card) !== 'equip' && !player.countCards('h', i => {
|
||||||
|
if (card === i || card.cards && card.cards.includes(i)) return false;
|
||||||
|
return get.type(i) === 'basic';
|
||||||
|
})) {
|
||||||
|
let targets = [], evt = _status.event.getParent('useCard');
|
||||||
|
targets.addArray(ui.selected.targets);
|
||||||
|
if (evt && evt.card == card) targets.addArray(evt.targets);
|
||||||
|
if (targets.length) return [1, targets.length];
|
||||||
|
if (get.tag(card, 'multitarget')) return [1, game.players.length - 1];
|
||||||
|
return [1, 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
jsrgtongjue:{
|
jsrgtongjue:{
|
||||||
audio:2,
|
audio:2,
|
||||||
|
|
|
@ -904,7 +904,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
if(card.name=='sha'&&typeof player.storage.sbwusheng_effect[target.playerid]=='number') return true;
|
if(card.name=='sha'&&typeof player.storage.sbwusheng_effect[target.playerid]=='number') return true;
|
||||||
},
|
},
|
||||||
cardUsableTarget:function(card,player,target){
|
cardUsableTarget:function(card,player,target){
|
||||||
if(card.name=='sha'&&typeof player.storage.sbwusheng_effect[target.playerid]=='number') return true;
|
if(card.name!=='sha'||typeof player.storage.sbwusheng_effect[target.playerid]!=='number') return;
|
||||||
|
return player.storage.sbwusheng_effect[target.playerid]<3;
|
||||||
},
|
},
|
||||||
playerEnabled:function(card,player,target){
|
playerEnabled:function(card,player,target){
|
||||||
if(card.name!='sha'||typeof player.storage.sbwusheng_effect[target.playerid]!='number') return;
|
if(card.name!='sha'||typeof player.storage.sbwusheng_effect[target.playerid]!='number') return;
|
||||||
|
|
|
@ -9768,7 +9768,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
gxianyin_info:'出牌阶段限一次,你可以选择一种花色,将你的手牌中该花色的牌移至弃牌堆,然后选择另一种花色,从牌堆中获得等量的该花色的牌。',
|
gxianyin_info:'出牌阶段限一次,你可以选择一种花色,将你的手牌中该花色的牌移至弃牌堆,然后选择另一种花色,从牌堆中获得等量的该花色的牌。',
|
||||||
// gxianyin_info_alter:'',
|
// gxianyin_info_alter:'',
|
||||||
cyxianjiang:'仙匠',
|
cyxianjiang:'仙匠',
|
||||||
cyxianjiang_info:'每当你使用一张牌指定惟一目标时,你可以复制对方装备区内的一张你没有的牌,并置入你的装备区,每回合对一名角色最多发动一次。',
|
cyxianjiang_info:'每当你使用一张牌指定唯一目标时,你可以复制对方装备区内的一张你没有的牌,并置入你的装备区,每回合对一名角色最多发动一次。',
|
||||||
cyqiaoxie:'巧械',
|
cyqiaoxie:'巧械',
|
||||||
cyqiaoxie_info:'每当你失去一张装备牌(使用除外),你可以随机观看三张机关牌,并使用其中一张。',
|
cyqiaoxie_info:'每当你失去一张装备牌(使用除外),你可以随机观看三张机关牌,并使用其中一张。',
|
||||||
cyqiaoxie_info_alter:'每当你装备一件装备,若你的手牌数不大于体力值,你可以摸一张牌;每当你失去一件装备牌,你可以随机观看2张机关牌,并使用其中一张。',
|
cyqiaoxie_info_alter:'每当你装备一件装备,若你的手牌数不大于体力值,你可以摸一张牌;每当你失去一件装备牌,你可以随机观看2张机关牌,并使用其中一张。',
|
||||||
|
@ -9923,7 +9923,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
pingshen2:'凭神',
|
pingshen2:'凭神',
|
||||||
pingshen_info:'锁定技,受到过你的伤害的角色可在回合内对你发动一次【离魂】(每局限发动一次)。',
|
pingshen_info:'锁定技,受到过你的伤害的角色可在回合内对你发动一次【离魂】(每局限发动一次)。',
|
||||||
xingzhui:'星坠',
|
xingzhui:'星坠',
|
||||||
xingzhui_info:'出牌阶段限一次,你可以弃置一张牌,并令一名有牌的其他角色弃置一张类别相同的牌,若则受到1点伤害。',
|
xingzhui_info:'出牌阶段限一次,你可以弃置一张牌,并令一名有牌的其他角色弃置一张类别相同的牌,否则受到1点伤害。',
|
||||||
lingxian:'凌仙',
|
lingxian:'凌仙',
|
||||||
lingxian_info:'每当你于回合外使用或打出一张手牌,你可以选择攻击范围外的一名其他角色与你各摸一张牌。',
|
lingxian_info:'每当你于回合外使用或打出一张手牌,你可以选择攻击范围外的一名其他角色与你各摸一张牌。',
|
||||||
shouyin:'守印',
|
shouyin:'守印',
|
||||||
|
@ -9965,7 +9965,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
xiaomoyu:'魔愈',
|
xiaomoyu:'魔愈',
|
||||||
xiaomoyu_info:'锁定技,每当你于一个回合内首次造成伤害,你回复1点体力,若你没有受伤,则改为摸一张牌。',
|
xiaomoyu_info:'锁定技,每当你于一个回合内首次造成伤害,你回复1点体力,若你没有受伤,则改为摸一张牌。',
|
||||||
yihua:'移花',
|
yihua:'移花',
|
||||||
yihua_info:'每当你成为其他角色的某张卡牌的惟一目标时,你可以弃置两张手牌,将使用者与目标对调。',
|
yihua_info:'每当你成为其他角色的某张卡牌的唯一目标时,你可以弃置两张手牌,将使用者与目标对调。',
|
||||||
youyin:'游吟',
|
youyin:'游吟',
|
||||||
youyin_info:'每当有其他角色弃置卡牌时,若其中有非基本牌且你的手牌数不超过5,你可以摸一张牌。',
|
youyin_info:'每当有其他角色弃置卡牌时,若其中有非基本牌且你的手牌数不超过5,你可以摸一张牌。',
|
||||||
rexue:'热血',
|
rexue:'热血',
|
||||||
|
|
|
@ -3374,7 +3374,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
var choices=['选项二'];
|
var choices=['选项二'];
|
||||||
var choiceList=[
|
var choiceList=[
|
||||||
'令'+get.translation(target)+'回复1点体力',
|
'令'+get.translation(target)+'回复1点体力',
|
||||||
'你于'+get.translation(target)+'各摸一张牌'
|
'你与'+get.translation(target)+'各摸一张牌'
|
||||||
];
|
];
|
||||||
if(target.isDamaged()) choices.unshift('选项一');
|
if(target.isDamaged()) choices.unshift('选项一');
|
||||||
else choiceList[0]='<span style="opacity:0.5">'+choiceList[0]+'</span>';
|
else choiceList[0]='<span style="opacity:0.5">'+choiceList[0]+'</span>';
|
||||||
|
|
|
@ -4194,8 +4194,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
chengxin2_bg:'心',
|
chengxin2_bg:'心',
|
||||||
chengxin_info:'每四轮限一次,当一名角色进入濒死状态时,你可以令其将体力值回复至1,然后该角色防止一切伤害直到下一回合结束。',
|
chengxin_info:'每四轮限一次,当一名角色进入濒死状态时,你可以令其将体力值回复至1,然后该角色防止一切伤害直到下一回合结束。',
|
||||||
tianwu:'天舞',
|
tianwu:'天舞',
|
||||||
tianwu_info:'每当你使用卡牌指定一名敌方角色为惟一目标,你可以对其施加一个随机的负面效果。',
|
tianwu_info:'每当你使用卡牌指定一名敌方角色为唯一目标,你可以对其施加一个随机的负面效果。',
|
||||||
tianwu_info_alter:'每当你使用卡牌指定一名敌方角色为惟一目标,你可以对其施加一个随机的负面效果,每回合限发动一次。',
|
tianwu_info_alter:'每当你使用卡牌指定一名敌方角色为唯一目标,你可以对其施加一个随机的负面效果,每回合限发动一次。',
|
||||||
liguang:'离光',
|
liguang:'离光',
|
||||||
liguang_info:'结束阶段,你可以弃置一张手牌并将场上的一张牌移动到另一个合理的位置。',
|
liguang_info:'结束阶段,你可以弃置一张手牌并将场上的一张牌移动到另一个合理的位置。',
|
||||||
shiying:'逝影',
|
shiying:'逝影',
|
||||||
|
|
|
@ -1490,9 +1490,46 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
"xinfu_tushe":{
|
"xinfu_tushe":{
|
||||||
audio:2,
|
audio:2,
|
||||||
|
mod: {
|
||||||
|
aiOrder(player, card, num) {
|
||||||
|
if (get.tag(card, 'multitarget')) {
|
||||||
|
if (player.countCards('h', { type: 'basic' })) return num / 10;
|
||||||
|
return num * 10;
|
||||||
|
}
|
||||||
|
if (get.type(card) === 'basic') return num + 10;
|
||||||
|
},
|
||||||
|
aiValue(player, card, num) {
|
||||||
|
if (card.name === 'zhangba') {
|
||||||
|
let fact = (n) => {
|
||||||
|
if (n > 1) return n * fact(n - 1);
|
||||||
|
return 1;
|
||||||
|
}, basic = 0;
|
||||||
|
return fact(Math.min(player.countCards('hs', i => {
|
||||||
|
if (get.tag(i, 'multitarget')) return 2;
|
||||||
|
if (!['shan', 'tao', 'jiu'].includes(card.name)) return 1;
|
||||||
|
basic++;
|
||||||
|
}) / (1 + basic), player.getCardUsable('sha')));
|
||||||
|
}
|
||||||
|
if (['shan', 'tao', 'jiu'].includes(card.name)) {
|
||||||
|
if (player.getEquip('zhangba') && player.countCards('hs') > 1) return 0.01;
|
||||||
|
return num / 2;
|
||||||
|
}
|
||||||
|
if (get.tag(card, 'multitarget')) return num + game.players.length;
|
||||||
|
},
|
||||||
|
aiUseful(player, card, num) {
|
||||||
|
if (get.name(card, player) === 'shan') {
|
||||||
|
if (player.countCards('hs', i => {
|
||||||
|
if (card === i || card.cards && card.cards.includes(i)) return false;
|
||||||
|
return get.name(i, player) === 'shan';
|
||||||
|
})) return -1;
|
||||||
|
return num / Math.pow(Math.max(1, player.hp), 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
trigger:{
|
trigger:{
|
||||||
player:"useCardToPlayered",
|
player:"useCardToPlayered",
|
||||||
},
|
},
|
||||||
|
locked: false,
|
||||||
frequent:true,
|
frequent:true,
|
||||||
filter:function (event,player){
|
filter:function (event,player){
|
||||||
if(get.type(event.card)=='equip') return false;
|
if(get.type(event.card)=='equip') return false;
|
||||||
|
@ -1506,7 +1543,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
presha:true,
|
presha:true,
|
||||||
pretao:true,
|
pretao:true,
|
||||||
threaten:1.8,
|
threaten:1.8,
|
||||||
},
|
effect: {
|
||||||
|
player(card, player, target) {
|
||||||
|
if (typeof card === 'object' && card.name !== 'shan' && get.type(card) !== 'equip' && !player.countCards('h', i => {
|
||||||
|
if (card === i || card.cards && card.cards.includes(i)) return false;
|
||||||
|
return get.type(i) === 'basic';
|
||||||
|
})) {
|
||||||
|
let targets = [], evt = _status.event.getParent('useCard');
|
||||||
|
targets.addArray(ui.selected.targets);
|
||||||
|
if (evt && evt.card == card) targets.addArray(evt.targets);
|
||||||
|
if (targets.length) return [1, targets.length];
|
||||||
|
if (get.tag(card, 'multitarget')) return [1, game.players.length - 1];
|
||||||
|
return [1, 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"xinfu_limu":{
|
"xinfu_limu":{
|
||||||
mod:{
|
mod:{
|
||||||
|
@ -1518,11 +1570,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
cardUsableTarget:function(card,player,target){
|
cardUsableTarget:function(card,player,target){
|
||||||
if(player.countCards('j')&&player.inRange(target)) return true;
|
if(player.countCards('j')&&player.inRange(target)) return true;
|
||||||
},
|
},
|
||||||
aiValue:function(player,card,num){
|
aiOrder(player, card, num) {
|
||||||
if(card.name=='zhangba') return 15;
|
if (get.type(card, 'delay') && player.canUse(card, player) && player.canAddJudge(card)) return 15;
|
||||||
if(player.getEquip('zhangba')&&player.countCards('hs')>1&&['shan','tao'].includes(card.name)) return 0;
|
}
|
||||||
if(card.name=='shan'||card.name=='tao') return num/2;
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
locked:false,
|
locked:false,
|
||||||
audio:2,
|
audio:2,
|
||||||
|
@ -1542,20 +1592,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
filterTarget:function (card,player,target){
|
filterTarget:function (card,player,target){
|
||||||
return player==target;
|
return player==target;
|
||||||
},
|
},
|
||||||
check:function(card){
|
check(card) {
|
||||||
var player = _status.event.player;
|
var player = _status.event.player;
|
||||||
if(!player.getEquip('zhangba')&&player.countCards('hs','sha')<2){
|
if (!player.getEquip('zhangba')) {
|
||||||
|
let damaged = player.maxHp - player.hp - 1;
|
||||||
if (player.countCards('h', function (cardx) {
|
if (player.countCards('h', function (cardx) {
|
||||||
return cardx!=card&&cardx.name=='shan';
|
if (cardx == card) return false;
|
||||||
|
if (cardx.name == 'tao') {
|
||||||
|
if (damaged < 1) return true;
|
||||||
|
damaged--;
|
||||||
|
}
|
||||||
|
return ['shan', 'jiu'].includes(cardx.name);
|
||||||
}) > 0) return 0;
|
}) > 0) return 0;
|
||||||
var damaged=player.maxHp-player.hp-1;
|
|
||||||
var ts=player.countCards('h',function(cardx){
|
|
||||||
return cardx!=card&&cardx.name=='tao';
|
|
||||||
});
|
|
||||||
if(ts>0&&ts>damaged) return 0;
|
|
||||||
}
|
}
|
||||||
if (card.name == 'shan') return 15;
|
if (card.name == 'shan') return 15;
|
||||||
if(card.name=='tao') return 10;
|
if (card.name == 'tao' || card.name == 'jiu') return 10;
|
||||||
return 9 - get.value(card);
|
return 9 - get.value(card);
|
||||||
},
|
},
|
||||||
onuse:function (links,player){
|
onuse:function (links,player){
|
||||||
|
@ -1565,9 +1616,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
ai:{
|
ai:{
|
||||||
result: {
|
result: {
|
||||||
target:1,
|
target(player, target) {
|
||||||
|
let res = lib.card.lebu.ai.result.target(player, target);
|
||||||
|
if (target.isDamaged()) return res + 2 * Math.abs(get.recoverEffect(target, player, target));
|
||||||
|
return res;
|
||||||
},
|
},
|
||||||
order:12,
|
ignoreStatus: true
|
||||||
|
},
|
||||||
|
order(item, player) {
|
||||||
|
if (player.hp > 1 && player.countCards('j')) return 0;
|
||||||
|
return 12;
|
||||||
|
},
|
||||||
|
effect: {
|
||||||
|
target(card, player, target) {
|
||||||
|
if (target.isPhaseUsing() && typeof card === 'object' && get.type(card, target) === 'delay' && !target.countCards('j')) {
|
||||||
|
let shas = target.getCards('hs', i => {
|
||||||
|
if (card === i || card.cards && card.cards.includes(i)) return false;
|
||||||
|
return get.name(i, target) === 'sha' && target.getUseValue(i) > 0;
|
||||||
|
}) - target.getCardUsable('sha');
|
||||||
|
if (shas > 0) return [1, 1.5 * shas];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue