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