This commit is contained in:
libccy 2017-02-05 23:22:29 +08:00
parent 6ad9c8b8b6
commit da0efe4982
15 changed files with 92 additions and 82 deletions

View File

@ -7,7 +7,9 @@ card.hearth={
enable:true, enable:true,
filterTarget:true, filterTarget:true,
content:function(){ content:function(){
'step 0'
target.damage('fire'); target.damage('fire');
'step 1'
var hs=player.get('h'); var hs=player.get('h');
if(hs.length){ if(hs.length){
player.discard(hs.randomGet()); player.discard(hs.randomGet());

View File

@ -61,6 +61,9 @@ card.sp={
if(hs.length==1&&hs[0]!=card) return true; if(hs.length==1&&hs[0]!=card) return true;
return false; return false;
}, },
chongzhu:function(){
return game.players.length<=2;
},
type:'trick', type:'trick',
selectTarget:2, selectTarget:2,
multitarget:true, multitarget:true,
@ -619,7 +622,7 @@ card.sp={
du:'毒', du:'毒',
du_info:'当你因使用、打出或弃置而失去此牌时,你失去一点体力', du_info:'当你因使用、打出或弃置而失去此牌时,你失去一点体力',
shengdong:'声东击西', shengdong:'声东击西',
shengdong_info:'出牌阶段,对一名其他角色使用。你交给目标角色一张手牌,若如此做,其将两张牌交给另一名由你选择的其他角色', shengdong_info:'出牌阶段,对一名其他角色使用。你交给目标角色一张手牌,若如此做,其将两张牌交给另一名由你选择的其他角色存活角色不超过2时可重铸',
zengbin:'增兵减灶', zengbin:'增兵减灶',
zengbin_info:'出牌阶段对一名角色使用。目标角色摸三张牌然后选择一项1.弃置一张非基本牌2.弃置两张牌', zengbin_info:'出牌阶段对一名角色使用。目标角色摸三张牌然后选择一项1.弃置一张非基本牌2.弃置两张牌',
caomu:'草木皆兵', caomu:'草木皆兵',

View File

@ -994,6 +994,8 @@ card.swd={
}, },
ai:{ ai:{
order:10, order:10,
value:6,
useful:1,
result:{ result:{
target:function(player,target){ target:function(player,target){
if(target==player&&target.num('h',{type:'equip'})) return 2.5; if(target==player&&target.num('h',{type:'equip'})) return 2.5;

View File

@ -12,7 +12,7 @@ card.yunchou={
player.draw(); player.draw();
"step 1" "step 1"
ui.clear(); ui.clear();
var cards=get.cards(Math.floor(game.players.length/2)); var cards=get.cards(Math.ceil(game.players.length/2));
var dialog=ui.create.dialog('调兵遣将',cards,true); var dialog=ui.create.dialog('调兵遣将',cards,true);
_status.dieClose.push(dialog); _status.dieClose.push(dialog);
dialog.videoId=lib.status.videoId++; dialog.videoId=lib.status.videoId++;
@ -33,7 +33,7 @@ card.yunchou={
var minValue=20; var minValue=20;
var hs=target.get('h'); var hs=target.get('h');
for(var i=0;i<hs.length;i++){ for(var i=0;i<hs.length;i++){
minValue=Math.min(minValue,ai.get.value(hs[i])); minValue=Math.min(minValue,ai.get.value(hs[i],target));
} }
if(target.isUnderControl(true)){ if(target.isUnderControl(true)){
event.dialog.setCaption('选择一张牌并用一张手牌替换之'); event.dialog.setCaption('选择一张牌并用一张手牌替换之');
@ -78,17 +78,18 @@ card.yunchou={
event.finish(); event.finish();
return; return;
} }
var att=ai.get.attitude(player,player.nextSeat); var nextSeat=_status.currentPhase.next;
var att=ai.get.attitude(player,nextSeat);
if(player.isUnderControl(true)&&!_status.auto){ if(player.isUnderControl(true)&&!_status.auto){
event.dialog.setCaption('将任意张牌以任意顺序置于牌堆顶(先选择的在上)'); event.dialog.setCaption('将任意张牌以任意顺序置于牌堆顶(先选择的在上)');
} }
var next=player.chooseButton([1,event.dialog.buttons.length],event.dialog); var next=player.chooseButton([1,event.dialog.buttons.length],event.dialog);
next.ai=function(button){ next.ai=function(button){
if(att>0){ if(att>0){
return ai.get.value(button.link,player.nextSeat)-5; return ai.get.value(button.link,nextSeat)-5;
} }
else{ else{
return 5-ai.get.value(button.link,player.nextSeat); return 5-ai.get.value(button.link,nextSeat);
} }
} }
next.set('closeDialog',false); next.set('closeDialog',false);
@ -277,12 +278,7 @@ card.yunchou={
shezhanqunru:{ shezhanqunru:{
fullskin:true, fullskin:true,
type:'trick', type:'trick',
enable:function(card,player){ enable:true,
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player&&game.players[i].num('h')) return true;
}
return false;
},
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
return target==player; return target==player;
}, },
@ -297,6 +293,7 @@ card.yunchou={
} }
} }
if(!list.length){ if(!list.length){
target.draw(3);
event.finish(); event.finish();
} }
else{ else{
@ -1189,7 +1186,7 @@ card.yunchou={
}, },
translate:{ translate:{
diaobingqianjiang:'调兵遣将', diaobingqianjiang:'调兵遣将',
diaobingqianjiang_info:'出牌阶段对所有角色使用。你摸一张牌然后亮出牌堆顶的X张牌X为存活角色数的一半取整),目标可以用一张手牌替换其中的一张牌。结算后,你可以将剩余的牌中的任意张以任意顺序置于牌堆顶', diaobingqianjiang_info:'出牌阶段对所有角色使用。你摸一张牌然后亮出牌堆顶的X张牌X为存活角色数的一半取整),目标可以用一张手牌替换其中的一张牌。结算后,你可以将剩余的牌中的任意张以任意顺序置于牌堆顶',
caochuanjiejian:'草船借箭', caochuanjiejian:'草船借箭',
caochuanjiejian_info:'出牌阶段对一名有手牌的其他角色使用目标选择一项将手牌中的所有杀至少1张交给你并视为对你使用一张杀或展示手牌并令你弃置任意张', caochuanjiejian_info:'出牌阶段对一名有手牌的其他角色使用目标选择一项将手牌中的所有杀至少1张交给你并视为对你使用一张杀或展示手牌并令你弃置任意张',
xiaolicangdao:'笑里藏刀', xiaolicangdao:'笑里藏刀',

View File

@ -175,6 +175,7 @@ character.diy={
return 6-ai.get.value(card); return 6-ai.get.value(card);
}, },
content:function(){ content:function(){
// if(player!=target) player.draw();
var list=game.players.slice(0); var list=game.players.slice(0);
get.sortSeat(list,target); get.sortSeat(list,target);
target.useCard({name:'diaobingqianjiang'},list); target.useCard({name:'diaobingqianjiang'},list);
@ -188,6 +189,7 @@ character.diy={
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
num+=ai.get.effect(game.players[i],{name:'diaobingqianjiang'},target,player); num+=ai.get.effect(game.players[i],{name:'diaobingqianjiang'},target,player);
} }
// if(player==target) return num/2;
return num; return num;
} }
} }

View File

@ -4,7 +4,7 @@ character.gujian={
gjqt_fengqingxue:['female','wu',3,['qinglan','yuehua','swd_wuxie']], gjqt_fengqingxue:['female','wu',3,['qinglan','yuehua','swd_wuxie']],
gjqt_xiangling:['female','wu',3,['qianhuan','meihu','xidie']], gjqt_xiangling:['female','wu',3,['qianhuan','meihu','xidie']],
gjqt_fanglansheng:['male','wu',3,['fanyin','mingkong','fumo']], gjqt_fanglansheng:['male','wu',3,['fanyin','mingkong','fumo']],
gjqt_yinqianshang:['male','qun',4,['zhongji','zuizhan']], gjqt_yinqianshang:['male','qun',4,['zuiji','zuizhan']],
gjqt_hongyu:['female','shu',4,['jianwu','meiying']], gjqt_hongyu:['female','shu',4,['jianwu','meiying']],
gjqt_yuewuyi:['male','wei',4,['yanjia','xiuhua','liuying']], gjqt_yuewuyi:['male','wei',4,['yanjia','xiuhua','liuying']],
@ -16,6 +16,22 @@ character.gujian={
gjqt_ouyangshaogong:['male','shu',3,['yunyin','shishui','duhun']], gjqt_ouyangshaogong:['male','shu',3,['yunyin','shishui','duhun']],
}, },
skill:{ skill:{
zuiji:{
enable:'phaseUse',
filterCard:true,
position:'he',
viewAs:{name:'jiu'},
viewAsFilter:function(player){
if(!player.num('he')) return false;
},
prompt:'将一张手牌或装备牌当酒使用',
check:function(card){
return 5-ai.get.value(card);
},
ai:{
threaten:1.2
}
},
manwu:{ manwu:{
trigger:{global:'phaseEnd'}, trigger:{global:'phaseEnd'},
check:function(event,player){ check:function(event,player){
@ -623,28 +639,6 @@ character.gujian={
} }
} }
}, },
zhongji:{
trigger:{source:'damageBegin'},
direct:true,
content:function(){
"step 0"
var next=player.chooseToDiscard('是否弃置一张黑色牌使伤害+1',{color:'black'});
next.logSkill='zhongji';
next.ai=function(card){
if(ai.get.attitude(player,trigger.player)<0){
return 7-ai.get.value(card);
}
return -1;
}
"step 1"
if(result.bool){
trigger.num++;
}
},
ai:{
threaten:1.3
}
},
meiying_old:{ meiying_old:{
trigger:{global:'phaseBefore'}, trigger:{global:'phaseBefore'},
filter:function(event,player){ filter:function(event,player){
@ -1591,6 +1585,8 @@ character.gujian={
gjqt_xiayize:'夏夷则', gjqt_xiayize:'夏夷则',
gjqt_aruan:'阿阮', gjqt_aruan:'阿阮',
zuiji:'醉饮',
zuiji_info:'出牌阶段,你可以将一张手牌或装备牌当酒使用',
manwu:'曼舞', manwu:'曼舞',
manwu_info:'在一名角色的回合结束阶段,若其手牌数为全场最少或之一,你可以令其摸一张牌', manwu_info:'在一名角色的回合结束阶段,若其手牌数为全场最少或之一,你可以令其摸一张牌',
xfanghua:'芳华', xfanghua:'芳华',
@ -1613,9 +1609,7 @@ character.gujian={
jianwu_info:'锁定技,攻击范围不含你的角色无法闪避你的杀', jianwu_info:'锁定技,攻击范围不含你的角色无法闪避你的杀',
meiying:'魅影', meiying:'魅影',
meiying_info:'一名其他角色的回合结束时,若其未于此回合内使用过指定另一名角色为目标的牌,你可以弃置一张红色牌视为对其使用一张杀', meiying_info:'一名其他角色的回合结束时,若其未于此回合内使用过指定另一名角色为目标的牌,你可以弃置一张红色牌视为对其使用一张杀',
zhongji:'重击', zuizhan:'乱斩',
zhongji_info:'每当你即将造成伤害,可弃置一张黑色手牌令伤害+1',
zuizhan:'醉斩',
zuizhan_info:'每当你使用一张杀,可以摸一张牌,然后此杀随机增加一个额外目标', zuizhan_info:'每当你使用一张杀,可以摸一张牌,然后此杀随机增加一个额外目标',
qianhuan:'千幻', qianhuan:'千幻',
qianhuan_info:'回合结束后,若你已受伤,你可以回复一点体力并将武将牌翻面。若你的武将牌背面朝上,你不能使用卡牌,也不能成为卡牌的目标', qianhuan_info:'回合结束后,若你已受伤,你可以回复一点体力并将武将牌翻面。若你的武将牌背面朝上,你不能使用卡牌,也不能成为卡牌的目标',

View File

@ -80,7 +80,7 @@ character.hearth={
// hs_yashaji:['male','wei',3,[]], // hs_yashaji:['male','wei',3,[]],
// hs_wolazi:['male','wei',3,[]], // hs_wolazi:['male','wei',3,[]],
// hs_tanghangu:['male','wei',3,[]], hs_tanghangu:['male','shu',5,['zhongji']],
hs_aya:['female','wu',3,['ayuling','qingzun']], hs_aya:['female','wu',3,['ayuling','qingzun']],
// hs_barnes:['male','wei',3,[]], // hs_barnes:['male','wei',3,[]],
// hs_nuogefu:['male','wei',3,[]], // hs_nuogefu:['male','wei',3,[]],
@ -98,6 +98,31 @@ character.hearth={
hs_malfurion:['hs_malorne'], hs_malfurion:['hs_malorne'],
}, },
skill:{ skill:{
zhongji:{
trigger:{source:'damageBegin'},
direct:true,
filter:function(event,player){
return player.num('h',{color:'black'})>0;
},
content:function(){
"step 0"
var next=player.chooseToDiscard(get.prompt('zhongji',trigger.player),{color:'black'});
next.logSkill=['zhongji',trigger.player];
next.ai=function(card){
if(ai.get.attitude(player,trigger.player)<0){
return 7-ai.get.value(card);
}
return -1;
}
"step 1"
if(result.bool){
trigger.num++;
}
},
ai:{
threaten:1.3
}
},
fuwen:{ fuwen:{
trigger:{player:'phaseDiscardEnd'}, trigger:{player:'phaseDiscardEnd'},
frequent:true, frequent:true,
@ -5549,6 +5574,8 @@ character.hearth={
hs_tyrande:'泰兰德', hs_tyrande:'泰兰德',
hs_fenjie:'芬杰', hs_fenjie:'芬杰',
zhongji:'重击',
zhongji_info:'每当你即将造成伤害,可弃置一张黑色手牌令伤害+1',
fuwen:'符文', fuwen:'符文',
fuwen_info:'若你弃牌阶段弃置了锦囊牌,你可以获得一点护甲', fuwen_info:'若你弃牌阶段弃置了锦囊牌,你可以获得一点护甲',
jinzhou:'禁咒', jinzhou:'禁咒',

View File

@ -231,6 +231,7 @@ window.characterRank={
'dianwei', 'dianwei',
], ],
bp:[ bp:[
'hs_tanghangu',
'ow_luba', 'ow_luba',
'pal_leiyuange', 'pal_leiyuange',
'dongbai', 'dongbai',

View File

@ -85,30 +85,6 @@ character.xiake={
} }
}, },
}, },
zuijian:{
enable:'phaseUse',
filterCard:true,
position:'he',
viewAs:{name:'jiu'},
viewAsFilter:function(player){
if(!player.num('he')) return false;
},
prompt:'将一张手牌或装备牌当酒使用',
check:function(card){
return 4-ai.get.value(card);
},
mod:{
attackFrom:function(from,to,distance){
if(from.hasSkill('jiu')) return distance-1;
}
},
ai:{
skillTagFilter:function(player){
return player.num('he')>0;
},
threaten:1.2
}
},
zitong:{ zitong:{
trigger:{player:'useCard'}, trigger:{player:'useCard'},
frequent:true, frequent:true,
@ -139,8 +115,6 @@ character.xiake={
gzhenji_info:'你使用杀造成伤害后,可以摸一张牌,并且本回合内可以额外使用一张杀', gzhenji_info:'你使用杀造成伤害后,可以摸一张牌,并且本回合内可以额外使用一张杀',
rouquan:'柔拳', rouquan:'柔拳',
rouquan_info:'你可以重铸装备区内的牌;当你没有武器牌时,你的杀可以指定任意个目标', rouquan_info:'你可以重铸装备区内的牌;当你没有武器牌时,你的杀可以指定任意个目标',
zuijian:'醉剑',
zuijian_info:'出牌阶段,你可以将一张手牌或装备牌当酒使用;当你使用酒后,你的攻击范围+1',
zitong:'通悟', zitong:'通悟',
zitong_info:'当你于自己的回合内使用第三张牌时,你可以将一张传送门置于你的手牌', zitong_info:'当你于自己的回合内使用第三张牌时,你可以将一张传送门置于你的手牌',
}, },

View File

@ -3109,7 +3109,8 @@ character.yijiang={
trigger:{global:'useCard'}, trigger:{global:'useCard'},
filter:function(event,player){ filter:function(event,player){
return !player.hasSkill('zuoding2')&&get.suit(event.card)=='spade'&& return !player.hasSkill('zuoding2')&&get.suit(event.card)=='spade'&&
event.targets&&event.targets.length&&event.player!=player; _status.currentPhase==event.player&&event.targets&&event.targets.length&&
event.player!=player;
}, },
direct:true, direct:true,
content:function(){ content:function(){
@ -7683,7 +7684,7 @@ character.yijiang={
huomo_jiu:'墨酒', huomo_jiu:'墨酒',
huomo_info:'每当你需要使用一张本回合内未使用过的基本牌时,你可以将一张黑色非基本牌置于牌堆顶,然后视为你使用了此基本牌', huomo_info:'每当你需要使用一张本回合内未使用过的基本牌时,你可以将一张黑色非基本牌置于牌堆顶,然后视为你使用了此基本牌',
zuoding:'佐定', zuoding:'佐定',
zuoding_info:'每当一名其他角色于其出牌阶段内使用♠牌指定目标后,若此阶段没有角色受到过伤害,则你可以令其中一名目标角色摸一张牌', zuoding_info:'每当一名其他角色于其回合内使用♠牌指定目标后,若本回合没有角色受到过伤害,则你可以令其中一名目标角色摸一张牌',
taoxi:'讨袭', taoxi:'讨袭',
taoxi2:'讨袭', taoxi2:'讨袭',
taoxi3:'讨袭', taoxi3:'讨袭',

View File

@ -15757,14 +15757,17 @@
filter:function(event,player){ filter:function(event,player){
return (player.num('h',function(card){ return (player.num('h',function(card){
var info=get.info(card); var info=get.info(card);
if(info.type=='stonecharacter'&&lib.config.mode=='stone') return !player.isMin()&&!player.canAddFellow(); if(typeof info.chongzhu=='function'){
return info.chongzhu(event,player);
}
return info.chongzhu; return info.chongzhu;
})>0); })>0);
}, },
filterCard:function(card){ filterCard:function(card){
var info=get.info(card); var info=get.info(card);
var player=_status.event.player; if(typeof info.chongzhu=='function'){
if(info.type=='stonecharacter'&&lib.config.mode=='stone') return !player.isMin()&&!player.canAddFellow(); return info.chongzhu(event,_status.event.player);
}
return info.chongzhu; return info.chongzhu;
}, },
prepare:function(cards,player){ prepare:function(cards,player){
@ -19483,6 +19486,11 @@
ui.control.show(); ui.control.show();
ui.clear(); ui.clear();
game.stopCountChoose(); game.stopCountChoose();
if(game.layout=='long2'){
ui.arena.classList.add('choose-character');
ui.me.hide();
ui.autonode.hide();
}
if(game.online){ if(game.online){
var dialog=ui.create.dialog(); var dialog=ui.create.dialog();
dialog.content.innerHTML=result; dialog.content.innerHTML=result;
@ -19867,7 +19875,7 @@
dialog.add(ui.create.div('.placeholder')); dialog.add(ui.create.div('.placeholder'));
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
if(!_status.connectMode&&game.players[i].isUnderControl(true)) continue; if(!_status.connectMode&&game.players[i].isUnderControl(true)&&game.layout!='long2') continue;
var hs=game.players[i].get('h'); var hs=game.players[i].get('h');
if(hs.length){ if(hs.length){
dialog.add('<div class="text center">'+get.translation(game.players[i])+'</div>'); dialog.add('<div class="text center">'+get.translation(game.players[i])+'</div>');
@ -31795,7 +31803,7 @@
ui.dialog.classList.add('scroll1'); ui.dialog.classList.add('scroll1');
ui.dialog.classList.add('scroll2'); ui.dialog.classList.add('scroll2');
} }
if(lib.config.layout=='long2'){ if(game.layout=='long2'){
if(height1+240>=ui.arena.offsetHeight){ if(height1+240>=ui.arena.offsetHeight){
ui.dialog.classList.add('scroll3'); ui.dialog.classList.add('scroll3');
} }

View File

@ -873,6 +873,9 @@ div:not(.handcards)>.card>.info>span,
transform:scale(0.8); transform:scale(0.8);
transform-origin:top left; transform-origin:top left;
} }
.buttons.smallzoom .card.button>.name{
transform: scale(0.8) !important;
}
.buttons .card.button>.info{ .buttons .card.button>.info{
transform:scale(0.8); transform:scale(0.8);
transform-origin:top right; transform-origin:top right;

View File

@ -1900,9 +1900,6 @@ mode.chess={
if(lib.isPhoneLayout()){ if(lib.isPhoneLayout()){
ui.control.style.top='calc(100% - 80px)'; ui.control.style.top='calc(100% - 80px)';
} }
else if(lib.config.layout=='newlayout'){
ui.control.style.top='calc(100% - 30px)';
}
else{ else{
ui.control.style.top='calc(100% - 70px)'; ui.control.style.top='calc(100% - 70px)';
} }
@ -3447,9 +3444,6 @@ mode.chess={
if(lib.isPhoneLayout()){ if(lib.isPhoneLayout()){
ui.control.style.top='calc(100% - 80px)'; ui.control.style.top='calc(100% - 80px)';
} }
else if(lib.config.layout=='newlayout'){
ui.control.style.top='calc(100% - 30px)';
}
else{ else{
ui.control.style.top='calc(100% - 70px)'; ui.control.style.top='calc(100% - 70px)';
} }

View File

@ -593,7 +593,9 @@ mode.stone={
enable:function(event,player){ enable:function(event,player){
return player.canAddFellow(); return player.canAddFellow();
}, },
chongzhu:true, chongzhu:function(event,player){
return !player.isMin()&&!player.canAddFellow();
},
notarget:true, notarget:true,
content:function(){ content:function(){
"step 0" "step 0"
@ -726,7 +728,7 @@ mode.stone={
game.addVideo('updateActCount',this,[used,this.actcount,this.getActCount()]); game.addVideo('updateActCount',this,[used,this.actcount,this.getActCount()]);
} }
var maxcount,overflow2; var maxcount,overflow2;
if(lib.config.layout=='default'||used=='outphase'||_status.currentPhase!=this){ if(game.layout=='default'||used=='outphase'||_status.currentPhase!=this){
maxcount=this.actcount; maxcount=this.actcount;
} }
else{ else{

View File

@ -1120,7 +1120,7 @@ mode.versus={
if(lib.isPhoneLayout()){ if(lib.isPhoneLayout()){
ui.control.style.top='calc(100% - 80px)'; ui.control.style.top='calc(100% - 80px)';
} }
else if(lib.config.layout=='newlayout'){ else if(game.layout=='newlayout'){
ui.control.style.top='calc(100% - 30px)'; ui.control.style.top='calc(100% - 30px)';
} }
else{ else{