Kuu-chan~

This commit is contained in:
Spmario233 2021-01-10 10:28:38 +08:00
parent cf366193c7
commit f63f3800e9
24 changed files with 169 additions and 189 deletions

View File

@ -583,7 +583,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
},
ai:{
save:true,
respondSha:true,
respondShan:true,
skillTagFilter:function(player,tag){
@ -593,13 +592,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){
switch(tag){
case 'respondSha':if(muniu.cards[i].name=='sha') return true;break;
case 'respondShan':if(muniu.cards[i].name=='shan') return true;break;
case 'save':{
if(muniu.cards[i].name=='tao'||muniu.cards[i].name=='spell_zhiliaoshui') return true;
if(player==_status.event.dying){
if(muniu.cards[i].name=='jiu'||muniu.cards[i].name=='tianxianjiu') return true;
}
break;
}
}
}
return false;

View File

@ -2013,8 +2013,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player:1,
},
save:true,
skillTagFilter:function(player){
return player.isDying();
skillTagFilter:function(player,tag,target){
return player==target;
},
},
},
@ -2087,12 +2087,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
result:0.5,
save:true,
skillTagFilter:function(player){
return !player.hasJudge('lebu')&&player.countCards('he',function(card){
return get.color(card)=='red'
});
},
},
},
misuzu_zhongxing:{
@ -2730,7 +2724,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
respondSha:true,
respondShan:true,
save:true,
skillTagFilter:function(player,tag){
if(player.hasSkill('shizuru_nianli_round')) return false;
var name;
@ -2762,7 +2755,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
hiddenCard:function(player,name){
return name=='wuxie'&&player.countCards('h',{suit:'spade'})>0&&!player.hasSkill('shizuru_nianli_round');
if(name=='wuxie') return player.countCards('h',function(card){
return _status.connectMode||get.suit(card)=='spade';
})>0&&!player.hasSkill('shizuru_nianli_round');
if(name=='tao') return player.countCards('h',{suit:'heart'})>0&&!player.hasSkill('shizuru_nianli_round');
return false;
},
group:'shizuru_nianli_clear',
subSkill:{
@ -3415,6 +3412,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.markAuto('ao_diegui',result.links);
game.log(result.links,'飞向了',player);
}
else event.finish();
'step 3'
game.delayx();
},
locked:false,
mod:{
@ -4619,6 +4619,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
inari_baiwei:{
enable:['chooseToUse','chooseToRespond'],
hiddenCard:function(player,name){
return name!='du'&&get.type(name)=='basic'&&player.countCards('he',{suit:'diamond'})>0;
},
filter:function(event,player){
if(event.type=='wuxie'||!player.countCards('he',{suit:'diamond'})) return false;
for(var i=0;i<lib.inpile.length;i++){
@ -4695,7 +4698,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
result:{
player:1,
},
save:true,
respondSha:true,
fireAttack:true,
skillTagFilter:function(player,tag){
@ -5915,8 +5917,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
order:10,
save:true,
skillTagFilter:function(player){
return player.isDying();
skillTagFilter:function(player,tag,target){
return player==target;
},
result:{
player:1,
@ -6217,10 +6219,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
usedu:true,
save:true,
skillTagFilter:function(player,tag){
if(tag=='save'&&(!player.isDying()||player.hasSkill('lucia_duqu_terra'))) return false;
},
},
subSkill:{terra:{sub:true}}
},

View File

@ -2590,7 +2590,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
maixie:true,
save:true,
respondSha:true,
respondShan:true,
effect:{
@ -2621,7 +2620,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return Math.max(1,_status.event.player.hp);
},
viewAs:{name:'tao'},
filter:function(event,player){
viewAsFilter:function(player){
return player.countCards('he',{suit:'heart'})>=player.hp;
},
filterCard:function(card){
@ -2643,7 +2642,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return Math.max(1,_status.event.player.hp);
},
viewAs:{name:'sha',nature:'fire'},
filter:function(event,player){
viewAsFilter:function(player){
return player.countCards('he',{suit:'diamond'})>=player.hp;
},
filterCard:function(card){
@ -2798,8 +2797,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
respondSha:true,
respondShan:true,
save:true,
//让系统知道角色“有杀”“有闪”“有桃”
//让系统知道角色“有杀”“有闪”
skillTagFilter:function(player,tag){
var name;
switch(tag){
@ -2830,9 +2828,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return 2;
},
},
//让系统知道玩家“有无懈”
//让系统知道玩家“有无懈”“有桃”
hiddenCard:function(player,name){
return name=='wuxie'&&player.countCards('he',{suit:'spade'})>0;
if(name=='wuxie'&&_status.connectMode&&player.countCards('h')>0) return true;
if(name=='wuxie') return player.countCards('he',{suit:'spade'})>0;
if(name=='tao') return player.countCards('he',{suit:'heart'})>0;
},
group:['xinlonghun_num','xinlonghun_discard'],
},
@ -2855,7 +2855,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
},
save:true,
respondSha:true,
respondShan:true,
threaten:1.8

View File

@ -1033,8 +1033,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
save:true,
skillTagFilter:function(player){
return player.hp<=0;
skillTagFilter:function(player,arg,target){
return player==target;
},
result:{
player:10
@ -3972,6 +3972,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
onremove:function(p,s){
delete p.storage[s+1];
},
hiddenCard:function(player,name){
return ['sha','tao','jiu'].contains(name)&&player.countCards('h',{type:'basic'})>0;
},
enable:"chooseToUse",
filter:function(event,player){
if(event.filterCard({name:'sha'},player,event)||
@ -4046,7 +4049,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
return 3.1;
},
save:true,
respondSha:true,
skillTagFilter:function(player,tag,arg){
if(player.hasCard(function(card){
@ -4787,6 +4789,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:"已发动过#次",
},
enable:["chooseToUse","chooseToRespond"],
hiddenCard:function(player,name){
if(!['sha','shan','tao','jiu'].contains(name)) return false;
if(!player.storage.yizan&&player.countCards('he')<2) return false;
return player.hasCard(function(card){
return get.type(card)=='basic';
},'h');
},
filter:function(event,player){
if(!player.storage.yizan&&player.countCards('he')<2) return false;
if(event.filterCard({name:'sha'},player,event)||
@ -4881,7 +4890,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
return 3.1;
},
save:true,
skillTagFilter:function(player,tag,arg){
if(tag=='fireAttack') return true;
if(!player.storage.yizan&&player.countCards('he')<2) return false;
@ -4992,9 +5000,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
order:0.5,
skillTagFilter:function(player){
if(player.hp>0) return false;
skillTagFilter:function(player,arg,target){
if(player!=target) return false;
return player.countCards('he',function(card){
if(_status.connectMode&&get.position(card)=='h') return true;
return get.subtype(card)=='equip2';
})>0;
},
@ -6137,7 +6146,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return false;
},
ai:{
save:true,
respondSha:true,
respondShan:true,
skillTagFilter:function(player,tag){
@ -6146,13 +6154,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
switch(tag){
case 'respondSha':if(gnjinfan[i].name=='sha') return true;break;
case 'respondShan':if(gnjinfan[i].name=='shan') return true;break;
case 'save':{
if(gnjinfan[i].name=='tao'||gnjinfan[i].name=='spell_zhiliaoshui') return true;
if(player==_status.event.dying){
if(gnjinfan[i].name=='jiu'||gnjinfan[i].name=='tianxianjiu') return true;
}
break;
}
}
}
return false;

View File

@ -727,11 +727,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
group:'decadechunlao2',
ai:{
save:true,
jiuOther:true,
skillTagFilter:function(player,tag){
if(tag=='save') return !player.isLinked();
},
},
},
decadechunlao2:{
@ -1500,6 +1496,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ollongdan:{
audio:'longdan_sha',
audioname:['re_zhaoyun'],
hiddenCard:function(player,name){
if(name=='tao') return player.countCards('h','jiu')>0;
if(name=='jiu') return player.countCards('h','tao')>0;
return false;
},
enable:['chooseToUse','chooseToRespond'],
prompt:'将杀当做闪,或将闪当做杀,或将桃当做酒,或将酒当做桃使用或打出',
viewAs:function(cards,player){
@ -1556,13 +1557,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
respondSha:true,
respondShan:true,
save:true,
skillTagFilter:function(player,tag){
var name;
switch(tag){
case 'respondSha':name='shan';break;
case 'respondShan':name='sha';break;
case 'save':name='jiu';break;
}
if(!player.countCards('h',name)) return false;
},
@ -2259,6 +2258,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
rejiushi1:{
hiddenCard:function(player,name){
if(name=='jiu') return !player.isTurnedOver();
return false;
},
audio:'rejiushi',
enable:'chooseToUse',
filter:function(event,player){
@ -2274,10 +2277,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.useCard({name:'jiu',isCard:true},player);
},
ai:{
save:true,
skillTagFilter:function(player){
return player.hp<=0&&!player.isTurnedOver();
},
order:5,
result:{
player:function(player){
@ -2549,9 +2548,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
order:1,
skillTagFilter:function(player){
if(player.storage.olniepan) return false;
if(player.hp>0) return false;
skillTagFilter:function(player,tag,target){
if(player!=target||player.storage.olniepan) return false;
},
save:true,
result:{
@ -3725,6 +3723,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
derivation:'rechanyuan',
enable:['chooseToUse','chooseToRespond'],
hiddenCard:function(player,name){
return (lib.inpile.contains(name)&&player.countCards('h')>0&&!player.hasSkill('reguhuo_phase'));
},
filter:function(event,player){
if(!player.countCards('h')||player.hasSkill('reguhuo_phase')) return false;
for(var i of lib.inpile){
@ -3804,7 +3805,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
fireAttack:true,
save:true,
respondShan:true,
respondSha:true,
skillTagFilter:function(player){
@ -7121,8 +7121,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
position:'he',
filterCard:{suit:'diamond'},
filterTarget:function(card,player,target){
if(player==target) return false;
if(target.hasJudge('lebu')) return true;
if(player==target) return false;
return lib.filter.targetEnabled({name:'lebu'},player,target);
},
check:function(card){
@ -7723,11 +7723,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return -1;
},
ai:{
skillTagFilter:function(player){
return player.countCards('h',{suit:'spade'})>0&&player.hp<=0;
},
threaten:1.5,
save:true,
},
trigger:{source:'damageEnd'},
locked:true,

View File

@ -4701,15 +4701,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
prompt:'将一张黑桃手牌当酒使用',
check:function(card){
if(_status.event.type=='dying') return 1;
if(_status.event.type=='dying') return 1/Math.max(0.1,get.value(card));
return 4-get.value(card);
},
ai:{
skillTagFilter:function(player){
return player.countCards('h',{suit:'spade'})>0&&player.hp<=0;
},
threaten:1.5,
save:true,
}
},
roulin:{
@ -5089,9 +5085,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
order:0.5,
skillTagFilter:function(player){
if(player.storage.niepan) return false;
if(player.hp>0) return false;
skillTagFilter:function(player,tag,target){
if(player!=target||player.storage.niepan) return false;
},
save:true,
result:{
@ -5147,9 +5142,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
order:1,
skillTagFilter:function(player){
if(player.storage.oldniepan) return false;
if(player.hp>0) return false;
skillTagFilter:function(player,arg,target){
if(player!=target||player.storage.oldniepan) return false;
},
save:true,
result:{
@ -6467,8 +6461,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
save:true,
mingzhi:true,
skillTagFilter:function(player){
if(player.hp>0) return false;
skillTagFilter:function(player,tag,target){
if(player!=target) return false;
},
},
intro:{

View File

@ -20,7 +20,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_zhangliao:['male','qun',4,['mubing','ziqu','diaoling']],
caoshuang:['male','wei',4,['retuogu','shanzhuan']],
ol_zhangchangpu:['female','wei',3,['yanjiao','olxingshen']],
zhangling:['male','qun',4,['zlhuji','zlshoufu']],
zhangling:['male','qun',3,['zlhuji','zlshoufu']],
caiyang:['male','qun',1,['yinka'],['forbidai','unseen']],
panfeng:['male','qun',4,['kuangfu']],
sunshao:['male','wu',3,['bizheng','yidian']],
@ -715,7 +715,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
};
player.judge(func);
'step 1'
if(result.bool&&get.itemtype(trigger.source)=='player'&&player.canUse('sha',trigger.source,false)){
if(result.color=='red'&&get.itemtype(trigger.source)=='player'&&player.canUse('sha',trigger.source,false)){
player.useCard({name:'sha',isCard:true},trigger.source,false,'noai');
}
},
@ -5324,6 +5324,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
fanghun:{
hiddenCard:function(player,name){
if(!player.storage.fanghun||player.storage.fanghun<=0) return false;
if(name=='tao') return player.countCards('h','jiu')>0;
if(name=='jiu') return player.countCards('h','tao')>0;
return false;
},
audio:2,
marktext:'影',
intro:{
@ -5403,7 +5409,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return false;
},
filter:function(event,player){
if(!player.storage.fanghun||player.storage.fanghun<0) return false;
if(!player.storage.fanghun||player.storage.fanghun<=0) return false;
var filter=event.filterCard;
if(filter({name:'sha'},player,event)&&player.countCards('h','shan')) return true;
if(filter({name:'shan'},player,event)&&player.countCards('h','sha')) return true;
@ -5418,14 +5424,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
respondSha:true,
respondShan:true,
save:true,
skillTagFilter:function(player,tag){
if(!player.storage.fanghun||player.storage.fanghun<0) return false;
var name;
switch(tag){
case 'respondSha':name='shan';break;
case 'respondShan':name='sha';break;
case 'save':name='jiu';break;
}
if(!player.countCards('h',name)) return false;
},
@ -8909,7 +8913,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterCard:true,
position:'he',
ai:{
save:true,
skillTagFilter:function(){
return lib.skill.xisheng.viewAsFilter.apply(this,arguments)
},
@ -9142,12 +9145,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
ai:{
skillTagFilter:function(player){
return !player.hasSkill('chenqing2');
},
expose:0.2,
threaten:1.5,
save:true,
}
},
mozhi:{
@ -12178,6 +12177,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
aocai:{
audio:2,
enable:['chooseToUse','chooseToRespond'],
hiddenCard:function(player,name){
if(player!=_status.currentPhase&&get.type(name)=='basic'&&lib.inpile.contains(name)) return true;
},
filter:function(event,player){
if(event.responded||player==_status.currentPhase||event.aocai) return false;
for(var i of lib.inpile){
@ -12241,7 +12243,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
order:11,
respondShan:true,
respondSha:true,
save:true,
result:{
player:function(player){
if(_status.event.dying) return get.attitude(player,_status.event.dying);
@ -14476,13 +14477,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
precontent:function(){
player.removeMark('xinfu_falu_club');
},
ai:{
skillTagFilter:function(player){
if(player==_status.currentPhase) return false;
return player.hasMark('xinfu_falu_club')&&player.countCards('h')>0;
},
save:true,
},
},
zhenyi_heart:{
trigger:{

View File

@ -443,9 +443,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.choosePlayerCard(target,'h',true);
'step 1'
player.showCards(result.cards);
var type=get.type2(result.cards[0]);
target.storage.choufa2=type;
target.addTempSkill('choufa2',{player:'phaseAfter'});
var type=get.type2(result.cards[0],target);
if(!target.storage.choufa2) target.storage.choufa2=[];
target.storage.choufa2.addArray(target.getCards('h',function(card){
return get.type2(card,target)!=type;
}));
if(target.storage.choufa2.length) target.addTempSkill('choufa2',{player:'phaseAfter'});
},
ai:{
order:9,
@ -457,20 +460,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
choufa2:{
mark:true,
onremove:true,
charlotte:true,
intro:{
content:'不为$牌的手牌均视为杀',
},
mod:{
cardname:function(card,player){
if(get.type2(card,false)!=player.storage.choufa2) return 'sha';
if(player.storage.choufa2.contains(card)) return 'sha';
},
cardnature:function(card,player){
if(get.type2(card,false)!=player.storage.choufa2) return false;
if(player.storage.choufa2.contains(card)) return false;
},
},
trigger:{player:'loseEnd'},
silent:true,
content:function(){
player.storage.choufa2.removeArray(trigger.hs);
if(!player.storage.choufa2.length) player.removeSkill('choufa2');
},
},
zhaoran:{
audio:2,
@ -677,7 +682,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var list=ui.selected.cards.map(function(i){
return get.type2(i);
});
if(!list.contains(get.type2(i))) return 6-get.value(card);
if(!list.contains(get.type2(card))) return 7-get.value(card);
return -get.value(card);
});
'step 2'
@ -8504,7 +8509,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhanghuyuechen:'张虎乐綝',
xijue:'袭爵',
xijue_gain:'袭爵',
xijue_info:'锁定技游戏开始时你获得4枚“爵”。回合结束时若你于本回合内造成过2点以上的伤害或杀死过角色,则你获得一枚“爵”。你可弃置一枚“爵”并在合适的时机发动〖突袭〗和〖骁果〗。',
xijue_info:'锁定技游戏开始时你获得4枚“爵”。回合结束时若你于本回合内造成过的伤害点数总和大于1于本回合内杀死过角色,则你获得一枚“爵”。你可弃置一枚“爵”并在合适的时机发动〖突袭〗和〖骁果〗。',
xijue_tuxi:'突袭',
xijue_xiaoguo:'骁果',
duyu:'杜预',
@ -8526,7 +8531,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tuishi_info:'隐匿技你于其他角色A的回合内登场时可于此回合结束时选择其攻击范围内的一名角色B。A选择一项①对B使用一张【杀】。②你对A造成1点伤害。',
choufa:'筹伐',
choufa2:'筹伐',
choufa_info:'出牌阶段限一次,你可展示一名其他角色的一张手牌并记录此牌的类型A。其手牌中原类型不为A的手牌的牌名均视为【杀】且均视为无属性,直到其回合结束。',
choufa_info:'出牌阶段限一次,你可展示一名其他角色的一张手牌。你令其手牌中原类型与此牌不同的手牌的牌名均视为【杀】且均视为无属性,直到其回合结束。',
zhaoran:'昭然',
zhaoran2:'昭然',
zhaoran_info:'出牌阶段开始时,你可令你的手牌对其他角色可见直到出牌阶段结束。若如此做,当你于此阶段内失去一张手牌后,若你的手牌里没有与此牌花色相同的牌且你本回合内未因该花色的牌触发过此效果,则你选择一项:①摸一张牌。②弃置一名其他角色的一张牌。',
@ -8547,13 +8552,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
taoyin_info:'隐匿技,当你登场后,若当前回合角色存在且不是你,则你可令该角色本回合的手牌上限-2。',
yimie:'夷灭',
yimie2:'夷灭',
yimie_info:'每回合限一次当你对其他角色造成伤害时若伤害值X小于Y则你可失去1点体力将伤害值改为Y。此伤害结算结束后其回复(Y-X)点体力。',
yimie_info:'每回合限一次当你对其他角色造成伤害时若伤害值X小于Y则你可失去1点体力将伤害值改为Y。此伤害结算结束后其回复(Y-X)点体力。Y为其体力值',
ruilve:'睿略',
ruilve2:'睿略',
ruilve_info:'主公技,其他晋势力角色的出牌阶段限一次,该角色可以将一张带有伤害标签的基本牌或锦囊牌交给你。',
tairan:'泰然',
tairan2:'泰然',
tairan_info:'锁定技,回合结束时,你将体力回复至X并将手牌摸至X张。出牌阶段开始时你失去上次以此法回复的体力值弃置上次以此法获得的牌。X为你的体力上限且至多为5',
tairan_info:'锁定技,回合结束时,你回复Y点体力并将手牌摸至X张。出牌阶段开始时你失去Y点体力弃置上次以此法获得的牌。X为你的体力上限且至多为5Y=X-你的体力值',
sp_yingbian:'应变篇',
sp_whlw:"文和乱武",

View File

@ -2355,8 +2355,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
audioname:['re_huatuo'],
enable:'chooseToUse',
filter:function(event,player){
return _status.currentPhase!=player;
viewAsFilter:function(player){
return player!=_status.currentPhase&&player.countCards('h',{color:'red'})>0;
},
filterCard:function(card){
return get.color(card)=='red';
@ -2366,12 +2366,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
prompt:'将一张红色牌当桃使用',
check:function(card){return 15-get.value(card)},
ai:{
skillTagFilter:function(player){
return player.countCards('he',{color:'red'})>0&&_status.currentPhase!=player;
},
threaten:1.5,
save:true,
respondTao:true,
}
},
wushuang:{

View File

@ -910,8 +910,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
save:true,
skillTagFilter:function(player){
return player.hp<=0&&player.storage.xinfuli!=true;
skillTagFilter:function(player,arg,target){
return player==target;
},
result:{
player:10
@ -3765,6 +3765,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event,player){
return event.type!='wuxie'&&event.type!='respondShan'&&!player.hasSkill('taoluan3')&&player.countCards('he')>0;//&&!_status.dying.length;
},
hiddenCard:function(player,name){
return (!player.storage.taoluan.contains(name)&&player.countCards('he')>0&&!player.hasSkill('taoluan3')&&lib.inpile.contains(name));
},
init:function(player){
if(!player.storage.taoluan) player.storage.taoluan=[];
},
@ -3820,7 +3823,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
ai:{
save:true,
skillTagFilter:function(player){
if(!player.countCards('he')||player.hasSkill('taoluan3')) return false;
if(!player.storage.taoluan.contains('tao')){}
@ -6315,7 +6317,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.discard(cards);
event.num=cards.length;
'step 3'
player.chooseTarget('请选择至多'+get.cnNumber(event.num)+'名有牌的其他角色,获得这些角色的各一张牌。',[1,event.num],function(card,player,target){
player.chooseTarget('请选择至多'+get.cnNumber(event.num)+'名有牌的其他角色,获得这些角色的各一张牌。',[1,event.num],function(card,player,target){
return target!=player&&target.countCards('he')>0;
}).set('ai',function(target){
return -get.attitude(_status.event.player,target)+0.5;
@ -7134,6 +7136,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
huomo_use:{
enable:'chooseToUse',
hiddenCard:function(player,name){
return (['sha','shan','tao','jiu'].contains(name)&&(!player.storage.huomo||!player.storage.huomo[name])&&player.hasCard(function(card){
return get.color(card)=='black'&&get.type(card)!='basic';
},'he'));
},
filter:function(event,player){
if(!player.storage.huomo) player.storage.huomo={};
if((!player.storage.huomo.sha&&event.filterCard({name:'sha'},player,event))||
@ -7234,7 +7241,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
return 2.9;
},
save:true,
respondSha:true,
fireAttack:true,
respondShan:true,
@ -8214,8 +8220,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
save:true,
skillTagFilter:function(player){
return player.hp<=0&&player.storage.fuli!=true;
skillTagFilter:function(player,arg,target){
return player==target&&player.storage.fuli!=true;
},
result:{
player:10
@ -10486,6 +10492,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
jiushi1:{
audio:2,
enable:'chooseToUse',
hiddenCard:function(player,name){
if(name=='jiu') return !player.isTurnedOver();
return false;
},
filter:function(event,player){
if(player.classList.contains('turnedover')) return false;
return event.filterCard({name:'jiu',isCard:true},player,event);
@ -10499,10 +10509,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.useCard({name:'jiu',isCard:true},player);
},
ai:{
save:true,
skillTagFilter:function(player){
return player.hp<=0&&!player.isTurnedOver();
},
order:5,
result:{
player:function(player){

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.108.2',
'v1.9.108.2.1',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -5519,19 +5519,19 @@ window.noname_skin_list={
key_hinata:1,
key_iwasawa:2,
key_nao:4,
key_shiki:6,
key_shiki:7,
key_yui:2,
key_yuri:5,
key_yuzuru:2,
sp_key_kanade:9,
key_kamome:5,
key_kamome:8,
key_umi:5,
key_umi2:1,
key_mio:3,
key_midori:1,
key_akane:1,
key_kagari:1,
key_kud:2,
key_kud:5,
key_misuzu:1,
key_nagisa:1,
key_rin:3,
@ -5542,4 +5542,5 @@ window.noname_skin_list={
key_shiina:1,
key_hiroto:1,
key_komari:1,
key_saya:4,
};

View File

@ -15863,6 +15863,16 @@
},
player:{
//新函数
canSave:function(target){
var player=this;
if(player.hasSkillTag('save',true,target,true)) return true;
for(var i in lib.card){
if(lib.inpile.contains(i)||player.countCards('h',i)){
if(lib.filter.cardSavable({name:i},player,target)&&(_status.connectMode||player.hasUsableCard(i))) return true;
}
}
return false;
},
showCharacter:function(num,log){
var toShow=[];
if((num==0||num==2)&&this.isUnseen(0)) toShow.add(this.name1);
@ -24775,6 +24785,15 @@
filterButton:function(button){
return true;
},
cardSavable:function(card,player,target){
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,target,'unchanged','cardSavable',player);
if(mod!='unchanged') return mod;
var savable=get.info(card).savable;
if(typeof savable=='function') savable=savable(card,player,target);
return savable;
},
filterTrigger:function(event,player,name,skill){
if(player._hookTrigger){
for(var i=0;i<player._hookTrigger.length;i++){
@ -25795,7 +25814,7 @@
}
},
_save:{
trigger:{source:'dying2',player:'dying2'},
//trigger:{source:'dying2',player:'dying2'},
priority:5,
forced:true,
popup:false,
@ -25820,21 +25839,11 @@
if(lib.config.tao_enemy&&event.dying.side!=player.side&&lib.config.mode!='identity'&&lib.config.mode!='guozhan'&&!event.dying.hasSkillTag('revertsave')){
event._result={bool:false}
}
else if(player.isOnline()||(_status.connectMode&&player==game.me)||player.hasSkillTag('save',true,null,true)||player.hasCard(function(card){
var savable=get.info(card).savable;
if(typeof savable=='function') savable=savable(card,player,event.dying);
return savable;
})){
else if(player.canSave(event.dying)){
player.chooseToUse({
filterCard:function(card,player,event){
event=event||_status.event;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,event.dying,'unchanged','cardSavable',player);
if(mod!='unchanged') return mod;
var savable=get.info(card).savable;
if(typeof savable=='function') savable=savable(card,player,event.dying);
return savable;
return lib.filter.cardSavable(card,player,event.dying);
},
filterTarget:trigger.player,
prompt:str,

View File

@ -1,13 +1,11 @@
window.noname_update={
version:'1.9.108.2',
update:'1.9.108.1',
version:'1.9.108.2.1',
update:'1.9.108.2',
changeLog:[
'晋司马昭、王元姬、司马师、夏侯徽、杜预、张虎乐綝',
'张道陵',
'bug修复',
],
files:[
//'card/extra.js',
'card/extra.js',
//'card/gujian.js',
//'card/guozhan.js',
//'card/gwent.js',
@ -20,16 +18,16 @@ window.noname_update={
//'card/yingbian.js',
//'card/zhenfa.js',
//'card/zhulu.js',
//'character/diy.js',
'character/diy.js',
'character/extra.js',
//'character/hearth.js',
//'character/gujian.js',
//'character/gwent.js',
//'character/hearth.js',
//'character/mobile.js',
'character/mobile.js',
//'character/mtg.js',
//'character/old.js',
'character/rank.js',
//'character/rank.js',
'character/refresh.js',
'character/shenhua.js',
'character/sp.js',
@ -39,15 +37,15 @@ window.noname_update={
//'character/swd.js',
//'character/xianjian.js',
//'character/xinghuoliaoyuan.js',
//'character/yijiang.js',
'character/yijiang.js',
//'character/yxs.js',
//'extension/boss/extension.js',
//'layout/default/layout.css',
'layout/default/menu.css',
//'layout/default/menu.css',
//'layout/nova/layout.css',
'mode/identity.js',
//'mode/identity.js',
//'mode/doudizhu.js',
//'mode/guozhan.js',
'mode/guozhan.js',
//'mode/chess.js',
//'mode/tafang.js',
//'mode/single.js',

BIN
image/skin/key_kamome/7.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

BIN
image/skin/key_kamome/8.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

BIN
image/skin/key_kud/3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
image/skin/key_kud/4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
image/skin/key_kud/5.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
image/skin/key_saya/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

BIN
image/skin/key_saya/2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

BIN
image/skin/key_saya/3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

BIN
image/skin/key_saya/4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
image/skin/key_shiki/7.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

View File

@ -428,14 +428,19 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
skill:{
yigui:{
init:function (player,skill){
hiddenCard:function(player,name){
var storage=player.storage.yigui;
if(!storage||!storage.character.length||storage.used.contains(name)||!lib.inpile.contains(name)) return false;
return true;
},
init:function(player,skill){
if(!player.storage.skill) player.storage[skill]={
character:[],
used:[],
}
},
enable:"chooseToUse",
filter:function (event,player){
filter:function(event,player){
if(event.type=='wuxie'||event.type=='respondShan') return false;
var storage=player.storage.yigui;
if(!storage||!storage.character.length) return false;
@ -457,22 +462,21 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
dialog:function (event,player){
var dialog=ui.create.dialog('役鬼','hidden');
dialog.add([player.storage.yigui.character,'character']);
var list=[
'sha','tao','jiu',
'taoyuan','wugu','juedou','huogong','jiedao','tiesuo','guohe','shunshou','wuzhong','wanjian','nanman',
'xietianzi','shuiyanqijunx','lulitongxin','lianjunshengyan','chiling','diaohulishan','yuanjiao','huoshaolianying','zhibi','yiyi'
];
var list=lib.inpile;
var list2=[];
for(var i=0;i<list.length;i++){
if(i==0){
var name=list[i];
if(name=='shan'||name=='wuxie') continue;
var type=get.type(name);
if(name=='sha'){
list2.push(['基本','','sha']);
list2.push(['基本','','sha','fire']);
list2.push(['基本','','sha','thunder']);
}
else if(i<3){
else if(type=='basic'){
list2.push(['基本','',list[i]]);
}
else{
else if(type=='trick'){
list2.push(['锦囊','',list[i]]);
}
}
@ -614,7 +618,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
group:["yigui_init","yigui_refrain","yigui_shan","yigui_wuxie"],
ai:{
save:true,
order:function(){
return 1+10*Math.random();
},
@ -744,11 +747,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
},
yigui_wuxie:{
hiddenCard:function(player,name){
var storage=player.storage.yigui;
if(!storage||!storage.character.length||storage.used.contains('wuxie')) return false;
return name=='wuxie';
},
enable:"chooseToUse",
filter:function (event,player){
if(event.type!='wuxie') return false;
@ -3657,6 +3655,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
filter:function(event,player){
return event.type!='phase'&&player.hasMark('zhulianbihe_skill');
},
viewAsFilter:function(player){
return player.hasMark('zhulianbihe_skill');
},
viewAs:{
name:"tao",
isCard:true,
@ -3666,12 +3667,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
precontent:function(){
player.removeMark('zhulianbihe_skill',1);
},
ai:{
save:true,
skillTagFilter:function(player){
if(!player.hasMark('zhulianbihe_skill')) return false;
},
},
},
"_yinyang_skill_draw":{
ruleSkill:true,
@ -4377,14 +4372,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
chooseButton:{
dialog:function(){
var list=[
'taoyuan','wugu','juedou','huogong','jiedao','tiesuo','guohe','shunshou','wuzhong','wanjian','nanman',
'xietianzi','shuiyanqijunx','lulitongxin','lianjunshengyan','chiling','diaohulishan','yuanjiao','huoshaolianying','zhibi','yiyi',
];
var list=lib.inpile;
var list2=[];
for(var i=0;i<list.length;i++){
list[i]=['锦囊','',list[i]];
if(list[i]!='wuxie'&&get.type(list[i])=='trick') list2.push(['锦囊','',list[i]]);
}
return ui.create.dialog(get.translation('gzqice'),[list,'vcard']);
return ui.create.dialog(get.translation('gzqice'),[list2,'vcard']);
},
filter:function(button,player){
var card={name:button.link[2]};
@ -5425,9 +5418,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
ai:{
order:1,
skillTagFilter:function(player){
if(player.storage.jizhao) return false;
if(player.hp>0) return false;
skillTagFilter:function(player,arg,target){
if(player!=target||player.storage.jizhao) return false;
},
save:true,
result:{