From 53b6d1cd4ace515f9ed5baf9d751f9d7e8f93d6e Mon Sep 17 00:00:00 2001
From: libccy
Date: Sun, 28 Aug 2016 08:30:25 +0800
Subject: [PATCH] 1.9.0
---
card/compensate.js | 0
card/extra.js | 4 +-
card/guozhan.js | 0
card/sp.js | 16 +-
card/standard.js | 11 +-
card/swd.js | 31 +-
card/zhenfa.js | 0
character/boss.js | 8 +
character/diy.js | 3 +
character/extra.js | 0
character/gujian.js | 0
character/guozhan.js | 0
character/hearth.js | 24 +-
character/jiange.js | 0
character/ow.js | 268 ++++++++++-
character/refresh.js | 0
character/sp.js | 4 +
character/standard.js | 6 +-
character/swd.js | 146 +++---
character/xiake.js | 0
character/xianjian.js | 16 +-
character/yijiang.js | 3 +
character/yxs.js | 0
character/zhuogui.js | 0
extension/character/extension.js | 0
extension/soldier/extension.js | 0
extension/wuxing/extension.js | 0
game/config.js | 0
game/game.js | 745 ++++++++++++++++++++++++------
game/jszip.js | 0
game/package.js | 0
game/source.js | 1 +
game/update.js | 7 +-
layout/default/layout.css | 285 +++++++++++-
layout/mobile/layout.css | 42 +-
layout/mode/boss.css | 0
layout/mode/chess.css | 0
layout/mode/stone.css | 0
layout/mode/tafang.css | 229 +++++++++
layout/newlayout/global.css | 3 +
layout/newlayout/layout.css | 0
layout/phone/layout.css | 9 +-
mode/boss.js | 0
mode/brawl.js | 480 +++++++++++++++----
mode/chess.js | 3 +
mode/guozhan.js | 16 +-
mode/identity.js | 68 ++-
mode/stone.js | 11 +-
mode/tafang.js | 206 ++++++++-
mode/versus.js | 3 +
theme/music/grid.png | Bin
theme/music/style.css | 7 +-
theme/music/wood.png | Bin
theme/music/wood3.png | Bin
theme/simple/card.png | Bin
theme/simple/grid.png | Bin
theme/simple/style.css | 10 +-
theme/simple/wood.png | Bin
theme/simple/wood3.png | Bin
theme/style/cardback/feicheng.css | 16 +-
theme/style/cardback/liusha.css | 16 +-
theme/woodden/grid.png | Bin
theme/woodden/style.css | 27 +-
theme/woodden/wood.jpg | Bin
theme/woodden/wood.png | Bin
theme/woodden/wood2.jpg | Bin
theme/woodden/wood2.png | Bin
67 files changed, 2220 insertions(+), 504 deletions(-)
mode change 100755 => 100644 card/compensate.js
mode change 100755 => 100644 card/extra.js
mode change 100755 => 100644 card/guozhan.js
mode change 100755 => 100644 card/standard.js
mode change 100755 => 100644 card/swd.js
mode change 100755 => 100644 card/zhenfa.js
mode change 100755 => 100644 character/diy.js
mode change 100755 => 100644 character/extra.js
mode change 100755 => 100644 character/gujian.js
mode change 100755 => 100644 character/guozhan.js
mode change 100755 => 100644 character/hearth.js
mode change 100755 => 100644 character/jiange.js
mode change 100755 => 100644 character/refresh.js
mode change 100755 => 100644 character/sp.js
mode change 100755 => 100644 character/standard.js
mode change 100755 => 100644 character/swd.js
mode change 100755 => 100644 character/xiake.js
mode change 100755 => 100644 character/xianjian.js
mode change 100755 => 100644 character/yijiang.js
mode change 100755 => 100644 character/yxs.js
mode change 100755 => 100644 character/zhuogui.js
mode change 100755 => 100644 extension/character/extension.js
mode change 100755 => 100644 extension/soldier/extension.js
mode change 100755 => 100644 extension/wuxing/extension.js
mode change 100755 => 100644 game/config.js
mode change 100755 => 100644 game/game.js
mode change 100755 => 100644 game/jszip.js
mode change 100755 => 100644 game/package.js
mode change 100755 => 100644 layout/default/layout.css
mode change 100755 => 100644 layout/mode/boss.css
mode change 100755 => 100644 layout/mode/chess.css
mode change 100755 => 100644 layout/mode/stone.css
create mode 100644 layout/mode/tafang.css
mode change 100755 => 100644 layout/newlayout/layout.css
mode change 100755 => 100644 mode/boss.js
mode change 100755 => 100644 mode/chess.js
mode change 100755 => 100644 mode/guozhan.js
mode change 100755 => 100644 mode/identity.js
mode change 100755 => 100644 mode/stone.js
mode change 100755 => 100644 mode/versus.js
mode change 100755 => 100644 theme/music/grid.png
mode change 100755 => 100644 theme/music/style.css
mode change 100755 => 100644 theme/music/wood.png
mode change 100755 => 100644 theme/music/wood3.png
mode change 100755 => 100644 theme/simple/card.png
mode change 100755 => 100644 theme/simple/grid.png
mode change 100755 => 100644 theme/simple/style.css
mode change 100755 => 100644 theme/simple/wood.png
mode change 100755 => 100644 theme/simple/wood3.png
mode change 100755 => 100644 theme/woodden/grid.png
mode change 100755 => 100644 theme/woodden/style.css
mode change 100755 => 100644 theme/woodden/wood.jpg
mode change 100755 => 100644 theme/woodden/wood.png
mode change 100755 => 100644 theme/woodden/wood2.jpg
mode change 100755 => 100644 theme/woodden/wood2.png
diff --git a/card/compensate.js b/card/compensate.js
old mode 100755
new mode 100644
diff --git a/card/extra.js b/card/extra.js
old mode 100755
new mode 100644
index 0efabbf04..dda6cdd2e
--- a/card/extra.js
+++ b/card/extra.js
@@ -7,6 +7,7 @@ card.extra={
type:"basic",
enable:true,
lianheng:true,
+ logv:false,
savable:function(card,player,dying){
return dying==player;
},
@@ -225,7 +226,7 @@ card.extra={
target:function(player,target){
if(target.isLinked()) 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;
for(var i=0;i0;
},
@@ -2775,11 +2785,11 @@ card.swd={
mujiaren_skill:{
enable:'phaseUse',
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){
- return 10-ai.get.value(card);
+ return 5-ai.get.value(card);
},
viewAs:{name:'jiguanshu'}
},
@@ -3002,7 +3012,7 @@ card.swd={
},
ai:{
order:function(card,player){
- if(player.num('h',{type:'hslingjian'})) return 10;
+ if(player.num('h',{type:'hslingjian'})) return 8.5;
return 1;
},
result:{
@@ -3128,15 +3138,14 @@ card.swd={
return att<=0;
},
filter:function(event,player){
- return !event.target.hasSkill('fengxueren2')&&!event.target.isTurnedOver();
+ return !event.target.isTurnedOver();
},
content:function(){
trigger.unhurt=true;
trigger.target.turnOver();
- trigger.target.addTempSkill('fengxueren2',{player:'phaseBegin'});
+ trigger.target.draw();
}
},
- fengxueren2:{},
chilongya:{
trigger:{source:'damageBegin'},
forced:true,
@@ -3543,6 +3552,7 @@ card.swd={
return att<=0;
}
if(event.target.hp==1) return att>0;
+ if(event.target.hujia>0) return att<0;
return false;
},
content:function(){
@@ -3564,6 +3574,7 @@ card.swd={
return (event.card&&(event.card.name=='sha'));
},
forced:true,
+ temp:true,
content:function(){
player.draw(2);
player.removeSkill('tianxianjiu');
@@ -3705,8 +3716,8 @@ card.swd={
lingjiandai_info:'出牌阶段对距离1以内的一名角色使用,目标获得3张随机零件',
mujiaren:'木甲人',
mujiaren_skill:'巧匠',
- mujiaren_skill_info:'你可以将零件牌当作机关鼠使用',
- mujiaren_info:'出牌阶段对距离1以内的一名角色使用,目标摸一张牌并获得技能巧匠(你可以将零件牌当作机关鼠使用)',
+ mujiaren_skill_info:'你可以将锦囊牌当作机关鼠使用',
+ mujiaren_info:'出牌阶段对距离1以内的一名角色使用,目标摸一张牌并获得技能巧匠(你可以将锦囊牌当作机关鼠使用)',
hslingjian:'零件',
hslingjian_xuanfengzhiren:'旋风之刃',
hslingjian_xuanfengzhiren_info:'可用于煅造装备;随机弃置一名角色的一张牌',
@@ -3764,7 +3775,7 @@ card.swd={
baihupifeng_info:'回合结束阶段,若你的体力值是全场最小的之一,你可以回复一点体力',
fengxueren:'封雪刃',
fengxueren_bg:'雪',
- fengxueren_info:'你使用杀击中目标后,若目标武将牌正面朝上,你可以防止伤害,然后令目标翻面,若如此做,该角色在下一回合开始前不受封雪刃效果影响',
+ fengxueren_info:'你使用杀击中目标后,若目标武将牌正面朝上,你可以防止伤害,然后令目标摸一张牌并翻面',
chilongya:'赤龙牙',
chilongya_info:'锁定技,你的火属性伤害+1',
daihuofenglun:'带火风轮',
diff --git a/card/zhenfa.js b/card/zhenfa.js
old mode 100755
new mode 100644
diff --git a/character/boss.js b/character/boss.js
index 3bbec12c0..641b4194f 100644
--- a/character/boss.js
+++ b/character/boss.js
@@ -1765,6 +1765,10 @@ character.boss={
if(lib.config.animation&&!lib.config.low_performance){
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:{
@@ -1818,13 +1822,17 @@ character.boss={
global:'boss_shanbeng2',
trigger:{player:'dieBegin'},
forced:true,
+ logv:false,
content:function(){
+ var targets=[];
for(var i=0;i1;
},
+ check:function(){
+ return false;
+ },
content:function(){
'step 0'
var str='';
@@ -3243,7 +3253,6 @@ character.hearth={
};
'step 1'
if(result.control=='调换顺序'){
- player.logSkill('xianzhi');
var card=ui.cardPile.firstChild;
ui.cardPile.removeChild(card);
ui.cardPile.insertBefore(card,ui.cardPile.firstChild.nextSibling);
@@ -3363,6 +3372,9 @@ character.hearth={
trigger.player.storage.mengun2=trigger.cards[0];
game.addVideo('storage',player,['mengun2',get.cardInfo(trigger.cards[0]),'card']);
trigger.player.addTempSkill('mengun2','phaseEnd');
+ },
+ ai:{
+ expose:0.2
}
},
mengun2:{
@@ -3852,7 +3864,7 @@ character.hearth={
trigger:{source:'damageBegin'},
forced:true,
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(){
trigger.num++;
@@ -3879,7 +3891,7 @@ character.hearth={
trigger:{source:'damageBegin'},
forced:true,
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(){
trigger.num++;
@@ -4689,7 +4701,7 @@ character.hearth={
guozai:'过载',
guozai2:'过载',
guozai2_bg:'载',
- guozai_info:'出牌阶段限两次,你可将手牌补至四张,并于此阶段结束时弃置等量的牌',
+ guozai_info:'出牌阶段限一次,你可将手牌补至四张,并于此阶段结束时弃置等量的牌',
guozaix:'重载',
guozaix2:'重载',
guozaix2_bg:'载',
diff --git a/character/jiange.js b/character/jiange.js
old mode 100755
new mode 100644
diff --git a/character/ow.js b/character/ow.js
index 8192d032d..3989cd907 100644
--- a/character/ow.js
+++ b/character/ow.js
@@ -17,15 +17,243 @@ character.ow={
ow_maikelei:['male','shu',4,['shanguang','tiandan','shenqiang']],
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_banzang:['male','shu',4,[]],
- // ow_laiyinhate:['male','shu',4,[]],
+ ow_banzang:['male','qun',4,['fengshi','yinbo']],
+ ow_laiyinhate:['male','qun',4,['lzhongjia','mengji']],
// ow_luba:['male','shu',4,[]],
// ow_wensidun:['male','shu',4,[]],
- // ow_zhaliya:['female','shu',4,[]],
+ // ow_zhaliya:['female','shu',4,['pingzhang','lichang']],
},
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;i2){
+ 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()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;i2&&game.players[i].num('h')==1){
@@ -467,7 +468,7 @@ character.swd={
"step 1"
if(result.bool&&result.targets[0]){
var target=result.targets[0];
- player.logSkill('guozao',target);
+ player.logSkill('guozao',target,'green',true);
var cards=target.get('h');
target.lose(cards)._triggered=null;
game.log(target,'弃置了',cards,',并获得三张牌');
@@ -1818,7 +1819,7 @@ character.swd={
}
var dialog=ui.create.dialog('极略:选择一张基本牌或锦囊牌牌使用',cards);
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');
return (type=='trick'||type=='basic')&&trigger.filterCard(button.link,player,trigger);
};
@@ -2417,12 +2418,12 @@ character.swd={
dangping2:{},
duishi:{
enable:'phaseUse',
- usable:2,
+ usable:1,
filter:function(event,player){
- return player.num('h')>0&&!player.hasSkill('duishi3');
+ return player.num('h')>0;
},
filterTarget:function(card,player,target){
- return player!=target&&target.num('h')&&!target.hasSkill('duishi2');
+ return player!=target&&target.num('h')>0;
},
filterCard:true,
check:function(card){return 8-ai.get.value(card)},
@@ -2430,22 +2431,19 @@ character.swd={
"step 0"
var suit=get.suit(cards[0]);
target.chooseToDiscard({suit:suit},'h','弃置一张'+get.translation(suit)+
- '牌,或令'+get.translation(player)+'获得你的一张牌').ai=function(card){
- if(ai.get.attitude(target,player)>0){
- return -1;
- }
- return 11-ai.get.value(card);
+ '牌并令'+get.translation(player)+'摸一张牌,或随机弃置两张牌').ai=function(card){
+ return 8-ai.get.value(card);
}
"step 1"
- if(!result.bool){
- player.addTempSkill('duishi3','phaseAfter');
- if(target.num('he')){
- player.gainPlayerCard(target,'he',true,ai.get.buttonValue);
- }
+ if(result.bool){
+ player.draw();
}
else{
- target.addTempSkill('duishi2','phaseAfter');
+ var he=target.get('he');
+ if(he.length){
+ target.discard(he.randomGets(2));
+ }
}
},
ai:{
@@ -3398,30 +3396,25 @@ character.swd={
ui.window.hide();
}
},
- intro:{
- content:function(storage,player){
- if(true){
- return player.storage.kunlunjing3;
- }
- }
- }
},
kunlunjing1:{
- trigger:{player:['phaseBefore']},
+ trigger:{player:'phaseBegin'},
+ priority:10,
filter:function(event,player){
- if(player.storage.kunlunjing2) return false;
- if(player.storage.kunlunjing) return true;
- return false;
+ if(!player.storage.kunlunjing) return false;
+ return player.hp0){
num+=num2;
}
@@ -3430,15 +3423,12 @@ character.swd={
}
}
}
- // return num>2;
- if(player.hp==2) return num>4;
- return num>Math.min(3,game.players.length);
+ return num>Math.min(2,game.players.length/2);
},
content:function(){
"step 0"
game.delay(0.5);
"step 1"
- event.player.storage.kunlunjing2=true;
ui.window.style.transition='all 0.5s';
ui.window.classList.add('zoomout3');
ui.window.delete();
@@ -3470,19 +3460,31 @@ character.swd={
player=storage[i].player;
for(j=0;j1){
- this.ai.shown=1;
+ if(this.ai.shown>0.95){
+ this.ai.shown=0.95;
}
}
+ return this;
},
equip:function(card){
var next=game.createEvent('equip');
@@ -10234,7 +10322,7 @@
if(typeof proceed=='function') proceed();
else if(_status.paused&&!noresume) game.resume();
},
- logSkill:function(name,targets,nature){
+ logSkill:function(name,targets,nature,logv){
if(get.itemtype(targets)=='player') targets=[targets];
var nopop=false;
if(Array.isArray(name)){
@@ -10260,7 +10348,8 @@
}
this.line(targets,nature);
}
- if(lib.skill[name]&&lib.skill[name].ai&&lib.skill[name].ai.expose!=undefined&&this.logAi){
+ var info=lib.skill[name];
+ if(info&&info.ai&&info.ai.expose!=undefined&&this.logAi){
this.logAi(lib.skill[name].ai.expose);
}
if(this.checkShow){
@@ -10270,6 +10359,12 @@
if(game.chess){
this.chessFocus();
}
+ if(logv===true){
+ game.logv(this,name,targets,null,true);
+ }
+ else if(info.logv!==false){
+ game.logv(this,name,targets);
+ }
},
unprompt:function(){
if(this.node.prompt){
@@ -10986,6 +11081,53 @@
}
},time)
},
+ getEnemies:function(func){
+ var player=this;
+ var targets;
+ var mode=get.mode();
+ if(mode=='identity'){
+ var num=get.population('fan');
+ switch(player.identity){
+ case 'zhu':case 'zhong':case 'mingzhong':targets=game.filterPlayer(function(target){
+ if(func&&!func(target)) return false;
+ if(num>=3) return target.identity=='fan';
+ return target.identity=='nei'||target.identity=='fan';
+ });break;
+ case 'nei':targets=game.filterPlayer(function(target){
+ if(func&&!func(target)) return false;
+ if(num>=3) return target.identity=='fan';
+ return target.identity=='zhong'||target.identity=='mingzhong'||target.identity=='fan';
+ });break;
+ case 'fan':targets=game.filterPlayer(function(target){
+ if(func&&!func(target)) return false;
+ return target.identity!='fan';
+ });break;
+ }
+ }
+ else if(mode=='guozhan'){
+ if(player.identity=='ye'){
+ targets=game.filterPlayer(function(target){
+ if(func&&!func(target)) return false;
+ return true;
+ });
+ }
+ else{
+ var group=lib.character[player.name1][1];
+ targets=game.filterPlayer(function(target){
+ if(func&&!func(target)) return false;
+ return lib.character[target.name1][1]!=group;
+ });
+ }
+ }
+ else{
+ targets=game.filterPlayer(function(target){
+ if(func&&!func(target)) return false;
+ return target.side!=player.side;
+ });
+ }
+ targets.remove(player);
+ return targets;
+ },
isEnemyOf:function(){
return !this.isFriendOf.apply(this,arguments);
},
@@ -12843,10 +12985,10 @@
trigger:function(name){
if(_status.video) return;
if(name=='gameStart'){
- _status.gameStarted=true;
if(_status.brawl&&_status.brawl.gameStart){
_status.brawl.gameStart();
}
+ game.showHistory();
}
if(!lib.hookmap[name]) return;
var event=this;
@@ -12936,7 +13078,7 @@
triggerx:function(name){
if(_status.video) return;
if(name=='gameStart'){
- _status.gameStarted=true;
+ game.showHistory();
}
var event=this;
var i,j,iwhile,next,add;
@@ -13839,12 +13981,14 @@
},
_chongzhu:{
enable:'phaseUse',
+ logv:false,
prompt:'将要重铸的牌置于弃牌堆并摸一张牌',
filter:function(event,player){
- if(player.isMin()&&lib.config.mode=='stone') return false;
- return (player.get('h',function(card){
- return get.info(card).chongzhu;
- }).length);
+ return (player.num('h',function(card){
+ var info=get.info(card);
+ if(info.type=='stonecharacter'&&lib.config.mode=='stone') return !player.isMin()&&!player.canAddFellow();
+ return info.chongzhu;
+ })>0);
},
filterCard:function(card){
return get.info(card).chongzhu;
@@ -13853,9 +13997,9 @@
player.$throw(cards,1000);
},
check:function(card){
- if(get.type(card)=='stonecharacter'&&_status.event.player.num('h',{type:'stonecharacter'})<=1){
- return 0;
- }
+ // if(get.type(card)=='stonecharacter'&&_status.event.player.num('h',{type:'stonecharacter'})<=1){
+ // return 0;
+ // }
return 1;
},
discard:false,
@@ -14598,7 +14742,7 @@
}
game.loop();
game.send('reinited');
- _status.gameStarted=true;
+ game.showHistory();
if(!observe&&game.me&&game.me.isDead()){
ui.exit=ui.create.control('退出联机',ui.click.exit);
}
@@ -14676,7 +14820,7 @@
if(lib.config.show_cardpile){
ui.cardPileButton.style.display='';
}
- _status.gameStarted=true;
+ game.showHistory();
},
updateWaiting:function(map){
if(!game.connectPlayers) return;
@@ -14726,6 +14870,15 @@
var game={
online:false,
onlineID:null,
+ showHistory:function(){
+ _status.gameStarted=true;
+ if(lib.config.show_history=='left'){
+ ui.window.classList.add('leftbar');
+ }
+ else if(lib.config.show_history=='right'){
+ ui.window.classList.add('rightbar');
+ }
+ },
createBackground:function(src,blur){
var current=document.body.querySelector('.background.upper');
if(current){
@@ -15721,9 +15874,6 @@
}
},
multiDownload:function(list,onsuccess,onerror,onfinish,process,dev){
- if(lib.updateURL[lib.updateURL.length-1]!='/'){
- lib.updateURL+='/';
- }
list=list.slice(0);
var download=function(){
if(list.length){
@@ -15765,6 +15915,9 @@
ui.system.hide();
ui.arena.style.display='none';
ui.arena.hide();
+ ui.window.classList.remove('leftbar');
+ ui.window.classList.remove('rightbar');
+ ui.historybar.style.display='none';
_status.event=next;
_status.paused=false;
_status.paused2=false;
@@ -18662,7 +18815,7 @@
ui.touchlines.shift().delete();
}
}
- if(_status.canvasChanged){
+ if(_status.canvasChanged||!lib.config.low_performance){
ui.canvas.width=ui.arena.offsetWidth;
ui.canvas.height=ui.arena.offsetHeight;
delete _status.canvasChanged;
@@ -19281,6 +19434,24 @@
game.broadcast(function(str){
game.log(str);
},str);
+ if(!_status.video&&!game.online){
+ var logvid=_status.event.getParent().logvid;
+ if(!logvid){
+ logvid=_status.event.getParent(2);
+ if(logvid){
+ logvid=logvid.logvid;
+ }
+ }
+ if(!logvid){
+ logvid=_status.event.getParent(3);
+ if(logvid){
+ logvid=logvid.logvid;
+ }
+ }
+ if(logvid){
+ game.logv(logvid,''+str+'
');
+ }
+ }
if(lib.config.title) document.title=str;
if(lib.config.show_log!='off'&&!game.chess){
var nodeentry=node.cloneNode(true);
@@ -19309,6 +19480,147 @@
}
}
},
+ logv:function(player,card,targets,event,forced,logvid){
+ var node=ui.create.div();
+ logvid=logvid||get.id();
+ if(!player){
+ player=_status.event.getParent().logvid;
+ if(!player) return;
+ }
+ game.broadcast(function(player,card,targets,event,forced,logvid){
+ game.logv(player,card,targets,event,forced,logvid);
+ },player,card,targets,event,forced,logvid);
+ if(typeof player=='string'){
+ for(var i=0;i0){
+ node.classList.add('nozoom');
+ }
+ ui.historybar.insertBefore(node,ui.historybar.firstChild);
+ if(ui.historybar.childElementCount>20){
+ ui.historybar.lastChild.remove();
+ }
+ if(lib.config.touchscreen){
+ node.listen(ui.click.intro);
+ }
+ else{
+ node.addEventListener('mouseenter',ui.click.intro);
+ }
+ node.logvid=logvid;
+ node.added=[];
+ if(!game.online){
+ event=event||_status.event;
+ event.logvid=node.logvid;
+ }
+ },
putDB:function(type,id,item,callback){
if(!lib.db) return item;
var put=lib.db.transaction([type],'readwrite').objectStore(type).put(item,id);
@@ -19978,6 +20290,7 @@
game.onresume2();
}
ui.arena.classList.remove('menupaused');
+ ui.historybar.classList.remove('menupaused');
ui.config2.classList.remove('pressdown2');
}
};
@@ -20156,6 +20469,7 @@
if(menuContainer.classList.contains('hidden')){
ui.config2.classList.add('pressdown2');
ui.arena.classList.add('menupaused');
+ ui.historybar.classList.add('menupaused');
menuContainer.classList.remove('hidden');
for(var i=0;i
';
li2.innerHTML='素材版本:'+(lib.config.asset_version||'无')+'';
- li3.innerHTML='更新源
';
- li3.querySelector('button').onclick=function(){
- lib.updateURL=this.previousSibling.value;
- localStorage.setItem('noname_update_url',lib.updateURL);
- }
var button1,button2,button3;
var span1,includeskin;
@@ -24784,7 +25092,8 @@
var goupdate=function(files,update){
if(game.download){
- var script=lib.init.js(dev?lib.devURL:lib.updateURL,'game/source',function(){
+ lib.version=update.version;
+ var script=lib.init.js(get.url('source'),'game/source',function(){
script.remove();
var updates=window.noname_source_list;
delete window.noname_source_list;
@@ -24854,7 +25163,7 @@
};
- var script=lib.init.js(dev?lib.devURL:lib.updateURL,'game/update',function(){
+ var script=lib.init.js(get.url('version'),'game/update',function(){
button1.disabled=false;
button1.innerHTML='检查游戏更新';
button3.disabled=false;
@@ -24865,30 +25174,17 @@
if(forcecheck===false){
if(update.version==lib.config.check_version){
return;
- }
- if(update.version.indexOf('beta')!=-1){
- return;
}
}
game.saveConfig('check_version',update.version);
- var bool;
- if(update.version.indexOf('beta')!=-1){
- bool=lib.config.debug;
- }
- else{
- bool=(update.version!=lib.version);
- }
- if(bool||dev){
+ if(update.version!=lib.version||lib.config.dev){
var files;
var version=lib.version;
- if(version.indexOf('beta')!=-1){
- version=version.slice(0,version.indexOf('beta'));
- }
if(update.files&&update.files[version]){
files=update.files.global.concat(update.files[version]);
}
var str;
- if(dev){
+ if(lib.config.dev){
str='开发版仅供测试使用,可能存在风险,是否确定更新?'
}
else{
@@ -24946,7 +25242,7 @@
else if(game.download){
button2.innerHTML='正在检查更新';
button2.disabled=true;
- var script=lib.init.js(lib.updateURL,'game/asset',function(){
+ var script=lib.init.js(get.url('source'),'game/asset',function(){
script.remove();
var updates=window.noname_asset_list;
delete window.noname_asset_list;
@@ -25032,7 +25328,7 @@
button3.onclick=function(){
game.checkForUpdate(null,true);
};
- if(lib.config.cheat){
+ if(false){
li1.lastChild.appendChild(button3);
}
@@ -25060,7 +25356,6 @@
ul.appendChild(li1);
ul.appendChild(li2);
- ul.appendChild(li3);
page.appendChild(ul);
}());
(function(){
@@ -25576,6 +25871,11 @@
});
ui.updateVideoMenu=function(){
+ var active=start.firstChild.querySelector('.active');
+ if(active){
+ active.classList.remove('active');
+ active.link.remove();
+ }
node.classList.add('active');
rightPane.appendChild(page);
playButton.style.display='';
@@ -26710,6 +27010,8 @@
else{
ui.arenalog.dataset.position=lib.config.show_log;
}
+ ui.historybar=ui.create.div('#historybar.shadowed',ui.window);
+ lib.setScroll(ui.historybar);
ui.roundmenu=ui.create.div('#roundmenu.roundarenabutton.menubutton.round',ui.arena);
ui.roundmenu._position=[180,210];
@@ -26719,6 +27021,21 @@
ui.create.div(ui.roundmenu);
ui.create.div(ui.roundmenu);
ui.create.div(ui.roundmenu);
+
+ ui.create.div(ui.roundmenu);
+ ui.create.div(ui.roundmenu);
+ ui.create.div(ui.roundmenu);
+ ui.create.div(ui.roundmenu);
+ ui.create.div(ui.roundmenu);
+ ui.create.div(ui.roundmenu);
+
+ ui.create.div(ui.roundmenu);
+ ui.create.div(ui.roundmenu);
+
+ if(lib.config.show_time2){
+ ui.roundmenu.classList.add('clock');
+ }
+
var resetround=function(e){
_status.draggingroundmenu=false;
ui.roundmenu.style.transform='';
@@ -26929,6 +27246,23 @@
ui.controls=[];
ui.style={};
+ ui.time=ui.create.div('#time',ui.window);
+ var timeInterval=function(){
+ var date=new Date();
+ var hours=date.getHours();
+ var minutes=date.getMinutes();
+ ui.roundmenu.childNodes[13].style.transform='rotate('+get.round((hours+minutes/60+9)*30,2)+'deg)';
+ ui.roundmenu.childNodes[12].style.transform='rotate('+(minutes+45)*6+'deg)';
+ if(minutes<10){
+ minutes='0'+minutes.toString();
+ }
+ ui.time.innerHTML=hours+':'+minutes;
+ };
+ _status.timeInterval=setInterval(timeInterval,30000);
+ timeInterval();
+ if(!lib.config.show_time){
+ ui.time.style.display='none';
+ }
ui.timer=ui.create.div('.skillbar.shadowed.playerbg.hidden');
ui.timer.id='timer';
@@ -27209,7 +27543,13 @@
intro:ui.create.div('.intro',node)
}
if(item.name.indexOf('unknown')==0){
- node.setBackground(item.name1,'character');
+ if(item.node&&item.node.name_seat){
+ node.classList.add('cardbg');
+ ui.create.div('.avatar_name',node,item.node.name_seat.innerHTML[0]+'号位');
+ }
+ else{
+ node.setBackground(item.name1,'character');
+ }
}
else{
node.setBackground(item.name,'character');
@@ -27349,7 +27689,7 @@
return;
}
if(num==undefined) num=lib.configOL.number;
- if(num==undefined) num=lib.config.mode_config[lib.config.mode].player_number;
+ if(num==undefined) num=get.playerNumber();
if(typeof num=='string'){
num=parseInt(num);
}
@@ -27456,7 +27796,7 @@
lib.card.list=_status.brawl.cardPile(lib.card.list);
}
if(_status.brawl.orderedPile){
- random=false;
+ random=true;
}
}
if(!random){
@@ -29354,7 +29694,8 @@
event.result.skill=event.skill;
event.result.card=get.info(event.skill).viewAs;
if(event.result.cards.length==1&&event.result.card){
- event.result.card.suit=event.result.cards[0].suit;
+ event.result.card.suit=event.result.cards[0].suit;
+ event.result.card.number=event.result.cards[0].number;
}
if(event.skillDialog&&get.objtype(event.skillDialog)=='div'){
event.skillDialog.close();
@@ -29422,9 +29763,20 @@
if(this.classList.contains('player')&&!this.name){
return;
}
+ if(this.parentNode==ui.historybar){
+ if(ui.historybar.style.zIndex=='22'){
+ if(_status.removePop){
+ if(_status.removePop(this)==false) return;
+ }
+ else{
+ return;
+ }
+ }
+ ui.historybar.style.zIndex=22;
+ }
var uiintro;
if(this.classList.contains('card')&&this.parentNode&&
- this.parentNode.classList.contains('equips')&&lib.config.touchscreen&&
+ this.parentNode.classList.contains('equips')&&lib.config.layout=='phone'&&
!lib.isMobileMe(this.parentNode.parentNode)){
uiintro=get.nodeintro(this.parentNode.parentNode,false,e);
}
@@ -29436,8 +29788,10 @@
var layer=ui.create.div('.poplayer',ui.window);
var clicklayer=function(e){
if(_status.touchpopping) return;
+ delete _status.removePop;
uiintro.delete();
this.remove();
+ ui.historybar.style.zIndex='';
if(!ui.arena.classList.contains('menupaused')) game.resume2();
e.stopPropagation();
return false;
@@ -29445,14 +29799,31 @@
layer.addEventListener(lib.config.touchscreen?'touchend':'click',clicklayer);
if(!lib.config.touchscreen) layer.oncontextmenu=clicklayer;
lib.placePoppedDialog(uiintro,e);
+ if(this.parentNode==ui.historybar){
+ if(lib.config.show_history=='right'){
+ uiintro.style.left=(ui.historybar.offsetLeft-230)+'px';
+ }
+ else{
+ uiintro.style.left=(ui.historybar.offsetLeft+60)+'px';
+ }
+ }
uiintro.style.zIndex=21;
-
var clickintro=function(){
if(_status.touchpopping) return;
+ delete _status.removePop;
layer.remove();
this.delete();
+ ui.historybar.style.zIndex='';
if(!ui.arena.classList.contains('menupaused')) game.resume2();
};
+ var currentpop=this;
+ _status.removePop=function(node){
+ if(node==currentpop) return false;
+ layer.remove();
+ uiintro.delete();
+ delete _status.removePop;
+ return true;
+ };
uiintro.addEventListener('mouseleave',clickintro);
uiintro.addEventListener('click',clickintro);
@@ -29561,7 +29932,9 @@
}
node.appendChild(ui.sidebar);
node.appendChild(ui.sidebar3);
+ ui.historybar.classList.add('paused');
ui.arena.classList.add('paused');
+ ui.time.hide();
if(game.onpause){
game.onpause();
}
@@ -29572,6 +29945,8 @@
if(_status.clicked) return;
this.delete();
ui.system.show();
+ ui.time.show();
+ ui.historybar.classList.remove('paused');
ui.arena.classList.remove('paused');
game.resume2();
e.stopPropagation();
@@ -30039,6 +30414,39 @@
return false;
},
},
+ url:function(tag){
+ if(lib.config.dev){
+ switch(tag){
+ case 'version':return lib.sourceURL.replace(/\$version\$/,'master');
+ case 'source':return lib.sourceURL.replace(/\$version\$/,'master');
+ default:return lib.updateURL.replace(/\$version\$/,'master');
+ }
+ }
+ else{
+ switch(tag){
+ case 'version':return lib.sourceURL.replace(/\$version\$/,'master');
+ case 'source':return lib.sourceURL.replace(/\$version\$/,'v'+lib.version);
+ default:return lib.updateURL.replace(/\$version\$/,'v'+lib.version);
+ }
+ }
+ },
+ round:function(num,f){
+ var round=1;
+ for(var i=0;i0){
+ str2=str.slice(0,str.lastIndexOf('_'));
+ if(lib.translate[str2+'_info']) return lib.translate[str2+'_info'];
+ }
+ str2=str.slice(0,str.length-2);
+ if(lib.translate[str2+'_info']) return lib.translate[str2+'_info'];
+ if(lib.skill[str]&&lib.skill[str].prompt) return lib.skill[str].prompt;
+ }
return lib.translate[str]||str;
},
cnNumber:function(num,two){
@@ -31441,8 +31866,12 @@
uiintro.addSmall(node.get('h'));
}
- var skills=node.get('s');
- var skills2=game.filterSkills(node.skills,node);
+ var skills=node.get('s',false,false);
+ skills=skills.slice(0);
+ var skills2=game.filterSkills(skills,node);
+ if(node==game.me&&node.hiddenSkills.length){
+ skills.addArray(node.hiddenSkills);
+ }
for(i=0;i【'+translation+'】
'+lib.translate[skills[i]+'_info']+'
');
}
+ else if(lib.skill[skills[i]].temp||!node.skills.contains(skills[i])){
+ uiintro.add('【'+translation+'】
'+lib.translate[skills[i]+'_info']+'
');
+ }
else{
uiintro.add('【'+translation+'】
'+lib.translate[skills[i]+'_info']+'
');
}
}
}
-
+ if(lib.config.layout=='phone'){
+ var storage=node.storage;
+ for(i in storage){
+ if(get.info(i)&&get.info(i).intro){
+ intro=get.info(i).intro;
+ if(node.get('s').concat(lib.skill.global).contains(i)==false&&!intro.show) continue;
+ var name=intro.name?intro.name:get.translation(i);
+ if(typeof name=='function'){
+ name=name(storage[i],node);
+ }
+ translation='『'+name.slice(0,2)+'』
';
+ var stint=get.storageintro(intro.content,storage[i],node);
+ if(stint){
+ translation+=stint+'
';
+ uiintro.add(translation);
+ }
+ }
+ }
+ }
+ if(!simple||lib.config.layout=='phone'){
+ var es=node.get('e');
+ for(var i=0;i'+es[i].outerHTML+'
'+lib.translate[es[i].name+'_info']+'
');
+ }
+ var js=node.get('j');
+ for(var i=0;i'+js[i].outerHTML+'
'+lib.translate[js[i].viewAs]+':'+lib.translate[js[i].viewAs+'_info']+'
');
+ }
+ else{
+ uiintro.add(''+js[i].outerHTML+'
'+lib.translate[js[i].name+'_info']+'
');
+ }
+ }
+ }
if(lib.config.show_favourite&&lib.character[node.name]&&get.mode()!='story'){
var addFavourite=ui.create.div('.text.center');
addFavourite.link=node.link;
@@ -31480,69 +31945,7 @@
uiintro.add(addFavourite);
}
- if(!simple||lib.config.touchscreen){
- if(lib.config.touchscreen){
- var storage=node.storage;
- for(i in storage){
- if(get.info(i)&&get.info(i).intro){
- intro=get.info(i).intro;
- if(node.get('s').concat(lib.skill.global).contains(i)==false&&!intro.show) continue;
- var name=intro.name?intro.name:get.translation(i);
- if(typeof name=='function'){
- name=name(storage[i],node);
- }
- translation='『'+name.slice(0,2)+'』
';
- var stint=get.storageintro(intro.content,storage[i],node);
- if(stint){
- translation+=stint+'
';
- uiintro.add(translation);
- }
- }
- }
- var es=node.get('e');
- var esnodes=[];
- for(var i=0;i'+lib.translate[this.link[2]+'_info']+'');
- uiintro.add(ui.create.div('.placeholder.slim'));
- if(evt){
- lib.placePoppedDialog(uiintro,evt);
- }
- });
- if(i('+get.translation(js[j])+')
'
- }
- else{
- uiintro.content.lastChild.childNodes[i].str=get.translation(js[j]);
- }
- }
- }
- }
- }
-
+ if(!simple||lib.config.layout=='phone'){
if(lib.falseitem){
uiintro.add(ui.create.div('.placeholder'));
var table,tr,td;
@@ -31573,7 +31976,6 @@
uiintro.content.appendChild(table);
}
-
if(lib.config.change_skin&&(
!node.classList.contains('unseen')||!node.classList.contains('unseen2')
)){
@@ -31808,6 +32210,43 @@
uiintro.add(''+_status.enemyRage+'/100
');
}
}
+ else if(node.parentNode==ui.historybar){
+ if(node.dead){
+ if(!node.source||node.source==node.player){
+ uiintro.add(''+get.translation(node.player)+'阵亡
');
+ uiintro.addSmall([node.player]);
+ }
+ else{
+ uiintro.add(''+get.translation(node.player)+'被'+get.translation(node.source)+'杀害
');
+ uiintro.addSmall([node.source]);
+ }
+ }
+ if(node.skill){
+ uiintro.add(''+get.translation(node.skill,'skill')+'
');
+ uiintro._place_text=uiintro.add(''+get.translation(node.skill,'info')+'
');
+ }
+ if(node.targets&&node.targets.length){
+ uiintro.add('目标
');
+ uiintro.addSmall(node.targets);
+ }
+ if(node.players&&node.players.length>1){
+ uiintro.add('使用者
');
+ uiintro.addSmall(node.players);
+ }
+ if(node.cards&&node.cards.length){
+ uiintro.add('卡牌
');
+ uiintro.addSmall(node.cards);
+ }
+ for(var i=0;i#arena{
+#window.blur_ui.shortcutpaused>#arena,
+#window.blur_ui.shortcutpaused>#historybar{
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;
}
#window.blur_ui #arena.thrownhighlight>.card.thrown:not(.thrownhighlight){
@@ -65,6 +69,18 @@ table{table-layout: fixed;}
-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{
width:100%;
height:100%;
@@ -283,8 +299,10 @@ table{table-layout: fixed;}
#arena{width:90%;height: 90%;top: calc(5% + 10px);left: 5%;}
#arena.right:not(.noleft){left: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.paused,#arena.unfocus{opacity: 0.3 !important;}
+#arena.paused,#arena.unfocus,#historybar.paused{opacity: 0.3 !important;}
#arena.paused2{opacity: 0.1 !important;}
#arena>.poplayer,
#window>.poplayer{
@@ -310,6 +328,98 @@ table{table-layout: fixed;}
#arena.playerfocus #chess>div:not(.playerfocus):not(.removing){
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{
transform: scale(1.1);
}
@@ -342,6 +452,7 @@ table{table-layout: fixed;}
border-radius:100%;*/
z-index: 7;
transition-property: opacity;
+ overflow: hidden;
}
#roundmenu>div{
width: 26px;
@@ -352,25 +463,153 @@ table{table-layout: fixed;}
border-radius: 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;
left:18px;
}
-#roundmenu>div:nth-of-type(odd){
+#roundmenu:not(.clock)>div:nth-of-type(odd){
width: 4px;
}
-#roundmenu>div:nth-of-type(1),
-#roundmenu>div:nth-of-type(2){
+#roundmenu:not(.clock)>div:nth-of-type(1),
+#roundmenu:not(.clock)>div:nth-of-type(2){
top:14px;
}
-#roundmenu>div:nth-of-type(3),
-#roundmenu>div:nth-of-type(4){
+#roundmenu:not(.clock)>div:nth-of-type(3),
+#roundmenu:not(.clock)>div:nth-of-type(4){
top:23px;
}
-#roundmenu>div:nth-of-type(5),
-#roundmenu>div:nth-of-type(6){
+#roundmenu:not(.clock)>div:nth-of-type(5),
+#roundmenu:not(.clock)>div:nth-of-type(6){
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{
@@ -732,6 +971,7 @@ margin-bottom: 5px;
.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;}
.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;}
.button.character,.button.card{width: 90px;height: 90px;position: relative;margin: 6px;}
.button.card{font-size: 14px;}
@@ -792,7 +1032,7 @@ margin-bottom: 5px;
-webkit-animation:replaceenemy 0.5s
}
.player>div{z-index: 2;}
-.player.dead,.player.likedead{z-index: 1;
+.player.dead,.player.likedead,.grayscale1{z-index: 1;
filter:grayscale(1);
-webkit-filter:grayscale(1);
}
@@ -1553,6 +1793,10 @@ span[data-color="unknownm"]{
text-align:center;
line-height: 18px;
}
+.cardbg,.button.character.cardbg{
+ color:rgb(74, 29, 1);
+ text-shadow: none;
+}
.card.fullskin>.name.long{
top:5px;
}
@@ -1729,6 +1973,9 @@ span[data-color="unknownm"]{
.browntext{
color: rgb(195,161,223);
}
+.legendtext{
+ color: rgb(233, 131, 255);
+}
#window>canvas.fun{
position: absolute;
left: 0;
@@ -1969,6 +2216,8 @@ div:hover>.wunature{
@-webkit-keyframes drawing2{0% {opacity: 0}50%{opacity: 1}100%{opacity: 0}}
@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;}}
@-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);}}
@@ -1993,13 +2242,3 @@ div:hover>.wunature{
@-webkit-keyframes flip{from{transform:perspective(1000px) rotateY(0);}to{transform:perspective(1000px) rotateY(360deg);}}
/*--------其它--------*/
::-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);}
-}
diff --git a/layout/mobile/layout.css b/layout/mobile/layout.css
index 3062668f3..9b52c0aab 100644
--- a/layout/mobile/layout.css
+++ b/layout/mobile/layout.css
@@ -7,6 +7,21 @@
height: calc(95% + 20px);
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{
width: calc(5000% / 47 - 240px);
left:calc(-150% / 47 + 120px);
@@ -29,6 +44,20 @@
border-radius:0 !important;
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{
height:120px;
padding:0;
@@ -226,16 +255,3 @@
left:0;
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);}
-}
diff --git a/layout/mode/boss.css b/layout/mode/boss.css
old mode 100755
new mode 100644
diff --git a/layout/mode/chess.css b/layout/mode/chess.css
old mode 100755
new mode 100644
diff --git a/layout/mode/stone.css b/layout/mode/stone.css
old mode 100755
new mode 100644
diff --git a/layout/mode/tafang.css b/layout/mode/tafang.css
new file mode 100644
index 000000000..a2cd79f95
--- /dev/null
+++ b/layout/mode/tafang.css
@@ -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;
+ }
+}
diff --git a/layout/newlayout/global.css b/layout/newlayout/global.css
index 7e2994e29..1c5426e8f 100644
--- a/layout/newlayout/global.css
+++ b/layout/newlayout/global.css
@@ -6,6 +6,9 @@
width:130px;
height:160px;
}
+#historybar{
+ height: calc(90% - 25px);
+}
#window>.player:not(.minskin)>.avatar,#arena.slim_player .player:not(.minskin):not(.fakeme) .avatar{
width: 136px;
height: 166px;
diff --git a/layout/newlayout/layout.css b/layout/newlayout/layout.css
old mode 100755
new mode 100644
diff --git a/layout/phone/layout.css b/layout/phone/layout.css
index c3a7a4bda..e0c140930 100644
--- a/layout/phone/layout.css
+++ b/layout/phone/layout.css
@@ -1,8 +1,6 @@
@import "../mobile/layout.css";
#arena{
- width: 94%;
height: calc(97% + 30px);
- left: 3%;
top:3%
}
#arena.mobile>#control{
@@ -17,6 +15,13 @@
font-size: 30px;
line-height: 34px;
}
+#historybar{
+ top:14px;
+ height: calc(100% - 150px);
+}
+#time{
+ visibility: hidden;
+}
#system{
z-index: 31 !important;
}
diff --git a/mode/boss.js b/mode/boss.js
old mode 100755
new mode 100644
diff --git a/mode/brawl.js b/mode/brawl.js
index 1de602a1c..70f4c778f 100644
--- a/mode/brawl.js
+++ b/mode/brawl.js
@@ -69,6 +69,7 @@ mode.brawl={
showcase.style.width='100%';
showcase.style.display='block'
showcase.action=info.showcase;
+ showcase.link=name;
if(info.fullshow){
node.nodes=[showcase];
showcase.style.height='100%';
@@ -130,7 +131,7 @@ mode.brawl={
start.style.fontSize='72px';
start.style.zIndex=3;
start.style.transition='all 0s';
- game.addScene=function(name){
+ game.addScene=function(name,clear){
var scene=lib.storage.scene[name];
var brawl={
name:name,
@@ -142,7 +143,9 @@ mode.brawl={
}
brawl.content.scene=scene;
lib.brawl['scene_'+name]=brawl;
- createNode('scene_'+name);
+ var node=createNode('scene_'+name);
+ if(clear) game.addSceneClear();
+ clickCapt.call(node);
};
game.removeScene=function(name){
delete lib.storage.scene[name];
@@ -157,8 +160,19 @@ mode.brawl={
}
}
}
+ var sceneNode;
for(var i in lib.brawl){
- createNode(i);
+ if(i=='scene'){
+ sceneNode=createNode(i);
+ }
+ else{
+ createNode(i);
+ }
+ }
+ if(sceneNode){
+ game.switchScene=function(){
+ clickCapt.call(sceneNode);
+ }
}
for(var i in lib.storage.scene){
game.addScene(i);
@@ -370,7 +384,8 @@ mode.brawl={
var player;
if(init){
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.top='20px';
player.node.count.remove();
@@ -386,9 +401,21 @@ mode.brawl={
var num2=0;
this.showcaseinterval=setInterval(function(){
var dx,dy
- if(num2%3==0){
- player.animate('target');
- player.animate('zoomin');
+ if(num2%5==0){
+ // player.animate('target');
+ // 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++;
switch(num++){
@@ -861,7 +888,7 @@ mode.brawl={
// }
// }
scene:{
- name:'自创场景',
+ name:'创建场景',
mode:'identity',
intro:'场景名称:
场景说明:
',
content:{
@@ -871,12 +898,131 @@ mode.brawl={
fullshow:true,
template:{
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:{
submode:'normal',
noAddSetting:true,
identityShown:true,
+ orderedPile:true,
+ cardPile:function(list){
+ list.randomSort();
+ var scene=_status.brawl.scene;
+ var inpile=[];
+ for(var i=0;i=0;i--){
+ list.unshift(parseInfo(scene.cardPileTop[i]));
+ }
+ for(var i=0;igame.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(){
var scene=_status.brawl.scene;
var playercontrol=[];
@@ -892,17 +1038,17 @@ mode.brawl={
maxpos=scene.players.length;
}
var posmap=[];
- for(var i=0;i=8){
+ addCharacter.disabled=true;
+ }
+
return player;
};
ui.create.div('.menubutton.large','确定',line4,style3,function(){
@@ -1444,27 +1689,15 @@ mode.brawl={
}
}
for(var i=0;i=8){
- addCharacter.disabled=true;
+ info.judges.push(line6_j.childNodes[i].info);
}
+ createCharacter(info);
resetCharacter();
});
ui.create.div('.menubutton.large','取消',line4,style3,resetCharacter);
@@ -1478,7 +1711,7 @@ mode.brawl={
line8.style.display='none';
line8.style.marginTop='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 turns=ui.create.selectlist(turnslist,'1',line8);
ui.create.node('span','个回合后',line8,style);
@@ -1493,7 +1726,7 @@ mode.brawl={
var line9=ui.create.div(style2,this);
line9.style.display='none';
line9.style.marginTop='20px';
- var resetStatus=function(){
+ var resetStatus=function(all){
if(line7.childElementCount>=8){
addCharacter.disabled=true;
}
@@ -1502,7 +1735,7 @@ mode.brawl={
}
// editCode.disabled=false;
saveButton.disabled=false;
- exportButton.disabled=false;
+ // exportButton.disabled=false;
cardpileaddname.value='random';
cardpileaddsuit.value='random';
cardpileaddnumber.value='random';
@@ -1523,9 +1756,64 @@ mode.brawl={
capt_t.style.display='none';
capt_b.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);
+
+ 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每有一个友方随从死亡,获得10点怒气值,主将死亡获得20点怒气值'+
'回合结束阶段,若己方随从数少于对方会获得10X点怒气值,X为随从数之差'+
'怒气值达到100时不再增加。回合开始阶段,若怒气值己满,可消耗全部怒气值和4点行动值并召唤一名传说随从'+
- '战斗
- 游戏流程类似1v1,场上有两名主将进行对抗,主将的体力上限+1'+
- '
- 游戏牌堆移除了乐不思蜀等跳过出牌阶段的卡牌'+
- '
- 主将出牌阶段的出牌数量(行动值)有上限,从1开始递增,后手的首个回合有一点额外行动值,装备牌不计入出牌上限
- 游戏每进行一轮,主将的出牌上限+1,超过6时减至3并重新累加'+
+ '
战斗
- 场上有两名主将进行对抗,主将的体力上限+1'+
+ '
- 游戏牌堆移除了乐不思蜀等跳过出牌阶段以及包含翻面功能的卡牌'+
+ '
- 主将出牌阶段的出牌数量(行动值)有上限,从1开始递增,后手的首个回合有一点额外行动值,装备牌不计入出牌上限
- 游戏每进行一轮,主将的出牌上限+1,直到增加至6'+
'
- 使用随从牌可召唤一个随从,随从出场时背面朝上。每一方在场的随从数不能超过4
- 随从于摸牌阶段摸牌基数为1,随从的法术和随从牌均视为闪,装备牌均视为杀
- '+
'随从与其他所有角色相互距离基数为1
- '+
'主将杀死对方随从后获得一个额外的行动值并从牌库中获得一张牌,杀死己方随从无惩罚,随从杀死随从无效果'+
- '
- 主将可重铸随从牌,但回合内总的重铸次数不能超过3,随从不能重铸任何牌(包括铁索等默认可以重铸的牌);若重铸的牌为随从牌或法术牌,则摸牌改为获得一张随机法术牌'+
+ '
- 主将在随从满员时可重铸随从牌,但回合内总的重铸次数不能超过3;若重铸的牌为随从牌或法术牌,则摸牌改为获得一张随机法术牌'+
'
- 嘲讽:若一方阵营中有嘲讽角色,则同阵营的无嘲讽角色不以能成为杀目标'+
'
- 行动顺序为先主将后随从。主将或随从死亡后立即移出游戏,主将死亡后替补登场,替补登场时摸3+X张牌,X为对方存活的随从数,无替补时游戏结束'
}
diff --git a/mode/tafang.js b/mode/tafang.js
index 4612f8d32..cdef690e1 100644
--- a/mode/tafang.js
+++ b/mode/tafang.js
@@ -4,6 +4,7 @@ mode.tafang={
start:function(){
"step 0"
lib.init.css(lib.assetURL+'layout/mode','chess');
+ lib.init.css(lib.assetURL+'layout/mode','tafang');
game.loadMode('chess');
"step 1"
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');
document.head.appendChild(ui.chesssheet);
var playback=localStorage.getItem(lib.configprefix+'playback');
@@ -84,36 +92,20 @@ mode.tafang={
}
_status.mylist=[];
_status.enemylist=[];
- "step 2"
+ "step 3"
ui.arena.classList.add('chess');
- var mylistmap,enemylistmap;
if(event.video){
- var videocontent;
for(var ii=0;iidiv>div,#mebg,.control,.player,.card,.avatar,.avatar2,.button,#window>.dialog.popped,
.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;
background-image: linear-gradient(#4b4b4b, #464646);
border-radius: 8px;
@@ -70,7 +70,10 @@ body[data-background_color_music='blue'] #arena.mobile:not(.chess) .player[data-
.card{
color:white;
}
-.card:not(*:empty){
+.cardbg{
+ background-size: initial !important;
+}
+.card:not(*:empty),.cardbg{
color:rgb(77, 60, 51);
text-shadow:none;
background: url('wood3.png');
diff --git a/theme/music/wood.png b/theme/music/wood.png
old mode 100755
new mode 100644
diff --git a/theme/music/wood3.png b/theme/music/wood3.png
old mode 100755
new mode 100644
diff --git a/theme/simple/card.png b/theme/simple/card.png
old mode 100755
new mode 100644
diff --git a/theme/simple/grid.png b/theme/simple/grid.png
old mode 100755
new mode 100644
diff --git a/theme/simple/style.css b/theme/simple/style.css
old mode 100755
new mode 100644
index 2c6a09485..1ac9ffbc8
--- a/theme/simple/style.css
+++ b/theme/simple/style.css
@@ -16,7 +16,7 @@ body{
}
#system>div>div,#mebg,.control,.player,.card,.avatar,.avatar2,.button,#window>.dialog.popped,
.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;
background-image: linear-gradient(rgba(0,0,0,0.4), rgba(0,0,0,0.4));
border-radius: 8px;
@@ -72,11 +72,13 @@ body{
#arena:not(.chess) .player[data-position='0']>.equips>.equip5 {
border-radius: 4px;
}
-
+.cardbg{
+ background-size: 100% 100% !important;
+}
.card{
color:white;
}
-.card:not(*:empty){
+.card:not(*:empty),.cardbg{
color:rgb(77, 60, 51);
text-shadow:none;
background: url('card.png');
@@ -116,7 +118,7 @@ body{
}
.menupaused{
- opacity: 0.3;
+ opacity: 0.3 !important;
}
.fire{
diff --git a/theme/simple/wood.png b/theme/simple/wood.png
old mode 100755
new mode 100644
diff --git a/theme/simple/wood3.png b/theme/simple/wood3.png
old mode 100755
new mode 100644
diff --git a/theme/style/cardback/feicheng.css b/theme/style/cardback/feicheng.css
index 38a4b6618..634fa0e60 100644
--- a/theme/style/cardback/feicheng.css
+++ b/theme/style/cardback/feicheng.css
@@ -1,8 +1,8 @@
-.card:empty,.card.infohidden{
- background: url('image/feicheng.png');
- background-size: cover;
-}
-.card.infohidden:not(.infoflip){
- background: url('image/feicheng2.png');
- background-size: cover;
-}
+.card:empty,.card.infohidden{
+ background: url('image/feicheng.png');
+ background-size: cover;
+}
+.card.infohidden:not(.infoflip){
+ background: url('image/feicheng2.png');
+ background-size: cover;
+}
diff --git a/theme/style/cardback/liusha.css b/theme/style/cardback/liusha.css
index c49e04cc0..e1707162f 100644
--- a/theme/style/cardback/liusha.css
+++ b/theme/style/cardback/liusha.css
@@ -1,8 +1,8 @@
-.card:empty,.card.infohidden{
- background: url('image/liusha.png');
- background-size: cover;
-}
-.card.infohidden:not(.infoflip){
- background: url('image/liusha2.png');
- background-size: cover;
-}
+.card:empty,.card.infohidden{
+ background: url('image/liusha.png');
+ background-size: cover;
+}
+.card.infohidden:not(.infoflip){
+ background: url('image/liusha2.png');
+ background-size: cover;
+}
diff --git a/theme/woodden/grid.png b/theme/woodden/grid.png
old mode 100755
new mode 100644
diff --git a/theme/woodden/style.css b/theme/woodden/style.css
old mode 100755
new mode 100644
index bd1f1b4d8..0a81ca33b
--- a/theme/woodden/style.css
+++ b/theme/woodden/style.css
@@ -4,7 +4,7 @@ html{
background: url('grid.png'),linear-gradient(#6c7989, #434b55) fixed;
}
#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;
border-radius: 8px;
}
@@ -32,11 +32,14 @@ html{
.menu.main>.menu-tab>.disabled{
color: rgba(77, 60, 51,0.5);
}
-#window>.dialog.popped,.menu{
+#window>.dialog.popped,.menu,.menubg{
background:url('wood2.png');
color:rgba(77, 60, 51,0.8);
text-shadow:none;
}
+.cardbg{
+ background-size: initial !important;
+}
#splash>div{
background:url('wood2.png');
}
@@ -62,13 +65,23 @@ html{
.popup.thunder{
color: rgb(117,186,255);
}
-.control .thundertext{
+.control .thundertext,.thundertext.thunderauto,
+.dialog.popped .bluetext{
color: rgba(29, 63, 137, 1);
}
.control .controlthundertext{
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{
background: url('wood.jpg');
}
@@ -102,7 +115,7 @@ html{
text-shadow:none;
border-radius:4px;
}
-#roundmenu>div{
+#roundmenu>div:not(.clock){
background:rgba(77, 60, 51,0.8);
box-shadow:none;
}
@@ -112,7 +125,7 @@ html{
.judges>div,.marks>div{
border-radius:4px;
}
-#mebg,.menubutton,.menubutton.highlight,.menubutton.active{
+#mebg,.menubutton,.menubutton.highlight,.menubutton.active,.mebg{
background: url('wood.png');
}
.menubutton.large{
@@ -153,7 +166,7 @@ html{
.card.equip4>.range{
text-shadow: white 0 0 2px;
}
-.card{
+.card,.menubg,.cardbg,.button.character.cardbg{
color:rgb(77, 60, 51);
text-shadow:none;
}
diff --git a/theme/woodden/wood.jpg b/theme/woodden/wood.jpg
old mode 100755
new mode 100644
diff --git a/theme/woodden/wood.png b/theme/woodden/wood.png
old mode 100755
new mode 100644
diff --git a/theme/woodden/wood2.jpg b/theme/woodden/wood2.jpg
old mode 100755
new mode 100644
diff --git a/theme/woodden/wood2.png b/theme/woodden/wood2.png
old mode 100755
new mode 100644