This commit is contained in:
Spmario233 2021-05-18 15:57:26 +08:00
parent 123b37a482
commit 2fc20a7997
37 changed files with 1228 additions and 997 deletions

BIN
audio/die/nanhualaoxian.mp3 Normal file

Binary file not shown.

BIN
audio/die/simazhou.mp3 Normal file

Binary file not shown.

BIN
audio/skill/caiwang1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/caiwang2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/naxiang1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/naxiang2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/tianshu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/tianshu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/yufeng1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/yufeng2.mp3 Normal file

Binary file not shown.

View File

@ -10,24 +10,31 @@ game.import('card',function(lib,game,ui,get,ai,_status){
subtype:'equip5',
nomod:true,
onEquip:function(){
player.markSkill('muniu_skill6');
if(card&&card.cards&&card.cards.length){
player.directgains(card.cards,null,'muniu');
}
player.markSkill('muniu_skill');
},
forceDie:true,
onLose:function(){
player.unmarkSkill('muniu_skill6');
player.unmarkSkill('muniu_skill');
delete player.getStat('skill').muniu_skill;
if((event.getParent(2)&&event.getParent(2).name!='swapEquip')&&event.parent.type!='equip'&&card&&card.cards&&card.cards.length){
if(!card||!card.cards||!card.cards.length) return;
if((event.getParent(2)&&event.getParent(2).name!='swapEquip')&&event.parent.type!='equip'){
player.lose(card.cards,ui.discardPile);
player.$throw(card.cards,1000);
player.popup('muniu');
game.log(card,'掉落了',card.cards);
game.cardsDiscard(card.cards);
card.cards.length=0;
}
else{
player.lose(card.cards,ui.special);
}
},
clearLose:true,
equipDelay:false,
loseDelay:false,
skills:['muniu_skill','muniu_skill4','muniu_skill6','muniu_skill7'],
skills:['muniu_skill','muniu_skill7'],
ai:{
equipValue:function(card){
if(card.card) return 7+card.card.length;
@ -507,8 +514,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return 10-get.useful(card);
},
discard:false,
lose:true,
toStorage:true,
lose:false,
delay:false,
sync:function(muniu){
if(game.online){
return;
@ -517,7 +524,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
muniu.cards=[];
}
for(var i=0;i<muniu.cards.length;i++){
if(!muniu.cards[i].parentNode||muniu.cards[i].parentNode.id!='special'){
if(get.position(muniu.cards[i])!='s'){
muniu.cards.splice(i--,1);
}
}
@ -533,11 +540,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
content:function(){
"step 0"
player.loseToSpecial(cards,'muniu');
"step 1"
for(var i=0;i<cards.length;i++){
if(!cards[i].destroyed){
ui.special.appendChild(cards[i]);
}
else{
if(cards[i].destroyed||!cards[i].hasGaintag('muniu')||get.position(cards[i])!='s'){
cards[i].remove();
cards.splice(i--,1);
}
@ -555,6 +561,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
game.broadcast(function(muniu,cards){
muniu.cards=cards;
},muniu,muniu.cards);
game.delayx();
"step 2"
var players=game.filterPlayer(function(current){
if(!current.getEquip(5)&&current!=player&&!current.isTurnedOver()&&
get.attitude(player,current)>=3&&get.attitude(current,player)>=3){
@ -570,7 +578,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return target==_status.event.choice?1:-1;
});
next.set('choice',choice);
"step 1"
"step 3"
if(result.bool){
var card=player.getEquip(5);
result.targets[0].equip(card);
@ -583,146 +591,23 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
},
ai:{
respondSha:true,
respondShan:true,
skillTagFilter:function(player,tag){
var muniu=player.getEquip(5);
if(!muniu||!muniu.cards) return false;
for(var i=0;i<muniu.cards.length;i++){
switch(tag){
case 'respondSha':if(muniu.cards[i].name=='sha') return true;break;
case 'respondShan':if(muniu.cards[i].name=='shan') return true;break;
}
}
return false;
},
order:1,
expose:0.1,
result:{
player:1
}
}
},
muniu_skill2:{
group:['muniu_skill3','muniu_skill4']
},
muniu_skill3:{
trigger:{player:'chooseToRespondBegin'},
cardSkill:true,
filter:function(event,player){
if(event.responded) return false;
var muniu=player.getEquip(5);
if(!muniu.cards) return false;
lib.skill.muniu_skill.sync(muniu);
for(var i=0;i<muniu.cards.length;i++){
if(event.filterCard(muniu.cards[i],player,event)&&lib.filter.cardRespondable(muniu.cards[i],player,event)) return true;
}
return false;
},
direct:true,
content:function(){
"step 0"
player.chooseButton(['木牛流马',player.getEquip(5).cards]).set('filterButton',function(button){
var evt=_status.event.getTrigger();
if(evt&&evt.filterCard){
return evt.filterCard(button.link,_status.event.player,evt)&&lib.filter.cardRespondable(button.link,_status.event.player,evt);
}
return true;
}).set('ai',function(button){
var evt=_status.event.getTrigger();
if(evt&&evt.ai){
var tmp=_status.event;
_status.event=evt;
var result=evt.ai(button.link,_status.event.player,evt);
_status.event=tmp;
return result;
}
return 1;
});
"step 1"
if(result.bool){
trigger.untrigger();
trigger.responded=true;
trigger.result={bool:true,card:result.links[0],cards:result.links.slice(0)};
}
},
ai:{
order:4,
useful:-1,
value:-1
}
},
muniu_skill4:{
enable:['chooseToUse','chooseToRespond'],
filter:function(event,player){
var muniu=player.getEquip(5);
if(!muniu.cards) return false;
lib.skill.muniu_skill.sync(muniu);
for(var i=0;i<muniu.cards.length;i++){
if(event.filterCard(muniu.cards[i],player,event)) return true;
}
return false;
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('木牛流马',player.getEquip(5).cards,'hidden');
},
filter:function(button,player){
var evt=_status.event.getParent();
if(evt&&evt.filterCard){
return evt.filterCard(button.link,player,evt);
}
return true;
},
check:function(button){
if(_status.event.getParent().type!='phase') return 1;
if(button.link.name=='du') return 10;
var player=_status.event.player;
if(player.getUseValue(button.link)>0) return get.order(button.link);
return -1;
},
backup:function(links,player){
return {
filterCard:function(){return false},
selectCard:-1,
position:'h',
viewAs:links[0],
precontent:function(){
delete event.result.skill;
},
};
},
prompt:function(links){
return '选择'+get.translation(links)+'的目标';
},
},
ai:{
order:function(item,player){
var event=_status.event;
if(event.type!='phase') return 4;
if(!player) return -1;
mod:{
cardEnabled2:function(card,player){
if(!ui.selected.cards.length) return;
var muniu=player.getEquip('muniu');
if(!muniu||!muniu.cards) return -1;
var order=0;
for(var i=0;i<muniu.cards.length;i++){
if(player.getUseValue(muniu.cards[i])>0){
var order2=get.order(muniu.cards[i]);
if(order2>order) order=order2
}
}
return order+0.1;
},
result:{
player:function(player){
if(_status.event.dying) return get.attitude(player,_status.event.dying);
return 1;
if(!muniu||!muniu.cards||!muniu.cards.length) return;
for(var i of ui.selected.cards){
if(i==muniu&&muniu.cards.contains(card)) return false;
if(muniu.cards.contains(i)&&card==muniu) return false;
}
},
useful:-1,
value:-1
}
},
muniu_skill6:{
},
mark:true,
intro:{
content:function(storage,player){
@ -753,29 +638,21 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
},
muniu_skill7:{
hiddenCard:function(player,name){
var muniu=player.getEquip(5);
if(!muniu.cards) return false;
lib.skill.muniu_skill.sync(muniu);
for(var i=0;i<muniu.cards.length;i++){
if(muniu.cards[i].name==name) return true;
}
return false;
},
trigger:{global:'cardsGotoOrderingEnd'},
silent:true,
trigger:{player:'loseEnd'},
firstDo:true,
silent:true,
filter:function(event,player){
if(!event.ss||!event.ss.length||event.parent.name=='lose_muniu') return false;
var muniu=player.getEquip('muniu');
if(!muniu||!muniu.cards) return false;
return event.cards&&event.cards.filter(function(card){
return event.ss.filter(function(card){
return muniu.cards.contains(card);
}).length>0;
},
content:function(){
var muniu=player.getEquip(5);
if(muniu&&muniu.cards){
muniu.cards.remove(trigger.cards);
muniu.cards.removeArray(trigger.ss);
lib.skill.muniu_skill.sync(muniu);
}
player.updateMarks();
@ -1073,12 +950,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
muniu:'木牛流马',
muniu_bg:'牛',
muniu_skill:'木牛',
muniu_skill2:'流马',
muniu_skill3:'流马',
muniu_skill4:'流马',
muniu_skill6:'木牛流马',
muniu_skill6_bg:'辎',
muniu_skill4_backup:'流马',
muniu_skill_bg:'辎',
muniu_info:'出牌阶段限一次,你可以将一张手牌扣置于你装备区里的【木牛流马】下,若如此做,你可以将此装备移动到一名其他角色的装备区里;你可以将此装备牌下的牌如手牌般使用或打出。',
muniu_skill_info:'出牌阶段限一次,你可以将一张手牌扣置于你装备区里的【木牛流马】下,若如此做,你可以将此装备移动到一名其他角色的装备区里;你可以将此装备牌下的牌如手牌般使用或打出。',
},

View File

@ -105,7 +105,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
taipingyaoshu:{
audio:true,
mode:['guozhan'],
fullskin:true,
type:'equip',
subtype:'equip2',
@ -1070,12 +1069,15 @@ game.import('card',function(lib,game,ui,get,ai,_status){
equipSkill:true,
mod:{
maxHandcard:function(player,num){
if(player.hasSkill('huangjintianbingfu')){
num+=player.storage.huangjintianbingfu.length;
if(get.mode()=='guozhan'){
if(player.hasSkill('huangjintianbingfu')){
num+=player.storage.huangjintianbingfu.length;
}
return num+game.countPlayer(function(current){
return current.isFriendOf(player);
});
}
return num+game.countPlayer(function(current){
return current.isFriendOf(player);
});
return num+game.countGroup();
}
},
trigger:{player:'damageBegin4'},
@ -1399,7 +1401,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
feilongduofeng3:'飞龙夺凤',
feilongduofeng_info:'当你使用【杀】指定一名角色为目标后,你可令该角色弃置一张牌。当你使用【杀】令其他角色进入濒死状态时,你可以获得其一张手牌。',
taipingyaoshu:'太平要术',
taipingyaoshu_info:'锁定技,防止你受到的所有属性伤害;全场每有一名与你势力相同的角色存活,你的手牌上限便+1当你失去装备区里的【太平要术】时你摸两张牌然后若你的体力值大于1你失去1点体力。',
taipingyaoshu_info:'锁定技,防止你受到的所有属性伤害;你的手牌上限+XX为势力数当你失去装备区里的【太平要术】时你摸两张牌然后若你的体力值大于1你失去1点体力。',
taipingyaoshu_info_guozhan:'锁定技,防止你受到的所有属性伤害;全场每有一名与你势力相同的角色存活,你的手牌上限便+1当你失去装备区里的【太平要术】时你摸两张牌然后若你的体力值大于1你失去1点体力。',
yuxi_skill:'玉玺',
yuxi_skill2:'玉玺',
yuxi:'玉玺',

View File

@ -449,8 +449,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterCard:true,
viewAs:{name:'shan'},
viewAsFilter:function(player){
if(!player.countCards('h')) return false;
if(!player.countCards('hs')) return false;
},
position:'hs',
prompt:'将一张手牌当闪使用或打出',
check:function(card){
return 6-get.value(card);
@ -458,11 +459,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
ai:{
respondShan:true,
skillTagFilter:function(player){
if(!player.countCards('h')) return false;
if(!player.countCards('hs')) return false;
},
effect:{
target:function(card,player,target,current){
if(get.tag(card,'respondShan')&&current<0&&target.countCards('h')) return 0.59
if(get.tag(card,'respondShan')&&current<0&&target.countCards('hs')) return 0.59
}
},
order:4,

View File

@ -1838,11 +1838,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
enable:['chooseToUse','chooseToRespond'],
filterCard:true,
selectCard:2,
position:'h',
position:'hs',
viewAs:{name:'sha'},
complexCard:true,
filter:function(event,player){
return player.countCards('h')>=2;
return player.countCards('hs')>=2;
},
audio:true,
prompt:'将两张手牌当杀使用或打出',
@ -1853,7 +1853,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
ai:{
respondSha:true,
skillTagFilter:function(player){
return player.countCards('h')>=2;
return player.countCards('hs')>=2;
},
}
},

View File

@ -3077,7 +3077,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
isCard:true,
},
viewAsFilter:function(player){
return !player.hasJudge('lebu')&&player.countCards('he',function(card){
return !player.hasJudge('lebu')&&player.countCards('hes',function(card){
return get.color(card)=='red'&&get.type(card,'trick')!='trick';
});
},
@ -3088,7 +3088,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return 7+(_status.event.dying||_status.event.player).getDamagedHp()-get.value(card);
},
ignoreMod:true,
position:'he',
position:'hes',
precontent:function(){
player.logSkill('misuzu_nongyin');
player.$throw(event.result.cards);
@ -3550,10 +3550,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
})>1?1:-1;
},
filter:function(event,player){
return player.countCards('h','tao')&&game.hasPlayer(function(current){
return player.countCards('hs','tao')&&game.hasPlayer(function(current){
return lib.skill.nao_shouqing2.filterTarget(null,player,current)
});
},
position:'hs',
onuse:function(links,player){
player.addSkill('nao_shouqing3');
player.addMark('nao_shouqing3',1,false);
@ -4122,9 +4123,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
viewAs:{name:'mapodoufu'},
filterCard:{suit:'heart'},
viewAsFilter:function(player){
return player.countCards('he',{suit:'heart'})>0;
return player.countCards('hes',{suit:'heart'})>0;
},
position:'he',
position:'hes',
mod:{
selectTarget:function(card,player,range){
if(card.name=='mapodoufu'&&range[1]!=-1) range[1]++;
@ -4806,7 +4807,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
hinata_qiulve:{
enable:['chooseToUse','chooseToRespond'],
viewAsFilter:function(player){
return player.countCards('he',function(card){
return player.countCards('hes',function(card){
return get.type(card)!='basic';
})>0;
},
@ -4815,7 +4816,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.type(card)!='basic';
},
locked:false,
position:'he',
position:'hes',
check:function(card){
var val=get.value(card);
if(val>=6) return 0;
@ -4831,7 +4832,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
respondSha:true,
skillTagFilter:function(player){
return player.countCards('he',function(card){
return player.countCards('hes',function(card){
return get.type(card)!='basic';
})>0;
},
@ -5640,10 +5641,10 @@ 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;
return name!='du'&&get.type(name)=='basic'&&player.countCards('hes',{suit:'diamond'})>0;
},
filter:function(event,player){
if(event.type=='wuxie'||!player.countCards('he',{suit:'diamond'})) return false;
if(event.type=='wuxie'||!player.countCards('hse',{suit:'diamond'})) return false;
for(var i=0;i<lib.inpile.length;i++){
var name=lib.inpile[i];
if(name!='du'&&name!='shan'&&get.type(name)=='basic'&&event.filterCard({name:name},player,event)) return true;
@ -5691,7 +5692,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(get.type(card)=='basic') return 6;
return 1/Math.max(0.1,get.value(card));
},
position:'he',
position:'hse',
viewAs:{name:links[0][2],nature:links[0][3]},
}
},
@ -5736,13 +5737,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
check:function(card){
return 1/Math.max(0.1,get.value(card));
},
position:'he',
position:'hse',
ai:{
order:10,
result:{player:1},
respondShan:true,
skillTagFilter:function(player){
return player.countCards('he',{suit:'diamond'})>0;
return player.countCards('hse',{suit:'diamond'})>0;
},
},
},
@ -6309,10 +6310,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:['chooseToUse','chooseToRespond'],
viewAs:{name:'shan'},
filterCard:true,
position:'he',
position:'hes',
prompt:'将一张牌当做闪使用或打出',
viewAsFilter:function(player){
return player.isDisabled(2)&&player.countCards('he')>0;
return player.isDisabled(2)&&player.countCards('hes')>0;
},
check:function(card){
return 1/Math.max(0.1,get.value(card));
@ -7383,7 +7384,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
noname_retieji:{
inherit:"retieji",
mark:true,
marktext:"<img style=width:21px src="+lib.assetURL+"/image/character/noname_machao.png>",
marktext:"<img style=width:21px src="+lib.assetURL+"image/character/noname_machao.png>",
intro:{
name:"小无·铁骑",
content:"你使用【杀】指定一名角色为目标后,可以进行一次判定并令该角色的非锁定技失效直到回合结束,除非该角色弃置一张与判定结果花色相同的牌,否则不能使用【闪】抵消此【杀】。",
@ -7392,7 +7393,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
noname_jiang:{
inherit:"jiang",
mark:true,
marktext:"<img style=width:21px src="+lib.assetURL+"/image/character/noname_sunce.png>",
marktext:"<img style=width:21px src="+lib.assetURL+"image/character/noname_sunce.png>",
intro:{
name:"小无·激昂",
content:"每当你使用(指定目标后)或被使用(成为目标后)一张【决斗】或红色的【杀】时,你可以摸一张牌。",
@ -7885,7 +7886,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'taoluan',
enable:'chooseToUse',
filter:function(event,player){
return event.type!='wuxie'&&event.type!='respondShan'&&!player.hasSkill('junktaoluan3')&&player.countCards('he',function(card){
return event.type!='wuxie'&&event.type!='respondShan'&&!player.hasSkill('junktaoluan3')&&player.countCards('hes',function(card){
return !player.storage.junktaoluan2.contains(get.suit(card));
})>0;
},
@ -7918,7 +7919,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
check:function(button){
var player=_status.event.player;
if(player.countCards('h',button.link[2])>0) return 0;
if(player.countCards('sh',button.link[2])>0) return 0;
if(button.link[2]=='wugu') return;
var effect=player.getUseValue(button.link[2]);
if(effect>0) return effect;
@ -7935,7 +7936,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
check:function(card){
return 6-get.value(card);
},
position:'he',
position:'hse',
viewAs:{name:links[0][2],nature:links[0][3]},
onuse:function(result,player){
player.storage.junktaoluan2.add(get.suit(result.cards[0],player));
@ -8032,7 +8033,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
prompt:'将一张牌当做闪使用',
enable:'chooseToUse',
filter:function(event,player){
return player.countCards('he',function(card){
return player.countCards('hes',function(card){
return !player.storage.junktaoluan2.contains(get.suit(card));
})&&!player.storage.junktaoluan.contains('shan')&&!player.hasSkill('junktaoluan3');
},
@ -8055,7 +8056,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterCard:function(card,player){
return !player.storage.junktaoluan2.contains(get.suit(card));
},
position:'he',
position:'hes',
selectCard:1,
viewAs:{name:'shan'},
check:function(card){
@ -8073,7 +8074,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
skillTagFilter:function(player){
return player.countCards('he')&&!player.storage.junktaoluan.contains('shan')&&!player.hasSkill('junktaoluan3');
return player.countCards('hse')&&!player.storage.junktaoluan.contains('shan')&&!player.hasSkill('junktaoluan3');
},
threaten:1.5,
respondShan:true,
@ -8084,12 +8085,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'chooseToUse',
prompt:'将一张牌当做无懈可击使用',
filter:function(event,player){
return player.countCards('he',function(card){
return player.countCards('hes',function(card){
return !player.storage.junktaoluan2.contains(get.suit(card));
})&&(!player.storage.junktaoluan.contains('wuxie'))&&!player.hasSkill('junktaoluan3');
},
viewAsFilter:function(player){
return player.countCards('he',function(card){
return player.countCards('hes',function(card){
return !player.storage.junktaoluan2.contains(get.suit(card));
})&&(!player.storage.junktaoluan.contains('wuxie'))&&!player.hasSkill('junktaoluan3');
},
@ -8112,7 +8113,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterCard:function(card,player){
return !player.storage.junktaoluan2.contains(get.suit(card));
},
position:'he',
position:'hse',
selectCard:1,
viewAs:{name:'wuxie'},
check:function(card){
@ -10715,13 +10716,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return player.hp<=0;
},
filterCard:{suit:'club'},
position:'he',
position:'hse',
viewAs:{name:'tao'},
prompt:'将一张梅花牌当桃使用',
check:function(card){return 15-get.value(card)},
ai:{
skillTagFilter:function(player){
return player.countCards('he',{suit:'club'})>0;
return player.countCards('hes',{suit:'club'})>0;
},
threaten:1.5,
save:true,
@ -10870,8 +10871,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event,player){
return player.hasCard(function(card){
return get.color(card)!=player.storage.nsduijue_use;
});
},'hs');
},
position:'hs',
filterCard:function(card,player){
return get.color(card)!=player.storage.nsduijue_use;
},
@ -10900,15 +10902,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterCard:true,
viewAs:{name:'sha'},
viewAsFilter:function(player){
if(!player.countCards('h')) return false;
if(!player.countCards('hs')) return false;
},
position:'hs',
prompt:'将一张手牌当杀打出',
check:function(card){return 7-get.value(card)},
ai:{
respondSha:true,
skillTagFilter:function(player,tag,arg){
if(arg!='respond') return false;
if(!player.countCards('h')) return false;
if(!player.countCards('hs')) return false;
},
}
},
@ -11736,8 +11739,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
viewAs:{name:'wugu'},
usable:1,
filterCard:{type:'basic'},
position:'hs',
filter:function(event,player){
return player.countCards('h',{type:'basic'})>0;
return player.countCards('hs',{type:'basic'})>0;
},
check:function(card){
return 6-get.value(card);
@ -12516,11 +12520,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterCard:function(card){
return get.type(card)!='basic';
},
position:'he',
position:'hse',
filter:function(event,player){
return player.hasCard(function(card){
return get.type(card)!='basic';
},'he');
},'hes');
},
viewAs:{name:'shuiyanqijun'},
prompt:'将一张非基本牌当水淹七军使用',

View File

@ -2679,7 +2679,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
prompt:function(){
return '将'+get.cnNumber(Math.max(1,_status.event.player.hp))+'张红桃牌当作桃使用';
},
position:'he',
position:'hes',
check:function(card,event){
if(_status.event.player.hp>1) return 0;
return 10-get.value(card);
@ -2689,7 +2689,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
viewAs:{name:'tao'},
viewAsFilter:function(player){
return player.countCards('he',{suit:'heart'})>=player.hp;
return player.countCards('hes',{suit:'heart'})>=player.hp;
},
filterCard:function(card){
return get.suit(card)=='heart';
@ -2701,7 +2701,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
prompt:function(){
return '将'+get.cnNumber(Math.max(1,_status.event.player.hp))+'张方片当作火杀使用或打出';
},
position:'he',
position:'hes',
check:function(card,event){
if(_status.event.player.hp>1) return 0;
return 10-get.value(card);
@ -2711,7 +2711,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
viewAs:{name:'sha',nature:'fire'},
viewAsFilter:function(player){
return player.countCards('he',{suit:'diamond'})>=player.hp;
return player.countCards('hes',{suit:'diamond'})>=player.hp;
},
filterCard:function(card){
return get.suit(card)=='diamond';
@ -2723,7 +2723,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
prompt:function(){
return '将'+get.cnNumber(Math.max(1,_status.event.player.hp))+'张黑桃牌当作无懈可击使用';
},
position:'he',
position:'hes',
check:function(card,event){
if(_status.event.player.hp>1) return 0;
return 7-get.value(card);
@ -2733,7 +2733,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
viewAs:{name:'wuxie'},
viewAsFilter:function(player){
return player.countCards('he',{suit:'spade'})>=player.hp;
return player.countCards('hes',{suit:'spade'})>=player.hp;
},
filterCard:function(card){
return get.suit(card)=='spade';
@ -2745,7 +2745,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
prompt:function(){
return '将'+get.cnNumber(Math.max(1,_status.event.player.hp))+'张梅花牌当作闪使用或打出';
},
position:'he',
position:'hes',
check:function(card,event){
if(_status.event.player.hp>1) return 0;
return 10-get.value(card);
@ -2753,6 +2753,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
selectCard:function(){
return Math.max(1,_status.event.player.hp);
},
viewAsFilter:function(player){
return player.countCards('hes',{suit:'club'})>=player.hp;
},
viewAs:{name:'shan'},
filterCard:function(card){
return get.suit(card)=='club';
@ -2807,7 +2810,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var map={sha:'diamond',tao:'heart'}
for(var i=0;i<list.length;i++){
var name=list[i];
if(player.countCards('he',function(card){
if(player.countCards('hes',function(card){
return (name!='sha'||get.value(card)<5)&&get.suit(card,player)==map[name];
})>0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){
var temp=get.order({name:name,nature:name=='sha'?'fire':null});
@ -2826,8 +2829,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
selectCard:[1,2],
//确保选择第一张牌后 重新检测第二张牌的合法性 避免选择两张花色不同的牌
complexCard:true,
//选牌范围:手牌区和装备区
position:'he',
//选牌范围:手牌区和装备区和木马
position:'hes',
//选牌合法性判断
filterCard:function(card,player,event){
//如果已经选了一张牌 那么第二张牌和第一张花色相同即可
@ -2853,13 +2856,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//获取当前时机的卡牌选择限制
var filter=event.filterCard;
//如果当前时机能够使用/打出火杀并且角色有方片 那么可以发动技能
if(filter({name:'sha',nature:'fire'},player,event)&&player.countCards('he',{suit:'diamond'})) return true;
if(filter({name:'sha',nature:'fire'},player,event)&&player.countCards('hes',{suit:'diamond'})) return true;
//如果当前时机能够使用/打出闪并且角色有梅花 那么可以发动技能
if(filter({name:'shan'},player,event)&&player.countCards('he',{suit:'club'})) return true;
if(filter({name:'shan'},player,event)&&player.countCards('hes',{suit:'club'})) return true;
//如果当前时机能够使用/打出桃并且角色有红桃 那么可以发动技能
if(filter({name:'tao'},player,event)&&player.countCards('he',{suit:'heart'})) return true;
if(filter({name:'tao'},player,event)&&player.countCards('hes',{suit:'heart'})) return true;
//如果当前时机能够使用/打出无懈可击并且角色有黑桃 那么可以发动技能
if(filter({name:'wuxie'},player,event)&&player.countCards('he',{suit:'spade'})) return true;
if(filter({name:'wuxie'},player,event)&&player.countCards('hes',{suit:'spade'})) return true;
return false;
},
ai:{
@ -2873,7 +2876,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
case 'respondShan':name='club';break;
case 'save':name='heart';break;
}
if(!player.countCards('he',{suit:name})) return false;
if(!player.countCards('hes',{suit:name})) return false;
},
//AI牌序
order:function(item,player){
@ -2883,7 +2886,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var map={sha:'diamond',tao:'heart'}
for(var i=0;i<list.length;i++){
var name=list[i];
if(player.countCards('he',function(card){
if(player.countCards('hes',function(card){
return (name!='sha'||get.value(card)<5)&&get.suit(card,player)==map[name];
})>0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){
var temp=get.order({name:name,nature:name=='sha'?'fire':null});
@ -2898,9 +2901,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
//让系统知道玩家“有无懈”“有桃”
hiddenCard:function(player,name){
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;
if(name=='wuxie'&&_status.connectMode&&player.countCards('hs')>0) return true;
if(name=='wuxie') return player.countCards('hes',{suit:'spade'})>0;
if(name=='tao') return player.countCards('hes',{suit:'heart'})>0;
},
group:['relonghun_num','relonghun_discard'],
subSkill:{
@ -2962,7 +2965,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var map={sha:'diamond',tao:'heart'}
for(var i=0;i<list.length;i++){
var name=list[i];
if(player.countCards('h',function(card){
if(player.countCards('hs',function(card){
return (name!='sha'||get.value(card)<5)&&get.suit(card,player)==map[name];
})>0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){
var temp=get.order({name:name,nature:name=='sha'?'fire':null});
@ -2977,7 +2980,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
return 1;
},
position:'h',
position:'hs',
filterCard:function(card,player,event){
event=event||_status.event;
var filter=event._backup.filterCard;
@ -2990,10 +2993,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
filter:function(event,player){
var filter=event.filterCard;
if(filter({name:'sha',nature:'fire'},player,event)&&player.countCards('h',{suit:'diamond'})) return true;
if(filter({name:'shan'},player,event)&&player.countCards('h',{suit:'club'})) return true;
if(filter({name:'tao'},player,event)&&player.countCards('h',{suit:'heart'})) return true;
if(filter({name:'wuxie'},player,event)&&player.countCards('h',{suit:'spade'})) return true;
if(filter({name:'sha',nature:'fire'},player,event)&&player.countCards('hs',{suit:'diamond'})) return true;
if(filter({name:'shan'},player,event)&&player.countCards('hs',{suit:'club'})) return true;
if(filter({name:'tao'},player,event)&&player.countCards('hs',{suit:'heart'})) return true;
if(filter({name:'wuxie'},player,event)&&player.countCards('hs',{suit:'spade'})) return true;
return false;
},
ai:{
@ -3006,7 +3009,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
case 'respondShan':name='club';break;
case 'save':name='heart';break;
}
if(!player.countCards('h',{suit:name})) return false;
if(!player.countCards('hs',{suit:name})) return false;
},
order:function(item,player){
if(player&&_status.event.type=='phase'){
@ -3015,7 +3018,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var map={sha:'diamond',tao:'heart'}
for(var i=0;i<list.length;i++){
var name=list[i];
if(player.countCards('h',function(card){
if(player.countCards('hs',function(card){
return (name!='sha'||get.value(card)<5)&&get.suit(card,player)==map[name];
})>0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){
var temp=get.order({name:name,nature:name=='sha'?'fire':null});
@ -3029,9 +3032,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
hiddenCard:function(player,name){
if(name=='wuxie'&&_status.connectMode&&player.countCards('h')>0) return true;
if(name=='wuxie') return player.countCards('h',{suit:'spade'})>0;
if(name=='tao') return player.countCards('h',{suit:'heart'})>0;
if(name=='wuxie'&&_status.connectMode&&player.countCards('hs')>0) return true;
if(name=='wuxie') return player.countCards('hs',{suit:'spade'})>0;
if(name=='tao') return player.countCards('hs',{suit:'heart'})>0;
},
},
xinjuejing:{

File diff suppressed because it is too large Load Diff

View File

@ -82,7 +82,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:["old_guhuo_guess","old_guhuo_respond","old_guhuo_wuxie"],
enable:"chooseToUse",
filter:function (event,player){
if(!player.countCards('h')) return false;
if(!player.countCards('hs')) return false;
var list=['sha','tao','shan','jiu','taoyuan','wugu','juedou','huogong','jiedao','tiesuo','guohe','shunshou','wuzhong','wanjian','nanman'];
if(get.mode()=='guozhan'){
list=list.concat(['xietianzi','shuiyanqijunx','lulitongxin','lianjunshengyan','chiling','diaohulishan','yuanjiao','huoshaolianying']);
@ -120,6 +120,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return {
filterCard:true,
selectCard:1,
position:'hs',
viewAs:{name:links[0][2],nature:links[0][3]},
}
},
@ -293,7 +294,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:"chooseToUse",
filterCard:true,
viewAsFilter:function (player){
return player.countCards('h')>0;
return player.countCards('hs')>0;
},
viewAs:{
name:"wuxie",
@ -306,7 +307,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
threaten:1.2,
},
old_zuilun:{
audio:'xinfu_zuilun',
audio:'xinfu_zuilun',
subSkill:{
e:{},
h:{},

View File

@ -249,6 +249,7 @@ window.noname_character_rank={
'wolongfengchu',
'yanghuiyu',
'liubian',
'nanhualaoxian',
'key_misuzu',
'key_sunohara',
'key_umi',
@ -436,6 +437,7 @@ window.noname_character_rank={
'jin_simashi',
'jin_wangyuanji',
'duyu',
'yj_ganning',
'key_kyousuke',
'key_yusa',
'key_misa',
@ -897,7 +899,6 @@ window.noname_character_rank={
're_heqi',
're_sp_zhugeliang',
're_liushan',
'yj_ganning',
're_pangtong',
'xin_yuanshao',
'liuye',
@ -1120,6 +1121,7 @@ window.noname_character_rank={
'mini_lvmeng',
'boss_zhaoyun',
'yanghuiyu',
'nanhualaoxian',
'key_yuri',
'key_yuzuru',
'sp_key_kanade',

View File

@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
refresh_standard:["re_caocao","re_simayi","re_guojia","re_lidian","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_xushu","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong",'re_gongsunzan'],
refresh_feng:['caoren','ol_xiahouyuan','re_huangzhong','ol_weiyan','ol_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji'],
refresh_huo:["ol_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"],
refresh_lin:['re_zhurong','re_menghuo','ol_sunjian','re_caopi','re_xuhuang','ol_dongzhuo'],
refresh_lin:['re_zhurong','re_menghuo','ol_sunjian','re_caopi','re_xuhuang','ol_dongzhuo','ol_zhurong'],
refresh_shan:['re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai'],
refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua'],
refresh_yijiang2:['old_madai','wangyi','guanzhang','xin_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_bulianshi','xin_liubiao'],
@ -18,6 +18,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
connect:true,
character:{
ol_zhurong:['female','shu',4,['juxiang','lieren','changbiao'],['unseen']],
re_zhangchunhua:['female','wei',3,['rejueqing','reshangshi']],
re_gongsunyuan:['male','qun',4,['rehuaiyi']],
re_caozhen:['male','wei',4,['residi']],
@ -131,6 +132,78 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_xushu:['zhaoyun','sp_zhugeliang'],
},
skill:{
//长标
changbiao:{
audio:2,
mod:{
targetInRange:function(card,player,target){
if(card.changbiao) return true;
},
},
enable:'phaseUse',
usable:1,
position:'hs',
viewAs:{
name:'sha',
changbiao:true,
},
locked:false,
filter:function(event,player){
return player.countCards('hs')>0;
},
filterCard:true,
selectCard:[1,Infinity],
position:'hs',
check:function(card){
var player=_status.event.player;
if(ui.selected.cards.length){
var list=game.filterPlayer(function(current){
return current!=player&&player.canUse('sha',current,false)&&get.effect(current,{name:'sha'},player,player)>0;
}).sort(function(a,b){
return get.effect(b,{name:'sha'},player,player)-get.effect(a,{name:'sha'},player,player);
});
if(!list.length) return 0;
var target=list[0];
if(target.mayHaveShan()&&!player.hasSkillTag('directHit_ai',true,{
target:target,
card:card,
},true)) return 0;
return 6.5-get.value(card);
}
return 6.3-get.value(card);
},
onuse:function(result,player){
player.addTempSkill('changbiao_draw');
},
subSkill:{
draw:{
trigger:{player:'phaseUseEnd'},
forced:true,
charlotte:true,
filter:function(event,player){
return player.getHistory('sourceDamage',function(evxt){
var evt=evxt.getParent();
return evt&&evt.name=='sha'&&evt.skill=='changbiao'&&evt.getParent('phaseUse')==event;
}).length>0;
},
content:function(){
var num=0;
player.getHistory('sourceDamage',function(evxt){
var evt=evxt.getParent();
if(evt&&evt.name=='sha'&&evt.skill=='changbiao'&&evt.getParent('phaseUse')==trigger) num+=evt.cards.length;
});
player.draw(num);
},
},
},
ai:{
order:function(item,player){
return get.order({name:'sha'},player)+0.3*(Math.min(player.getCardUsable('sha'),player.countCards('hs','sha')+player.hasCard(function(card){
return card.name!='sha'&&get.value(card,player)<6.3;
},'hs')?1:0)>1?-1:1);
},
},
},
//国钟会
gzquanji:{
audio:'quanji',
@ -2294,11 +2367,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
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;
if(name=='tao') return player.countCards('hs','jiu')>0;
if(name=='jiu') return player.countCards('hs','tao')>0;
return false;
},
enable:['chooseToUse','chooseToRespond'],
position:'hs',
prompt:'将杀当做闪,或将闪当做杀,或将桃当做酒,或将酒当做桃使用或打出',
viewAs:function(cards,player){
var name=false;
@ -2320,7 +2394,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var map={sha:'shan',tao:'jiu',jiu:'tao'}
for(var i=0;i<list.length;i++){
var name=list[i];
if(player.countCards('h',map[name])>(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){
if(player.countCards('hs',map[name])>(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){
var temp=get.order({name:name});
if(temp>max){
max=temp;
@ -2345,10 +2419,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
filter:function(event,player){
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;
if(filter({name:'tao'},player,event)&&player.countCards('h','jiu')) return true;
if(filter({name:'jiu'},player,event)&&player.countCards('h','tao')) return true;
if(filter({name:'sha'},player,event)&&player.countCards('hs','shan')) return true;
if(filter({name:'shan'},player,event)&&player.countCards('hs','sha')) return true;
if(filter({name:'tao'},player,event)&&player.countCards('hs','jiu')) return true;
if(filter({name:'jiu'},player,event)&&player.countCards('hs','tao')) return true;
return false;
},
ai:{
@ -2360,7 +2434,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
case 'respondSha':name='shan';break;
case 'respondShan':name='sha';break;
}
if(!player.countCards('h',name)) return false;
if(!player.countCards('hs',name)) return false;
},
order:function(item,player){
if(player&&_status.event.type=='phase'){
@ -2369,7 +2443,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var map={sha:'shan',tao:'jiu',jiu:'tao'}
for(var i=0;i<list.length;i++){
var name=list[i];
if(player.countCards('h',map[name])>(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){
if(player.countCards('hs',map[name])>(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){
var temp=get.order({name:name});
if(temp>max) max=temp;
}
@ -4527,7 +4601,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
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;
if(!player.countCards('hs')||player.hasSkill('reguhuo_phase')) return false;
for(var i of lib.inpile){
if(i=='shan'||i=='wuxie') continue;
var type=get.type(i);
@ -4583,6 +4657,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
suit:'none',
number:null,
},
position:'hs',
ai1:function(card){
var player=_status.event.player;
var hasEnemy=game.hasPlayer(function(current){
@ -4596,11 +4671,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return 6-get.value(card);
},
filterCard:true,
position:'h',
}
},
prompt:function(links){
return '将一张牌当做'+(get.translation(links[0][3])||'')+get.translation(links[0][2])+'使用';
return '将一张牌当做'+(get.translation(links[0][3])||'')+get.translation(links[0][2])+'使用';
},
},
ai:{
@ -4608,7 +4682,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
respondShan:true,
respondSha:true,
skillTagFilter:function(player){
if(!player.countCards('h')||player.hasSkill('reguhuo_phase')) return false;
if(!player.countCards('hs')||player.hasSkill('reguhuo_phase')) return false;
},
order:10,
result:{
@ -4626,7 +4700,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
number:null,
},
viewAsFilter:function(player){
return player.countCards('h')&&!player.hasSkill('reguhuo_phase');
return player.countCards('hs')&&!player.hasSkill('reguhuo_phase');
},
check:function(card){
var player=_status.event.player;
@ -4642,7 +4716,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
prompt:'将一张牌当做【闪】使用或打出',
filterCard:true,
position:'h',
position:'hs',
ai:{
order:4,
},
@ -4667,11 +4741,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return 6-get.value(card);
},
viewAsFilter:function(player){
return player.countCards('h')&&!player.hasSkill('reguhuo_phase');
return player.countCards('hs')&&!player.hasSkill('reguhuo_phase');
},
filterCard:true,
prompt:'将一张牌当做【无懈可击】使用',
position:'h',
position:'hs',
ai:{
order:4,
},
@ -4967,13 +5041,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
trigger:{global:'judge'},
filter:function(event,player){
return player.countCards('he',{color:'black'})>0;
return player.countCards('hes',{color:'black'})>0;
},
direct:true,
content:function(){
"step 0"
player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging[0])+''+get.prompt('xinguidao'),'he',function(card){
get.translation(trigger.player.judging[0])+''+get.prompt('xinguidao'),'hes',function(card){
if(get.color(card)!='black') return false;
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
@ -5038,17 +5112,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterCard:function(card){
return get.color(card)=='black';
},
position:'he',
position:'hes',
viewAs:{name:'shan'},
viewAsFilter:function(player){
if(!player.countCards('he',{color:'black'})) return false;
if(!player.countCards('hes',{color:'black'})) return false;
},
prompt:'将一张黑色牌当闪打出',
check:function(){return 1},
ai:{
respondShan:true,
skillTagFilter:function(player){
if(!player.countCards('he',{color:'black'})) return false;
if(!player.countCards('hes',{color:'black'})) return false;
},
effect:{
target:function(card,player,target,current){
@ -5104,7 +5178,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
threaten:1.5,
},
rehuoji:{
position:"he",
position:"hes",
audio:2,
audioname:['ol_sp_zhugeliang','ol_pangtong'],
enable:"chooseToUse",
@ -5116,7 +5190,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
nature:"fire",
},
viewAsFilter:function (player){
if(!player.countCards('he',{color:'red'})) return false;
if(!player.countCards('hes',{color:'red'})) return false;
},
prompt:"将一张红色牌当火攻使用",
check:function (card){
@ -5133,13 +5207,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rekanpo:{
audio:2,
audioname:['ol_sp_zhugeliang','ol_pangtong'],
position:"he",
position:"hes",
enable:"chooseToUse",
filterCard:function (card){
return get.color(card)=='black';
},
viewAsFilter:function (player){
return player.countCards('he',{color:'black'})>0;
return player.countCards('hes',{color:'black'})>0;
},
viewAs:{
name:"wuxie",
@ -5614,16 +5688,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(get.zhu(player,'shouyue')) return true;
return get.color(card)=='red';
},
position:"he",
position:"hes",
viewAs:{
name:"sha",
},
viewAsFilter:function(player){
if(get.zhu(player,'shouyue')){
if(!player.countCards('he')) return false;
if(!player.countCards('hes')) return false;
}
else{
if(!player.countCards('he',{color:'red'})) return false;
if(!player.countCards('hes',{color:'red'})) return false;
}
},
prompt:"将一张红色牌当杀使用或打出",
@ -5632,10 +5706,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
respondSha:true,
skillTagFilter:function(player){
if(get.zhu(player,'shouyue')){
if(!player.countCards('he')) return false;
if(!player.countCards('hes')) return false;
}
else{
if(!player.countCards('he',{color:'red'})) return false;
if(!player.countCards('hes',{color:'red'})) return false;
}
},
},
@ -6812,12 +6886,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{global:'judge'},
direct:true,
filter:function(event,player){
return player.countCards('he')>0;
return player.countCards('hes')>0;
},
content:function(){
"step 0"
player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging[0])+''+get.prompt('reguicai'),'he',function(card){
get.translation(trigger.player.judging[0])+''+get.prompt('reguicai'),'hes',function(card){
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
@ -7931,14 +8005,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'phaseUse',
usable:1,
discard:false,
lose:false,
delay:false,
filter:function(event,player){
return player.countCards('he',{suit:'diamond'})>0;
return player.countCards('hes',{suit:'diamond'})>0;
},
prepare:'throw',
position:'he',
position:'hes',
filterCard:{suit:'diamond'},
filterTarget:function(card,player,target){
if(target.hasJudge('lebu')) return true;
if(get.position(ui.selected.cards[0])!='s'&&lib.filter.cardDiscardable(ui.selected.cards[0],player,'reguose')&&target.hasJudge('lebu')) return true;
if(player==target) return false;
if(!game.checkMod(ui.selected.cards[0],player,'unchanged','cardEnabled2',player)) return false;
return player.canUse({name:'lebu',cards:ui.selected.cards},target);
@ -7948,6 +8023,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
if(target.hasJudge('lebu')){
player.discard(cards);
target.discard(target.getJudge('lebu'));
}
else{
@ -8500,8 +8576,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.suit(card)=='spade';
},
viewAs:{name:'jiu'},
position:'hs',
viewAsFilter:function(player){
if(!player.countCards('h',{suit:'spade'})) return false;
if(!player.countCards('hs',{suit:'spade'})) return false;
return true;
},
prompt:'将一张黑桃手牌当酒使用',
@ -8509,11 +8586,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(player&&player==cardx.player) return true;
if(_status.event.type=='dying') return 1;
var player=_status.event.player;
var shas=player.getCards('h',function(card){
var shas=player.getCards('hs',function(card){
return card!=cardx&&get.name(card,player)=='sha';
});
if(!shas.length) return -1;
if(shas.length>1&&(player.getCardUsable('sha')>1||player.countCards('h','zhuge'))){
if(shas.length>1&&(player.getCardUsable('sha')>1||player.countCards('hs','zhuge'))){
return 0;
}
shas.sort(function(a,b){
@ -9143,6 +9220,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gzpaiyi:'排异',
gzpaiyi_backup:'排异',
gzpaiyi_info:'出牌阶段你可以将移去一张“权”然后选择一名角色并令其摸X张牌X为“权”的数量若其手牌数不小于你则你对其造成1点伤害且本技能于此回合内失效。',
ol_zhurong:'界祝融',
changbiao:'长标',
changbiao_info:'出牌阶段限一次你可以将任意张手牌当做【杀】使用无距离限制。若你因此【杀】对目标角色造成过伤害则你于出牌阶段结束时摸X张牌X为此【杀】对应的实体牌数量。',
refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风',

View File

@ -1127,10 +1127,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
subSkill:{
"1":{
trigger:{
global:["loseAfter","addCardToStorage"],
global:["loseAfter","addCardToStorage","loseAsyncAfter"],
},
filter:function(event,player){
if(event.name=='lose') return event.toStorage==true;
filter:function(event,player,name){
if(name!='addCardToStorage') return event.toStorage==true;
return true;
},
direct:true,
@ -2507,13 +2507,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audioname:['ol_pangtong'],
enable:'chooseToUse',
filter:function(event,player){
return player.countCards('he',{suit:'club'})>0;
return player.countCards('hes',{suit:'club'})>0;
},
filterCard:{suit:'club'},
viewAs:{name:'tiesuo'},
prompt:'将一张梅花牌当铁锁连环使用',
check:function(card){return 6-get.value(card)},
position:'he',
position:'hes',
},
xinlianhuan:{
audio:2,
@ -2530,7 +2530,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audioname:['ol_pangtong'],
enable:'chooseToUse',
filter:function(event,player){
return player.countCards('h',{suit:'club'})>0;
return player.countCards('hs',{suit:'club'})>0;
},
filterCard:{suit:'club'},
viewAs:{name:'tiesuo'},
@ -2552,6 +2552,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(!player.storage.reluanji) return true;
return !player.storage.reluanji.contains(get.suit(card));
},
position:'hs',
selectCard:2,
check:function(card){
var player=_status.event.player;
@ -4423,9 +4424,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.color(card)=='black';
},
filter:function(event,player){
return player.countCards('he',{type:['basic','equip'],color:'black'})
return player.countCards('hes',{type:['basic','equip'],color:'black'})
},
position:'he',
position:'hes',
viewAs:{name:'bingliang'},
prompt:'将一黑色的基本牌或装备牌当兵粮寸断使用',
check:function(card){return 6-get.value(card)},
@ -4757,7 +4758,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
viewAs:{name:'jiu'},
viewAsFilter:function(player){
if(!player.countCards('h',{suit:'spade'})) return false;
if(!player.countCards('hs',{suit:'spade'})) return false;
},
prompt:'将一张黑桃手牌当酒使用',
check:function(card){
@ -4995,8 +4996,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
viewAs:{name:'huogong',nature:'fire'},
viewAsFilter:function(player){
if(!player.countCards('h',{color:'red'})) return false;
if(!player.countCards('hs',{color:'red'})) return false;
},
position:'hs',
prompt:'将一张红色牌当火攻使用',
check:function(card){
var player=_status.currentPhase;
@ -5046,9 +5048,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.color(card)=='black';
},
viewAsFilter:function(player){
return player.countCards('h',{color:'black'})>0;
return player.countCards('hs',{color:'black'})>0;
},
viewAs:{name:'wuxie'},
position:'hs',
prompt:'将一张黑色手牌当无懈可击使用',
check:function(card){
var tri=_status.event.getTrigger();
@ -5066,8 +5069,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audioname:['re_pangtong'],
enable:'chooseToUse',
filter:function(event,player){
return player.countCards('h',{suit:'club'})>0;
return player.countCards('hs',{suit:'club'})>0;
},
position:'hs',
filterCard:function(card){
return get.suit(card)=='club';
},
@ -5593,6 +5597,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return str;
},
viewAs:{name:'juedou'},
position:'hs',
onremove:true,
filterCard:function(card,player){
return get.color(card)!=player.storage.shuangxiong;
@ -5609,12 +5614,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
luanji:{
audio:2,
enable:'phaseUse',
position:'hs',
viewAs:{name:'wanjian'},
filterCard:function(card,player){
if(ui.selected.cards.length){
return get.suit(card)==get.suit(ui.selected.cards[0]);
}
var cards=player.getCards('h');
var cards=player.getCards('hs');
for(var i=0;i<cards.length;i++){
if(card!=cards[i]){
if(get.suit(card)==get.suit(cards[i])) return true;
@ -6709,13 +6715,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audioname:['sp_zhangjiao'],
trigger:{global:'judge'},
filter:function(event,player){
return player.countCards('he',{color:'black'})>0;
return player.countCards('hes',{color:'black'})>0;
},
direct:true,
content:function(){
"step 0"
player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging[0])+''+get.prompt('guidao'),'he',function(card){
get.translation(trigger.player.judging[0])+''+get.prompt('guidao'),'hes',function(card){
if(get.color(card)!='black') return false;
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
@ -6767,7 +6773,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
usable:1,
audio:2,
filter:function(event,player){
return player.countCards('h')>0
return player.countCards('hs')>0
},
chooseButton:{
dialog:function(){
@ -6894,7 +6900,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:"chooseToUse",
filter:function(event,player){
if(player.hasSkill('guhuo_phase'))return false;
if(!player.countCards('h')) return false;
if(!player.countCards('hs')) return false;
var list=['sha','shan','tao','jiu','taoyuan','wugu','juedou','huogong','jiedao','tiesuo','guohe','shunshou','wuzhong','wanjian','nanman'];
if(get.mode()=='guozhan'){
list=list.concat(['xietianzi','shuiyanqijunx','lulitongxin','lianjunshengyan','chiling','diaohulishan','yuanjiao','huoshaolianying']);
@ -6932,6 +6938,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return {
filterCard:true,
selectCard:1,
position:'hs',
viewAs:{name:links[0][2],nature:links[0][3]},
}
},
@ -7123,7 +7130,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(event.responded) return false;
if(!event.filterCard({name:'shan'})&&!event.filterCard({name:'sha'})) return false;
if(!lib.filter.cardRespondable({name:'shan'},player,event)&&!lib.filter.cardRespondable({name:'sha'},player,event)) return false;
if(!player.countCards('h')) return false;
if(!player.countCards('hs')) return false;
return true;
},
direct:true,
@ -7131,7 +7138,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 0"
if(trigger.filterCard({name:'shan'})&&lib.filter.cardRespondable({name:'shan'},player,trigger)) event.name='shan';
else event.name='sha';
player.chooseCard('是否发动【蛊惑】,将一张手牌当做'+get.translation(event.name)+'打出?');
player.chooseCard('是否发动【蛊惑】,将一张手牌当做'+get.translation(event.name)+'打出?','hs');
"step 1"
if(result.bool){
player.addTempSkill('guhuo_phase');
@ -7235,10 +7242,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
silent:true,
popup:false,
enable:"chooseToUse",
position:'hs',
filterCard:true,
viewAsFilter:function(player){
if(player.hasSkill('guhuo_phase'))return false;
return player.countCards('h')>0;
return player.countCards('hs')>0;
},
viewAs:{
name:"wuxie",

View File

@ -1303,10 +1303,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(target.hp<=player.hp) return false;
return lib.filter.filterTarget.apply(this,arguments);
},
position:'he',
position:'hes',
audio:'niluan',
viewAsFilter:function(player){
return player.countCards('he',lib.skill.spniluan.filterCard)>0&&game.hasPlayer(function(current){
return player.countCards('hes',lib.skill.spniluan.filterCard)>0&&game.hasPlayer(function(current){
return current.hp>player.hp&&player.canUse('sha',current);
});
},
@ -1335,7 +1335,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
usable:1,
viewAs:{name:'shunshou'},
filterCard:{color:'red'},
position:'he',
position:'hes',
check:function(card){
return 7-get.value(card);
},
@ -1344,7 +1344,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return lib.filter.filterTarget.apply(this,arguments);
},
viewAsFilter:function(player){
return player.countCards('he',lib.skill.spweiwu.filterCard)>0&&game.hasPlayer(function(current){
return player.countCards('hes',lib.skill.spweiwu.filterCard)>0&&game.hasPlayer(function(current){
return current.countCards('h')>player.countCards('h')&&player.canUse('shunshou',current);
});
},
@ -1748,7 +1748,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'phaseUse',
usable:1,
filter:function(event,player){
return event.xinjingong_list&&player.countCards('he',function(card){
return event.xinjingong_list&&player.countCards('hes',function(card){
return card.name=='sha'||get.type(card)=='equip';
});
},
@ -1786,7 +1786,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'jingong',
filterCard:true,
popname:true,
position:'he',
position:'hes',
viewAs:{name:links[0][2]},
check:function(card){
return 6-get.value(card);
@ -2096,13 +2096,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
splanggu_rewrite:{
trigger:{player:'judge'},
filter:function (event,player){
return player.countCards('h')>0&&event.getParent().name=='splanggu';
return player.countCards('hs')>0&&event.getParent().name=='splanggu';
},
direct:true,
content:function (){
"step 0"
player.chooseCard('狼顾的判定结果为'+
get.translation(trigger.player.judging[0])+',是否打出一张手牌进行代替?','h',function(card){
get.translation(trigger.player.judging[0])+',是否打出一张手牌进行代替?','hs',function(card){
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
@ -2727,7 +2727,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
niluanx:{
viewAs:{name:'sha'},
filterCard:{color:'black'},
position:'he',
position:'hes',
check:function(card){return 5-get.value(card)},
},
cuorui:{
@ -2857,13 +2857,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
global:"judge",
},
filter:function (event,player){
return player.countCards('he')>0&&player.side==event.player.side;
return player.countCards('hes')>0&&player.side==event.player.side;
},
direct:true,
content:function (){
"step 0"
player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging[0])+''+get.prompt('huanshi_three'),'he',function(card){
get.translation(trigger.player.judging[0])+''+get.prompt('huanshi_three'),'hes',function(card){
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
@ -4607,7 +4607,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'phaseUse',
usable:1,
filter:function(event,player){
return event.xinjingong_list&&player.countCards('he',function(card){
return event.xinjingong_list&&player.countCards('hes',function(card){
return card.name=='sha'||get.type(card)=='equip';
});
},
@ -4645,7 +4645,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'jingong',
filterCard:true,
popname:true,
position:'he',
position:'hes',
viewAs:{name:links[0][2]},
check:function(card){
return 6-get.value(card);
@ -6191,8 +6191,8 @@ 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;
if(name=='tao') return player.countCards('hs','jiu')>0;
if(name=='jiu') return player.countCards('hs','tao')>0;
return false;
},
audio:2,
@ -6242,6 +6242,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(name) return {name:name};
return null;
},
position:'hs',
check:function(card){
var player=_status.event.player;
if(_status.event.type=='phase'){
@ -6251,7 +6252,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var map={sha:'shan',tao:'jiu',jiu:'tao'}
for(var i=0;i<list.length;i++){
var name=list[i];
if(player.countCards('h',map[name])>(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){
if(player.countCards('hs',map[name])>(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){
var temp=get.order({name:name});
if(temp>max){
max=temp;
@ -6277,10 +6278,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event,player){
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;
if(filter({name:'tao'},player,event)&&player.countCards('h','jiu')) return true;
if(filter({name:'jiu'},player, event)&&player.countCards('h','tao')) return true;
if(filter({name:'sha'},player,event)&&player.countCards('hs','shan')) return true;
if(filter({name:'shan'},player,event)&&player.countCards('hs','sha')) return true;
if(filter({name:'tao'},player,event)&&player.countCards('hs','jiu')) return true;
if(filter({name:'jiu'},player, event)&&player.countCards('hs','tao')) return true;
return false;
},
onrespond:function(){return this.onuse.apply(this,arguments)},
@ -6297,7 +6298,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
case 'respondSha':name='shan';break;
case 'respondShan':name='sha';break;
}
if(!player.countCards('h',name)) return false;
if(!player.countCards('hs',name)) return false;
},
order:function(item,player){
if(player&&_status.event.type=='phase'){
@ -6306,7 +6307,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var map={sha:'shan',tao:'jiu',jiu:'tao'}
for(var i=0;i<list.length;i++){
var name=list[i];
if(player.countCards('h',map[name])>(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){
if(player.countCards('hs',map[name])>(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){
var temp=get.order({name:name});
if(temp>max) max=temp;
}
@ -9909,23 +9910,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
usable:1,
viewAs:{name:'tao'},
viewAsFilter:function(player){
return player!=_status.currentPhase&&player.countCards('he')>1;
return player!=_status.currentPhase&&player.countCards('hes')>1;
},
selectCard:2,
filterCard:true,
position:'he',
ai:{
skillTagFilter:function(){
return lib.skill.xisheng.viewAsFilter.apply(this,arguments)
},
},
position:'hes',
},
shulv:{
inherit:'zhiheng',
prompt:'弃置一张牌并摸一张牌',
selectCard:1,
filter:function(event,player){
return player.countCards('h')>player.hp;
return player.countCards('hs')>player.hp;
},
},
xiandeng:{
@ -10158,7 +10154,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event,player){
return player.getHistory('useCard',function(evt){
return evt.isPhaseUsing()&&['basic','trick'].contains(get.type(evt.card));
}).length>0&&player.countCards('h')>0;
}).length>0&&player.countCards('hs')>0;
},
content:function(){
"step 0"
@ -10168,7 +10164,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
})
"step 1"
event._result={};
if(event.count&&event.history.length&&player.countCards('h')){
if(event.count&&event.history.length&&player.countCards('hs')){
event.count--;
var card=event.history.shift().card;
card={name:card.name,nature:card.nature};
@ -10204,6 +10200,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.itemtype(card)=='card';
},
selectCard:1,
position:'hs',
popname:true,
},
chenqing2:{},
@ -14140,7 +14137,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
chixin1:{
enable:['chooseToRespond','chooseToUse'],
filterCard:{suit:'diamond'},
position:'he',
position:'hes',
viewAs:{name:'sha'},
prompt:'将一张♦牌当杀使用或打出',
check:function(card){return 5-get.value(card)},
@ -14152,7 +14149,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:['chooseToUse','chooseToRespond'],
filterCard:{suit:'diamond'},
viewAs:{name:'shan'},
position:'he',
position:'hes',
prompt:'将一张♦牌当闪使用或打出',
check:function(card){return 5-get.value(card)},
ai:{
@ -14705,8 +14702,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
usable:3,
audio:2,
enable:"chooseToUse",
position:"he",
filterCard:function (card){
position:"hes",
filterCard:function(card){
return get.color(card)=='red';
},
viewAs:{
@ -14718,7 +14715,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(!game.hasPlayer(function(current){
return current.hasSkill('xinfu_jianjie');
})) return false;
if(!player.countCards('he',{color:'red'})) return false;
if(!player.countCards('hes',{color:'red'})) return false;
},
prompt:"将一张红色牌当火攻使用",
check:function (card){
@ -14742,7 +14739,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return current.hasSkill('xinfu_jianjie');
})) return false;
if((player.getStat().skill.smh_lianhuan||0)+(player.getStat().skill.smh_lianhuan1||0)>=3) return false;
return player.countCards('h',{suit:'club'})>0;
return player.countCards('hs',{suit:'club'})>0;
},
filterCard:function (card){
return get.suit(card)=='club';
@ -14750,6 +14747,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
viewAs:{
name:"tiesuo",
},
position:'hs',
prompt:"将一张梅花牌当铁锁连环使用",
check:function (card){return 6-get.value(card)},
mark:true,
@ -15485,10 +15483,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:"chooseToUse",
viewAsFilter:function(player){
if(player==_status.currentPhase) return false;
return player.hasMark('xinfu_falu_club')&&player.countCards('h')>0;
return player.hasMark('xinfu_falu_club')&&player.countCards('hs')>0;
},
filterCard:true,
position:"h",
position:"hs",
viewAs:{
name:"tao",
},

View File

@ -2145,11 +2145,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
pozhu:{
enable:'phaseUse',
viewAsFilter:function(player){
return !player.hasSkill('pozhu3');
return !player.hasSkill('pozhu3')&&player.countCards('hs')>0;
},
viewAs:{name:'chuqibuyi'},
filterCard:true,
position:'h',
position:'hs',
check:function(card){
return 7-get.value(card);
},
@ -4559,7 +4559,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:'juanhui3',
enable:'phaseUse',
filter:function(event,player){
return player.getStorage('juanhui3').length>0&&player.countCards('h')>0;
return player.getStorage('juanhui3').length>0&&player.countCards('hs')>0;
},
chooseButton:{
dialog:function(event,player){
@ -4585,6 +4585,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'juanhui',
popname:true,
filterCard:true,
position:'hs',
viewAs:{
name:links[0][2],
nature:links[0][3],
@ -5876,12 +5877,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:"phaseUse",
filter:function(event,player){
if(player.hasJudge('bingliang')) return false;
return player.countCards('he',function(card){
return player.countCards('hes',function(card){
return get.color(card)=='black'&&get.type(card)=='basic';
})>0;
},
viewAs:{name:'bingliang'},
position:"he",
position:"hes",
filterCard:function(card,player,event){
return get.color(card)=='black'&&get.type(card)=='basic'&&player.canAddJudge({name:'bingliang',cards:[card]});
},
@ -8715,7 +8716,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player:'useCardAfter',
},
filter:function(event,player){
if(player.hasSkill('xinfu_sidaoy')||!player.countCards('h')) return false;
if(player.hasSkill('xinfu_sidaoy')||!player.countCards('hs')) return false;
if(!event.targets||!event.targets.length||!event.isPhaseUsing(player)) return false;
var history=player.getHistory('useCard');
var index=history.indexOf(event)-1;
@ -8749,7 +8750,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterCard:function(card){
return get.itemtype(card)=='card';
},
position:"h",
position:"hs",
viewAs:{
name:"shunshou",
},

View File

@ -290,12 +290,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{global:'judge'},
direct:true,
filter:function(event,player){
return player.countCards(get.mode()=='guozhan'?'he':'h')>0;
return player.countCards(get.mode()=='guozhan'?'hes':'hs')>0;
},
content:function(){
"step 0"
player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging[0])+''+get.prompt('guicai'),get.mode()=='guozhan'?'he':'h',function(card){
get.translation(trigger.player.judging[0])+''+get.prompt('guicai'),get.mode()=='guozhan'?'hes':'hs',function(card){
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
@ -725,14 +725,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
viewAs:{name:'shan'},
viewAsFilter:function(player){
if(!player.countCards('h',{color:'black'})) return false;
if(!player.countCards('hs',{color:'black'})) return false;
},
position:'hs',
prompt:'将一张黑色手牌当闪使用或打出',
check:function(){return 1},
ai:{
respondShan:true,
skillTagFilter:function(player){
if(!player.countCards('h',{color:'black'})) return false;
if(!player.countCards('hs',{color:'black'})) return false;
},
effect:{
target:function(card,player,target,current){
@ -941,14 +942,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(get.zhu(player,'shouyue')) return true;
return get.color(card)=='red';
},
position:'he',
position:'hes',
viewAs:{name:'sha'},
viewAsFilter:function(player){
if(get.zhu(player,'shouyue')){
if(!player.countCards('he')) return false;
if(!player.countCards('hes')) return false;
}
else{
if(!player.countCards('he',{color:'red'})) return false;
if(!player.countCards('hes',{color:'red'})) return false;
}
},
prompt:'将一张红色牌当杀使用或打出',
@ -956,10 +957,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
skillTagFilter:function(player){
if(get.zhu(player,'shouyue')){
if(!player.countCards('he')) return false;
if(!player.countCards('hes')) return false;
}
else{
if(!player.countCards('he',{color:'red'})) return false;
if(!player.countCards('hes',{color:'red'})) return false;
}
},
respondSha:true,
@ -1498,8 +1499,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterCard:{name:'shan'},
viewAs:{name:'sha'},
viewAsFilter:function(player){
if(!player.countCards('h','shan')) return false;
if(!player.countCards('hs','shan')) return false;
},
position:'hs',
prompt:'将一张闪当杀使用或打出',
check:function(){return 1},
ai:{
@ -1510,7 +1512,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
respondSha:true,
skillTagFilter:function(player){
if(!player.countCards('h','shan')) return false;
if(!player.countCards('hs','shan')) return false;
},
order:function(){
return get.order({name:'sha'})+0.1;
@ -1527,13 +1529,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
viewAs:{name:'shan'},
prompt:'将一张杀当闪使用或打出',
check:function(){return 1},
position:'hs',
viewAsFilter:function(player){
if(!player.countCards('h','sha')) return false;
if(!player.countCards('hs','sha')) return false;
},
ai:{
respondShan:true,
skillTagFilter:function(player){
if(!player.countCards('h','sha')) return false;
if(!player.countCards('hs','sha')) return false;
},
effect:{
target:function(card,player,target,current){
@ -1858,10 +1861,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterCard:function(card){
return get.color(card)=='black';
},
position:'he',
position:'hes',
viewAs:{name:'guohe'},
viewAsFilter:function(player){
if(!player.countCards('he',{color:'black'})) return false;
if(!player.countCards('hes',{color:'black'})) return false;
},
prompt:'将一张黑色牌当过河拆桥使用',
check:function(card){return 4-get.value(card)}
@ -1974,13 +1977,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
guose:{
audio:2,
filter:function(event,player){
return player.countCards('he',{suit:'diamond'})>0;
return player.countCards('hes',{suit:'diamond'})>0;
},
enable:'chooseToUse',
filterCard:function(card){
return get.suit(card)=='diamond';
},
position:'he',
position:'hes',
viewAs:{name:'lebu'},
prompt:'将一张方片牌当乐不思蜀使用',
check:function(card){return 6-get.value(card)},
@ -2362,12 +2365,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audioname:['re_huatuo'],
enable:'chooseToUse',
viewAsFilter:function(player){
return player!=_status.currentPhase&&player.countCards('he',{color:'red'})>0;
return player!=_status.currentPhase&&player.countCards('hes',{color:'red'})>0;
},
filterCard:function(card){
return get.color(card)=='red';
},
position:'he',
position:'hes',
viewAs:{name:'tao'},
prompt:'将一张红色牌当桃使用',
check:function(card){return 15-get.value(card)},

View File

@ -26,7 +26,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
swd_quxian:['female','qun',3,['mojian','huanxia']],
swd_xiyan:['male','qun',3,['jiefen','datong']],
swd_cheyun:['female','wu',3,['cyxianjiang','cyqiaoxie','shengong']],
swd_huanyuanzhi:['male','qun',3,['tianshu','lanzhi','mufeng']],
swd_huanyuanzhi:['male','qun',3,['swdtianshu','lanzhi','mufeng']],
swd_murongshi:['female','shu',4,['duanyi','guxing']],
swd_jipeng:['male','wu',3,['reyingzi','guozao']],
swd_qi:['male','qun',3,['yaotong','heihuo','pojian']],
@ -7123,13 +7123,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
},
tianshu_old:{
swdtianshu_old:{
unique:true,
trigger:{player:'phaseEnd'},
direct:true,
init:function(player){
player.storage.tianshu=[];
player.storage.tianshu2={};
player.storage.swdtianshu=[];
player.storage.swdtianshu2={};
},
intro:{
content:function(storage){
@ -7154,10 +7154,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
'step 0'
player.chooseToDiscard('he',get.prompt('tianshu')).ai=function(card){
player.chooseToDiscard('he',get.prompt('swdtianshu')).ai=function(card){
if(get.position(card)=='h') return 5-get.useful(card);
return 4-get.value(card);
}.logSkill='tianshu';
}.logSkill='swdtianshu';
'step 1'
if(result.bool){
var list=[];
@ -7176,7 +7176,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.finish();
}
'step 2'
player.storage.tianshu_learn=result.links[0];
player.storage.swdtianshu_learn=result.links[0];
//
// var target=trigger.targets[0];
// var names=[];
@ -7190,7 +7190,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
// if(info){
// var skills=info[3];
// for(var j=0;j<skills.length;j++){
// if(player.storage.tianshu.contains(skills[j])) continue;
// if(player.storage.swdtianshu.contains(skills[j])) continue;
// if(lib.translate[skills[j]+'_info']&&lib.skill[skills[j]]&&
// !lib.skill[skills[j]].unique&&!pss.contains(skills[j])){
// list.add(skills[j]);
@ -7199,22 +7199,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
// }
// }
// var skill=list.randomGet();
// player.storage.tianshu.push(skill);
// player.storage.tianshu2.push(target);
// player.storage.swdtianshu.push(skill);
// player.storage.swdtianshu2.push(target);
// player.popup(skill);
// player.syncStorage('tianshu');
// player.syncStorage('swdtianshu');
// player.updateMarks();
// game.log(player,'学习了','【'+get.translation(skill)+'】');
},
group:'tianshu2',
group:'swdtianshu2',
ai:{
threaten:2
}
},
tianshu2:{
swdtianshu2:{
enable:'phaseUse',
filter:function(event,player){
return !player.hasSkill('tianshu3')&&player.storage.tianshu&&player.storage.tianshu.length>0;
return !player.hasSkill('swdtianshu3')&&player.storage.swdtianshu&&player.storage.swdtianshu.length>0;
},
intro:{
nocount:true
@ -7222,9 +7222,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
delay:0,
content:function(){
'step 0'
var list=player.storage.tianshu;
if(player.additionalSkills.tianshu){
player.removeSkill(player.additionalSkills.tianshu);
var list=player.storage.swdtianshu;
if(player.additionalSkills.swdtianshu){
player.removeSkill(player.additionalSkills.swdtianshu);
}
event.skillai=function(list){
return get.max(list,get.skillRank,'item');
@ -7272,12 +7272,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var link=result;
player.addSkill(link);
player.skills.remove(link);
player.additionalSkills.tianshu=link;
player.additionalSkills.swdtianshu=link;
player.popup(link);
var target=player.storage.tianshu2[player.storage.tianshu.indexOf(link)];
player.markSkillCharacter('tianshu2',target,get.translation(link),lib.translate[link+'_info']);
var target=player.storage.swdtianshu2[player.storage.swdtianshu.indexOf(link)];
player.markSkillCharacter('swdtianshu2',target,get.translation(link),lib.translate[link+'_info']);
player.checkMarks();
player.addSkill('tianshu3');
player.addSkill('swdtianshu3');
},
ai:{
order:10,
@ -7288,17 +7288,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
},
tianshu3:{
swdtianshu3:{
trigger:{global:['useCardAfter','useSkillAfter','phaseAfter']},
silent:true,
filter:function(event){
return event.skill!='tianshu2';
return event.skill!='swdtianshu2';
},
content:function(){
player.removeSkill('tianshu3');
player.removeSkill('swdtianshu3');
}
},
tianshu:{
swdtianshu:{
unique:true,
enable:'phaseUse',
filterCard:function(card){
@ -7327,7 +7327,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return false;
}
},
group:'tianshu_remove',
group:'swdtianshu_remove',
createDialog:function(player,target,onlylist){
var names=[];
var list=[];
@ -7384,7 +7384,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.max(list,get.skillRank,'item');
};
if(event.isMine()){
event.dialog=lib.skill.tianshu.createDialog(player,target);
event.dialog=lib.skill.swdtianshu.createDialog(player,target);
event.switchToAuto=function(){
event._result=event.skillai(event.list);
game.resume();
@ -7393,7 +7393,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.pause();
}
else{
event._result=event.skillai(lib.skill.tianshu.createDialog(player,target,true));
event._result=event.skillai(lib.skill.swdtianshu.createDialog(player,target,true));
}
"step 1"
_status.imchoosing=false;
@ -7401,10 +7401,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.dialog.close();
}
var link=result;
player.addAdditionalSkill('tianshu',link);
player.addAdditionalSkill('swdtianshu',link);
player.popup(link);
player.markSkillCharacter('tianshu',target,get.translation(link),lib.translate[link+'_info']);
player.storage.tianshu=target;
player.markSkillCharacter('swdtianshu',target,get.translation(link),lib.translate[link+'_info']);
player.storage.swdtianshu=target;
player.checkMarks();
game.log(player,'获得了技能','【'+get.translation(link)+'】');
},
@ -7418,35 +7418,35 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
},
tianshu_remove:{
swdtianshu_remove:{
trigger:{global:'dieAfter'},
silent:true,
filter:function(event,player){
return event.player==player.storage.tianshu;
return event.player==player.storage.swdtianshu;
},
content:function(){
player.unmarkSkill('tianshu');
player.removeAdditionalSkill('tianshu');
delete player.storage.tianshu;
player.unmarkSkill('swdtianshu');
player.removeAdditionalSkill('swdtianshu');
delete player.storage.swdtianshu;
}
},
tianshu2_old:{
swdtianshu2_old:{
trigger:{player:'phaseBegin'},
direct:true,
priority:-9,
content:function(){
"step 0"
player.chooseTarget(get.prompt('tianshu'),lib.skill.tianshu.filterTarget).ai=function(target){
player.chooseTarget(get.prompt('swdtianshu'),lib.skill.swdtianshu.filterTarget).ai=function(target){
if(target.maxHp<5) return Math.random()*(5-target.maxHp);
return -1;
};
"step 1"
if(result.bool){
player.logSkill('tianshu',result.targets);
player.logSkill('swdtianshu',result.targets);
event.target=result.targets[0];
if(event.isMine()){
ui.auto.hide();
event.dialog=lib.skill.tianshu.createDialog(player,result.targets[0]);
event.dialog=lib.skill.swdtianshu.createDialog(player,result.targets[0]);
game.pause();
}
else{
@ -7482,8 +7482,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.finish();
}
"step 2"
if(player.storage.tianshu){
player.unmark(player.storage.tianshu+'_charactermark');
if(player.storage.swdtianshu){
player.unmark(player.storage.swdtianshu+'_charactermark');
}
ui.auto.show();
if(event.dialog){
@ -7493,7 +7493,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var target=event.target;
player.addSkill(link);
player.skills.remove(link);
player.additionalSkills.tianshu=link;
player.additionalSkills.swdtianshu=link;
player.markCharacter(target.name,{
name:get.translation(link),
content:lib.translate[link+'_info']
@ -7501,10 +7501,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.addVideo('markCharacter',player,{
name:'get.translation(link)',
content:lib.translate[link+'_info'],
id:'tianshu',
id:'swdtianshu',
target:target.name
});
player.storage.tianshu=target.name;
player.storage.swdtianshu=target.name;
player.checkMarks();
player.popup(link);
},
@ -10144,9 +10144,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tanlin2:'探麟',
pozhen:'破阵',
yunchou:'运筹',
tianshu:'天书',
tianshu_bg:'书',
tianshu2:'天书',
swdtianshu:'天书',
swdtianshu_bg:'书',
swdtianshu2:'天书',
xingdian:'星点',
luomei:'落梅',
yulin:'玉鳞',
@ -10259,8 +10259,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
pozhen_info_alter:'每当你受到一次伤害若你的手牌数小于伤害来源你可以弃置其X张手牌。X为你与伤害来源的手牌数之差。',
yunchou_info:'出牌阶段限一次,你可以弃置一张手牌,并弃置一名其他角色的一张手牌,若两张牌颜色相同,你摸一张牌,否则对方摸一张牌',
yunchou_info_alter:'出牌阶段限一次,你可以弃置一张非基本手牌,并弃置一名其他角色的一张手牌,若两张牌颜色相同,你摸一张牌,否则对方摸一张牌',
tianshu_old_info:'结束阶段你可以弃置一张牌并从三名随机武将中选择一个在2X回合后你将其所有技能加入你的天书列表X为其技能数在技能加入天书列表时或于出牌阶段你可以装备一项天书列表中的技能',
tianshu_info:'出牌阶段,你可以弃置一张锦囊牌,然后获得一名其他角色的一项技能直到该角色死亡(替换以此法获得的前一个技能)',
swdtianshu_old_info:'结束阶段你可以弃置一张牌并从三名随机武将中选择一个在2X回合后你将其所有技能加入你的天书列表X为其技能数在技能加入天书列表时或于出牌阶段你可以装备一项天书列表中的技能',
swdtianshu_info:'出牌阶段,你可以弃置一张锦囊牌,然后获得一名其他角色的一项技能直到该角色死亡(替换以此法获得的前一个技能)',
zaowu_info:'出牌阶段限一次,你可以将一张黑桃或红桃手牌当作封印之蛋使用',
luomei_info:'每当你使用或打出一张梅花花色的牌,你可以摸一张牌',
xingdian_info:'出牌阶段限一次,你可以弃置一张手牌,然后随机弃置两名敌人各一张牌',

View File

@ -3,7 +3,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return {
name:'xianjian',
character:{
pal_lixiaoyao:['male','qun',4,['tianjian','yufeng']],
pal_lixiaoyao:['male','qun',4,['tianjian','xjyufeng']],
pal_zhaoliner:['female','wei',3,['huimeng','tianshe']],
pal_linyueru:['female','wei',3,['guiyuan','qijian']],
pal_anu:['female','wu',3,['lingdi','anwugu']],
@ -229,13 +229,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
switch(player.countUsed()){
case 2:skill='yanzhan';break;
case 3:skill='tianjian';break;
case 4:skill='yufeng';break;
case 4:skill='xjyufeng';break;
}
if(skill&&!player.hasSkill(skill)){
player.addTempSkill(skill);
player.popup(skill);
game.log(player,'获得了','【'+get.translation(skill)+'】');
if(skill=='yufeng'){
if(skill=='xjyufeng'){
var nh=player.countCards('h');
if(nh<2){
player.draw(2-nh);
@ -243,7 +243,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(!player.storage.counttrigger){
player.storage.counttrigger={};
}
player.storage.counttrigger.yufeng=1;
player.storage.counttrigger.xjyufeng=1;
}
}
}
@ -1838,7 +1838,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
},
yufeng:{
xjyufeng:{
trigger:{player:'loseEnd'},
forced:true,
usable:2,
@ -4368,8 +4368,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tianjian:'天剑',
tianjian_info:'出牌阶段限一次,你可以将一张杀当作万箭齐发使用,受到伤害的角色随机弃置一张牌',
tianjian_info_alter:'出牌阶段限一次,你可以将一张杀当作万箭齐发使用',
yufeng:'御风',
yufeng_info:'锁定技当你失去手牌后若手牌数少于2你将手牌数补至2每回合最多发动两次',
xjyufeng:'御风',
xjyufeng_info:'锁定技当你失去手牌后若手牌数少于2你将手牌数补至2每回合最多发动两次',
huimeng:'回梦',
huimeng_info:'每当你回复一点体力,可以摸两张牌',
tianshe:'天蛇',

View File

@ -1449,7 +1449,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
aiValue:function(player,card,num){
if(card.name=='zhangba') return 15;
if(player.getEquip('zhangba')&&player.countCards('h')>1&&['shan','tao'].contains(card.name)) return 0;
if(player.getEquip('zhangba')&&player.countCards('hs')>1&&['shan','tao'].contains(card.name)) return 0;
if(card.name=='shan'||card.name=='tao') return num/2;
},
},
@ -1459,11 +1459,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
discard:false,
filter:function (event,player){
if(player.hasJudge('lebu')) return false;
return player.countCards('he',{suit:'diamond'})>0;
return player.countCards('hes',{suit:'diamond'})>0;
},
viewAs:{name:'lebu'},
//prepare:"throw",
position:"he",
position:"hes",
filterCard:function(card,player,event){
return get.suit(card)=='diamond'&&player.canAddJudge({name:'lebu',cards:[card]});
},
@ -1473,7 +1473,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
check:function(card){
var player=_status.event.player;
if(!player.getEquip('zhangba')&&player.countCards('h','sha')<2){
if(!player.getEquip('zhangba')&&player.countCards('hs','sha')<2){
if(player.countCards('h',function(cardx){
return cardx!=card&&cardx.name=='shan';
})>0) return 0;

View File

@ -1117,7 +1117,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'taoluan',
enable:'chooseToUse',
filter:function(event,player){
return event.type!='wuxie'&&event.type!='respondShan'&&!player.hasSkill('xintaoluan3')&&player.countCards('he')>0&&!_status.dying.length;
return event.type!='wuxie'&&event.type!='respondShan'&&!player.hasSkill('xintaoluan3')&&player.countCards('hes')>0&&!_status.dying.length;
},
init:function(player){
if(!player.storage.xintaoluan) player.storage.xintaoluan=[];
@ -1147,7 +1147,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
check:function(button){
var player=_status.event.player;
if(player.countCards('h',button.link[2])>0) return 0;
if(player.countCards('hs',button.link[2])>0) return 0;
if(button.link[2]=='wugu') return;
var effect=player.getUseValue(button.link[2]);
if(effect>0) return effect;
@ -1162,7 +1162,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
check:function(card){
return 6-get.value(card);
},
position:'he',
position:'hes',
viewAs:{name:links[0][2],nature:links[0][3]},
onuse:function(result,player){
var evt=_status.event.getParent('phase');
@ -1257,7 +1257,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
prompt:'将一张牌当做闪使用',
enable:'chooseToUse',
filter:function(event,player){
return player.countCards('he')&&!player.storage.xintaoluan.contains('shan')&&!player.hasSkill('xintaoluan3')&&!_status.dying.length;
return player.countCards('hes')&&!player.storage.xintaoluan.contains('shan')&&!player.hasSkill('xintaoluan3')&&!_status.dying.length;
},
onuse:function(result,player){
var evt=_status.event.getParent('phase');
@ -1275,7 +1275,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.xintaoluan.add('shan');
},
filterCard:true,
position:'he',
position:'hes',
selectCard:1,
viewAs:{name:'shan'},
check:function(card){
@ -1294,7 +1294,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
skillTagFilter:function(player){
return player.countCards('he')&&!player.storage.xintaoluan.contains('shan')&&!player.hasSkill('xintaoluan3');
return player.countCards('hes')&&!player.storage.xintaoluan.contains('shan')&&!player.hasSkill('xintaoluan3');
},
threaten:1.5,
respondShan:true,
@ -1305,10 +1305,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'chooseToUse',
prompt:'将一张牌当做无懈可击使用',
filter:function(event,player){
return player.countCards('he')&&(!player.storage.xintaoluan.contains('wuxie'))&&!player.hasSkill('xintaoluan3')&&!_status.dying.length;
return player.countCards('hes')&&(!player.storage.xintaoluan.contains('wuxie'))&&!player.hasSkill('xintaoluan3')&&!_status.dying.length;
},
viewAsFilter:function(player){
return player.countCards('he')&&(!player.storage.xintaoluan.contains('wuxie'))&&!player.hasSkill('xintaoluan3')&&!_status.dying.length;
return player.countCards('hes')&&(!player.storage.xintaoluan.contains('wuxie'))&&!player.hasSkill('xintaoluan3')&&!_status.dying.length;
},
onuse:function(result,player){
var evt=_status.event.getParent('phase');
@ -1326,7 +1326,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.xintaoluan.add('wuxie');
},
filterCard:true,
position:'he',
position:'hes',
selectCard:1,
viewAs:{name:'wuxie'},
check:function(card){
@ -3754,10 +3754,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
enable:'chooseToUse',
filter:function(event,player){
return event.type!='wuxie'&&event.type!='respondShan'&&!player.hasSkill('taoluan3')&&player.countCards('he')>0;//&&!_status.dying.length;
return event.type!='wuxie'&&event.type!='respondShan'&&!player.hasSkill('taoluan3')&&player.countCards('hes')>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));
return (!player.storage.taoluan.contains(name)&&player.countCards('hes')>0&&!player.hasSkill('taoluan3')&&lib.inpile.contains(name));
},
init:function(player){
if(!player.storage.taoluan) player.storage.taoluan=[];
@ -3787,7 +3787,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
check:function(button){
var player=_status.event.player;
if(player.countCards('h',button.link[2])>0) return 0;
if(player.countCards('hs',button.link[2])>0) return 0;
if(button.link[2]=='wugu') return 0;
var effect=player.getUseValue(button.link[2]);
if(effect>0) return effect;
@ -3802,7 +3802,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
check:function(card){
return 6-get.value(card);
},
position:'he',
position:'hes',
viewAs:{name:links[0][2],nature:links[0][3]},
onuse:function(result,player){
player.storage.taoluan.add(result.card.name);
@ -3815,7 +3815,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
ai:{
skillTagFilter:function(player){
if(!player.countCards('he')||player.hasSkill('taoluan3')) return false;
if(!player.countCards('hes')||player.hasSkill('taoluan3')) return false;
if(!player.storage.taoluan.contains('tao')){}
else if(player.isDying()&&!player.storage.taoluan.contains('jiu')){}
else return false;
@ -3855,9 +3855,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var player=_status.event.player;
if(get.attitude(player,target)>0){
if(get.attitude(target,player)>0){
return target.countCards('h');
return target.countCards('he');
}
return target.countCards('h')/2;
return target.countCards('he')/2;
}
return 0;
});
@ -3892,18 +3892,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
prompt:'将一张牌当做闪使用',
enable:'chooseToUse',
filter:function(event,player){
return !player.storage.taoluan.contains('shan')&&!player.hasSkill('taoluan3')&&player.countCards('he');//&&!_status.dying.length;
return !player.storage.taoluan.contains('shan')&&!player.hasSkill('taoluan3')&&player.countCards('hes');//&&!_status.dying.length;
},
onuse:function(result,player){
player.storage.taoluan.add('shan');
},
filterCard:true,
position:'he',
position:'hes',
selectCard:1,
viewAs:{name:'shan'},
ai:{
skillTagFilter:function(player){
return player.countCards('he')&&!player.storage.taoluan.contains('shan')&&!player.hasSkill('taoluan3');
return player.countCards('hes')&&!player.storage.taoluan.contains('shan')&&!player.hasSkill('taoluan3');
},
threaten:1.5,
respondShan:true,
@ -3914,13 +3914,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'chooseToUse',
prompt:'将一张牌当做无懈可击使用',
viewAsFilter:function(player){
return !player.storage.taoluan.contains('wuxie')&&!player.hasSkill('taoluan3')&&player.countCards('he');
return !player.storage.taoluan.contains('wuxie')&&!player.hasSkill('taoluan3')&&player.countCards('hes');
},
onuse:function(result,player){
player.storage.taoluan.add('wuxie');
},
filterCard:true,
position:'he',
position:'hes',
selectCard:1,
viewAs:{name:'wuxie'},
},
@ -5184,8 +5184,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.color(card)=='black';
},
viewAsFilter:function(player){
return player.countCards('h',{color:'black'})>0;
return player.countCards('hs',{color:'black'})>0;
},
position:'hs',
viewAs:{name:'wuxie'},
prompt:'将一张黑色手牌当无懈可击使用',
check:function(card){return 8-get.value(card)},
@ -5198,8 +5199,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.color(card)=='red';
},
viewAs:{name:'shan'},
position:'hs',
viewAsFilter:function(player){
if(!player.countCards('h',{color:'red'})) return false;
if(!player.countCards('hs',{color:'red'})) return false;
},
audio:true,
prompt:'将一张红色手牌当闪使用或打出',
@ -7892,27 +7894,33 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:['chooseToUse','chooseToRespond'],
filterCard:true,
selectCard:2,
position:'h',
position:'hs',
audio:2,
derivation:['new_rewusheng','olpaoxiao'],
viewAs:{name:'sha'},
prompt:'将两张手牌当杀使用或打出',
viewAsFilter:function(player){
return player.countCards('hs')>1;
},
check:function(card){
if(_status.event.player.hasSkill('new_rewusheng')&&get.color(card)=='red') return 0;
if(_status.event.name=='chooseToRespond'){
if(card.name=='sha') return 0;
return 6-get.useful(card);
}
if(_status.event.player.countCards('h')<4) return 6-get.useful(card);
if(_status.event.player.countCards('hs')<4) return 6-get.useful(card);
return 7-get.useful(card);
},
ai:{
respondSha:true,
skillTagFilter:function(player){
if(player.countCards('hs')<2) return false;
},
order:function(item,player){
if(player.hasSkill('new_rewusheng')&&player.hasSkill('olpaoxiao')){
return 1;
}
if(player.countCards('h')<4){
if(player.countCards('hs')<4){
return 1;
}
return 4;

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.109.3.8',
'v1.9.110',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -701,6 +701,8 @@ window.noname_asset_list=[
'audio/die/sp_bianfuren.mp3',
'audio/die/sp_duyu.mp3',
'audio/die/zongyu.mp3',
'audio/die/nanhualaoxian.mp3',
'audio/die/simazhou.mp3',
'audio/skill/decadezishou1.mp3',
'audio/skill/decadezishou2.mp3',
@ -3087,6 +3089,14 @@ window.noname_asset_list=[
'audio/skill/spyuejian2.mp3',
'audio/skill/zyqiao1.mp3',
'audio/skill/zyqiao2.mp3',
'audio/skill/caiwang1.mp3',
'audio/skill/caiwang2.mp3',
'audio/skill/naxiang1.mp3',
'audio/skill/naxiang2.mp3',
'audio/skill/tianshu1.mp3',
'audio/skill/tianshu2.mp3',
'audio/skill/yufeng1.mp3',
'audio/skill/yufeng2.mp3',
'audio/voice/male/0.mp3',
'audio/voice/male/1.mp3',
@ -3183,7 +3193,8 @@ window.noname_asset_list=[
'image/card/kuwu.png',
'image/card/jiuwei.png',
'image/card/mianju.png',
'image/card/shoulijian.png','image/card/rewrite_bagua.png',
'image/card/shoulijian.png',
'image/card/rewrite_bagua.png',
'image/card/rewrite_baiyin.png',
'image/card/rewrite_lanyinjia.png',
'image/card/rewrite_renwang.png',
@ -3893,6 +3904,7 @@ window.noname_asset_list=[
'image/character/noname_machao.png',
'image/character/noname_sunce.png',
'image/character/simazhou.jpg',
'image/character/nanhualaoxian.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -5161,6 +5161,12 @@
map.expand_dialog.hide();
map.fouralign.hide();
}
if(config.versus_mode=='three'){
map.edit_character_three.show();
}
else{
map.edit_character_three.hide();
}
if(config.versus_mode=='three'||config.versus_mode=='one'){
map.enable_all_three.show();
map.enable_all_cards.show();
@ -5425,6 +5431,113 @@
},
clear:true,
},
edit_character_three:{
name:'编辑统率将池',
clear:true,
onclick:function(){
if(get.mode()!='versus'){
alert('请进入对决模式,然后再编辑将池');
return;
}
var container=ui.create.div('.popup-container.editor');
var editorpage=ui.create.div(container);
var discardConfig=ui.create.div('.editbutton','取消',editorpage,function(){
ui.window.classList.remove('shortcutpaused');
ui.window.classList.remove('systempaused');
container.delete(null);
delete window.saveNonameInput;
});
var node=container;
var map=get.config('character_three')||lib.choiceThree;
var str='character=[\n ';
for(var i=0;i<map.length;i++){
str+='"'+map[i]+'",';
if(i+1<map.length&&(i+1)%5==0) str+='\n ';
}
str+='\n];';
node.code=str;
ui.window.classList.add('shortcutpaused');
ui.window.classList.add('systempaused');
var saveInput=function(){
var code;
if(container.editor){
code=container.editor.getValue();
}
else if(container.textarea){
code=container.textarea.value;
}
try{
var character=null;
eval(code);
if(!Array.isArray(character)){
throw('err');
}
}
catch(e){
alert('代码语法有错误,请仔细检查('+e+'');
return;
}
game.saveConfig('character_three',character,'versus');
ui.window.classList.remove('shortcutpaused');
ui.window.classList.remove('systempaused');
container.delete();
container.code=code;
delete window.saveNonameInput;
};
window.saveNonameInput=saveInput;
var saveConfig=ui.create.div('.editbutton','保存',editorpage,saveInput);
var editor=ui.create.div(editorpage);
if(node.aced){
ui.window.appendChild(node);
node.editor.setValue(node.code,1);
}
else if(lib.device=='ios'){
ui.window.appendChild(node);
if(!node.textarea){
var textarea=document.createElement('textarea');
editor.appendChild(textarea);
node.textarea=textarea;
lib.setScroll(textarea);
}
node.textarea.value=node.code;
}
else{
var aceReady=function(){
ui.window.appendChild(node);
var mirror = window.CodeMirror(editor, {
value:node.code,
mode:"javascript",
lineWrapping:!lib.config.touchscreen&&lib.config.mousewheel,
lineNumbers:true,
indentUnit:4,
autoCloseBrackets:true,
theme:'mdn-like'
});
lib.setScroll(editor.querySelector('.CodeMirror-scroll'));
node.aced=true;
node.editor=mirror;
}
if(!window.ace){
lib.init.js(lib.assetURL+'game','codemirror',aceReady);
lib.init.css(lib.assetURL+'layout/default','codemirror');
}
else{
aceReady();
}
};
},
},
reset_character_three:{
name:'重置将池',
intro:'将统率三军模式下的将池重置为默认将池',
clear:true,
onclick:function(){
if(confirm('该操作不可撤销!是否清除统率三军模式的自定义将池,并将其重置为默认将池?')){
game.saveConfig('character_three',null,'versus');
alert('将池已重置');
}
},
},
}
},
connect:{
@ -14901,7 +15014,7 @@
var sort;
var frag1=document.createDocumentFragment();
var frag2=document.createDocumentFragment();
var hs=player.getCards('h');
var hs=player.getCards('hs');
for(var i=0;i<cards.length;i++){
if(hs.contains(cards[i])){
cards.splice(i--,1);
@ -15061,19 +15174,15 @@
}
"step 1"
event.gaintag_map={};
var hs=[],es=[],js=[];
var hs=[],es=[],js=[],ss=[];
if(event.insert_card&&event.position==ui.cardPile) event.cards.reverse();
var hej=player.getCards('hej');
var hej=player.getCards('hejs');
event.stockcards=cards.slice(0);
for(var i=0;i<cards.length;i++){
if(cards[i].gaintag&&cards[i].gaintag.length){
event.gaintag_map[cards[i].cardid]=cards[i].gaintag.slice(0);
cards[i].removeGaintag(true);
}
cards[i].style.transform+=' scale(0.2)';
cards[i].classList.remove('glow');
cards[i].recheck();
if(!hej.contains(cards[i])){
cards.splice(i--,1);
}
@ -15087,14 +15196,25 @@
js.push(cards[i]);
}
else if(cards[i].parentNode.classList.contains('handcards')){
cards[i].original='h';
hs.push(cards[i]);
if(cards[i].classList.contains('glows')){
cards[i].original='s';
ss.push(cards[i]);
}
else{
cards[i].original='h';
hs.push(cards[i]);
}
}
else{
cards[i].original=null;
}
}
cards[i].style.transform+=' scale(0.2)';
cards[i].classList.remove('glow');
cards[i].classList.remove('glows');
cards[i].recheck();
var info=lib.card[cards[i].name];
if(info.destroy||cards[i]._destroy){
cards[i].delete();
@ -15122,12 +15242,14 @@
else{
cards[i].remove();
}
//if(ss.contains(cards[i])) cards.splice(i--,1);
}
if(player==game.me) ui.updatehl();
ui.updatej(player);
game.broadcast(function(player,cards,num){
for(var i=0;i<cards.length;i++){
cards[i].classList.remove('glow');
cards[i].classList.remove('glows');
cards[i].fix();
cards[i].remove();
}
@ -15137,7 +15259,7 @@
ui.updatej(player);
_status.cardPileNum=num;
},player,cards,ui.cardPile.childNodes.length);
game.addVideo('lose',player,[get.cardsInfo(hs),get.cardsInfo(es),get.cardsInfo(js)]);
game.addVideo('lose',player,[get.cardsInfo(hs),get.cardsInfo(es),get.cardsInfo(js),get.cardsInfo(ss)]);
event.cards2=hs.concat(es);
player.getHistory('lose').push(event);
game.getGlobalHistory().cardMove.push(event);
@ -15153,7 +15275,10 @@
next.relatedEvent=evt;
next.setContent('orderingDiscard');
}
if(!event.noOrdering) evt.orderingCards.addArray(cards);
if(!event.noOrdering){
evt.orderingCards.addArray(cards);
evt.orderingCards.addArray(ss);
}
}
else if(event.position==ui.cardPile){
game.updateRoundNumber();
@ -15161,6 +15286,7 @@
event.hs=hs;
event.es=es;
event.js=js;
event.ss=ss;
"step 2"
if(num<cards.length){
if(event.es.contains(cards[num])){
@ -15600,7 +15726,7 @@
if(lib.character[player.name1]) _status.characterlist.add(player.name1);
if(lib.character[player.name2]) _status.characterlist.add(player.name2);
}
event.cards=player.getCards('hej');
event.cards=player.getCards('hejs');
if(event.cards.length){
player.discard(event.cards).forceDie=true;
//player.$throw(event.cards,1000);
@ -16131,6 +16257,21 @@
},
player:{
//新函数
loseToSpecial:function(cards,tag){
var next=game.loseAsync({
player:this,
cards:cards,
tag:tag,
toStorage:true,
});
next.setContent(function(){
"step 0"
player.lose(cards,ui.special).set('getlx',false);
"step 1"
player.directgains(cards,null,event.tag)
});
return next;
},
addGaintag:function(cards,tag){
game.addVideo('addGaintag',this,[get.cardsInfo(cards),tag]);
game.broadcastAll(function(player,cards,tag){
@ -16151,7 +16292,7 @@
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.inpile.contains(i)||player.countCards('hs',i)){
if(lib.card[i].savable&&lib.filter.cardSavable({name:i},player,target)&&(_status.connectMode||player.hasUsableCard(i))) return true;
}
}
@ -16319,7 +16460,7 @@
},
hasUsableCard:function(name){
var player=this;
if(player.countCards('h',name)) return true;
if(player.countCards('hs',name)) return true;
var skills=player.getSkills(true).concat(lib.skill.global);
game.expandSkills(skills);
for(var i=0;i<skills.length;i++){
@ -17214,10 +17355,11 @@
name:this.name,
name1:this.name1,
name2:this.name2,
handcards:this.getCards('h'),
handcards:this.getCards('hs'),
gaintag:[],
equips:this.getCards('e'),
judges:this.getCards('j'),
specials:this.getCards('s'),
disableJudge:this.storage._disableJudge,
disableEquip:this.storage.disableEquip,
views:[],
@ -17694,12 +17836,24 @@
for(i=0;i<arg1.length;i++){
if(arg1[i]=='h'){
for(j=0;j<this.node.handcards1.childElementCount;j++){
if(!this.node.handcards1.childNodes[j].classList.contains('removing')){
if(!this.node.handcards1.childNodes[j].classList.contains('removing')&&!this.node.handcards1.childNodes[j].classList.contains('glows')){
cards.push(this.node.handcards1.childNodes[j]);
}
}
for(j=0;j<this.node.handcards2.childElementCount;j++){
if(!this.node.handcards2.childNodes[j].classList.contains('removing')){
if(!this.node.handcards2.childNodes[j].classList.contains('removing')&&!this.node.handcards1.childNodes[j].classList.contains('glows')){
cards.push(this.node.handcards2.childNodes[j]);
}
}
}
else if(arg1[i]=='s'){
for(j=0;j<this.node.handcards1.childElementCount;j++){
if(!this.node.handcards1.childNodes[j].classList.contains('removing')&&this.node.handcards1.childNodes[j].classList.contains('glows')){
cards.push(this.node.handcards1.childNodes[j]);
}
}
for(j=0;j<this.node.handcards2.childElementCount;j++){
if(!this.node.handcards2.childNodes[j].classList.contains('removing')&&this.node.handcards1.childNodes[j].classList.contains('glows')){
cards.push(this.node.handcards2.childNodes[j]);
}
}
@ -18242,6 +18396,7 @@
if(next.selectTarget==undefined){
next.selectTarget=lib.filter.selectTarget;
}
next.position='hs';
if(next.ai1==undefined) next.ai1=get.order;
if(next.ai2==undefined) next.ai2=get.effect_use;
next.setContent('chooseToUse');
@ -18310,6 +18465,7 @@
next.prompt=str;
}
}
next.position='hs';
next.setContent('chooseToRespond');
next._args=Array.from(arguments);
return next;
@ -19461,7 +19617,7 @@
}
},
directgain:function(cards,broadcast,gaintag){
var hs=this.getCards('h');
var hs=this.getCards('hs');
for(var i=0;i<cards.length;i++){
if(hs.contains(cards[i])){
cards.splice(i--,1);
@ -19491,6 +19647,51 @@
},this,cards);
return this;
},
directgains:function(cards,broadcast,gaintag){
var hs=this.getCards('hs');
for(var i=0;i<cards.length;i++){
if(hs.contains(cards[i])){
cards.splice(i--,1);
}
}
var addLast=function(card,node){
if(gaintag){
for(var i=0;i<node.childNodes.length;i++){
var add=node.childNodes[node.childNodes.length-i-1];
if(!add.classList.contains('glows')) break;
if(add.hasGaintag(gaintag)){
node.insertBefore(card,add.nextSibling);
return;
}
}
}
node.appendChild(card);
}
for(var i=0;i<cards.length;i++){
cards[i].fix();
cards[i].remove();
if(gaintag) cards[i].addGaintag(gaintag);
cards[i].classList.add('glows');
if(this==game.me){
cards[i].classList.add('drawinghidden');
}
if(get.is.singleHandcard()){
addLast(cards[i],this.node.handcards1);
}
else{
addLast(cards[i],this.node.handcards2);
}
}
if(this==game.me||_status.video) ui.updatehl();
if(!_status.video){
game.addVideo('directgains',this,get.cardsInfo(cards));
this.update();
}
if(broadcast!==false) game.broadcast(function(player,cards,gaintag){
player.directgains(cards,null,gaintag);
},this,cards,gaintag);
return this;
},
gainMultiple:function(targets,position){
var next=game.createEvent('gainMultiple',false);
next.setContent('gainMultiple');
@ -19541,6 +19742,7 @@
hs:[],
es:[],
js:[],
ss:[],
cards:[],
cards2:[],
};
@ -19549,11 +19751,12 @@
map.hs.addArray(evt.hs);
map.es.addArray(evt.es);
map.js.addArray(evt.js);
map.ss.addArray(evt.ss);
map.cards.addArray(evt.cards);
map.cards2.addArray(evt.cards2);
}
});
if(map.cards.length>0) return map;
if(map.cards.length>0||map.ss.length>0) return map;
};
next.gaintag=[];
return next;
@ -19590,7 +19793,7 @@
}
}
if(next.cards){
var hej=this.getCards('hej');
var hej=this.getCards('hejs');
for(var i=0;i<next.cards.length;i++){
if(!hej.contains(next.cards[i])){
next.cards.splice(i--,1);
@ -19973,6 +20176,7 @@
hs:[],
es:[],
js:[],
ss:[],
cards:[],
cards2:[],
};
@ -19981,11 +20185,12 @@
map.hs.addArray(evt.hs);
map.es.addArray(evt.es);
map.js.addArray(evt.js);
map.ss.addArray(evt.ss);
map.cards.addArray(evt.cards);
map.cards2.addArray(evt.cards2);
}
});
if(map.cards.length>0) return map;
if(map.cards.length>0||map.ss.length>0) return map;
};
return next;
},
@ -20004,6 +20209,7 @@
hs:[],
es:[],
js:[],
ss:[],
cards:[],
cards2:[],
};
@ -20012,11 +20218,12 @@
map.hs.addArray(evt.hs);
map.es.addArray(evt.es);
map.js.addArray(evt.js);
map.ss.addArray(evt.ss);
map.cards.addArray(evt.cards);
map.cards2.addArray(evt.cards2);
}
});
if(map.cards.length>0) return map;
if(map.cards.length>0||map.ss.length>0) return map;
};
return next;
},
@ -22086,7 +22293,7 @@
return false;
},
hasWuxie:function(){
if(this.countCards('h','wuxie')) return true;
if(this.countCards('hs','wuxie')) return true;
var skills=this.getSkills(true).concat(lib.skill.global);
game.expandSkills(skills);
for(var i=0;i<skills.length;i++){
@ -22106,15 +22313,15 @@
return false;
},
hasSha:function(respond,noauto){
if(this.countCards('h','sha')) return true;
if(this.countCards('h','hufu')) return true;
if(!noauto&&this.countCards('h','yuchanqian')) return true;
if(this.countCards('hs','sha')) return true;
if(this.countCards('hs','hufu')) return true;
if(!noauto&&this.countCards('hs','yuchanqian')) return true;
if(this.hasSkillTag('respondSha',true,respond?'respond':'use',true)) return true;
return false;
},
hasShan:function(){
if(this.countCards('h','shan')) return true;
if(this.countCards('h','hufu')) return true;
if(this.countCards('hs','shan')) return true;
if(this.countCards('hs','hufu')) return true;
if(this.hasSkillTag('respondShan',true,null,true)) return true;
return false;
},
@ -22131,12 +22338,6 @@
}
else{
if(this.countCards(position,name)) return true;
var mn=this.getEquip('muniu');
if(mn&&mn.cards&&mn.cards.length){
for(var i=0;i<mn.cards.length;i++){
if(mn.cards[i].name==name) return true;
}
}
}
return false;
},
@ -24156,6 +24357,7 @@
node.classList.remove('selected');
node.classList.remove('removing');
node.classList.remove('drawinghidden');
node.classList.remove('glows');
node.node={
name:node.querySelector('.name'),
info:node.querySelector('.info'),
@ -25707,23 +25909,20 @@
},
viewAs:{
name:"sha",
isCard:true,
},
viewAsFilter:function (player){
if(!player.countCards('h','tao')) return false;
if(!player.countCards('hs','tao')) return false;
},
position:'hs',
prompt:"将一张桃当杀使用或打出",
check:function (){return 1},
ai:{
effect:{
target:function (card,player,target,current){
if(get.tag(card,'respondSha')&&current<0) return 0.6
},
},
respondSha:true,
skillTagFilter:function (player){
if(!player.countCards('h','tao')) return false;
skillTagFilter:function(player){
if(!player.countCards('hs','tao')) return false;
},
order:function (){
order:function(){
return get.order({name:'sha'})-0.1;
},
},
@ -25736,21 +25935,18 @@
},
viewAs:{
name:"shan",
isCard:true,
},
prompt:"将一张桃当闪打出",
check:function (){return 1},
viewAsFilter:function (player){
if(!player.countCards('h','tao')) return false;
if(!player.countCards('hs','tao')) return false;
},
position:'hs',
ai:{
respondShan:true,
skillTagFilter:function (player){
if(!player.countCards('h','tao')) return false;
},
effect:{
target:function (card,player,target,current){
if(get.tag(card,'respondShan')&&current<0) return 0.6
},
skillTagFilter:function(player){
if(!player.countCards('hs','tao')) return false;
},
},
sub:true,
@ -27224,6 +27420,9 @@
for(var i=0;i<info.handcards.length;i++){
info.handcards[i].addGaintag(info.gaintag[i]);
}
for(var i=0;i<info.specials.length;i++){
info.specials[i].classList.add('glows');
}
for(var i=0;i<info.judges.length;i++){
if(info.views[i]&&info.views[i]!=info.judges[i]){
info.judges[i].classList.add('fakejudge');
@ -27490,6 +27689,7 @@
hs:[],
es:[],
js:[],
ss:[],
cards:[],
cards2:[],
};
@ -27498,11 +27698,12 @@
map.hs.addArray(evt.hs);
map.es.addArray(evt.es);
map.js.addArray(evt.js);
map.ss.addArray(evt.ss);
map.cards.addArray(evt.cards);
map.cards2.addArray(evt.cards2);
}
});
if(map.cards.length>0) return map;
if(map.cards.length>0||map.ss.length>0) return map;
};
if(arg&&get.is.object(arg)){
for(var i in arg) next[i]=arg[i];
@ -29775,6 +29976,14 @@
console.log(player);
}
},
directgains:function(player,cards){
if(player&&cards){
player.directgains(get.infoCards(cards));
}
else{
console.log(player);
}
},
directequip:function(player,cards){
if(player&&cards){
player.directequip(get.infoCards(cards));
@ -29911,8 +30120,8 @@
},
lose:function(player,info){
if(player&&info){
var hs=info[0],es=info[1],js=info[2];
var phs=player.getCards('h'),pes=player.getCards('e'),pjs=player.getCards('j');
var hs=info[0],es=info[1],js=info[2],ss=info[3];
var phs=player.getCards('h'),pes=player.getCards('e'),pjs=player.getCards('j'),pss=player.getCards('s');
var checkMatch=function(l1,l2){
for(var i=0;i<l1.length;i++){
for(var j=0;j<l2.length;j++){
@ -29927,6 +30136,7 @@
checkMatch(hs,phs);
checkMatch(es,pes);
checkMatch(js,pjs);
checkMatch(ss,pss);
ui.updatehl();
}
else{
@ -32487,7 +32697,7 @@
args[i]=arguments[i];
}
if((args.length==0||args.contains('card'))&&_status.event.player){
var cards=_status.event.player.getCards('hej');
var cards=_status.event.player.getCards('hejs');
for(j=0;j<cards.length;j++){
cards[j].classList.remove('selected');
cards[j].classList.remove('selectable');
@ -47057,7 +47267,7 @@
if(lib.config.popequip&&get.is.phoneLayout()&&
arguments[0]!='popequip'&&ui.arena&&ui.arena.classList.contains('selecting')&&
this.parentNode.classList.contains('popequip')){
this.parentNode&&this.parentNode.classList.contains('popequip')){
var rect=this.getBoundingClientRect();
ui.click.touchpop();
ui.click.intro.call(this.parentNode,{
@ -50181,10 +50391,10 @@
itemtype:function(obj){
var i,j;
if(typeof obj=='string'){
if(obj.length<=3){
if(obj.length<=4){
var bool=true;
for(i=0;i<obj.length;i++){
if(/h|e|j/.test(obj[i])==false){
if(/h|e|j|s/.test(obj[i])==false){
bool=false;break;
}
}
@ -50527,7 +50737,7 @@
if(card.timeout&&card.destiny){
if(card.destiny.classList.contains('equips')) return 'e';
if(card.destiny.classList.contains('judges')) return 'j';
if(card.destiny.classList.contains('handcards')) return 'h';
if(card.destiny.classList.contains('handcards')) return card.classList.contains('glows')?'s':'h';
if(card.destiny.id=='cardPile') return 'c';
if(card.destiny.id=='discardPile') return 'd';
if(card.destiny.id=='special') return 's';
@ -50537,7 +50747,7 @@
if(!card.parentNode) return;
if(card.parentNode.classList.contains('equips')) return 'e';
if(card.parentNode.classList.contains('judges')) return 'j';
if(card.parentNode.classList.contains('handcards')) return 'h';
if(card.parentNode.classList.contains('handcards')) return card.classList.contains('glows')?'s':'h';
if(card.parentNode.id=='cardPile') return 'c';
if(card.parentNode.id=='discardPile') return 'd';
if(card.parentNode.id=='special') return 's';
@ -50724,7 +50934,7 @@
},
selectableCards:function(sort){
if(!_status.event.player) return[];
var cards=_status.event.player.getCards('hej');
var cards=_status.event.player.getCards('hejs');
var selectable=[];
for(var i=0;i<cards.length;i++){
if(cards[i].classList.contains('selectable')&&

View File

@ -1,20 +1,20 @@
window.noname_update={
version:'1.9.109.3.8',
update:'1.9.109.3.7',
version:'1.9.110',
update:'1.9.109.3.8',
changeLog:[
'吉祥物小无',
'司马伷、晋羊徽瑜',
'bug修复',
'木牛流马修改',
'南华老仙',
'该版本不兼容现有的十周年UI请关闭十周年UI后运行',
],
files:[
//'card/extra.js',
'card/extra.js',
//'card/gujian.js',
//'card/guozhan.js',
'card/guozhan.js',
//'card/gwent.js',
//'card/huanlekapai.js',
//'card/mtg.js',
//'card/sp.js',
//'card/standard.js',
'card/sp.js',
'card/standard.js',
//'card/swd.js',
//'card/yunchou.js',
//'card/yingbian.js',
@ -28,35 +28,35 @@ window.noname_update={
//'character/hearth.js',
'character/mobile.js',
//'character/mtg.js',
//'character/old.js',
'character/old.js',
//'character/ow.js',
'character/rank.js',
//'character/refresh.js',
//'character/shenhua.js',
'character/refresh.js',
'character/shenhua.js',
'character/sp.js',
'character/sp2.js',
//'character/tw.js',
//'character/standard.js',
//'character/swd.js',
//'character/xianjian.js',
//'character/xinghuoliaoyuan.js',
//'character/yijiang.js',
'character/standard.js',
'character/swd.js',
'character/xianjian.js',
'character/xinghuoliaoyuan.js',
'character/yijiang.js',
//'character/yxs.js',
//'extension/boss/extension.js',
//'layout/default/layout.css',
'layout/default/layout.css',
//'layout/default/menu.css',
//'layout/nova/layout.css',
//'mode/boss.js',
//'mode/brawl.js',
//'mode/chess.js',
//'mode/doudizhu.js',
'mode/doudizhu.js',
'mode/guozhan.js',
//'mode/identity.js',
//'mode/single.js',
//'mode/stone.js',
//'mode/tafang.js',
//'mode/versus.js',
//'game/game.js',
'mode/versus.js',
'game/game.js',
//'game/keyWords.js',
//'game/NoSleep.js',
//'game/config.js',

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 KiB

After

Width:  |  Height:  |  Size: 154 KiB

View File

@ -3424,7 +3424,7 @@ div:not(.handcards)>.card>.info>span,
#window:not(.nopointer) .pointertable td>span,
#window:not(.nopointer) .config>.toggle.onoff,
#window:not(.nopointer) .pointerdialog .button:not(.unselectable),
#window:not(.nopointer) .dialog.fullheight .buttons .button:not(.selectedx):not(.glow):not(.forbidden),
#window:not(.nopointer) .dialog.fullheight .buttons .button:not(.selectedx):not(.glow):not(.glows):not(.forbidden),
#window:not(.nopointer) #arena.selecting:not(.video) .player .equips>.card.selectable,
#window:not(.nopointer) #arena.selecting #me .card.selectable,
#window:not(.nopointer) #arena.selecting .button.selectable,
@ -4483,6 +4483,7 @@ div[data-decoration="bronze"]::after{
}*/
.player.selectable:not(.selected)::before,
.card.glow::before,
.card.glows::before,
.button.glow::before {
opacity: 1;
}
@ -4503,6 +4504,9 @@ div[data-decoration="bronze"]::after{
#me .card.glow::before {
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px,rgb(0, 133, 255) 0 0 5px, rgba(0, 133, 255,1) 0 0 10px;
}
#me .card.glows::before {
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px,rgb(255, 153, 51) 0 0 5px, rgba(255, 153, 51,1) 0 0 10px;
}
#me>#handcards1:not(.scrollh),
#me>#handcards2:not(.scrollh) {
@ -4514,6 +4518,9 @@ div[data-decoration="bronze"]::after{
#me>div:not(.scrollh)>.handcards>.card.selected{
top:-20px;
}*/
.glows:not(.button):not(.card){
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(255, 153, 51, 0.4) 0 0 5px, rgba(255, 153, 51, 0.5) 0 0 12px, rgba(255, 153, 51, 0.8) 0 0 15px !important;
}
.glow:not(.button):not(.card){
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 133, 255, 0.4) 0 0 5px, rgba(0, 133, 255, 0.5) 0 0 12px, rgba(0, 133, 255, 0.8) 0 0 15px !important;
}

View File

@ -1589,7 +1589,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
_gongshoujintui:{
enable:'chooseToUse',
filter:function(event,player){
var cards=player.getCards('h');
var cards=player.getCards('hs');
for(var i of cards){
var name=get.name(i,player);
if(name=='gongshoujianbei'){
@ -1620,11 +1620,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
chooseButton:{
dialog:function(event,player){
var list=[];
if(player.countCards('h','gongshoujianbei')){
if(player.countCards('hs','gongshoujianbei')){
list.push(['锦囊','','wanjian']);
list.push(['锦囊','','taoyuan']);
}
if(player.countCards('h','jintuiziru')){
if(player.countCards('hs','jintuiziru')){
list.push(['锦囊','','nanman']);
list.push(['锦囊','','wugu']);
}
@ -1633,7 +1633,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
filter:function(button,player){
var name=button.link[2];
var rawname=((name=='wanjian'||name=='taoyuan')?'gongshoujianbei':'jintuiziru');
var cards=player.getCards('h');
var cards=player.getCards('hs');
var evt=_status.event.getParent();
for(var i of cards){
if(get.name(i,player)==rawname&&evt.filterCard({

View File

@ -1078,7 +1078,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gzbiluan:{
mod:{
globalTo:function(from,to,distance){
return distance+to.countCards('e');
return distance+Math.max(1,to.countCards('e'));
},
},
},
@ -2754,9 +2754,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
name:"sha",
},
viewAsFilter:function(player){
if(!player.countCards('h','shan')) return false;
if(!player.countCards('hs','shan')) return false;
},
prompt:"将一张闪当杀使用或打出",
position:'hs',
check:function(){return 1},
ai:{
effect:{
@ -2766,7 +2767,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
respondSha:true,
skillTagFilter:function(player){
if(!player.countCards('h','shan')) return false;
if(!player.countCards('hs','shan')) return false;
},
order:function(){
return get.order({name:'sha'})+0.1;
@ -2783,15 +2784,16 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
viewAs:{
name:"shan",
},
position:'hs',
prompt:"将一张杀当闪使用或打出",
check:function(){return 1},
viewAsFilter:function(player){
if(!player.countCards('h','sha')) return false;
if(!player.countCards('hs','sha')) return false;
},
ai:{
respondShan:true,
skillTagFilter:function(player){
if(!player.countCards('h','sha')) return false;
if(!player.countCards('hs','sha')) return false;
},
effect:{
target:function(card,player,target,current){
@ -2908,9 +2910,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
filter:function(event,player){
if(player.hasSkill('new_duanliang_off')) return false;
return player.countCards('he',{type:['basic','equip'],color:'black'})
return player.countCards('hes',{type:['basic','equip'],color:'black'})
},
position:"he",
position:"hes",
viewAs:{
name:"bingliang",
},
@ -2978,6 +2980,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
return !player.storage.new_luanji.contains(get.suit(card));
},
selectCard:2,
position:'hs',
filter:function(event,player){
return player.countCards('hs',function(card){
return !player.storage.new_luanji||!player.storage.new_luanji.contains(get.suit(card));
})>1;
},
check:function(card){
var player=_status.event.player;
var targets=game.filterPlayer(function(current){
@ -3416,8 +3424,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
viewAs:{
name:"sha",
},
position:'hs',
viewAsFilter:function(player){
if(!player.countCards('h','shan')) return false;
if(!player.countCards('hs','shan')) return false;
},
prompt:"将一张闪当杀使用或打出",
check:function(){return 1},
@ -3429,7 +3438,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
respondSha:true,
skillTagFilter:function(player){
if(!player.countCards('h','shan')) return false;
if(!player.countCards('hs','shan')) return false;
},
order:function(){
return get.order({name:'sha'})+0.1;
@ -3446,15 +3455,16 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
viewAs:{
name:"shan",
},
position:'hs',
prompt:"将一张杀当闪使用或打出",
check:function(){return 1},
viewAsFilter:function(player){
if(!player.countCards('h','sha')) return false;
if(!player.countCards('hs','sha')) return false;
},
ai:{
respondShan:true,
skillTagFilter:function(player){
if(!player.countCards('h','sha')) return false;
if(!player.countCards('hs','sha')) return false;
},
effect:{
target:function(card,player,target,current){
@ -4054,7 +4064,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
audio:'bmcanshi',
enable:"phaseUse",
filter:function(event,player){
return player.countCards('h',{suit:'spade'})>0;
return player.countCards('hs',{suit:'spade'})>0;
},
init:function(player){
if(!player.storage.hmkguishu) player.storage.hmkguishu=0;
@ -4079,7 +4089,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
return 3;
}
if(button.link=='zhibi'){
if(player.countCards('h',{suit:'spade'})>2) return 1;
if(player.countCards('hs',{suit:'spade'})>2) return 1;
return 0;
}
},
@ -4089,7 +4099,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
filterCard:function(card,player){
return get.suit(card)=='spade';
},
position:"h",
position:"hs",
selectCard:1,
popname:true,
ai:function(card){
@ -7004,8 +7014,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
viewAs:{name:'yiyi'},
usable:4,
filterCard:{color:'red'},
position:'hs',
viewAsFilter:function(player){
return player.countCards('h',{color:'red'})>0;
return player.countCards('hs',{color:'red'})>0;
},
check:function(card){
return 5-get.value(card);
@ -8311,7 +8322,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gzmidao:'米道',
gzmidao_info:'与你势力相同的其他角色的出牌阶段限一次。该角色使用基本牌或普通锦囊牌指定目标时,其可交给你一张手牌,然后你可改变此牌的花色和点数。',
gzbiluan:'避乱',
gzbiluan_info:'锁定技,其他角色计算至你的距离时+XX为你装备区内的牌数)。',
gzbiluan_info:'锁定技,其他角色计算至你的距离时+XX为你装备区内的牌数且至少为1)。',
gzlixia:'礼下',
gzlixia_info:'与你势力不同的角色的准备阶段开始时其可弃置你装备区内的一张牌然后其选择一项①弃置两张牌。②失去1点体力。③令你摸两张牌。',
mffengshi:'锋势',

View File

@ -1944,13 +1944,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
lib.init.onfree();
}
else{
var chara=(get.config('character_three')||lib.choiceThree);
game.chooseCharacterDouble(function(i){
if(get.config('enable_all_three')){
if(lib.filter.characterDisabled(i)) return false;
return !lib.filter.characterDisabled(i);
}
else{
return lib.choiceThree.contains(i);
return chara.contains(i);
}
},function(i){
return i==1?'主帅':'前锋';