This commit is contained in:
libccy 2016-08-28 08:30:25 +08:00
parent 652e1d02cc
commit 53b6d1cd4a
67 changed files with 2220 additions and 504 deletions

0
card/compensate.js Executable file → Normal file
View File

4
card/extra.js Executable file → Normal file
View File

@ -7,6 +7,7 @@ card.extra={
type:"basic", type:"basic",
enable:true, enable:true,
lianheng:true, lianheng:true,
logv:false,
savable:function(card,player,dying){ savable:function(card,player,dying){
return dying==player; return dying==player;
}, },
@ -225,7 +226,7 @@ card.extra={
target:function(player,target){ target:function(player,target){
if(target.isLinked()) return 1; if(target.isLinked()) return 1;
if(ai.get.attitude(player,target)>=0) return -1; if(ai.get.attitude(player,target)>=0) return -1;
if(player.isMin()) return -1; // if(player.isMin()) return -1;
if(ui.selected.targets.length) return -1; if(ui.selected.targets.length) return -1;
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
if(ai.get.attitude(player,game.players[i])<=-1&& if(ai.get.attitude(player,game.players[i])<=-1&&
@ -366,6 +367,7 @@ card.extra={
content:function(){ content:function(){
trigger.num++; trigger.num++;
}, },
temp:true,
group:'jiu2' group:'jiu2'
}, },
jiu2:{ jiu2:{

0
card/guozhan.js Executable file → Normal file
View File

View File

@ -348,7 +348,7 @@ card.sp={
if(!muniu.cards) return false; if(!muniu.cards) return false;
lib.skill.muniu_skill.sync(muniu); lib.skill.muniu_skill.sync(muniu);
for(var i=0;i<muniu.cards.length;i++){ for(var i=0;i<muniu.cards.length;i++){
if(event.filterCard(muniu.cards[i])) return true; if(event.filterCard(muniu.cards[i],player,event)) return true;
} }
return false; return false;
}, },
@ -358,9 +358,19 @@ card.sp={
player.chooseButton(['木牛流马',player.get('e','5').cards]).set('filterButton',function(button){ player.chooseButton(['木牛流马',player.get('e','5').cards]).set('filterButton',function(button){
var evt=_status.event.getTrigger(); var evt=_status.event.getTrigger();
if(evt&&evt.filterCard){ if(evt&&evt.filterCard){
return evt.filterCard(button.link,_status.event.player); return evt.filterCard(button.link,_status.event.player,evt);
} }
return true; return true;
}).set('ai',function(button){
var evt=_status.event.getTrigger();
if(evt&&evt.ai){
var tmp=_status.event;
_status.event=evt;
var result=evt.ai(button.link,_status.event.player,evt);
_status.event=tmp;
return result;
}
return 1;
}); });
"step 1" "step 1"
if(result.bool){ if(result.bool){
@ -396,7 +406,7 @@ card.sp={
filter:function(button,player){ filter:function(button,player){
var evt=_status.event.getParent(); var evt=_status.event.getParent();
if(evt&&evt.filterCard){ if(evt&&evt.filterCard){
return evt.filterCard(button.link,player,_status.event.getParent()); return evt.filterCard(button.link,player,evt);
} }
return true; return true;
}, },

11
card/standard.js Executable file → Normal file
View File

@ -766,10 +766,13 @@ card.standard={
} }
else{ else{
var next=event.turn.chooseToRespond({name:'sha'}); var next=event.turn.chooseToRespond({name:'sha'});
next.ai=function(card){ next.set('ai',function(card){
var event=_status.event;
var player=event.splayer;
var target=event.starget;
if(player.hasSkillTag('notricksource')) return 0; if(player.hasSkillTag('notricksource')) return 0;
if(target.hasSkillTag('notrick')) return 0; if(target.hasSkillTag('notrick')) return 0;
if(event.turn==target){ if(event.player==target){
if(player.hasSkill('naman')) return -1; if(player.hasSkill('naman')) return -1;
if(ai.get.attitude(target,player)<0){ if(ai.get.attitude(target,player)<0){
return ai.get.unuseful2(card) return ai.get.unuseful2(card)
@ -783,7 +786,9 @@ card.standard={
} }
return -1; return -1;
} }
}; });
next.set('splayer',player);
next.set('starget',target);
next.autochoose=lib.filter.autoRespondSha; next.autochoose=lib.filter.autoRespondSha;
if(event.turn==target){ if(event.turn==target){
next.source=player; next.source=player;

31
card/swd.js Executable file → Normal file
View File

@ -432,6 +432,7 @@ card.swd={
var list=get.typeCard('hslingjian'); var list=get.typeCard('hslingjian');
var cards=[]; var cards=[];
var time=0; var time=0;
target.clearEquipTrigger();
for(var i=0;i<es.length;i++){ for(var i=0;i<es.length;i++){
if(lib.inpile.contains(es[i].name)){ if(lib.inpile.contains(es[i].name)){
var card=game.createCard(list.randomGet()); var card=game.createCard(list.randomGet());
@ -439,9 +440,16 @@ card.swd={
time+=200; time+=200;
setTimeout((function(card,name){ setTimeout((function(card,name){
return function(){ return function(){
ui.discardPile.appendChild(game.createCard(card));
card.init([card.suit,card.number,name,card.nature]); card.init([card.suit,card.number,name,card.nature]);
card.style.transform='scale(1.1)'; card.style.transform='scale(1.1)';
card.classList.add('glow'); card.classList.add('glow');
var info=get.info(card);
if(info.skills){
for(var i=0;i<info.skills.length;i++){
target.addSkillTrigger(info.skills[i]);
}
}
setTimeout(function(){ setTimeout(function(){
card.style.transform=''; card.style.transform='';
card.classList.remove('glow'); card.classList.remove('glow');
@ -976,6 +984,7 @@ card.swd={
}, },
usable:1, usable:1,
selectTarget:-1, selectTarget:-1,
logv:false,
modTarget:true, modTarget:true,
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
return target==player; return target==player;
@ -1395,6 +1404,7 @@ card.swd={
}, },
_zhuquezhizhang:{ _zhuquezhizhang:{
trigger:{player:'damageEnd'}, trigger:{player:'damageEnd'},
forced:true,
filter:function(event,player){ filter:function(event,player){
return event.source&&event.source.isAlive()&&player.num('h','zhuquezhizhang')>0; return event.source&&event.source.isAlive()&&player.num('h','zhuquezhizhang')>0;
}, },
@ -2775,11 +2785,11 @@ card.swd={
mujiaren_skill:{ mujiaren_skill:{
enable:'phaseUse', enable:'phaseUse',
filter:function(event,player){ filter:function(event,player){
return player.num('h',{type:'hslingjian'})>0; return player.num('h',{type:['trick','delay']})>0;
}, },
filterCard:{type:'hslingjian'}, filterCard:{type:['trick','delay']},
check:function(card){ check:function(card){
return 10-ai.get.value(card); return 5-ai.get.value(card);
}, },
viewAs:{name:'jiguanshu'} viewAs:{name:'jiguanshu'}
}, },
@ -3002,7 +3012,7 @@ card.swd={
}, },
ai:{ ai:{
order:function(card,player){ order:function(card,player){
if(player.num('h',{type:'hslingjian'})) return 10; if(player.num('h',{type:'hslingjian'})) return 8.5;
return 1; return 1;
}, },
result:{ result:{
@ -3128,15 +3138,14 @@ card.swd={
return att<=0; return att<=0;
}, },
filter:function(event,player){ filter:function(event,player){
return !event.target.hasSkill('fengxueren2')&&!event.target.isTurnedOver(); return !event.target.isTurnedOver();
}, },
content:function(){ content:function(){
trigger.unhurt=true; trigger.unhurt=true;
trigger.target.turnOver(); trigger.target.turnOver();
trigger.target.addTempSkill('fengxueren2',{player:'phaseBegin'}); trigger.target.draw();
} }
}, },
fengxueren2:{},
chilongya:{ chilongya:{
trigger:{source:'damageBegin'}, trigger:{source:'damageBegin'},
forced:true, forced:true,
@ -3543,6 +3552,7 @@ card.swd={
return att<=0; return att<=0;
} }
if(event.target.hp==1) return att>0; if(event.target.hp==1) return att>0;
if(event.target.hujia>0) return att<0;
return false; return false;
}, },
content:function(){ content:function(){
@ -3564,6 +3574,7 @@ card.swd={
return (event.card&&(event.card.name=='sha')); return (event.card&&(event.card.name=='sha'));
}, },
forced:true, forced:true,
temp:true,
content:function(){ content:function(){
player.draw(2); player.draw(2);
player.removeSkill('tianxianjiu'); player.removeSkill('tianxianjiu');
@ -3705,8 +3716,8 @@ card.swd={
lingjiandai_info:'出牌阶段对距离1以内的一名角色使用目标获得3张随机零件', lingjiandai_info:'出牌阶段对距离1以内的一名角色使用目标获得3张随机零件',
mujiaren:'木甲人', mujiaren:'木甲人',
mujiaren_skill:'巧匠', mujiaren_skill:'巧匠',
mujiaren_skill_info:'你可以将零件牌当作机关鼠使用', mujiaren_skill_info:'你可以将锦囊牌当作机关鼠使用',
mujiaren_info:'出牌阶段对距离1以内的一名角色使用目标摸一张牌并获得技能巧匠你可以将零件牌当作机关鼠使用)', mujiaren_info:'出牌阶段对距离1以内的一名角色使用目标摸一张牌并获得技能巧匠你可以将锦囊牌当作机关鼠使用)',
hslingjian:'零件', hslingjian:'零件',
hslingjian_xuanfengzhiren:'旋风之刃', hslingjian_xuanfengzhiren:'旋风之刃',
hslingjian_xuanfengzhiren_info:'可用于煅造装备;随机弃置一名角色的一张牌', hslingjian_xuanfengzhiren_info:'可用于煅造装备;随机弃置一名角色的一张牌',
@ -3764,7 +3775,7 @@ card.swd={
baihupifeng_info:'回合结束阶段,若你的体力值是全场最小的之一,你可以回复一点体力', baihupifeng_info:'回合结束阶段,若你的体力值是全场最小的之一,你可以回复一点体力',
fengxueren:'封雪刃', fengxueren:'封雪刃',
fengxueren_bg:'雪', fengxueren_bg:'雪',
fengxueren_info:'你使用杀击中目标后,若目标武将牌正面朝上,你可以防止伤害,然后令目标翻面,若如此做,该角色在下一回合开始前不受封雪刃效果影响', fengxueren_info:'你使用杀击中目标后,若目标武将牌正面朝上,你可以防止伤害,然后令目标摸一张牌并翻面',
chilongya:'赤龙牙', chilongya:'赤龙牙',
chilongya_info:'锁定技,你的火属性伤害+1', chilongya_info:'锁定技,你的火属性伤害+1',
daihuofenglun:'带火风轮', daihuofenglun:'带火风轮',

0
card/zhenfa.js Executable file → Normal file
View File

View File

@ -1765,6 +1765,10 @@ character.boss={
if(lib.config.animation&&!lib.config.low_performance){ if(lib.config.animation&&!lib.config.low_performance){
player.$fire(); player.$fire();
} }
if(!event.parent.parent.boss_minbao_logv){
event.parent.parent.boss_minbao_logv=true;
game.logv(trigger.player,'boss_minbao',game.players.slice(0),event.parent.parent);
}
} }
}, },
boss_guihuo:{ boss_guihuo:{
@ -1818,13 +1822,17 @@ character.boss={
global:'boss_shanbeng2', global:'boss_shanbeng2',
trigger:{player:'dieBegin'}, trigger:{player:'dieBegin'},
forced:true, forced:true,
logv:false,
content:function(){ content:function(){
var targets=[];
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
if(game.players[i].num('e')){ if(game.players[i].num('e')){
player.line(game.players[i],'green'); player.line(game.players[i],'green');
targets.push(game.players[i]);
} }
} }
game.delay(); game.delay();
game.logv(player,'boss_shanbeng',targets,null,true);
} }
}, },
boss_shanbeng2:{ boss_shanbeng2:{

3
character/diy.js Executable file → Normal file
View File

@ -19,6 +19,9 @@ character.diy={
re_huangyueying:['female','shu',3,['rejizhi','qicai']], re_huangyueying:['female','shu',3,['rejizhi','qicai']],
old_zhonghui:['male','wei',3,['zzhenggong','zquanji','zbaijiang']], old_zhonghui:['male','wei',3,['zzhenggong','zquanji','zbaijiang']],
}, },
perfectPair:{
yuji:['zuoci']
},
skill:{ skill:{
zaiqix:{ zaiqix:{
trigger:{player:'phaseDrawBefore'}, trigger:{player:'phaseDrawBefore'},

0
character/extra.js Executable file → Normal file
View File

0
character/gujian.js Executable file → Normal file
View File

0
character/guozhan.js Executable file → Normal file
View File

24
character/hearth.js Executable file → Normal file
View File

@ -525,6 +525,7 @@ character.hearth={
intro:{ intro:{
content:'下一次造成的伤害+1' content:'下一次造成的伤害+1'
}, },
logv:false,
trigger:{source:'damageBegin'}, trigger:{source:'damageBegin'},
forced:true, forced:true,
content:function(){ content:function(){
@ -1759,6 +1760,8 @@ character.hearth={
}, },
check:function(event,player){ check:function(event,player){
if(event.card.name=='tiesuo') return false; if(event.card.name=='tiesuo') return false;
if(event.card.name=='jiu') return false;
if(event.card.name=='tianxianjiu') return false;
if(event.card.name=='toulianghuanzhu') return false; if(event.card.name=='toulianghuanzhu') return false;
return true; return true;
}, },
@ -2267,7 +2270,7 @@ character.hearth={
}, },
guozai:{ guozai:{
enable:'phaseUse', enable:'phaseUse',
usable:2, usable:1,
filter:function(event,player){ filter:function(event,player){
return player.num('h')<4; return player.num('h')<4;
}, },
@ -2380,6 +2383,10 @@ character.hearth={
if(lib.config.animation&&!lib.config.low_performance){ if(lib.config.animation&&!lib.config.low_performance){
player.$thunder(); player.$thunder();
} }
if(!event.parent.parent.bingshi_logv){
event.parent.parent.bingshi_logv=true;
game.logv(trigger.player,'bingshi',game.players.slice(0),event.parent.parent);
}
} }
}, },
huanwu:{ huanwu:{
@ -3222,10 +3229,13 @@ character.hearth={
}, },
xianzhi:{ xianzhi:{
trigger:{global:'judgeBegin'}, trigger:{global:'judgeBegin'},
direct:true, frequent:true,
filter:function(){ filter:function(){
return ui.cardPile.childNodes.length>1; return ui.cardPile.childNodes.length>1;
}, },
check:function(){
return false;
},
content:function(){ content:function(){
'step 0' 'step 0'
var str=''; var str='';
@ -3243,7 +3253,6 @@ character.hearth={
}; };
'step 1' 'step 1'
if(result.control=='调换顺序'){ if(result.control=='调换顺序'){
player.logSkill('xianzhi');
var card=ui.cardPile.firstChild; var card=ui.cardPile.firstChild;
ui.cardPile.removeChild(card); ui.cardPile.removeChild(card);
ui.cardPile.insertBefore(card,ui.cardPile.firstChild.nextSibling); ui.cardPile.insertBefore(card,ui.cardPile.firstChild.nextSibling);
@ -3363,6 +3372,9 @@ character.hearth={
trigger.player.storage.mengun2=trigger.cards[0]; trigger.player.storage.mengun2=trigger.cards[0];
game.addVideo('storage',player,['mengun2',get.cardInfo(trigger.cards[0]),'card']); game.addVideo('storage',player,['mengun2',get.cardInfo(trigger.cards[0]),'card']);
trigger.player.addTempSkill('mengun2','phaseEnd'); trigger.player.addTempSkill('mengun2','phaseEnd');
},
ai:{
expose:0.2
} }
}, },
mengun2:{ mengun2:{
@ -3852,7 +3864,7 @@ character.hearth={
trigger:{source:'damageBegin'}, trigger:{source:'damageBegin'},
forced:true, forced:true,
filter:function(event){ filter:function(event){
return event.card&&get.type(event.card)=='trick'&&event.parent.name!='_lianhuan'&&event.parent.name!='_lianhuan2'; return event.card&&get.type(event.card)=='trick'&&event.notLink();
}, },
content:function(){ content:function(){
trigger.num++; trigger.num++;
@ -3879,7 +3891,7 @@ character.hearth={
trigger:{source:'damageBegin'}, trigger:{source:'damageBegin'},
forced:true, forced:true,
filter:function(event){ filter:function(event){
return event.card&&event.card.name=='sha'&&event.parent.name!='_lianhuan'&&event.parent.name!='_lianhuan2'; return event.card&&event.card.name=='sha'&&event.notLink();
}, },
content:function(){ content:function(){
trigger.num++; trigger.num++;
@ -4689,7 +4701,7 @@ character.hearth={
guozai:'过载', guozai:'过载',
guozai2:'过载', guozai2:'过载',
guozai2_bg:'载', guozai2_bg:'载',
guozai_info:'出牌阶段限次,你可将手牌补至四张,并于此阶段结束时弃置等量的牌', guozai_info:'出牌阶段限次,你可将手牌补至四张,并于此阶段结束时弃置等量的牌',
guozaix:'重载', guozaix:'重载',
guozaix2:'重载', guozaix2:'重载',
guozaix2_bg:'载', guozaix2_bg:'载',

0
character/jiange.js Executable file → Normal file
View File

View File

@ -17,15 +17,243 @@ character.ow={
ow_maikelei:['male','shu',4,['shanguang','tiandan','shenqiang']], ow_maikelei:['male','shu',4,['shanguang','tiandan','shenqiang']],
ow_kuangshu:['male','shu',3,['liudan','shoujia','shihuo']], ow_kuangshu:['male','shu',3,['liudan','shoujia','shihuo']],
// ow_tuobiang:['male','shu',3,[]], ow_tuobiang:['male','shu',3,['paotai','maoding']],
// ow_baolei:['female','shu',3,[]], // ow_baolei:['female','shu',3,[]],
// ow_banzang:['male','shu',4,[]], ow_banzang:['male','qun',4,['fengshi','yinbo']],
// ow_laiyinhate:['male','shu',4,[]], ow_laiyinhate:['male','qun',4,['lzhongjia','mengji']],
// ow_luba:['male','shu',4,[]], // ow_luba:['male','shu',4,[]],
// ow_wensidun:['male','shu',4,[]], // ow_wensidun:['male','shu',4,[]],
// ow_zhaliya:['female','shu',4,[]], // ow_zhaliya:['female','shu',4,['pingzhang','lichang']],
}, },
skill:{ skill:{
mengji:{
trigger:{source:'damageBegin'},
forced:true,
filter:function(event,player){
return !player.hujia&&event.card&&event.card.name=='sha'&&event.notLink();
},
content:function(){
trigger.num++;
}
},
lzhongjia:{
init2:function(player){
if(!player.storage.zhongjia){
player.changeHujia(8);
player.storage.zhongjia=true;
}
},
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.hujia>0;
},
filterTarget:function(card,player,target){
return !target.hujia;
},
filterCard:true,
position:'he',
check:function(card){
var player=_status.event.player;
for(var i=0;i<game.players.length;i++){
if(game.players[i].hp==1&&ai.get.attitude(player,game.players[i])>2){
return 7-ai.get.value(card);
}
}
return 5-ai.get.value(card);
},
content:function(){
player.changeHujia(-1);
target.changeHujia();
},
ai:{
order:5,
expose:0.2,
return:{
target:function(player,target){
return 1/Math.max(1,target.hp);
}
}
}
},
maoding:{
trigger:{player:'damageEnd',source:'damageEnd'},
frequent:true,
content:function(){
player.gain(game.createCard(get.typeCard('hslingjian').randomGet()),'gain2');
},
group:'maoding2'
},
maoding2:{
enable:'phaseUse',
filter:function(event,player){
return player.num('h',{type:'hslingjian'})>1;
},
filterCard:{type:'hslingjian'},
filterTarget:true,
selectCard:2,
usable:1,
content:function(){
target.changeHujia();
},
ai:{
order:9,
result:{
target:function(player,target){
return 2/Math.max(1,Math.sqrt(target.hp));
},
},
}
},
paotai:{
enable:'phaseUse',
intro:{
content:function(storage){
var num;
switch(storage){
case 1:num=30;break;
case 2:num=60;break;
case 3:num=100;break;
}
return '回合结束阶段,有'+num+'%机率对一名随机敌人造成一点火焰伤害';
}
},
init:function(player){
player.storage.paotai=0;
},
filter:function(event,player){
return player.num('h','sha')>0&&player.storage.paotai<3;
},
filterCard:{name:'sha'},
content:function(){
player.storage.paotai++;
player.markSkill('paotai');
},
ai:{
order:5,
threaten:1.5,
result:{
player:1
}
},
group:['paotai2','paotai3']
},
paotai2:{
trigger:{player:'phaseEnd'},
forced:true,
filter:function(event,player){
var num=0;
switch(player.storage.paotai){
case 1:num=30;break;
case 2:num=60;break;
case 3:num=100;break;
}
return 100*Math.random()<num;
},
content:function(){
var targets=player.getEnemies();
if(targets.length){
var target=targets.randomGet();
target.addExpose(0.3);
player.addExpose(0.3);
target.damage('fire');
player.line(target,'fire');
}
}
},
paotai3:{
trigger:{player:'damageEnd'},
forced:true,
popup:false,
filter:function(event,player){
return event.card&&event.card.name=='sha'&&player.storage.paotai>0;
},
content:function(){
player.storage.paotai--;
if(player.storage.paotai==0){
player.unmarkSkill('paotai');
}
else{
player.updateMarks();
}
}
},
fengshi:{
trigger:{player:'shaBegin'},
forced:true,
check:function(event,player){
return ai.get.attitude(player,event.target)<=0;
},
filter:function(event,player){
return Math.random()<0.2*get.cardCount(true,player);
},
content:function(){
trigger.directHit=true;
},
mod:{
attackFrom:function(from,to,distance){
return distance-get.cardCount(true,from);
}
},
group:'fengshi2'
},
fengshi2:{
trigger:{source:'damageBegin'},
forced:true,
check:function(event,player){
return ai.get.attitude(player,event.target)<=0;
},
filter:function(event,player){
return event.card&&event.card.name=='sha'&&Math.random()<0.2*get.cardCount(true,player);
},
content:function(){
trigger.num++;
}
},
yinbo:{
enable:'phaseUse',
usable:1,
filterCard:{suit:'spade'},
position:'he',
filter:function(event,player){
return player.num('he',{suit:'spade'})>0;
},
check:function(){
return 7-ai.get.value(card);
},
content:function(){
'step 0'
var targets=player.getEnemies(function(target){
return target.num('he')>0;
});
if(targets.length){
event.targets=targets.randomGets(3);
event.targets.sort(lib.sort.seat);
player.line(event.targets,'green');
if(lib.config.mode=='identity'||lib.config.mode=='guozhan'){
for(var i=0;i<event.targets.length;i++){
event.targets[i].addExpose(0.3);
}
}
}
'step 1'
if(event.targets.length){
var target=event.targets.shift();
var he=target.get('he');
if(he.length){
target.discard(he.randomGet());
}
event.redo();
}
},
ai:{
order:10,
expose:0.3,
result:{
player:1
}
}
},
aqianghua:{ aqianghua:{
enable:'phaseUse', enable:'phaseUse',
usable:1, usable:1,
@ -341,8 +569,6 @@ character.ow={
target.discard(he.randomGet()); target.discard(he.randomGet());
} }
'step 2' 'step 2'
target.loseHp();
'step 3'
if(!target.isTurnedOver()){ if(!target.isTurnedOver()){
target.turnOver(); target.turnOver();
} }
@ -748,6 +974,7 @@ character.ow={
!target.previous.hasSkill('bingqiang2')&&!target.previous.hasSkill('bingqiang5'); !target.previous.hasSkill('bingqiang2')&&!target.previous.hasSkill('bingqiang5');
}, },
check:function(card){ check:function(card){
if(ui.selected.cards.length) return 0;
var player=_status.event.player; var player=_status.event.player;
var max=0,min=0; var max=0,min=0;
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
@ -1531,10 +1758,10 @@ character.ow={
intro:{ intro:{
content:'受到的伤害+1直到首次进入濒死状态' content:'受到的伤害+1直到首次进入濒死状态'
}, },
trigger:{player:'damageBegin'}, trigger:{player:'damageEnd'},
forced:true, forced:true,
content:function(){ content:function(){
trigger.num++; player.loseHp();
}, },
ai:{ ai:{
threaten:1.2 threaten:1.2
@ -2090,9 +2317,9 @@ character.ow={
guangshu_heart:{ guangshu_heart:{
mark:true, mark:true,
intro:{ intro:{
content:'进入濒死状态时回复一点体力' content:'下次受到伤害时回复一点体力'
}, },
trigger:{player:'dying'}, trigger:{player:'damageEnd'},
priority:6, priority:6,
forced:true, forced:true,
content:function(){ content:function(){
@ -2343,6 +2570,21 @@ character.ow={
} }
}, },
translate:{ translate:{
mengji:'猛击',
mengji_info:'锁定技,当你没有护甲时,你的杀造成的伤害+1',
lzhongjia:'重甲',
lzhongjia_info:'游戏开始时你获得8点护甲出牌阶段限一次你可以弃置一张牌并将一点护甲分给一名没有护甲的其他角色',
paotai:'炮台',
paotai2:'炮台',
paotai_info:'出牌阶段你可以弃置一张杀布置或升级一个炮台最高3级回合结束阶段炮台有一定机率对一名随机敌人造成一点火焰伤害每当你受到杀造成的伤害炮台降低一级',
maoding:'铆钉',
maoding2:'铆钉',
maoding_info:'每当你造成或受到一次伤害,你可以获得一个零件;出牌限阶段限一次,你可以弃置两张零件牌令一名角色获得一点护甲',
fengshi:'风矢',
fengshi2:'风矢',
fengshi_info:'锁定技,在一合内每当你使用一张牌,你的攻击范围+1你的杀增加20%的概率强制命中你的杀造成伤害后增加20%的概率令伤害+1',
yinbo:'音波',
yinbo_info:'出牌阶段限一次,你可以弃置一张黑桃牌,然后随机弃置三名敌人各一张牌',
liudan:'榴弹', liudan:'榴弹',
liudan_info:'每当你使用一张杀你可以令所有不是此杀目标的其他角色有50%概率成为此杀的额外目标', liudan_info:'每当你使用一张杀你可以令所有不是此杀目标的其他角色有50%概率成为此杀的额外目标',
shoujia:'兽夹', shoujia:'兽夹',
@ -2380,7 +2622,7 @@ character.ow={
shuangqiang:'霜枪', shuangqiang:'霜枪',
shuangqiang_info:'每当你对一名未翻面的角色造成伤害,你可以令伤害-1然后令受伤害角色翻面', shuangqiang_info:'每当你对一名未翻面的角色造成伤害,你可以令伤害-1然后令受伤害角色翻面',
baoxue:'暴雪', baoxue:'暴雪',
baoxue_info:'限定技出牌阶段你可以展示并弃置你的所有黑色牌然后令至多X名其他角色随机弃置一张牌、流失一点体力并将武将牌翻至背面X为你的弃牌数', baoxue_info:'限定技出牌阶段你可以展示并弃置你的所有黑色牌然后令至多X名其他角色随机弃置一张牌并将武将牌翻至背面X为你的弃牌数',
bingqiang:'冰墙', bingqiang:'冰墙',
bingqiang2:'冰墙', bingqiang2:'冰墙',
bingqiang2_bg:'墙', bingqiang2_bg:'墙',
@ -2418,7 +2660,7 @@ character.ow={
luan:'乱', luan:'乱',
luan2:'乱', luan2:'乱',
luan_old_info:'出牌阶段,你可以弃置一张黑桃手牌并指定一名角色,该角色自其下一回合开始每隔六回合失去一点体力,直到你死亡。同一时间只能对一人发动', luan_old_info:'出牌阶段,你可以弃置一张黑桃手牌并指定一名角色,该角色自其下一回合开始每隔六回合失去一点体力,直到你死亡。同一时间只能对一人发动',
luan_info:'出牌阶段,你可以弃置一张黑桃手牌并指定一名角色,该角色受到的伤害+1,直到你死亡或其首次进入濒死状态。同一时间只能对一人发动', luan_info:'出牌阶段,你可以弃置一张黑桃手牌并指定一名角色,该角色受到伤害后流失一点体力,直到你死亡或其首次进入濒死状态。同一时间只能对一人发动',
sheng:'圣', sheng:'圣',
sheng_info:'限定技,出牌阶段,你可以将你的武将牌翻面,然后令任意名角色回复一点体力,若如此做,你不能成为其他角色的卡牌目标直到下一回合开始', sheng_info:'限定技,出牌阶段,你可以将你的武将牌翻面,然后令任意名角色回复一点体力,若如此做,你不能成为其他角色的卡牌目标直到下一回合开始',
xiandan:'霰弹', xiandan:'霰弹',
@ -2440,7 +2682,7 @@ character.ow={
guangshu_spade:'光塔', guangshu_spade:'光塔',
guangshu_club:'光井', guangshu_club:'光井',
guangshu_diamond:'光流', guangshu_diamond:'光流',
guangshu_info:'出牌阶段,你可以弃置一张牌,并指定一名角色,根据弃置牌的花色执行如下效果:♥该角色进入濒死状态时回复一点体力;♦︎该角色下次造成伤害时摸两张牌;♣该角色无法使用杀直到下一回合结束;♠该角色于下个回合结束阶段受到一点无来源的雷电伤害', guangshu_info:'出牌阶段,你可以弃置一张牌,并指定一名角色,根据弃置牌的花色执行如下效果:♥该角色下次受到伤害时回复一点体力;♦︎该角色下次造成伤害时摸两张牌;♣该角色无法使用杀直到下一回合结束;♠该角色于下个回合结束阶段受到一点无来源的雷电伤害',
ziyu:'自愈', ziyu:'自愈',
ziyu_info:'在一名角色的回合结束阶段,你可以回复一点体力或摸一张牌,每隔四回合发动一次', ziyu_info:'在一名角色的回合结束阶段,你可以回复一点体力或摸一张牌,每隔四回合发动一次',
shouhu:'守护', shouhu:'守护',

0
character/refresh.js Executable file → Normal file
View File

4
character/sp.js Executable file → Normal file
View File

@ -83,6 +83,10 @@ character.sp={
daxiaoqiao:['zhouyu','sunce'], daxiaoqiao:['zhouyu','sunce'],
cuiyan:['caocao'], cuiyan:['caocao'],
guansuo:['guanyu'], guansuo:['guanyu'],
mateng:['machao','madai','mayunlu'],
madai:['mayunlu'],
chengpu:['zhouyu'],
hanba:['swd_muyun'],
}, },
skill:{ skill:{
weidi:{ weidi:{

6
character/standard.js Executable file → Normal file
View File

@ -650,9 +650,9 @@ character.standard={
} }
else if(event.current.group=='shu'){ else if(event.current.group=='shu'){
var next=event.current.chooseToRespond('是否替'+get.translation(player)+'对'+get.translation(target)+'使用一张杀', var next=event.current.chooseToRespond('是否替'+get.translation(player)+'对'+get.translation(target)+'使用一张杀',
function(card){ function(card,player,event){
var evt=_status.event.getParent(); event=event||_status.event;
return evt.player.canUse(card,evt.target)&&card.name=='sha'; return card.name=='sha'&&event.source.canUse(card,event.target);
}); });
next.set('ai',function(card){ next.set('ai',function(card){
var event=_status.event; var event=_status.event;

140
character/swd.js Executable file → Normal file
View File

@ -16,7 +16,7 @@ character.swd={
swd_duguningke:['female','qun',3,['lianji','touxi']], swd_duguningke:['female','qun',3,['lianji','touxi']],
swd_guyue:['male','wei',3,['tiandao','qinyin','wangchen']], swd_guyue:['male','wei',3,['tiandao','qinyin','wangchen']],
swd_tuobayuer:['female','shu',4,['liuhong','poyue','niepan']], swd_tuobayuer:['female','shu',4,['liuhong','poyue','niepan']],
swd_yuwentuo:['male','qun',4,['wushuang','xielei','kunlunjing']], swd_yuwentuo:['male','shu',4,['wushuang','xielei','kunlunjing']],
swd_yuxiaoxue:['female','wei',3,['huanhun','daixing','yinyue']], swd_yuxiaoxue:['female','wei',3,['huanhun','daixing','yinyue']],
swd_jiliang:['male','wu',3,['yunchou','gongxin','qimou']], swd_jiliang:['male','wu',3,['yunchou','gongxin','qimou']],
@ -401,6 +401,7 @@ character.swd={
guozao:{ guozao:{
trigger:{global:'damageEnd'}, trigger:{global:'damageEnd'},
forced:true, forced:true,
logv:false,
check:function(event,player){ check:function(event,player){
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
if(ai.get.attitude(player,game.players[i])>2&&game.players[i].num('h')==1){ if(ai.get.attitude(player,game.players[i])>2&&game.players[i].num('h')==1){
@ -467,7 +468,7 @@ character.swd={
"step 1" "step 1"
if(result.bool&&result.targets[0]){ if(result.bool&&result.targets[0]){
var target=result.targets[0]; var target=result.targets[0];
player.logSkill('guozao',target); player.logSkill('guozao',target,'green',true);
var cards=target.get('h'); var cards=target.get('h');
target.lose(cards)._triggered=null; target.lose(cards)._triggered=null;
game.log(target,'弃置了',cards,',并获得三张牌'); game.log(target,'弃置了',cards,',并获得三张牌');
@ -1818,7 +1819,7 @@ character.swd={
} }
var dialog=ui.create.dialog('极略:选择一张基本牌或锦囊牌牌使用',cards); var dialog=ui.create.dialog('极略:选择一张基本牌或锦囊牌牌使用',cards);
var trigger=event.parent.parent; var trigger=event.parent.parent;
player.chooseButton(dialog,function(){return 1}).filterButton=function(button){ player.chooseButton(dialog,function(card){if(card.name=='du') return 0;return 1}).filterButton=function(button){
var type=get.type(button.link,'trick'); var type=get.type(button.link,'trick');
return (type=='trick'||type=='basic')&&trigger.filterCard(button.link,player,trigger); return (type=='trick'||type=='basic')&&trigger.filterCard(button.link,player,trigger);
}; };
@ -2417,12 +2418,12 @@ character.swd={
dangping2:{}, dangping2:{},
duishi:{ duishi:{
enable:'phaseUse', enable:'phaseUse',
usable:2, usable:1,
filter:function(event,player){ filter:function(event,player){
return player.num('h')>0&&!player.hasSkill('duishi3'); return player.num('h')>0;
}, },
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
return player!=target&&target.num('h')&&!target.hasSkill('duishi2'); return player!=target&&target.num('h')>0;
}, },
filterCard:true, filterCard:true,
check:function(card){return 8-ai.get.value(card)}, check:function(card){return 8-ai.get.value(card)},
@ -2430,22 +2431,19 @@ character.swd={
"step 0" "step 0"
var suit=get.suit(cards[0]); var suit=get.suit(cards[0]);
target.chooseToDiscard({suit:suit},'h','弃置一张'+get.translation(suit)+ target.chooseToDiscard({suit:suit},'h','弃置一张'+get.translation(suit)+
'牌,或令'+get.translation(player)+'获得你的一张牌').ai=function(card){ '牌并令'+get.translation(player)+'摸一张牌,或随机弃置两张牌').ai=function(card){
if(ai.get.attitude(target,player)>0){ return 8-ai.get.value(card);
return -1;
}
return 11-ai.get.value(card);
} }
"step 1" "step 1"
if(!result.bool){ if(result.bool){
player.addTempSkill('duishi3','phaseAfter'); player.draw();
if(target.num('he')){
player.gainPlayerCard(target,'he',true,ai.get.buttonValue);
}
} }
else{ else{
target.addTempSkill('duishi2','phaseAfter'); var he=target.get('he');
if(he.length){
target.discard(he.randomGets(2));
}
} }
}, },
ai:{ ai:{
@ -3398,30 +3396,25 @@ character.swd={
ui.window.hide(); ui.window.hide();
} }
}, },
intro:{
content:function(storage,player){
if(true){
return player.storage.kunlunjing3;
}
}
}
}, },
kunlunjing1:{ kunlunjing1:{
trigger:{player:['phaseBefore']}, trigger:{player:'phaseBegin'},
priority:10,
filter:function(event,player){ filter:function(event,player){
if(player.storage.kunlunjing2) return false; if(!player.storage.kunlunjing) return false;
if(player.storage.kunlunjing) return true; return player.hp<player.storage.kunlunjing2;
return false; },
onremove:function(player){
delete player.storage.kunlunjing;
delete player.storage.kunlunjing2;
}, },
check:function(event,player){ check:function(event,player){
// if(event.name=='phase'&&player.hp<3) return false; var storage=player.storage.kunlunjing;
var storage=event.player.storage.kunlunjing;
var num=0; var num=0;
for(var i=0;i<storage.length;i++){ for(var i=0;i<storage.length;i++){
if(game.players.contains(storage[i].player)){ if(game.players.contains(storage[i].player)){
var att=ai.get.attitude(player,storage[i].player); var att=ai.get.attitude(player,storage[i].player);
var num2=storage[i].value-storage[i].player.num('he')+storage[i].player.num('j'); var num2=storage[i].value-storage[i].player.num('he')+storage[i].player.num('j');
// console.log(storage[i].player.name,storage[i].value,storage[i].player.num('he')-storage[i].player.num('j'))
if(att>0){ if(att>0){
num+=num2; num+=num2;
} }
@ -3430,15 +3423,12 @@ character.swd={
} }
} }
} }
// return num>2; return num>Math.min(2,game.players.length/2);
if(player.hp==2) return num>4;
return num>Math.min(3,game.players.length);
}, },
content:function(){ content:function(){
"step 0" "step 0"
game.delay(0.5); game.delay(0.5);
"step 1" "step 1"
event.player.storage.kunlunjing2=true;
ui.window.style.transition='all 0.5s'; ui.window.style.transition='all 0.5s';
ui.window.classList.add('zoomout3'); ui.window.classList.add('zoomout3');
ui.window.delete(); ui.window.delete();
@ -3470,19 +3460,31 @@ character.swd={
player=storage[i].player; player=storage[i].player;
for(j=0;j<storage[i].handcards1.length;j++){ for(j=0;j<storage[i].handcards1.length;j++){
if(storage[i].handcards1[j].parentNode==ui.discardPile|| if(storage[i].handcards1[j].parentNode==ui.discardPile||
storage[i].handcards1[j].parentNode==ui.cardPile) storage[i].handcards1[j].parentNode==ui.cardPile){
player.node.handcards1.appendChild(storage[i].handcards1[j]); player.node.handcards1.appendChild(storage[i].handcards1[j]);
} }
else{
player.node.handcards1.appendChild(game.createCard(storage[i].handcards1[j]));
}
}
for(j=0;j<storage[i].handcards2.length;j++){ for(j=0;j<storage[i].handcards2.length;j++){
if(storage[i].handcards2[j].parentNode==ui.discardPile|| if(storage[i].handcards2[j].parentNode==ui.discardPile||
storage[i].handcards2[j].parentNode==ui.cardPile) storage[i].handcards2[j].parentNode==ui.cardPile){
player.node.handcards2.appendChild(storage[i].handcards2[j]); player.node.handcards2.appendChild(storage[i].handcards2[j]);
} }
else{
player.node.handcards2.appendChild(game.createCard(storage[i].handcards2[j]));
}
}
for(j=0;j<storage[i].equips.length;j++){ for(j=0;j<storage[i].equips.length;j++){
if(storage[i].equips[j].parentNode==ui.discardPile|| if(storage[i].equips[j].parentNode==ui.discardPile||
storage[i].equips[j].parentNode==ui.cardPile) storage[i].equips[j].parentNode==ui.cardPile){
storage[i].equips[j].style.transform=''; storage[i].equips[j].style.transform='';
player.node.equips.appendChild(storage[i].equips[j]); player.$equip(storage[i].equips[j]);
}
else{
player.$equip(game.createCard(storage[i].equips[j]));
}
} }
for(j=0;j<storage[i].judges.length;j++){ for(j=0;j<storage[i].judges.length;j++){
if(storage[i].judges[j].parentNode==ui.discardPile|| if(storage[i].judges[j].parentNode==ui.discardPile||
@ -3519,15 +3521,8 @@ character.swd={
ui.window.style.transition=''; ui.window.style.transition='';
game.resume(); game.resume();
},500); },500);
event.player.storage.kunlunjing3='已发动';
game.pause(); game.pause();
'step 4' 'step 4'
if(trigger.name=='phase'){
var player=event.player;
if(player.num('h')){
player.chooseToDiscard('h',true);
}
}
ui.updatehl(); ui.updatehl();
} }
}, },
@ -3539,10 +3534,7 @@ character.swd={
content:function(){ content:function(){
var handcards1,handcards2,judges,equips,viewAs,i,j; var handcards1,handcards2,judges,equips,viewAs,i,j;
player.storage.kunlunjing=[]; player.storage.kunlunjing=[];
player.storage.kunlunjing2=false; player.storage.kunlunjing2=player.hp;
var table=document.createElement('table');
var tr,td,str,st;
for(i=0;i<game.players.length;i++){ for(i=0;i<game.players.length;i++){
viewAs=[]; viewAs=[];
@ -3565,35 +3557,6 @@ character.swd={
for(j=0;j<game.players[i].node.equips.childNodes.length;j++) for(j=0;j<game.players[i].node.equips.childNodes.length;j++)
equips.push(game.players[i].node.equips.childNodes[j]); equips.push(game.players[i].node.equips.childNodes[j]);
tr=document.createElement('tr');
tr.style.verticalAlign='top';
table.appendChild(tr);
td=document.createElement('td');
td.innerHTML=get.translation(game.players[i]);
tr.appendChild(td);
td=document.createElement('td');
td.innerHTML=(handcards1.length+handcards2.length);
tr.appendChild(td);
str='';
if(equips.length+judges.length){
if(equips.length){
str+=get.translation(equips);
if(judges.length){
str+='、';
}
}
if(judges.length){
str+=get.translation(judges,'viewAs');
}
}
else{
str='';
}
td=document.createElement('td');
td.innerHTML=str;
tr.appendChild(td);
player.storage.kunlunjing.push({ player.storage.kunlunjing.push({
player:game.players[i], player:game.players[i],
handcards1:handcards1, handcards1:handcards1,
@ -3604,9 +3567,6 @@ character.swd={
value:handcards1.length+handcards2.length+equips.length-judges.length value:handcards1.length+handcards2.length+equips.length-judges.length
}); });
} }
table.firstChild.firstChild.style.width='85px';
table.firstChild.childNodes[1].style.width='48px';
player.storage.kunlunjing3='未发动';
} }
}, },
oldliaoyuan:{ oldliaoyuan:{
@ -5765,13 +5725,13 @@ character.swd={
filter:function(event,player){ filter:function(event,player){
if(!event.player.isLinked()) return false; if(!event.player.isLinked()) return false;
if(event.nature=='fire') return false; if(event.nature=='fire') return false;
if(player.num('h',{color:'red'})) return true; if(player.num('he',{color:'red'})) return true;
return false; return false;
}, },
direct:true, direct:true,
content:function(){ content:function(){
"step 0" "step 0"
var next=player.chooseToDiscard('朱羽:是否弃置一张红色牌使其受到一点火焰伤害?',function(card){ var next=player.chooseToDiscard('朱羽:是否弃置一张红色牌使其受到一点火焰伤害?','he',function(card){
return get.color(card)=='red'; return get.color(card)=='red';
}); });
next.logSkill=['zhuyu',trigger.player,'fire']; next.logSkill=['zhuyu',trigger.player,'fire'];
@ -5795,13 +5755,13 @@ character.swd={
if(!event.player) return false; if(!event.player) return false;
if(event.player==player) return false; if(event.player==player) return false;
if(event.player.isLinked()&&event.player.isTurnedOver()) return false; if(event.player.isLinked()&&event.player.isTurnedOver()) return false;
if(player.num('h',{color:'black'})) return true; if(player.num('he',{color:'black'})) return true;
return false; return false;
}, },
direct:true, direct:true,
content:function(){ content:function(){
"step 0" "step 0"
var next=player.chooseToDiscard('是否弃置一张黑色牌使其横置或翻面?',function(card){ var next=player.chooseToDiscard('是否弃置一张黑色牌使其横置或翻面?','he',function(card){
return get.color(card)=='black'; return get.color(card)=='black';
}); });
next.logSkill='ningshuang'; next.logSkill='ningshuang';
@ -6963,7 +6923,7 @@ character.swd={
enable:'phaseUse', enable:'phaseUse',
usable:1, usable:1,
intro:{ intro:{
content:'' content:'濒死时回复一点体力并失去鬼眼'
}, },
mark:true, mark:true,
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
@ -7897,7 +7857,7 @@ character.swd={
guisi:'归思', guisi:'归思',
guisi_info:'每当你成为杀的目标,你可以交给对方一张手牌并取消之', guisi_info:'每当你成为杀的目标,你可以交给对方一张手牌并取消之',
duishi:'对诗', duishi:'对诗',
duishi_info:'出牌阶段,你可以弃置一张手牌,并指定一名有手牌的角色弃置一张与之花色相同的手牌,否则你获得其一张牌。若其弃置了手牌,你可对一名其他目标再发动一次', duishi_info:'出牌阶段限一次,你可以弃置一张手牌,并指定一名有手牌的角色选择一项:弃置一张与之花色相同的手牌并令你摸一张牌,或随机弃置两张牌',
anlianying:'连营', anlianying:'连营',
anlianying_info:'每当你失去最后一张手牌,可摸两张牌', anlianying_info:'每当你失去最后一张手牌,可摸两张牌',
lianwu:'连舞', lianwu:'连舞',
@ -8123,7 +8083,7 @@ character.swd={
shengshou_info:'你可以将一张黑色手牌当作草药使用', shengshou_info:'你可以将一张黑色手牌当作草药使用',
susheng_info:'在任意一名角色即将死亡时你可以弃置一张手牌防止其死亡并将其体力回复至1每回合限发动一次', susheng_info:'在任意一名角色即将死亡时你可以弃置一张手牌防止其死亡并将其体力回复至1每回合限发动一次',
zhanlu_info:'出牌阶段,你可以弃置一张黑桃牌令至多3名角色各回复一点体力', zhanlu_info:'出牌阶段,你可以弃置一张黑桃牌令至多3名角色各回复一点体力',
kunlunjing_info:'回合开始前,你可以令场上所有牌还原到你上一回合结束时的位置,然后弃置一张手牌', kunlunjing_info:'回合开始阶段,若你的体力值小于上回合结束时的体力值,你可以将场上所有牌还原到你上一回合结束时的位置',
swd_xiuluo_info:'回合开始阶段,你可以弃一张手牌来弃置你判断区里的一张延时类锦囊(必须花色相同)', swd_xiuluo_info:'回合开始阶段,你可以弃一张手牌来弃置你判断区里的一张延时类锦囊(必须花色相同)',
xianyin_info:'出牌阶段,你可以令所有判定区内有牌的角色弃置判定区内的牌,然后交给你一张手牌', xianyin_info:'出牌阶段,你可以令所有判定区内有牌的角色弃置判定区内的牌,然后交给你一张手牌',
qiaoxie_info:'每当你装备一张牌,可摸一张牌;每当你失去一张装备牌(不含替换),你可以弃置其他角色的一张牌', qiaoxie_info:'每当你装备一张牌,可摸一张牌;每当你失去一张装备牌(不含替换),你可以弃置其他角色的一张牌',
@ -8175,7 +8135,7 @@ character.swd={
funiao_info:'出牌阶段,你可以交给一名角色一张手牌,然后观看其手牌,每个阶段对一名角色只能发动一次', funiao_info:'出牌阶段,你可以交给一名角色一张手牌,然后观看其手牌,每个阶段对一名角色只能发动一次',
xuehuang_info:'出牌阶段限一次,你可以弃置一张红色手牌令距离你一以内的所有角色受到一点火焰伤害', xuehuang_info:'出牌阶段限一次,你可以弃置一张红色手牌令距离你一以内的所有角色受到一点火焰伤害',
zhuyu_info:'每当有横置的角色即将受到非火焰伤害,你可以弃置一张红色牌使其额外受到一点火焰伤害', zhuyu_info:'每当有横置的角色即将受到非火焰伤害,你可以弃置一张红色牌使其额外受到一点火焰伤害',
ningshuang_info:'每当你成为黑色牌的目标,你可以弃置一张黑色牌将其横置,并摸一张牌,若其已经模置则将其翻面', ningshuang_info:'每当你成为黑色牌的目标,你可以弃置一张黑色牌将其横置,并摸一张牌,若其已经模置则改为将其翻面',
zaowu_old_info:'出牌阶段,你可以弃置三张不同类型的牌,创造任意两张牌并获得之', zaowu_old_info:'出牌阶段,你可以弃置三张不同类型的牌,创造任意两张牌并获得之',
xielv_info:'弃牌阶段结束后若你的所有手牌至少两张颜色均相同你可以展示所有手牌然后选择一项1、回复一点体力2、弃置场上所有与你手牌颜色不同的牌', xielv_info:'弃牌阶段结束后若你的所有手牌至少两张颜色均相同你可以展示所有手牌然后选择一项1、回复一点体力2、弃置场上所有与你手牌颜色不同的牌',
}, },

0
character/xiake.js Executable file → Normal file
View File

16
character/xianjian.js Executable file → Normal file
View File

@ -12,7 +12,7 @@ character.xianjian={
pal_jingtian:['male','wu',3,['sajin','jubao']], pal_jingtian:['male','wu',3,['sajin','jubao']],
pal_xuejian:['female','shu',3,['shuangren','shenmu','duci']], pal_xuejian:['female','shu',3,['shuangren','shenmu','duci']],
pal_longkui:['female','wei',3,['fenxing','diewu','lingyu']], pal_longkui:['female','qun',3,['fenxing','diewu','lingyu']],
pal_zixuan:['female','wei',3,['shuiyun','wangyou','changnian']], pal_zixuan:['female','wei',3,['shuiyun','wangyou','changnian']],
pal_changqing:['male','wei',4,['luanjian','tianfu']], pal_changqing:['male','wei',4,['luanjian','tianfu']],
@ -384,23 +384,23 @@ character.xianjian={
unique:true, unique:true,
forceunique:true, forceunique:true,
filter:function(){ filter:function(){
return Math.random()<5; return Math.random()<0.5;
}, },
content:function(){ content:function(){
var node; var node;
if(player.name=='pal_longkui'){ if(player.name2=='pal_longkui'){
node=player.node.avatar;
}
else if(player.name2=='pal_longkui'){
node=player.node.avatar2; node=player.node.avatar2;
} }
else if(player.name=='pal_longkui'){
node=player.node.avatar;
}
if(player.storage.fenxing){ if(player.storage.fenxing){
player.storage.fenxing=false; player.storage.fenxing=false;
player.removeSkill('guijiang'); player.removeSkill('guijiang');
player.removeSkill('diesha'); player.removeSkill('diesha');
player.addSkill('diewu'); player.addSkill('diewu');
player.addSkill('lingyu'); player.addSkill('lingyu');
node.setBackground('pal_longkui','character'); if(node) node.setBackground('pal_longkui','character');
} }
else{ else{
player.storage.fenxing=true; player.storage.fenxing=true;
@ -408,7 +408,7 @@ character.xianjian={
player.removeSkill('lingyu'); player.removeSkill('lingyu');
player.addSkill('guijiang'); player.addSkill('guijiang');
player.addSkill('diesha'); player.addSkill('diesha');
node.setBackground('pal_longkuigui','character'); if(node) node.setBackground('pal_longkuigui','character');
} }
}, },
}, },

3
character/yijiang.js Executable file → Normal file
View File

@ -92,6 +92,9 @@ character.yijiang={
xiahoushi:['zhangfei'], xiahoushi:['zhangfei'],
zhoucang:['guanyu'], zhoucang:['guanyu'],
guanping:['guanyu'], guanping:['guanyu'],
sundeng:['sunquan'],
liru:['dongzhuo'],
liuchen:['liushan'],
}, },
skill:{ skill:{
taoluan:{ taoluan:{

0
character/yxs.js Executable file → Normal file
View File

0
character/zhuogui.js Executable file → Normal file
View File

0
extension/character/extension.js Executable file → Normal file
View File

0
extension/soldier/extension.js Executable file → Normal file
View File

0
extension/wuxing/extension.js Executable file → Normal file
View File

0
game/config.js Executable file → Normal file
View File

709
game/game.js Executable file → Normal file

File diff suppressed because it is too large Load Diff

0
game/jszip.js Executable file → Normal file
View File

0
game/package.js Executable file → Normal file
View File

View File

@ -46,6 +46,7 @@ window.noname_source_list=[
'layout/mode/boss.css', 'layout/mode/boss.css',
'layout/mode/chess.css', 'layout/mode/chess.css',
'layout/mode/stone.css', 'layout/mode/stone.css',
'layout/mode/tafang.css',
'layout/newlayout/equip.css', 'layout/newlayout/equip.css',
'layout/newlayout/global.css', 'layout/newlayout/global.css',
'layout/newlayout/layout.css', 'layout/newlayout/layout.css',

View File

@ -1,7 +1,10 @@
window.noname_update={ window.noname_update={
version:'1.8.21', version:'1.9.0',
changeLog:[ changeLog:[
'bug增加' '增加乱斗模式',
'显示时间选项',
'历史记录栏',
'更新源调整',
], ],
files:{ files:{
global:[ global:[

285
layout/default/layout.css Executable file → Normal file
View File

@ -50,14 +50,18 @@ table{table-layout: fixed;}
#window.noclick_important .noclick_click_important div{pointer-events: auto !important} #window.noclick_important .noclick_click_important div{pointer-events: auto !important}
#window.blur_ui #arena.paused, #window.blur_ui #arena.paused,
#window.blur_ui #arena.menupaused,
#window.blur_ui #historybar.paused,
#window.blur_ui #historybar.menupaused,
#window.blur_ui #arena.unfocus, #window.blur_ui #arena.unfocus,
#window.blur_ui #arena.right, #window.blur_ui #arena.right,
#window.blur_ui #arena.menupaused, #window.blur_ui.shortcutpaused>#arena,
#window.blur_ui.shortcutpaused>#arena{ #window.blur_ui.shortcutpaused>#historybar{
filter:blur(3px); filter:blur(3px);
-webkit-filter:blur(3px); -webkit-filter:blur(3px);
} }
#window.blur_ui #arena.menupaused{ #window.blur_ui #arena.menupaused,
#window.blur_ui #historybar.menupaused{
opacity: 0.6; opacity: 0.6;
} }
#window.blur_ui #arena.thrownhighlight>.card.thrown:not(.thrownhighlight){ #window.blur_ui #arena.thrownhighlight>.card.thrown:not(.thrownhighlight){
@ -65,6 +69,18 @@ table{table-layout: fixed;}
-webkit-filter:blur(2px); -webkit-filter:blur(2px);
} }
#time{
width: 100%;
padding: 0;
margin: 0;
position: absolute;
left: 0;
top: 16px;
text-align: center;
pointer-events: none;
display: block;
}
#shortcut{ #shortcut{
width:100%; width:100%;
height:100%; height:100%;
@ -283,8 +299,10 @@ table{table-layout: fixed;}
#arena{width:90%;height: 90%;top: calc(5% + 10px);left: 5%;} #arena{width:90%;height: 90%;top: calc(5% + 10px);left: 5%;}
#arena.right:not(.noleft){left:240px;opacity: 0.6;} #arena.right:not(.noleft){left:240px;opacity: 0.6;}
#arena.left:not(.noleft){left:calc(10% - 240px);opacity: 0.6;} #arena.left:not(.noleft){left:calc(10% - 240px);opacity: 0.6;}
#window.leftbar #arena:not(.chess){left:calc(5% + 50px);width: calc(90% - 50px)}
#window.rightbar #arena:not(.chess){width: calc(90% - 50px)}
#arena.top{top:-100%;} #arena.top{top:-100%;}
#arena.paused,#arena.unfocus{opacity: 0.3 !important;} #arena.paused,#arena.unfocus,#historybar.paused{opacity: 0.3 !important;}
#arena.paused2{opacity: 0.1 !important;} #arena.paused2{opacity: 0.1 !important;}
#arena>.poplayer, #arena>.poplayer,
#window>.poplayer{ #window>.poplayer{
@ -310,6 +328,98 @@ table{table-layout: fixed;}
#arena.playerfocus #chess>div:not(.playerfocus):not(.removing){ #arena.playerfocus #chess>div:not(.playerfocus):not(.removing){
opacity: 0.3 !important; opacity: 0.3 !important;
} }
#historybar{
left: 2.5%;
width: 50px;
height: calc(90% - 20px);
top: calc(5% + 25px);
border-radius: 4px;
visibility: hidden;
opacity: 0;
overflow: scroll;
z-index: 2;
transition-property: opacity,visibility;
}
#historybar.hidden{
pointer-events: none;
}
#historybar>div{
width: 42px;
height: 42px;
margin: 0;
padding: 4px;
display: block;
position: relative;
}
#historybar>div:not(.nozoom){
animation: history_start 0.5s;
-webkit-animation: history_start 0.5s;
}
#historybar>div>.card{
transform: scale(0.403846);
transform-origin: top left;
margin: 0;
left: 4px;
top: 4px;
position: absolute;
}
#historybar>div>.avatar{
padding: 0;
margin: 0;
position: absolute;
left: 4px;
top: 4px;
width: 42px;
height: 42px;
border-radius: 3.230768px;
}
#historybar>div>.avatar>div{
position: absolute;
margin: 0;
padding: 0;
left: 0;
bottom: 2px;
height: auto;
font-family: 'xinwei';
font-size: 18px;
text-align: center;
width: 100%;
}
#historybar>div>.avatar>.avatarbg{
bottom: 0;
height: 100%;
background-size: cover;
}
#historybar>div>.avatar2{
width: 20px;
height: 20px;
left: 28px;
top: 28px;
border-radius: 100%;
font-family: 'xinwei';
font-size: 20px;
line-height: 20px;
z-index: 1;
}
#window.rightbar #historybar,
#window.rightbar2:not(.leftbar) #historybar{
left: calc(97.5% - 50px);
}
#window.leftbar #historybar,
#window.rightbar #historybar{
opacity: 1;
visibility: visible;
}
.dialog .button.character.cardbg>.avatar_name{
font-family: 'xinwei';
font-size: 20px;
width: 100%;
height: 20px;
line-height: 20px;
top:44px;
left:0;
text-align: center;
}
.player:not(.treasure).playerfocus{ .player:not(.treasure).playerfocus{
transform: scale(1.1); transform: scale(1.1);
} }
@ -342,6 +452,7 @@ table{table-layout: fixed;}
border-radius:100%;*/ border-radius:100%;*/
z-index: 7; z-index: 7;
transition-property: opacity; transition-property: opacity;
overflow: hidden;
} }
#roundmenu>div{ #roundmenu>div{
width: 26px; width: 26px;
@ -352,25 +463,153 @@ table{table-layout: fixed;}
border-radius: 2px; border-radius: 2px;
box-shadow: black 0 0 2px; box-shadow: black 0 0 2px;
} }
#roundmenu>div:nth-of-type(even){ #roundmenu.clock>div:nth-of-type(1){
width: 2px;
height: 2px;
left: 24px;
top: 2px;
opacity: 1;
}
#roundmenu.clock>div:nth-of-type(2){
width: 2px;
height: 2px;
left: 24px;
top: 46px;
opacity: 1;
}
#roundmenu.clock>div:nth-of-type(3){
width: 2px;
height: 2px;
top: 24px;
left: 2px;
opacity: 1;
}
#roundmenu.clock>div:nth-of-type(4){
width: 2px;
height: 2px;
top: 24px;
left: 46px;
opacity: 1;
}
#roundmenu.clock>div:nth-of-type(5){
width: 2px;
height: 2px;
left: 24px;
top: 2px;
opacity: 0.4;
transform: rotate(30deg);
transform-origin: 1px 23px;
}
#roundmenu.clock>div:nth-of-type(9){
width: 2px;
height: 2px;
left: 24px;
top: 2px;
opacity: 0.4;
transform: rotate(60deg);
transform-origin: 1px 23px;
}
#roundmenu.clock>div:nth-of-type(6){
width: 2px;
height: 2px;
left: 24px;
top: 46px;
opacity: 0.4;
transform: rotate(30deg);
transform-origin: 1px -23px;
}
#roundmenu.clock>div:nth-of-type(10){
width: 2px;
height: 2px;
left: 24px;
top: 46px;
opacity: 0.4;
transform: rotate(60deg);
transform-origin: 1px -23px;
}
#roundmenu.clock>div:nth-of-type(7){
width: 2px;
height: 2px;
top: 24px;
left: 2px;
opacity: 0.4;
transform: rotate(30deg);
transform-origin: 23px 1px;
}
#roundmenu.clock>div:nth-of-type(11){
width: 2px;
height: 2px;
top: 24px;
left: 2px;
opacity: 0.4;
transform: rotate(60deg);
transform-origin: 23px 1px;
}
#roundmenu.clock>div:nth-of-type(8){
width: 2px;
height: 2px;
top: 24px;
left: 46px;
opacity: 0.4;
transform: rotate(30deg);
transform-origin: -23px 1px;
}
#roundmenu.clock>div:nth-of-type(12){
width: 2px;
height: 2px;
top: 24px;
left: 46px;
opacity: 0.4;
transform: rotate(60deg);
transform-origin: -23px 1px;
}
#roundmenu.clock>div:nth-of-type(13){
width: 22px;
height: 2px;
top: 24px;
left: 24px;
transform-origin: 1px 1px;
border-radius: 4px 40px 40px 4px/4px 4px 4px 4px;
}
#roundmenu.clock>div:nth-of-type(14){
width: 16px;
height: 4px;
top: 23px;
left: 23px;
transform-origin: 2px 2px;
border-radius: 4px 23px 23px 4px/4px 4px 4px 4px;
}
#roundmenu:not(.clock)>div:nth-of-type(even){
width: 20px; width: 20px;
left:18px; left:18px;
} }
#roundmenu>div:nth-of-type(odd){ #roundmenu:not(.clock)>div:nth-of-type(odd){
width: 4px; width: 4px;
} }
#roundmenu>div:nth-of-type(1), #roundmenu:not(.clock)>div:nth-of-type(1),
#roundmenu>div:nth-of-type(2){ #roundmenu:not(.clock)>div:nth-of-type(2){
top:14px; top:14px;
} }
#roundmenu>div:nth-of-type(3), #roundmenu:not(.clock)>div:nth-of-type(3),
#roundmenu>div:nth-of-type(4){ #roundmenu:not(.clock)>div:nth-of-type(4){
top:23px; top:23px;
} }
#roundmenu>div:nth-of-type(5), #roundmenu:not(.clock)>div:nth-of-type(5),
#roundmenu>div:nth-of-type(6){ #roundmenu:not(.clock)>div:nth-of-type(6){
top:32px; top:32px;
transform: none !important;
}
#roundmenu:not(.clock)>div:nth-of-type(7),
#roundmenu:not(.clock)>div:nth-of-type(8),
#roundmenu:not(.clock)>div:nth-of-type(9),
#roundmenu:not(.clock)>div:nth-of-type(10),
#roundmenu:not(.clock)>div:nth-of-type(11),
#roundmenu:not(.clock)>div:nth-of-type(12),
#roundmenu:not(.clock)>div:nth-of-type(13),
#roundmenu:not(.clock)>div:nth-of-type(14){
opacity: 0;
} }
.linexy{ .linexy{
@ -732,6 +971,7 @@ margin-bottom: 5px;
.caption>.text.textlink:hover{text-decoration: underline;} .caption>.text.textlink:hover{text-decoration: underline;}
.caption>div>div{font-size: 16px;position: relative;width: calc(100% - 70px);vertical-align: top;margin: 0;padding: 0;} .caption>div>div{font-size: 16px;position: relative;width: calc(100% - 70px);vertical-align: top;margin: 0;padding: 0;}
.skill{left: 0 !important;width: 70px !important;} .skill{left: 0 !important;width: 70px !important;}
.skill>.card{transform: scale(0.56);transform-origin: top left;margin-left: 2px;margin-top: 6px;margin-bottom: -52px}
.caption>.ctext{text-align:center;font-size:16px;} .caption>.ctext{text-align:center;font-size:16px;}
.button.character,.button.card{width: 90px;height: 90px;position: relative;margin: 6px;} .button.character,.button.card{width: 90px;height: 90px;position: relative;margin: 6px;}
.button.card{font-size: 14px;} .button.card{font-size: 14px;}
@ -792,7 +1032,7 @@ margin-bottom: 5px;
-webkit-animation:replaceenemy 0.5s -webkit-animation:replaceenemy 0.5s
} }
.player>div{z-index: 2;} .player>div{z-index: 2;}
.player.dead,.player.likedead{z-index: 1; .player.dead,.player.likedead,.grayscale1{z-index: 1;
filter:grayscale(1); filter:grayscale(1);
-webkit-filter:grayscale(1); -webkit-filter:grayscale(1);
} }
@ -1553,6 +1793,10 @@ span[data-color="unknownm"]{
text-align:center; text-align:center;
line-height: 18px; line-height: 18px;
} }
.cardbg,.button.character.cardbg{
color:rgb(74, 29, 1);
text-shadow: none;
}
.card.fullskin>.name.long{ .card.fullskin>.name.long{
top:5px; top:5px;
} }
@ -1729,6 +1973,9 @@ span[data-color="unknownm"]{
.browntext{ .browntext{
color: rgb(195,161,223); color: rgb(195,161,223);
} }
.legendtext{
color: rgb(233, 131, 255);
}
#window>canvas.fun{ #window>canvas.fun{
position: absolute; position: absolute;
left: 0; left: 0;
@ -1969,6 +2216,8 @@ div:hover>.wunature{
@-webkit-keyframes drawing2{0% {opacity: 0}50%{opacity: 1}100%{opacity: 0}} @-webkit-keyframes drawing2{0% {opacity: 0}50%{opacity: 1}100%{opacity: 0}}
@keyframes card_start{from {opacity: 0;transform:scale(0);}} @keyframes card_start{from {opacity: 0;transform:scale(0);}}
@-webkit-keyframes card_start{from {opacity: 0;transform:scale(0);}} @-webkit-keyframes card_start{from {opacity: 0;transform:scale(0);}}
@keyframes history_start{from {opacity: 0;margin-bottom: -50px}}
@-webkit-keyframes history_start{from {opacity: 0;margin-bottom: -50px}}
@keyframes card_start2{from {opacity: 0;transform:scale(0);margin-left: -52px;margin-right: -52px;}} @keyframes card_start2{from {opacity: 0;transform:scale(0);margin-left: -52px;margin-right: -52px;}}
@-webkit-keyframes card_start2{from {opacity: 0;transform:scale(0);margin-left: -52px;margin-right: -52px;}} @-webkit-keyframes card_start2{from {opacity: 0;transform:scale(0);margin-left: -52px;margin-right: -52px;}}
@keyframes card_judgestart{from {opacity: 0;transform:scale(0) rotateY(-180deg) perspective(600px);}} @keyframes card_judgestart{from {opacity: 0;transform:scale(0) rotateY(-180deg) perspective(600px);}}
@ -1993,13 +2242,3 @@ div:hover>.wunature{
@-webkit-keyframes flip{from{transform:perspective(1000px) rotateY(0);}to{transform:perspective(1000px) rotateY(360deg);}} @-webkit-keyframes flip{from{transform:perspective(1000px) rotateY(0);}to{transform:perspective(1000px) rotateY(360deg);}}
/*--------其它--------*/ /*--------其它--------*/
::-webkit-scrollbar{display: none;} ::-webkit-scrollbar{display: none;}
@media screen and (min-height: 800px) and (orientation:landscape) {
#arena{height: 720px;top: calc(50% - 350px);}
}
@media screen and (min-width: 1280px) {
#arena{width: 1152px;left: calc(50% - 576px);}
}
@media screen and (min-width: 1600px) {
#arena.right:not(.noleft){left: calc(50% - 576px);}
#arena.left:not(.noleft){left: calc(50% - 576px);}
}

View File

@ -7,6 +7,21 @@
height: calc(95% + 20px); height: calc(95% + 20px);
left: 3%; left: 3%;
} }
#window.leftbar #arena:not(.chess){
left: calc(3% + 50px);
width: calc(94% - 50px);
}
#window.rightbar #arena:not(.chess){
width: calc(94% - 50px);
}
#historybar{
left: 1.5%;
height: calc(95% - 160px);
}
#window.rightbar #historybar,
#window.rightbar2:not(.leftbar) #historybar{
left: calc(98.5% - 50px);
}
#control{ #control{
width: calc(5000% / 47 - 240px); width: calc(5000% / 47 - 240px);
left:calc(-150% / 47 + 120px); left:calc(-150% / 47 + 120px);
@ -29,6 +44,20 @@
border-radius:0 !important; border-radius:0 !important;
height:120px; height:120px;
} }
#window.leftbar #arena:not(.chess)>#me,
#window.leftbar #arena:not(.chess)>#mebg,
#window.leftbar #arena:not(.chess)>#autonode,
#window.leftbar #arena:not(.chess) .player[data-position='0']{
width: calc(5000% / 47 + 2500px / 47);
left:calc(-150% / 47 - 50px - 75px / 47);
}
#window.rightbar #arena:not(.chess)>#me,
#window.rightbar #arena:not(.chess)>#mebg,
#window.rightbar #arena:not(.chess)>#autonode,
#window.rightbar #arena:not(.chess) .player[data-position='0']{
width: calc(5000% / 47 + 2500px / 47);
left:calc(-150% / 47 - 75px / 47);
}
#arena:not(.chess) #handcards1{ #arena:not(.chess) #handcards1{
height:120px; height:120px;
padding:0; padding:0;
@ -226,16 +255,3 @@
left:0; left:0;
background-size:cover; background-size:cover;
} }
@media screen and (min-height: 800px) and (orientation:landscape) {
/*#arena{height: 780px;top: calc(50% - 350px);}
#arena:not(.chess)>#me,
#arena:not(.chess)>#mebg{
bottom:30px;
}
#arena:not(.chess) .player[data-position='0']{
top: calc(100% - 150px);
}*/
#arena{height: calc(95% + 20px);top: calc(5% + 10px);}
}

0
layout/mode/boss.css Executable file → Normal file
View File

0
layout/mode/chess.css Executable file → Normal file
View File

0
layout/mode/stone.css Executable file → Normal file
View File

229
layout/mode/tafang.css Normal file
View File

@ -0,0 +1,229 @@
.storyscene{
height: 500px;
top:calc(50% - 250px);
width: 100%;
position: absolute;
left: 0;
overflow-x: scroll;
overflow-y: hidden;
text-align: center;
white-space: nowrap;
}
.storyscene.removing{
pointer-events: none;
transform: translateY(500px);
}
.storyscene.lockscroll{
overflow-x: hidden;
}
.storyscene>.scene{
width: 350px;
height: 420px;
position: relative;
left: 0;
top:40px;
margin-left: -40px;
margin-right: -40px;
z-index: 1;
border-radius: 16px !important;
overflow: hidden;
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px;
}
.storyscene>.scene>.background.player{
border-radius: 0 !important;
box-shadow: none !important;
width: 100%;
height: 100%;
left: 0;
top: 0;
z-index: 1;
}
.storyscene>.scene.unselectable{
opacity: 1 !important;
box-shadow: rgba(0, 0, 0, 0.1) 0 0 0 1px, rgba(0, 0, 0, 0.225) 0 3px 10px;
}
.storyscene>.scene.unselectable>.background{
opacity: 0.3;
}
.storyscene>.scene.unselectable>.name{
opacity: 0.6;
}
.storyscene>.scene.unselectable>div:not(.mask).background{
/*opacity: 0.25;*/
}
.storyscene>.scene>.mask{
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
z-index: 3;
}
.storyscene>.scene>.mask>div{
width: 100%;
height: 240px;
top:calc(50% - 120px);
position: absolute;
left: 0;
text-align: center;
font-size: 80px;
line-height: 80px;
font-family: 'xinwei';
opacity: 0.8;
}
.storyscene>.scene:not(.unselectable)>.mask{
display: none;
}.storyscene>.scene.unselectable>.name{
/*display: none;*/
}
.storyscene>.scene.flipped{
z-index: 2;
border-radius: 12px !important;
}
.storyscene>.scene.flipped>div:not(.menu){
display: none !important;
}
.storyscene>.scene:not(.flipped)>.menu{
display: none;
}
.storyscene>.scene:first-child{
margin-left: 50px;
}
.storyscene>.scene:last-child{
margin-right: 50px;
}
.storyscene>.scene>.name{
font-size: 48px;
left: 25px;
/*top: auto;*/
top: 28px;
/*transform: rotateY(-180deg);*/
border-radius: 16px !important;
z-index: 2;
font-family: 'xinwei'
}
.storyscene>.scene>.menu{
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
box-shadow: none;
overflow: scroll;
}
.storyscene>.scene>.background>.avatar{
width: calc(100% - 26px);
height: calc(100% - 26px);
left: 13px;
top: 13px;
z-index: 2;
}
.storyscene>.scene>.menu{
transform: rotateY(-180deg);
}
.storyscene>.scene.startscene{
-webkit-animation: scene_start 0.5s;
}
.scene>.menu>.menubutton.enter{
position: absolute;
top:auto;
bottom: 10px;
width: 70px;
left: calc(50% - 35px);
}
.scene>.menu>.conversation{
display: table;
position: absolute;
left: 16px;
top: 0;
width: calc(100% - 32px);
height: 100%;
font-size: 24px;
font-family: 'xinwei';
white-space: normal;
text-align: left;
}
.scene>.menu>.conversation.center{
text-align: center;
font-size: 30px;
}
.scene>.menu>.avatarconversation{
position: relative;
display: block;
width: 100%;
height: 100px;
left: 0;
margin-top: 10px;
}
.scene>.menu>.avatarconversation:last-child{
margin-bottom: 10px;
}
.scene>.menu>.avatarconversation>div{
height: 100%;
top:0;
}
.scene>.menu>.avatarconversation>.avatar{
width: 100px;
height: 100px;
left: 10px;
background-size: cover;
}
.scene>.menu>.avatarconversation.swap>.avatar{
left: auto;
right: 10px;
}
.scene>.menu>.avatarconversation>div:not(.avatar){
width: calc(100% - 120px);
left: 120px;
top: 5px;
height: calc(100% - 5px);
text-align: left;
white-space: normal;
line-height: 18px;
}
.scene>.menu>.avatarconversation.swap>div:not(.avatar){
left: auto;
right: 120px;
text-align: right;
}
.scene>.menu>.conversation>div{
display: table-cell;
vertical-align: middle;
position: relative;
}
#create-player{
width: 400px;
height: 300px;
left: calc(50% - 200px);
top: calc(50% - 150px);
position: absolute;
-webkit-animation:dialog_start2 0.5s;
}
#create-player>div{
position: absolute;
}
#create-player>.caption{
width: 100%;
height: 24px;
line-height: 24px;
left: 0;
top: 0;
font-family: 'xinwei';
font-size: 24px;
text-align: center;
}
@-webkit-keyframes scene_start{
from{
opacity: 0;
transform:scale(0.5);
margin-left: -175px;
margin-right: -175px;
}
to{
opacity: 1;
transform: scale(1);
margin-left: 16px;
margin-right: 16px;
}
}

View File

@ -6,6 +6,9 @@
width:130px; width:130px;
height:160px; height:160px;
} }
#historybar{
height: calc(90% - 25px);
}
#window>.player:not(.minskin)>.avatar,#arena.slim_player .player:not(.minskin):not(.fakeme) .avatar{ #window>.player:not(.minskin)>.avatar,#arena.slim_player .player:not(.minskin):not(.fakeme) .avatar{
width: 136px; width: 136px;
height: 166px; height: 166px;

0
layout/newlayout/layout.css Executable file → Normal file
View File

View File

@ -1,8 +1,6 @@
@import "../mobile/layout.css"; @import "../mobile/layout.css";
#arena{ #arena{
width: 94%;
height: calc(97% + 30px); height: calc(97% + 30px);
left: 3%;
top:3% top:3%
} }
#arena.mobile>#control{ #arena.mobile>#control{
@ -17,6 +15,13 @@
font-size: 30px; font-size: 30px;
line-height: 34px; line-height: 34px;
} }
#historybar{
top:14px;
height: calc(100% - 150px);
}
#time{
visibility: hidden;
}
#system{ #system{
z-index: 31 !important; z-index: 31 !important;
} }

0
mode/boss.js Executable file → Normal file
View File

View File

@ -69,6 +69,7 @@ mode.brawl={
showcase.style.width='100%'; showcase.style.width='100%';
showcase.style.display='block' showcase.style.display='block'
showcase.action=info.showcase; showcase.action=info.showcase;
showcase.link=name;
if(info.fullshow){ if(info.fullshow){
node.nodes=[showcase]; node.nodes=[showcase];
showcase.style.height='100%'; showcase.style.height='100%';
@ -130,7 +131,7 @@ mode.brawl={
start.style.fontSize='72px'; start.style.fontSize='72px';
start.style.zIndex=3; start.style.zIndex=3;
start.style.transition='all 0s'; start.style.transition='all 0s';
game.addScene=function(name){ game.addScene=function(name,clear){
var scene=lib.storage.scene[name]; var scene=lib.storage.scene[name];
var brawl={ var brawl={
name:name, name:name,
@ -142,7 +143,9 @@ mode.brawl={
} }
brawl.content.scene=scene; brawl.content.scene=scene;
lib.brawl['scene_'+name]=brawl; lib.brawl['scene_'+name]=brawl;
createNode('scene_'+name); var node=createNode('scene_'+name);
if(clear) game.addSceneClear();
clickCapt.call(node);
}; };
game.removeScene=function(name){ game.removeScene=function(name){
delete lib.storage.scene[name]; delete lib.storage.scene[name];
@ -157,9 +160,20 @@ mode.brawl={
} }
} }
} }
var sceneNode;
for(var i in lib.brawl){ for(var i in lib.brawl){
if(i=='scene'){
sceneNode=createNode(i);
}
else{
createNode(i); createNode(i);
} }
}
if(sceneNode){
game.switchScene=function(){
clickCapt.call(sceneNode);
}
}
for(var i in lib.storage.scene){ for(var i in lib.storage.scene){
game.addScene(i); game.addScene(i);
} }
@ -370,7 +384,8 @@ mode.brawl={
var player; var player;
if(init){ if(init){
player=ui.create.player(null,true); player=ui.create.player(null,true);
player.init('boss_lvbu2'); player.node.avatar.show();
player.node.avatar.setBackground('boss_lvbu2','character');
player.style.left='calc(50% - 75px)'; player.style.left='calc(50% - 75px)';
player.style.top='20px'; player.style.top='20px';
player.node.count.remove(); player.node.count.remove();
@ -386,9 +401,21 @@ mode.brawl={
var num2=0; var num2=0;
this.showcaseinterval=setInterval(function(){ this.showcaseinterval=setInterval(function(){
var dx,dy var dx,dy
if(num2%3==0){ if(num2%5==0){
player.animate('target'); // player.animate('target');
player.animate('zoomin'); // player.animate('zoomin');
player.classList.add('zoomin3');
player.hide();
setTimeout(function(){
player.style.transitionProperty='none';
player.classList.remove('zoomin3');
player.classList.add('zoomout2');
setTimeout(function(){
player.style.transitionProperty='';
player.classList.remove('zoomout2');
player.show();
},500);
},700);
} }
num2++; num2++;
switch(num++){ switch(num++){
@ -861,7 +888,7 @@ mode.brawl={
// } // }
// } // }
scene:{ scene:{
name:'创场景', name:'场景',
mode:'identity', mode:'identity',
intro:'<div style="position:relative;display:block;margin-bottom:5px">场景名称:<input name="scenename" type="text" style="width:120px"></div><div style="position:relative;display:block">场景说明:<input name="sceneintro" type="text" style="width:120px"></div>', intro:'<div style="position:relative;display:block;margin-bottom:5px">场景名称:<input name="scenename" type="text" style="width:120px"></div><div style="position:relative;display:block">场景说明:<input name="sceneintro" type="text" style="width:120px"></div>',
content:{ content:{
@ -871,12 +898,131 @@ mode.brawl={
fullshow:true, fullshow:true,
template:{ template:{
init:function(){ init:function(){
game.saveConfig('player_number',_status.brawl.scene.players.length,'identity'); game.saveConfig('double_character',false,'identity');
_status.brawl.playerNumber=_status.brawl.scene.players.length;
},
showcase:function(init){
if(init){
var name=lib.brawl[this.link].name;
var scene=lib.storage.scene[name];
ui.create.node('button','编辑场景',this,function(){
_status.sceneToLoad=scene;
game.switchScene();
});
ui.create.node('button','删除场景',this,function(){
if(confirm('确定删除'+name+'')){
game.removeScene(name);
}
},{marginLeft:'6px'});
ui.create.node('button','导出扩展',this,function(){
var str='{name:"'+name+'",content:function(){\nif(lib.config.mode=="brawl"){\n'+
'if(!lib.storage.scene) lib.storage.scene={};\n'+
'if(!lib.storage.scene["'+name+'"]) lib.storage.scene["'+name+'"]='+get.stringify(scene)+
'\n}}\n}';
var extension={'extension.js':'game.import("extension",'+str+')'};
game.importExtension(extension,null,name);
},{marginLeft:'6px'});
}
}, },
content:{ content:{
submode:'normal', submode:'normal',
noAddSetting:true, noAddSetting:true,
identityShown:true, identityShown:true,
orderedPile:true,
cardPile:function(list){
list.randomSort();
var scene=_status.brawl.scene;
var inpile=[];
for(var i=0;i<list.length;i++){
if(lib.card[list[i][2]]){
if(lib.config.bannedcards.contains(list[i][2])) continue;
if(game.bannedcards&&game.bannedcards.contains(list[i][2])) continue;
inpile.add(list[i][2]);
}
}
var parseInfo=function(info){
var info2=[];
if(info[1]=='random'){
info2.push(['club','spade','heart','diamond'].randomGet());
}
else{
info2.push(info[1]);
}
if(info[2]=='random'){
info2.push(Math.ceil(Math.random()*13));
}
else{
info2.push(info[2]);
}
if(info[0]=='random'){
info2.push(inpile.randomGet());
}
else{
info2.push(info[0]);
}
return info2;
}
if(scene.replacepile){
list.length=0;
}
for(var i=scene.cardPileTop.length-1;i>=0;i--){
list.unshift(parseInfo(scene.cardPileTop[i]));
}
for(var i=0;i<scene.cardPileBottom.length;i++){
list.push(parseInfo(scene.cardPileBottom[i]));
}
for(var i=0;i<scene.discardPile.length;i++){
ui.create.card(ui.discardPile).init(parseInfo(scene.discardPile[i]));
}
return list;
},
gameStart:function(){
for(var i=0;i<game.players.length;i++){
game.players[i].node.marks.show();
game.players[i].node.name.show();
game.players[i].node.name2.show();
var info=game.players[i].brawlinfo;
if(info.maxHp){
game.players[i].maxHp=info.maxHp;
if(game.players[i].hp>game.players[i].maxHp){
game.players[i].hp=game.players[i].maxHp;
}
}
if(info.hp){
game.players[i].hp=info.hp;
if(game.players[i].hp>game.players[i].maxHp){
game.players[i].maxHp=game.players[i].hp;
}
}
game.players[i].update();
}
var scene=_status.brawl.scene;
var over=function(str){
switch(str){
case 'win':game.over(true);break;
case 'lose':game.over(false);break;
case 'tie':game.over('平局');break;
}
}
if(scene.turns){
var turns=scene.turns[0];
lib.onphase.push(function(){
turns--;
if(turns<0){
over(scene.turns[1]);
}
});
}
if(scene.washes){
var washes=scene.washes[0];
lib.onwash.push(function(){
washes--;
if(washes<=0){
over(scene.washes[1]);
}
});
}
},
chooseCharacterBefore:function(){ chooseCharacterBefore:function(){
var scene=_status.brawl.scene; var scene=_status.brawl.scene;
var playercontrol=[]; var playercontrol=[];
@ -892,17 +1038,17 @@ mode.brawl={
maxpos=scene.players.length; maxpos=scene.players.length;
} }
var posmap=[]; var posmap=[];
for(var i=0;i<maxpos;i++){ for(var i=1;i<=maxpos;i++){
posmap[i]=i; posmap.push(i);
} }
for(var i=0;i<scene.players.length;i++){ for(var i=0;i<scene.players.length;i++){
if(scene.players[i].pos){ if(scene.players[i].position){
posmap.remove(scene.players[i].pos); posmap.remove(scene.players[i].position);
} }
} }
for(var i=0;i<scene.players.length;i++){ for(var i=0;i<scene.players.length;i++){
if(!scene.players[i].pos){ if(!scene.players[i].position){
scene.players[i].pos=posmap.randomRemove(); scene.players[i].position=posmap.randomRemove();
} }
} }
if(playercontrol.length){ if(playercontrol.length){
@ -922,21 +1068,130 @@ mode.brawl={
return getpos(a)-getpos(b); return getpos(a)-getpos(b);
}); });
var target=game.me; var target=game.me;
var createCard=function(info){
var info2=[];
if(info[1]=='random'){
info2.push(['club','spade','heart','diamond'].randomGet());
}
else{
info2.push(info[1]);
}
if(info[2]=='random'){
info2.push(Math.ceil(Math.random()*13));
}
else{
info2.push(info[2]);
}
if(info[0]=='random'){
info2.push(lib.inpile.randomGet());
}
else{
info2.push(info[0]);
}
return ui.create.card().init(info2);
}
_status.firstAct=game.me;
for(var i=0;i<scene.players.length;i++){ for(var i=0;i<scene.players.length;i++){
target.brawlinfo=scene.players[i]; var info=scene.players[i];
target.identity=scene.players[i].identity; target.brawlinfo=info;
target.setIdentity(scene.players[i].identity); target.identity=info.identity;
target.setIdentity(info.identity);
target.node.marks.hide();
if(info.name2!='none'&&info.name2!='random'){
if(info.name=='random'){
target.init(info.name2,info.name2);
target.node.name.hide();
target.node.avatar.hide();
}
else{
target.init(info.name,info.name2);
}
}
else{
if(info.name!='random'){
if(info.name2=='random'){
target.init(info.name,info.name);
target.node.name2.hide();
target.node.avatar2.hide();
}
else{
target.init(info.name);
}
}
}
if(info.linked) target.classList.add('linked');
if(info.turnedover) target.classList.add('turnedover');
if(info.position<_status.firstAct.brawlinfo.position) _status.firstAct=target;
var hs=[];
for(var j=0;j<info.handcards.length;j++){
hs.push(createCard(info.handcards[j]));
}
if(hs.length){
target.directgain(hs);
}
for(var j=0;j<info.equips.length;j++){
target.$equip(createCard(info.equips[j]));
}
for(var j=0;j<info.judges.length;j++){
target.node.judges.appendChild(createCard(info.judges[j]));
}
target=target.next; target=target.next;
} }
}, },
chooseCharacterAi:function(player){ chooseCharacterAi:function(player,list,list2){
if(player.brawlinfo&&player.brawlinfo.name!='random'){ var info=player.brawlinfo;
player.init(player.brawlinfo.name) if(info.name2!='none'){
if(info.name=='random'&&info.name2=='random'){
list=list.slice(0);
player.init(list.randomRemove(),list.randomRemove());
}
else if(info.name=='random'){
player.init(list.randomGet(),info.name2);
}
else if(info.name2=='random'){
player.init(info.name,list.randomGet());
}
} }
else{ else{
return false; if(info.name=='random'){
player.init(list.randomGet());
} }
} }
},
chooseCharacter:function(list){
var info=game.me.brawlinfo;
var event=_status.event;
if(info.name2=='none'){
if(info.name!='random'){
event.chosen=[info.name];
}
}
else{
if(info.name2=='random'&&info.name=='random'){
_status.brawl.doubleCharacter=true;
}
else if(info.name=='random'){
game.me.init(info.name2,info.name2);
game.me.node.avatar.hide();
game.me.node.name.hide();
_status.brawl.chooseCharacterStr='选择主将';
event.modchosen=[info.name,info.name2];
}
else if(info.name2=='random'){
game.me.init(info.name,info.name);
game.me.node.avatar2.hide();
game.me.node.name2.hide();
_status.brawl.chooseCharacterStr='选择副将';
event.modchosen=[info.name,info.name2];
}
else{
event.chosen=[info.name,info.name2];
}
}
if(game.me.identity=='zhu') return false;
return 'nozhu';
},
noGameDraw:true,
} }
}, },
showcase:function(init){ showcase:function(init){
@ -971,7 +1226,7 @@ mode.brawl={
editPile.disabled=true; editPile.disabled=true;
// editCode.disabled=true; // editCode.disabled=true;
saveButton.disabled=true; saveButton.disabled=true;
exportButton.disabled=true; // exportButton.disabled=true;
line7.style.display='none'; line7.style.display='none';
line2.style.display='block'; line2.style.display='block';
line2_t.style.display='block'; line2_t.style.display='block';
@ -987,12 +1242,12 @@ mode.brawl={
if(line6_e.childElementCount) capt_e.style.display='block'; if(line6_e.childElementCount) capt_e.style.display='block';
if(line6_j.childElementCount) capt_j.style.display='block'; if(line6_j.childElementCount) capt_j.style.display='block';
},style); },style);
var editPile=ui.create.node('button','设置状态',line1,function(){ var editPile=ui.create.node('button','场景选项',line1,function(){
resetCharacter(); resetCharacter();
addCharacter.disabled=true; addCharacter.disabled=true;
// editCode.disabled=true; // editCode.disabled=true;
saveButton.disabled=true; saveButton.disabled=true;
exportButton.disabled=true; // exportButton.disabled=true;
line7.style.display='none'; line7.style.display='none';
line8.style.display='block'; line8.style.display='block';
capt8.style.display='block'; capt8.style.display='block';
@ -1032,13 +1287,13 @@ mode.brawl={
alert('请添加至少两名角色'); alert('请添加至少两名角色');
return; return;
} }
if(!_status.currentScene){
if(lib.storage.scene[scenename.value]){ if(lib.storage.scene[scenename.value]){
if(_status.currentScene!=scenename.value){
if(!confirm('场景名与现有场景重复,是否覆盖?')){ if(!confirm('场景名与现有场景重复,是否覆盖?')){
return; return;
} }
game.removeScene(scenename.value);
} }
game.removeScene(scenename.value);
} }
for(var i=0;i<line6_t.childElementCount;i++){ for(var i=0;i<line6_t.childElementCount;i++){
scene.cardPileTop.push(line6_t.childNodes[i].info); scene.cardPileTop.push(line6_t.childNodes[i].info);
@ -1050,7 +1305,7 @@ mode.brawl={
scene.discardPile.push(line6_d.childNodes[i].info); scene.discardPile.push(line6_d.childNodes[i].info);
} }
if(replacepile.checked){ if(replacepile.checked){
scene.replacePile=true; scene.replacepile=true;
} }
if(turnsresult.value!='none'){ if(turnsresult.value!='none'){
scene.turns=[parseInt(turns.value),turnsresult.value] scene.turns=[parseInt(turns.value),turnsresult.value]
@ -1060,10 +1315,7 @@ mode.brawl={
} }
lib.storage.scene[scene.name]=scene; lib.storage.scene[scene.name]=scene;
game.save('scene',lib.storage.scene); game.save('scene',lib.storage.scene);
game.addScene(scene.name); game.addScene(scene.name,true);
},style);
var exportButton=ui.create.node('button','导出扩展',line1,function(){
console.log(1);
},style); },style);
@ -1180,7 +1432,8 @@ mode.brawl={
cardpileaddnumber.style.marginRight='3px'; cardpileaddnumber.style.marginRight='3px';
cardpileaddnumber.style.width='85px'; cardpileaddnumber.style.width='85px';
var fakecard=function(name,suit,number){ var fakecard=function(info,position,capt){
var name=info[0],suit=info[1],number=info[2];
var card=ui.create.card(null,'noclick',true); var card=ui.create.card(null,'noclick',true);
card.style.zoom=0.6; card.style.zoom=0.6;
number=parseInt(cardpileaddnumber.value); number=parseInt(cardpileaddnumber.value);
@ -1194,19 +1447,21 @@ mode.brawl={
number2='?'; number2='?';
} }
card.init([suit2,number2,name2]); card.init([suit2,number2,name2]);
card.info=[name,suit,number]; card.info=info;
if(name=='random'){ if(name=='random'){
card.node.name.innerHTML=get.verticalStr('随机卡牌'); card.node.name.innerHTML=get.verticalStr('随机卡牌');
} }
if(position&&capt){
card.listen(function(){
this.remove();
if(!position.childElementCount) capt.style.display='none';
});
position.appendChild(card);
}
return card; return card;
}; };
var cc_h=ui.create.node('button','加入手牌区',line5,function(){ var cc_h=ui.create.node('button','加入手牌区',line5,function(){
var card=fakecard(cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value); fakecard([cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value],line6_h,capt_h);
card.listen(function(){
this.remove();
if(!line6_h.childElementCount) capt_h.style.display='none';
});
line6_h.appendChild(card);
capt_h.style.display='block'; capt_h.style.display='block';
}); });
var cc_e=ui.create.node('button','加入装备区',line5,function(){ var cc_e=ui.create.node('button','加入装备区',line5,function(){
@ -1217,12 +1472,7 @@ mode.brawl={
line6_e.childNodes[i].remove();break; line6_e.childNodes[i].remove();break;
} }
} }
var card=fakecard(cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value); fakecard([cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value],line6_e,capt_e);
card.listen(function(){
this.remove();
if(!line6_e.childElementCount) capt_e.style.display='none';
});
line6_e.appendChild(card);
capt_e.style.display='block'; capt_e.style.display='block';
}); });
var cc_j=ui.create.node('button','加入判定区',line5,function(){ var cc_j=ui.create.node('button','加入判定区',line5,function(){
@ -1232,12 +1482,7 @@ mode.brawl={
line6_j.childNodes[i].remove();break; line6_j.childNodes[i].remove();break;
} }
} }
var card=fakecard(cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value); fakecard([cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value],line6_j,capt_j);
card.listen(function(){
this.remove();
if(!line6_j.childElementCount) capt_j.style.display='none';
});
line6_j.appendChild(card);
capt_j.style.display='block'; capt_j.style.display='block';
}); });
cc_h.style.marginLeft='3px'; cc_h.style.marginLeft='3px';
@ -1264,30 +1509,15 @@ mode.brawl={
var line10=ui.create.div(style2,this); var line10=ui.create.div(style2,this);
line10.style.display='none'; line10.style.display='none';
var ac_h=ui.create.node('button','加入牌堆顶',line10,function(){ var ac_h=ui.create.node('button','加入牌堆顶',line10,function(){
var card=fakecard(cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value); fakecard([cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value],line6_t,capt_t);
card.listen(function(){
this.remove();
if(!line6_t.childElementCount) capt_t.style.display='none';
});
line6_t.appendChild(card);
capt_t.style.display='block'; capt_t.style.display='block';
}); });
var ac_e=ui.create.node('button','加入牌堆底',line10,function(){ var ac_e=ui.create.node('button','加入牌堆底',line10,function(){
var card=fakecard(cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value); fakecard([cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value],line6_b,capt_b);
card.listen(function(){
this.remove();
if(!line6_b.childElementCount) capt_b.style.display='none';
});
line6_b.appendChild(card);
capt_b.style.display='block'; capt_b.style.display='block';
}); });
var ac_j=ui.create.node('button','加入弃牌堆',line10,function(){ var ac_j=ui.create.node('button','加入弃牌堆',line10,function(){
var card=fakecard(cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value); fakecard([cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value],line6_d,capt_d);
card.listen(function(){
this.remove();
if(!line6_d.childElementCount) capt_d.style.display='none';
});
line6_d.appendChild(card);
capt_d.style.display='block'; capt_d.style.display='block';
}); });
ac_h.style.marginLeft='3px'; ac_h.style.marginLeft='3px';
@ -1324,7 +1554,7 @@ mode.brawl={
editPile.disabled=false; editPile.disabled=false;
// editCode.disabled=false; // editCode.disabled=false;
saveButton.disabled=false; saveButton.disabled=false;
exportButton.disabled=false; // exportButton.disabled=false;
line7.style.display='block'; line7.style.display='block';
line2.style.display='none'; line2.style.display='none';
line2_t.style.display='none'; line2_t.style.display='none';
@ -1369,14 +1599,14 @@ mode.brawl={
} }
player.init(name,name3); player.init(name,name3);
if(info.name2=='random'){ if(info.name2=='random'){
player.node.name2.innerHTML=get.verticalStr('随机副将'); player.node.name2.innerHTML=get.verticalStr('自选副将');
} }
} }
else{ else{
player.init(name); player.init(name);
} }
if(info.name=='random'){ if(info.name=='random'){
player.node.name.innerHTML=get.verticalStr('随机主将'); player.node.name.innerHTML=get.verticalStr('自选主将');
} }
if(info.maxHp){ if(info.maxHp){
player.maxHp=info.maxHp; player.maxHp=info.maxHp;
@ -1388,10 +1618,10 @@ mode.brawl={
player.node.handcards1.appendChild(ui.create.card()); player.node.handcards1.appendChild(ui.create.card());
} }
for(var i=0;i<info.equips.length;i++){ for(var i=0;i<info.equips.length;i++){
player.$equip(fakecard.apply(this,info.equips[i])); player.$equip(fakecard(info.equips[i]));
} }
for(var i=0;i<info.judges.length;i++){ for(var i=0;i<info.judges.length;i++){
player.node.judges.appendChild(fakecard.apply(this,info.judges[i])); player.node.judges.appendChild(fakecard(info.judges[i]));
} }
player.setIdentity(info.identity); player.setIdentity(info.identity);
var pos=info.position; var pos=info.position;
@ -1416,6 +1646,21 @@ mode.brawl={
player.style.top=0; player.style.top=0;
player.style.margin='-18px'; player.style.margin='-18px';
player.node.marks.remove(); player.node.marks.remove();
line7.appendChild(player);
player.listen(function(){
if(confirm('是否删除此角色?')){
this.remove();
if(line7.childElementCount<8){
addCharacter.disabled=false;
}
}
});
if(line7.childElementCount>=8){
addCharacter.disabled=true;
}
return player; return player;
}; };
ui.create.div('.menubutton.large','确定',line4,style3,function(){ ui.create.div('.menubutton.large','确定',line4,style3,function(){
@ -1444,27 +1689,15 @@ mode.brawl={
} }
} }
for(var i=0;i<line6_h.childElementCount;i++){ for(var i=0;i<line6_h.childElementCount;i++){
info.handcards.push([line6_h.childNodes[i].name,line6_h.childNodes[i].suit,line6_h.childNodes[i].number]); info.handcards.push(line6_h.childNodes[i].info);
} }
for(var i=0;i<line6_e.childElementCount;i++){ for(var i=0;i<line6_e.childElementCount;i++){
info.equips.push([line6_e.childNodes[i].name,line6_e.childNodes[i].suit,line6_e.childNodes[i].number]); info.equips.push(line6_e.childNodes[i].info);
} }
for(var i=0;i<line6_j.childElementCount;i++){ for(var i=0;i<line6_j.childElementCount;i++){
info.judges.push([line6_j.childNodes[i].name,line6_j.childNodes[i].suit,line6_j.childNodes[i].number]); info.judges.push(line6_j.childNodes[i].info);
}
var player=createCharacter(info);
line7.appendChild(player);
player.listen(function(){
if(confirm('是否删除此角色?')){
this.remove();
if(line7.childElementCount<8){
addCharacter.disabled=false;
}
}
});
if(line7.childElementCount>=8){
addCharacter.disabled=true;
} }
createCharacter(info);
resetCharacter(); resetCharacter();
}); });
ui.create.div('.menubutton.large','取消',line4,style3,resetCharacter); ui.create.div('.menubutton.large','取消',line4,style3,resetCharacter);
@ -1478,7 +1711,7 @@ mode.brawl={
line8.style.display='none'; line8.style.display='none';
line8.style.marginTop='10px'; line8.style.marginTop='10px';
line8.style.marginBottom='10px'; line8.style.marginBottom='10px';
var turnslist=[['1','一'],['2',''],['3','三'],['4','四'],['5','五'],['6','六'],['7','七'],['8','八'],['9','九'],['10','十']]; var turnslist=[['1','一'],['2',''],['3','三'],['4','四'],['5','五'],['6','六'],['7','七'],['8','八'],['9','九'],['10','十']];
var results=[['none','无'],['win','胜利'],['lose','失败'],['tie','平局']]; var results=[['none','无'],['win','胜利'],['lose','失败'],['tie','平局']];
var turns=ui.create.selectlist(turnslist,'1',line8); var turns=ui.create.selectlist(turnslist,'1',line8);
ui.create.node('span','个回合后',line8,style); ui.create.node('span','个回合后',line8,style);
@ -1493,7 +1726,7 @@ mode.brawl={
var line9=ui.create.div(style2,this); var line9=ui.create.div(style2,this);
line9.style.display='none'; line9.style.display='none';
line9.style.marginTop='20px'; line9.style.marginTop='20px';
var resetStatus=function(){ var resetStatus=function(all){
if(line7.childElementCount>=8){ if(line7.childElementCount>=8){
addCharacter.disabled=true; addCharacter.disabled=true;
} }
@ -1502,7 +1735,7 @@ mode.brawl={
} }
// editCode.disabled=false; // editCode.disabled=false;
saveButton.disabled=false; saveButton.disabled=false;
exportButton.disabled=false; // exportButton.disabled=false;
cardpileaddname.value='random'; cardpileaddname.value='random';
cardpileaddsuit.value='random'; cardpileaddsuit.value='random';
cardpileaddnumber.value='random'; cardpileaddnumber.value='random';
@ -1523,9 +1756,64 @@ mode.brawl={
capt_t.style.display='none'; capt_t.style.display='none';
capt_b.style.display='none'; capt_b.style.display='none';
capt_d.style.display='none'; capt_d.style.display='none';
if(all===true){
replacepile.checked=false;
turns.value='1';
turnsresult.value='none';
washes.value='1';
washesresult.value='none';
line6_t.innerHTML='';
line6_b.innerHTML='';
line6_d.innerHTML='';
}
} }
ui.create.div('.menubutton.large','确定',line9,style3,resetStatus); ui.create.div('.menubutton.large','确定',line9,style3,resetStatus);
game.addSceneClear=function(){
resetCharacter();
resetStatus(true);
scenename.value='';
sceneintro.value='';
line7.innerHTML='';
delete _status.currentScene;
};
game.loadScene=function(scene){
resetCharacter();
resetStatus(true);
scenename.value=scene.name;
sceneintro.value=scene.intro;
_status.currentScene=scene.name;
line7.innerHTML='';
if(scene.replacepile) replacepile.checked=true;
if(scene.turns){
turns.value=scene.turns[0].toString();
turnsresult.value=scene.turns[1];
}
if(scene.washes){
washes.value=scene.washes[0].toString();
washesresult.value=scene.washes[1];
}
for(var i=0;i<scene.cardPileTop.length;i++){
fakecard(scene.cardPileTop[i],line6_t,capt_t);
}
for(var i=0;i<scene.cardPileBottom.length;i++){
fakecard(scene.cardPileBottom[i],line6_b,capt_b);
}
for(var i=0;i<scene.discardPile.length;i++){
fakecard(scene.discardPile[i],line6_d,capt_d);
}
for(var i=0;i<scene.players.length;i++){
createCharacter(scene.players[i]);
}
};
}
if(_status.sceneToLoad){
var scene=_status.sceneToLoad;
delete _status.sceneToLoad;
game.loadScene(scene);
} }
} }
} }

3
mode/chess.js Executable file → Normal file
View File

@ -5,6 +5,9 @@ mode.chess={
start:function(){ start:function(){
"step 0" "step 0"
_status.mode=get.config('chess_mode'); _status.mode=get.config('chess_mode');
if(lib.storage.test){
_status.mode='combat';
}
if(_status.mode=='combat'){ if(_status.mode=='combat'){
_status.first_less=true; _status.first_less=true;
} }

16
mode/guozhan.js Executable file → Normal file
View File

@ -88,9 +88,9 @@ mode.guozhan={
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
game.players[i].name='unknown'+get.distance(player,game.players[i],'absolute'); game.players[i].name='unknown'+get.distance(player,game.players[i],'absolute');
game.players[i].node.name_seat=ui.create.div('.name.name_seat',get.verticalStr(lib.translate[game.players[i].name]),game.players[i]); game.players[i].node.name_seat=ui.create.div('.name.name_seat',get.verticalStr(lib.translate[game.players[i].name]),game.players[i]);
if(game.players[i]==game.me){ // if(game.players[i]==game.me){
lib.translate[game.players[i].name]+='(你)'; // lib.translate[game.players[i].name]+='(你)';
} // }
} }
},player); },player);
@ -836,11 +836,11 @@ mode.guozhan={
if(info.mode.unseen) this.classList.add('unseen'); if(info.mode.unseen) this.classList.add('unseen');
if(info.mode.unseen2) this.classList.add('unseen2'); if(info.mode.unseen2) this.classList.add('unseen2');
if(!info.name) return; if(!info.name) return;
if(info.name.indexOf('unknown')==0){ // if(info.name.indexOf('unknown')==0){
if(this==game.me){ // if(this==game.me){
lib.translate[info.name]+='(你)'; // lib.translate[info.name]+='(你)';
} // }
} // }
this.init(info.name1,info.name2,false); this.init(info.name1,info.name2,false);
this.name1=info.name1; this.name1=info.name1;
this.name=info.name; this.name=info.name;

64
mode/identity.js Executable file → Normal file
View File

@ -346,7 +346,7 @@ mode.identity={
} }
var name=[ var name=[
str, str,
get.cnNumber(parseInt(get.config('player_number')))+'人'+ get.cnNumber(get.playerNumber())+'人'+
get.translation(lib.config.mode)+' - '+lib.translate[game.me.identity+'2'] get.translation(lib.config.mode)+' - '+lib.translate[game.me.identity+'2']
]; ];
return name; return name;
@ -565,7 +565,7 @@ mode.identity={
else{ else{
identityList=lib.config.mode_config.identity.identity[game.players.length-2].slice(0); identityList=lib.config.mode_config.identity.identity[game.players.length-2].slice(0);
if(get.config('double_nei')){ if(get.config('double_nei')){
switch(get.config('player_number')){ switch(get.playerNumber()){
case '8': case '8':
identityList.remove('fan'); identityList.remove('fan');
identityList.push('nei'); identityList.push('nei');
@ -652,6 +652,7 @@ mode.identity={
this.classList.add('thundertext'); this.classList.add('thundertext');
} }
num=get.config('choice_'+link); num=get.config('choice_'+link);
if(event.zhongmode) num=3;
_status.event.parent.swapnodialog=function(dialog,list){ _status.event.parent.swapnodialog=function(dialog,list){
var buttons=ui.create.div('.buttons'); var buttons=ui.create.div('.buttons');
var node=dialog.buttons[0].parentNode; var node=dialog.buttons[0].parentNode;
@ -686,7 +687,7 @@ mode.identity={
dialog.add('选择座位'); dialog.add('选择座位');
var seats=document.createElement('table'); var seats=document.createElement('table');
seats.style.margin='0 auto'; seats.style.margin='0 auto';
seats.style.maxWidth=(60*(parseInt(get.config('player_number'))-1))+'px'; seats.style.maxWidth=(60*get.playerNumber()-1)+'px';
var tr=document.createElement('tr'); var tr=document.createElement('tr');
seats.appendChild(tr); seats.appendChild(tr);
for(var i=2;i<=game.players.length;i++){ for(var i=2;i<=game.players.length;i++){
@ -804,6 +805,9 @@ mode.identity={
event.list.remove(game.zhu.name2); event.list.remove(game.zhu.name2);
if(_status.brawl&&_status.brawl.chooseCharacter){ if(_status.brawl&&_status.brawl.chooseCharacter){
list=_status.brawl.chooseCharacter(event.list,num); list=_status.brawl.chooseCharacter(event.list,num);
if(list===false||list==='nozhu'){
list=event.list.slice(0,num);
}
} }
else{ else{
list=event.list.slice(0,num); list=event.list.slice(0,num);
@ -812,6 +816,17 @@ mode.identity={
else{ else{
if(_status.brawl&&_status.brawl.chooseCharacter){ if(_status.brawl&&_status.brawl.chooseCharacter){
list=_status.brawl.chooseCharacter(list2,list3,num); list=_status.brawl.chooseCharacter(list2,list3,num);
if(list===false){
if(event.zhongmode){
list=list3.slice(0,6);
}
else{
list=list2.concat(list3.slice(0,num));
}
}
else if(list==='nozhu'){
list=event.list.slice(0,num);
}
} }
else{ else{
if(event.zhongmode){ if(event.zhongmode){
@ -830,16 +845,20 @@ mode.identity={
delete event.swapnodialog; delete event.swapnodialog;
} }
else{ else{
dialog=ui.create.dialog('选择角色','hidden',[list,'character']); var str='选择角色';
if(_status.brawl&&_status.brawl.chooseCharacterStr){
str=_status.brawl.chooseCharacterStr;
}
dialog=ui.create.dialog(str,'hidden',[list,'character']);
if(!_status.brawl||!_status.brawl.noAddSetting){ if(!_status.brawl||!_status.brawl.noAddSetting){
if(get.config('change_identity')){ if(get.config('change_identity')){
addSetting(dialog); addSetting(dialog);
} }
} }
} }
if(!event.chosen.length){ if(!event.chosen.length){
game.me.chooseButton(dialog,true).selectButton=function(){ game.me.chooseButton(dialog,true).selectButton=function(){
if(_status.brawl&&_status.brawl.doubleCharacter) return 2;
return get.config('double_character')?2:1 return get.config('double_character')?2:1
}; };
} }
@ -854,12 +873,42 @@ mode.identity={
} }
if(game.zhu!=game.me){ if(game.zhu!=game.me){
event.list.randomSort(); event.list.randomSort();
if(_status.brawl&&_status.brawl.chooseCharacter){
list=_status.brawl.chooseCharacter(event.list,num);
if(list===false||list==='nozhu'){
list=event.list.slice(0,num); list=event.list.slice(0,num);
} }
}
else{
list=event.list.slice(0,num);
}
}
else{ else{
list3.randomSort(); list3.randomSort();
if(_status.brawl&&_status.brawl.chooseCharacter){
list=_status.brawl.chooseCharacter(list2,list3,num);
if(list===false){
if(event.zhongmode){
list=list3.slice(0,6);
}
else{
list=list2.concat(list3.slice(0,num)); list=list2.concat(list3.slice(0,num));
} }
}
else if(list==='nozhu'){
event.list.randomSort();
list=event.list.slice(0,num);
}
}
else{
if(event.zhongmode){
list=list3.slice(0,6);
}
else{
list=list2.concat(list3.slice(0,num));
}
}
}
var buttons=ui.create.div('.buttons'); var buttons=ui.create.div('.buttons');
var node=_status.event.dialog.buttons[0].parentNode; var node=_status.event.dialog.buttons[0].parentNode;
_status.event.dialog.buttons=ui.create.buttons(list,'character',buttons); _status.event.dialog.buttons=ui.create.buttons(list,'character',buttons);
@ -923,6 +972,11 @@ mode.identity={
if(event.chosen.length){ if(event.chosen.length){
game.me.init(event.chosen[0],event.chosen[1]); game.me.init(event.chosen[0],event.chosen[1]);
} }
else if(event.modchosen){
if(event.modchosen[0]=='random') event.modchosen[0]=result.buttons[0].link;
else event.modchosen[1]=result.buttons[0].link;
game.me.init(event.modchosen[0],event.modchosen[1]);
}
else if(result.buttons.length==2){ else if(result.buttons.length==2){
game.me.init(result.buttons[0].link,result.buttons[1].link) game.me.init(result.buttons[0].link,result.buttons[1].link)
} }

11
mode/stone.js Executable file → Normal file
View File

@ -1268,7 +1268,7 @@ mode.stone={
careerList:['mage','shaman','druid','paladin','rogue','priest','hunter','warrior','warlock'], careerList:['mage','shaman','druid','paladin','rogue','priest','hunter','warrior','warlock'],
game:{ game:{
reserveDead:true, reserveDead:true,
bannedcards:['lebu','guiyoujie','xietianzi','lingjiandai','jiguanshu','sifeizhenmian','mujiaren'], bannedcards:['lebu','guiyoujie','xietianzi','lingjiandai','jiguanshu','sifeizhenmian','mujiaren','fengxueren','chuansongmen'],
onwash:function(){ onwash:function(){
if(_status.mode!='deck') return; if(_status.mode!='deck') return;
var list=[]; var list=[];
@ -4210,7 +4210,6 @@ mode.stone={
spell_yexingchengzhang:{ spell_yexingchengzhang:{
type:'stonecard', type:'stonecard',
fullimage:true, fullimage:true,
chongzhu:true,
enable:function(event,player){ enable:function(event,player){
return !player.hasSkill('druid_yexingchengzhang')&&!player.isMin(); return !player.hasSkill('druid_yexingchengzhang')&&!player.isMin();
}, },
@ -10185,13 +10184,13 @@ mode.stone={
'<li>每有一个友方随从死亡获得10点怒气值主将死亡获得20点怒气值'+ '<li>每有一个友方随从死亡获得10点怒气值主将死亡获得20点怒气值'+
'<li>回合结束阶段若己方随从数少于对方会获得10X点怒气值X为随从数之差'+ '<li>回合结束阶段若己方随从数少于对方会获得10X点怒气值X为随从数之差'+
'<li>怒气值达到100时不再增加。回合开始阶段若怒气值己满可消耗全部怒气值和4点行动值并召唤一名传说随从</ul>'+ '<li>怒气值达到100时不再增加。回合开始阶段若怒气值己满可消耗全部怒气值和4点行动值并召唤一名传说随从</ul>'+
'<div style="margin:10px">战斗</div><ul style="margin-top:0"><li>游戏流程类似1v1场上有两名主将进行对抗,主将的体力上限+1'+ '<div style="margin:10px">战斗</div><ul style="margin-top:0"><li>场上有两名主将进行对抗,主将的体力上限+1'+
'<li>游戏牌堆移除了乐不思蜀等跳过出牌阶段的卡牌'+ '<li>游戏牌堆移除了乐不思蜀等跳过出牌阶段以及包含翻面功能的卡牌'+
'<li>主将出牌阶段的出牌数量行动值有上限从1开始递增后手的首个回合有一点额外行动值装备牌不计入出牌上限<li>游戏每进行一轮,主将的出牌上限+1超过6时减至3并重新累加'+ '<li>主将出牌阶段的出牌数量行动值有上限从1开始递增后手的首个回合有一点额外行动值装备牌不计入出牌上限<li>游戏每进行一轮,主将的出牌上限+1直到增加至6'+
'<li>使用随从牌可召唤一个随从随从出场时背面朝上。每一方在场的随从数不能超过4<li>随从于摸牌阶段摸牌基数为1随从的法术和随从牌均视为闪装备牌均视为杀<li>'+ '<li>使用随从牌可召唤一个随从随从出场时背面朝上。每一方在场的随从数不能超过4<li>随从于摸牌阶段摸牌基数为1随从的法术和随从牌均视为闪装备牌均视为杀<li>'+
'随从与其他所有角色相互距离基数为1<li>'+ '随从与其他所有角色相互距离基数为1<li>'+
'主将杀死对方随从后获得一个额外的行动值并从牌库中获得一张牌,杀死己方随从无惩罚,随从杀死随从无效果'+ '主将杀死对方随从后获得一个额外的行动值并从牌库中获得一张牌,杀死己方随从无惩罚,随从杀死随从无效果'+
'<li>主将可重铸随从牌但回合内总的重铸次数不能超过3,随从不能重铸任何牌(包括铁索等默认可以重铸的牌);若重铸的牌为随从牌或法术牌,则摸牌改为获得一张随机法术牌'+ '<li>主将在随从满员时可重铸随从牌但回合内总的重铸次数不能超过3若重铸的牌为随从牌或法术牌则摸牌改为获得一张随机法术牌'+
'<li>嘲讽:若一方阵营中有嘲讽角色,则同阵营的无嘲讽角色不以能成为杀目标'+ '<li>嘲讽:若一方阵营中有嘲讽角色,则同阵营的无嘲讽角色不以能成为杀目标'+
'<li>行动顺序为先主将后随从。主将或随从死亡后立即移出游戏主将死亡后替补登场替补登场时摸3+X张牌X为对方存活的随从数无替补时游戏结束' '<li>行动顺序为先主将后随从。主将或随从死亡后立即移出游戏主将死亡后替补登场替补登场时摸3+X张牌X为对方存活的随从数无替补时游戏结束'
} }

View File

@ -4,6 +4,7 @@ mode.tafang={
start:function(){ start:function(){
"step 0" "step 0"
lib.init.css(lib.assetURL+'layout/mode','chess'); lib.init.css(lib.assetURL+'layout/mode','chess');
lib.init.css(lib.assetURL+'layout/mode','tafang');
game.loadMode('chess'); game.loadMode('chess');
"step 1" "step 1"
for(var i in result.element){ for(var i in result.element){
@ -37,6 +38,13 @@ mode.tafang={
} }
} }
} }
// if(!localStorage.getItem(lib.configprefix+'playback')){
// game.loadMap();
// }
"step 2"
var result='basic_medium';
_status.map=lib.tafang.map[result];
_status.mapname=result;
ui.chesssheet=document.createElement('style'); ui.chesssheet=document.createElement('style');
document.head.appendChild(ui.chesssheet); document.head.appendChild(ui.chesssheet);
var playback=localStorage.getItem(lib.configprefix+'playback'); var playback=localStorage.getItem(lib.configprefix+'playback');
@ -84,36 +92,20 @@ mode.tafang={
} }
_status.mylist=[]; _status.mylist=[];
_status.enemylist=[]; _status.enemylist=[];
"step 2" "step 3"
ui.arena.classList.add('chess'); ui.arena.classList.add('chess');
var mylistmap,enemylistmap;
if(event.video){ if(event.video){
var videocontent;
for(var ii=0;ii<event.video.length;ii++){ for(var ii=0;ii<event.video.length;ii++){
if(event.video[ii].type=='init'){ if(event.video[ii].type=='init'){
videocontent=event.video[ii].content; _status.mapname=event.video[ii].content;
break; break;
} }
} }
mylistmap=[]; _status.map=lib.tafang.map[_status.mapname];
enemylistmap=[];
for(var i=0;i<videocontent.length;i++){
if(videocontent[i].lord){
_status.lord=videocontent[i].name;
}
if(videocontent[i].identity=='friend'){
_status.mylist.push(videocontent[i].name);
mylistmap.push(videocontent[i].position);
}
else{
_status.enemylist.push(videocontent[i].name);
enemylistmap.push(videocontent[i].position);
}
}
game.playerMap=lib.posmap; game.playerMap=lib.posmap;
} }
ui.chesswidth=parseInt(get.config('tafang_size')); ui.chesswidth=_status.map.size[0];
ui.chessheight=11; ui.chessheight=_status.map.size[1];
ui.chess.style.height=148*ui.chessheight+'px'; ui.chess.style.height=148*ui.chessheight+'px';
ui.chess.style.width=148*ui.chesswidth+'px'; ui.chess.style.width=148*ui.chesswidth+'px';
if(!lib.config.touchscreen){ if(!lib.config.touchscreen){
@ -255,7 +247,7 @@ mode.tafang={
lib.setScroll(ui.chessinfo); lib.setScroll(ui.chessinfo);
game.arrangePlayers(); game.arrangePlayers();
"step 3" "step 4"
ui.control.style.display=''; ui.control.style.display='';
if(event.video){ if(event.video){
game.playVideoContent(event.video); game.playVideoContent(event.video);
@ -263,7 +255,7 @@ mode.tafang={
return; return;
} }
_status.videoInited=true; _status.videoInited=true;
game.addVideo('init',null,[]); game.addVideo('init',null,_status.mapname);
if(game.friendZhu){ if(game.friendZhu){
game.addVideo('identityText',game.friendZhu,'将'); game.addVideo('identityText',game.friendZhu,'将');
game.addVideo('identityText',game.enemyZhu,'帅'); game.addVideo('identityText',game.enemyZhu,'帅');
@ -347,6 +339,23 @@ mode.tafang={
}, },
}, },
}, },
tafang:{
map:{
basic_small:{
name:'小型战场',
size:[6,11],
obstacle:[]
},
basic_medium:{
name:'中型战场',
size:[9,11],
},
basic_large:{
name:'大型战场',
size:[12,11],
},
}
},
game:{ game:{
minskin:true, minskin:true,
singleHandcard:true, singleHandcard:true,
@ -806,6 +815,150 @@ mode.tafang={
} }
}); });
}, },
loadMap:function(){
var next=game.createEvent('loadMap');
next.setContent(function(){
if(!lib.storage.map){
lib.storage.map=['basic_small','basic_medium','basic_large'];
}
if(!lib.storage.newmap){
lib.storage.newmap=[];
}
var sceneview=ui.create.div('.storyscene');
if(!lib.config.touchscreen&&lib.config.mousewheel){
sceneview._scrollspeed=30;
sceneview._scrollnum=10;
sceneview.onmousewheel=function(){
if(!this.classList.contains('lockscroll')){
ui.click.mousewheel.apply(this,arguments);
}
};
}
lib.setScroll(sceneview);
var switchScene=function(){
event.result=this.link;
sceneview.delete();
setTimeout(game.resume,300);
}
var clickScene=function(e){
if(this.classList.contains('unselectable')) return;
if(this._clicking) return;
if(e&&e.stopPropagation) e.stopPropagation();
if(this.classList.contains('flipped')){
return;
}
if(this.classList.contains('glow3')){
this.classList.remove('glow3');
lib.storage.newmap.remove(this.name);
game.save('newmap',lib.storage.newmap);
}
var sceneNode=this.parentNode;
var current=document.querySelector('.flipped.scene');
if(current){
restoreScene(current,true);
}
this.content.innerHTML='';
ui.create.div('.menubutton.large.enter','进入',this.content,switchScene).link=this.name;
sceneNode.classList.add('lockscroll');
var node=this;
node._clicking=true;
setTimeout(function(){
node._clicking=false;
},700);
sceneNode.dx=ui.window.offsetWidth/2-(-sceneNode.scrollLeft+this.offsetLeft+this.offsetWidth/2);
if(Math.abs(sceneNode.dx)<20){
sceneNode.dx=0;
}
if(!sceneNode.sceneInterval&&sceneNode.dx){
sceneNode.sceneInterval=setInterval(function(){
var dx=sceneNode.dx;
if(Math.abs(dx)<=2){
sceneNode.scrollLeft-=dx;
clearInterval(sceneNode.sceneInterval);
delete sceneNode.sceneInterval;
}
else{
var ddx=dx/Math.sqrt(Math.abs(dx))*1.5;
sceneNode.scrollLeft-=ddx;
sceneNode.dx-=ddx;
}
},16);
}
node.style.transition='all ease-in 0.2s';
node.style.transform='perspective(1600px) rotateY(90deg) scale(0.75)';
var onEnd=function(){
node.removeEventListener('webkitTransitionEnd',onEnd);
node.classList.add('flipped');
sceneNode.classList.add('lockscroll');
node.style.transition='all ease-out 0.4s';
node.style.transform='perspective(1600px) rotateY(180deg) scale(1)'
};
node.addEventListener('webkitTransitionEnd',onEnd);
}
ui.click.scene=clickScene;
var restoreScene=function(node,forced){
if(node._clicking&&!forced) return;
if(node.transformInterval){
clearInterval(node.transformInterval);
delete node.transformInterval;
}
var sceneNode=node.parentNode;
node._clicking=true;
setTimeout(function(){
node._clicking=false;
},700);
node.style.transition='all ease-in 0.2s';
node.style.transform='perspective(1600px) rotateY(90deg) scale(0.75)';
var onEnd=function(){
node.removeEventListener('webkitTransitionEnd',onEnd);
node.classList.remove('flipped');
if(!sceneNode.querySelector('.flipped')){
sceneNode.classList.remove('lockscroll');
}
node.style.transition='all ease-out 0.4s';
node.style.transform='perspective(1600px) rotateY(0deg) scale(0.7)'
};
node.addEventListener('webkitTransitionEnd',onEnd);
}
ui.click.scene2=restoreScene;
var createScene=function(name){
var scene=lib.tafang.map[name];
var node=ui.create.div('.scene',clickScene);
node.style.transform='perspective(1600px) rotateY(0deg) scale(0.7)';
node.name=name;
node.bgnode=ui.create.div('.background.player',node);
node.info=scene;
ui.create.div('.avatar.menu',node.bgnode);
node.namenode=ui.create.div('.name',node,(scene.name));
if(lib.storage.map.contains(name)){
if(lib.storage.newmap.contains(name)){
node.classList.add('glow3');
}
node.namenode.dataset.nature='soilm';
}
else{
node.classList.add('unselectable');
node.namenode.innerHTML=('未开启');
}
var content=ui.create.div('.menu',node);
lib.setScroll(content);
node.content=content;
sceneview.appendChild(node);
return node;
}
event.custom.add.window=function(){
var current=document.querySelector('.flipped.scene');
if(current){
restoreScene(current);
}
}
for(var i in lib.tafang.map){
createScene(i);
}
ui.window.appendChild(sceneview.animate('start'));
game.pause();
});
},
}, },
skill:{ skill:{
chess_mech_weixingxianjing_skill:{ chess_mech_weixingxianjing_skill:{
@ -979,7 +1132,10 @@ mode.tafang={
var target=list.randomGet(); var target=list.randomGet();
player.line(target,'fire'); player.line(target,'fire');
target.damage('fire','nosource'); target.damage('fire','nosource');
target.moveUp(); var he=target.get('he');
if(he.length){
target.discard(he.randomGet());
}
} }
} }
}, },
@ -1009,7 +1165,7 @@ mode.tafang={
chess_mech_jiguanren_skill_info:'每一轮弃置3格以内的所有敌方角色各1~2张牌', chess_mech_jiguanren_skill_info:'每一轮弃置3格以内的所有敌方角色各1~2张牌',
chess_mech_gongchengche:'攻城车', chess_mech_gongchengche:'攻城车',
chess_mech_gongchengche_skill:'攻坚', chess_mech_gongchengche_skill:'攻坚',
chess_mech_gongchengche_skill_info:'每一轮对距离2格以内的一名随机敌方角色造成1点火焰伤害将目标击退1格', chess_mech_gongchengche_skill_info:'每一轮对距离2格以内的一名随机敌方角色造成1点火焰伤害随机弃置其一张牌',
chess_mech_guangmingquan:'光明泉', chess_mech_guangmingquan:'光明泉',
chess_mech_guangmingquan_skill:'圣疗', chess_mech_guangmingquan_skill:'圣疗',
chess_mech_guangmingquan_skill_info:'每一轮令距离2格以内的所有友方角色各回复一点体力', chess_mech_guangmingquan_skill_info:'每一轮令距离2格以内的所有友方角色各回复一点体力',

3
mode/versus.js Executable file → Normal file
View File

@ -6,6 +6,9 @@ mode.versus={
if(_status.brawl&&_status.brawl.submode){ if(_status.brawl&&_status.brawl.submode){
_status.mode=_status.brawl.submode; _status.mode=_status.brawl.submode;
} }
if(lib.storage.test){
_status.mode='standard';
}
"step 1" "step 1"
var playback=localStorage.getItem(lib.configprefix+'playback'); var playback=localStorage.getItem(lib.configprefix+'playback');
if(playback){ if(playback){

0
theme/music/grid.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 250 B

After

Width:  |  Height:  |  Size: 250 B

7
theme/music/style.css Executable file → Normal file
View File

@ -5,7 +5,7 @@ html{
} }
#system>div>div,#mebg,.control,.player,.card,.avatar,.avatar2,.button,#window>.dialog.popped, #system>div>div,#mebg,.control,.player,.card,.avatar,.avatar2,.button,#window>.dialog.popped,
.player.unseen .equips:not(*:empty),.menu,#splash>div, .player.unseen .equips:not(*:empty),.menu,#splash>div,
#arena.mobile:not(.chess) .player[data-position='0'] .equips,.playerbg{ #arena.mobile:not(.chess) .player[data-position='0'] .equips,.playerbg,.menubg,.mebg{
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.2) 0 3px 10px; box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.2) 0 3px 10px;
background-image: linear-gradient(#4b4b4b, #464646); background-image: linear-gradient(#4b4b4b, #464646);
border-radius: 8px; border-radius: 8px;
@ -70,7 +70,10 @@ body[data-background_color_music='blue'] #arena.mobile:not(.chess) .player[data-
.card{ .card{
color:white; color:white;
} }
.card:not(*:empty){ .cardbg{
background-size: initial !important;
}
.card:not(*:empty),.cardbg{
color:rgb(77, 60, 51); color:rgb(77, 60, 51);
text-shadow:none; text-shadow:none;
background: url('wood3.png'); background: url('wood3.png');

0
theme/music/wood.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

0
theme/music/wood3.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

0
theme/simple/card.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

0
theme/simple/grid.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 250 B

After

Width:  |  Height:  |  Size: 250 B

10
theme/simple/style.css Executable file → Normal file
View File

@ -16,7 +16,7 @@ body{
} }
#system>div>div,#mebg,.control,.player,.card,.avatar,.avatar2,.button,#window>.dialog.popped, #system>div>div,#mebg,.control,.player,.card,.avatar,.avatar2,.button,#window>.dialog.popped,
.player.unseen .equips:not(*:empty),.menu,.menubutton,#splash>div, .player.unseen .equips:not(*:empty),.menu,.menubutton,#splash>div,
#arena.mobile:not(.chess) .player[data-position='0'] .equips,.playerbg{ #arena.mobile:not(.chess) .player[data-position='0'] .equips,.playerbg,.menubg,.mebg{
box-shadow: rgba(0, 0, 0, 0.4) 0 0 0 1px, rgba(0, 0, 0, 0.2) 0 3px 10px; box-shadow: rgba(0, 0, 0, 0.4) 0 0 0 1px, rgba(0, 0, 0, 0.2) 0 3px 10px;
background-image: linear-gradient(rgba(0,0,0,0.4), rgba(0,0,0,0.4)); background-image: linear-gradient(rgba(0,0,0,0.4), rgba(0,0,0,0.4));
border-radius: 8px; border-radius: 8px;
@ -72,11 +72,13 @@ body{
#arena:not(.chess) .player[data-position='0']>.equips>.equip5 { #arena:not(.chess) .player[data-position='0']>.equips>.equip5 {
border-radius: 4px; border-radius: 4px;
} }
.cardbg{
background-size: 100% 100% !important;
}
.card{ .card{
color:white; color:white;
} }
.card:not(*:empty){ .card:not(*:empty),.cardbg{
color:rgb(77, 60, 51); color:rgb(77, 60, 51);
text-shadow:none; text-shadow:none;
background: url('card.png'); background: url('card.png');
@ -116,7 +118,7 @@ body{
} }
.menupaused{ .menupaused{
opacity: 0.3; opacity: 0.3 !important;
} }
.fire{ .fire{

0
theme/simple/wood.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

0
theme/simple/wood3.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

0
theme/woodden/grid.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 250 B

After

Width:  |  Height:  |  Size: 250 B

27
theme/woodden/style.css Executable file → Normal file
View File

@ -4,7 +4,7 @@ html{
background: url('grid.png'),linear-gradient(#6c7989, #434b55) fixed; background: url('grid.png'),linear-gradient(#6c7989, #434b55) fixed;
} }
#system>div>div,#mebg,.control,.player,.card,.avatar,.avatar2,.button,.dialog>.bar,.menu,#splash>div, #system>div>div,#mebg,.control,.player,.card,.avatar,.avatar2,.button,.dialog>.bar,.menu,#splash>div,
#arena.mobile:not(.chess) .player[data-position='0'] .equips,.playerbg{ #arena.mobile:not(.chess) .player[data-position='0'] .equips,.playerbg,.menubg,.mebg{
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px; box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px;
border-radius: 8px; border-radius: 8px;
} }
@ -32,11 +32,14 @@ html{
.menu.main>.menu-tab>.disabled{ .menu.main>.menu-tab>.disabled{
color: rgba(77, 60, 51,0.5); color: rgba(77, 60, 51,0.5);
} }
#window>.dialog.popped,.menu{ #window>.dialog.popped,.menu,.menubg{
background:url('wood2.png'); background:url('wood2.png');
color:rgba(77, 60, 51,0.8); color:rgba(77, 60, 51,0.8);
text-shadow:none; text-shadow:none;
} }
.cardbg{
background-size: initial !important;
}
#splash>div{ #splash>div{
background:url('wood2.png'); background:url('wood2.png');
} }
@ -62,13 +65,23 @@ html{
.popup.thunder{ .popup.thunder{
color: rgb(117,186,255); color: rgb(117,186,255);
} }
.control .thundertext{ .control .thundertext,.thundertext.thunderauto,
.dialog.popped .bluetext{
color: rgba(29, 63, 137, 1); color: rgba(29, 63, 137, 1);
} }
.control .controlthundertext{ .control .controlthundertext{
color: rgb(62, 41, 30); color: rgb(62, 41, 30);
} }
.player,.card,.dialog>.bar, .dialog.popped .yellowtext{
color:#631515;
}
.dialog.popped .greentext{
color:#00312d;
}
.legendtext.legendauto{
color: rgba(106, 27, 154, 1);
}
.player,.card,.dialog>.bar,.cardbg,
#arena.mobile:not(.chess) .player[data-position='0'] .equips,.playerbg{ #arena.mobile:not(.chess) .player[data-position='0'] .equips,.playerbg{
background: url('wood.jpg'); background: url('wood.jpg');
} }
@ -102,7 +115,7 @@ html{
text-shadow:none; text-shadow:none;
border-radius:4px; border-radius:4px;
} }
#roundmenu>div{ #roundmenu>div:not(.clock){
background:rgba(77, 60, 51,0.8); background:rgba(77, 60, 51,0.8);
box-shadow:none; box-shadow:none;
} }
@ -112,7 +125,7 @@ html{
.judges>div,.marks>div{ .judges>div,.marks>div{
border-radius:4px; border-radius:4px;
} }
#mebg,.menubutton,.menubutton.highlight,.menubutton.active{ #mebg,.menubutton,.menubutton.highlight,.menubutton.active,.mebg{
background: url('wood.png'); background: url('wood.png');
} }
.menubutton.large{ .menubutton.large{
@ -153,7 +166,7 @@ html{
.card.equip4>.range{ .card.equip4>.range{
text-shadow: white 0 0 2px; text-shadow: white 0 0 2px;
} }
.card{ .card,.menubg,.cardbg,.button.character.cardbg{
color:rgb(77, 60, 51); color:rgb(77, 60, 51);
text-shadow:none; text-shadow:none;
} }

0
theme/woodden/wood.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

0
theme/woodden/wood.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

0
theme/woodden/wood2.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

0
theme/woodden/wood2.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB