'use strict';
game.import('mode',function(lib,game,ui,get,ai,_status){
return {
name:'chess',
canvasUpdates2:[],
hiddenCharacters:[],
start:function(){
"step 0"
_status.mode=get.config('chess_mode');
if(lib.config.player_border=='normal'&&(lib.config.layout=='long'||lib.config.layout=='long2')){
ui.arena.classList.add('lslim_player');
}
// if(_status.mode=='leader'){
// _status.mode='combat';
// }
if(lib.config.test_game){
_status.mode='combat';
game.saveConfig('additional_player',false,true);
}
if(_status.mode=='combat'){
_status.first_less=true;
}
"step 1"
for(var i in lib.skill){
if(lib.skill[i].changeSeat){
lib.skill[i]={};
if(lib.translate[i+'_info']){
lib.translate[i+'_info']='此模式下不可用';
}
}
}
lib.init.css(lib.assetURL+'layout/mode','chess');
ui.chesssheet=document.createElement('style');
document.head.appendChild(ui.chesssheet);
var playback=localStorage.getItem(lib.configprefix+'playback');
lib.treasurelist=[];
if(get.config('chess_character')||playback||_status.mode=='leader'){
for(var i in lib.characterPack.mode_chess){
if(i.indexOf('treasure_')==0){
lib.treasurelist.push(i);
}
if(!playback&&i.indexOf('leader_')==0&&_status.mode!='leader') continue;
lib.character[i]=lib.characterPack.mode_chess[i];
if(!lib.character[i][4]){
lib.character[i][4]=[];
}
}
}
if(get.config('chess_card')){
lib.card.list.addArray(lib.chess_cardlist);
}
ui.create.cardsAsync();
game.finishCards();
game.addGlobalSkill('autoswap');
ui.chessContainer=ui.create.div('#chess-container',ui.arena);
ui.chessContainer.move=ui.click.moveContainer;
ui.chessContainer.chessLeft=0;
ui.chessContainer.chessTop=0;
// lib.setScroll(ui.chessContainer);
ui.chess=ui.create.div('#chess',ui.chessContainer);
ui.canvas2=document.createElement('canvas');
ui.canvas2.id='canvas2';
ui.chess.appendChild(ui.canvas2);
ui.ctx2=ui.canvas2.getContext('2d');
game.me=ui.create.player();
if(playback){
for(var i in lib.characterPack){
for(var j in lib.characterPack[i]){
lib.character[j]=lib.character[j]||lib.characterPack[i][j];
}
}
game.pause();
ui.system.style.display='none';
_status.playback=playback;
localStorage.removeItem(lib.configprefix+'playback');
var store=lib.db.transaction(['video'],'readwrite').objectStore('video');
store.get(parseInt(playback)).onsuccess=function(e){
if(e.target.result){
event.video=e.target.result.video;
game.resume();
}
else{
alert('播放失败:找不到录像');
game.reload();
}
}
}
else{
switch(_status.mode){
case 'leader':{
game.leaderView();
break;
}
case 'three':{
if(lib.config.continue_name_chess){
event._result={
friend:lib.config.continue_name_chess.friend,
enemy:lib.config.continue_name_chess.enemy,
}
_status.color=lib.config.continue_name_chess.color;
game.saveConfig('continue_name_chess');
game.delay(0.5);
lib.init.onfree();
}
else{
game.chooseCharacterDouble(function(i){
if(lib.character[i][4].contains('chessboss')){
return false;
}
return !lib.filter.characterDisabled(i);
},function(i){
switch(i){
case 0:return '主帅';
case 1:return '副帅';
default:return '前锋';
}
});
}
break;
}
case 'combat':{
game.chooseCharacter();
break;
}
default:{
game.chooseCharacter();
}
}
}
"step 2"
ui.arena.classList.add('chess');
if(_status.mode=='three'){
_status.mylist=result.friend;
_status.enemylist=result.enemy;
_status.friendBackup=_status.mylist.slice(0);
_status.enemyBackup=_status.enemylist.slice(0);
}
var mylistmap,enemylistmap;
if(event.video){
var videocontent;
for(var ii=0;ii0){
var ng=Math.floor(gridnum*nco);
for(var i=0;i_status.enemyDied){
game.forceOver(false);
}
else{
game.forceOver();
}
});
ui.finishGame.classList.add('finish_game');
ui.finishGame.parentNode.insertBefore(finishGameBr,ui.finishGame);
}
ui.create.me();
ui.create.fakeme();
if(!event.video&&((_status.mode=='combat'&&get.config('zhu')&&!_status.vsboss&&game.players.length>2)||_status.mode=='three')){
game.friendZhu=event.friendZhu;
game.friendZhu.hp++;
game.friendZhu.maxHp++;
game.friendZhu.update();
game.friendZhu.node.identity.firstChild.innerHTML='将';
for(var i=0;i=ui.chesswidth){
x=ui.chesswidth-1;
}
if(y>=ui.chessheight){
y=ui.chessheight-1;
}
var pos=y*ui.chesswidth+x;
if(!lib.posmap[pos]){
delete lib.posmap[this.dataset.position];
// this.changeSeat(pos,false);
ui.placeChess(this,pos);
lib.posmap[pos]=this;
this.chessFocus();
}
if(get.mode()=='tafang'&&!_status.video){
if(_status.tafangend.contains(this.dataset.position)){
if(_status.enemies.contains(this)){
game.over(false);
}
else{
this.delete();
delete lib.posmap[this];
game.players.remove(this);
_status.friends.remove(this);
this.classList.add('dead');
if(_status.roundStart==this){
_status.roundStart=player.next||player.getNext()||game.players[0];
}
if(this==game.me){
if(ui.confirm){
ui.confirm.close();
}
if(_status.friends.length==0){
ui.fakeme.hide();
this.node.handcards1.delete();
this.node.handcards2.delete();
game.me=ui.create.player();
game.me.side=false;
game.addVideo('removeTafangPlayer');
}
else{
game.modeSwapPlayer(_status.friends[0]);
}
}
for(var i=0;i0&&this.movable(1,0)) return true;
if(dy<0&&this.movable(0,-1)) return true;
if(dy>0&&this.movable(0,1)) return true;
return false;
},
moveTowards:function(target,forbid){
var fxy=this.getXY();
var txy;
if(Array.isArray(target)){
txy=target;
}
else if(typeof target=='string'){
var pos=parseInt(target);
txy=[pos%ui.chesswidth,Math.floor(pos/ui.chesswidth)];
}
else{
txy=target.getXY();
}
var dx=txy[0]-fxy[0];
var dy=txy[1]-fxy[1];
forbid=forbid||[];
if(Math.abs(dx)>Math.abs(dy)){
if(dx<0){
if(!forbid.contains('moveLeft')&&this.movable(-1,0)){
this.moveLeft();
return 'moveLeft';
}
}
else if(dx>0){
if(!forbid.contains('moveRight')&&this.movable(1,0)){
this.moveRight();
return 'moveRight';
}
}
if(dy<0){
if(!forbid.contains('moveUp')&&this.movable(0,-1)){
this.moveUp();
return 'moveUp';
}
}
else if(dy>0){
if(!forbid.contains('moveDown')&&this.movable(0,1)){
this.moveDown();
return 'moveDown';
}
}
}
else{
if(dy<0){
if(!forbid.contains('moveUp')&&this.movable(0,-1)){
this.moveUp();
return 'moveUp';
}
}
else if(dy>0){
if(!forbid.contains('moveDown')&&this.movable(0,1)){
this.moveDown();
return 'moveDown';
}
}
if(dx<0){
if(!forbid.contains('moveLeft')&&this.movable(-1,0)){
this.moveLeft();
return 'moveLeft';
}
}
else if(dx>0){
if(!forbid.contains('moveRight')&&this.movable(1,0)){
this.moveRight();
return 'moveRight';
}
}
}
return false;
},
chessFocus:function(){
game.addVideo('chessFocus',this);
if(ui.chess._chessdrag) return;
if(_status.chessscrolling) return;
var player=this;
var dx=0,dy=0;
if(player.getLeft()-ui.chessContainer.chessLeft<14){
dx=player.getLeft()-ui.chessContainer.chessLeft-14;
}
else if(player.getLeft()-ui.chessContainer.chessLeft>ui.chessContainer.offsetWidth-134){
dx=player.getLeft()-ui.chessContainer.chessLeft-ui.chessContainer.offsetWidth+134;
}
if(player.getTop()-ui.chessContainer.chessTop<14){
dy=player.getTop()-ui.chessContainer.chessTop-14;
}
else if(player.getTop()+ui.chess.offsetTop-ui.chessContainer.chessTop>ui.chessContainer.offsetHeight-134){
dy=player.getTop()+ui.chess.offsetTop-ui.chessContainer.chessTop-ui.chessContainer.offsetHeight+134;
}
// if(_status.currentChessFocus){
// cancelAnimationFrame(_status.currentChessFocus);
// }
var count=lib.config.low_performance?6:12;
var ddx=Math.floor(dx/count);
var ddy=Math.floor(dy/count);
if(dx||dy){
ui.chessContainer.move(dx,dy,true);
// var chessFocus=function(){
// if(count--){
// ui.chessContainer.chessLeft+=ddx;
// ui.chessContainer.chessTop+=ddy;
// _status.currentChessFocus=requestAnimationFrame(chessFocus);
// }
// else{
// ui.chessContainer.chessLeft+=dx%count;
// ui.chessContainer.chessTop+=dy%count;
// cancelAnimationFrame(_status.currentChessFocus);
// delete _status.currentChessFocus;
// }
// };
// _status.currentChessFocus=requestAnimationFrame(chessFocus);
}
},
getXY:function(){
var pos=parseInt(this.dataset.position);
var x=pos%ui.chesswidth;
var y=Math.floor(pos/ui.chesswidth);
return [x,y];
},
getDataPos:function(x,y){
var xy=this.getXY();
if(typeof x!='number') x=0;
if(typeof y!='number') y=0;
x+=xy[0];
y+=xy[1];
return x+y*ui.chesswidth;
},
getNeighbour:function(x,y){
var xy=this.getXY();
if(xy[0]+x<0) return null;
if(xy[1]+y<0) return null;
if(xy[0]+x>=ui.chesswidth) return null;
if(xy[1]+y>=ui.chessheight) return null;
return lib.posmap[this.getDataPos(x,y)]||null;
},
getNeighbours:function(){
var players=[];
for(var i=0;i=ui.chesswidth) return false;
if(xy[1]+y>=ui.chessheight) return false;
return !this.getNeighbour(x,y);
},
moveRight:function(){
if(this.movable(1,0)){
this.move(1,0);
return true;
}
return false;
},
moveLeft:function(){
if(this.movable(-1,0)){
this.move(-1,0);
return true;
}
return false;
},
moveUp:function(){
if(this.movable(0,-1)){
this.move(0,-1);
return true;
}
return false;
},
moveDown:function(){
if(this.movable(0,1)){
this.move(0,1);
return true;
}
return false;
},
dieAfter:function(source){
var player=this;
if(_status.friends){
_status.friends.remove(this);
}
if(_status.enemies){
_status.enemies.remove(this);
}
if(ui.friendDied&&player.side==game.me.side){
ui.friendDied.innerHTML='阵亡: '+get.cnNumber(++_status.friendDied,true);
}
if(ui.enemyDied&&player.side!=game.me.side){
ui.enemyDied.innerHTML='杀敌: '+get.cnNumber(++_status.enemyDied,true);
}
delete lib.posmap[player.dataset.position];
setTimeout(function(){
player.delete();
},500);
for(var i=0;i1){
if(cards){
that.$gain(cards,null,false)
}
else{
that.$gain(num-1,null,false)
}
}
},
$throw:function(card,time,init){
if(init!==false){
if(get.itemtype(card)!='cards'){
if(get.itemtype(card)=='card'){
card=[card];
}
else{
return;
}
}
game.addVideo('throw',this,[get.cardsInfo(card),time]);
}
this.chessFocus();
if(get.itemtype(card)=='cards'){
for(var i=0;i=0){
for(var i=0;i=ui.chessContainer.offsetHeight){
amin=0;
amax=90;
}
else{
amin=-90;
amax=90;
}
}
else if(rect.left+rect.width+80>=ui.chessContainer.offsetWidth){
if(rect.top<=80){
amin=180;
amax=270;
}
else if(rect.top+rect.height+80>=ui.chessContainer.offsetHeight){
amin=90;
amax=180;
}
else{
amin=90;
amax=270;
}
}
else if(rect.top<=80){
amin=180;
amax=360;
}
else if(rect.top+rect.height+80>=ui.chessContainer.offsetHeight){
amin=0;
amax=180;
}
else{
var dx=ui.chessContainer.offsetWidth/2-(rect.left+rect.width/2);
var dy=-ui.chessContainer.offsetHeight/2+(rect.top+rect.height/2);
var ang=Math.abs(Math.atan(dy/dx))*180/Math.PI;
if(dx<0){
if(dy>0){
ang=180-ang;
}
else{
ang+=180;
}
}
else if(dy<0){
ang=360-ang;
}
amin=ang-180;
amax=ang+180;
}
var da=(amax-amin)/(thrown.length*2);
if(da>30&&thrown.length>1){
amin+=(da-30)*thrown.length;
da=30;
}
for(var i=0;i.player'+pos+
// '{left:'+(14+i*148)+'px;top:'+(14+j*148)+'px}',0);
ui.chesssheet.sheet.insertRule('#arena.chess #chess>.card'+pos+
'{left:'+(22+i*148)+'px;top:'+(22+j*148)+'px}',0);
ui.chesssheet.sheet.insertRule('#arena.chess #chess>.popup'+pos+
'{left:'+(19+i*148)+'px;top:'+(142+j*148)+'px}',0);
}
}
},
getVideoName:function(){
var str='战棋'+get.translation(_status.mode)+' - '+_status.friendCount+'v'+_status.enemyCount;
var name=[get.translation(game.me.name),str];
return name;
},
addChessPlayer:function(name,enemy,num,pos){
if(typeof num!='number'){
num=4;
}
var player=ui.create.player();
player.getId();
if(enemy=='treasure'){
player.animate('judgestart');
player.side=null;
player.identity='neutral';
player.setIdentity();
player.node.identity.dataset.color='zhong';
player.classList.add('treasure');
player.node.hp.classList.add('treasure');
player.life=6+Math.floor(Math.random()*6);
game.treasures.add(player);
}
else{
player.animate('start');
if(enemy){
if(get.mode()=='tafang'){
player.side=true;
}
else{
player.side=!game.me.side;
}
player.setIdentity('enemy');
player.identity='enemy';
}
else{
if(get.mode()=='tafang'){
player.side=false;
}
else{
player.side=game.me.side;
}
player.setIdentity('friend');
player.identity='friend';
}
player.node.identity.dataset.color=get.translation(player.side+'Color');
game.players.push(player);
// if(lib.config.animation){
// setTimeout(function(){
// player.$rare2();
// },300);
// }
}
ui.chess.appendChild(player);
if(_status.video||(pos&&!lib.posmap[pos])){
ui.placeChess(player,pos);
}
else{
var grids=[];
var gridnum=ui.chessheight*ui.chesswidth;
for(var i=0;i=ui.chesswidth){
x=ui.chesswidth-1;
}
if(y>=ui.chessheight){
y=ui.chessheight-1;
}
pos=y*ui.chesswidth+x;
}
if(!lib.posmap[pos]){
var grid=ui.create.div('.player.minskin.obstacle',ui.chess).animate('start');
ui.placeChess(grid,pos);
grid.listen(ui.click.obstacle);
lib.posmap[pos]=grid;
game.obstacles.push(grid);
return grid;
}
return null;
},
addTempObstacle:function(x,y,num){
var node=game.addObstacle(x,y);
if(node){
game.colorObstacle(node,'blue');
node.tempObstacle=num;
}
},
removeObstacle:function(pos){
if(get.is.div(pos)){
pos=pos.dataset.position;
}
var node=lib.posmap[pos];
if(node&&game.obstacles.contains(node)){
game.addVideo('removeObstacle',null,pos);
game.obstacles.remove(node);
delete lib.posmap[pos];
node.delete();
}
},
moveObstacle:function(pos,x,y){
if(get.is.div(pos)){
pos=pos.dataset.position;
}
var node=lib.posmap[pos];
if(node&&game.obstacles.contains(node)){
pos=parseInt(pos);
var x2=pos%ui.chesswidth+x;
var y2=Math.floor(pos/ui.chesswidth)+y;
if(x2>=ui.chesswidth){
x2=ui.chesswidth-1;
}
if(y2>=ui.chessheight){
y2=ui.chessheight-1;
}
if(x2<0){
x2=0;
}
if(y2<0){
y2=0;
}
var pos2=y2*ui.chesswidth+x2;
if(!lib.posmap[pos2]){
game.addVideo('moveObstacle',null,[pos,x,y]);
ui.placeChess(node,pos2);
delete lib.posmap[pos];
lib.posmap[pos2]=node;
return true;
}
}
return false;
},
colorObstacle:function(pos,color){
if(get.is.div(pos)){
pos=pos.dataset.position;
}
var node=lib.posmap[pos];
if(node&&game.obstacles.contains(node)){
game.addVideo('colorObstacle',null,[pos,color]);
node.dataset.obscolor=color;
}
},
addOverDialog:function(dialog,result){
if(ui.finishGame){
ui.finishGame.remove();
}
dialog.classList.add('center');
if(_status.mode!='leader') return;
if(result=='战斗胜利'){
_status.victory=true;
if(!_status.enterArena){
var div=ui.create.div();
div.innerHTML='获得'+game.reward+'金';
dialog.add(div);
if(_status.challenge&&_status.challengeMoney<=game.data.dust){
var div2=ui.create.div();
div2.style.display='block';
div2.innerHTML='招降所需招募令:'+_status.challengeMoney+'/'+game.data.dust;
dialog.add(div2);
}
game.changeMoney(game.reward);
game.saveData();
}
}
else if(_status.zhaoxiang){
var div=ui.create.div();
div.innerHTML='招降'+get.translation(_status.zhaoxiang)+'成功';
dialog.add(div);
}
},
controlOver:function(){
if(_status.mode=='three'){
ui.create.control('再战',function(){
game.saveConfig('continue_name_chess',{
friend:_status.friendBackup,
enemy:_status.enemyBackup,
color:_status.color
});
game.saveConfig('mode',lib.config.mode);
localStorage.setItem(lib.configprefix+'directstart',true);
game.reload();
});
}
ui.create.control('返回',game.reload);
if(_status.mode!='leader') return;
if(_status.enterArena){
game.data.arena.acted.length=0;
if(_status.victory){
game.data.arena.win++;
for(var i=0;i=money){
ui.create.control('招降'+get.translation(_status.challenge),function(){
game.data.character.add(_status.challenge);
game.data.challenge=game.getLeaderList();
game.changeDust(-money);
game.reload();
});
}
}
}
},
phaseLoopThree:function(player){
var next=game.createEvent('phaseLoop');
next.player=player;
next.swap=function(player){
if(player.side==game.me.side){
return game.enemyZhu;
}
else{
return game.me;
}
},
next.setContent(function(){
'step 0'
player.classList.add('acted');
player.phase();
'step 1'
if(player!=game.friendZhu&&player!=game.enemyZhu){
for(var i=0;inum1){
if(next.side==game.me.side){
next=game.me;
}
var str;
if(num2-num1>1){
str='选择至多'+get.cnNumber(num2-num1)+'个已方角色各摸一张牌'
}
else{
str='选择一个已方角色摸一张牌'
}
var nevt=next.chooseTarget(str,function(card,player,target){
return target.side==next.side;
},[1,num2-num1]);
nevt.ai=function(target){
return Math.max(1,10-target.countCards('h'));
};
nevt.includeOut=true;
nevt.chessForceAll=true;
}
else{
game.delay();
event.goto(2);
}
}
else{
event.goto(2);
}
"step 1"
if(result.bool){
game.asyncDraw(result.targets);
}
"step 2"
if(player.side==game.me.side){
player=game.me;
}
if(player.isDead()){
for(var i=0;i1){
var nevt=player.chooseTarget('选择下一个行动的角色',function(card,player,target){
return target.side==player.side&&!target.classList.contains('acted');
},true);
nevt.chessForceAll=true;
nevt.includeOut=true;
nevt.ai=function(target){
var nj=target.countCards('j');
if(nj){
return -nj;
}
return Math.max(0,10-target.hp);
}
}
else if(players.length){
event.decided=players[0];
}
else{
event.player=game.findPlayer(function(current){
return current.side!=player.side;
});
event.goto(0);
}
"step 3"
if(event.decided){
event.decided.phase();
event.justacted=event.decided;
delete event.decided;
}
else{
var current=result.targets[0];
current.phase();
event.justacted=current;
}
"step 4"
event.justacted.classList.add('acted');
event.goto(0);
for(var i=0;i'+game.data.money+'金币');
uiintro.addText('通过战斗或竞技场可获得金币。花费100金币可招募3名随机武将;花费150金币可参加一次竞技场');
uiintro.add(''+game.data.dust+'招募令');
uiintro.addText('通过遣返武将或竞技场可获得招募令。挑战武将成功后可通过招募令招募该武将,普通/稀有/史诗/传说武将分别花费40/100/400/1600招募令');
});
ui.money.innerHTML='⚑'+game.data.dust+''+
'㉤'+game.data.money+'';
ui.money.style.top='auto';
ui.money.style.left='auto';
ui.money.style.right='20px';
ui.money.style.bottom='15px';
ui.money.childNodes[0].style.color='rgb(111, 198, 255)';
ui.money.childNodes[1].style.fontFamily='huangcao';
ui.money.childNodes[1].style.marginRight='10px';
ui.money.childNodes[2].style.color='#FFE600';
ui.money.childNodes[3].style.fontFamily='huangcao';
ui.money.style.letterSpacing='4px';
for(var i in lib.rank){
if(Array.isArray(lib.rank[i])){
for(var j=0;jb?1:-1;
}
return aa>bb?1:-1;
});
if(game.data.character.length==0||!game.data.challenge){
game.data.character=lib.rank.rarity.common.randomGets(3);
game.data.challenge=game.getLeaderList();
game.saveData();
}
var fixButton=function(button){
var rarity=game.getRarity(button.link);
if(rarity!='common'){
var intro=button.node.intro;
intro.classList.add('showintro');
intro.style.fontFamily='huangcao';
intro.style.fontSize='20px';
intro.style.top='82px';
intro.style.left='2px';
switch(rarity){
case 'rare':intro.dataset.nature='waterm';break;
case 'epic':intro.dataset.nature='thunderm';break;
case 'legend':intro.dataset.nature='metalm';break;
}
intro.innerHTML=get.translation(rarity);
}
}
game.leaderLord=['leader_caocao','leader_liubei','leader_sunquan'];
var dialog1=ui.create.dialog('选择君主','hidden');
event.dialog1=dialog1;
dialog1.classList.add('fullheight');
dialog1.classList.add('halfleft');
dialog1.classList.add('fixed');
dialog1.classList.add('pointerbutton');
dialog1.add([game.leaderLord,'character']);
var i;
for(i=0;ib?1:-1;
});
captnode.innerHTML='';
for(i=0;i3&&selected.character.length){
event.removeCharacter.animate('controlpressdownx',500);
event.removeCharacter.classList.remove('disabled');
}
if(game.data.money<150&&!game.data._arena){
event.enterArena.classList.add('disabled');
}
else{
event.enterArena.animate('controlpressdownx',500);
event.enterArena.classList.remove('disabled');
}
if(game.data.money<100){
event.addCharacter.classList.add('disabled');
}
else{
event.addCharacter.animate('controlpressdownx',500);
event.addCharacter.classList.remove('disabled');
}
initcapt();
},200);
},200);
},500);
};
event.addCharacter=ui.create.control('招募','nozoom',zhaomu2);
if(game.data.money<150&&!game.data._arena){
event.enterArena.classList.add('disabled');
}
if(game.data.money<100){
event.addCharacter.classList.add('disabled');
}
var qianfan=function(){
if(_status.kaibao) return;
if(game.data.character.length<=3) return;
if(!selected.character.length) return;
// _status.chessclicked=true;
// _status.qianfan=true;
// event.enterArena.style.opacity=0.5;
// event.addCharacter.style.opacity=0.5;
// event.fight.style.opacity=0.5;
var current=selected.character.slice(0);
clearSelected();
var maxq=game.data.character.length-3;
if(current.length<=maxq){
for(var i=0;i=100){
event.addCharacter.animate('controlpressdownx',500);
event.addCharacter.classList.remove('disabled');
}
if(game.data.money>=150){
event.enterArena.animate('controlpressdownx',500);
event.enterArena.classList.remove('disabled');
}
node.delete();
dialog1.buttons.remove(node);
}
initcapt();
}
};
event.removeCharacter=ui.create.control('遣返','nozoom',qianfan);
event.removeCharacter.classList.add('disabled');
event.fight=ui.create.control('开始战斗','nozoom',function(){
if(_status.kaibao||_status.qianfan) return;
if(selected.challenge.length){
var cname=selected.challenge[0].link;
var rarity=game.getRarity(cname);
switch(rarity){
case 'common':rarity=40;break;
case 'rare':rarity=100;break;
case 'epic':rarity=400;break;
case 'legend':rarity=1600;break;
}
if(!confirm('即将挑战'+get.translation(cname)+',战斗胜利后可消耗'+rarity+'招募令招募该武将,无论是否招募,挑战列表将被刷新。是否继续?')){
return;
}
}
_status.enemylist=[];
_status.mylist=[];
if(selected.lord.length){
_status.mylist.push(selected.lord[0].link);
_status.lord=selected.lord[0].link;
}
if(selected.character.length){
for(var i=0;i0){
switch(difficulty){
case 'leader_easy':reward+=10*numdel;break;
case 'leader_medium':reward+=20*numdel;break;
case 'leader_hard':reward+=40*numdel;break;
}
}
var punish=0;
for(var i=0;i<_status.mylist.length;i++){
switch(get.rank(_status.mylist[i])){
case 's':punish+=25;break;
case 'ap':punish+=20;break;
case 'a':punish+=16;break;
case 'am':punish+=12;break;
case 'bp':punish+=9;break;
case 'b':punish+=7;break;
case 'bm':punish+=5;break;
case 'c':punish+=3;break;
case 'd':punish+=2;break;
}
}
if(numdel<0){
switch(difficulty){
case 'leader_easy':punish-=5*numdel;break;
case 'leader_medium':punish-=10*numdel;break;
case 'leader_hard':punish-=20*numdel;break;
}
}
game.reward=Math.max(3*_status.enemylist.length,reward-punish);
if(!_status.lord){
switch(difficulty){
case 'leader_easy':game.reward+=10;break;
case 'leader_medium':game.reward+=20;break;
case 'leader_hard':game.reward+=40;break;
}
}
game.resume();
});
event.custom.replace.button=function(button){
if(_status.kaibao) return;
if(button.classList.contains('unselectable')&&
!button.classList.contains('selected')) return;
_status.chessclicked=true;
button.classList.toggle('selected');
if(button.classList.contains('selected')){
selected[button.area].add(button);
}
else{
selected[button.area].remove(button);
}
switch(button.area){
case 'lord':{
for(var i=0;i5)||
(_status.qianfan&&selected.character.length>=maxq)){
dialog1.buttons[i].classList.add('unselectable');
}
else{
dialog1.buttons[i].classList.remove('unselectable');
}
}
}
break;
}
case 'difficulty':case 'number':{
for(var i=0;i3){
event.removeCharacter.animate('controlpressdownx',500);
event.removeCharacter.classList.remove('disabled');
}
else{
event.removeCharacter.classList.add('disabled');
}
};
event.custom.add.window=function(){
if(!_status.kaibao){
var glows=document.querySelectorAll('.button.glow2');
for(var i=0;i=100){
event.addCharacter.animate('controlpressdownx',500);
event.addCharacter.classList.remove('disabled');
}
else{
event.addCharacter.classList.add('disabled');
}
if(game.data.money>=150||game.data._arena){
event.enterArena.animate('controlpressdownx',500);
event.enterArena.classList.remove('disabled');
}
else{
event.enterArena.classList.add('disabled');
}
event.fight.style.opacity=1;
}
clearSelected();
};
lib.init.onfree();
game.pause();
'step 2'
if(!game.data.arena){
event.dialog1.close();
event.dialog2.close();
event.fight.close();
event.enterArena.close();
event.addCharacter.close();
event.removeCharacter.close();
}
ui.arena.classList.add('leaderhide');
ui.money.hide();
game.delay();
'step 3'
ui.arena.classList.remove('leaderhide');
if(!_status.enterArena){
ui.wuxie.show();
ui.auto.show();
ui.control.style.top='';
if(!get.is.safari()){
ui.control.style.transition='';
ui.control.style.display='none';
}
event.finish();
}
else{
game.minskin=false;
event.arenanodes=[];
event.arenachoice=[];
event.arenachoicenodes=[];
event.arrangeNodes=function(){
var num=event.arenachoicenodes.length;
var width=num*75+(num-1)*8;
for(var i=0;i=3){
for(var i=0;i胜';
victory.style.top='auto';
victory.style.left='auto';
victory.style.right='20px';
victory.style.bottom='15px';
victory.style.fontSize='30px'
victory.style.fontFamily='huangcao';
victory.firstChild.style.marginRight='5px';
ui.window.appendChild(victory);
ui.refresh(victory);
victory.show();
event.checkPrize=function(){
// event.kaibao=true;
event.prize=[];
event.turnCard2=function(){
if(this.turned) return;
_status.chessclicked=true;
this.turned=true;
var node=this;
setTimeout(function(){
node.turned2=true;
},1000);
if(node.name=='chess_coin'||node.name=='chess_dust'){
node.style.transition='all 0s';
node.style.transform='none';
node.style.overflow='visible';
node.style.background='none';
node.style.boxShadow='none';
var div=ui.create.div(node);
div.style.transition='all 0s';
if(node.name=='chess_coin'){
div.innerHTML='㉤'+node.num+'';
div.firstChild.style.color='rgb(255, 230, 0)';
node.$coin();
}
else{
div.innerHTML='⚑'+node.num+'';
div.firstChild.style.color='rgb(111, 198, 255)';
div.firstChild.style.marginRight='3px';
node.$dust();
}
div.style.fontFamily='huangcao';
div.style.fontSize='50px';
div.style.top='40px';
div.style.letterSpacing='8px';
div.style.whiteSpace='nowrap';
// div.dataset.nature='metal';
return;
}
node.style.transition='all ease-in 0.3s';
node.style.transform='perspective(1200px) rotateY(270deg) translateX(150px)';
var onEnd=function(){
node.init(node.name);
node.node.avatar.style.display='';
if(node.rarity){
node.node.intro.innerHTML=get.translation(node.rarity);
node.node.intro.classList.add('showintro');
}
node.classList.add('playerflip');
node.style.transform='none';
node.style.transition='';
if(lib.config.animation&&!lib.config.low_performance){
setTimeout(function(){
switch(game.getRarity(node.name)){
case 'rare':node.$rare();break;
case 'epic':node.$epic();break;
case 'legend':node.$legend();break;
}
},150);
}
};
node.listenTransition(onEnd);
};
setTimeout(function(){
nodes[0].delete();
},400+Math.random()*300);
setTimeout(function(){
nodes[1].delete();
},400+Math.random()*300);
setTimeout(function(){
nodes[2].delete();
},400+Math.random()*300);
setTimeout(function(){
nodes[3].delete();
},400+Math.random()*300);
setTimeout(function(){
nodes[4].delete();
},400+Math.random()*300);
setTimeout(function(){
nodes[5].delete();
},400+Math.random()*300);
setTimeout(function(){
nodes[6].delete();
},400+Math.random()*300);
setTimeout(function(){
nodes[7].delete();
},400+Math.random()*300);
setTimeout(function(){
nodes[8].delete();
},400+Math.random()*300);
setTimeout(function(){
var prize=new Array(6);
var map=[1,2,3,4,5];
var ccount=3;
var win=game.data.arena.win;
var prizeValue;
switch(win){
case 0:prizeValue=100;break;
case 1:prizeValue=120;break;
case 2:prizeValue=150;break;
case 3:prizeValue=190;break;
case 4:prizeValue=240;break;
case 5:prizeValue=300;break;
case 6:prizeValue=370;break;
case 7:prizeValue=450;break;
case 8:prizeValue=540;break;
case 9:prizeValue=640;break;
case 10:prizeValue=750;break;
case 11:prizeValue=870;break;
case 12:prizeValue=1000;break;
}
if(Math.random()<0.4){
if(win>=3&&Math.random()<0.5){
ccount=4;
prizeValue-=33;
}
else{
ccount=2;
prizeValue+=33;
}
}
prizeValue-=100;
while(ccount--){
prize[map.randomRemove()]=game.getLeaderCharacter();
}
if(map.length){
prizeValue/=map.length;
}
while(map.length){
var val=Math.round((Math.random()*0.4+0.8)*prizeValue);
if(Math.random()<0.7){
prize[map.shift()]=['chess_coin',Math.max(Math.ceil(Math.random()*5),val)];
}
else{
val=Math.round(val/3);
prize[map.shift()]=['chess_dust',Math.max(Math.ceil(Math.random()*3),val)];
}
}
for(var i=1;i=4&&!bosses.childNodes[i].classList.contains('glow')){
bosses.childNodes[i].classList.add('forbidden');
}
else{
bosses.childNodes[i].classList.remove('forbidden');
}
}
if(num){
if(!event.asboss){
event.asboss=ui.create.control('应战',function(){
_status.boss=true;
ui.click.ok();
});
}
}
else{
if(event.asboss){
event.asboss.close();
delete event.asboss;
}
}
addToButton();
};
var clickedJiange=false;
var clickJiange=function(){
clickedJiange=true;
if(this.classList.contains('glow2')){
this.classList.remove('glow2');
}
else{
this.classList.add('glow2');
}
addToButton();
};
for(var i=0;inum){
for(var i=num;i2) return false;
var xy1=event.source.getXY();
var xy2=player.getXY();
var dx=xy2[0]-xy1[0];
var dy=xy2[1]-xy1[1];
// if(dx*dy!=0) return false;
if(dx==0&&Math.abs(dy)==2){
dy/=2;
}
if(dy==0&&Math.abs(dx)==2){
dx/=2;
}
return player.movable(dx,dy);
},
content:function(){
var xy1=trigger.source.getXY();
var xy2=player.getXY();
var dx=xy2[0]-xy1[0];
var dy=xy2[1]-xy1[1];
if(dx==0&&Math.abs(dy)==2){
dy/=2;
}
if(dy==0&&Math.abs(dx)==2){
dx/=2;
}
if(player.movable(dx,dy)){
player.move(dx,dy);
}
}
},
dubiaoxianjing:{
global:'dubiaoxianjing2'
},
dubiaoxianjing2:{
trigger:{player:'phaseAfter'},
forced:true,
popup:false,
filter:function(event,player){
if(player.hp<=1) return false;
for(var i=0;i1) return false;
for(var i=0;inh) return false;
}
return true;
}
}
return false;
},
content:function(){
'step 0'
var source=null;
for(var i=0;i3;
}
}
return false;
},
content:function(){
'step 0'
var source=null;
for(var i=0;igame.data.arena.dead.length;
},
direct:true,
delay:0,
preservecancel:true,
content:function(){
"step 0"
var list=game.data.arena.arenachoice.slice(0);
for(var i=0;i'
for(var i=0;i'+get.translation(targets[i])+
':
'+
(skill.chance(targets[i],player)*100).toFixed(2)+'%
';
}
str+='
'
}
return str;
},
chance:function(target,player){
var chance;
var renyi=player.hasSkill('leader_renyi');
switch(target.hp){
case 1:chance=0.7;break;
case 2:chance=0.4;break;
default:chance=0.2;break;
}
switch(target.countCards('he')){
case 0:break;
case 1:chance/=1.2;break;
case 2:chance/=1.4;break;
case 3:chance/=1.7;break;
default:chance/=2;break;
}
switch(game.getRarity(target.name)){
case 'common':{
if(renyi) chance*=2;
break;
}
case 'rare':{
chance/=2;
if(renyi) chance*=2;
break;
}
case 'epic':{
chance/=5;
if(renyi) chance*=1.5;
break;
}
case 'legend':{
chance/=15;
if(renyi) chance*=1.2;
break;
}
}
return Math.min(1,chance);
},
filter:function(){
return game.data.dust>=10;
},
filterTarget:function(card,player,target){
return game.isChessNeighbour(player,target)&&!game.data.character.contains(target.name);
},
content:function(){
var chance=lib.skill.leader_zhaoxiang.chance(target,player);
game.changeDust(-10);
if(Math.random()0;
},
content:function(){
switch(_status.difficulty){
case 'leader_easy':game.reward+=2*trigger.num;break;
case 'leader_medium':game.reward+=4*trigger.num;break;
case 'leader_hard':game.reward+=6*trigger.num;break;
}
}
},
leader_renyi:{
unique:true,
},
leader_mouduan:{
unique:true,
global:'leader_mouduan2'
},
leader_mouduan2:{
mod:{
chessMove:function(player,current){
if(player.side&&player.name!=_status.lord) return current+1;
}
}
},
tongshuai:{
unique:true,
forbid:['guozhan'],
init:function(player){
player.storage.tongshuai={
list:[],
owned:{},
player:player,
get:function(num){
if(typeof num!='number') num=1;
var player=this.player;
while(num--){
var name=player.storage.tongshuai.unowned.shift();
if(!name) return;
var skills=lib.character[name][3].slice(0);
for(var i=0;i当前技能:'+get.translation(skill);
}
return str;
},
mark:function(dialog,content,player){
var slist=content.owned;
var list=[];
for(var i in slist){
list.push(i);
}
if(list.length){
dialog.addSmall([list,'character']);
}
var skill=player.additionalSkills.tongshuai[0];
if(skill){
dialog.add('【'+get.translation(skill)+
'】
'+lib.translate[skill+'_info']+'
');
}
}
},
// mark:true
},
tongshuai1:{
trigger:{global:'gameStart'},
forced:true,
popup:false,
priority:10,
content:function(){
for(var i=0;i1){
player.storage.tongshuai.get(2);
}
else if(player.storage.tongshuai.unowned.length==1){
player.storage.tongshuai.get();
}
else{
player.removeSkill('tongshuai');
}
}
},
tongshuai2:{
audio:2,
trigger:{player:['phaseBegin','phaseEnd'],global:'gameStart'},
filter:function(event,player,name){
if(!player.hasSkill('tongshuai')) return false;
if(name=='phaseBegin'&&game.phaseNumber==1) return false;
return true;
},
priority:-9,
forced:true,
popup:false,
content:function(){
var slist=player.storage.tongshuai.owned;
var list=[];
for(var i in slist){
list.push(i);
}
if(event.isMine()){
event.dialog=ui.create.dialog('选择获得一项技能',[list,'character']);
if(trigger.name=='game'){
event.control=ui.create.control();
}
else{
event.control=ui.create.control(['cancel']);
}
event.clickControl=function(link){
if(link!='cancel'){
var currentname=event.dialog.querySelector('.selected.button').link;
var mark=player.marks.tongshuai;
if(!mark){
player.markSkill('tongshuai');
mark=player.marks.tongshuai;
if(mark.firstChild){
mark.firstChild.remove();
}
}
mark.setBackground(currentname,'character');
player.addAdditionalSkill('tongshuai',link);
game.addVideo('chess_tongshuai_skill',player,[currentname,link]);
player.logSkill('tongshuai2');
game.log(player,'获得技能','【'+get.translation(link)+'】');
player.popup(link);
for(var i=0;i0;
},
content:function(){
player.storage.tongshuai.get();
}
},
cangming:{
enable:'phaseUse',
usable:1,
unique:true,
filter:function(event,player){
if(player.isTurnedOver()) return false;
var suits=[];
var hs=player.getCards('h');
for(var i=0;i=4) return true;
}
return false;
},
filterCard:function(card){
var suit=get.suit(card);
for(var i=0;i1) break;
}
}
if(num<=1) return;
if(_status.currentPhase==player&&player.countCards('h')=6){
if(typeof card=='string') return;
if(card.name=='wuzhong') return;
if(card.name=='shunshou') return;
if(card.name=='yuanjiao') return;
if(card.name=='yiyi') return;
if(!player.hasSkill('cangming2')) return 'zeroplayertarget';
}
}
},
result:{
target:function(player){
var num=0;
for(var i=0;i1) break;
}
}
if(num<=1) return 0;
return -10;
}
}
},
},
cangming2:{
trigger:{player:'phaseBegin'},
forced:true,
popup:false,
content:function(){
for(var i=0;i0;
},
check:function(event,player){
var targets=lib.skill.guanchuan.getTargets(player,event.targets[0]);
var eff=0;
for(var i=0;i0;
},
content:function(){
var targets=lib.skill.guanchuan.getTargets(player,trigger.targets[0]);
for(var i=0;i1&&lib.filter.filterCard({name:'sha'},player);
},
filterCard:{name:'sha'},
selectCard:2,
check:function(card){
var num=0;
var player=_status.event.player;
for(var i=0;i0){
num++;
if(num>1) return 8-get.value(card);
}
}
return 0;
},
selectTarget:[1,Infinity],
discard:false,
prepare:'throw',
filterTarget:function(card,player,target){
return lib.filter.targetEnabled({name:'sha'},player,target)&&
get.distance(player,target,'pure')<=5;
},
content:function(){
targets.sort(lib.sort.seat);
player.useCard({name:'sha'},cards,targets,'luanjian').animate=false;
},
multitarget:true,
ai:{
order:function(){
return get.order({name:'sha'})+0.1;
},
result:{
target:function(player,target){
return get.effect(target,{name:'sha'},player,target);
}
},
effect:{
player:function(card,player){
if(_status.currentPhase!=player) return;
if(card.name=='sha'&&player.countCards('h','sha')<2&&player.countCards('h')<=player.hp){
var num=0;
var player=_status.event.player;
for(var i=0;i1) return 'zeroplayertarget';
}
}
}
}
},
}
},
zhiming:{
trigger:{source:'damageBegin'},
filter:function(event,player){
return get.distance(event.player,player,'attack')>1&&event.card&&event.card.name=='sha';
},
forced:true,
content:function(){
trigger.num++;
}
},
lianshe:{
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha'){
return num+player.countUsed()-player.countUsed('sha');
}
},
},
trigger:{player:'useCard'},
frequent:true,
filter:function(event){
return event.card&&event.card.name=='sha';
},
usable:1,
content:function(){
player.draw();
},
ai:{
threaten:1.5
}
},
pianyi:{
trigger:{player:'phaseEnd'},
direct:true,
filter:function(event,player){
return !player.getStat('damage');
},
content:function(){
"step 0"
player.chooseToMove(2,get.prompt('pianyi'));
"step 1"
if(result.bool){
player.logSkill('pianyi');
}
}
},
lingdong:{
trigger:{player:'phaseEnd'},
direct:true,
filter:function(event,player){
return player.countUsed('sha')>0;
},
content:function(){
"step 0"
player.chooseToMove(player.countUsed('sha'),get.prompt('lingdong'));
"step 1"
if(result.bool){
player.logSkill('lingdong');
}
}
},
_noactpunish:{
trigger:{player:'useCard'},
filter:function(event,player){
return _status.currentPhase==player&&event.targets&&(event.targets.length>1||event.targets[0]!=player);
},
forced:true,
popup:false,
content:function(){
player.addTempSkill('noactpunish');
}
},
noactpunish:{},
_chess_chuzhang:{
enable:'phaseUse',
usable:1,
direct:true,
delay:false,
preservecancel:true,
filter:function(event,player){
var num=0;
var xy=player.getXY();
var neighbour;
neighbour=player.getNeighbour(-1,0);
if(neighbour&&typeof neighbour.tempObstacle!='number'&&game.obstacles.contains(neighbour)){
num++;
}
else if(xy[0]==0){
num++;
}
neighbour=player.getNeighbour(1,0);
if(neighbour&&typeof neighbour.tempObstacle!='number'&&game.obstacles.contains(neighbour)){
num++;
}
else if(xy[0]+1>=ui.chesswidth){
num++;
}
neighbour=player.getNeighbour(0,-1);
if(neighbour&&typeof neighbour.tempObstacle!='number'&&game.obstacles.contains(neighbour)){
num++;
}
else if(xy[1]==0){
num++;
}
neighbour=player.getNeighbour(0,1);
if(neighbour&&typeof neighbour.tempObstacle!='number'&&game.obstacles.contains(neighbour)){
num++;
}
else if(xy[1]+1>=ui.chessheight){
num++;
}
return num>=3;
},
content:function(){
'step 0'
event.obstacles=[];
event.movemap={};
var neighbour;
neighbour=player.getNeighbour(-1,0);
if(neighbour&&typeof neighbour.tempObstacle!='number'&&game.obstacles.contains(neighbour)){
event.obstacles.push(neighbour);
if(player.movable(-2,0)){
event.movemap['[-1,0]']=neighbour;
}
}
neighbour=player.getNeighbour(1,0);
if(neighbour&&typeof neighbour.tempObstacle!='number'&&game.obstacles.contains(neighbour)){
event.obstacles.push(neighbour);
if(player.movable(2,0)){
event.movemap['[1,0]']=neighbour;
}
}
neighbour=player.getNeighbour(0,-1);
if(neighbour&&typeof neighbour.tempObstacle!='number'&&game.obstacles.contains(neighbour)){
event.obstacles.push(neighbour);
if(player.movable(0,-2)){
event.movemap['[0,-1]']=neighbour;
}
}
neighbour=player.getNeighbour(0,1);
if(neighbour&&typeof neighbour.tempObstacle!='number'&&game.obstacles.contains(neighbour)){
event.obstacles.push(neighbour);
if(player.movable(0,2)){
event.movemap['[0,1]']=neighbour;
}
}
if(!event.obstacles.length){
event.finish();
return;
}
else if(event.obstacles.length==1){
event.obstacle=event.obstacles[0];
}
else if(event.isMine()){
for(var i=0;i'+lib.translate._chess_chuzhang_info+'');
event.custom.replace.confirm=function(){
player.getStat().skill._chess_chuzhang--;
event.cancelled=true;
game.resume();
};
}
'step 1'
if(ui.confirm){
ui.confirm.classList.add('removing');
}
_status.imchoosing=false;
if(!event.cancelled){
if(!event.obstacle){
event.obstacle=event.obstacles.randomGet();
}
var moved=false;
for(var i in event.movemap){
if(event.movemap[i]==event.obstacle){
var xy=JSON.parse(i);
if(game.moveObstacle(event.obstacle,xy[0],xy[1])){
moved=true;
break;
}
}
}
if(!moved){
game.removeObstacle(event.obstacle);
}
player.popup('除障');
game.delay();
}
for(var i=0;i0;
},
content:function(){
"step 0"
var move=2;
move=game.checkMod(player,move,'chessMove',player);
player.chooseToMove(move).phasing=true;
"step 1"
if(ui.confirm){
ui.confirm.classList.add('removing');
}
if(!result.bool){
var skill=player.getStat().skill;
skill._chessmove--;
if(typeof skill._chessmovetried=='number'){
skill._chessmovetried++;
}
else{
skill._chessmovetried=1;
}
}
},
ai:{
order:5,
result:{
playerx:function(player){
if(get.mode()=='tafang'&&_status.enemies.contains(player)){
return 1;
}
var nh=player.countCards('h');
if(!player.countCards('h','sha')&&
!player.countCards('h','shunshou')&&
!player.countCards('h','bingliang')){
if(nh<=Math.min(3,player.hp)) return Math.random()-0.3;
else if(nh<=Math.min(2,player.hp)) return Math.random()-0.4;
return Math.random()-0.5;
}
var neighbour;
neighbour=player.getNeighbour(0,1);
if(neighbour&&game.players.contains(neighbour)&&neighbour.side!=player.side){
if(get.distance(player,neighbour,'attack')<1) return 1;
return 0;
}
neighbour=player.getNeighbour(0,-1);
if(neighbour&&game.players.contains(neighbour)&&neighbour.side!=player.side){
if(get.distance(player,neighbour,'attack')<1) return 1;
return 0;
}
neighbour=player.getNeighbour(1,0);
if(neighbour&&game.players.contains(neighbour)&&neighbour.side!=player.side){
if(get.distance(player,neighbour,'attack')<1) return 1;
return 0;
}
neighbour=player.getNeighbour(-1,0);
if(neighbour&&game.players.contains(neighbour)&&neighbour.side!=player.side){
if(get.distance(player,neighbour,'attack')<1) return 1;
return 0;
}
return 1;
},
player:function(player){
if(player.getStat().skill._chessmovetried>=10){
return 0;
}
var x=lib.skill._chessmove.ai.result.playerx(player);
if(player.isMad()) return -x;
return x;
}
}
}
},
_chesscenter:{
trigger:{player:['phaseBegin','useCardBegin','useSkillBegin','respondBegin','damageBegin','loseHpBegin'],
target:'useCardToBegin'},
forced:true,
priority:100,
popup:false,
content:function(){
player.chessFocus();
},
},
boss_bfengxing:{
mod:{
chessMove:function(player,current){
return current+2;
},
attackFrom:function(from,to,current){
return current-2;
},
},
trigger:{player:'phaseDrawBegin'},
forced:true,
content:function(){
trigger.num+=2;
}
},
boss_chiyu:{
enable:'phaseUse',
usable:1,
filterCard:{color:'red'},
nodelay:true,
check:function(card){return 8-get.value(card);},
filterTarget:function(card,player,target){
return get.distance(player,target)<=5&&player!=target;
},
filter:function(event,player){
return player.countCards('h',{color:'red'})>0;
},
selectTarget:-1,
content:function(){
target.damage('fire');
},
line:'fire',
ai:{
order:1,
result:{
target:function(player,target){
return get.damageEffect(target,player,target,'fire');
}
}
}
},
boss_tenglong:{
enable:'phaseUse',
usable:1,
position:'he',
filterCard:{type:'equip'},
init:function(player){
player.forcemin=true;
},
check:function(card){
var player=_status.currentPhase;
if(player.countCards('he',{subtype:get.subtype(card)})>1){
return 12-get.equipValue(card);
}
return 8-get.equipValue(card);
},
filter:function(event,player){
return player.countCards('he',{type:'equip'});
},
filterTarget:function(card,player,target){
return player!=target&&get.distance(player,target)<=2;
},
content:function(){
target.damage(3,'fire');
},
ai:{
order:9,
result:{
target:function(player,target){
return get.damageEffect(target,player,target,'fire');
}
}
}
},
boss_wuying:{
mod:{
globalTo:function(from,to,distance){
return distance+2;
},
chessMove:function(player,current){
return current-1;
}
}
},
boss_wushang:{
trigger:{player:'phaseBegin'},
forced:true,
filter:function(event,player){
for(var i=0;i=ui.chessheight-1) return false;
}
var node=ui.create.div('.player.minskin.playergrid',player.parentNode);
node.link=player;
ui.placeChess(node,pos);
return node;
},
fakeme:function(){
if(ui.fakeme){
ui.fakeme.delete();
}
ui.fakeme=ui.create.div('.fakeme.avatar',ui.me);
ui.fakeme.style.backgroundImage=game.me.node.avatar.style.backgroundImage;
}
},
click:{
moveContainer:function(x,y,scroll){
if(scroll){
clearTimeout(ui.chessContainer._scrolling);
ui.chessContainer._scrolling=true;
ui.chess.style.transition='transform 0.5s';
ui.refresh(ui.chess);
}
else if(ui.chessContainer._scrolling){
return;
}
if(typeof x==='number') ui.chessContainer.chessLeft+=x;
if(typeof y==='number') ui.chessContainer.chessTop+=y;
var xmin=0;
if(lib.config.show_history=='left'){
xmin=-50;
}
if(ui.chessContainer.chessLeftxmax) ui.chessContainer.chessLeft=xmax;
if(ui.chessContainer.chessTop>ymax) ui.chessContainer.chessTop=ymax;
ui.chess.style.transform='translate('+(-ui.chessContainer.chessLeft)+'px,'+(-ui.chessContainer.chessTop)+'px)';
if(scroll){
var ending=ui.chess.listenTransition(function(){
if(ui.chess._ending==ending){
clearTimeout(ui.chessContainer._scrolling);
delete ui.chess._ending;
ui.chess._scrolling=setTimeout(function(){
ui.chessContainer._scrolling=null;
ui.chess.style.transition='';
},500);
}
});
ui.chess._ending=ending;
}
},
chessInfo:function(e){
if(this.link.isAlive()){
this.link.chessFocus();
if(this.link.classList.contains('selectable')||
this.link.classList.contains('selected')){
ui.click.target.call(this.link,e);
ui.click.window.call(ui.window,e);
}
e.stopPropagation();
}
},
playergrid:function(){
if(!_status.paused) return;
var pos=parseInt(this.dataset.position);
this.link.moveTo(pos%ui.chesswidth,Math.floor(pos/ui.chesswidth));
if(ui.movegrids){
while(ui.movegrids.length){
ui.movegrids.shift().delete();
}
}
_status.event.result={
bool:true,
move:this.link.dataset.position
};
game.resume();
},
obstacle:function(){
if(_status.event.chooseObstacle&&_status.paused&&
_status.event.obstacles&&_status.event.obstacles.contains(this)){
_status.event.obstacle=this;
game.resume();
}
}
}
},
get:{
chessDistance:function(from,to){
var fxy=from.getXY();
var txy=to.getXY();
return Math.abs(fxy[0]-txy[0])+Math.abs(fxy[1]-txy[1]);
},
rawAttitude:function(from,to){
return (from.side===to.side?6:-6);
}
},
card:{
chess_shezhang:{
type:'basic',
fullskin:true,
modeimage:'chess',
enable:true,
filterTarget:function(card,player,target){
if(target.movable(-1,0)) return true;
if(target.movable(1,0)) return true;
if(target.movable(0,-1)) return true;
if(target.movable(0,1)) return true;
return false;
},
content:function(){
var xy=target.getXY();
var x=xy[0];
var y=xy[1];
if(target.movable(-1,0)){
game.addTempObstacle(x-1,y,game.countPlayer());
}
if(target.movable(1,0)){
game.addTempObstacle(x+1,y,game.countPlayer());
}
if(target.movable(0,1)){
game.addTempObstacle(x,y+1,game.countPlayer());
}
if(target.movable(0,-1)){
game.addTempObstacle(x,y-1,game.countPlayer());
}
},
content_old:function(){
'step 0'
var pos=parseInt(player.dataset.position);
var poses=[];
if(player.movable(-1,0)){
poses.push(pos-1);
}
if(player.movable(1,0)){
poses.push(pos+1);
}
if(player.movable(0,-1)){
poses.push(pos-ui.chesswidth);
}
if(player.movable(0,1)){
poses.push(pos+ui.chesswidth);
}
event.poses=poses;
if(poses.length==1){
event.obstacle=poses[0];
event.grids=[];
}
else if(event.isMine()){
event.grids=player.createRangeShadow(1,function(){
event.obstacle=this.dataset.position;
game.resume();
})
game.pause();
_status.imchoosing=true;
for(var i=0;i对阵模式- n人对战n人的模式,由单人控制,开始游戏后随机分配位置与出牌顺序
- '+
'每人在出牌阶段有一次移动的机会,可移动的最大距离为2
- '+
'任何卡牌或技能无法指定位置相隔8个格以上的角色为目标
- '+
'杀死对方阵营的角色可摸一张牌,杀死本方阵营无惩罚
- '+
'若开启主将,双方各选择一名角色成为主将。主将体力上限加一,主将死亡后,若有副将,副将代替之成为主将,否则游戏结束
- '+
'开启无尽模式后,任何一方有角色死亡都将选择一名新角色重新加入战场,直到点击左上角的结束游戏按钮手动结束游戏。结束游戏时,杀敌更多的一方获胜
- '+
'行动顺序为指定时,双方无论存活角色角色多少都将轮流进行行动。在一方所有角色行动完毕进行下一轮行动时,若其人数比另一方少,另一方可指定至多X名角色名摸一张牌,X为人数之差
- '+
'开启战场机关后,每个回合结束时有一定机率出现一个机关,该机关不参与战斗,并有一个影响周围或全体角色的效果。机关在出现后的5~10个回合内消失
- '+
'开启击退效果后,当一名角色对距离两格以内的目标造成伤害后,受伤害角色将沿反方向移动一格
- '+
'战场上可设置出现随机路障,角色无法移动到路障处。当一名角色的周围四格有至少三格为路障或在战场外时,其可以在回合内清除一个相邻路障
'+
'君主模式
- 收集武将进行战斗,根据战斗难度及我方出场武将的强度,战斗胜利后将获得数量不等的金钱。没有君主出场时,获得的金钱较多
- '+
'金钱可以用来招募随机武将,招到已有武将,或遣返不需要的武将时可得到招募令
- '+
'战斗中有君主出场时可招降敌将,成功率取决于敌将的稀有度、剩余体力值以及手牌数。成功后战斗立即结束且没有金钱奖励。每发动一次招降,无论成功还是失败,都会扣除10招募令
- '+
'挑战武将会与该武将以及与其强度相近的武将进行战斗,敌方人数与我方出场人数相同,但不少于3。胜利后可通过招募令招募该武将,普通/稀有/史诗/传说武将分别需要40/100/400/1600招募令
- '+
'竞技场:
随机选择9名武将,每次派出1~3名武将参战。战斗中阵亡的武将不能再次上场。
战斗后武将进入疲劳状态,若立即再次出场则初始体力值-1。
战斗中本方武将行动时可召唤后援,令一名未出场的已方武将加入战斗。后援武将在战斗结束后无论存活与否均不能再次出场
当取得12场胜利或所有武将全部阵亡后结束,并根据胜场数获得随机奖励 - '+
'修改金钱:
game.changeMoney
修改招募令:
game.changeDust
'
},
};
});