'use strict';
game.import('mode',function(lib,game,ui,get,ai,_status){
	return {
		name:'brawl',
		game:{
			syncMenu:true,
		},
		start:function(){
			ui.auto.hide();
			if(!lib.storage.scene){
				lib.storage.scene={};
			}
			if(!lib.storage.stage){
				lib.storage.stage={};
			}
			if(!_status.extensionmade){
				_status.extensionmade=[];
			}
			if(_status.extensionscene){
				game.save('scene',lib.storage.scene);
			}
			if(_status.extensionstage){
				game.save('stage',lib.storage.stage);
			}
			var dialog=ui.create.dialog('hidden');
			dialog.classList.add('fixed');
			dialog.classList.add('scroll1');
			dialog.classList.add('scroll2');
			dialog.classList.add('fullwidth');
			dialog.classList.add('fullheight');
			dialog.classList.add('noupdate');
			dialog.classList.add('character');
			dialog.contentContainer.style.overflow='visible';
			dialog.style.overflow='hidden';
			dialog.content.style.height='100%';
			dialog.contentContainer.style.transition='all 0s';
			if(!lib.storage.directStage) dialog.open();
			var packnode=ui.create.div('.packnode',dialog);
			lib.setScroll(packnode);
			var clickCapt=function(){
				var active=this.parentNode.querySelector('.active');
				if(this.link=='stage'){
					if(get.is.empty(lib.storage.scene)){
						alert('请创建至少1个场景');
						return;
					}
				}
				if(active){
					if(active==this) return;
					for(var i=0;i<active.nodes.length;i++){
						active.nodes[i].remove();
						if(active.nodes[i].showcaseinterval){
							clearInterval(active.nodes[i].showcaseinterval);
							delete active.nodes[i].showcaseinterval;
						}
					}
					active.classList.remove('active');
				}
				this.classList.add('active');
				for(var i=0;i<this.nodes.length;i++){
					dialog.content.appendChild(this.nodes[i]);
				}
				var showcase=this.nodes[this.nodes.length-1];
				showcase.style.height=(dialog.content.offsetHeight-showcase.offsetTop)+'px';
				if(typeof showcase.action=='function'){
					if(showcase.action(showcase._showcased?false:true)!==false){
						showcase._showcased=true;
					}
				}
				if(this._nostart) start.style.display='none';
				else start.style.display='';
				game.save('currentBrawl',this.link);
			}
			var createNode=function(name){
				var info=lib.brawl[name];
				var node=ui.create.div('.dialogbutton.menubutton.large',info.name,packnode,clickCapt);
				node.style.transition='all 0s';
				var caption=info.name;
				var modeinfo='';
				if(info.mode){
					modeinfo=get.translation(info.mode)+'模式';
				}
				if(info.submode){
					if(modeinfo){
						modeinfo+=' - ';
					}
					modeinfo+=info.submode;
				}
				var intro;
				if(Array.isArray(info.intro)){
					intro='<ul style="text-align:left;margin-top:0;width:450px">';
					if(modeinfo){
						intro+='<li>'+modeinfo;
					}
					for(var i=0;i<info.intro.length;i++){
						intro+='<li>'+info.intro[i];
					}
				}
				else{
					intro='';
					if(modeinfo){
						intro+='('+modeinfo+')';
					}
					intro+=info.intro;
				}
				var showcase=ui.create.div();
				showcase.style.margin='0px';
				showcase.style.padding='0px';
				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%';
				}
				else{
					node.nodes=[
						ui.create.div('.caption',caption),
						ui.create.div('.text center',intro),
						showcase
					];
				}
				node.link=name;
				node._nostart=info.nostart;
				if(lib.storage.currentBrawl==name){
					clickCapt.call(node);
				}
				return node;
			}
			var clickStart=function(){
				var active=packnode.querySelector('.active');
				if(active){
					for(var i=0;i<active.nodes.length;i++){
						if(active.nodes[i].showcaseinterval){
							clearInterval(active.nodes[i].showcaseinterval);
							delete active.nodes[i].showcaseinterval;
						}
					}
					var info;
					if(active.link.indexOf('stage_')==0){
						var level;
						if(Array.isArray(arguments[0])){
							level={index:arguments[0][1]};
						}
						else{
							level=dialog.content.querySelector('.menubutton.large.active');
						}
						if(level){
							var stagesave=lib.storage.stage;
							var stage=stagesave[active.link.slice(6)];
							game.save('lastStage',level.index);
							lib.onover.push(function(bool){
								_status.createControl=ui.controls[0];
								if(bool&&level.index+1<stage.scenes.length){
									ui.create.control('下一关',function(){
										game.save('directStage',[stage.name,level.index+1],'brawl');
										localStorage.setItem(lib.configprefix+'directstart',true);
										game.reload();
									});
									if(level.index+1>stage.level){
										stage.level=level.index+1;
										game.save('stage',stagesave,'brawl');
									}
									if(stage.mode!='sequal'){
										game.save('lastStage',level.index+1,'brawl');
									}
								}
								else{
									ui.create.control('重新开始',function(){
										if(stage.mode=='sequal'&&bool&&level.index==stage.scenes.length-1){
											game.save('directStage',[stage.name,0],'brawl');
										}
										else{
											game.save('directStage',[stage.name,level.index],'brawl');
										}
										localStorage.setItem(lib.configprefix+'directstart',true);
										game.reload();
									});
									if(stage.mode=='sequal'&&level.index==stage.scenes.length-1){
										stage.level=0;
										game.save('stage',stagesave,'brawl');
									}
									if(stage.mode!='sequal'){
										game.save('lastStage',level.index,'brawl');
									}
								}
								delete _status.createControl;
							});
							var scene=stage.scenes[level.index];
							info={
								name:scene.name,
								intro:scene.intro,
							};
							for(var i in lib.brawl.scene.template){
								info[i]=get.copy(lib.brawl.scene.template[i]);
							}
							if(!scene.gameDraw){
								info.content.noGameDraw=true;
							}
							info.content.scene=scene;
						}
						else{
							return;
						}
					}
					else{
						info=lib.brawl[active.link];
					}
					lib.translate.restart='返回';
					dialog.delete();
					ui.brawlinfo=ui.create.system('乱斗',null,true);
					lib.setPopped(ui.brawlinfo,function(){
						var uiintro=ui.create.dialog('hidden');
						uiintro.add(info.name);
						var intro;
						if(Array.isArray(info.intro)){
							intro='<ul style="text-align:left;margin-top:0;width:450px">';
							for(var i=0;i<info.intro.length;i++){
								intro+='<li>'+info.intro[i];
							}
							intro+='</ul>'
						}
						else{
							intro=info.intro;
						}
						uiintro.add('<div class="text center">'+intro+'</div>');
						var ul=uiintro.querySelector('ul');
						if(ul){
							ul.style.width='180px';
						}
						uiintro.add(ui.create.div('.placeholder'));
						return uiintro;
					},250);
					ui.auto.show();
					_status.brawl=info.content;
					game.switchMode(info.mode);
					if(info.init){
						info.init();
					}
				}
			};
			var start=ui.create.div('.menubutton.round.highlight','斗',dialog.content,clickStart);
			start.style.position='absolute';
			start.style.left='auto';
			start.style.right='10px';
			start.style.top='auto';
			start.style.bottom='10px';
			start.style.width='80px';
			start.style.height='80px';
			start.style.lineHeight='80px';
			start.style.margin='0';
			start.style.padding='5px';
			start.style.fontSize='72px';
			start.style.zIndex=3;
			start.style.transition='all 0s';
			game.addScene=function(name,clear){
				var scene=lib.storage.scene[name];
				var brawl={
					name:name,
					intro:scene.intro,
				};
				for(var i in lib.brawl.scene.template){
					brawl[i]=get.copy(lib.brawl.scene.template[i]);
				}
				if(!scene.gameDraw){
					brawl.content.noGameDraw=true;
				}
				brawl.content.scene=scene;
				lib.brawl['scene_'+name]=brawl;
				var node=createNode('scene_'+name);
				if(clear){
					game.addSceneClear();
					clickCapt.call(node);
					_status.sceneChanged=true;
				}
			};
			game.addStage=function(name,clear){
				var stage=lib.storage.stage[name];
				var brawl={
					name:name,
					intro:stage.intro,
					content:{}
				};
				for(var i in lib.brawl.stage.template){
					brawl[i]=get.copy(lib.brawl.stage.template[i]);
				}
				brawl.content.stage=stage;
				lib.brawl['stage_'+name]=brawl;
				var node=createNode('stage_'+name);
				if(clear){
					game.addStageClear();
					clickCapt.call(node);
				}
			}
			game.removeScene=function(name){
				delete lib.storage.scene[name];
				game.save('scene',lib.storage.scene);
				_status.sceneChanged=true;
				for(var i=0;i<packnode.childElementCount;i++){
					if(packnode.childNodes[i].link=='scene_'+name){
						if(packnode.childNodes[i].classList.contains('active')){
							for(var j=0;j<packnode.childElementCount;j++){
								if(packnode.childNodes[j].link=='scene'){
									clickCapt.call(packnode.childNodes[j]);
								}
							}
						}
						packnode.childNodes[i].remove();
						break;
					}
				}
			}
			game.removeStage=function(name){
				delete lib.storage.stage[name];
				game.save('stage',lib.storage.stage);
				for(var i=0;i<packnode.childElementCount;i++){
					if(packnode.childNodes[i].link=='stage_'+name){
						if(packnode.childNodes[i].classList.contains('active')){
							for(var j=0;j<packnode.childElementCount;j++){
								if(get.is.empty(lib.storage.scene)){
									if(packnode.childNodes[j].link=='scene'){
										clickCapt.call(packnode.childNodes[j]);
									}
								}
								else{
									if(packnode.childNodes[j].link=='stage'){
										clickCapt.call(packnode.childNodes[j]);
									}
								}
							}
						}
						packnode.childNodes[i].remove();
						break;
					}
				}
			}
			var sceneNode;
			for(var i in lib.brawl){
				if(get.config(i)===false) continue;
				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);
			}
			for(var i in lib.storage.stage){
				game.addStage(i);
			}
			if(!lib.storage.currentBrawl){
				clickCapt.call(packnode.firstChild);
			}
			game.save('lastStage');
			if(lib.storage.directStage){
				var directStage=lib.storage.directStage;
				game.save('directStage');
				clickStart(directStage);
			}
			lib.init.onfree();
		},
		brawl:{
			huanhuazhizhan:{
				name:'幻化之战',
				mode:'identity',
				intro:[
					'杀死所有其他角色,成为最后的存活者',
					'所有角色改为四血白板,依靠灵力值获得技能。灵力值可以通过各种方式获得',
				],
				showcase:function(init){
					if(init){
						this.nodes=[];
					}
					else{
						while(this.nodes.length){
							this.nodes.shift().remove();
						}
					}
					var lx=this.offsetWidth/2-120;
					var ly=Math.min(lx,this.offsetHeight/2-60);
					var setPos=function(node){
						var i=node.index;
						var deg=Math.PI/4*i;
						var dx=Math.round(lx*Math.cos(deg));
						var dy=Math.round(ly*Math.sin(deg));
						node.style.transform='translate('+dx+'px,'+dy+'px)';
					}
					var characterz=['guyong','litong','mazhong','fuwan','chengpu','liaohua','xinxianying','liuyu'];
					for(var i=0;i<8;i++){
						var node=ui.create.player(null,true);
						this.nodes.push(node);
						node.init(characterz[i]);
						node.classList.add('minskin');
						node.node.marks.remove();
						node.node.hp.remove();
						node.node.count.remove();
						node.style.left='calc(50% - 60px)';
						node.style.top='calc(50% - 60px)';
						node.index=i;
						node.style.borderRadius='100%';
						node.node.avatar.style.borderRadius='100%';
						node.node.name.remove();
						setPos(node);
						this.appendChild(node);
					}
					var nodes=this.nodes;
					this.showcaseinterval=setInterval(function(){
						for(var i=0;i<nodes.length;i++){
							nodes[i].index++;
							if(nodes[i].index>7){
								nodes[i].index=0;
							}
							setPos(nodes[i]);
						}
					},1000);
				},
				init:function(){},
				content:{
					submode:'normal',
					chooseCharacterBefore:function(){
					game.identityVideoName='幻化之战';
					var skills=[];
					var banned=[
						'xinfu_guhuo','reguhuo','jixi','duanchang','huashen','xinsheng','rehuashen','rexinsheng',
						'jinqu','nzry_binglve','nzry_huaiju','nzry_yili','nzry_zhenglun','nzry_mingren','nzry_zhenliang','drlt_qingce',
						'new_wuhun','qixing','kuangfeng','dawu','baonu','wumou','ol_wuqian','ol_shenfen','renjie','jilue','nzry_junlve','nzry_dinghuo','drlt_duorui',
						'chuanxin','cunsi',
						'jueqing','huilei','paiyi','fuhun','zhuiyi','olddanshou','yanzhu','juexiang','jiexun','bizhuan','tongbo',
						'xinfu_zhanji','xinfu_jijun','xinfu_fangtong',
						'xinfu_qianchong','pdgyinshi','shuliang',
						'zongkui','guju','bmcanshi','dingpan','xinfu_lingren','new_luoyan','junwei','gxlianhua',
						'qizhou','fenyue','dianhu','linglong','fenxin','mouduan',
						'cuorui','xinmanjuan','xinfu_jianjie','jianjie_faq','new_meibu','xinfu_xingzhao','jici',
						'xianfu','fenyong','xuehen','yingbin','midao','yishe','yinbing','juedi',
						'bushi','xinfu_dianhua','xinfu_falu','xinfu_zhenyi','lskuizhu','pingjian','xjshijian','fentian','zhiri','xindan',
						'xinzhengnan','xinfu_xiaode',
						'komari_xueshang','qiaosi_map',
					];
					var characters=[];
					for(var name in lib.character){
						if(!lib.character[name]) continue;
						if(lib.filter.characterDisabled(name)) continue;
						if(name.indexOf('old_')==0) continue;
						var skillsx=lib.character[name][3].slice(0);
						lib.character[name][2]=4;
						lib.character[name][3]=[];
						if(lib.character[name][4]) lib.character[name][4].remove('hiddenSkill');
						characters.push(name);
						var list=skillsx.slice(0);
						for(var j=0;j<skillsx.length;j++){
							var info=get.info(skillsx[j]);
							if(!info){
								skillsx.splice(j,1);
								list.splice(j--,1);
								continue;
							}
							if(typeof info.derivation=='string') list.push(info.derivation);
							else if(Array.isArray(info.derivation)) list.addArray(info.derivation);
						}
						for(var j=0;j<list.length;j++){
							if(skills.contains(list[j])||banned.contains(list[j])) continue;
							var info=get.info(list[j]);
							if(!info||info.zhuSkill||info.juexingji||info.charlotte||info.limited||info.hiddenSkill||info.dutySkill||info.groupSkill||(info.ai&&info.ai.combo)) continue;
							skills.push(list[j]);
						}
					}
					_status.characterlist=characters;
					var pack={
						skills:skills,
						pack:{
							card:{
								hhzz_toulianghuanzhu:{
									enable:true,
									cardimage:"toulianghuanzhu",
									chongzhu:true,
									type:'trick',
									filterTarget:function(card,player,target){
										return target.skillH.length>0;
									},
									content:function(){
										target.removeSkillH(target.skillH.randomGet());
										var skills=lib.huanhuazhizhan.skills;
										skills.randomSort();
										for(var i=0;i<skills.length;i++){
											if(!target.skillH.contains(skills[i])){
												target.addSkillH(skills[i]);
												break;
											}
										}
									},
									ai:{
										order:10,
										result:{
											target:function(){
												return 0.5-Math.random();
											},
										},
									},
								},
								hhzz_fudichouxin:{
									enable:true,
									cardimage:"fudichouxin",
									type:'trick',
									filterTarget:function(card,player,target){
										return target.skillH.length>0;
									},
									content:function(){
										target.removeSkillH(target.skillH.randomGet());
									},
									ai:{
										order:10,
										result:{target:-1},
									},
								},
							},
							character:{
								hhzz_shiona:['female','key',1,['hhzz_huilei']],
								hhzz_kanade:['female','key',2,['hhzz_youlian']],
								hhzz_takaramono1:['male','qun',5,['hhzz_jubao','hhzz_huizhen']],
								hhzz_takaramono2:['male','qun',3,['hhzz_jubao','hhzz_zhencang']],
							},
							skill:{
								_lingli_damage:{
									trigger:{source:'damage'},
									forced:true,
									popup:false,
									filter:function(event,player){
										return event.player==player._toKill;
									},
									content:function(){
										game.log(player,'对击杀目标造成了伤害');
										player.changeLingli(trigger.num);
									},
								},
								_lingli:{
								 mark:true,
								 marktext:'灵',
								 popup:'聚灵',
								 intro:{
								 	name:'灵力',
								 	content:'当前灵力点数:# / 5',
								 },
								 trigger:{
								 	player:'phaseBeginStart',
								 },
								 prompt:'是否消耗2点灵力获得一个技能?',
								 filter:function(event,player){
								 	return player.storage._lingli>1;
								 },
								 check:function(event,player){
								 	return player.skillH.length<3;
								 },
								 content:function(){
								 	'step 0'
								 	player.changeLingli(-2);
								 	'step 1'
								 	event.skills=lib.huanhuazhizhan.skills;
								 	var skills=event.skills;
								 	skills.randomSort();
								 	var list=[];
								 	for(var i=0;i<skills[i].length;i++){
								 		if(!player.skillH.contains(skills[i])) list.push(skills[i]);
								 		if(list.length==3) break;
								 	}
								 	if(!list.length){event.finish();return;}
								 	if(player.storage._lingli>0)	list.push('刷新');
								 	event.list=list;
								 	var dialog=game.getSkillDialog(event.list,'选择获得一个技能');
								 	player.chooseControl(event.list).set('ai',function(){
								 		return 0;
								 	}).dialog=dialog;
								 	'step 2'
							 		if(result.control=='刷新'){
							 			player.changeLingli(-1);
							 			event.goto(1);
							 			return;
							 		}
							 		event.skill=result.control;
							 		if(player.skillH.length==3){
									 	event.lose=true;
											player.chooseControl(player.skillH).prompt='选择失去1个已有技能';
							 		}
								 	'step 3'
								 	if(event.lose) player.removeSkillH(result.control);
								 	player.addSkillH(event.skill);
								 },
								},
								_lingli_round:{
									trigger:{global:'roundStart'},
									forced:true,
									popup:false,
									filter:function(event,player){
										return _status._aozhan!=true&&game.roundNumber>1;
									},
									content:function(){
										player.changeLingli(1);
									},
								},
								_lingli_draw:{
									enable:'phaseUse',
									filter:function(event,player){
										return player.storage._lingli>0;
									},
									content:function(){
										player.changeLingli(-1);
										player.draw();
									},
									delay:0,
									ai:{
										order:10,
										result:{
											player:function(player){
												return (player.storage._lingli-2*(3-player.skillH.length))>0?1:0;
											},
										},
									},
								},
								_lingli_save:{
									trigger:{target:'useCardToTargeted'},
									forced:true,
									popup:false,
									filter:function(event,player){
										return event.card.name=='tao'&&player==event.player._toSave;
									},
									content:function(){
										game.log(trigger.player,'帮助了保护目标');
										trigger.player.changeLingli(1);
									},
								},
								_hhzz_qiankunbagua:{
									trigger:{player:'phaseAfter'},
									forced:true,
									forceDie:true,
									popup:false,
									filter:function(event,player){
										return _status._aozhan&&!player.getStat('damage')&&player.isAlive()||event._lastDead!=undefined;
									},
									content:function(){
										'step 0'
										if(_status._aozhan&&!player.getStat('damage')){
											player.loseHp();
											player.changeLingli(1);
											game.log(player,'本回合内未造成伤害,触发死战模式惩罚');
										}
										if(trigger._lastDead==undefined) event.goto(2);
										'step 1'
										var type=get.rand(1,8);
										event.type=type;
										trigger._lastDead.playerfocus(1200);
										player.$fullscreenpop('乾坤八卦·'+['离','坎','乾','震','兑','艮','巽','坤'][type-1],get.groupnature(trigger._lastDead.group,'raw'));
										game.delay(1.5);
										'step 2'
										var type=event.type;
										switch(type){
											case 1:{
												game.countPlayer(function(current){
													current.loseHp();
												});
												break;
											}
											case 2:{
												game.countPlayer(function(current){
													current.draw(2,'nodelay');
												});
												break;
											}
											case 3:{
												trigger._lastDead.revive(3);
												trigger._lastDead.draw(3);
												break;
											}
											case 4:{
												game.countPlayer(function(current){
													var he=current.getCards('he');
													if(he.length) current.discard(he.randomGet()).delay=false;
												});
												break;
											}
											case 5:{
												game.countPlayer(function(current){
													current.changeLingli(1);
												});
												break;
											}
											case 6:{
												var cards=[];
												game.countPlayer(function(current){
													var card=get.cardPile(function(card){
														return !cards.contains(card)&&get.type(card)=='equip';
													});
													if(card){
														cards.push(card);
														current.$gain(card,'gain2')
														current.gain(card);
													}
												});
												break;
											}
											case 7:{
												game.countPlayer(function(current){
													if(current.skillH.length<3){
														var skills=lib.huanhuazhizhan.skills;
														skills.randomSort();
														for(var i=0;i<skills.length;i++){
															if(!current.skillH.contains(skills[i])){
																current.addSkillH(skills[i]);
																break;
															}
														}
													}
												});
												break;
											}
											case 8:{
												trigger._lastDead.revive(null,false);
												trigger._lastDead.uninit();
												trigger._lastDead.init(['hhzz_shiona','hhzz_kanade','hhzz_takaramono1','hhzz_takaramono2'].randomGet());
												trigger._lastDead.skillH=lib.character[trigger._lastDead.name][3].slice(0);
												trigger._lastDead.addSkill('hhzz_noCard');
												break;
											}
										}
										'step 3'
										if(game.playerx().length<=4&&!_status._aozhan){
											game.countPlayer2(function(current){
												delete current._toKill;
												delete current._toSave;
											});
											ui.huanhuazhizhan.innerHTML='死战模式';
											_status._aozhan=true;
											game.playBackgroundMusic();
											trigger._lastDead.$fullscreenpop('死战模式',get.groupnature(trigger._lastDead.group,'raw')||'fire');
										}
										else game.randomMission();
									},
								},
								hhzz_noCard:{
									mod:{
										cardEnabled:function(){return false},
										cardSavable:function(){return false},
										cardRespondable:function(){return false},
									},
								},
								hhzz_huilei:{
									trigger:{player:'die'},
									forced:true,
									forceDie:true,
									skillAnimation:true,
									logTarget:'source',
									filter:function(event,player){
										return event.source!=undefined;
									},
									content:function(){
										var source=trigger.source;
										var cards=source.getCards('he');
										if(cards.length) source.discard(cards);
									},
									ai:{
										effect:{
											target:function(card,player,target){
												if(get.tag(card,'damage')) return [-5,0];
											}
										}
									}
								},
								hhzz_youlian:{
									trigger:{player:'die'},
									forced:true,
									forceDie:true,
									skillAnimation:true,
									logTarget:'source',
									filter:function(event,player){
										return event.source!=undefined;
									},
									content:function(){
										var source=trigger.source;
										var cards=source.getCards('he');
										if(cards.length) source.discard(cards);
										var skills=source.skillH;
										if(skills.length) source.removeSkillH(skills.randomGet());
									},
									ai:{
										effect:{
											target:function(card,player,target){
												if(get.tag(card,'damage')) return [-5,0];
											}
										}
									}
								},
								hhzz_zhencang:{
									trigger:{player:'die'},
									forced:true,
									filter:function(event,player){
										return event.source!=undefined;
									},
									forceDie:true,
									logTarget:'source',
									content:function(){
										var source=trigger.source;
										source.draw();
										if(source.skillH.length==3) source.removeSkillH(source.skillH.randomGet());
										var skills=lib.huanhuazhizhan.skills;
										skills.randomSort();
										for(var i=0;i<skills.length;i++){
											if(!source.skillH.contains(skills[i])){
												source.addSkillH(skills[i]);
												break;
											}
										}
									},
								},
								hhzz_huizhen:{
									trigger:{player:'die'},
									forced:true,
									forceDie:true,
									logTarget:'source',
									filter:function(event,player){
										return event.source!=undefined;
									},
									content:function(){
										var source=trigger.source;
										source.draw(3);
										if(source.skillH.length==3) source.removeSkillH(source.skillH.randomGet());
										var skills=lib.huanhuazhizhan.skills;
										skills.randomSort();
										for(var i=0;i<skills.length;i++){
											if(!source.skillH.contains(skills[i])){
												source.addSkillH(skills[i]);
												break;
											}
										}
									},
								},
								hhzz_jubao:{
									trigger:{player:'damage'},
									forced:true,
									logTarget:'source',
									filter:function(event,player){
										return event.source!=undefined&&player.countCards('he')>0;
									},
									content:function(){
										var cards=player.getCards('he');
										cards.randomSort();
										cards=cards.slice(0,trigger.num);
										trigger.source.gain('give',cards,player);
									},
									ai:{
										effect:{
											target:function(card,player,target){
												if(get.tag(card,'damage')) return [15,0];
											}
										}
									}
								},
							},
							translate:{
								_lingli:'聚灵',
								_lingli_bg:'灵',
								_lingli_draw:'聚灵',
								hhzz_huilei:'挥泪',
								hhzz_youlian:'犹怜',
								hhzz_zhencang:'珍藏',
								hhzz_huizhen:'汇珍',
								hhzz_jubao:'聚宝',
								hhzz_huilei_info:'锁定技,杀死你的角色弃置所有的牌。',
								hhzz_youlian_info:'锁定技,杀死你的角色弃置所有牌并随机失去一个技能。',
								hhzz_zhencang_info:'锁定技,杀死你的角色摸一张牌并随机获得一个技能(已满则先随机移除一个)。',
								hhzz_huizhen_info:'锁定技,杀死你的角色摸三张牌并随机获得一个技能(已满则先随机移除一个)。',
								hhzz_jubao_info:'锁定技,当你受到伤害的点数确定时,伤害来源随机获得你区域内的X张牌(X为伤害点数)。',
								hhzz_shiona:'汐奈',
								hhzz_kanade:'立华奏',
								hhzz_takaramono1:'坚实宝箱',
								hhzz_takaramono2:'普通宝箱',
								hhzz_toulianghuanzhu:'偷梁换柱',
								hhzz_fudichouxin:'釜底抽薪',
								hhzz_toulianghuanzhu_info:'出牌阶段,对一名角色使用,随机更换其一个技能。可重铸。',
								hhzz_fudichouxin_info:'出牌阶段,对一名角色使用,随机弃置其一个技能。',
								nei:' ',
								nei2:' ',
								刷新_info:'消耗1点灵力值,刷新上述技能',
							},
						},
						get:{
							rawAttitude:function(from,to){
								if(from==to||to==from._toSave) return 10;
								if(to==from._toKill) return -30;
								return -10;
							}
						},
						eltc:{
							gameDraw:function(){
								var end=player;
								var numx;
								var num=function(player){
									return player._hSeat>5?5:4;
								};
								do{
									if(typeof num=='function'){
										numx=num(player);
									}
									if(player._hSeat>6) player.changeLingli(1);
									player.directgain(get.cards(numx));
									player=player.next;
								}
								while(player!=end);
							},
						},
						eltp:{
							addSkillH:function(skill){
								this.skillH.add(skill);
								this.addSkillLog.apply(this,arguments);
							},
							removeSkillH:function(skill){
								this.skillH.remove(skill);
								game.log(this,'失去了技能','#g【'+get.translation(skill)+'】');
								this.removeSkill(skill);
							},
							dieAfter:function(){
								var evt=_status.event.getParent('phase');
								if(evt) evt._lastDead=this;
								if(game.playerx().length==1) game.over(game.me.isAlive());
							},
							$dieAfter:function(){},
							hasUnknown:function(){return false},
							isUnknown:function(){return false},
							getEnemies:function(){
								var list=game.playerx();
								list.remove(this);
								return list;
							},
							dieAfter2:function(source){
								if(source&&this.name.indexOf('hhzz_')!=0){
									if(source._toKill==this) game.log(source,'击杀目标成功');
									source.draw(this==source._toKill?2:1);
									source.changeLingli(this==source._toKill?3:2);
								}
								if(!_status._aozhan){
									var that=this;
									game.countPlayer(function(current){
										if(current._toSave==that){
											game.log(current,'保护失败');
											var cards=current.getCards('he');
											if(cards.length) current.discard(cards.randomGets(4));
										}
									});
								}
							},
							logAi:function(){},
							hasZhuSkill:function(){return false},
							changeLingli:function(num){
								if(typeof num!='number') num=1;
								if(typeof this.storage._lingli!='number') this.storage._lingli=0;
								if(num>0){
									num=Math.min(num,5-this.storage._lingli);
									if(num<1) return;
									game.log(this,'获得了','#y'+get.cnNumber(num)+'点','灵力');
								}
								else{
									if(-num>this.storage._lingli) num=-this.storage._lingli;
									if(num==0) return;
									game.log(this,'失去了','#y'+get.cnNumber(-num)+'点','灵力');
								}
								this.storage._lingli+=num;
								this.markSkill('_lingli');
							},
						},
						game:{
							playerx:function(){
								return game.filterPlayer(function(current){
									if(current.name.indexOf('hhzz_')==0) return;
									return true;
								});
							},
							randomMission:function(){
								if(_status._aozhan) return;
								if(!ui.huanhuazhizhan){
									ui.huanhuazhizhan=ui.create.div('.touchinfo.left',ui.window);
									if(ui.time3) ui.time3.style.display='none';
								}
								var players=game.playerx();
								for(var i=0;i<players.length;i++){
									var player=players[i];
									var list=players.slice(0).randomSort();
									list.remove(player);
									player._toKill=list[0];
									player._toSave=list[1];
								}
								ui.huanhuazhizhan.innerHTML='击杀'+get.translation(game.me._toKill)+',保护'+get.translation(game.me._toSave);
							},
							getSkillDialog:function(skills,prompt){
								var dialog=ui.create.dialog('hidden','forcebutton');
								if(prompt) dialog.addText(prompt);
								for(var i=0;i<skills.length;i++){
									dialog.add('<div class="popup pointerdiv" style="width:80%;display:inline-block"><div class="skill">【'+get.translation(skills[i])+'】</div><div>'+lib.translate[skills[i]+'_info']+'</div></div>');
								}
								dialog.addText(' <br> ');
								return dialog;
							},
							chooseCharacter:function(){
								var next=game.createEvent('chooseCharacter',false);
								next.showConfig=true;
								next.setContent(function(){
									'step 0'
									game.zhu=game.players.randomGet();
									var i=1;
									var current=game.zhu;
									while(true){
										current.skillH=[];
										current._hSeat=i;
										current.identity='nei';
										current.setNickname(get.cnNumber(i,true)+'号位');
										for(var ii in lib.huanhuazhizhan.eltp) current[ii]=lib.huanhuazhizhan.eltp[ii];
										current=current.next;
										i++;
										if(current==game.zhu) break;
									}
									ui.arena.classList.add('choose-character');
									game.me.chooseButton(['请选择角色形象',[_status.characterlist.randomRemove(5),'character']],true).onfree=true;
									'step 1'
									game.me.init(result.links[0]);
									var list=['xiandeng','shulv','xisheng'];
									game.me.chooseControl(list).dialog=game.getSkillDialog(list,'选择要获得的初始技能');
									'step 2'
									var list=['_lingli','_lingli_round','_lingli_draw','_lingli_save','_hhzz_qiankunbagua','_lingli_damage'];
									for(var i=0;i<list.length;i++){
										game.addGlobalSkill(list[i]);
									}
									game.me.addSkillH(result.control);
									game.countPlayer(function(current){
										if(!current.name){
											current.init(_status.characterlist.randomRemove(1)[0]);
											current.addSkillH(['xiandeng','shulv','xisheng'].randomGet());
										}
										current.storage._lingli=0;
										current.markSkill('_lingli');
									});
									game.showIdentity(true);
									'step 3'
									game.randomMission();
									var list=[
										game.createCard('hhzz_fudichouxin'),
										game.createCard('hhzz_toulianghuanzhu'),
										game.createCard('hhzz_toulianghuanzhu'),
										game.createCard('hhzz_toulianghuanzhu'),
									];
									for(var i=0;i<list.length;i++){
										ui.cardPile.insertBefore(list[i],ui.cardPile.childNodes[get.rand(ui.cardPile.childElementCount)]);
									}
									game.updateRoundNumber();
									'step 4'
									setTimeout(function(){	
										ui.arena.classList.remove('choose-character');
									},500);
									_status.videoInited=true;
									game.addVideo('arrangeLib',null,{
   							skill:{
   								_lingli_damage:{},
   								_lingli:{
   								 mark:true,
   								 marktext:'灵',
   								 popup:'聚灵',
   								 intro:{
   								 	name:'灵力',
   								 	content:'当前灵力点数:# / 5',
   								 },
   								},
   								_lingli_round:{},
   								_lingli_draw:{},
   								_lingli_save:{},
   								hhzz_noCard:{},
   								hhzz_huilei:{
   									skillAnimation:true,
   								},
   								hhzz_youlian:{
   									skillAnimation:true,
   								},
   								hhzz_zhencang:{},
   								hhzz_huizhen:{},
   								hhzz_jubao:{},
   							},
										card:{
											hhzz_toulianghuanzhu:{
												cardimage:"toulianghuanzhu",
											},
											hhzz_fudichouxin:{
												cardimage:"fudichouxin",
											},
										},
										character:{
											hhzz_shiona:['female','key',1,['hhzz_huilei']],
											hhzz_kanade:['female','key',2,['hhzz_youlian']],
											hhzz_takaramono1:['male','qun',5,['hhzz_jubao','hhzz_huizhen']],
											hhzz_takaramono2:['male','qun',3,['hhzz_jubao','hhzz_zhencang']],
										},
										translate:{
											_lingli:'聚灵',
											_lingli_bg:'灵',
											_lingli_draw:'聚灵',
											hhzz_huilei:'挥泪',
											hhzz_youlian:'犹怜',
											hhzz_zhencang:'珍藏',
											hhzz_huizhen:'汇珍',
											hhzz_jubao:'聚宝',
											hhzz_huilei_info:'锁定技,杀死你的角色弃置所有的牌。',
											hhzz_youlian_info:'锁定技,杀死你的角色弃置所有牌并随机失去一个技能。',
											hhzz_zhencang_info:'锁定技,杀死你的角色摸一张牌并随机获得一个技能(已满则先随机移除一个)。',
											hhzz_huizhen_info:'锁定技,杀死你的角色摸三张牌并随机获得一个技能(已满则先随机移除一个)。',
											hhzz_jubao_info:'锁定技,当你受到伤害的点数确定时,伤害来源随机获得你区域内的X张牌(X为伤害点数)。',
											nei:' ',
											nei2:' ',
											hhzz_shiona:'汐奈',
											hhzz_kanade:'立华奏',
											hhzz_takaramono1:'坚实宝箱',
											hhzz_takaramono2:'普通宝箱',
   								hhzz_toulianghuanzhu:'偷梁换柱',
   								hhzz_fudichouxin:'釜底抽薪',
   								hhzz_toulianghuanzhu_info:'出牌阶段,对一名角色使用,随机更换其一个技能。可重铸。',
   								hhzz_fudichouxin_info:'出牌阶段,对一名角色使用,随机弃置其一个技能。',
										},
									});
								});
							},
						},
					};
					var func=function(pack){
 					for(var i in pack.pack){
 						for(var j in pack.pack[i]) lib[i][j]=pack.pack[i][j];
 					}
 					for(var i in pack.eltc) lib.element.content[i]=pack.eltc[i];
 					for(var i in pack.eltp) lib.element.player[i]=pack.eltp[i];
 					for(var i in pack.game) game[i]=pack.game[i];
 					for(var i in pack.get) get[i]=pack.get[i];
 					lib.huanhuazhizhan=pack;
					}
					func(pack);
					},
				},
			},
			qunxionggeju:{
				name:'群雄割据',
				mode:'guozhan',
				intro:[
					'开放不同势力组合,以优先亮出的武将牌作为自己的势力,双势力武将则使用列表的第一个势力',
				],
				showcase:function(init){
					var node=this;
					var list=[
						['re_yuanshao','re_lidian'],
						['zhangliao','sunquan'],
						['xin_fazheng','sp_lvfan'],
						['sunjian','lvbu'],
						['jin_simashi','re_weiyan'],
						['guanyu','sunce'],
						['zhenji','sp_zhangjiao'],
						['guojia','sp_zhugeliang'],
					];
					list.randomSort();
					var func=function(){
						var card=ui.create.player(null,true);
						var name=list.shift();
						card.init(name[0],name[1]);
						card.node.marks.remove();
						card.node.count.remove();
						card.node.hp.remove();
						card.classList.remove('unseen');
						node.nodes.push(card);
						card.style.position='absolute';
						card.style.zIndex=2;
						card.style.transition='all 2s';
						var rand1=Math.round(Math.random()*100);
						var rand2=Math.round(Math.random()*100);
						var rand3=Math.round(Math.random()*40)-20;
						card.style.left='calc('+rand1+'% - '+(rand1*1.5)+'px)';
						card.style.top='calc('+rand2+'% - '+(rand2*1.8)+'px)';
						card.style.transform='scale(0.8) rotate('+rand3+'deg)';
						node.appendChild(card);
						ui.refresh(card);
					};
					
					var list2=['feilongduofeng','taipingyaoshu','dinglanyemingzhu'];
					var func2=function(){
						var card=game.createCard(list2.shift(),'noclick');
						node.nodes.push(card);
						card.style.position='absolute';
						card.style.zIndex=2;
						card.style.transition='all 2s';
						var rand1=Math.round(Math.random()*100);
						var rand2=Math.round(Math.random()*100);
						var rand3=Math.round(Math.random()*40)-20;
						card.style.left='calc('+rand1+'% - '+rand1+'px)';
						card.style.top='calc('+rand2+'% - '+rand2+'px)';
						card.style.transform='rotate('+rand3+'deg)';
						node.appendChild(card);
						ui.refresh(card);
					};
					if(init){
						node.nodes=[];
					}
					else{
						while(node.nodes.length){
							node.nodes.shift().remove();
						}
					}
					for(var i=0;i<5;i++){
						func();
					}
					for(var i=0;i<3;i++){
						func2();
						func();
					}
				},
				init:function(){},
				content:{
					chooseCharacterBefore:function(){
						game.chooseCharacter=function(){
				var next=game.createEvent('chooseCharacter',false);
				next.showConfig=true;
				next.addPlayer=true;
				next.ai=function(player,list,back){
					var mainx=list[0];
					var vicex=list[1];
					if(get.guozhanReverse(mainx,vicex)){
						mainx=list[1];
						vicex=list[0];
					}
					player.init(mainx,vicex,false);
					if(back){
						list.remove(player.name1);
						list.remove(player.name2);
						for(var i=0;i<list.length;i++){
							back.push(list[i]);
						}
					}
					return;
				}
				next.setContent(function(){
					"step 0"
					var eltp={
						getGuozhanGroup:function(num){
							if(num==1) return lib.character[this.name2][1];
							return lib.character[this.name1][1];
						},
						wontYe:function(group){
							if(!group) group=lib.character[this.name1][1];
							if(_status.yeidentity&&_status.yeidentity.contains(group)) return false;
							if(get.zhu(this,null,true)) return true;
							var num=3,total=get.population();
							if(total<6) num=1;
							else if(total<8) num=2;
							return get.totalPopulation(group)+1<=num;
						},
					}
					for(var i of game.players){
						for(var j in eltp) i[j]=eltp[j];
					}
					for(var j in eltp) lib.element.player[j]=eltp[j];
					ui.arena.classList.add('choose-character');
					var addSetting=function(dialog){
						dialog.add('选择座位').classList.add('add-setting');
						var seats=document.createElement('table');
						seats.classList.add('add-setting');
						seats.style.margin='0';
						seats.style.width='100%';
						seats.style.position='relative';
						for(var i=1;i<=game.players.length;i++){
							var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode');
							td.innerHTML='<span>'+get.cnNumber(i,true)+'</span>';
							td.link=i-1;
							seats.appendChild(td);
							td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){
								if(_status.dragged) return;
								if(_status.justdragged) return;
								if(_status.cheat_seat){
									_status.cheat_seat.classList.remove('bluebg');
									if(_status.cheat_seat==this){
										delete _status.cheat_seat;
										return;
									}
								}
								this.classList.add('bluebg');
								_status.cheat_seat=this;
							});
						}
						dialog.content.appendChild(seats);
						if(game.me==game.zhu){
							seats.previousSibling.style.display='none';
							seats.style.display='none';
						}

						dialog.add(ui.create.div('.placeholder.add-setting'));
						dialog.add(ui.create.div('.placeholder.add-setting'));
						if(get.is.phoneLayout()) dialog.add(ui.create.div('.placeholder.add-setting'));
					};
					var removeSetting=function(){
						var dialog=_status.event.dialog;
						if(dialog){
							dialog.style.height='';
							delete dialog._scrollset;
							var list=Array.from(dialog.querySelectorAll('.add-setting'));
							while(list.length){
								list.shift().remove();
							}
							ui.update();
						}
					};
					event.addSetting=addSetting;
					event.removeSetting=removeSetting;

					var chosen=lib.config.continue_name||[];
					game.saveConfig('continue_name');
					event.chosen=chosen;

					var i;
					event.list=[];
					for(i in lib.character){
						if(i.indexOf('gz_shibing')==0) continue;
						if(chosen.contains(i)) continue;
						if(lib.filter.characterDisabled(i)) continue;
						if(get.config('onlyguozhan')){
							if(!lib.characterPack.mode_guozhan[i]) continue;
							if(get.is.jun(i)) continue;
						}
						if(lib.character[i][4].contains('hiddenSkill')) continue;
						if(lib.character[i][2]==3||lib.character[i][2]==4||lib.character[i][2]==5)
						event.list.push(i);
					}
					_status.characterlist=event.list.slice(0);
					_status.yeidentity=[];
					event.list.randomSort();
					// var list=event.list.splice(0,parseInt(get.config('choice_num')));
					var list=event.list.randomRemove(parseInt(get.config('choice_num')));
					if(_status.auto){
						event.ai(game.me,list);
						lib.init.onfree();
					}
					else if(chosen.length){
						game.me.init(chosen[0],chosen[1],false);
						lib.init.onfree();
					}
					else{
						var dialog=ui.create.dialog('选择角色','hidden',[list,'character']);
						if(get.config('change_identity')){
							addSetting(dialog);
						}
						var next=game.me.chooseButton(dialog,true,2).set('onfree',true);
						next.filterButton=function(button){
							if(ui.dialog.buttons.length<=10){
								for(var i=0;i<ui.dialog.buttons.length;i++){
									if(ui.dialog.buttons[i]!=button){
										if(lib.element.player.perfectPair.call({
											name1:button.link,name2:ui.dialog.buttons[i].link
										})){
											button.classList.add('glow2');
										}
									}
								}
							}
							return true;
						};
						next.switchToAuto=function(){
							event.ai(game.me,list);
							ui.arena.classList.remove('selecting');
						};
						var createCharacterDialog=function(){
							event.dialogxx=ui.create.characterDialog('heightset',function(i){
								if(i.indexOf('gz_shibing')==0) return true;
								if(get.config('onlyguozhan')){
									if(!lib.characterPack.mode_guozhan[i]) return true;
									if(get.is.jun(i)) return true;
								}
							},get.config('onlyguozhanexpand')?'expandall':undefined,get.config('onlyguozhan')?'onlypack:mode_guozhan':undefined);
							if(ui.cheat2){
								ui.cheat2.animate('controlpressdownx',500);
								ui.cheat2.classList.remove('disabled');
							}
						};
						if(lib.onfree){
							lib.onfree.push(createCharacterDialog);
						}
						else{
							createCharacterDialog();
						}
						ui.create.cheat2=function(){
							ui.cheat2=ui.create.control('自由选将',function(){
								if(this.dialog==_status.event.dialog){
									if(game.changeCoin){
										game.changeCoin(50);
									}
									this.dialog.close();
									_status.event.dialog=this.backup;
									this.backup.open();
									delete this.backup;
									game.uncheck();
									game.check();
									if(ui.cheat){
										ui.cheat.animate('controlpressdownx',500);
										ui.cheat.classList.remove('disabled');
									}
								}
								else{
									if(game.changeCoin){
										game.changeCoin(-10);
									}
									this.backup=_status.event.dialog;
									_status.event.dialog.close();
									_status.event.dialog=_status.event.parent.dialogxx;
									this.dialog=_status.event.dialog;
									this.dialog.open();
									game.uncheck();
									game.check();
									if(ui.cheat){
										ui.cheat.classList.add('disabled');
									}
								}
							});
							if(lib.onfree){
								ui.cheat2.classList.add('disabled');
							}
						}
						ui.create.cheat=function(){
							_status.createControl=ui.cheat2;
							ui.cheat=ui.create.control('更换',function(){
								if(ui.cheat2&&ui.cheat2.dialog==_status.event.dialog){
									return;
								}
								if(game.changeCoin){
									game.changeCoin(-3);
								}
								event.list=event.list.concat(list);
								event.list.randomSort();
								// list=event.list.splice(0,parseInt(get.config('choice_num')));
								list=event.list.randomRemove(parseInt(get.config('choice_num')));
								var buttons=ui.create.div('.buttons');
								var node=_status.event.dialog.buttons[0].parentNode;
								_status.event.dialog.buttons=ui.create.buttons(list,'character',buttons);
								_status.event.dialog.content.insertBefore(buttons,node);
								buttons.animate('start');
								node.remove();
								game.uncheck();
								game.check();
							});
							delete _status.createControl;
						}
						if(!ui.cheat&&get.config('change_choice'))
						ui.create.cheat();
						if(!ui.cheat2&&get.config('free_choose'))
						ui.create.cheat2();
					}
					"step 1"
					if(ui.cheat){
						ui.cheat.close();
						delete ui.cheat;
					}
					if(ui.cheat2){
						ui.cheat2.close();
						delete ui.cheat2;
					}
					if(result.buttons){
						game.me.init(result.buttons[0].link,result.buttons[1].link,false);
						game.addRecentCharacter(result.buttons[0].link,result.buttons[1].link);
					}
					// game.me.setIdentity(game.me.group);
					event.list.remove(game.me.name1);
					event.list.remove(game.me.name2);
					for(var i=0;i<game.players.length;i++){
						if(game.players[i]!=game.me){
							event.ai(game.players[i],event.list.randomRemove(parseInt(get.config('choice_num'))),event.list);
						}
					}
					for(var i=0;i<game.players.length;i++){
						game.players[i].classList.add('unseen');
						game.players[i].classList.add('unseen2');
						_status.characterlist.remove(game.players[i].name);
						_status.characterlist.remove(game.players[i].name2);
						if(game.players[i]!=game.me){
							game.players[i].node.identity.firstChild.innerHTML='猜';
							game.players[i].node.identity.dataset.color='unknown';
							game.players[i].node.identity.classList.add('guessing');
						}
						game.players[i].hiddenSkills=lib.character[game.players[i].name1][3].slice(0);
						var hiddenSkills2=lib.character[game.players[i].name2][3];
						for(var j=0;j<hiddenSkills2.length;j++){
							game.players[i].hiddenSkills.add(hiddenSkills2[j]);
						}
						for(var j=0;j<game.players[i].hiddenSkills.length;j++){
							if(!lib.skill[game.players[i].hiddenSkills[j]]){
								game.players[i].hiddenSkills.splice(j--,1);
							}
						}
						game.players[i].group='unknown';
						game.players[i].sex='unknown';
						game.players[i].name1=game.players[i].name;
						game.players[i].name='unknown';
						game.players[i].identity='unknown';
						game.players[i].node.name.show();
						game.players[i].node.name2.show();
						game.players[i]._group=lib.character[game.players[i].name1][1];
						for(var j=0;j<game.players[i].hiddenSkills.length;j++){
							game.players[i].addSkillTrigger(game.players[i].hiddenSkills[j],true);
						}
					}
					setTimeout(function(){
						ui.arena.classList.remove('choose-character');
					},500);
				});
			}
					},
				},
			},
			duzhansanguo:{
				name:'毒战三国',
				mode:'identity',
				intro:'牌堆中额外添加10%的毒',
				showcase:function(init){
					var node=this;
					var func=function(){
						var card=game.createCard('du','noclick');
						node.nodes.push(card);
						card.style.position='absolute';
						var rand1=Math.round(Math.random()*100);
						var rand2=Math.round(Math.random()*100);
						var rand3=Math.round(Math.random()*40)-20;
						card.style.left='calc('+rand1+'% - '+rand1+'px)';
						card.style.top='calc('+rand2+'% - '+rand2+'px)';
						card.style.transform='scale(0.8) rotate('+rand3+'deg)';
						card.style.opacity=0;
						node.appendChild(card);
						ui.refresh(card);
						card.style.opacity=1;
						card.style.transform='scale(1) rotate('+rand3+'deg)';
						if(node.nodes.length>7){
							setTimeout(function(){
								while(node.nodes.length>5){
									node.nodes.shift().delete();
								}
							},500);
						}
					};
					if(init){
						node.nodes=[];
						for(var i=0;i<5;i++){
							func();
						}
					}
					node.showcaseinterval=setInterval(func,1000);
				},
				content:{
					cardPile:function(list){
						game.identityVideoName='毒战三国杀';
						lib.config.bannedcards.remove('du');
						if(game.bannedcards) game.bannedcards.remove('du');
						var num=Math.ceil(list.length/10);
						while(num--){
							list.push([['heart','diamond','club','spade'].randomGet(),Math.ceil(Math.random()*13),'du']);
						}
						return list;
					}
				},
			},
			daozhiyueying:{
				name:'导师月英',
				mode:'identity',
				intro:'牌堆中所有普通锦囊牌数量翻倍;移除拥有集智技能的角色',
				showcase:function(init){
					var node=this;
					var player1,player2;
					if(init){
						player1=ui.create.player(null,true).init('huangyueying');
						player2=ui.create.player(null,true);
						if(lib.character.jsp_huangyueying){
							player2.init('jsp_huangyueying');
						}
						else if(lib.character.re_huangyueying){
							player2.init('re_huangyueying');
						}
						else{
							player2.init('huangyueying');
						}
						player1.style.left='20px';
						player1.style.top='20px';
						player1.style.transform='scale(0.9)';
						player1.node.count.innerHTML='2';
						player1.node.count.dataset.condition='mid';
						player2.style.left='auto';
						player2.style.right='20px';
						player2.style.top='20px';
						player2.style.transform='scale(0.9)';
						player2.node.count.innerHTML='2';
						player2.node.count.dataset.condition='mid';
						this.appendChild(player1);
						this.appendChild(player2);
						this.player1=player1;
						this.player2=player2;
					}
					else{
						player1=this.player1;
						player2=this.player2;
					}

					var createCard=function(wuxie){
						var card;
						if(wuxie){
							card=game.createCard('wuxie','noclick');
							card.style.transform='scale(0.9)';
						}
						else{
							card=ui.create.card(null,'noclick',true);
						}
						card.style.opacity=0;
						card.style.position='absolute';
						card.style.zIndex=2;
						card.style.margin=0;
						return card;
					}

					var func=function(){
						game.linexy([
							player1.getLeft()+player1.offsetWidth/2,
							player1.getTop()+player1.offsetHeight/2,
							player2.getLeft()+player2.offsetWidth/2,
							player2.getTop()+player2.offsetHeight/2,
						],node);
						var card=createCard(true);
						card.style.left='43px';
						card.style.top='58px';
						node.appendChild(card);
						ui.refresh(card);
						card.style.opacity=1;
						card.style.transform='scale(0.9) translate(137px,152px)';
						setTimeout(function(){
							card.delete();
						},1000);
						player1.node.count.innerHTML='1';

						setTimeout(function(){
							if(!node.showcaseinterval) return;
							player1.node.count.innerHTML='2';
							var card=createCard();
							card.style.left='43px';
							card.style.top='58px';
							card.style.transform='scale(0.9) translate(137px,152px)';
							node.appendChild(card);
							ui.refresh(card);
							card.style.opacity=1;
							card.style.transform='scale(0.9)';
							setTimeout(function(){
								card.delete();
							},1000);
						},300);

						setTimeout(function(){
							if(!node.showcaseinterval) return;
							player2.node.count.innerHTML='1';
							game.linexy([
								player2.getLeft()+player2.offsetWidth/2,
								player2.getTop()+player2.offsetHeight/2,
								player1.getLeft()+player1.offsetWidth/2,
								player1.getTop()+player1.offsetHeight/2,
							],node);
							var card=createCard(true);
							card.style.left='auto';
							card.style.right='43px';
							card.style.top='58px';
							node.appendChild(card);
							ui.refresh(card);
							card.style.opacity=1;
							card.style.transform='scale(0.9) translate(-137px,152px)';
							setTimeout(function(){
								card.delete();
							},700);

							setTimeout(function(){
								if(!node.showcaseinterval) return;
								player2.node.count.innerHTML='2';
								var card=createCard();
								card.style.left='auto';
								card.style.right='43px';
								card.style.top='58px';
								card.style.transform='scale(0.9) translate(-137px,152px)';
								node.appendChild(card);
								ui.refresh(card);
								card.style.opacity=1;
								card.style.transform='scale(0.9)';
								setTimeout(function(){
									card.delete();
								},700);
							},300);
						},1000);
					};
					node.showcaseinterval=setInterval(func,2200);
					func();
				},
				init:function(){
					for(var i in lib.character){
						var skills=lib.character[i][3]
						if(skills.contains('jizhi')||skills.contains('rejizhi')||skills.contains('lingzhou')||skills.contains('sbaiyin')){
							delete lib.character[i];
						}
					}
				},
				content:{
					cardPile:function(list){
						game.identityVideoName='导师月英';
						var list2=[];
						for(var i=0;i<list.length;i++){
							list2.push(list[i]);
							if(get.type(list[i][2])=='trick'){
								list2.push(list[i]);
							}
						}
						return list2;
					}
				}
			},
			weiwoduzun:{
				name:'唯我独尊',
				mode:'identity',
				intro:[
					'牌堆中杀的数量增加30%',
					'游戏开始时,主公获得一枚战神标记',
					'拥有战神标记的角色杀造成的伤害+1',
					'受到杀造成的伤害后战神印记将移到伤害来源的武将牌上'
				],
				showcase:function(init){
					var node=this;
					var player;
					if(init){
						player=ui.create.player(null,true);
						player.node.avatar.style.backgroundSize='cover';
						player.node.avatar.setBackgroundImage('image/mode/boss/character/boss_lvbu2.jpg');
						player.node.avatar.show();
						player.style.left='calc(50% - 75px)';
						player.style.top='20px';
						player.node.count.remove();
						player.node.hp.remove();
						player.style.transition='all 0.5s';
						node.appendChild(player);
						node.playernode=player;
					}
					else{
						player=node.playernode;
					}
					var num=0;
					var num2=0;
					this.showcaseinterval=setInterval(function(){
						var dx,dy
						if(num2%5==0){
							// player.animate('target');
							// player.animate('zoomin');
							player.classList.add('zoomin3');
							player.hide();
							player.style.transitionDuration='0.7s'
							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);
							for(var i=0;i<5;i++){
								switch(i){
									case 0:dx=-180;dy=0;break;
									case 1:dx=-140;dy=100;break;
									case 2:dx=0;dy=155;break;
									case 3:dx=140;dy=100;break;
									case 4:dx=180;dy=0;break;
								}
								var card=game.createCard('sha','noclick');
								card.style.left='calc(50% - 52px)';
								card.style.top='68px';
								card.style.position='absolute';
								card.style.margin=0;
								card.style.zIndex=2;
								card.style.opacity=0;
								node.appendChild(card);
								ui.refresh(card);
								card.style.opacity=1;
								card.style.transform='translate('+dx+'px,'+dy+'px)';
								setTimeout((function(card){
									return function(){
										card.delete();
									};
								})(card),700);
							}
						}
						num2++;
						if(num>=5){
							num=0;
						}
					},700);
				},
				init:function(){
					game.identityVideoName='唯我独尊';
					lib.skill.weiwoduzun={
						mark:true,
						intro:{
							content:'杀造成的伤害+1'
						},
						group:['weiwoduzun_damage','weiwoduzun_lose'],
						subSkill:{
							damage:{
								trigger:{source:'damageBegin'},
								forced:true,
								filter:function(event){
									return event.card&&event.card.name=='sha'&&event.notLink();
								},
								content:function(){
									trigger.num++;
								}
							},
							lose:{
								trigger:{player:'damageEnd'},
								forced:true,
								filter:function(event){
									return event.source&&event.source.isAlive();
								},
								content:function(){
									player.removeSkill('weiwoduzun');
									trigger.source.addSkill('weiwoduzun');
								}
							}
						}
					};
					lib.translate.weiwoduzun='战神';
					lib.translate.weiwoduzun_bg='尊';
				},
				content:{
					cardPile:function(list){
						var num=0;
						for(var i=0;i<list.length;i++){
							if(list[i][2]=='sha') num++;
						}
						num=Math.round(num*0.3);
						if(num<=0) return list;
						while(num--){
							var nature='';
							var rand=Math.random();
							if(rand<0.15){
								nature='fire';
							}
							else if(rand<0.3){
								nature='thunder';
							}
							var suit=['heart','spade','club','diamond'].randomGet();
							var number=Math.ceil(Math.random()*13);
							if(nature){
								list.push([suit,number,'sha',nature]);
							}
							else{
								list.push([suit,number,'sha']);
							}
						}
						return list;
					},
					gameStart:function(){
						if(_status.mode=='zhong'){
							game.zhong.addSkill('weiwoduzun');
						}
						else{
							game.zhu.addSkill('weiwoduzun');
						}
					}
				}
			},
			tongxingzhizheng:{
				name:'同姓之争',
				mode:'versus',
				submode:'2v2',
				intro:'姓氏相同的武将组合一队',
				showcase:function(init){
					var node=this;
					var getList=function(){
						var list=[['guanyu','guanping','guansuo','guanyinping'],
						['caocao','caopi','caozhi','caorui'],['liubei','liushan','liuchen'],
						['re_xiahouyuan','xiahouba','xiahoushi'],['sunjian','sunquan','sunce'],
						['sp_zhangjiao','zhangliang','zhangbao'],['zhugeliang','zhugeguo','zhugejin','zhugeke'],
						['mateng','machao','madai','mayunlu']];
						list.randomSort();
						var list2=[];
						for(var i=0;i<list.length;i++){
							list2=list2.concat(list[i]);
						}
						node.list=list2;
					};
					var func=function(){
						if(!node.list.length){
							getList();
						}
						var card=ui.create.player(null,true);
						card.init(node.list.shift());
						card.node.marks.remove();
						card.node.count.remove();
						card.node.hp.remove();
						node.nodes.push(card);
						card.style.position='absolute';
						var rand1=Math.round(Math.random()*100);
						var rand2=Math.round(Math.random()*100);
						var rand3=Math.round(Math.random()*40)-20;
						card.style.left='calc('+rand1+'% - '+(rand1*1.5)+'px)';
						card.style.top='calc('+rand2+'% - '+(rand2*1.8)+'px)';
						card.style.transform='scale(1.2) rotate('+rand3+'deg)';
						card.style.opacity=0;
						ui.refresh(card);
						node.appendChild(card);
						ui.refresh(card);
						card.style.transform='scale(0.9) rotate('+rand3+'deg)';
						card.style.opacity=1;
						if(node.nodes.length>4){
							setTimeout(function(){
								while(node.nodes.length>3){
									node.nodes.shift().delete();
								}
							},500);
						}
					};
					node.list=[];
					if(init){
						node.nodes=[];
						for(var i=0;i<3;i++){
							func();
						}
					}
					node.showcaseinterval=setInterval(func,1000);
				},
				init:function(){
					var map={};
					var map3=[];
					var list1=['司','夏','诸','皇'];
					var list2=['马','侯','葛','甫'];
					var exclude=['界','新','大','旧','☆','神','晋','族','谋'];
					for(var i in lib.character){
						if(lib.filter.characterDisabled(i)) continue;
						if(lib.character[i][1]=='key') continue;
						var surname=lib.translate[i];
						for(var j=0;j<surname.length;j++){
							if((surname[j]+surname[j+1])=='手杀'){j++;continue}
							if(exclude.contains(surname[j])) continue;
							if(!/[a-z]/i.test(surname[j])){
								var index=list1.indexOf(surname[j]);
								if(index!=-1&&surname[j+1]==list2[index]){
									surname=surname[j]+surname[j+1];
								}
								else{
									surname=surname[j];
								}
								break;
							}
						}
						if(!map[surname]){
							map[surname]=[];
						}
						map[surname].push(i);
					}
					for(var i in map){
						if(map[i].length<4){
							delete map[i];
						}
						else{
							map3.push(i);
						}
					}
					_status.brawl.map=map;
					_status.brawl.map3=map3;
				},
				content:{
					submode:'two',
					chooseCharacterFixed:true,
					chooseCharacter:function(list,player){
						game.versusVideoName='同姓之争';
						_status.noReplaceCharacter=true;
						if(player.side==game.me.side){
							if(_status.brawl.mylist){
								return _status.brawl.mylist.randomGets(2);
							}
						}
						else{
							if(_status.brawl.enemylist){
								return _status.brawl.enemylist.randomGets(2);
							}
						}
						var surname=_status.brawl.map3.randomRemove();
						var list=_status.brawl.map[surname];
						if(player==game.me){
							_status.brawl.mylist=list;
						}
						else{
							_status.brawl.enemylist=list;
						}
						return list.randomRemove(2);
					}
				}
			},
			tongqueduopao:{
				name:'铜雀夺袍',
				mode:'identity',
				intro:[
					'主公必选曹操',
					'其余玩家从曹休、文聘、曹洪、张郃、夏侯渊、徐晃、许褚这些武将中随机选中一个',
					'游戏开始时将麒麟弓和爪黄飞电各置于每名角色的装备区内,大宛马洗入牌堆,移除其他的武器牌和坐骑牌'
				],
				init:function(){
					game.saveConfig('player_number','8','identity');
					game.saveConfig('double_character',false,'identity');
				},
				showcase:function(init){
					var node=this;
					var list=['caoxiu','wenpin','caohong','zhanghe','re_xiahouyuan','re_xuhuang','re_xuzhu'];
					list.randomSort();
					list.push('re_caocao');
					var func=function(){
						var card=ui.create.player(null,true);
						card.init(list.shift());
						card.node.marks.remove();
						card.node.count.remove();
						card.node.hp.remove();
						node.nodes.push(card);
						card.style.position='absolute';
						card.style.zIndex=2;
						card.style.transition='all 2s';
						var rand1=Math.round(Math.random()*100);
						var rand2=Math.round(Math.random()*100);
						var rand3=Math.round(Math.random()*40)-20;
						card.style.left='calc('+rand1+'% - '+(rand1*1.5)+'px)';
						card.style.top='calc('+rand2+'% - '+(rand2*1.8)+'px)';
						card.style.transform='scale(0.8) rotate('+rand3+'deg)';
						node.appendChild(card);
						ui.refresh(card);
					};

					var list2=['qilin','dawan','zhuahuang'];
					var func2=function(){
						var card=game.createCard(list2.shift(),'noclick');
						node.nodes.push(card);
						card.style.position='absolute';
						card.style.zIndex=2;
						card.style.transition='all 2s';
						var rand1=Math.round(Math.random()*100);
						var rand2=Math.round(Math.random()*100);
						var rand3=Math.round(Math.random()*40)-20;
						card.style.left='calc('+rand1+'% - '+rand1+'px)';
						card.style.top='calc('+rand2+'% - '+rand2+'px)';
						card.style.transform='rotate('+rand3+'deg)';
						node.appendChild(card);
						ui.refresh(card);
					};

					if(init){
						node.nodes=[];
					}
					else{
						while(node.nodes.length){
							node.nodes.shift().remove();
						}
					}
					for(var i=0;i<5;i++){
						func();
					}
					for(var i=0;i<3;i++){
						func2();
						func();
					}
					var func3=function(){
						for(var i=0;i<node.nodes.length;i++){
							var card=node.nodes[i];
							if(card.classList.contains('player')){
								var rand1=Math.round(Math.random()*100);
								var rand2=Math.round(Math.random()*100);
								var rand3=Math.round(Math.random()*40)-20;
								card.style.left='calc('+rand1+'% - '+(rand1*1.5)+'px)';
								card.style.top='calc('+rand2+'% - '+(rand2*1.8)+'px)';
								card.style.transform='scale(0.8) rotate('+rand3+'deg)';
							}
							else{
								var rand1=Math.round(Math.random()*100);
								var rand2=Math.round(Math.random()*100);
								var rand3=Math.round(Math.random()*40)-20;
								card.style.left='calc('+rand1+'% - '+rand1+'px)';
								card.style.top='calc('+rand2+'% - '+rand2+'px)';
								card.style.transform='rotate('+rand3+'deg)';
							}
						}
					}
					// func3();
					// node.showcaseinterval=setInterval(func3,5000);
				},
				content:{
					cardPile:function(list){
						for(var i=0;i<list.length;i++){
							var subtype=get.subtype(list[i][2]);
							if(subtype=='equip1'||subtype=='equip3'||subtype=='equip4'){
								list.splice(i--,1);
							}
						}
						for(var i=0;i<8;i++){
							list.push([['heart','diamond','club','spade'].randomGet(),Math.ceil(Math.random()*13),'dawan']);
						}
						return list;
					},
					gameStart:function(){
						game.identityVideoName='铜雀夺袍';
						for(var i=0;i<game.players.length;i++){
							game.players[i].$equip(game.createCard('qilin'));
							game.players[i].$equip(game.createCard('zhuahuang'));
						}
					},
					submode:'normal',
					list:['caoxiu','wenpin','caohong','zhanghe','re_xiahouyuan','re_xuhuang','re_xuzhu'],
					chooseCharacterFixed:true,
					chooseCharacterAi:function(player){
						if(player==game.zhu){
							player.init('re_caocao');
						}
						else{
							_status.brawl.list.remove(game.me.name);
							player.init(_status.brawl.list.randomRemove());
						}
					},
					chooseCharacter:function(){
						_status.noReplaceCharacter=true;
						if(game.me==game.zhu){
							return ['re_caocao'];
						}
						else{
							_status.brawl.list.randomSort();
							return _status.brawl.list;
							// return _status.brawl.list.randomGets(1);
						}
					}
				}
			},
			// shenrudihou:{
			//	 name:'深入敌后',
			//	 mode:'versus',
			//	 submode:'1v1',
			//	 intro:'选将阶段选择武将和对战阶段选择上场的武将都由对手替你选择,而且你不知道对手为你选择了什么武将'
			// },
			tongjiangmoshi:{
				name:'同将模式',
				mode:'identity',
				intro:'玩家选择一个武将,所有角色均使用此武将',
				showcase:function(init){
					if(init){
						this.nodes=[];
					}
					else{
						while(this.nodes.length){
							this.nodes.shift().remove();
						}
					}
					var lx=this.offsetWidth/2-120;
					var ly=Math.min(lx,this.offsetHeight/2-60);
					var setPos=function(node){
						var i=node.index;
						var deg=Math.PI/4*i;
						var dx=Math.round(lx*Math.cos(deg));
						var dy=Math.round(ly*Math.sin(deg));
						node.style.transform='translate('+dx+'px,'+dy+'px)';
					}
					for(var i=0;i<8;i++){
						var node=ui.create.player(null,true);
						this.nodes.push(node);
						node.init('zuoci');
						node.classList.add('minskin');
						node.node.marks.remove();
						node.node.hp.remove();
						node.node.count.remove();
						node.style.left='calc(50% - 60px)';
						node.style.top='calc(50% - 60px)';
						node.index=i;
						node.style.borderRadius='100%';
						node.node.avatar.style.borderRadius='100%';
						node.node.name.remove();
						setPos(node);
						this.appendChild(node);
					}
					var nodes=this.nodes;
					this.showcaseinterval=setInterval(function(){
						for(var i=0;i<nodes.length;i++){
							nodes[i].index++;
							if(nodes[i].index>7){
								nodes[i].index=0;
							}
							setPos(nodes[i]);
						}
					},1000);
				},
				content:{
					gameStart:function(){
						game.identityVideoName='同将模式';
						var target=(_status.mode=='zhong')?game.zhong:game.zhu;
						if(get.config('double_character')){
							target.init(game.me.name1,game.me.name2);
						}
						else{
							target.init(game.me.name1);
						}
						target.hp++;
						target.maxHp++;
						target.update();
					},
					chooseCharacterAi:function(player,list,list2,back){
						if(player==game.zhu){
							return;
						}
						else{
							if(get.config('double_character')){
								player.init(game.me.name1,game.me.name2);
							}
							else{
								player.init(game.me.name1);
							}
						}
					},
					chooseCharacter:function(list,list2,num){
						if(game.me!=game.zhu){
							return list.slice(0,list2);
						}
						else{
							if(_status.event.zhongmode){
								return list.slice(0,6);
							}
							else{
								return list.concat(list2.slice(0,num));
							}
						}
					},
					chooseCharacterBefore:function(){
						if(_status.mode=='purple') _status.mode='normal';
					},
				}
			},
			jiazuzhizheng:{
				name:'家族之争',
				mode:'versus',
				submode:'2v2',
				intro:'势力相同的武将组合一队,获得专属势力技能',
				showcase:function(init){
					var node=this;
					var getList=function(){
						var list=[
							['liubei','guanyu','zhangfei'],
							['caocao','guojia','xunyu'],
							['sunquan','zhangzhang','zhouyu'],
							['re_yuanshao','guotufengji','yj_jushou'],
							['jin_simayi','jin_simazhao','jin_wangyuanji'],
						];
						if(_status.keyVerified) list.push(['key_yuri','key_yuzuru','sp_key_kanade'])
						list.randomSort();
						var list2=[];
						for(var i=0;i<list.length;i++){
							list2=list2.concat(list[i]);
						}
						node.list=list2;
					};
					var func=function(){
						if(!node.list.length){
							getList();
						}
						var card=ui.create.player(null,true);
						card.init(node.list.shift());
						card.node.marks.remove();
						card.node.count.remove();
						card.node.hp.remove();
						node.nodes.push(card);
						card.style.position='absolute';
						var rand1=Math.round(Math.random()*100);
						var rand2=Math.round(Math.random()*100);
						var rand3=Math.round(Math.random()*40)-20;
						card.style.left='calc('+rand1+'% - '+(rand1*1.5)+'px)';
						card.style.top='calc('+rand2+'% - '+(rand2*1.8)+'px)';
						card.style.transform='scale(1.2) rotate('+rand3+'deg)';
						card.style.opacity=0;
						ui.refresh(card);
						node.appendChild(card);
						ui.refresh(card);
						card.style.transform='scale(0.9) rotate('+rand3+'deg)';
						card.style.opacity=1;
						if(node.nodes.length>4){
							setTimeout(function(){
								while(node.nodes.length>3){
									node.nodes.shift().delete();
								}
							},500);
						}
					};
					node.list=[];
					if(init){
						node.nodes=[];
						for(var i=0;i<3;i++){
							func();
						}
					}
					node.showcaseinterval=setInterval(func,1000);
				},
				init:function(){},
				content:{
					submode:'two',
					chooseCharacterFixed:true,
 				chooseCharacterBefore:function(){
						_status.noReplaceCharacter=true;
 					game.versusVideoName='家族之争';
 					var map={
 						wei:[],
 						shu:[],
 						wu:[],
 						qun:[],
 						jin:[],
 						key:[],
 					};
 					var map3=[];
 					var banned=['zuoci','re_zuoci','tw_xiahouba'];
 					for(var i in lib.character){
 						if(lib.filter.characterDisabled2(i)||lib.filter.characterDisabled(i)||banned.contains(i)) continue;
 						var group=lib.character[i][1];
 						if(group&&map[group]) map[group].push(i);
 					}
 					for(var i in map){
 						if(map[i].length<8||(i=='key'&&!_status.keyVerified)){
 							delete map[i];
 						}
 						else{
 							map3.push(i);
 						}
 					}
 					_status.brawl.map=map;
 					_status.brawl.map3=map3;
 					var skill={
 						_jiazu_wei:{
 							trigger:{player:'phaseBegin'},
 							direct:true,
 							popup:'魏业',
 							prompt2:'回合开始时,你可以弃置一张牌并指定一名敌方角色,该角色须弃置一张牌,否则你摸一张牌。',
 							filter:function(event,player){
 								return player.group=='wei'&&player.countCards('he')>0;
 							},
 							content:function(){
 								'step 0'
 								player.chooseCardTarget({
 									prompt:get.prompt2(event.name),
 									filterCard:lib.filter.cardDiscardable,
 									filterTarget:function(card,player,target){
 										return player.side!=target.side;
 									},
 									position:'he',
 									ai1:function(card){
 										return 6-get.value(card);
 									},
 									ai2:function(target){
 										return 1/(1+target.countCards('he'));
 									},
 								});
 								'step 1'
 								if(result.bool){
 									player.logSkill(event.name,result.targets);
 									player.discard(result.cards);
 									result.targets[0].chooseToDiscard('弃置一张牌,或令'+get.translation(player)+'摸一张牌','he').ai=lib.skill.zhiheng.check;
 								}
 								else event.finish();
 								'step 2'
 								if(!result.bool) player.draw();
 							},
 						},
 						_jiazu_shu:{
 							popup:'蜀义',
 							prompt2:'你使用【杀】上限+1;出牌阶段结束时,若你于此阶段使用【杀】次数不少于2,摸一张牌。',
 							mod:{
 								cardUsable:function(card,player,num){
 									if(card.name=='sha'&&player.group=='shu') return num+1;
 								},
 							},
 							trigger:{player:'phaseUseEnd'},
 							forced:true,
 							filter:function(event,player){
 								return player.group=='shu'&&player.getHistory('useCard',function(evt){
 									return evt.card&&evt.card.name=='sha'&&evt.getParent('phaseUse')==event;
 								}).length>1;
 							},
 							content:function(){player.draw()},
 						},
 						_jiazu_wu:{
 							trigger:{player:'phaseEnd'},
 							forced:true,
 							popup:'吴耀',
 							prompt2:'回合结束时,若你的手牌数不等于你的体力值,则你摸一张牌。',
 							filter:function(event,player){
 								return player.group=='wu'&&player.countCards('h')!=player.hp;
 							},
 							content:function(){player.draw()},
 						},
 						_jiazu_qun:{
 							popup:'群心',
 							prompt2:'锁定技,弃牌阶段开始时,若你的手牌数比体力值多2或更多,你本回合手牌上限+1;若你已损失体力值大于1,你手牌上限+1',
 							trigger:{player:'phaseDiscardBegin'},
 							forced:true,
 							filter:function(event,player){
 								return player.group=='qun'&&(player.isDamaged()||player.countCards('h')-player.hp>1);
 							},
 							content:function(){
 								var num=0;
 								if(player.isDamaged()) num++;
 								if(player.countCards('h')-player.hp>1) num++;
 								player.addMark('qunxin_temp',num,false);
 								player.addTempSkill('qunxin_temp','phaseDiscardEnd');
 							},
 						},
 						_jiazu_jin:{
 							trigger:{player:'phaseDrawEnd'},
 							popup:'晋势',
 							prompt2:'摸牌阶段结束时,你可以展示你于此阶段内因摸牌而获得的牌。若这些牌的花色均不同,则你摸一张牌。',
 							filter:function(event,player){
 								var hs=player.getCards('h');
 								return player.group=='jin'&&hs.length>0&&player.getHistory('gain',function(evt){
 									if(evt.getParent().name!='draw'||evt.getParent('phaseDraw')!=event) return false;
 									for(var i of evt.cards){
 										if(hs.contains(i)) return true;
 									}
 									return false;
 								}).length>0;
 							},
 							check:function(event,player){
 								var hs=player.getCards('h'),cards=[],suits=[];
 								player.getHistory('gain',function(evt){
 									if(evt.getParent().name!='draw'||evt.getParent('phaseDraw')!=event) return false;
 									for(var i of evt.cards){
 										if(hs.contains(i)){
 											cards.add(i);
 											suits.add(get.suit(i,player));
 										}
 									}
 								});
 								return cards.length==suits.length;
 							},
 							content:function(){
 								var hs=player.getCards('h'),cards=[],suits=[];
 								player.getHistory('gain',function(evt){
 									if(evt.getParent().name!='draw'||evt.getParent('phaseDraw')!=trigger) return false;
 									for(var i of evt.cards){
 										if(hs.contains(i)){
 											cards.add(i);
 											suits.add(get.suit(i,player));
 										}
 									}
 								});
 								player.showCards(cards,get.translation(player)+'发动了【晋势】');
 								if(cards.length==suits.length) player.draw();
 							},
 						},
 						_jiazu_key:{
 							enable:'phaseUse',
 							usable:1,
 							popup:'键魂',
 							filter:function(event,player){
 								return player.group=='key';
 							},
 							prompt2:'出牌阶段限一次,你可以摸一张牌并获得1点护甲。若如此做,你于当前回合结束时失去1点体力。',
 							content:function(){
 								"step 0"
 								player.draw();
 								"step 1"
 								player.changeHujia(1);
 								"step 2"
 								var evt=event.getParent('phase');
 								if(evt&&evt.after){
 									var next=player.loseHp();
 									event.next.remove(next);
 									evt.after.push(next);
 								}
 							},
 							ai:{
 								order:10,
 								result:{
 									player:function(player){
 										return player.hp-1;
 									},
 								},
 							},
 						},
 						qunxin_temp:{
 							noGlobal:true,
 							onremove:true,
 							mod:{
 								maxHandcard:function(player,num){
 									return num+player.countMark('qunxin_temp');
 								},
 							},
 						},
 						_jiazu_awaken_wei:{
 							popup:'许昌',
 							intro:{
 								content:'锁定技,当你受到伤害后,你摸一张牌。',
 							},
 							trigger:{player:'damageEnd'},
 							forced:true,
 							filter:function(event,player){
 								return player._jiazuAwaken&&player.group=='wei';
 							},
 							content:function(){player.draw()},
 						},
 						_jiazu_awaken_shu:{
 							popup:'成都',
 							intro:{
 								content:'锁定技,当你使用【杀】造成伤害后,你摸一张牌。',
 							},
 							trigger:{source:'damageEnd'},
 							forced:true,
 							filter:function(event,player){
 								return player._jiazuAwaken&&player.group=='shu'&&event.card&&event.card.name=='sha';
 							},
 							content:function(){player.draw()},
 						},
 						_jiazu_awaken_wu:{
 							popup:'武昌',
 							intro:{
 								content:'锁定技,当你使用装备牌时,你摸一张牌。',
 							},
 							trigger:{player:'useCard'},
 							forced:true,
 							filter:function(event,player){
 								return player._jiazuAwaken&&player.group=='wu'&&get.type(event.card)=='equip';
 							},
 							content:function(){player.draw()},
 						},
 						_jiazu_awaken_qun:{
 							popup:'邺城',
 							intro:{
 								content:'锁定技,当你使用锦囊牌指定其他角色为目标后,你摸一张牌。',
 							},
 							trigger:{player:'useCardToPlayered'},
 							forced:true,
 							filter:function(event,player){
 								if(!player._jiazuAwaken||player.group!='qun'||!event.isFirstTarget||get.type(event.card,'trick')!='trick') return false;
 								for(var i=0;i<event.targets.length;i++){
 									if(event.targets[i]!=player) return true;
 								}
 								return false;
 							},
 							content:function(){player.draw()},
 						},
 						_jiazu_awaken_key:{
 							popup:'光坂',
 							intro:{
 								content:'锁定技,当你回复/失去体力后,你摸一张牌。',
 							},
 							trigger:{player:['loseHpEnd','recoverEnd']},
 							forced:true,
 							filter:function(event,player){
 								return player._jiazuAwaken&&player.group=='key';
 							},
 							content:function(){
 								player.draw();
 							},
 						},
 						_jiazu_awaken_jin:{
 							popup:'洛阳',
 							intro:{
 								content:'锁定技,结束阶段,若你手牌中的花色数小于3,则你摸一张牌。',
 							},
 							trigger:{player:'phaseJieshuBegin'},
 							forced:true,
 							filter:function(event,player){
 								if(!player._jiazuAwaken||player.group!='jin') return false;
 								var hs=player.getCards('h'),suits=[];
 								if(hs.length<3) return true;
 								for(var i of hs){
 									suits.add(get.suit(i,player));
 									if(suits.length>2) return false;
 								}
 								return true;
 							},
 							content:function(){
 								player.draw();
 							},
 						},
 						_jiazu_awaken:{
 							trigger:{global:'die'},
 							forced:true,
 							filter:function(event,player){
 								return !player._jiazuAwaken&&event.player.side==player.side;
 							},
 							content:function(){
 								player._jiazuAwaken=true;
 								var name='_jiazu_awaken_'+player.group;
 								if(lib.skill[name]) player.markSkill(name);
 							},
 						},
 					};
 					var translate={};
 					for(var i in skill){
 						lib.skill[i]=skill[i];
 						if(skill[i].popup){
 							lib.translate[i]=skill[i].popup;
 							translate[i]=skill[i].popup;
 						}
 						if(skill[i].prompt2){
 							lib.translate[i+'_info']=skill[i].prompt2;
 							translate[i+'_info']=skill[i].prompt2;
 						}
 						if(!skill[i].noGlobal) game.addGlobalSkill(i);
 					};
 					game.addVideo('arrangeLib',null,{
 						skill:{
  						_jiazu_wei:{
  							popup:'魏业',
  							prompt2:'回合开始时,你可以弃置一张牌并指定一名敌方角色,该角色须弃置一张牌,否则你摸一张牌。',
  						},
  						_jiazu_shu:{
  							popup:'蜀义',
  							prompt2:'你使用【杀】上限+1;出牌阶段结束时,若你于此阶段使用【杀】次数不少于2,摸一张牌。',
  						},
  						_jiazu_wu:{
  							popup:'吴耀',
  							prompt2:'回合结束时,若你的手牌数不等于你的体力值,则你摸一张牌。',
  						},
  						_jiazu_qun:{
  							popup:'群心',
  							prompt2:'锁定技,弃牌阶段开始时,若你的手牌数比体力值多2或更多,你本回合手牌上限+1;若你已损失体力值大于1,你手牌上限+1',
  						},
  						_jiazu_jin:{
 								popup:'晋势',
 								prompt2:'摸牌阶段结束时,你可以展示你于此阶段内因摸牌而获得的牌。若这些牌的花色均不同,则你摸一张牌。',
 							},
  						_jiazu_key:{
  							popup:'键魂',
  							prompt2:'出牌阶段限一次,你可以摸一张牌并获得1点护甲。若如此做,你于当前回合结束时失去1点体力。',
  						},
  						_jiazu_awaken_wei:{
  							popup:'许昌',
  							intro:{
  								content:'锁定技,当你受到伤害后,你摸一张牌。',
  							},
  						},
  						_jiazu_awaken_shu:{
  							popup:'成都',
  							intro:{
  								content:'锁定技,当你使用【杀】造成伤害后,你摸一张牌。',
  							},
  						},
  						_jiazu_awaken_wu:{
  							popup:'武昌',
  							intro:{
  								content:'锁定技,当你使用装备牌时,你摸一张牌。',
  							},
  						},
  						_jiazu_awaken_qun:{
  							popup:'邺城',
  							intro:{
  								content:'锁定技,当你使用锦囊牌指定其他角色为目标后,你摸一张牌。',
  							},
  						},
  						_jiazu_awaken_jin:{
 								popup:'洛阳',
 								intro:{
 									content:'锁定技,结束阶段,若你手牌中的花色数小于3,则你摸一张牌。',
 								},
 							},
  						_jiazu_awaken_key:{
  							popup:'光坂',
  							intro:{
  								content:'锁定技,当你回复/失去体力后,你摸一张牌。',
  							},
  						},
  						_jiazu_awaken:{},
 						},
 						translate:translate,
 					});
					},
					chooseCharacter:function(list,player){
						if(player.side==game.me.side){
							if(_status.brawl.mylist){
								return _status.brawl.mylist.randomGets(player==game.me?5:3);
							}
						}
						else{
							if(_status.brawl.enemylist){
								return _status.brawl.enemylist.randomGets(player==game.me?5:3);
							}
						}
						var surname=_status.brawl.map3.randomRemove();
						var list=_status.brawl.map[surname];
						if(player==game.me){
							_status.brawl.mylist=list;
						}
						else{
							_status.brawl.enemylist=list;
						}
						return list.randomRemove(player==game.me?5:3);
					}
				}
			},
			baiyidujiang:{
				name:'白衣渡江',
				mode:'versus',
				submode:'2v2',
				showcase:function(init){
					var node=this;
					var player1,player2;
					if(init){
						player1=ui.create.player(null,true);
						player1.classList.add('fullskin');
						player1.node.avatar.show();
						player1.node.avatar.setBackground('lvmeng','character');
						player2=ui.create.player(null,true)
						player2.classList.add('fullskin');
						player2.node.avatar.show();
						player2.node.avatar.setBackground('guanyu','character');
						player1.node.marks.remove();
						player1.node.hp.remove();
						player2.node.marks.remove();
						player2.node.hp.remove();
						player1.style.left='20px';
						player1.style.top='20px';
						player1.style.transform='scale(0.9)';
						player1.node.count.remove();
						player2.style.left='auto';
						player2.style.right='20px';
						player2.style.top='20px';
						player2.style.transform='scale(0.9)';
						player2.node.count.remove();
						this.appendChild(player1);
						this.appendChild(player2);
						this.player1=player1;
						this.player2=player2;
					}
					else{
						player1=this.player1;
						player2=this.player2;
					}
					var func=function(){
						setTimeout(function(){
							player1.smoothAvatar();
							player2.smoothAvatar();
							player1.node.avatar.setBackground('re_lvmeng','character');
							player2.node.avatar.setBackground('re_guanyu','character');
						},1500);
						setTimeout(function(){
							player1.smoothAvatar();
							player2.smoothAvatar();
							player1.node.avatar.setBackground('sp_lvmeng','character');
							player2.node.avatar.setBackground('jsp_guanyu','character');
						},3000);
						setTimeout(function(){
							player1.smoothAvatar();
							player2.smoothAvatar();
							player1.node.avatar.setBackground('shen_lvmeng','character');
							player2.node.avatar.setBackground('shen_guanyu','character');
						},4500);
						setTimeout(function(){
							player1.smoothAvatar();
							player2.smoothAvatar();
							player1.node.avatar.setBackground('lvmeng','character');
							player2.node.avatar.setBackground('guanyu','character');
						},6000);
					};
					node.showcaseinterval=setInterval(func,6000);
					func();
				},
				intro:[
					'玩家在选将时可从8张武将牌里选择两张武将牌,一张面向大家可见(加入游戏),另一张是隐藏面孔(暗置)',
					'选择的两张武将牌需满足以下至少两个条件:1.性别相同;2.体力上限相同;3.技能数量相同',
					'每名玩家在其回合开始或回合结束时,可以选择将自己的武将牌弃置,然后使用暗置的武将牌进行剩余的游戏'
				],
				content:{
					submode:'two',
					chooseCharacterBefore:function(){
   			game.versusVideoName='白衣渡江';
   			lib.skill._changeCharacter={
   				trigger:{player:['phaseBefore','phaseAfter']},
   				forced:true,
   				silent:true,
   				popup:false,
   				filter:function(event,player){
   					return player._backupCharacter!=undefined;
   				},
   				content:function(){
   					"step 0"
   					player.chooseControl('确定','取消').set('dialog',['是否替换自己的武将牌?',[[player._backupCharacter],'character']]).set('ai',function(){
   						return Math.random()<0.15?'确定':'取消';
   					});
   					"step 1"
   					if(result.control=='确定'){
   						game.log(player,'将',player.name,'替换为了',player._backupCharacter);
   						player.reinit(player.name,player._backupCharacter);
   						player.changeGroup(lib.character[player._backupCharacter][1],false);
   						delete player._backupCharacter;
   					}
   				},
   			},
   			game.addGlobalSkill('_changeCharacter');
   			game.chooseCharacterTwo=function(){
   				var next=game.createEvent('chooseCharacter',false);
   				next.setContent(function(){
   					'step 0'
   					ui.arena.classList.add('choose-character');
   					for(var i in lib.skill){
   						if(lib.skill[i].changeSeat){
   							lib.skill[i]={};
   							if(lib.translate[i+'_info']){
   								lib.translate[i+'_info']='此模式下不可用';
   							}
   						}
   					}
   					var bool=Math.random()<0.5;
   					var bool2=Math.random()<0.5;
   					var ref=game.players[0];
   
   					ref.side=bool;
   					ref.next.side=bool2;
   					ref.next.next.side=!bool;
   					ref.previous.side=!bool2;
   
   					var firstChoose=game.players.randomGet();
   					if(firstChoose.next.side==firstChoose.side){
   						firstChoose=firstChoose.next;
   					}
   					_status.firstAct=firstChoose;
   					for(var i=0;i<4;i++){
   						firstChoose.node.name.innerHTML=get.verticalStr(get.cnNumber(i+1,true)+'号位');
   						firstChoose=firstChoose.next;
   					}
   
   					for(var i=0;i<game.players.length;i++){
   						if(game.players[i].side==game.me.side){
   							game.players[i].node.identity.firstChild.innerHTML='友';
   						}
   						else{
   							game.players[i].node.identity.firstChild.innerHTML='敌';
   						}
   						game.players[i].node.identity.dataset.color=game.players[i].side+'zhu';
   					}
   					var list=[];
   					for(i in lib.character){
   						if(!lib.filter.characterDisabled(i)){
   							list.push(i);
   						}
   					}
   					var choose=[];
   					_status.characterlist=list;
   					event.filterChoice=function(name1,name2){
   						var info1=lib.character[name1];
   						var info2=lib.character[name2];
   						if(!info1||!info2) return;
   						var num=0;
   						if(info1[0]==info2[0]) num++;
   						if(get.infoMaxHp(info1[2])==get.infoMaxHp(info2[2])) num++;
   						if(info1[3].length==info2[3].length) num++;
   						return num>1;
   					};
   					var list2=list.randomGets(8);
   					var next=game.me.chooseButton(2,true,['请选择您的武将牌',[list2,'character']]);
   					next.set('onfree',true);
   					next.set('filterButton',function(button){
   						if(!ui.selected.buttons.length){
   							for(var i=0;i<list2.length;i++){
   								if(list2[i]!=button.link&&event.filterChoice(button.link,list2[i])) return true;
   							}
   							return false;
   						}
   						return event.filterChoice(button.link,ui.selected.buttons[0].link)
   					});
   					'step 1'
   					game.me.init(result.links[0]);
   					game.me._backupCharacter=result.links[1];
   					_status.characterlist.removeArray(result.links);
   					var list=_status.characterlist;
   					for(var i=0;i<game.players.length;i++){
   						if(game.players[i]!=game.me){
   							list.randomSort();
   							var bool=false;
   							for(var k=0;k<list.length;k++){
   								for(var j=i+1;j<list.length;j++){
   									if(event.filterChoice(list[k],list[j])){
   										bool=true;
   										game.players[i].init(list[k]);
   										game.players[i]._backupCharacter=list[j];
   										break;
   									}
   								}
   								if(bool) break;
   							}
   						}
   					}
   					setTimeout(function(){
   						ui.arena.classList.remove('choose-character');
   					},500);
   					if(get.config('two_phaseswap')){
   						game.addGlobalSkill('autoswap');
   						if(lib.config.show_handcardbutton){
   							ui.versushs=ui.create.system('手牌',null,true);
   							lib.setPopped(ui.versushs,game.versusHoverHandcards,220);
   						}
   					}
   				});
   			};
					}
				}
			},
			qianlidanji:{
				name:'千里单骑',
				mode:'identity',
				showcase:function(init){
					var node=this;
					var player1;
					if(init){
						player1=ui.create.player(null,true).init('jsp_guanyu');
						player1.node.marks.remove();
						player1.node.hp.remove();
						player1.style.left='20px';
						player1.style.top='20px';
						player1.style.transform='scale(0.9)';
						player1.node.count.remove();
						this.appendChild(player1);
						this.player1=player1;
					}
					else{
						player1=this.player1;
					}
					var func=function(){
						var player2=ui.create.player(null,true).init('caiyang');
						player2.node.marks.remove();
						player2.node.hp.remove();
						player2.style.left='auto';
						player2.style.right='20px';
						player2.style.top='20px';
						player2.node.count.remove();
						player2.style.transform='scale(0.7)';
						player2.style.opacity=0;
						node.appendChild(player2);
						ui.refresh(player2);
						player2.style.opacity=1;
						player2.style.transform='scale(0.9)';
						setTimeout(function(){
 						if(!player2) return;
 						game.linexy([
								player1.getLeft()+player1.offsetWidth/2,
								player1.getTop()+player1.offsetHeight/2,
								player2.getLeft()+player2.offsetWidth/2,
								player2.getTop()+player2.offsetHeight/2,
							],node);
							setTimeout(function(){
 							var popup=ui.create.div('.damage');
 							popup.innerHTML='-1';
 							popup.dataset.nature='soil';
 							player2.appendChild(popup);
 							ui.refresh(popup);
 							popup.classList.add('damageadded');
 							popup.listenTransition(function(){
 								setTimeout(function(){
 									popup.delete();
 								},300);
 							});
 						},250)
						},600);
						setTimeout(function(){
							if(!player2) return;
							player2.style.transition='all 0.5s';
							player2.style.transform='scale(1.2)';
							player2.delete();
						},1200);
					};
					node.showcaseinterval=setInterval(func,2600);
					func();
				},
				intro:[
					'无尽而漫长的单挑试炼',
					(lib.config.qianlidanji_level?('你的最高纪录是连续通过'+lib.config.qianlidanji_level+'关,是否能够突破这一记录呢?'):'你能否过五关斩六将,击败古城战神蔡阳呢?'),
				],
				init:function(){
					if(!_status.qianlidanji) _status.qianlidanji={
						completeNumber:0,
						used:['pujing','huban','caiyang'],
						addFellow:function(name){
							game.fan.dataset.position=2;
							ui.arena.setNumber(3);
							game.fellow=game.addFellow(1,name);
							game.fellow.gain(get.cards(4));
   				game.fellow.identity='zhong';
   				game.fellow.setIdentity();
   				game.fellow.identityShown=true;
   				game.fellow.node.identity.classList.remove('guessing');
							_status.event.getParent('phaseLoop').player=game.fellow;
						},
						completeReward:[
							['回复1点体力并摸一张牌',function(){
								game.zhu.recover();
								game.zhu.draw();
							}],
							['摸三张牌',function(){
								game.zhu.draw(3);
							}],
							['将一张防具牌置入装备区并摸一张牌',function(){
								var card=get.cardPile(function(card){
									return get.subtype(card)=='equip2'&&!get.cardtag(card,'gifts');
								});
								if(card) game.zhu.equip(card);
								game.zhu.draw();
							}],
							['将一张武器牌置入装备区并摸一张牌',function(){
								var card=get.cardPile(function(card){
									return get.subtype(card)=='equip1'&&!get.cardtag(card,'gifts');
								});
								if(card) game.zhu.equip(card);
								game.zhu.draw();
							}],
							['回复2点体力并弃置一张牌',function(){
								game.zhu.recover(2);
								game.zhu.chooseToDiscard('he',true);
							}],
							['摸五张牌,然后弃置三张牌',function(){
								game.zhu.draw(5);
								game.zhu.chooseToDiscard(3,'he',true);
							}],
							['摸五张牌,然后对手摸两张牌',function(){
								game.zhu.draw(5);
								game.fan.draw(2);
							}],
							['将一张武器牌和一张防具牌置入装备区',function(){
								var card=get.cardPile(function(card){
									return get.subtype(card)=='equip1'&&!get.cardtag(card,'gifts');
								});
								if(card) game.zhu.equip(card);
								var card2=get.cardPile(function(card){
									return get.subtype(card)=='equip2'&&!get.cardtag(card,'gifts');
								});
								if(card2) game.zhu.equip(card2);
							}],
							['将一张武器牌和一张防御坐骑牌置入装备区',function(){
								var card=get.cardPile(function(card){
									return get.subtype(card)=='equip1'&&!get.cardtag(card,'gifts');
								});
								if(card) game.zhu.equip(card);
								var card2=get.cardPile(function(card){
									return get.subtype(card)=='equip3'&&!get.cardtag(card,'gifts');
								});
								if(card2) game.zhu.equip(card2);
							}],
							['弃置所有手牌并于下一关获得【涅槃】(标)',function(){
								var hs=game.zhu.getCards('h');
								if(hs.length) game.zhu.discard(hs);
								game.zhu.addSkill('oldniepan');
								game.zhu.restoreSkill('oldniepan');
								game.zhu._oldniepan=true;
							}],
							['获得两张锦囊牌',function(){
								var list=[];
								while(list.length<2){
									var card=get.cardPile(function(card){
										return !list.contains(card)&&get.type(card,'trick')=='trick';
									});
									if(!card) break;
									list.push(card);
								}
								if(list.length) game.zhu.gain(list,'gain2','log');
							}],
							['将体力回复至体力上限,然后弃置一张牌',function(){
								var num=game.zhu.maxHp-game.zhu.hp;
								if(num) game.zhu.recover(num);
								game.zhu.chooseToDiscard('he',true);
							}],
							['弃置两张牌,在下一关的第一个回合后进行一个额外的回合',function(){
								game.zhu.chooseToDiscard(2,true,'he');
								game.zhu.addSkill('qianlidanji_phase');
							}],
							['摸一张牌,然后将对手翻面',function(){
								game.zhu.draw();
								game.fan.turnOver(true);
							}],
							['摸一张牌,然后令对手受到1点伤害',function(){
								game.zhu.draw();
								game.fan.damage(game.zhu);
							}],
							['获得五张基本牌',function(){
								var list=[];
								while(list.length<5){
									var card=get.cardPile(function(card){
										return !list.contains(card)&&get.type(card)=='basic';
									});
									if(!card) break;
									list.push(card);
								}
								if(list.length) game.zhu.gain(list,'gain2','log');
							}],
							['失去1点体力,然后摸五张牌',function(){
								game.zhu.loseHp();
								game.zhu.draw(5);
							}],
							['失去体力至1点,然后摸七张牌',function(){
								var num=game.zhu.hp-1;
								if(num) game.zhu.loseHp(num);
								game.zhu.draw(7)
							}],
							['弃置一张牌,然后令对手受到2点伤害',function(){
								game.zhu.chooseToDiscard('he',true);
								game.fan.damage(game.zhu,2);
							}],
							['在下一关中召唤普净一同战斗',function(){
								_status.qianlidanji.addFellow('pujing');
							}],
							['在下一关中召唤胡班一同战斗',function(){
								_status.qianlidanji.addFellow('huban');
							}],
							['将一张宝物牌置入装备区并摸一张牌',function(){
								var card=get.cardPile(function(card){
									return get.subtype(card)=='equip5'&&!get.cardtag(card,'gifts');
								});
								if(card) game.zhu.equip(card);
								game.zhu.draw();
							}],
							['摸五张牌,然后将自己翻面',function(){
								game.zhu.draw(5);
								game.zhu.turnOver(true);
							}],
							['获得一张【酒】和一张【杀】',function(){
								var list=[];
								var card=get.cardPile(function(card){
										return card.name=='sha';
									});
								if(card) list.push(card);
								var card=get.cardPile(function(card){
										return card.name=='jiu';
									});
								if(card) list.push(card);
								if(list.length) game.zhu.gain(list,'gain2','log');
							}],
						],
						replace_character:function(){
							'step 0'
							if(game.zhu._oldniepan){
								game.zhu.removeSkill('oldniepan');
								delete game.zhu._oldniepan;
							}
							_status.qianlidanji.completeNumber++;
							if(!lib.config.qianlidanji_level||lib.config.qianlidanji_level<_status.qianlidanji.completeNumber){
								lib.config.qianlidanji_level=_status.qianlidanji.completeNumber;
								game.saveConfig('qianlidanji_level',lib.config.qianlidanji_level);
							}
							if(game.fellow&&game.fellow.isAlive()){
   					if(ui.land&&ui.land.player==game.fellow){
   						game.addVideo('destroyLand');
   						ui.land.destroy();
   					}
   					game.zhu.next=game.fan;
   					game.fan.next=game.zhu;
   					game.zhu.nextSeat=game.fan;
   					game.fan.nextSeat=game.zhu;
  						game.players.remove(game.fellow);
  						_status.dying.remove(game.fellow);
  						game.fellow.out();
  						for(var mark in game.fellow.marks){
  							game.fellow.unmarkSkill(mark);
  						}
  						while(game.fellow.node.marks.childNodes.length>1){
  							game.fellow.node.marks.lastChild.remove();
  						}
   					for(var i in game.fellow.tempSkills){
   						game.fellow.removeSkill(i);
   					}
   					var skills=game.fellow.getSkills();
   					for(var i=0;i<skills.length;i++){
   						if(lib.skill[skills[i]].temp){
   							game.fellow.removeSkill(skills[i]);
   						}
   					}
  						var cards=game.fellow.getCards('hej');		
								while(cards.length){
									ui.discardPile.appendChild(cards.shift());
								}
							}
							'step 1'
							if(game.fellow){
								game.dead.remove(game.fellow);
								game.fellow.remove();
								game.fan.dataset.position=1;
								ui.arena.setNumber(2);
   					game.zhu.next=game.fan;
   					game.fan.next=game.zhu;
   					game.zhu.nextSeat=game.fan;
   					game.fan.nextSeat=game.zhu;
							}
							if(_status.qianlidanji.completeNumber!=5){
 							var list=_status.qianlidanji.completeReward.randomGets(3);
 							var list2=[];
 							for(var i=0;i<list.length;i++){
 								list2.push(list[i][1]);
 								list[i]=list[i][0];
 							}
 							if(_status.qianlidanji.completeNumber>=6){
 								list.push('我不想再打了,直接在这里结束吧!');
 								list2.push(function(){
 									game.over(true);
 								});
 							}
 							event.list=list2;
 							game.zhu.chooseControl().set('choiceList',list).set('prompt','请选择一项奖励(当前已通过'+_status.qianlidanji.completeNumber+'关)');
							}
							'step 2'
							if(_status.qianlidanji.completeNumber!=5){
								if(result.index==3){
									game.over(true);
									return;
								}
								event.reward=event.list[result.index];
							}
							_status.characterlist.removeArray(_status.qianlidanji.used);
							if(_status.qianlidanji.completeNumber==5) event._result={links:['caiyang']};
							else game.zhu.chooseButton(['选择下一关出战的对手',[_status.characterlist.randomGets(3),'character']],true);
							'step 3'
							_status.event.getParent('phaseLoop').player=game.zhu;
							var source=game.fan;
							var name=result.links[0];
 						source.revive(null,false);
 						_status.characterlist.remove(name);
 						_status.qianlidanji.used.push(name);
 						source.uninit();
 						source.init(name);
 						game.addVideo('reinit',source,[name]);
 						source.lose(source.getCards('hej'))._triggered=null;
 						var gain=4;
 						var add=0;
 						switch(_status.qianlidanji.completeNumber){
 							case 5:break;
 							case 1:gain=5;break;
 							case 2:gain=5;add=1;break;
 							case 3:gain=6;add=1;break;
 							default:gain=6;add=2;break;
 						};
 						source.hp+=add;
 						source.maxHp+=add;
 						source.update();
 						source.gain(get.cards(gain))._triggered=null;
 						game.triggerEnter(source);
 						if(event.reward) event.reward();
 						'step 4'
 						var cards=Array.from(ui.ordering.childNodes);
							while(cards.length){
								cards.shift().discard();
							}
							var evt=_status.event.getParent('phase');
							if(evt){
								game.resetSkills();
 							_status.event=evt;
								_status.event.finish();
								_status.event.untrigger(true);
							}
						},
					};
					_status.qianlidanji.player_number=get.config('player_number');
					game.saveConfig('player_number','2','identity');
				},
				content:{
					submode:'normal',
					chooseCharacterBefore:function(){
   			game.identityVideoName='千里单骑';
   			game.saveConfig('player_number',_status.qianlidanji.player_number,'identity');
   			game.chooseCharacter=function(){
      	var next=game.createEvent('chooseCharacter',false);
   				next.showConfig=true;
   				next.setContent(function(){
   					"step 0"
   					ui.arena.classList.add('choose-character');
   					game.me.identity='zhu';
   					game.zhu=game.me;
   					game.fan=game.me.next;
   					game.fan.identity='fan';
   					game.zhu.setIdentity();
   					game.zhu.identityShown=true;
   					game.zhu.node.identity.classList.remove('guessing');
   					game.fan.setIdentity();
   					game.fan.identityShown=true;
   					game.fan.node.identity.classList.remove('guessing');
   					
   					event.list=[];
   					for(var i in lib.character){
   						if(lib.filter.characterDisabled(i)) continue;
   						event.list.push(i);
   					}
   					event.list.randomSort();
   					_status.characterlist=event.list.slice(0);
   					var list=event.list.slice(0,5);
   					delete event.swapnochoose;
   					var dialog;
   					if(event.swapnodialog){
   						dialog=ui.dialog;
   						event.swapnodialog(dialog,list);
   						delete event.swapnodialog;
   					}
   					else{
   						var str='选择角色';
   						dialog=ui.create.dialog(str,'hidden',[list,'character']);
   					}
   					dialog.setCaption('选择角色');
   					game.me.chooseButton(dialog,true).set('onfree',true);
   					
   					ui.create.cheat=function(){
   						_status.createControl=ui.cheat2;
   						ui.cheat=ui.create.control('更换',function(){
   							if(ui.cheat2&&ui.cheat2.dialog==_status.event.dialog){
   								return;
   							}
   							if(game.changeCoin){
   								game.changeCoin(-3);
   							}
   							
   							event.list.randomSort();
   							list=event.list.slice(0,5);
   							
   							var buttons=ui.create.div('.buttons');
   							var node=_status.event.dialog.buttons[0].parentNode;
   							_status.event.dialog.buttons=ui.create.buttons(list,'character',buttons);
   							_status.event.dialog.content.insertBefore(buttons,node);
   							buttons.animate('start');
   							node.remove();
   							game.uncheck();
   							game.check();
   						});
   						delete _status.createControl;
   					};
   					if(lib.onfree){
   						lib.onfree.push(function(){
   							event.dialogxx=ui.create.characterDialog('heightset');
   							if(ui.cheat2){
   								ui.cheat2.animate('controlpressdownx',500);
   								ui.cheat2.classList.remove('disabled');
   							}
   						});
   					}
   					else{
   						event.dialogxx=ui.create.characterDialog('heightset');
   					}
   
   					ui.create.cheat2=function(){
   						ui.cheat2=ui.create.control('自由选将',function(){
   							if(this.dialog==_status.event.dialog){
   								if(game.changeCoin){
   									game.changeCoin(50);
   								}
   								this.dialog.close();
   								_status.event.dialog=this.backup;
   								this.backup.open();
   								delete this.backup;
   								game.uncheck();
   								game.check();
   								if(ui.cheat){
   									ui.cheat.animate('controlpressdownx',500);
   									ui.cheat.classList.remove('disabled');
   								}
   							}
   							else{
   								if(game.changeCoin){
   									game.changeCoin(-10);
   								}
   								this.backup=_status.event.dialog;
   								_status.event.dialog.close();
   								_status.event.dialog=_status.event.parent.dialogxx;
   								this.dialog=_status.event.dialog;
   								this.dialog.open();
   								game.uncheck();
   								game.check();
   								if(ui.cheat){
   									ui.cheat.classList.add('disabled');
   								}
   							}
   						});
   						if(lib.onfree){
   							ui.cheat2.classList.add('disabled');
   						}
   					}
   					if(!_status.brawl||!_status.brawl.chooseCharacterFixed){
   						if(!ui.cheat&&get.config('change_choice'))
   						ui.create.cheat();
   						if(!ui.cheat2&&get.config('free_choose'))
   						ui.create.cheat2();
   					}
   					"step 1"
   					if(ui.cheat){
   						ui.cheat.close();
   						delete ui.cheat;
   					}
   					if(ui.cheat2){
   						ui.cheat2.close();
   						delete ui.cheat2;
   					}
   					game.addRecentCharacter(result.buttons[0].link);
   					game.zhu.init(result.buttons[0].link);
   					_status.characterlist.remove(result.buttons[0].link);
   					_status.qianlidanji.used.add(result.buttons[0].link);
   					game.zhu.chooseControl('地狱','困难','普通','简单','无双').set('prompt','请选择游戏难度');
   					"step 2"
   					var hp=Math.floor(result.index/2);
   					event.draw=Math.floor((result.index+1)/2);
   					if(hp){
   						game.zhu.hp+=hp;
   						game.zhu.maxHp+=hp;
   						game.zhu.update();
   					}
   					game.zhu.chooseButton(['请选择对手的登场武将',[_status.characterlist.randomGets(3),'character']],true);
   					"step 3"
   					game.fan.init(result.links[0]);
   					_status.characterlist.remove(result.links[0]);
   					_status.qianlidanji.used.add(result.links[0]);
   					if(event.draw){
   						game.zhu.directgain(get.cards(event.draw));
   					}
   					setTimeout(function(){
   						ui.arena.classList.remove('choose-character');
   					},500);
   					
   					var pack={
   						character:{
   							pujing:['male','qun',1,[],[]],
   							huban:['male','qun',2,[],[]],
   							caiyang:['male','qun',1,['zhuixi'],[]],
   						},
   						translate:{
   							pujing:'普净',
   							huban:'胡班',
   						},
   						skill:{
   							qianlidanji_phase:{
   								trigger:{global:'phaseBefore'},
   								forced:true,
   								silent:true,
   								firstDo:true,
   								content:function(){
   									player.removeSkill('qianlidanji_phase');
   									player.insertPhase();
   								},
   							},
   						},
   					};
   					for(var i in pack){
   						for(var j in pack[i]){
   							lib[i][j]=pack[i][j];
   						}
   					}
   					delete pack.skill;
  						game.addVideo('arrangeLib',null,pack);
  						game.addOverDialog=function(dialog){
  							dialog.addText('共计通过'+_status.qianlidanji.completeNumber+'关');
  						};
  						lib.element.player.dieAfter=function(){
  							if(this==game.fellow) return;
  							_status.characterlist.removeArray(_status.qianlidanji.used);
  							if(game.zhu==this||!_status.characterlist.length){
  								var bool=false;
  								if(_status.qianlidanji.completeNumber>5) bool=true;
  								game.over(bool);
  							}
  							else{
  								var next=game.createEvent('qianlidanji_replace',false);
  								next.setContent(_status.qianlidanji.replace_character);
  							}
  						};
  						lib.element.player.dieAfter2=function(){
  							_status.characterlist.removeArray(_status.qianlidanji.used);
  						};
  						game.zhu.dieAfter=lib.element.player.dieAfter;
  						game.fan.dieAfter=lib.element.player.dieAfter;
  						game.zhu.dieAfter2=lib.element.player.dieAfter2;
  						game.fan.dieAfter2=lib.element.player.dieAfter2;
   				});
   			};
					}
				}
			},
			liangjunduilei:{
				name:'两军对垒',
				mode:'versus',
				submode:'2v2',
				showcase:function(init){
					var node=this;
					var player1,player2;
					var list=[
						['re_sp_zhugeliang','yujin_yujin','re_zhangliao','re_lusu'],
						['re_huangzhong','re_xiahouyuan','zhanghe','xin_fazheng'],
						['re_caocao','xin_yuanshao','guotufengji','re_guojia'],
						['chunyuqiong','sp_xuyou','re_xuhuang','gaolan'],
						['re_sp_zhugeliang','re_zhangzhang','guyong','re_lusu'],
						['yj_jushou','re_caocao','jsp_guanyu','re_yanwen'],
						['re_lingtong','re_lidian','re_zhangliao','re_ganning'],
						['re_guanyu','caoren','re_lvmeng','guanping'],
					].randomGet();
					if(_status.keyVerified){
						list=[
							['caozhen','key_hisako','key_iwasawa','sp_key_kanade'],
						].randomGet();
					}
					if(init){
						player1=ui.create.player(null,true);
						player2=ui.create.player(null,true);
						player1.node.marks.remove();
						player1.node.hp.remove();
						player2.node.marks.remove();
						player2.node.hp.remove();
						player1.style.left='20px';
						player1.style.top='20px';
						player1.style.transform='scale(0.9)';
						player1.node.count.remove();
						player2.style.left='auto';
						player2.style.right='20px';
						player2.style.top='20px';
						player2.style.transform='scale(0.9)';
						player2.node.count.remove();
						this.appendChild(player1);
						this.appendChild(player2);
						this.player1=player1;
						this.player2=player2;
					}
					else{
						player1=this.player1;
						player2=this.player2;
					}
					var player3,player4;
					if(init){
						player3=ui.create.player(null,true);
						player4=ui.create.player(null,true);
						player3.node.marks.remove();
						player3.node.hp.remove();
						player4.node.marks.remove();
						player4.node.hp.remove();
						player3.style.left='60px';
						player3.style.top='120px';
						player3.style.transform='scale(0.9)';
						player3.node.count.remove();
						player4.style.left='auto';
						player4.style.right='60px';
						player4.style.top='120px';
						player4.style.transform='scale(0.9)';
						player4.node.count.remove();
						this.appendChild(player3);
						this.appendChild(player4);
						this.player3=player3;
						this.player4=player4;
					}
					else{
						player3=this.player3;
						player4=this.player4;
					}
					player1.init(list[0]);
					player2.init(list[1]);
					player3.init(list[3]);
					player4.init(list[2]);
				},
				intro:['双方使用特定的武将,搭配特定的技能,还原特定的经典场景'],
				content:{
					submode:'two',
					chooseCharacterBefore:function(){
   			var list=[
   				{
   					name:'草船借箭',
   					place:[true,false,false,true],
   					character:['re_sp_zhugeliang','yujin_yujin','re_zhangliao','re_lusu'],
   					lib:{
   						character:{
   							re_sp_zhugeliang:['male','shu',3,['tiaoxin','bazhen','feiying'],[]],
   							yujin_yujin:['male','wei',4,['jiangchi','danshou'],[]],
   							re_zhangliao:['male','wei',4,['benxi','tuifeng','qingxi'],[]],
   							re_lusu:['male','wu',3,['kaikang','shenxian'],[]],
   						},
   						translate:{
   							re_sp_zhugeliang:'诸葛卧龙',
   							yujin_yujin:'于文则',
   							re_zhangliao:'张文远',
   							re_lusu:'鲁子敬',
   						},
   					},
   				},
   				{
   					name:'定军山之战',
   					place:[true,false,false,true],
   					character:['re_huangzhong','re_xiahouyuan','zhanghe','xin_fazheng'],
   					lib:{
   						character:{
   							re_huangzhong:['male','shu',4,['yingjian','weikui','gzyinghun'],[]],
   							re_xiahouyuan:['male','wei',4,['benxi','yaowu','dujin','juesi'],[]],
   							zhanghe:['male','wei',4,['kaikang','xingshang','zhiheng'],[]],
   							xin_fazheng:['male','shu',4,['xinfu_zhanji','nzry_chenglve','yiji'],[]],
   						},
   						translate:{
   							re_huangzhong:'定军黄忠',
   							re_xiahouyuan:'定军妙才',
   							zhanghe:'定军张郃',
   							xin_fazheng:'定军法正',
   						},
   					},
   				},
   				{
   					name:'官渡追击战',
   					place:[false,true,true,false],
   					character:['re_caocao','xin_yuanshao','guotufengji','re_guojia'],
   					lib:{
   						character:{
   							re_caocao:['male','wei',4,['fankui','zhuiji','duanbing'],[]],
   							xin_yuanshao:['male','qun','3/6',['reluanji','kuanggu','benghuai','weizhong'],[]],
   							guotufengji:['male','qun',2,['sijian','jigong','shifei','jianying'],[]],
   							re_guojia:['male','wei',3,['yiji','sanyao','gongxin'],[]],
   						},
   						translate:{
   							re_caocao:'官渡曹操',
   							xin_yuanshao:'官渡袁绍',
   							guotufengji:'袁军智囊',
   							re_guojia:'官渡郭嘉',
   						},
   					},
   				},
   				{
   					name:'奇袭乌巢',
   					place:[true,false,false,true],
   					character:['chunyuqiong','sp_xuyou','re_xuhuang','gaolan'],
   					lib:{
   						character:{
   							chunyuqiong:['male','qun',8,['ranshang','duliang','jiuchi'],[]],
   							sp_xuyou:['male','qun',3,['qice','lianying','nzry_jianxiang'],[]],
   							re_xuhuang:['male','wei',4,['shenduan','xiaoguo','nzry_juzhan'],[]],
   							gaolan:['male','qun',4,['yuanhu','shensu','benyu','suishi'],[]],
   						},
   						translate:{
   							chunyuqiong:'乌巢淳于琼',
   							sp_xuyou:'乌巢许攸',
   							re_xuhuang:'乌巢徐晃',
   							gaolan:'乌巢高览',
   						},
   					},
   				},
   				{
   					name:'舌战群儒',
   					place:[false,true,false,true],
   					character:['re_zhangzhang','re_sp_zhugeliang','guyong','re_lusu'],
   					lib:{
   						character:{
   							re_sp_zhugeliang:['male','shu',3,['tianbian','jyzongshi','xinfu_guolun'],[]],
   							re_zhangzhang:['male','wu',3,['zhuandui','tiaoxin','guzheng'],[]],
   							guyong:['male','wu',3,['qiaoshui','qicai','bingyi'],[]],
   							re_lusu:['male','wu',3,['qingzhongx','shuimeng'],[]],
   						},
   						translate:{
   							re_sp_zhugeliang:'诸葛卧龙',
   							re_zhangzhang:'张子布',
   							guyong:'顾元叹',
   							re_lusu:'鲁子敬',
   						},
   					},
   				},
   				{
   					name:'武圣战双雄',
   					place:[true,false,false,true],
   					character:['yj_jushou','re_caocao','jsp_guanyu','re_yanwen'],
   					lib:{
   						character:{
   							yj_jushou:['male','qun',3,['mingce','jianyan','shibei'],[]],
   							re_caocao:['male','wei',4,['miji','beige','feiying'],[]],
   							jsp_guanyu:['male','wei',4,['nuzhan','jianchu','new_rewusheng'],[]],
   							re_yanwen:['male','qun',4,['shuangxiong','zhanyi','zhichi'],[]],
   						},
   						translate:{
   							yj_jushou:'白马沮授',
   							re_caocao:'白马曹操',
   							jsp_guanyu:'武圣关羽',
   							re_yanwen:'颜文双雄',
   						},
   					},
   				},
   				{
   					name:'合肥之战',
   					place:[true,false,false,true],
   					character:['re_lingtong','re_lidian','re_zhangliao','re_ganning'],
   					lib:{
   						character:{
   							re_lingtong:['male','wu',4,['xuanfeng','zishou','tiaoxin'],[]],
   							re_lidian:['male','wei',3,['weijing','wangxi','zhuandui'],[]],
   							re_zhangliao:['male','wei',3,['retuxi','mashu','reyingzi','xinpojun'],[]],
   							re_ganning:['male','wu',5,['lizhan','jiang','zhenwei'],[]],
   						},
   						translate:{
   							re_lingtong:'合肥凌统',
   							re_lidian:'合肥李典',
   							re_zhangliao:'合肥张辽',
   							re_ganning:'合肥甘宁',
   						},
   					},
   				},
   				{
   					name:'荆州之战',
   					place:[true,false,false,true],
   					character:['re_guanyu','caoren','re_lvmeng','guanping'],
   					lib:{
   						character:{
   							re_guanyu:['male','shu',5,['wusheng','zishou','zhongyong'],[]],
   							caoren:['male','wei',1,['xinjiewei','qiuyuan','gzbuqu','xinjushou'],[]],
   							re_lvmeng:['male','wu',4,['gongxin','duodao','dujin','huituo'],[]],
   							guanping:['male','shu',5,['longyin','suishi'],[]],
   						},
   						translate:{
   							re_guanyu:'荆州关羽',
   							caoren:'樊城曹仁',
   							re_lvmeng:'江东吕蒙',
   							guanping:'荆州关平',
   						},
   					},
   				},
   				{
   					name:'雒城之战',
   					place:[true,false,false,true],
   					character:['liubei','re_wuyi','zhangren','pangtong'],
   					lib:{
   						character:{
   							liubei:['male','shu',4,['rezhijian','jijiu','reyingzi'],[]],
   							re_wuyi:['male','qun',4,['weijing','rerende'],[]],
   							zhangren:['male','qun',4,['shefu','gnsheque'],[]],
   							pangtong:['male','shu',3,['dujin'],[]],
   						},
   						translate:{
   							liubei:'雒城刘备',
   							re_wuyi:'雒城吴懿',
   							zhangren:'雒城张任',
   							pangtong:'雒城庞统',
   							rezhijian:'厚恩',
   							zhijian:'厚恩',
   							jijiu:'驰援',
   							reyingzi:'征令',
   							rerende:'遣军',
   						},
   					},
   				},
   			];
   			if(_status.keyVerified) list=[
   					{
   					name:'My Song',
   					place:[false,true,true,false],
   					character:['caozhen','key_hisako','key_iwasawa','sp_key_kanade'],
   					lib:{
   						character:{
   							caozhen:['male','wei',4,['xinsidi','tuxi']],
   							key_hisako:['female','key','2/3',['hisako_yinbao','shenzhi','shiorimiyuki_banyin','hisako_zhuanyun'],[]],
   							key_iwasawa:['female','key','-999/3',['iwasawa_yinhang','iwasawa_mysong','hisako_zhuanyun']],
   							sp_key_kanade:['female','key',3,['xinwuyan','xinbenxi']],
   						},
   						translate:{
   							caozhen:'突袭教师',
   							key_hisako:'绝望恶魔',
   							key_iwasawa:'引吭孤鸦',
   							sp_key_kanade:'学生会长',
   						},
   					},
   				},
   				{
   					name:'Day Game',
   					place:[false,true,true,false],
   					character:['key_yuzuru','sp_key_kanade','key_ayato','key_hinata'],
   					lib:{
   						character:{
   							key_yuzuru:['male','key',4,['hinata_qiulve','kurou']],
   							sp_key_kanade:['female','key',3,['hinata_qiulve','benxi'],[]],
   							key_ayato:['male','key',3,['hinata_qiulve','retieji']],
   							key_hinata:['female','key',4,['hinata_qiulve','hinata_ehou']],
   						},
   						translate:{
   							key_yuzuru:'新秀球王',
   							sp_key_kanade:'学生会长',
   							key_ayato:'副会长',
   							key_hinata:'球队领袖',
   						},
   					},
   				},
   			]
   			game.liangjunduilei=list;
   			game.chooseCharacterTwo=function(){
   				var next=game.createEvent('chooseCharacter',false);
   				next.setContent(function(){
   					'step 0'
   					for(var i in lib.skill){
   						if(lib.skill[i].audio&&!lib.skill[i].equipSkill) lib.skill[i].audio=false;
   						if(lib.skill[i].changeSeat){
   							lib.skill[i]={};
   							if(lib.translate[i+'_info']){
   								lib.translate[i+'_info']='此模式下不可用';
   							}
   						}
   					}
   					ui.arena.classList.add('choose-character');
   					var list=game.liangjunduilei;
   					var id=lib.status.videoId++;
  						var choiceList=ui.create.dialog('请选择要游玩的剧情','forcebutton');
  						choiceList.videoId=id;
  						for(var i=0;i<list.length;i++){
  							var str='<div class="popup text center" style="width:calc(100% - 10px);display:inline-block">';
  							str+=list[i].name;
  							str+='</div>';
  							var next=choiceList.add(str);
  							next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
  							next.firstChild.link=i;
  							for(var j in lib.element.button){
  								next[j]=lib.element.button[i];
  							}
  							choiceList.buttons.add(next.firstChild);
  						}
  						game.me.chooseButton(true).set('dialog',id).set('onfree',true);
   					'step 1'
   					var pack=game.liangjunduilei[result.links[0]];
   					game.versusVideoName=pack.name;
   					if(get.is.phoneLayout()){
    					ui.duileiInfo=ui.create.div('.touchinfo.left',ui.window);
    				}
    				else{
    					ui.duileiInfo=ui.create.div(ui.gameinfo);
    				}
    				ui.duileiInfo.innerHTML='当前剧情:'+pack.name;
   					for(var i in pack.lib){
   						for(var j in pack.lib[i]){
   							lib[i][j]=pack.lib[i][j];
   						}
   					}
   					var player=game.players.randomGet();
   					_status.firstAct=player;
   					for(var i=0;i<4;i++){
   						player.init(pack.character[i]);
   						player.side=pack.place[i];
   						player=player.next;
   					}
   
   					for(var i=0;i<game.players.length;i++){
   						if(game.players[i].side==game.me.side){
   							game.players[i].node.identity.firstChild.innerHTML='友';
   						}
   						else{
   							game.players[i].node.identity.firstChild.innerHTML='敌';
   						}
   						game.players[i].node.identity.dataset.color=game.players[i].side+'zhu';
   					}
   					game.addVideo('arrangeLib',null,pack.lib);
   					setTimeout(function(){
   						ui.arena.classList.remove('choose-character');
   					},500);
   					if(get.config('two_phaseswap')){
   						game.addGlobalSkill('autoswap');
   						if(lib.config.show_handcardbutton){
   							ui.versushs=ui.create.system('手牌',null,true);
   							lib.setPopped(ui.versushs,game.versusHoverHandcards,220);
   						}
   					}
   				});
   			};
					}
				}
			},
			scene:{
				name:'创建场景',
				content:{
					submode:'normal'
				},
				nostart:true,
				fullshow:true,
				template:{
					mode:'identity',
					init:function(){
						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();
							});
							if(_status.extensionmade.contains(name)){
								ui.create.node('button','管理扩展',this,function(){
									ui.click.configMenu();
									ui.click.extensionTab(name);
								},{marginLeft:'6px'});
							}
							else{
								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+'"]){\nlib.storage.scene["'+name+'"]='+get.stringify(scene)+';\n_status.extensionscene=true;}\n'+
								'if(!_status.extensionmade) _status.extensionmade=[];\n'+
								'_status.extensionmade.push("'+name+'");\n}}\n}';
								var extension={'extension.js':'game.import("extension",function(lib,game,ui,get,ai,_status){return '+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<list.length;i++){
								if(lib.card[list[i][2]]){
									if(lib.config.bannedcards.contains(list[i][2])) continue;
									if(game.bannedcards&&game.bannedcards.contains(list[i][2])) continue;
									inpile.add(list[i][2]);
								}
							}
							var parseInfo=function(info){
								var info2=[];
								if(info[1]=='random'){
									info2.push(['club','spade','heart','diamond'].randomGet());
								}
								else{
									info2.push(info[1]);
								}
								if(info[2]=='random'){
									info2.push(Math.ceil(Math.random()*13));
								}
								else{
									info2.push(info[2]);
								}
								if(info[0]=='random'){
									info2.push(inpile.randomGet());
								}
								else{
									info2.push(info[0]);
								}
								return info2;
							}
							if(scene.replacepile){
								list.length=0;
							}
							for(var i=scene.cardPileTop.length-1;i>=0;i--){
								list.unshift(parseInfo(scene.cardPileTop[i]));
							}
							for(var i=0;i<scene.cardPileBottom.length;i++){
								list.push(parseInfo(scene.cardPileBottom[i]));
							}
							for(var i=0;i<scene.discardPile.length;i++){
								ui.create.card(ui.discardPile).init(parseInfo(scene.discardPile[i]));
							}
							return list;
						},
						gameStart:function(){
							for(var i=0;i<game.players.length;i++){
								game.players[i].node.marks.show();
								game.players[i].node.name.show();
								game.players[i].node.name2.show();
								var info=game.players[i].brawlinfo;
								if(info.maxHp){
									game.players[i].maxHp=info.maxHp;
									if(game.players[i].hp>game.players[i].maxHp){
										game.players[i].hp=game.players[i].maxHp;
									}
								}
								if(info.hp){
									game.players[i].hp=info.hp;
									if(game.players[i].hp>game.players[i].maxHp){
										game.players[i].maxHp=game.players[i].hp;
									}
								}
								game.players[i].update();
							}
							var scene=_status.brawl.scene;
							var over=function(str){
								switch(str){
									case 'win':game.over(true);break;
									case 'lose':game.over(false);break;
									case 'tie':game.over('平局');break;
								}
							}
							if(scene.turns){
								var turns=scene.turns[0];
								lib.onphase.push(function(){
									turns--;
									if(turns<0){
										over(scene.turns[1]);
									}
								});
							}
							if(scene.washes){
								var washes=scene.washes[0];
								lib.onwash.push(function(){
									washes--;
									if(washes<=0){
										over(scene.washes[1]);
									}
								});
							}
						},
						chooseCharacterBefore:function(){
							var scene=_status.brawl.scene;
							var playercontrol=[];
							var maxpos=0;
							for(var i=0;i<scene.players.length;i++){
								if(scene.players[i].playercontrol){
									playercontrol.push(scene.players[i]);
								}
								maxpos=Math.max(maxpos,scene.players[i].position);
							}

							if(maxpos<scene.players.length){
								maxpos=scene.players.length;
							}
							var posmap=[];
							for(var i=1;i<=maxpos;i++){
								posmap.push(i);
							}
							for(var i=0;i<scene.players.length;i++){
								if(scene.players[i].position){
									posmap.remove(scene.players[i].position);
								}
							}
							for(var i=0;i<scene.players.length;i++){
								if(!scene.players[i].position){
									scene.players[i].position=posmap.randomRemove();
								}
							}
							if(playercontrol.length){
								game.me.brawlinfo=playercontrol.randomGet();
							}
							else{
								game.me.brawlinfo=scene.players.randomGet();
							}
							var getpos=function(info){
								var dp=info.position-game.me.brawlinfo.position;
								if(dp<0){
									dp+=maxpos;
								}
								return dp;
							};
							scene.players.sort(function(a,b){
								return getpos(a)-getpos(b);
							});
							var target=game.me;
							var createCard=function(info){
								var info2=[];
								if(info[1]=='random'){
									info2.push(['club','spade','heart','diamond'].randomGet());
								}
								else{
									info2.push(info[1]);
								}
								if(info[2]=='random'){
									info2.push(Math.ceil(Math.random()*13));
								}
								else{
									info2.push(info[2]);
								}
								if(info[0]=='random'){
									info2.push(lib.inpile.randomGet());
								}
								else{
									info2.push(info[0]);
								}
								return ui.create.card().init(info2);
							}
							_status.firstAct=game.me;
							for(var i=0;i<scene.players.length;i++){
								var info=scene.players[i];
								target.brawlinfo=info;
								target.identity=info.identity;
								target.setIdentity(info.identity);
								target.node.marks.hide();
								if(info.name2!='none'&&info.name2!='random'){
									if(info.name=='random'){
										target.init(info.name2,info.name2);
										target.node.name.hide();
										target.node.avatar.hide();
									}
									else{
										target.init(info.name,info.name2);
									}
								}
								else{
									if(info.name!='random'){
										if(info.name2=='random'){
											target.init(info.name,info.name);
											target.node.name2.hide();
											target.node.avatar2.hide();
										}
										else{
											target.init(info.name);
										}
									}
								}
								if(info.linked) target.classList.add('linked'+(get.is.linked2(target)?'2':''));
								if(info.turnedover) target.classList.add('turnedover');
								if(info.position<_status.firstAct.brawlinfo.position) _status.firstAct=target;
								var hs=[];
								for(var j=0;j<info.handcards.length;j++){
									hs.push(createCard(info.handcards[j]));
								}
								if(hs.length){
									target.directgain(hs);
								}
								for(var j=0;j<info.equips.length;j++){
									target.$equip(createCard(info.equips[j]));
								}
								for(var j=0;j<info.judges.length;j++){
									target.node.judges.appendChild(createCard(info.judges[j]));
								}
								target=target.next;
							}
						},
						chooseCharacterAi:function(player,list,list2){
							var info=player.brawlinfo;
							if(info.name2!='none'){
								if(info.name=='random'&&info.name2=='random'){
									list=list.slice(0);
									player.init(list.randomRemove(),list.randomRemove());
								}
								else if(info.name=='random'){
									player.init(list.randomGet(),info.name2);
								}
								else if(info.name2=='random'){
									player.init(info.name,list.randomGet());
								}
							}
							else{
								if(info.name=='random'){
									player.init(list.randomGet());
								}
							}
						},
						chooseCharacter:function(list){
							var info=game.me.brawlinfo;
							var event=_status.event;
							if(info.name2=='none'){
								if(info.name!='random'){
									event.chosen=[info.name];
								}
							}
							else{
								if(info.name2=='random'&&info.name=='random'){
									_status.brawl.doubleCharacter=true;
								}
								else if(info.name=='random'){
									game.me.init(info.name2,info.name2);
									game.me.node.avatar.hide();
									game.me.node.name.hide();
									_status.brawl.chooseCharacterStr='选择主将';
									event.modchosen=[info.name,info.name2];
								}
								else if(info.name2=='random'){
									game.me.init(info.name,info.name);
									game.me.node.avatar2.hide();
									game.me.node.name2.hide();
									_status.brawl.chooseCharacterStr='选择副将';
									event.modchosen=[info.name,info.name2];
								}
								else{
									event.chosen=[info.name,info.name2];
								}
							}
							if(game.me.identity=='zhu') return false;
							return 'nozhu';
						},
					}
				},
				showcase:function(init){
					if(init){
						lib.translate.zhu=lib.translate.zhu||'主';
						lib.translate.zhong=lib.translate.zhong||'忠';
						lib.translate.nei=lib.translate.nei||'内';
						lib.translate.fan=lib.translate.fan||'反';


						this.style.transition='all 0s';
						this.style.height=(this.offsetHeight-10)+'px';
						this.style.overflow='scroll';
						lib.setScroll(this);
						var style={marginLeft:'3px',marginRight:'3px'};
						var style2={position:'relative',display:'block',left:0,top:0,marginBottom:'6px',padding:0,width:'100%'};
						var style3={marginLeft:'4px',marginRight:'4px',position:'relative'}


						var scenename=ui.create.node('input',ui.create.div(style2,'','场景名称:',this),{width:'120px'});
						scenename.type='text';
						scenename.style.marginTop='20px';
						var sceneintro=ui.create.node('input',ui.create.div(style2,'','场景描述:',this),{width:'120px'});
						sceneintro.type='text';
						sceneintro.style.marginBottom='10px';

						var line1=ui.create.div(style2,this);
						var addCharacter=ui.create.node('button','添加角色',line1,function(){
							// line1.style.display='none';
							resetStatus();
							editPile.disabled=true;
							// editCode.disabled=true;
							saveButton.disabled=true;
							// exportButton.disabled=true;
							line7.style.display='none';
							line2.style.display='block';
							line2_t.style.display='block';
							line3.style.display='block';
							line4.style.display='block';
							line5.style.display='block';
							line6_h.style.display='block';
							line6_e.style.display='block';
							line6_j.style.display='block';
							capt1.style.display='block';
							capt2.style.display='block';
							if(line6_h.childElementCount) capt_h.style.display='block';
							if(line6_e.childElementCount) capt_e.style.display='block';
							if(line6_j.childElementCount) capt_j.style.display='block';
						},style);
						var editPile=ui.create.node('button','场景选项',line1,function(){
							resetCharacter();
							addCharacter.disabled=true;
							// editCode.disabled=true;
							saveButton.disabled=true;
							// exportButton.disabled=true;
							line7.style.display='none';
							line8.style.display='block';
							capt8.style.display='block';
							line9.style.display='block';
							line10.style.display='block';
							line11.style.display='block';
							capt9.style.display='block';
							line3.style.display='block';

							line6_t.style.display='block';
							line6_b.style.display='block';
							line6_d.style.display='block';
							if(line6_t.childElementCount) capt_t.style.display='block';
							if(line6_b.childElementCount) capt_b.style.display='block';
							if(line6_d.childElementCount) capt_d.style.display='block';
						},style);
						// var editCode=ui.create.node('button','编辑代码',line1,function(){
						//	 console.log(1);
						// },style);
						var saveButton=ui.create.node('button','保存场景',line1,function(){
							if(!scenename.value){
								alert('请填写场景名称');
								return;
							}
							var scene={
								name:scenename.value,
								intro:sceneintro.value,
								players:[],
								cardPileTop:[],
								cardPileBottom:[],
								discardPile:[],
							};
							for(var i=0;i<line7.childElementCount;i++){
								scene.players.push(line7.childNodes[i].info);
							}
							if(scene.players.length<2){
								alert('请添加至少两名角色');
								return;
							}
							if(lib.storage.scene[scenename.value]){
								if(_status.currentScene!=scenename.value){
									if(!confirm('场景名与现有场景重复,是否覆盖?')){
										return;
									}
								}
								game.removeScene(scenename.value);
							}
							for(var i=0;i<line6_t.childElementCount;i++){
								scene.cardPileTop.push(line6_t.childNodes[i].info);
							}
							for(var i=0;i<line6_b.childElementCount;i++){
								scene.cardPileBottom.push(line6_b.childNodes[i].info);
							}
							for(var i=0;i<line6_d.childElementCount;i++){
								scene.discardPile.push(line6_d.childNodes[i].info);
							}
							if(replacepile.checked){
								scene.replacepile=true;
							}
							if(gameDraw.checked){
								scene.gameDraw=true;
							}
							if(turnsresult.value!='none'){
								scene.turns=[parseInt(turns.value),turnsresult.value]
							}
							if(washesresult.value!='none'){
								scene.washes=[parseInt(washes.value),washesresult.value]
							}
							lib.storage.scene[scene.name]=scene;
							game.save('scene',lib.storage.scene);
							game.addScene(scene.name,true);
						},style);


						var capt1=ui.create.div(style2,'','角色信息',this);
						var line2=ui.create.div(style2,this);
						line2.style.display='none';
						var identity=ui.create.selectlist([['zhu','主公'],['zhong','忠臣'],['nei','内奸'],['fan','反贼']],'zhu',line2);
						identity.value='fan';
						identity.style.marginLeft='3px';
						identity.style.marginRight='3px';
						var position=ui.create.selectlist([['0','随机位置'],['1','一号位'],['2','二号位'],['3','三号位'],['4','四号位'],['5','五号位'],['6','六号位'],['7','七号位'],['8','八号位']],'1',line2);
						position.style.marginLeft='3px';
						position.style.marginRight='3px';
						var line2_t=ui.create.div(style2,this);
						line2_t.style.display='none';
						// line2_t.style.marginBottom='10px';
						ui.create.node('span','体力:',line2_t);
						var hp=ui.create.node('input',line2_t,{width:'40px'});
						hp.type='text';
						ui.create.node('span','体力上限:',line2_t,{marginLeft:'10px'});
						var maxHp=ui.create.node('input',line2_t,{width:'40px'});
						maxHp.type='text';
						ui.create.node('span','横置 ',line2_t,{marginLeft:'20px'});
						var linked=ui.create.node('input',line2_t);
						linked.type='checkbox';
						ui.create.node('span','翻面 ',line2_t,{marginLeft:'10px'});
						var turnedover=ui.create.node('input',line2_t);
						turnedover.type='checkbox';
						ui.create.node('span','玩家 ',line2_t,{marginLeft:'10px'});
						var playercontrol=ui.create.node('input',line2_t);
						playercontrol.type='checkbox';

						var list=[];
						for(var i in lib.character){
							list.push([i,lib.translate[i]]);
						}

						list.sort(function(a,b){
							a=a[0];b=b[0];
							var aa=a,bb=b;
							if(aa.indexOf('_')!=-1){
								aa=aa.slice(aa.indexOf('_')+1);
							}
							if(bb.indexOf('_')!=-1){
								bb=bb.slice(bb.indexOf('_')+1);
							}
							if(aa!=bb){
								return aa>bb?1:-1;
							}
							return a>b?1:-1;
						});
						list.unshift(['random','自选主将']);
						var name1=ui.create.selectlist(list,list[0],line2);
						name1.style.marginLeft='3px';
						name1.style.marginRight='3px';
						name1.style.maxWidth='80px';
						list[0][1]='自选副将';
						list.unshift(['none','无副将']);
						var name2=ui.create.selectlist(list,list[0],line2);
						name2.style.marginLeft='3px';
						name2.style.marginRight='3px';
						name2.style.maxWidth='80px';

						var capt9=ui.create.div(style2,'','编辑牌堆',this);
						capt9.style.display='none';


						var capt2=ui.create.div(style2,'','添加卡牌',this);
						var line3=ui.create.div(style2,this);
						line3.style.display='none';
						capt1.style.display='none';
						capt2.style.display='none';

						var line5=ui.create.div(style2,this);
						line5.style.display='none';
						var pileaddlist=[];
						for(var i=0;i<lib.config.cards.length;i++){
							if(!lib.cardPack[lib.config.cards[i]]) continue;
							for(var j=0;j<lib.cardPack[lib.config.cards[i]].length;j++){
								var cname=lib.cardPack[lib.config.cards[i]][j];
								pileaddlist.push([cname,get.translation(cname)]);
								if(cname=='sha'){
									pileaddlist.push(['huosha','火杀']);
									pileaddlist.push(['leisha','雷杀']);
									pileaddlist.push(['icesha','冰杀']);
									pileaddlist.push(['kamisha','神杀']);
									pileaddlist.push(['cisha','刺杀']);
								}
							}
						}
						for(var i in lib.cardPack){
							if(lib.config.all.cards.contains(i)) continue;
							for(var j=0;j<lib.cardPack[i].length;j++){
								var cname=lib.cardPack[i][j];
								pileaddlist.push([cname,get.translation(cname)]);
							}
						}
						pileaddlist.unshift(['random',['随机卡牌']]);
						var cardpileaddname=ui.create.selectlist(pileaddlist,null,line3);
						cardpileaddname.style.marginLeft='3px';
						cardpileaddname.style.marginRight='3px';
						cardpileaddname.style.width='85px';
						var cardpileaddsuit=ui.create.selectlist([
							['random','随机花色'],
							['heart','红桃'],
							['diamond','方片'],
							['club','梅花'],
							['spade','黑桃'],
						],null,line3);
						cardpileaddsuit.style.marginLeft='3px';
						cardpileaddsuit.style.marginRight='3px';
						cardpileaddsuit.style.width='85px';
						var cardpileaddnumber=ui.create.selectlist([
							['random','随机点数'],1,2,3,4,5,6,7,8,9,10,11,12,13
						],null,line3);
						cardpileaddnumber.style.marginLeft='3px';
						cardpileaddnumber.style.marginRight='3px';
						cardpileaddnumber.style.width='85px';

						var fakecard=function(info,position,capt){
							var name=info[0],suit=info[1],number=info[2];
							var card=ui.create.card(null,'noclick',true);
							card.style.zoom=0.6;
							number=parseInt(cardpileaddnumber.value);
							var name2=name;
							var suit2=suit;
							var number2=number;
							if(name2=='random') name2='sha';
							if(suit2=='random') suit2='?';
							if(!number2){
								number='random';
								number2='?';
							}
							card.init([suit2,number2,name2]);
							card.info=info;
							if(name=='random'){
								card.node.name.innerHTML=get.verticalStr('随机卡牌');
							}
							if(position&&capt){
								card.listen(function(){
									this.remove();
									if(!position.childElementCount) capt.style.display='none';
								});
								position.appendChild(card);
							}
							return card;
						};
						var cc_h=ui.create.node('button','加入手牌区',line5,function(){
							fakecard([cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value],line6_h,capt_h);
							capt_h.style.display='block';
						});
						var cc_e=ui.create.node('button','加入装备区',line5,function(){
							if(get.type(cardpileaddname.value)!='equip') return;
							var subtype=get.subtype(cardpileaddname.value);
							for(var i=0;i<line6_e.childElementCount;i++){
								if(get.subtype(line6_e.childNodes[i].name)==subtype){
									line6_e.childNodes[i].remove();break;
								}
							}
							fakecard([cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value],line6_e,capt_e);
							capt_e.style.display='block';
						});
						var cc_j=ui.create.node('button','加入判定区',line5,function(){
							if(get.type(cardpileaddname.value)!='delay') return;
							for(var i=0;i<line6_j.childElementCount;i++){
								if(line6_j.childNodes[i].name==cardpileaddname.value){
									line6_j.childNodes[i].remove();break;
								}
							}
							fakecard([cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value],line6_j,capt_j);
							capt_j.style.display='block';
						});
						cc_h.style.marginLeft='3px';
						cc_h.style.marginRight='3px';
						cc_h.style.width='85px';
						cc_e.style.marginLeft='3px';
						cc_e.style.marginRight='3px';
						cc_e.style.width='85px';
						cc_j.style.marginLeft='3px';
						cc_j.style.marginRight='3px';
						cc_j.style.width='85px';

						var capt_h=ui.create.div(style2,'','手牌区',this);
						var line6_h=ui.create.div(style2,this);
						var capt_e=ui.create.div(style2,'','装备区',this);
						var line6_e=ui.create.div(style2,this);
						var capt_j=ui.create.div(style2,'','判定区',this);
						var line6_j=ui.create.div(style2,this);
						line6_j.style.marginBottom='10px';
						capt_h.style.display='none';
						capt_e.style.display='none';
						capt_j.style.display='none';

						var line10=ui.create.div(style2,this);
						line10.style.display='none';
						var ac_h=ui.create.node('button','加入牌堆顶',line10,function(){
							fakecard([cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value],line6_t,capt_t);
							capt_t.style.display='block';
						});
						var ac_e=ui.create.node('button','加入牌堆底',line10,function(){
							fakecard([cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value],line6_b,capt_b);
							capt_b.style.display='block';
						});
						var ac_j=ui.create.node('button','加入弃牌堆',line10,function(){
							fakecard([cardpileaddname.value,cardpileaddsuit.value,cardpileaddnumber.value],line6_d,capt_d);
							capt_d.style.display='block';
						});
						ac_h.style.marginLeft='3px';
						ac_h.style.marginRight='3px';
						ac_h.style.width='85px';
						ac_e.style.marginLeft='3px';
						ac_e.style.marginRight='3px';
						ac_e.style.width='85px';
						ac_j.style.marginLeft='3px';
						ac_j.style.marginRight='3px';
						ac_j.style.width='85px';

						var line11=ui.create.div(style2,this,'','<span>替换牌堆</span>');
						line11.style.display='none';
						var replacepile=ui.create.node('input',line11);
						replacepile.type='checkbox';

						ui.create.node('span',line11,'开局摸牌',{marginLeft:'10px'});
						var gameDraw=ui.create.node('input',line11);
						gameDraw.type='checkbox';
						gameDraw.checked=true;

						var capt_t=ui.create.div(style2,'','牌堆顶',this);
						var line6_t=ui.create.div(style2,this);
						var capt_b=ui.create.div(style2,'','牌堆底',this);
						var line6_b=ui.create.div(style2,this);
						var capt_d=ui.create.div(style2,'','弃牌堆',this);
						var line6_d=ui.create.div(style2,this);
						line6_d.style.marginBottom='10px';
						capt_t.style.display='none';
						capt_b.style.display='none';
						capt_d.style.display='none';

						var line4=ui.create.div(style2,this);
						line4.style.display='none';
						line4.style.marginTop='20px';
						var resetCharacter=function(){
							// line1.style.display='block';
							editPile.disabled=false;
							// editCode.disabled=false;
							saveButton.disabled=false;
							// exportButton.disabled=false;
							line7.style.display='block';
							line2.style.display='none';
							line2_t.style.display='none';
							line3.style.display='none';
							line4.style.display='none';
							line5.style.display='none';
							line6_h.style.display='none';
							line6_e.style.display='none';
							line6_j.style.display='none';
							capt1.style.display='none';
							capt2.style.display='none';
							capt_h.style.display='none';
							capt_e.style.display='none';
							capt_j.style.display='none';

							name1.value='random';
							name2.value='none';
							identity.value='fan';
							position.value='0';
							hp.value='';
							maxHp.value='';
							line6_h.innerHTML='';
							line6_e.innerHTML='';
							line6_j.innerHTML='';
							cardpileaddname.value='random';
							cardpileaddsuit.value='random';
							cardpileaddnumber.value='random';
							linked.checked=false;
							turnedover.checked=false;
							playercontrol.checked=false;
						};
						var createCharacter=function(info){
							var player=ui.create.player(null,true);
							player._customintro=function(uiintro){
								if(info.handcards.length){
									uiintro.addText('手牌',true);
									var hs=ui.create.div('.buttons');
									for(var i=0;i<info.handcards.length;i++){
										hs.appendChild(fakecard(info.handcards[i]));
									}
									uiintro.add(hs);
								}
								else{
									return false;
								}
							}
							player.info=info;
							var name=info.name,name3=info.name2;
							if(name=='random'){
								name='re_caocao';
							}
							if(name3!='none'){
								if(name3=='random'){
									name3='liubei';
								}
								player.init(name,name3);
								if(info.name2=='random'){
									player.node.name2.innerHTML=get.verticalStr('自选副将');
								}
							}
							else{
								player.init(name);
							}
							if(info.name=='random'){
								player.node.name.innerHTML=get.verticalStr('自选主将');
							}
							if(info.maxHp){
								player.maxHp=info.maxHp;
							}
							if(info.hp){
								player.hp=Math.min(info.hp,player.maxHp);
							}
							for(var i=0;i<info.handcards.length;i++){
								player.node.handcards1.appendChild(ui.create.card());
							}
							for(var i=0;i<info.equips.length;i++){
								player.$equip(fakecard(info.equips[i]));
							}
							for(var i=0;i<info.judges.length;i++){
								player.node.judges.appendChild(fakecard(info.judges[i]));
							}
							player.setIdentity(info.identity);
							var pos=info.position;
							if(pos==0){
								pos='随机位置';
							}
							else{
								pos=get.cnNumber(pos,true)+'号位'
							}
							if(info.linked&&info.turnedover){
								pos+='<br>横置 - 翻面'
							}
							else{
								if(info.linked) pos+=' - 横置';
								if(info.turnedover) pos+=' - 翻面';
							}
							player.setNickname(pos);
							player.update();
							player.style.transform='scale(0.7)';
							player.style.position='relative';
							player.style.left=0;
							player.style.top=0;
							player.style.margin='-18px';
							player.node.marks.remove();


							line7.appendChild(player);
							player.listen(function(){
								if(confirm('是否删除此角色?')){
									this.remove();
									if(line7.childElementCount<8){
										addCharacter.disabled=false;
									}
								}
							});
							if(line7.childElementCount>=8){
								addCharacter.disabled=true;
							}

							return player;
						};
						ui.create.div('.menubutton.large','确定',line4,style3,function(){
							var info={
								name:name1.value,
								name2:name2.value,
								identity:identity.value,
								position:parseInt(position.value),
								hp:parseInt(hp.value),
								maxHp:parseInt(maxHp.value),
								linked:linked.checked,
								turnedover:turnedover.checked,
								playercontrol:playercontrol.checked,
								handcards:[],
								equips:[],
								judges:[]
							};
							for(var i=0;i<line7.childElementCount;i++){
								if(info.identity=='zhu'&&line7.childNodes[i].info.identity=='zhu'){
									alert('不能有两个主公');
									return;
								}
								if(info.position!=0&&info.position==line7.childNodes[i].info.position){
									alert('座位与现在角色相同');
									return;
								}
							}
							for(var i=0;i<line6_h.childElementCount;i++){
								info.handcards.push(line6_h.childNodes[i].info);
							}
							for(var i=0;i<line6_e.childElementCount;i++){
								info.equips.push(line6_e.childNodes[i].info);
							}
							for(var i=0;i<line6_j.childElementCount;i++){
								info.judges.push(line6_j.childNodes[i].info);
							}
							createCharacter(info);
							resetCharacter();
						});
						ui.create.div('.menubutton.large','取消',line4,style3,resetCharacter);
						var line7=ui.create.div(style2,this);
						line7.style.marginTop='12px';


						var capt8=ui.create.div(style2,'','胜负条件',this);
						capt8.style.display='none';
						var line8=ui.create.div(style2,this);
						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 results=[['none','无'],['win','胜利'],['lose','失败'],['tie','平局']];
						var turns=ui.create.selectlist(turnslist,'1',line8);
						ui.create.node('span','个回合后',line8,style);
						var turnsresult=ui.create.selectlist(results,'none',line8);


						var washes=ui.create.selectlist(turnslist,'1',line8);
						washes.style.marginLeft='20px';
						ui.create.node('span','次洗牌后',line8,style);
						var washesresult=ui.create.selectlist(results,'none',line8);

						var line9=ui.create.div(style2,this);
						line9.style.display='none';
						line9.style.marginTop='20px';
						var resetStatus=function(all){
							if(line7.childElementCount>=8){
								addCharacter.disabled=true;
							}
							else{
								addCharacter.disabled=false;
							}
							// editCode.disabled=false;
							saveButton.disabled=false;
							// exportButton.disabled=false;
							cardpileaddname.value='random';
							cardpileaddsuit.value='random';
							cardpileaddnumber.value='random';

							line8.style.display='none';
							capt8.style.display='none';
							capt9.style.display='none';
							line9.style.display='none';
							line10.style.display='none';
							line11.style.display='none';
							line3.style.display='none';
							line7.style.display='block';


							line6_t.style.display='none';
							line6_b.style.display='none';
							line6_d.style.display='none';
							capt_t.style.display='none';
							capt_b.style.display='none';
							capt_d.style.display='none';

							if(all===true){
								replacepile.checked=false;
								gameDraw.checked=true;
								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.gameDraw) gameDraw.checked=true;
							else gameDraw.checked=false;
							if(scene.turns){
								turns.value=scene.turns[0].toString();
								turnsresult.value=scene.turns[1];
							}
							if(scene.washes){
								washes.value=scene.washes[0].toString();
								washesresult.value=scene.washes[1];
							}
							for(var i=0;i<scene.cardPileTop.length;i++){
								fakecard(scene.cardPileTop[i],line6_t,capt_t);
							}
							for(var i=0;i<scene.cardPileBottom.length;i++){
								fakecard(scene.cardPileBottom[i],line6_b,capt_b);
							}
							for(var i=0;i<scene.discardPile.length;i++){
								fakecard(scene.discardPile[i],line6_d,capt_d);
							}

							for(var i=0;i<scene.players.length;i++){
								createCharacter(scene.players[i]);
							}
						};
					}
					if(_status.sceneToLoad){
						var scene=_status.sceneToLoad;
						delete _status.sceneToLoad;
						game.loadScene(scene);
					}
				}
			},
			stage:{
				name:'创建关卡',
				content:{
					submode:'normal'
				},
				nostart:true,
				fullshow:true,
				template:{
					showcase:function(init){
						if(init){
							var name=lib.brawl[this.link].name;
							var stage=lib.storage.stage[name];
							var style2={position:'relative',display:'block',left:0,top:0,marginBottom:'10px',padding:0,width:'100%'};
							var style3={marginLeft:'4px',marginRight:'4px',position:'relative'}
							var line1=ui.create.div(style2,this);
							var line2=ui.create.div(style2,this);
							line2.style.lineHeight='50px';
							line2.style.overflow='scroll';
							lib.setScroll(line2);
							var container=this.parentNode.parentNode;
							setTimeout(function(){
								var rect1=container.getBoundingClientRect();
								var rect2=line2.getBoundingClientRect();
								line2.style.height=(rect1.height-(rect2.top-rect1.top))+'px';
							},1000);
							if(_status.extensionmade.contains(name)){
								ui.create.node('button','管理扩展',line1,function(){
									ui.click.configMenu();
									ui.click.extensionTab(name);
								},{marginLeft:'6px'});
							}
							else{
								ui.create.node('button','删除关卡',line1,function(){
									if(confirm('确定删除'+name+'?')){
										game.removeStage(name);
									}
								},{marginLeft:'6px'});
							}
							ui.create.node('button','导出扩展',line1,function(){
								var level=stage.level;
								stage.level=0;
								var str='{name:"'+name+'",content:function(){\nif(lib.config.mode=="brawl"){\n'+
								'if(!lib.storage.stage) lib.storage.stage={};\n'+
								'if(!lib.storage.stage["'+name+'"]){\nlib.storage.stage["'+name+'"]='+get.stringify(stage)+';\n_status.extensionstage=true;}\n'+
								'if(!_status.extensionmade) _status.extensionmade=[];\n'+
								'_status.extensionmade.push("'+name+'");\n}}\n}';
								stage.level=level;
								var extension={'extension.js':'game.import("extension",function(lib,game,ui,get,ai,_status){return '+str+'})'};
								game.importExtension(extension,null,name);
							},{marginLeft:'6px'});
							var noactive=true;
							var clickNode=function(){
								if(this.classList.contains('unselectable')) return;
								if(!this.classList.contains('active')){
									var active=this.parentNode.querySelector('.menubutton.large.active');
									if(active){
										active.classList.remove('active');
									}
									this.classList.add('active');
								}
							}
							for(var i=0;i<stage.scenes.length;i++){
								var node=ui.create.div('.menubutton.large',line2,stage.scenes[i].name,style3,clickNode);
								node.index=i;
								if(stage.mode=='sequal'){
									if(i==stage.level){
										node.classList.add('active');
										noactive=false;
									}
									else{
										node.classList.add('unselectable');
									}
								}
								else if(stage.mode=='normal'){
									if(i>stage.level){
										node.classList.add('unselectable');
									}
								}
								if(lib.storage.lastStage==i&&!node.classList.contains('unselectable')){
									node.classList.add('active');
									noactive=false;
								}
								else if(lib.storage.lastStage==undefined&&noactive&&!node.classList.contains('unselectable')){
									node.classList.add('active');
									noactive=false;
								}
							}
						}
					},
				},
				showcase:function(init){
					if(_status.sceneChanged){
						init=true;
						this.innerHTML='';
						delete _status.sceneChanged;
					}
					if(init){
						this.style.transition='all 0s';
						this.style.height=(this.offsetHeight-10)+'px';
						// this.style.overflow='scroll';
						// lib.setScroll(this);
						var style2={position:'relative',display:'block',left:0,top:0,marginBottom:'6px',padding:0,width:'100%'};
						var style3={marginLeft:'4px',marginRight:'4px',position:'relative'}

						var scenename=ui.create.node('input',ui.create.div(style2,'','关卡名称:',this),{width:'120px'});
						scenename.type='text';
						scenename.style.marginTop='20px';
						var sceneintro=ui.create.node('input',ui.create.div(style2,'','关卡描述:',this),{width:'120px'});
						sceneintro.type='text';
						sceneintro.style.marginBottom='10px';

						var line1=ui.create.div(style2,this);
						var line2=ui.create.div(style2,this);
						line1.style.marginBottom='10px';
						line2.style.lineHeight='50px';
						line2.style.overflow='scroll';
						lib.setScroll(line2);
						var container=this.parentNode.parentNode;
						setTimeout(function(){
							var rect1=container.getBoundingClientRect();
							var rect2=line2.getBoundingClientRect();
							line2.style.height=(rect1.height-(rect2.top-rect1.top))+'px';
						},1000);
						var scenes=[];
						for(var i in lib.storage.scene){
							scenes.push([i,i]);
						}
						if(!scenes.length){
							alert('请创建至少1个场景');
							return;
						}
						var scenelist=ui.create.selectlist(scenes,null,line1);
						var e1=function(){
							if(this.nextSibling){
								this.parentNode.insertBefore(this,this.nextSibling.nextSibling);
							}
						}
						var e2=function(){
							var that=this;
							this.movetimeout=setTimeout(function(){
								e1.call(that);
							},500);
						}
						var e3=function(){
							clearTimeout(this.movetimeout);
							delete this.movetimeout;
						}
						var e4=function(value){
							var node=ui.create.div('.menubutton.large',value,line2,style3,function(){
								if(confirm('是否移除'+this.innerHTML+'?')){
									this.remove();
								}
							});
							if(lib.config.touchscreen){
								node.ontouchstart=e2;
								node.ontouchend=e3;
								node.ontouchmove=e3;
							}
							else{
								node.oncontextmenu=e1;
								node.onmousedown=e2;
								node.onmouseup=e3;
								node.onmouseleave=e3;
							}
						}
						var addButton=ui.create.node('button','添加场景',line1,function(){
							e4(scenelist.value);
						},{marginLeft:'6px',marginRight:'12px'});
						var sceneconfig=ui.create.selectlist([
							['normal','默认模式'],
							['sequal','连续闯关'],
							['free','自由选关']
						],null,line1);
						var saveButton=ui.create.node('button','保存关卡',line1,function(){
							if(!scenename.value){
								alert('请填写关卡名称');
								return;
							}
							if(line2.childElementCount<2){
								alert('请添加至少2个场景');
								return;
							}
							var stage={
								name:scenename.value,
								intro:sceneintro.value,
								scenes:[],
								mode:sceneconfig.value,
								level:0
							};
							for(var i=0;i<line2.childElementCount;i++){
								stage.scenes.push(lib.storage.scene[line2.childNodes[i].innerHTML]);
							}
							if(lib.storage.stage[scenename.value]){
								if(!confirm('关卡名与现有关卡重复,是否覆盖?')){
									return;
								}
								game.removeStage(scenename.value);
							}
							lib.storage.stage[stage.name]=stage;
							game.save('stage',lib.storage.stage);
							game.addStage(stage.name,true);
						},{marginLeft:'6px'});
						game.addStageClear=function(){
							scenelist.value=scenes[0][0];
							sceneconfig.value='normal';
							scenename.value='';
							sceneintro.value='';
							line2.innerHTML='';
						};
					}
				}
			}
		},
	};
});