This commit is contained in:
libccy 2015-11-21 13:30:26 +08:00
parent 651004a144
commit 1eb2577ae7
74 changed files with 2956 additions and 204 deletions

View File

@ -1,5 +1,6 @@
1.5.7 1.5.7
对决模式改进
屏蔽强将选项 屏蔽强将选项
卡牌、卡背、体力条样式 卡牌、卡背、体力条样式
新武将张鲁、士燮、马云騄、兀突骨、sp蔡文姬 徐盛、步练师修改
新武将5个SP武将、补全一将成名
安卓精简版去掉配音、DIY武将及卡牌

BIN
audio/skill/xinpojun1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xinpojun2.mp3 Normal file

Binary file not shown.

View File

@ -534,7 +534,7 @@ card.hearth={
}, },
ai:{ ai:{
order:4, order:4,
value:[6,3], value:[8,3],
useful:[6,3], useful:[6,3],
result:{ result:{
target:function(player,target){ target:function(player,target){
@ -543,7 +543,7 @@ card.hearth={
var num=target.maxHp-target.hp; var num=target.maxHp-target.hp;
if(num<1) return 0; if(num<1) return 0;
if(num==1) return 1; if(num==1) return 1;
if(target.hp==2) return 2.5; if(target.hp==1) return 2.5;
return 2; return 2;
} }
} }

View File

@ -95,6 +95,7 @@ card.standard={
} }
else{ else{
event.trigger('shaMiss'); event.trigger('shaMiss');
event.responded=result;
} }
"step 2" "step 2"
if(result.bool==false&&!event.unhurt){ if(result.bool==false&&!event.unhurt){
@ -1122,7 +1123,7 @@ card.standard={
player.removeSkill('jiu'); player.removeSkill('jiu');
event.jiu=true; event.jiu=true;
} }
player.chooseToUse('是否发动青龙偃月刀?',{name:'sha'},trigger.target,-1); player.chooseToUse('是否发动青龙偃月刀?',{name:'sha'},trigger.target,-1).logSkill='qinglong';
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('qinglong'); player.logSkill('qinglong');
@ -1154,9 +1155,11 @@ card.standard={
}, },
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('是否发动贯石斧?',2,'he',function(card){ var next=player.chooseToDiscard('是否发动贯石斧?',2,'he',function(card){
return player.get('e',{subtype:'equip1'}).contains(card)==false; return player.get('e',{subtype:'equip1'}).contains(card)==false;
}).ai= });
next.logSkill='guanshi_skill';
next.ai=
function(card){ function(card){
if(ai.get.attitude(player,trigger.target)<0){ if(ai.get.attitude(player,trigger.target)<0){
if(player.skills.contains('jiu')|| if(player.skills.contains('jiu')||
@ -1170,7 +1173,6 @@ card.standard={
}; };
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('guanshi_skill');
trigger.untrigger(); trigger.untrigger();
trigger.trigger('shaHit'); trigger.trigger('shaHit');
trigger._result.bool=false; trigger._result.bool=false;
@ -1218,6 +1220,7 @@ card.standard={
bagua_skill:{ bagua_skill:{
trigger:{player:'chooseToRespondBegin'}, trigger:{player:'chooseToRespondBegin'},
filter:function(event,player){ filter:function(event,player){
if(event.responded) return false;
if(!event.filterCard({name:'shan'})) return false; if(!event.filterCard({name:'shan'})) return false;
if(event.parent.player.num('s','unequip')) return false; if(event.parent.player.num('s','unequip')) return false;
return true; return true;

View File

@ -183,7 +183,7 @@ character.fire={
event.finish(); event.finish();
} }
"step 2" "step 2"
if(result.bool){ if(result.bool&&result.targets&&result.targets.length){
result.targets[0].damage(target); result.targets[0].damage(target);
} }
}, },

View File

@ -60,7 +60,9 @@ character.gujian={
direct:true, direct:true,
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('是否弃置一张黑色牌使伤害+1',{color:'black'}).ai=function(card){ var next=player.chooseToDiscard('是否弃置一张黑色牌使伤害+1',{color:'black'});
next.logSkill='zhongji';
next.ai=function(card){
if(ai.get.attitude(player,trigger.player)<0){ if(ai.get.attitude(player,trigger.player)<0){
return 7-ai.get.value(card); return 7-ai.get.value(card);
} }
@ -68,7 +70,6 @@ character.gujian={
} }
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('zhongji');
trigger.num++; trigger.num++;
} }
}, },
@ -120,12 +121,13 @@ character.gujian={
}, },
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('是否发动【戏蝶】?',[1,Math.min(3,player.num('h')-player.hp)]).ai=function(card){ var next=player.chooseToDiscard('是否发动【戏蝶】?',[1,Math.min(3,player.num('h')-player.hp)]);
next.ai=function(card){
return 6-ai.get.value(card); return 6-ai.get.value(card);
} }
next.logSkill='xidie';
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('xidie');
player.storage.xidie=result.cards.length; player.storage.xidie=result.cards.length;
} }
}, },
@ -380,7 +382,9 @@ character.gujian={
priority:-5, priority:-5,
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('是否对'+get.translation(trigger.player)+'发动【晴岚】?','he').ai=function(card){ var next=player.chooseToDiscard('是否对'+get.translation(trigger.player)+'发动【晴岚】?','he');
next.logSkill='qinglan';
next.ai=function(card){
if(trigger.num>1||!trigger.source){ if(trigger.num>1||!trigger.source){
if(ai.get.attitude(player,trigger.player)>0){ if(ai.get.attitude(player,trigger.player)>0){
return 9-ai.get.value(card); return 9-ai.get.value(card);
@ -403,7 +407,6 @@ character.gujian={
} }
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('qinglan');
trigger.untrigger(); trigger.untrigger();
trigger.finish(); trigger.finish();
if(trigger.source){ if(trigger.source){
@ -644,15 +647,16 @@ character.gujian={
for(var i=0;i<event.targets.length;i++){ for(var i=0;i<event.targets.length;i++){
num+=ai.get.effect(event.targets[i],{name:'sha'},player,player); num+=ai.get.effect(event.targets[i],{name:'sha'},player,player);
} }
player.chooseToDiscard(function(card){ var next=player.chooseToDiscard(function(card){
return get.type(card)!='basic'; return get.type(card)!='basic';
},'是否发动千军?').ai=function(card){ },'是否发动千军?');
next.logSkill=['qianjun',event.targets];
next.ai=function(card){
if(num<=0) return -1; if(num<=0) return -1;
return 7-ai.get.value(card); return 7-ai.get.value(card);
} }
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('qianjun',targets);
for(var i=0;i<targets.length;i++){ for(var i=0;i<targets.length;i++){
trigger.targets.add(targets[i]); trigger.targets.add(targets[i]);
// targets[i].classList.add('selected'); // targets[i].classList.add('selected');

View File

@ -24,13 +24,14 @@ character.hearth={
hs_bchillmaw:['male','wei',6,['hanshuang','bingshi'],['fullskin']], hs_bchillmaw:['male','wei',6,['hanshuang','bingshi'],['fullskin']],
hs_malorne:['male','wu',3,['enze','chongsheng'],['fullskin']], hs_malorne:['male','wu',3,['enze','chongsheng'],['fullskin']],
hs_malygos:['male','wei',4,['malymowang'],['fullskin']], hs_malygos:['male','wei',4,['malymowang'],['fullskin']],
hs_xuefashi:['male','wei',2,['liehun','xjumo'],['fullskin']], hs_xuefashi:['male','wei',3,['liehun','xjumo'],['fullskin']],
// hs_loatheb:['male','wei',2,[],['fullskin']], // hs_loatheb:['male','wei',2,[],['fullskin']],
// hs_trueheart:['male','wei',2,[],['fullskin']], // hs_trueheart:['male','wei',2,[],['fullskin']],
// hs_sainaliusi:['male','wei',2,[],['fullskin']], // hs_sainaliusi:['male','wei',2,[],['fullskin']],
// hs_lrhonin:['male','wei',2,[],['fullskin']], // hs_lrhonin:['male','wei',2,[],['fullskin']],
// hs_bolvar:['male','wei',2,[],['fullskin']], // hs_bolvar:['male','wei',2,[],['fullskin']],
// hs_fuding:['male','wei',2,[],['fullskin']], // hs_fuding:['male','wei',2,[],['fullskin']],
hs_ysera:['female','wu',4,['chenshui'],['fullskin']],
hs_ronghejuren:['male','shu',8,[],['fullskin']], hs_ronghejuren:['male','shu',8,[],['fullskin']],
hs_edwin:['male','qun',3,['lianzhan'],['fullskin']], hs_edwin:['male','qun',3,['lianzhan'],['fullskin']],
@ -49,8 +50,21 @@ character.hearth={
hs_malfurion:['hs_malorne'], hs_malfurion:['hs_malorne'],
}, },
skill:{ skill:{
chenshui:{
trigger:{player:'phaseEnd'},
frequent:true,
content:function(){
var list=['mengjing_feicuiyoulong','mengjing_huanxiaojiemei',
'mengjing_suxing','mengjing_mengye','mengjing_mengjing'];
player.gain(game.createCard(list.randomGet()));
player.$draw();
},
ai:{
threaten:2
}
},
liehun:{ liehun:{
trigger:{player:'phaseUseBegin'}, trigger:{player:'phaseEnd'},
forced:true, forced:true,
filter:function(event,player){ filter:function(event,player){
return player.num('h',{type:'basic'})<player.num('h'); return player.num('h',{type:'basic'})<player.num('h');
@ -78,7 +92,7 @@ character.hearth={
mod:{ mod:{
maxHandcard:function(player,num){ maxHandcard:function(player,num){
return num+3; return num+3;
} },
}, },
}, },
malymowang:{ malymowang:{
@ -757,6 +771,22 @@ character.hearth={
} }
} }
}, },
mengjing_mengye:{
trigger:{player:'phaseEnd'},
forced:true,
priority:-1,
filter:function(event,player){
return player.num('he')>0;
},
content:function(){
player.discard(player.get('he'));
player.removeSkill('mengjing_mengye');
},
mark:'image',
intro:{
content:'回合结束阶段,弃置所有牌'
}
},
zhanhou:{ zhanhou:{
init:function(player){ init:function(player){
player.forcemin=true; player.forcemin=true;
@ -778,11 +808,11 @@ character.hearth={
player:1 player:1
} }
}, },
mod:{ // mod:{
globalFrom:function(from,to,distance){ // globalFrom:function(from,to,distance){
return distance-from.hujia; // return distance-from.hujia;
} // }
}, // },
}, },
shijie:{ shijie:{
trigger:{player:'phaseEnd'}, trigger:{player:'phaseEnd'},
@ -1311,15 +1341,16 @@ character.hearth={
var val=ai.get.value(trigger.card); var val=ai.get.value(trigger.card);
var suit=get.suit(trigger.card); var suit=get.suit(trigger.card);
var eff=ai.get.effect(trigger.target,trigger.card,trigger.player,player); var eff=ai.get.effect(trigger.target,trigger.card,trigger.player,player);
player.chooseToDiscard('是否对'+get.translation(trigger.player)+'使用的'+get.translation(trigger.card)+'发动【闷棍】?',function(card){ var next=player.chooseToDiscard('是否对'+get.translation(trigger.player)+'使用的'+get.translation(trigger.card)+'发动【闷棍】?',function(card){
return get.suit(card)==suit; return get.suit(card)==suit;
}).ai=function(card){ });
next.logSkill=['mengun',trigger.player];
next.ai=function(card){
if(eff>=0) return 0; if(eff>=0) return 0;
return Math.min(8,1+val)-ai.get.value(card); return Math.min(8,1+val)-ai.get.value(card);
} }
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('mengun',trigger.player);
game.log(get.translation(trigger.player)+'收回了'+get.translation(trigger.cards)); game.log(get.translation(trigger.player)+'收回了'+get.translation(trigger.cards));
trigger.untrigger(); trigger.untrigger();
trigger.finish(); trigger.finish();
@ -1385,10 +1416,11 @@ character.hearth={
direct:true, direct:true,
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('是否发动【激活】?').ai=ai.get.unuseful2; var next=player.chooseToDiscard('是否发动【激活】?');
next.ai=ai.get.unuseful2;
next.logSkill='jihuo';
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('jihuo');
player.storage.jihuo=true; player.storage.jihuo=true;
} }
else{ else{
@ -1941,6 +1973,146 @@ character.hearth={
}, },
}, },
card:{ card:{
mengjing_feicuiyoulong:{
type:'mengjing',
image:'card/mengjing_feicuiyoulong',
color:'white',
opacity:1,
textShadow:'black 0 0 2px',
enable:true,
filterTarget:true,
content:function(){
target.damage(2);
},
ai:{
order:5,
result:{
target:-2
},
tag:{
damage:2
},
useful:5,
value:10,
}
},
mengjing_suxing:{
type:'mengjing',
image:'card/mengjing_suxing',
color:'white',
opacity:1,
textShadow:'black 0 0 2px',
enable:true,
filterTarget:function(card,player,target){
return player!=target;
},
selectTarget:-1,
content:function(){
target.loseHp();
var he=target.get('he');
if(he.length){
target.discard(he.randomGets(2));
}
},
ai:{
result:{
target:-1,
},
order:6,
useful:5,
value:10,
}
},
mengjing_mengye:{
type:'mengjing',
image:'card/mengjing_mengye',
color:'white',
opacity:1,
textShadow:'black 0 0 2px',
enable:true,
filterTarget:true,
content:function(){
target.draw();
target.addSkill('mengjing_mengye');
},
ai:{
order:1,
useful:5,
value:10,
result:{
target:function(player,target){
if(target.skills.contains('mengjing_mengye')) return 0.5;
return -target.num('he');
}
}
}
},
mengjing_mengjing:{
type:'mengjing',
image:'card/mengjing_mengjing',
color:'white',
opacity:1,
textShadow:'black 0 0 2px',
enable:true,
filterTarget:function(card,player,target){
return !target.num('j','lebu')||target.num('e')>0;
},
content:function(){
'step 0'
var es=target.get('e');
if(es.length){
target.gain(es,'gain2');
}
'step 1'
if(!target.num('j','lebu')){
target.addJudge(game.createCard('lebu'));
}
},
ai:{
order:2,
useful:5,
value:10,
result:{
target:function(player,target){
var num=target.hp-target.num('he')-2;
if(num>-1) return -1;
if(target.hp<3) num--;
if(target.hp<2) num--;
if(target.hp<1) num--;
return num;
}
}
}
},
mengjing_huanxiaojiemei:{
type:'mengjing',
image:'card/mengjing_huanxiaojiemei',
color:'white',
opacity:1,
textShadow:'black 0 0 2px',
enable:true,
filterTarget:function(card,player,target){
return target.hp<target.maxHp;
},
content:function(){
target.recover(target.maxHp-target.hp);
},
ai:{
order:6,
value:10,
useful:[7,4],
result:{
target:function(player,target){
var eff=ai.get.recoverEffect(target,player,target);
if(eff<=0) return 0;
var num=target.maxHp-target.hp;
if(num<1) return 0;
if(target.hp==1) return num+0.5;
return num;
}
}
}
},
tuteng1:{ tuteng1:{
image:'card/tuteng1', image:'card/tuteng1',
color:'white', color:'white',
@ -2016,6 +2188,7 @@ character.hearth={
hs_siwangzhiyi:'死亡之翼', hs_siwangzhiyi:'死亡之翼',
hs_malygos:'玛里苟斯', hs_malygos:'玛里苟斯',
hs_xuefashi:'血法师', hs_xuefashi:'血法师',
hs_ysera:'伊瑟拉',
hs_ronghejuren:'熔核巨人', hs_ronghejuren:'熔核巨人',
hs_edwin:'艾德温', hs_edwin:'艾德温',
@ -2025,10 +2198,24 @@ character.hearth={
hs_totemic:'图腾师', hs_totemic:'图腾师',
hs_bilanyoulong:'碧蓝幼龙', hs_bilanyoulong:'碧蓝幼龙',
chenshui:'沉睡',
chenshui_info:'回合结束阶段,你可以将一张随机梦境牌加入你的手牌',
mengjing:'梦境',
mengjing_card_config:'梦境',
mengjing_feicuiyoulong:'翡翠幼龙',
mengjing_feicuiyoulong_info:'出牌阶段对任意一名角色使用对目标造成2点伤害',
mengjing_huanxiaojiemei:'欢笑姐妹',
mengjing_huanxiaojiemei_info:'出牌阶段对一名已受伤角色使用,令目标恢复所有体力值',
mengjing_suxing:'苏醒',
mengjing_suxing_info:'令所有其他角色流失一点体力并随机弃置两张牌',
mengjing_mengye:'梦魇',
mengjing_mengye_info:'令一名角色摸1张牌并在其下一个回合结束阶段弃置其所有牌',
mengjing_mengjing:'梦境',
mengjing_mengjing_info:'令一名角色将装备区内的所有牌收入手牌,并将一张乐不思蜀置于其判定区',
xjumo:'聚魔', xjumo:'聚魔',
xjumo_info:'锁定技,你的手牌上限+3', xjumo_info:'锁定技,你的手牌上限+2',
liehun:'裂魂', liehun:'裂魂',
liehun_info:'锁定技,出牌阶段开始时,你获得手牌中所有非基本牌的复制', liehun_info:'锁定技,回合结束阶段,你获得手牌中所有非基本牌的复制',
malymowang:'魔网', malymowang:'魔网',
malymowang_info:'锁定技,你的锦囊牌造成的伤害+1出牌阶段开始时你观看随机3张锦囊牌并将其中一张加入你的手牌', malymowang_info:'锁定技,你的锦囊牌造成的伤害+1出牌阶段开始时你观看随机3张锦囊牌并将其中一张加入你的手牌',
lingzhou:'灵咒', lingzhou:'灵咒',
@ -2091,7 +2278,7 @@ character.hearth={
fengxian:'奉献', fengxian:'奉献',
fengxian_info:'出牌阶段限一次,你可以令场上所有角色各弃置一张手牌', fengxian_info:'出牌阶段限一次,你可以令场上所有角色各弃置一张手牌',
zhanhou:'战吼', zhanhou:'战吼',
zhanhou_info:'锁定技,你没有装备区,你可以弃置一张装备牌并获得一点护甲值;每有一点护甲值,你与其他角色的距离-1', zhanhou_info:'锁定技,你没有装备区,你可以弃置一张装备牌并获得一点护甲值',
anying:'暗影', anying:'暗影',
anying_info:'限定技,出牌阶段,你可以弃置两张黑色牌,失去技能圣光,并获得技能心刺', anying_info:'限定技,出牌阶段,你可以弃置两张黑色牌,失去技能圣光,并获得技能心刺',
shijie:'视界', shijie:'视界',

View File

@ -90,15 +90,16 @@ character.jiange={
}, },
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('he','是否弃置一张牌令'+get.translation(trigger.player)+'的摸牌数-1').ai=function(card){ var next=player.chooseToDiscard('he','是否弃置一张牌令'+get.translation(trigger.player)+'的摸牌数-1');
next.ai=function(card){
if(ai.get.attitude(player,trigger.player)<0){ if(ai.get.attitude(player,trigger.player)<0){
return 6-ai.get.value(card); return 6-ai.get.value(card);
} }
return 0; return 0;
} }
next.logSkill=['jueji',trigger.player];
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('jueji',trigger.player);
trigger.num--; trigger.num--;
} }
}, },

View File

@ -212,11 +212,12 @@ character.mountain={
event.finish(); event.finish();
} }
else{ else{
player.chooseToDiscard('是否发动巧变路过判定阶段?').ai=ai.get.unuseful2; var next=player.chooseToDiscard('是否发动巧变路过判定阶段?');
next.ai=ai.get.unuseful2;
next.logSkill='qiaobian';
} }
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('qiaobian');
trigger.untrigger(); trigger.untrigger();
trigger.finish(); trigger.finish();
} }
@ -421,7 +422,9 @@ character.mountain={
content:function(){ content:function(){
"step 0" "step 0"
var discard=player.num('h')>player.hp; var discard=player.num('h')>player.hp;
player.chooseToDiscard('是否发动巧变路过弃牌阶段?').ai=function(card){ var next=player.chooseToDiscard('是否发动巧变路过弃牌阶段?');
next.logSkill='qiaobian';
next.ai=function(card){
if(discard){ if(discard){
return 100-ai.get.useful(card); return 100-ai.get.useful(card);
} }
@ -431,7 +434,6 @@ character.mountain={
}; };
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('qiaobian');
trigger.untrigger(); trigger.untrigger();
trigger.finish(); trigger.finish();
} }
@ -795,10 +797,11 @@ character.mountain={
}, },
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('he','是否发动悲歌?').ai=ai.get.unuseful2; var next=player.chooseToDiscard('he','是否发动悲歌?');
next.ai=ai.get.unuseful2;
next.logSkill='beige';
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('beige');
trigger.player.judge(); trigger.player.judge();
} }
else{ else{

View File

@ -52,6 +52,7 @@ window.characterRank={
'hs_malygos', 'hs_malygos',
], ],
a:[ a:[
'hs_ysera',
'yxs_diaochan', 'yxs_diaochan',
'swd_wangsiyue', 'swd_wangsiyue',
'swd_lanyin', 'swd_lanyin',
@ -87,7 +88,7 @@ window.characterRank={
'zhoutai', 'zhoutai',
], ],
am:[ am:[
'hs_xuefashi', 'sp_caiwenji',
'manchong', 'manchong',
'swd_linyue', 'swd_linyue',
'swd_fuyan', 'swd_fuyan',
@ -141,9 +142,12 @@ window.characterRank={
'hs_siwangzhiyi', 'hs_siwangzhiyi',
'jg_huangyueying', 'jg_huangyueying',
'hs_bilanyoulong', 'hs_bilanyoulong',
'zhanglu',
], ],
bp:[ bp:[
'shixie',
'yxs_mozi', 'yxs_mozi',
'hs_xuefashi',
'xiahoushi', 'xiahoushi',
'zhangsong', 'zhangsong',
'zhuhuan', 'zhuhuan',
@ -170,6 +174,7 @@ window.characterRank={
'jiangwei', 'jiangwei',
'liubei', 'liubei',
'mateng', 'mateng',
'wutugu',
'swd_chunyuheng', 'swd_chunyuheng',
'hetaihou', 'hetaihou',
'hs_alleria', 'hs_alleria',
@ -206,6 +211,7 @@ window.characterRank={
'guyong', 'guyong',
'diy_xuhuang', 'diy_xuhuang',
'sunquan', 'sunquan',
'hs_jgarrosh',
], ],
b:[ b:[
'pal_linyueru', 'pal_linyueru',
@ -231,7 +237,6 @@ window.characterRank={
'sp_sunshangxiang', 'sp_sunshangxiang',
're_lidian', 're_lidian',
'jiangqing', 'jiangqing',
'hs_jgarrosh',
'hs_lrexxar', 'hs_lrexxar',
'mifuren', 'mifuren',
'diy_huangzhong', 'diy_huangzhong',
@ -269,6 +274,7 @@ window.characterRank={
'zhouyu', 'zhouyu',
'guanyinping', 'guanyinping',
'dingfeng', 'dingfeng',
'mayunlu',
'pangtong', 'pangtong',
'zhugeliangwolong', 'zhugeliangwolong',
'shen_guanyu', 'shen_guanyu',

View File

@ -962,12 +962,8 @@ character.refresh={
!lib.filter.autoRespondSha.call({player:player}); !lib.filter.autoRespondSha.call({player:player});
}, },
content:function(){ content:function(){
"step 0" player.chooseToUse({name:'sha'},'是否对'+get.translation(trigger.player)+'使用一张杀',
player.chooseToUse({name:'sha'},'是否对'+get.translation(trigger.player)+'使用一张杀',trigger.player); trigger.player).logSkill='zhuhai';
"step 1"
if(result.bool){
player.logSkill('zhuhai');
}
} }
}, },
qianxin:{ qianxin:{

View File

@ -36,9 +36,381 @@ character.sp={
sp_caiwenji:['female','wei',3,['chenqing','mozhi'],['fullskin']], sp_caiwenji:['female','wei',3,['chenqing','mozhi'],['fullskin']],
}, },
skill:{ skill:{
chenqing:{
trigger:{global:'dying'},
priority:6,
filter:function(event,player){
return event.player.hp<=0&&!player.skills.contains('chenqing2');
},
direct:true,
content:function(){
'step 0'
player.chooseTarget('是否发动【陈情】?',function(card,player,target){
return target!=player&&target!=trigger.player;
}).ai=function(target){
if(ai.get.attitude(player,trigger.player)>0){
var att1=ai.get.attitude(target,player);
var att2=ai.get.attitude(target,trigger.player);
var att3=ai.get.attitude(player,target);
if(att3<0) return 0;
return att1/2+att2+att3;
}
else{
return ai.get.attitude(player,target);
}
}
'step 1'
if(result.bool){
player.addTempSkill('chenqing2',{player:'phaseBegin'});
event.target=result.targets[0];
event.target.draw(4);
player.logSkill('chenqing',event.target);
}
else{
event.finish();
}
'step 2'
var target=event.target;
var tosave=trigger.player;
var att=ai.get.attitude(target,tosave);
var hastao=target.num('h','tao');
target.chooseToDiscard(4,true).ai=function(card){
if(!hastao&&att>0){
var suit=get.suit(card);
for(var i=0;i<ui.selected.cards.length;i++){
if(get.suit(ui.selected.cards[i])==suit){
return -4-ai.get.value(card);
}
}
}
return -ai.get.value(card);
}
'step 3'
if(result.cards&&result.cards.length==4){
var suits=[];
for(var i=0;i<result.cards.length;i++){
suits.add(get.suit(result.cards[i]));
}
if(suits.length==4){
event.target.useCard({name:'tao'},trigger.player);
}
}
},
ai:{
skillTagFilter:function(player){
return !player.skills.contains('chenqing2');
},
expose:0.2,
threaten:1.5,
save:true,
}
},
mozhi:{
intro:{
content:'cards'
},
init:function(player){
player.storage.mozhi=[];
},
trigger:{player:'phaseEnd'},
frequent:true,
filter:function(event,player){
return player.storage.mozhi.length>0&&player.num('h')>0;
},
content:function(){
if(player.storage.mozhi.length&&player.num('h')){
var card=player.storage.mozhi.shift();
card={name:card.name,nature:card.nature,suit:card.suit,number:card.number};
if(lib.filter.cardEnabled(card)){
for(var i=0;i<game.players.length;i++){
if(player.canUse(card,game.players[i])){
break;
}
}
if(i<game.players.length){
lib.skill.mozhix.viewAs=card;
var next=player.chooseToUse();
if(event.isMine()){
next.openskilldialog='将一张手牌当'+get.translation(card)+'使用';
}
next.backup('mozhix');
}
}
event.redo();
}
},
group:['mozhi2','mozhi3']
},
mozhix:{
filterCard:true,
selectCard:1
},
mozhi2:{
trigger:{player:'phaseAfter'},
forced:true,
silent:true,
popup:false,
content:function(){
player.storage.mozhi.length=0;
player.unmarkSkill('mozhi');
}
},
mozhi3:{
trigger:{player:'useCard'},
forced:true,
silent:true,
popup:false,
filter:function(event,player){
if(_status.currentPhase!=player) return false;
if(event.parent.parent.name!='phaseUse') return false;
var type=get.type(event.card);
return player.storage.mozhi.length<2&&(type=='basic'||type=='trick');
},
content:function(){
player.storage.mozhi.add(trigger.card);
player.markSkill('mozhi');
}
},
chenqing2:{},
ranshang:{
trigger:{player:'damageEnd'},
filter:function(event,player){
return event.nature=='fire';
},
init:function(player){
player.storage.ranshang=0;
},
forced:true,
check:function(){
return false;
},
content:function(){
if(player.storage.ranshang){
player.storage.ranshang++;
}
else{
player.storage.ranshang=1;
player.markSkill('ranshang');
}
game.addVideo('storage',player,['ranshang',player.storage.ranshang]);
},
intro:{
content:'mark'
},
ai:{
effect:{
target:function(card,player,target,current){
if(card.name=='sha'){
if(card.nature=='fire'||player.skills.contains('zhuque_skill')) return 2;
}
if(get.tag(card,'fireDamage')&&current<0) return 2;
}
}
},
group:'ranshang2'
},
ranshang2:{
trigger:{player:'phaseEnd'},
forced:true,
filter:function(event,player){
return player.storage.ranshang>0;
},
content:function(){
player.loseHp(player.storage.ranshang);
}
},
hanyong:{
trigger:{player:'useCard'},
filter:function(event,player){
return player.storage.hanyong>player.hp&&event.card&&
(event.card.name=='nanman'||event.card.name=='wanjian');
},
content:function(){
player.addTempSkill('hanyong3','useCardAfter');
},
init:function(player){
player.storage.hanyong=0;
},
group:'hanyong2'
},
hanyong2:{
trigger:{player:'phaseBegin'},
forced:true,
popup:false,
silent:true,
content:function(){
player.storage.hanyong++;
}
},
hanyong3:{
trigger:{source:'damageBegin'},
forced:true,
filter:function(event,player){
return event.card&&(event.card.name=='nanman'||event.card.name=='wanjian');
},
content:function(){
trigger.num++;
}
},
yishe:{
trigger:{player:'phaseEnd'},
init:function(player){
player.storage.yishe=[];
},
filter:function(event,player){
return !player.storage.yishe||!player.storage.yishe.length;
},
intro:{
content:'cards'
},
content:function(){
'step 0'
player.draw(2);
player.chooseCard(2,'he',true,'选择两张牌作为“米”');
'step 1'
player.markSkill('yishe');
player.storage.yishe=result.cards;
player.lose(result.cards,ui.special);
game.addVideo('storage',player,['yishe',get.cardsInfo(player.storage.yishe),'cards']);
}
},
bushi:{
trigger:{player:'damageEnd',source:'damageEnd'},
filter:function(event,player){
return player.storage.yishe&&player.storage.yishe.length&&event.player.isAlive();
},
direct:true,
content:function(){
'step 0'
trigger.player.chooseCardButton('选择获得一张“米”',player.storage.yishe);
'step 1'
if(result.bool){
player.logSkill('bushi');
trigger.player.gain(result.buttons[0].link,'gain2');
player.storage.yishe.remove(result.buttons[0].link);
game.addVideo('storage',player,['yishe',get.cardsInfo(player.storage.yishe),'cards']);
if(player.storage.yishe.length==0){
player.recover();
player.unmarkSkill('yishe');
}
}
}
},
midao:{
unique:true,
trigger:{global:'judge'},
direct:true,
filter:function(event,player){
return player.storage.yishe&&player.storage.yishe.length&&event.player.isAlive();
},
content:function(){
"step 0"
var list=player.storage.yishe;
var dialog=ui.create.dialog(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+get.translation(trigger.player.judging)+
',是否发动【米道】?',list,'hidden');
player.chooseButton(dialog,function(button){
var card=button.link;
var trigger=_status.event.parent._trigger;
var player=_status.event.player;
var result=trigger.judge(card)-trigger.judge(trigger.player.judging);
var attitude=ai.get.attitude(player,trigger.player);
return result*attitude;
});
"step 1"
if(result.bool){
event.card=result.buttons[0].link;
player.$throw(event.card,1000);
player.storage.yishe.remove(result.buttons[0].link);
game.addVideo('storage',player,['yishe',get.cardsInfo(player.storage.yishe),'cards']);
if(player.storage.yishe.length==0){
player.recover();
player.unmarkSkill('yishe');
}
if(event.card.clone){
event.card.clone.classList.add('thrownhighlight');
game.addVideo('highlightnode',player,get.cardInfo(event.card));
}
}
"step 2"
if(event.card){
player.logSkill('midao',trigger.player);
ui.discardPile.appendChild(trigger.player.judging);
trigger.player.judging=event.card;
trigger.position.appendChild(event.card);
game.log(get.translation(trigger.player)+'的判定牌改为'+get.translation(event.card));
event.card.expired=true;
game.delay(2);
}
},
ai:{
tag:{
rejudge:0.6
}
}
},
fengpo:{
trigger:{player:['shaBegin','juedouBegin']},
filter:function(event,player){
if(player.skills.contains('fengpo3')) return false;
return event.target&&event.targets&&event.targets.length==1;
},
direct:true,
content:function(){
'step 0'
player.addTempSkill('fengpo3','phaseAfter');
player.chooseControl('draw_card','加伤害','cancel',
ui.create.dialog('是否发动【凤魄】?','hidden'));
'step 1'
if(result.control&&result.control!='cancel'){
player.logSkill('fengpo');
var nd=trigger.target.num('h',{suit:'diamond'});
if(result.control=='draw_card'){
player.draw(nd);
}
else{
player.addTempSkill('fengpo2','useCardToAfter');
player.storage.fengpo=nd;
}
}
}
},
fengpo2:{
trigger:{source:'damageBegin'},
filter:function(event){
return event.card&&(event.card.name=='sha'||event.card.name=='juedou')&&
event.parent.name!='_lianhuan'&&event.parent.name!='_lianhuan2';
},
forced:true,
content:function(){
if(typeof player.storage.fengpo=='number'){
trigger.num+=player.storage.fengpo;
}
}
},
fengpo3:{},
biluan:{ biluan:{
trigger:{player:'phaseDrawBefore'}, trigger:{player:'phaseDrawBefore'},
mark:true,
unique:true,
intro:{
content:function(storage){
if(storage>0){
return '防御距离+'+storage;
}
else if(storage<0){
return '防御距离'+storage;
}
else{
return '无距离变化';
}
}
},
init:function(player){
player.storage.biluan=0;
},
check:function(event,player){ check:function(event,player){
if(player.num('h')>player.hp) return true;
if(player.num('j','lebu')) return true;
var ng=[]; var ng=[];
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
if(game.players[i].group!='unknown'){ if(game.players[i].group!='unknown'){
@ -49,26 +421,68 @@ character.sp={
if(ng<2) return false; if(ng<2) return false;
var nai=0; var nai=0;
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
var dist=get.distance(game.players[i],player,'attack'); if(game.players[i]!=player){
if(dist<=1&&dist+ng>1){ var dist=get.distance(game.players[i],player,'attack');
nai++; if(dist<=1&&dist+ng>1){
nai++;
}
} }
} }
console.log(nai);
return nai>=2; return nai>=2;
}, },
filter:function(event,player){ filter:function(event,player){
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
if(get.distance(game.players[i],player)<=1){ if(game.players[i]!=player&&
get.distance(game.players[i],player)<=1){
return true; return true;
} }
} }
return false; return false;
}, },
content:function(){
var ng=[];
for(var i=0;i<game.players.length;i++){
if(game.players[i].group!='unknown'){
ng.add(game.players[i].group);
}
}
player.$damagepop(ng.length,'unknownx');
player.storage.biluan+=ng.length;
game.addVideo('storage',player,['biluan',player.storage.biluan]);
trigger.untrigger();
trigger.finish();
},
mod:{
globalTo:function(from,to,distance){
if(typeof to.storage.biluan=='number'){
return distance+to.storage.biluan;
}
}
}
}, },
biluan2:{ lixia:{
mark:true, trigger:{global:'phaseEnd'},
filter:function(event,player){
return event.player!=player&&get.distance(event.player,player,'attack')>1;
},
forced:true,
content:function(){
'step 0'
player.chooseTarget(function(card,player,target){
return target==player||target==trigger.player;
},true,'礼下:选择一个目标摸一张牌').ai=function(target){
return target==player;
}.ai=function(target){
return player==target?1:0;
};
'step 1'
if(result.targets.length){
result.targets[0].draw();
player.line(result.targets[0],'green');
}
player.storage.biluan--;
game.addVideo('storage',player,['biluan',player.storage.biluan]);
}
}, },
fuji:{ fuji:{
trigger:{global:'damageBegin'}, trigger:{global:'damageBegin'},
@ -386,8 +800,7 @@ character.sp={
if(cards.length){ if(cards.length){
var dialog; var dialog;
if(event.isMine()){ if(event.isMine()){
dialog=ui.create.dialog('是否发动【'+get.translation(event.name)+'】?'); dialog=ui.create.dialog('是否发动【'+get.translation(event.name)+'】?','hidden');
dialog.style.opacity='none';
dialog.add(cards); dialog.add(cards);
for(var i=0;i<dialog.buttons.length;i++){ for(var i=0;i<dialog.buttons.length;i++){
dialog.buttons[i].style.opacity=1; dialog.buttons[i].style.opacity=1;
@ -401,14 +814,15 @@ character.sp={
} }
} }
maxval+=cards.length-1; maxval+=cards.length-1;
player.chooseToDiscard('he',{suit:suits},dialog).ai=function(card){ var next=player.chooseToDiscard('he',{suit:suits},dialog);
next.ai=function(card){
return maxval-ai.get.value(card); return maxval-ai.get.value(card);
}; };
next.logSkill='manjuan';
event.cards=cards; event.cards=cards;
} }
"step 2" "step 2"
if(result.bool){ if(result.bool){
player.logSkill(event.name);
game.log(get.translation(player)+'获得了'+get.translation(event.cards)); game.log(get.translation(player)+'获得了'+get.translation(event.cards));
player.gain(event.cards,'gain2'); player.gain(event.cards,'gain2');
} }
@ -564,12 +978,13 @@ character.sp={
direct:true, direct:true,
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('协穆:是否弃置一张杀并摸两张牌?',{name:'sha'}).ai=function(card){ var next=player.chooseToDiscard('协穆:是否弃置一张杀并摸两张牌?',{name:'sha'});
next.ai=function(card){
return 9-ai.get.value(card); return 9-ai.get.value(card);
}; };
next.logSkill='xiemu';
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('xiemu');
player.draw(2); player.draw(2);
} }
}, },
@ -922,9 +1337,11 @@ character.sp={
}, },
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('是否发动【名士】?',{color:'black'}).ai=function(card){ var next=player.chooseToDiscard('是否发动【名士】?',{color:'black'});
next.ai=function(card){
return 9-ai.get.value(card); return 9-ai.get.value(card);
} }
next.logSkill='mingshi';
"step 1" "step 1"
if(result.bool){ if(result.bool){
trigger.num--; trigger.num--;
@ -1100,16 +1517,17 @@ character.sp={
content:function(){ content:function(){
"step 0" "step 0"
var nono=(Math.abs(ai.get.attitude(player,trigger.player))<3); var nono=(Math.abs(ai.get.attitude(player,trigger.player))<3);
player.chooseToDiscard('是否对'+get.translation(trigger.player)+'发动【鸩毒】?').ai=function(card){ var next=player.chooseToDiscard('是否对'+get.translation(trigger.player)+'发动【鸩毒】?');
next.ai=function(card){
if(nono) return -1; if(nono) return -1;
if(ai.get.damageEffect(trigger.player,player,player)>0){ if(ai.get.damageEffect(trigger.player,player,player)>0){
return 7-ai.get.useful(card); return 7-ai.get.useful(card);
} }
return -1; return -1;
} }
next.logSkill=['zhendu',trigger.player];
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('zhendu',trigger.player);
trigger.player.damage(); trigger.player.damage();
} }
else{ else{
@ -1448,16 +1866,17 @@ character.sp={
content:function(){ content:function(){
"step 0" "step 0"
var nono=(Math.abs(ai.get.attitude(player,trigger.player))<3); var nono=(Math.abs(ai.get.attitude(player,trigger.player))<3);
player.chooseToDiscard('是否发动【骁果】?',{type:'basic'}).ai=function(card){ var next=player.chooseToDiscard('是否发动【骁果】?',{type:'basic'});
next.ai=function(card){
if(nono) return 0; if(nono) return 0;
if(ai.get.damageEffect(trigger.player,player,player)>0){ if(ai.get.damageEffect(trigger.player,player,player)>0){
return 8-ai.get.useful(card); return 8-ai.get.useful(card);
} }
return 0; return 0;
} }
next.logSkill=['xiaoguo',trigger.player];
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('xiaoguo',trigger.player);
var nono=(ai.get.damageEffect(trigger.player,player,trigger.player)>=0); var nono=(ai.get.damageEffect(trigger.player,player,trigger.player)>=0);
trigger.player.chooseToDiscard('he',{type:'equip'}).ai=function(card){ trigger.player.chooseToDiscard('he',{type:'equip'}).ai=function(card){
if(nono){ if(nono){
@ -2381,7 +2800,7 @@ character.sp={
if(current>0) return; if(current>0) return;
if(target.num('h')==0) return 1.6; if(target.num('h')==0) return 1.6;
if(target.num('h')==1) return 1.2; if(target.num('h')==1) return 1.2;
if(target.num('h')==2) return [0.8,0.5,0,-0.5]; if(target.num('h')==2) return [0.8,0.2,0,-0.2];
return [0.4,0.7,0,-0.7]; return [0.4,0.7,0,-0.7];
} }
} }
@ -2850,12 +3269,14 @@ character.sp={
zhanglu:'张鲁', zhanglu:'张鲁',
wutugu:'兀突骨', wutugu:'兀突骨',
mateng:'马腾', mateng:'马腾',
sp_caiwenji:'蔡文姬',
biluan:'避乱', biluan:'避乱',
biluan_info:'摸牌阶段开始时若有其他角色与你距离不大于1则你可以放弃摸牌。若如此做其他角色与你距离+XX为势力数', biluan_info:'摸牌阶段开始时若有其他角色与你距离不大于1则你可以放弃摸牌。若如此做其他角色与你距离+XX为势力数',
lixia:'礼下', lixia:'礼下',
lixia_info:'锁定技,其他角色结束阶段开始时,若你不在其攻击范围内,你摸一张牌或令其摸一张牌。若如此做,其他角色与你的距离-1', lixia_info:'锁定技,其他角色结束阶段开始时,若你不在其攻击范围内,你摸一张牌或令其摸一张牌。若如此做,其他角色与你的距离-1',
yishe:'义舍', yishe:'义舍',
yishe_bg:'米',
yishe_info:'结束阶段开始时若你的武将牌上没有牌你可以摸两张牌。若如此做你将两张牌置于武将牌上称为“米”当“米”移至其他区域后若你的武将牌上没有“米”你回复1点体力', yishe_info:'结束阶段开始时若你的武将牌上没有牌你可以摸两张牌。若如此做你将两张牌置于武将牌上称为“米”当“米”移至其他区域后若你的武将牌上没有“米”你回复1点体力',
bushi:'布施', bushi:'布施',
midao:'米道', midao:'米道',
@ -2868,6 +3289,7 @@ character.sp={
mozhi:'默识', mozhi:'默识',
mozhi_info:'结束阶段开始时,你可以将一张手牌当你本回合出牌阶段使用的第一张基本或非延时类锦囊牌使用。然后,你可以将一张手牌当你本回合出牌阶段使用的第二张基本或非延时类锦囊牌使用', mozhi_info:'结束阶段开始时,你可以将一张手牌当你本回合出牌阶段使用的第一张基本或非延时类锦囊牌使用。然后,你可以将一张手牌当你本回合出牌阶段使用的第二张基本或非延时类锦囊牌使用',
ranshang:'燃殇', ranshang:'燃殇',
ranshang2:'燃殇',
ranshang_info:'锁定技当你受到1点火焰伤害后你获得1枚“燃”标记结束阶段开始时你失去X点体力X为“燃”标记的数量', ranshang_info:'锁定技当你受到1点火焰伤害后你获得1枚“燃”标记结束阶段开始时你失去X点体力X为“燃”标记的数量',
hanyong:'悍勇', hanyong:'悍勇',
hanyong_info:'当你使用【南蛮入侵】或【万箭齐发】时,若你的体力值小于游戏轮数,你可以令此牌造成的伤害+1', hanyong_info:'当你使用【南蛮入侵】或【万箭齐发】时,若你的体力值小于游戏轮数,你可以令此牌造成的伤害+1',

View File

@ -46,6 +46,7 @@ character.standard={
unique:true, unique:true,
trigger:{player:'chooseToRespondBegin'}, trigger:{player:'chooseToRespondBegin'},
filter:function(event,player){ filter:function(event,player){
if(event.responded) return false;
if(!player.isZhu) return false; if(!player.isZhu) return false;
if(event.filterCard({name:'shan'})==false) return false; if(event.filterCard({name:'shan'})==false) return false;
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
@ -515,6 +516,7 @@ character.standard={
audio:2, audio:2,
trigger:{player:'chooseToRespondBegin'}, trigger:{player:'chooseToRespondBegin'},
filter:function(event,player){ filter:function(event,player){
if(event.responded) return false;
if(!player.isZhu) return false; if(!player.isZhu) return false;
if(event.filterCard({name:'sha'})==false) return false; if(event.filterCard({name:'sha'})==false) return false;
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){

View File

@ -331,7 +331,7 @@ character.swd={
var dialog=ui.create.dialog('聒噪:选择一个目标将手牌替换',cards,'hidden'); var dialog=ui.create.dialog('聒噪:选择一个目标将手牌替换',cards,'hidden');
dialog.classList.add('noselect'); dialog.classList.add('noselect');
var next=player.chooseTarget(true,dialog,function(card,player,target){ var next=player.chooseTarget(true,dialog,function(card,player,target){
return target.num('h')>0; return target.num('h')>0&&get.distance(player,target)<=2;
}).ai=function(target){ }).ai=function(target){
var att=ai.get.attitude(player,target); var att=ai.get.attitude(player,target);
var hs=target.get('h'); var hs=target.get('h');
@ -665,9 +665,11 @@ character.swd={
"step 0" "step 0"
var yep=ai.get.attitude(player,trigger.player)<0&& var yep=ai.get.attitude(player,trigger.player)<0&&
trigger.player.num('h')>2; trigger.player.num('h')>2;
player.chooseToDiscard(function(card){ var next=player.chooseToDiscard(function(card){
return get.type(card)!='basic'; return get.type(card)!='basic';
},'是否对'+get.translation(trigger.player)+'发动【入梦】?','he').ai=function(card){ },'是否对'+get.translation(trigger.player)+'发动【入梦】?','he');
next.logSkill=['rumeng',trigger.player];
next.ai=function(card){
if(yep){ if(yep){
return 6-ai.get.value(card); return 6-ai.get.value(card);
} }
@ -675,7 +677,6 @@ character.swd={
} }
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('rumeng',trigger.player);
trigger.player.chooseToDiscard({type:'basic'},'入梦:弃置一张基本牌或路过出牌及弃牌阶段').ai=function(card){ trigger.player.chooseToDiscard({type:'basic'},'入梦:弃置一张基本牌或路过出牌及弃牌阶段').ai=function(card){
return 5-ai.get.value(card); return 5-ai.get.value(card);
} }
@ -702,15 +703,16 @@ character.swd={
}, },
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('he','是否发动【连打】?').ai=function(card){ var next=player.chooseToDiscard('he','是否发动【连打】?');
next.ai=function(card){
if(ai.get.effect(trigger.target,{name:'sha'},player,player)>0){ if(ai.get.effect(trigger.target,{name:'sha'},player,player)>0){
return 7-ai.get.value(card); return 7-ai.get.value(card);
} }
return 0; return 0;
} }
next.logSkill='lianda';
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('lianda');
player.addTempSkill('lianda2','phaseAfter'); player.addTempSkill('lianda2','phaseAfter');
player.useCard({name:'sha'},trigger.target); player.useCard({name:'sha'},trigger.target);
} }
@ -840,7 +842,9 @@ character.swd={
} }
} }
} }
player.chooseToDiscard('he','是否发动【镇卫】?').ai=function(card){ var next=player.chooseToDiscard('he','是否发动【镇卫】?');
next.logSkill='hzhenwei',trigger.target;
next.ai=function(card){
if(save){ if(save){
return 7-ai.get.value(card); return 7-ai.get.value(card);
} }
@ -848,7 +852,6 @@ character.swd={
} }
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('hzhenwei',trigger.target);
trigger.target=player; trigger.target=player;
trigger.untrigger(); trigger.untrigger();
trigger.trigger('useCardToBefore'); trigger.trigger('useCardToBefore');
@ -1616,13 +1619,14 @@ character.swd={
content:function(){ content:function(){
"step 0" "step 0"
var att=ai.get.attitude(player,trigger.player); var att=ai.get.attitude(player,trigger.player);
player.chooseToDiscard('he','是否发动【碎岩】?').ai=function(card){ var next=player.chooseToDiscard('he','是否发动【碎岩】?');
next.ai=function(card){
if(att<0) return 7-ai.get.value(card); if(att<0) return 7-ai.get.value(card);
return -1; return -1;
} }
next.logSkill=['suiyan',trigger.player];
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('suiyan',trigger.player);
trigger.player.discard(trigger.player.get('e')); trigger.player.discard(trigger.player.get('e'));
} }
}, },
@ -2146,7 +2150,9 @@ character.swd={
str+='对'+get.translation(trigger.targets); str+='对'+get.translation(trigger.targets);
} }
str+='的'+get.translation(trigger.card)+'失效?' str+='的'+get.translation(trigger.card)+'失效?'
player.chooseToDiscard('he',{type:'equip'},str).ai=function(card){ var next=player.chooseToDiscard('he',{type:'equip'},str);
next.logSkill='gongshen';
next.ai=function(card){
if(effect<0){ if(effect<0){
var val=9-ai.get.value(card); var val=9-ai.get.value(card);
var nme=trigger.card.name; var nme=trigger.card.name;
@ -2173,7 +2179,6 @@ character.swd={
game.delay(); game.delay();
trigger.untrigger(); trigger.untrigger();
trigger.finish(); trigger.finish();
player.logSkill('gongshen');
} }
}, },
ai:{ ai:{
@ -3066,14 +3071,15 @@ character.swd={
}, },
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('是否弃置两张手牌将'+get.translation(trigger.card)+'反弹?',2).ai=function(card){ var next=player.chooseToDiscard('是否弃置两张手牌将'+get.translation(trigger.card)+'反弹?',2);
next.ai=function(card){
if(ai.get.effect(player,trigger.card)<0) return 4-ai.get.value(card); if(ai.get.effect(player,trigger.card)<0) return 4-ai.get.value(card);
return 0; return 0;
} }
next.logSkill='yihua';
"step 1" "step 1"
if(result.bool){ if(result.bool){
// player.discard(result.cards); // player.discard(result.cards);
player.logSkill('yihua');
trigger.target=trigger.player; trigger.target=trigger.player;
trigger.player=player; trigger.player=player;
trigger.untrigger(); trigger.untrigger();
@ -3312,10 +3318,9 @@ character.swd={
}, },
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToUse({name:'sha'},'是否对'+get.translation(trigger.player)+'使用一张杀',trigger.player); player.chooseToUse({name:'sha'},'是否对'+get.translation(trigger.player)+'使用一张杀',trigger.player).logSkill='rexue';
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('rexue');
player.draw(); player.draw();
} }
} }
@ -3400,7 +3405,9 @@ character.swd={
"step 0" "step 0"
var att=ai.get.attitude(player,trigger.player); var att=ai.get.attitude(player,trigger.player);
var nh=player.num('h'); var nh=player.num('h');
player.chooseToDiscard('是否发动苏生?').ai=function(card){ var next=player.chooseToDiscard('是否发动苏生?');
next.logSkill='susheng';
next.ai=function(card){
if(att>3||(att>1&&nh>2)){ if(att>3||(att>1&&nh>2)){
return ai.get.unuseful2(card); return ai.get.unuseful2(card);
} }
@ -3414,7 +3421,6 @@ character.swd={
trigger.player.hp=1; trigger.player.hp=1;
if(trigger.player.maxHp<1) trigger.player.maxHp=1; if(trigger.player.maxHp<1) trigger.player.maxHp=1;
trigger.player.update(); trigger.player.update();
player.logSkill('susheng');
player.addTempSkill('susheng2','phaseAfter'); player.addTempSkill('susheng2','phaseAfter');
} }
@ -4268,9 +4274,11 @@ character.swd={
direct:true, direct:true,
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('he','是否发动【唤魂】?',function(card){ var next=player.chooseToDiscard('he','是否发动【唤魂】?',function(card){
return get.color(card)=='red'; return get.color(card)=='red';
}).ai=function(card){ });
next.logSkill=['huanhun',trigger.player];
next.ai=function(card){
if(ai.get.attitude(player,trigger.player)>0){ if(ai.get.attitude(player,trigger.player)>0){
return 8-ai.get.value(card); return 8-ai.get.value(card);
} }
@ -4278,7 +4286,6 @@ character.swd={
}; };
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('huanhun',trigger.player);
trigger.player.judge(function(card){ trigger.player.judge(function(card){
return get.color(card)=='red'?1:-1; return get.color(card)=='red'?1:-1;
}); });
@ -4394,7 +4401,9 @@ character.swd={
direct:true, direct:true,
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('请选择发动代形的卡牌','he',[1,player.num('he')]).ai=function(card){ var next=player.chooseToDiscard('请选择发动代形的卡牌','he',[1,player.num('he')]);
next.logSkill='daixing';
next.ai=function(card){
if(ui.selected.cards.length>=2) return 0; if(ui.selected.cards.length>=2) return 0;
if(ui.selected.cards.length==1){ if(ui.selected.cards.length==1){
if(player.num('h')>player.hp){ if(player.num('h')>player.hp){
@ -4408,7 +4417,6 @@ character.swd={
if(result.bool){ if(result.bool){
player.changeHujia(result.cards.length); player.changeHujia(result.cards.length);
player.storage.daixing=result.cards.length; player.storage.daixing=result.cards.length;
player.logSkill('daixing');
} }
}, },
ai:{ ai:{
@ -5051,7 +5059,9 @@ character.swd={
var num=player.num('h')-trigger.source.num('h'); var num=player.num('h')-trigger.source.num('h');
event.num=num; event.num=num;
if(num>0){ if(num>0){
player.chooseToDiscard(num,'是否弃置'+num+'张手牌,并对'+get.translation(trigger.source)+'造成一点伤害?').ai=function(card){ var next=player.chooseToDiscard(num,'是否弃置'+num+'张手牌,并对'+get.translation(trigger.source)+'造成一点伤害?');
next.logSkill=['pozhen',trigger.source];
next.ai=function(card){
if(ai.get.damageEffect(trigger.source,player,player)>0&&num<=2){ if(ai.get.damageEffect(trigger.source,player,player)>0&&num<=2){
return 6-ai.get.value(card); return 6-ai.get.value(card);
} }
@ -5068,11 +5078,11 @@ character.swd={
} }
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('pozhen',trigger.source);
if(event.num>0){ if(event.num>0){
trigger.source.damage(); trigger.source.damage();
} }
else{ else{
player.logSkill('pozhen',trigger.source);
var cards=trigger.source.get('h'); var cards=trigger.source.get('h');
cards.sort(lib.sort.random); cards.sort(lib.sort.random);
trigger.source.discard(cards.slice(0,-event.num)); trigger.source.discard(cards.slice(0,-event.num));
@ -5605,9 +5615,11 @@ character.swd={
direct:true, direct:true,
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('he','是否弃置一张装备牌抵消伤害?',function(card,player){ var next=player.chooseToDiscard('he','是否弃置一张装备牌抵消伤害?',function(card,player){
return get.type(card)=='equip'; return get.type(card)=='equip';
}).ai=function(card){ });
next.logSkill='yulin';
next.ai=function(card){
if(player.hp==1||trigger.num>1){ if(player.hp==1||trigger.num>1){
return 9-ai.get.value(card); return 9-ai.get.value(card);
} }
@ -5618,7 +5630,6 @@ character.swd={
}; };
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('yulin');
game.delay(); game.delay();
trigger.untrigger(); trigger.untrigger();
trigger.finish(); trigger.finish();
@ -5792,9 +5803,11 @@ character.swd={
direct:true, direct:true,
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('朱羽:是否弃置一张红色手牌使其受到一点火焰伤害?',function(card){ var next=player.chooseToDiscard('朱羽:是否弃置一张红色手牌使其受到一点火焰伤害?',function(card){
return get.color(card)=='red'; return get.color(card)=='red';
}).ai=function(card){ });
next.logSkill=['zhuyu',trigger.player,'fire'];
next.ai=function(card){
if(trigger.player.hasSkillTag('nofire')) return 0; if(trigger.player.hasSkillTag('nofire')) return 0;
if(ai.get.damageEffect(trigger.player,player,player,'fire')>0){ if(ai.get.damageEffect(trigger.player,player,player,'fire')>0){
return 9-ai.get.value(card); return 9-ai.get.value(card);
@ -5803,7 +5816,6 @@ character.swd={
}; };
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('zhuyu',trigger.player,'fire');
trigger.player.damage('fire'); trigger.player.damage('fire');
} }
} }
@ -5822,9 +5834,11 @@ character.swd={
direct:true, direct:true,
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('是否弃置一张黑色手牌使其横置或翻面?',function(card){ var next=player.chooseToDiscard('是否弃置一张黑色手牌使其横置或翻面?',function(card){
return get.color(card)=='black'; return get.color(card)=='black';
}).ai=function(card){ });
next.logSkill='ningshuang';
next.ai=function(card){
if(ai.get.attitude(player,trigger.player)<0){ if(ai.get.attitude(player,trigger.player)<0){
return 9-ai.get.value(card); return 9-ai.get.value(card);
} }
@ -5832,7 +5846,6 @@ character.swd={
}; };
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('ningshuang');
if(trigger.player.classList.contains('turnedover')){ if(trigger.player.classList.contains('turnedover')){
trigger.player.loseHp(); trigger.player.loseHp();
} }
@ -6239,7 +6252,7 @@ character.swd={
list=list.concat(game.players[i].get('j')); list=list.concat(game.players[i].get('j'));
} }
var dialog=ui.create.dialog(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+get.translation(trigger.player.judging)+ var dialog=ui.create.dialog(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+get.translation(trigger.player.judging)+
',是否发动【天轮】?',list); ',是否发动【天轮】?',list,'hidden');
player.chooseButton(dialog,function(button){ player.chooseButton(dialog,function(button){
var card=button.link; var card=button.link;
var trigger=_status.event.parent._trigger; var trigger=_status.event.parent._trigger;
@ -6275,7 +6288,7 @@ character.swd={
} }
} }
}, },
longyin:{ hlongyin:{
enable:'phaseUse', enable:'phaseUse',
usable:1, usable:1,
filterCard:function(card,player){ filterCard:function(card,player){
@ -6875,16 +6888,17 @@ character.swd={
ai.get.attitude(player,trigger.source)<0&& ai.get.attitude(player,trigger.source)<0&&
ai.get.damageEffect(trigger.player,trigger.source,player)< ai.get.damageEffect(trigger.player,trigger.source,player)<
ai.get.damageEffect(trigger.source,trigger.player,player); ai.get.damageEffect(trigger.source,trigger.player,player);
player.chooseToDiscard('是否将伤害来源('+get.translation(trigger.source)+ var next=player.chooseToDiscard('是否将伤害来源('+get.translation(trigger.source)+
')和目标('+get.translation(trigger.player)+')对调?','he').ai=function(card){ ')和目标('+get.translation(trigger.player)+')对调?','he');
next.ai=function(card){
if(go){ if(go){
return 10-ai.get.value(card); return 10-ai.get.value(card);
} }
return 0; return 0;
}; };
next.logSkill='yinguo';
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('yinguo');
var target=trigger.player; var target=trigger.player;
trigger.player=trigger.source; trigger.player=trigger.source;
trigger.source=target; trigger.source=target;
@ -7568,13 +7582,14 @@ character.swd={
content:function(){ content:function(){
"step 0" "step 0"
var dis=trigger.target.num('h','shan')||trigger.target.num('e','bagua')||trigger.target.num('h')>2; var dis=trigger.target.num('h','shan')||trigger.target.num('e','bagua')||trigger.target.num('h')>2;
player.chooseToDiscard('是否发动【狩猎】?').ai=function(card){ var next=player.chooseToDiscard('是否发动【狩猎】?');
next.ai=function(card){
if(dis) return 7-ai.get.value(card); if(dis) return 7-ai.get.value(card);
return 0; return 0;
} }
next.logSkill='shoulie';
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('shoulie');
trigger.directHit=true; trigger.directHit=true;
} }
} }
@ -7817,7 +7832,7 @@ character.swd={
bingfeng2_info:'不能使用或打出手牌', bingfeng2_info:'不能使用或打出手牌',
bingfeng_info:'限定技,出牌阶段,你可以指定至多三个目标与其一同翻面,且处于翻面状态时不能使用或打出手牌;若如此做,你失去技能玄咒并减少一点体力上限', bingfeng_info:'限定技,出牌阶段,你可以指定至多三个目标与其一同翻面,且处于翻面状态时不能使用或打出手牌;若如此做,你失去技能玄咒并减少一点体力上限',
guozao:'聒噪', guozao:'聒噪',
guozao_info:'锁定技每当距离你1以内的角色受到一次伤害若伤害来源不你你须观看牌堆顶的三张牌然后指定一名有手牌角色将手牌与这些牌交换', guozao_info:'锁定技每当距离你1以内的角色受到一次伤害若伤害来源不你你须观看牌堆顶的三张牌然后指定距离2以内的一名有手牌角色将手牌与这些牌交换',
heihuo:'黑火', heihuo:'黑火',
heihuo_info:'出牌阶段你可以弃置一张装备牌令你的手牌数加倍若你的手牌因此达到8张或更多你立即受到3点火焰伤害且本回合内不能再次发动黑火', heihuo_info:'出牌阶段你可以弃置一张装备牌令你的手牌数加倍若你的手牌因此达到8张或更多你立即受到3点火焰伤害且本回合内不能再次发动黑火',
yaotong:'妖瞳', yaotong:'妖瞳',
@ -8097,7 +8112,7 @@ character.swd={
tianhuo:'天火', tianhuo:'天火',
huanyin:'幻音', huanyin:'幻音',
tianlun:'天轮', tianlun:'天轮',
longyin:'龙吟', hlongyin:'龙吟',
lanzhi:'兰芷', lanzhi:'兰芷',
duanyi:'断意', duanyi:'断意',
miesheng:'灭生', miesheng:'灭生',
@ -8166,7 +8181,7 @@ character.swd={
duanyi_info:'出牌阶段限一次你可以弃置两张杀对一名角色造成一点伤害然后其翻面并摸X张牌X为其已损失的体力值', duanyi_info:'出牌阶段限一次你可以弃置两张杀对一名角色造成一点伤害然后其翻面并摸X张牌X为其已损失的体力值',
guxing_info:'出牌阶段你可以将最后至多X张手牌当杀使用此杀无视距离且可以指定至多3个目标每造成一次伤害你摸一张牌为你已损失的体力值且至少为。', guxing_info:'出牌阶段你可以将最后至多X张手牌当杀使用此杀无视距离且可以指定至多3个目标每造成一次伤害你摸一张牌为你已损失的体力值且至少为。',
tianlun_info:'任意一名角色的判定生效前,你可以弃置一张场上角色的判定牌代替之', tianlun_info:'任意一名角色的判定生效前,你可以弃置一张场上角色的判定牌代替之',
longyin_info:'出牌阶段,你可以弃置任意张颜色相同且点数不同的牌,并获得逆时针座位距离与卡牌点数相同的角色区域内的一张牌。每阶段限一次', hlongyin_info:'出牌阶段,你可以弃置任意张颜色相同且点数不同的牌,并获得逆时针座位距离与卡牌点数相同的角色区域内的一张牌。每阶段限一次',
lanzhi_info:'每当你即将造成伤害,可以防止此伤害,然后摸两张牌。每回合限发动一次。', lanzhi_info:'每当你即将造成伤害,可以防止此伤害,然后摸两张牌。每回合限发动一次。',
tianhuo_info:'出牌阶段,你可以令所有角色弃置其判定区域内的牌,并受到没有来源的等量火焰伤害,每阶段限一次', tianhuo_info:'出牌阶段,你可以令所有角色弃置其判定区域内的牌,并受到没有来源的等量火焰伤害,每阶段限一次',
huanyin_info:'锁定技,每当你成为其他角色的卡牌的目标时,你进行一次判定,若为黑桃则取消之,若为红桃你摸一张牌', huanyin_info:'锁定技,每当你成为其他角色的卡牌的目标时,你进行一次判定,若为黑桃则取消之,若为红桃你摸一张牌',

View File

@ -408,7 +408,9 @@ character.xianjian={
targets.push(game.players[i]); targets.push(game.players[i]);
} }
} }
player.chooseToDiscard('是否对'+get.translation(targets)+'发动【忘忧】?','he').ai=function(card){ var next=player.chooseToDiscard('是否对'+get.translation(targets)+'发动【忘忧】?','he');
next.logSkill=['wangyou',event.targets];
next.ai=function(card){
if(num<=0) return 0; if(num<=0) return 0;
switch(num){ switch(num){
case 1:return 5-ai.get.value(card); case 1:return 5-ai.get.value(card);
@ -420,7 +422,6 @@ character.xianjian={
"step 1" "step 1"
if(result.bool){ if(result.bool){
event.targets.sort(lib.sort.seat); event.targets.sort(lib.sort.seat);
player.logSkill('wangyou',event.targets);
game.asyncDraw(event.targets); game.asyncDraw(event.targets);
} }
else{ else{
@ -760,7 +761,8 @@ character.xianjian={
} }
} }
if(num){ if(num){
player.chooseToDiscard(num,'是否发动【千方】?','he').ai=function(card){ var next=player.chooseToDiscard(num,'是否发动【千方】?','he');
next.ai=function(card){
if(ainum>=0){ if(ainum>=0){
switch(num){ switch(num){
case 1:return 8-ai.get.value(card); case 1:return 8-ai.get.value(card);
@ -770,6 +772,8 @@ character.xianjian={
} }
return -1; return -1;
} }
next.logSkill='qianfang';
event.logged=true;
} }
else{ else{
player.chooseBool('是否发动【千方】?').ai=function(){ player.chooseBool('是否发动【千方】?').ai=function(){
@ -781,7 +785,7 @@ character.xianjian={
player.storage.xuanning=0; player.storage.xuanning=0;
player.unmarkSkill('xuanning'); player.unmarkSkill('xuanning');
player.addTempSkill('qianfang2','phaseAfter'); player.addTempSkill('qianfang2','phaseAfter');
player.logSkill('qianfang'); if(!event.logged) player.logSkill('qianfang');
player.useCard({name:'wanjian'},event.targets); player.useCard({name:'wanjian'},event.targets);
} }
else{ else{
@ -1223,7 +1227,9 @@ character.xianjian={
trigger:{target:'useCardToBefore'}, trigger:{target:'useCardToBefore'},
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('是否弃置两张牌使'+get.translation(trigger.card)+'失效?','he',2).ai=function(card){ var next=player.chooseToDiscard('是否弃置两张牌使'+get.translation(trigger.card)+'失效?','he',2);
next.logSkill='xiaoyao';
next.ai=function(card){
if(ai.get.effect(player,trigger.card,trigger.player,player)<0){ if(ai.get.effect(player,trigger.card,trigger.player,player)<0){
if(get.tag(trigger.card,'respondSha')&&player.num('h','sha')) return 0; if(get.tag(trigger.card,'respondSha')&&player.num('h','sha')) return 0;
if(get.tag(trigger.card,'respondShan')&&player.num('h','shan')) return 0; if(get.tag(trigger.card,'respondShan')&&player.num('h','shan')) return 0;
@ -1235,7 +1241,6 @@ character.xianjian={
if(result.bool){ if(result.bool){
trigger.untrigger(); trigger.untrigger();
trigger.finish(); trigger.finish();
player.logSkill('xiaoyao');
} }
} }
}, },

File diff suppressed because it is too large Load Diff

View File

@ -658,12 +658,13 @@ character.yxs={
}, },
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('he','是否弃置一张黑色牌并收回'+get.translation(trigger.card)+'',{color:'black'}).ai=function(card){ var next=player.chooseToDiscard('he','是否弃置一张黑色牌并收回'+get.translation(trigger.card)+'',{color:'black'});
next.ai=function(card){
return ai.get.value(trigger.card)-ai.get.value(card); return ai.get.value(trigger.card)-ai.get.value(card);
} }
next.logSkill='jieyong';
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('jieyong');
player.gain(trigger.card,'gain2'); player.gain(trigger.card,'gain2');
player.addTempSkill('jieyong2',['phaseAfter','phaseBegin']); player.addTempSkill('jieyong2',['phaseAfter','phaseBegin']);
} }
@ -801,15 +802,16 @@ character.yxs={
"step 0" "step 0"
var val=ai.get.value(trigger.card); var val=ai.get.value(trigger.card);
var suit=get.suit(trigger.card); var suit=get.suit(trigger.card);
player.chooseToDiscard('he','逐鹿:是否发动弃置一张'+get.translation(suit)+ var next=player.chooseToDiscard('he','逐鹿:是否发动弃置一张'+get.translation(suit)+
'牌并获得'+get.translation(trigger.card)+'',{suit:suit}).ai=function(card){ '牌并获得'+get.translation(trigger.card)+'',{suit:suit});
next.ai=function(card){
return val-ai.get.value(card); return val-ai.get.value(card);
}; };
next.logSkill='zhulu';
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.gain(trigger.card,'gain2'); player.gain(trigger.card,'gain2');
player.addTempSkill('zhulu2','phaseAfter'); player.addTempSkill('zhulu2','phaseAfter');
player.logSkill('zhulu');
} }
}, },
ai:{ ai:{

View File

@ -239,6 +239,12 @@
else{ else{
ui.arena.classList.remove('mobile'); ui.arena.classList.remove('mobile');
} }
if(lib.config.layout=='default'){
ui.arena.classList.add('oldlayout');
}
else{
ui.arena.classList.remove('oldlayout');
}
if(lib.config.layout=='default'&&lib.config.hp_style=='official'){ if(lib.config.layout=='default'&&lib.config.hp_style=='official'){
ui.arena.classList.add('hpimage'); ui.arena.classList.add('hpimage');
} }
@ -359,7 +365,7 @@
item:{ item:{
default:'无', default:'无',
blur:'模糊', blur:'模糊',
gray:'黑', gray:'黑',
sepia:'怀旧', sepia:'怀旧',
invert:'反色', invert:'反色',
saturate:'饱和', saturate:'饱和',
@ -1748,8 +1754,7 @@
help:{ help:{
'游戏选项':'<ul><li>控制台命令<br>开启后可用浏览器控制台控制游戏<li>自动确认<br>开启后当候选目标仅有1个时点击目标无需再点击确定<li>'+ '游戏选项':'<ul><li>控制台命令<br>开启后可用浏览器控制台控制游戏<li>自动确认<br>开启后当候选目标仅有1个时点击目标无需再点击确定<li>'+
'触屏模式<br>可消除iOS等设备上300ms的点击延迟但开启后无法使用鼠标<li>滚轮控制手牌<br>开启后滚轮可控制手牌的左右滚动建议Mac等具备横向滚动功能的设备关闭此选项'+ '触屏模式<br>可消除iOS等设备上300ms的点击延迟但开启后无法使用鼠标<li>滚轮控制手牌<br>开启后滚轮可控制手牌的左右滚动建议Mac等具备横向滚动功能的设备关闭此选项'+
'<li>隐藏非全身皮肤<br>在新版布局中,若角色没有全身皮肤将被隐藏<li>游戏玩法<br>为游戏增加不同玩法,开启后可在帮助中查看介绍'+ '<li>隐藏非全身皮肤<br>在新版布局中,若角色没有全身皮肤将被隐藏<li>游戏玩法<br>为游戏增加不同玩法,开启后可在帮助中查看介绍',
'<li>加强主公<br>反贼人数多于2时主公会额外增加一个技能每个主公的额外技能固定非常备主公增加天命',
'游戏操作':'<ul><li>长按/鼠标悬停/右键单击(需在设置中开启)显示信息<li>触屏模式中双指点击切换暂停<li>移动布局中,点击顶部的左半边或右半边可显示按钮,双击顶部可令界面下移(方便标身份)<li>键盘快捷键<br>'+ '游戏操作':'<ul><li>长按/鼠标悬停/右键单击(需在设置中开启)显示信息<li>触屏模式中双指点击切换暂停<li>移动布局中,点击顶部的左半边或右半边可显示按钮,双击顶部可令界面下移(方便标身份)<li>键盘快捷键<br>'+
'<table><tr><td>a<td>切换托管<tr><td>c<td>打开设置<tr><td>w<td>切换不询问无懈<tr><td>▭<td>暂停</ul>', '<table><tr><td>a<td>切换托管<tr><td>c<td>打开设置<tr><td>w<td>切换不询问无懈<tr><td>▭<td>暂停</ul>',
'游戏命令':'<div style="margin:10px">变量名</div><ul style="margin-top:0"><li>场上角色<br>game.players<li>阵亡角色<br>game.dead'+ '游戏命令':'<div style="margin:10px">变量名</div><ul style="margin-top:0"><li>场上角色<br>game.players<li>阵亡角色<br>game.dead'+
@ -1764,7 +1769,8 @@
'<li>使用卡牌<br>player.useCard(card,<br>targets)<li>死亡<br>player.die()<li>复活<br>player.revive(hp)</ul>'+ '<li>使用卡牌<br>player.useCard(card,<br>targets)<li>死亡<br>player.die()<li>复活<br>player.revive(hp)</ul>'+
'<div style="margin:10px">游戏操作</div><ul style="margin-top:0"><li>在命令输入框中输出结果<br>game.print(str)<li>游戏结束<br>game.over(bool)'+ '<div style="margin:10px">游戏操作</div><ul style="margin-top:0"><li>在命令输入框中输出结果<br>game.print(str)<li>游戏结束<br>game.over(bool)'+
'<li>角色资料<br>lib.character<li>卡牌资料<br>lib.card', '<li>角色资料<br>lib.character<li>卡牌资料<br>lib.card',
'身份模式':'<div style="margin:10px">明忠</div><ul style="margin-top:0"><li>本模式需要8名玩家进行游戏使用的身份牌为1主公、2忠臣、4反贼和1内奸。游戏开始时每名玩家随机获得一个身份由系统随机选择一名忠臣身份的玩家亮出身份将忠臣牌正面朝上放在面前其他身份包括主公的玩家不亮出身份。<li>'+ '身份模式':'<div style="margin:10px">选项</div><ul style="margin-top:0"><li>加强主公<br>反贼人数多于2时主公会额外增加一个技能每个主公的额外技能固定非常备主公增加天命</ul>'+
'<div style="margin:10px">明忠</div><ul style="margin-top:0"><li>本模式需要8名玩家进行游戏使用的身份牌为1主公、2忠臣、4反贼和1内奸。游戏开始时每名玩家随机获得一个身份由系统随机选择一名忠臣身份的玩家亮出身份将忠臣牌正面朝上放在面前其他身份包括主公的玩家不亮出身份。<li>'+
'首先由亮出身份的忠臣玩家随机获得六张武将牌,挑选一名角色,并将选好的武将牌展示给其他玩家。之后其余每名玩家随机获得三张武将牌,各自从其中挑选一张同时亮出<li>'+ '首先由亮出身份的忠臣玩家随机获得六张武将牌,挑选一名角色,并将选好的武将牌展示给其他玩家。之后其余每名玩家随机获得三张武将牌,各自从其中挑选一张同时亮出<li>'+
'亮出身份牌的忠臣增加1点体力上限。角色濒死和死亡的结算及胜利条件与普通身份局相同。', '亮出身份牌的忠臣增加1点体力上限。角色濒死和死亡的结算及胜利条件与普通身份局相同。',
'战棋模式': '战棋模式':
@ -1805,6 +1811,7 @@
} }
else{ else{
node.addEventListener('mouseenter',ui.click.hoverpopped); node.addEventListener('mouseenter',ui.click.hoverpopped);
// node.addEventListener('mouseleave',ui.click.hoverpopped_leave);
} }
}, },
placePoppedDialog:function(dialog,e){ placePoppedDialog:function(dialog,e){
@ -2203,6 +2210,9 @@
playerproto:{ playerproto:{
phase:function(){ phase:function(){
"step 0" "step 0"
if(player.node.judges.childElementCount){
player.popup('判定阶段');
}
player.phaseJudge(); player.phaseJudge();
"step 1" "step 1"
player.phaseDraw(); player.phaseDraw();
@ -2213,6 +2223,7 @@
game.delayx(); game.delayx();
} }
"step 2" "step 2"
if(!player.skipList.contains('phaseUse')) player.popup('出牌阶段');
player.phaseUse(); player.phaseUse();
"step 3" "step 3"
player.phaseDiscard() player.phaseDiscard()
@ -2255,7 +2266,7 @@
}, },
phaseUse:function(){ phaseUse:function(){
"step 0"; "step 0";
player.chooseToUse(); player.chooseToUse().modCancel='结束';
"step 1" "step 1"
if(result.bool){ if(result.bool){
event.goto(0); event.goto(0);
@ -2265,6 +2276,9 @@
"step 0" "step 0"
event.num=player.num('h')-game.checkMod(player,player.hp,'maxHandcard',player.get('s')); event.num=player.num('h')-game.checkMod(player,player.hp,'maxHandcard',player.get('s'));
if(event.num<=0) event.finish(); if(event.num<=0) event.finish();
else{
player.popup('弃牌阶段');
}
event.trigger('phaseDiscard'); event.trigger('phaseDiscard');
"step 1" "step 1"
player.chooseToDiscard(num,true); player.chooseToDiscard(num,true);
@ -2352,6 +2366,14 @@
event.skillDialog.close(); event.skillDialog.close();
} }
if(event.result.bool){ if(event.result.bool){
if(event.logSkill){
if(typeof event.logSkill=='string'){
player.logSkill(event.logSkill);
}
else if(Array.isArray(event.logSkill)){
player.logSkill.apply(player,event.logSkill);
}
}
if(event.result.card||!event.result.skill){ if(event.result.card||!event.result.skill){
player.useCard(event.result.card,event.result.cards,event.result.targets,event.result.skill); player.useCard(event.result.card,event.result.cards,event.result.targets,event.result.skill);
} }
@ -2464,6 +2486,14 @@
if(event.promptdiscard){ if(event.promptdiscard){
event.promptdiscard.close(); event.promptdiscard.close();
} }
if(event.logSkill&&event.result.bool){
if(typeof event.logSkill=='string'){
player.logSkill(event.logSkill);
}
else if(Array.isArray(event.logSkill)){
player.logSkill.apply(player,event.logSkill);
}
}
player.discard(event.result.cards); player.discard(event.result.cards);
if(event.dialog) event.dialog.close(); if(event.dialog) event.dialog.close();
}, },
@ -3149,7 +3179,9 @@
} }
} }
if(event.animate!=false||num>0){ if(event.animate!=false||num>0){
if(num==0)game.delayx(); if(num==0){
if(event.delayx!==false) game.delayx();
}
else game.delayx(0.5); else game.delayx(0.5);
} }
"step 3" "step 3"
@ -3169,7 +3201,7 @@
} }
"step 5" "step 5"
if(document.getElementsByClassName('thrown').length){ if(document.getElementsByClassName('thrown').length){
game.delayx(); if(event.delayx!==false) game.delayx();
} }
else{ else{
event.finish(); event.finish();
@ -4463,6 +4495,13 @@
return cards; return cards;
} }
}, },
syncStorage:function(skill){
switch(get.itemtype(this.storage[skill])){
case 'cards':game.addVideo('storage',this,[skill,get.cardsInfo(this.storage[skill]),'cards']);break;
case 'card':game.addVideo('storage',this,[skill,get.cardInfo(this.storage[skill]),'cards']);break;
default:game.addVideo('storage',this,[skill,this.storage[skill]]);
}
},
playerfocus:function(time){ playerfocus:function(time){
time=time||1000; time=time||1000;
this.classList.add('playerfocus'); this.classList.add('playerfocus');
@ -6035,7 +6074,7 @@
var dx=this.offsetLeft+this.offsetWidth/2-52-node.offsetLeft; var dx=this.offsetLeft+this.offsetWidth/2-52-node.offsetLeft;
var dy=this.offsetTop+this.offsetHeight/2-52-node.offsetTop; var dy=this.offsetTop+this.offsetHeight/2-52-node.offsetTop;
if(node.style.transform&&node.style.transform!='none'){ if(node.style.transform&&node.style.transform!='none'&&node.style.transform.indexOf('translate')==-1){
node.style.transform+=' translate('+dx+'px,'+dy+'px)'; node.style.transform+=' translate('+dx+'px,'+dy+'px)';
} }
else{ else{
@ -6220,7 +6259,7 @@
ny=ny[0]*ui.arena.offsetHeight/100+ny[1]; ny=ny[0]*ui.arena.offsetHeight/100+ny[1];
var dx=this.offsetLeft+this.offsetWidth/2-52-nx; var dx=this.offsetLeft+this.offsetWidth/2-52-nx;
var dy=this.offsetTop+this.offsetHeight/2-52-ny; var dy=this.offsetTop+this.offsetHeight/2-52-ny;
if(node.style.transform&&node.style.transform!='none'){ if(node.style.transform&&node.style.transform!='none'&&node.style.transform.indexOf('translate')==-1){
node.style.transform+=' translate('+dx+'px,'+dy+'px)'; node.style.transform+=' translate('+dx+'px,'+dy+'px)';
} }
else{ else{
@ -6264,7 +6303,7 @@
ny=ny[0]*ui.arena.offsetHeight/100+ny[1]; ny=ny[0]*ui.arena.offsetHeight/100+ny[1];
var dx=this.offsetLeft+this.offsetWidth/2-52-nx; var dx=this.offsetLeft+this.offsetWidth/2-52-nx;
var dy=this.offsetTop+this.offsetHeight/2-52-ny; var dy=this.offsetTop+this.offsetHeight/2-52-ny;
if(node.style.transform&&node.style.transform!='none'){ if(node.style.transform&&node.style.transform!='none'&&node.style.transform.indexOf('translate')==-1){
node.style.transform+=' translate('+dx+'px,'+dy+'px)'; node.style.transform+=' translate('+dx+'px,'+dy+'px)';
} }
else{ else{
@ -6358,7 +6397,7 @@
// node.dataset.position=player.dataset.position; // node.dataset.position=player.dataset.position;
var dx=player.offsetLeft+player.offsetWidth/2-52-node.offsetLeft; var dx=player.offsetLeft+player.offsetWidth/2-52-node.offsetLeft;
var dy=player.offsetTop+player.offsetHeight/2-52-node.offsetTop; var dy=player.offsetTop+player.offsetHeight/2-52-node.offsetTop;
if(node.style.transform&&node.style.transform!='none'){ if(node.style.transform&&node.style.transform!='none'&&node.style.transform.indexOf('translate')==-1){
node.style.transform+=' translate('+dx+'px,'+dy+'px)'; node.style.transform+=' translate('+dx+'px,'+dy+'px)';
} }
else{ else{
@ -6708,21 +6747,26 @@
} }
} }
else{ else{
var zoom1=0.9,zoom2=0.95;
if(arguments[1]=='phase'){
zoom1=1.05;
zoom2=1.05;
}
if(lib.isMobileMe(this)){ if(lib.isMobileMe(this)){
if(this.isLinked()){ if(this.isLinked()){
this.node.avatar.style.transform='scale(0.9) rotate(-90deg)'; this.node.avatar.style.transform='scale('+zoom1+') rotate(-90deg)';
this.node.avatar2.style.transform='scale(0.9) rotate(-90deg)'; this.node.avatar2.style.transform='scale('+zoom1+') rotate(-90deg)';
} }
else{ else{
this.node.avatar.style.transform='scale(0.9)'; this.node.avatar.style.transform='scale('+zoom1+')';
this.node.avatar2.style.transform='scale(0.9)'; this.node.avatar2.style.transform='scale('+zoom1+')';
} }
} }
else if(this.isLinked()&&lib.isNewLayout()){ else if(this.isLinked()&&lib.isNewLayout()){
this.style.transform='scale(0.95) rotate(-90deg)'; this.style.transform='scale('+zoom2+') rotate(-90deg)';
} }
else{ else{
this.style.transform='scale(0.95)'; this.style.transform='scale('+zoom2+')';
} }
} }
this.queue(); this.queue();
@ -6867,7 +6911,7 @@
var dx=player.offsetLeft+player.offsetWidth/2-52-this.offsetLeft; var dx=player.offsetLeft+player.offsetWidth/2-52-this.offsetLeft;
var dy=player.offsetTop+player.offsetHeight/2-52-this.offsetTop; var dy=player.offsetTop+player.offsetHeight/2-52-this.offsetTop;
if(this.style.transform&&this.style.transform!='none'){ if(this.style.transform&&this.style.transform!='none'&&this.style.transform.indexOf('translate')==-1){
this.style.transform+=' translate('+dx+'px,'+dy+'px)'; this.style.transform+=' translate('+dx+'px,'+dy+'px)';
} }
else{ else{
@ -7552,7 +7596,9 @@
_status.currentPhase.classList.remove('glow_phase'); _status.currentPhase.classList.remove('glow_phase');
} }
player.classList.add('glow_phase'); player.classList.add('glow_phase');
// player.animate('playerbright',500);
} }
// player.$damage(null,'phase')
game.addVideo('phaseChange',player); game.addVideo('phaseChange',player);
_status.currentPhase=player; _status.currentPhase=player;
game.log(); game.log();
@ -8746,6 +8792,7 @@
for(var j=0;j<l2.length;j++){ for(var j=0;j<l2.length;j++){
if(l2[j].suit==l1[i][0]&&l2[j].number==l1[i][1]&&l2[j].name==l1[i][2]){ if(l2[j].suit==l1[i][0]&&l2[j].number==l1[i][1]&&l2[j].name==l1[i][2]){
l2[j].delete(); l2[j].delete();
l2.splice(j--,1);
break; break;
} }
} }
@ -9968,13 +10015,21 @@
else{ else{
ui.arena.classList.add('selecting'); ui.arena.classList.add('selecting');
_status.imchoosing=true; _status.imchoosing=true;
if(!_status.noconfirm){ if(!_status.noconfirm&&!_status.event.noconfirm){
if(!_status.mousedown||_status.mouseleft){ if(!_status.mousedown||_status.mouseleft){
var str=''; var str='';
if(ok) str+='o'; if(ok) str+='o';
if(!event.forced&&get.noSelected()) str+='c'; if(!event.forced&&get.noSelected()) str+='c';
ui.create.confirm(str); ui.create.confirm(str);
} }
if(ui.confirm&&ui.confirm.lastChild.link=='cancel'){
if(_status.event.parent.name=='phaseUse'&&!_status.event.skill){
ui.confirm.lastChild.innerHTML='结束';
}
else{
ui.confirm.lastChild.innerHTML='取消';
}
}
} }
} }
} }
@ -10887,6 +10942,7 @@
groupSort=function(name){ groupSort=function(name){
if(lib.card[name[2]].type=='basic') return 0; if(lib.card[name[2]].type=='basic') return 0;
if(lib.card[name[2]].type=='stonecard') return 0.5; if(lib.card[name[2]].type=='stonecard') return 0.5;
if(lib.card[name[2]].type=='mengjing') return 0.3;
if(lib.card[name[2]].type=='stonecharacter') return 1; if(lib.card[name[2]].type=='stonecharacter') return 1;
if(lib.card[name[2]].type=='chess') return 1.5; if(lib.card[name[2]].type=='chess') return 1.5;
if(lib.card[name[2]].type=='trick') return 2; if(lib.card[name[2]].type=='trick') return 2;
@ -11166,6 +11222,9 @@
if(lib.config.layout=='mobile'||lib.config.layout=='phone'){ if(lib.config.layout=='mobile'||lib.config.layout=='phone'){
ui.arena.classList.add('mobile'); ui.arena.classList.add('mobile');
} }
if(lib.config.layout=='default'){
ui.arena.classList.add('oldlayout');
}
if(lib.config.layout=='default'&&lib.config.hp_style=='official'){ if(lib.config.layout=='default'&&lib.config.hp_style=='official'){
ui.arena.classList.add('hpimage'); ui.arena.classList.add('hpimage');
} }
@ -12114,16 +12173,17 @@
} }
}; };
var clickContainer=function(){ var clickContainer=function(){
if(this.animating){ // if(this.animating){
return; // return;
} // }
this.animating=true; // this.animating=true;
menu.classList.add('zoomout'); // menu.classList.add('zoomout');
menu.classList.remove('zoomin'); // menu.classList.remove('zoomin');
setTimeout(function(){ // setTimeout(function(){
menuContainer.classList.add('hidden'); // menuContainer.classList.add('hidden');
menuContainer.animating=false; // menuContainer.animating=false;
},300); // },300);
menuContainer.classList.add('hidden');
game.resume2(); game.resume2();
if(game.onresume2){ if(game.onresume2){
@ -12225,13 +12285,13 @@
if(menuContainer.classList.contains('hidden')){ if(menuContainer.classList.contains('hidden')){
ui.config2.classList.add('pressdown2'); ui.config2.classList.add('pressdown2');
ui.arena.classList.add('menupaused'); ui.arena.classList.add('menupaused');
menu.classList.remove('zoomout'); // menu.classList.remove('zoomout');
menu.classList.add('zoomin'); // menu.classList.add('zoomin');
menuContainer.classList.remove('hidden'); menuContainer.classList.remove('hidden');
menuContainer.animating=true; // menuContainer.animating=true;
setTimeout(function(){ // setTimeout(function(){
menuContainer.animating=false; // menuContainer.animating=false;
},300); // },300);
for(var i=0;i<menuUpdates.length;i++){ for(var i=0;i<menuUpdates.length;i++){
menuUpdates[i](); menuUpdates[i]();
} }
@ -12696,9 +12756,14 @@
this.classList.toggle('unselectable'); this.classList.toggle('unselectable');
if(this.classList.contains('unselectable')){ if(this.classList.contains('unselectable')){
lib.config.banned.add(this.link); lib.config.banned.add(this.link);
this.node.hp._innerHTML=this.node.hp.innerHTML;
this.node.hp.innerHTML='已禁用';
this.node.hp.style.top='8px';
} }
else{ else{
lib.config.banned.remove(this.link); lib.config.banned.remove(this.link);
this.node.hp.innerHTML=this.node.hp._innerHTML;
this.node.hp.style.top='';
} }
game.saveConfig('banned',lib.config.banned); game.saveConfig('banned',lib.config.banned);
}; };
@ -12706,8 +12771,12 @@
for(var i=0;i<buttons.length;i++){ for(var i=0;i<buttons.length;i++){
buttons[i].classList.add('noclick'); buttons[i].classList.add('noclick');
buttons[i].listen(banCharacter); buttons[i].listen(banCharacter);
buttons[i].node.hp.style.transition='all 0s';
if(lib.config.banned.contains(buttons[i].link)){ if(lib.config.banned.contains(buttons[i].link)){
buttons[i].classList.add('unselectable'); buttons[i].classList.add('unselectable');
buttons[i].node.hp._innerHTML=buttons[i].node.hp.innerHTML;
buttons[i].node.hp.innerHTML='已禁用';
buttons[i].node.hp.style.top='8px';
} }
} }
page.classList.add('menu-buttons'); page.classList.add('menu-buttons');
@ -12812,9 +12881,13 @@
this.classList.toggle('unselectable'); this.classList.toggle('unselectable');
if(this.classList.contains('unselectable')){ if(this.classList.contains('unselectable')){
lib.config.bannedcards.add(this.link[2]); lib.config.bannedcards.add(this.link[2]);
this.node.info._innerHTML=this.node.info.innerHTML;
this.node.info.innerHTML='已禁用';
} }
else{ else{
lib.config.bannedcards.remove(this.link[2]); lib.config.bannedcards.remove(this.link[2]);
this.node.info.innerHTML=this.node.info._innerHTML;
this.node.info.style.top='';
} }
game.saveConfig('bannedcards',lib.config.bannedcards); game.saveConfig('bannedcards',lib.config.bannedcards);
}; };
@ -12824,6 +12897,8 @@
buttons[i].listen(banCard); buttons[i].listen(banCard);
if(lib.config.bannedcards.contains(buttons[i].link[2])){ if(lib.config.bannedcards.contains(buttons[i].link[2])){
buttons[i].classList.add('unselectable'); buttons[i].classList.add('unselectable');
buttons[i].node.info._innerHTML=buttons[i].node.info.innerHTML;
buttons[i].node.info.innerHTML='已禁用';
} }
} }
page.classList.add('menu-buttons'); page.classList.add('menu-buttons');
@ -13836,6 +13911,9 @@
if(!this._poppedfunc){ if(!this._poppedfunc){
return; return;
} }
// if(this._poppedalready){
// return;
// }
if(lib.config.touchscreen){ if(lib.config.touchscreen){
_status.touchpopping=true; _status.touchpopping=true;
setTimeout(function(){ setTimeout(function(){
@ -13848,6 +13926,7 @@
ui.currentpopped._uiintro.delete(); ui.currentpopped._uiintro.delete();
delete ui.currentpopped._uiintro; delete ui.currentpopped._uiintro;
} }
// this._poppedalready=true;
ui.currentpopped=this; ui.currentpopped=this;
uiintro.classList.add('popped'); uiintro.classList.add('popped');
uiintro.classList.add('static'); uiintro.classList.add('static');
@ -13873,6 +13952,9 @@
uiintro.addEventListener('mouseleave',ui.click.leavehoverpopped); uiintro.addEventListener('mouseleave',ui.click.leavehoverpopped);
} }
}, },
hoverpopped_leave:function(){
this._poppedalready=false;
},
leavehoverpopped:function(){ leavehoverpopped:function(){
if(_status.dragged) return; if(_status.dragged) return;
this.delete(); this.delete();
@ -16127,6 +16209,7 @@
func=function(card){ func=function(card){
if(get.type(card)=='basic') return 2; if(get.type(card)=='basic') return 2;
if(get.type(card)=='stonecard') return -0.5; if(get.type(card)=='stonecard') return -0.5;
if(get.type(card)=='mengjing') return 0.5;
if(get.type(card)=='stonecharacter') return 1; if(get.type(card)=='stonecharacter') return 1;
if(get.type(card)=='chess') return 1.5; if(get.type(card)=='chess') return 1.5;
if(get.type(card)=='trick') return -1; if(get.type(card)=='trick') return -1;
@ -16357,7 +16440,7 @@
} }
} }
// if(!simple) // if(!simple)
if(false){ if(lib.config.touchscreen){
var storage=node.storage; var storage=node.storage;
for(i in storage){ for(i in storage){
if(get.info(i)&&get.info(i).intro){ if(get.info(i)&&get.info(i).intro){
@ -16375,34 +16458,36 @@
} }
} }
} }
uiintro.add(ui.create.div('.placeholder')); if(false){
var table,tr,td; uiintro.add(ui.create.div('.placeholder'));
table=document.createElement('table'); var table,tr,td;
tr=document.createElement('tr'); table=document.createElement('table');
table.appendChild(tr); tr=document.createElement('tr');
td=document.createElement('td'); table.appendChild(tr);
td.innerHTML='攻击范围'; td=document.createElement('td');
tr.appendChild(td); td.innerHTML='攻击范围';
td=document.createElement('td'); tr.appendChild(td);
td.innerHTML='进攻距离'; td=document.createElement('td');
tr.appendChild(td); td.innerHTML='进攻距离';
td=document.createElement('td'); tr.appendChild(td);
td.innerHTML='防御距离'; td=document.createElement('td');
tr.appendChild(td); td.innerHTML='防御距离';
tr.appendChild(td);
tr=document.createElement('tr'); tr=document.createElement('tr');
table.appendChild(tr); table.appendChild(tr);
td=document.createElement('td'); td=document.createElement('td');
td.innerHTML=get.attackRange(node); td.innerHTML=get.attackRange(node);
tr.appendChild(td); tr.appendChild(td);
td=document.createElement('td'); td=document.createElement('td');
td.innerHTML=get.globalFrom(node); td.innerHTML=get.globalFrom(node);
tr.appendChild(td); tr.appendChild(td);
td=document.createElement('td'); td=document.createElement('td');
td.innerHTML=get.globalTo(node); td.innerHTML=get.globalTo(node);
tr.appendChild(td); tr.appendChild(td);
uiintro.content.appendChild(table); uiintro.content.appendChild(table);
}
} }
uiintro.add(ui.create.div('.placeholder.slim')); uiintro.add(ui.create.div('.placeholder.slim'));
@ -17189,6 +17274,13 @@
window.lib=lib; window.lib=lib;
window._status=_status; window._status=_status;
}, },
rank:function(){
var list=lib.rank.s.concat(lib.rank.ap).concat(lib.rank.a).concat(lib.rank.am).
concat(lib.rank.bp).concat(lib.rank.b).concat(lib.rank.bm).concat(lib.rank.c).concat(lib.rank.d);
for(var i in lib.character){
if(i!='zuoci'&&!list.contains(i)) console.log(i);
}
},
h:function(player){ h:function(player){
console.log(get.translation(player.get('h'))); console.log(get.translation(player.get('h')));
}, },

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
image/character/default/zhuran.jpg Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@ -132,6 +132,10 @@ body>.background{z-index:-2}
animation:cardflip 0.3s ease-out; animation:cardflip 0.3s ease-out;
-webkit-animation:cardflip 0.3s ease-out; -webkit-animation:cardflip 0.3s ease-out;
} }
.player.playerbright{
filter:brightness(1.2);
-webkit-filter:brightness(1.2);
}
.player.playerflip{ .player.playerflip{
animation:playerflip 0.3s ease-out; animation:playerflip 0.3s ease-out;
-webkit-animation:playerflip 0.3s ease-out; -webkit-animation:playerflip 0.3s ease-out;
@ -246,7 +250,7 @@ margin-bottom: 5px;
.button.character>.intro{top:71px;left:0;} .button.character>.intro{top:71px;left:0;}
.button.character>.identity{top:-6px;left:72px;} .button.character>.identity{top:-6px;left:72px;}
/*--------确认--------*/ /*--------确认--------*/
#control{text-align: center;z-index: 2;top: calc(200% / 3);left: calc(5% + 240px);width: calc(90% - 480px);pointer-events: none} #control{text-align: center;z-index: 5;top: calc(200% / 3);left: calc(5% + 240px);width: calc(90% - 480px);pointer-events: none}
#control>*{pointer-events: auto;} #control>*{pointer-events: auto;}
.control{padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;margin-left: 4px;margin-right: 4px;} .control{padding-top: 2px;padding-bottom: 2px;padding-left: 4px;padding-right: 4px;margin-left: 4px;margin-right: 4px;}
.control{font-size: 18px;white-space: nowrap;position: relative;overflow: hidden;opacity:0} .control{font-size: 18px;white-space: nowrap;position: relative;overflow: hidden;opacity:0}
@ -642,6 +646,7 @@ div:hover>.intro{opacity: 1;}
.dialog.scroll1.scroll2{box-shadow:0 -10px 10px -9px rgba(0,0,0,0.1),0 -10px 0 -9px rgba(0,0,0,0.05), .dialog.scroll1.scroll2{box-shadow:0 -10px 10px -9px rgba(0,0,0,0.1),0 -10px 0 -9px rgba(0,0,0,0.05),
0 10px 10px -9px rgba(0,0,0,0.1),0 10px 0 -9px rgba(0,0,0,0.05);}*/ 0 10px 10px -9px rgba(0,0,0,0.1),0 10px 0 -9px rgba(0,0,0,0.05);}*/
.selected,.target{/*transform: scale(1.05);*/} .selected,.target{/*transform: scale(1.05);*/}
/*.player.target{-webkit-filter:brightness(1.2)}*/
.target{transform: rotate(-3deg);} .target{transform: rotate(-3deg);}
.target2{transform: rotate(3deg);} .target2{transform: rotate(3deg);}
.content>.config.line2{ .content>.config.line2{

View File

@ -72,22 +72,37 @@
left:calc(50% - 200px); left:calc(50% - 200px);
top:calc(50% - 150px); top:calc(50% - 150px);
} }
.menu.main.slideup{ /*.menu.main.slideup{
animation:menuslideup 0.5s forwards; animation:menuslideup 0.5s forwards;
-webkit-animation:menuslideup 0.5s forwards; -webkit-animation:menuslideup 0.5s forwards;
} }
.menu.main.slidedown{ .menu.main.slidedown{
animation:menuslidedown 0.5s forwards; animation:menuslidedown 0.5s forwards;
-webkit-animation:menuslidedown 0.5s forwards; -webkit-animation:menuslidedown 0.5s forwards;
}*/
.menu-container.hidden>.menu.main{
transform:scale(0.5);
transform-origin:2px -35px;
opacity:0;
} }
.menu.main.zoomin{ .menu-container>.menu.main{
transition: all 0.3s;
transform-origin:2px -35px;
}
/*.menu.main.zoomin{
animation:menuzoomin 0.3s forwards; animation:menuzoomin 0.3s forwards;
-webkit-animation:menuzoomin 0.3s forwards; -webkit-animation:menuzoomin 0.3s forwards;
transform:scale(0.5);
transform-origin:2px -35px;
opacity:0;
} }
.menu.main.zoomout{ .menu.main.zoomout{
animation:menuzoomout 0.3s forwards; animation:menuzoomout 0.3s forwards;
-webkit-animation:menuzoomout 0.3s forwards; -webkit-animation:menuzoomout 0.3s forwards;
} transform:scale(0.5);
transform-origin:2px -35px;
opacity:0;
}*/
.menu.main{ .menu.main{
width: 400px; width: 400px;
height:300px; height:300px;
@ -223,7 +238,7 @@
} }
.popup-container.hidden{ .popup-container.hidden{
display:none; pointer-events:none;
} }
.popup-container>.menu{ .popup-container>.menu{
position:absolute; position:absolute;

View File

@ -202,6 +202,9 @@
.player.linked{ .player.linked{
transform:rotate(-90deg); transform:rotate(-90deg);
} }
.player.linked.target{
transform:rotate(-93deg);
}
.player.acted.linked .identity{ .player.acted.linked .identity{
transform:rotate(270deg); transform:rotate(270deg);
} }