'use strict';
game.import('card',function(lib,game,ui,get,ai,_status){
	return {
		name:'standard',
		connect:true,
		card:{
			damage:{
				ai:{
					result:{
						target:-1.5
					},
					tag:{
						damage:1
					}
				}
			},
			losehp:{
				ai:{
					result:{
						target:-1.5
					},
					tag:{
						loseHp:1
					}
				}
			},
			recover:{
				ai:{
					result:{
						target:1.5
					},
					tag:{
						recover:1
					}
				}
			},
			firedamage:{
				ai:{
					result:{
						target:-1.5
					},
					tag:{
						damage:1,
						fireDamage:1,
						natureDamage:1,
					}
				}
			},
			thunderdamage:{
				ai:{
					result:{
						target:-1.5
					},
					tag:{
						damage:1,
						thunderDamage:1,
						natureDamage:1,
					}
				}
			},
			icedamage:{
				ai:{
					result:{
						target:-1.5
					},
					tag:{
						damage:1,
						iceDamage:1,
						natureDamage:1,
					}
				}
			},
			respondShan:{
				ai:{
					result:{
						target:-1.5,
					},
					tag:{
						respond:1,
						respondShan:1,
						damage:1
					}
				}
			},
			sha:{
				audio:true,
				fullskin:true,
				nature:['thunder','fire','kami','ice'],
				type:'basic',
				enable:true,
				usable:1,
				updateUsable:'phaseUse',
				global:'icesha_skill',
				range:function(card,player,target){
					return player.inRange(target);
				},
				selectTarget:1,
				cardPrompt:function(card){
					var natures=get.natureList(Array.isArray(card)?card[3]:card);
					if(lib.translate['sha_nature_'+natures[0]+'_info']) return lib.translate['sha_nature_'+natures[0]+'_info'];
					var str='出牌阶段,对你攻击范围内的一名角色使用。其须使用一张【闪】,';
					if(natures.includes('stab')){
						str+='且在此之后需弃置一张手牌(没有则不弃)。';
					}
					str+='否则你对其造成1点';
					var linked=lib.linked.filter(n=>natures.includes(n));
					if(linked.length) str+=get.translation(get.nature(linked))+'属性';
					str+='伤害。';
					return str;
				},
				defaultYingbianEffect:'add',
				filterTarget:function(card,player,target){return player!=target},
				content:function(){
					"step 0"
					if(typeof event.shanRequired!='number'||!event.shanRequired||event.shanRequired<0){
						event.shanRequired=1;
					}
					if(typeof event.baseDamage!='number') event.baseDamage=1;
					if(typeof event.extraDamage!='number') event.extraDamage=0;
					"step 1"
					if(event.directHit||event.directHit2||(!_status.connectMode&&lib.config.skip_shan&&!target.hasShan())){
						event._result={bool:false};
					}
					else if(event.skipShan){
						event._result={bool:true,result:'shaned'};
					}
					else{
						var next=target.chooseToUse('请使用一张闪响应杀');
						next.set('type','respondShan');
						next.set('filterCard',function(card,player){
							if(get.name(card)!='shan') return false;
							return lib.filter.cardEnabled(card,player,'forceEnable');
						});
						if(event.shanRequired>1){
							next.set('prompt2','(共需使用'+event.shanRequired+'张闪)');
						}
						else if(game.hasNature(event.card,'stab')){
							next.set('prompt2','(在此之后仍需弃置一张手牌)');
						}
						next.set('ai1',function(card){
							var target=_status.event.player;
							var evt=_status.event.getParent();
							var bool=true;
							if(_status.event.shanRequired>1&&!get.is.object(card)&&target.countCards('h','shan')<_status.event.shanRequired){
								bool=false;
							}
							else if(target.hasSkillTag('useShan')){
								bool=true;
							}
							else if(target.hasSkillTag('noShan')){
								bool=false;
							}
							else if(get.damageEffect(target,evt.player,target,evt.card.nature)>=0) bool=false;
							if(bool){
								return get.order(card);
							}
							return 0;
						}).set('shanRequired',event.shanRequired);
						next.set('respondTo',[player,card]);
						//next.autochoose=lib.filter.autoRespondShan;
					}
					"step 2"
					if(!result||!result.bool||!result.result||result.result!='shaned'){
						event.trigger('shaHit');
					}
					else{
						event.shanRequired--;
						if(event.shanRequired>0){
							event.goto(1);
						}
						else if(game.hasNature(event.card,'stab')&&target.countCards('h')>0){
							event.responded=result;
							event.goto(4);
						}
						else{
							event.trigger('shaMiss');
							event.responded=result;
						}
					}
					"step 3"
					if((!result||!result.bool||!result.result||result.result!='shaned')&&!event.unhurt){
						target.damage(get.nature(event.card));
						event.result={bool:true}
						event.trigger('shaDamage');
					}
					else{
						event.result={bool:false}
						event.trigger('shaUnhirt');
					}
					event.finish();
					"step 4"
					target.chooseToDiscard('刺杀:请弃置一张牌,否则此【杀】依然造成伤害').set('ai',function(card){
						var target=_status.event.player;
						var evt=_status.event.getParent();
						var bool=true;
						if(get.damageEffect(target,evt.player,target,evt.card.nature)>=0) bool=false;
						if(bool){
							return 8-get.useful(card);
						}
						return 0;
					});
					"step 5"
					if((!result||!result.bool)&&!event.unhurt){
						target.damage(get.nature(event.card));
						event.result={bool:true}
						event.trigger('shaDamage');
						event.finish();
					}
					else{
						event.trigger('shaMiss');
					}
					"step 6"
					if((!result||!result.bool)&&!event.unhurt){
						target.damage(get.nature(event.card));
						event.result={bool:true}
						event.trigger('shaDamage');
						event.finish();
					}
					else{
						event.result={bool:false}
						event.trigger('shaUnhirt');
					}
				},
				ai:{
					yingbian:function(card,player,targets,viewer){
						if(get.attitude(viewer,player)<=0) return 0;
						var base=0,hit=false;
						if(get.cardtag(card,'yingbian_hit')){
							hit=true;
							if(targets.filter(function(target){
								return target.hasShan()&&get.attitude(viewer,target)<0&&get.damageEffect(target,player,viewer,get.nature(card))>0;
							})) base+=5;
						}
						if(get.cardtag(card,'yingbian_all')){
							if(game.hasPlayer(function(current){
								return !targets.contains(current)&&lib.filter.targetEnabled2(card,player,current)&&get.effect(current,card,player,player)>0;
							})) base+=5;
						}
						if(get.cardtag(card,'yingbian_damage')){
							if(targets.filter(function(target){
								return get.attitude(player,target)<0&&(hit||!target.mayHaveShan()||player.hasSkillTag('directHit_ai',true,{
								target:target,
								card:card,
								},true))&&!target.hasSkillTag('filterDamage',null,{
									player:player,
									card:card,
									jiu:true,
								})
							})) base+=5;
						}
						return base;
					},
					canLink:function(player,target,card){
						if(!target.isLinked()&&!player.hasSkill('wutiesuolian_skill')) return false;
						if(target.mayHaveShan()&&!player.hasSkillTag('directHit_ai',true,{
							target:target,
							card:card,
						},true)) return false;
						if(player.hasSkill('jueqing')||player.hasSkill('gangzhi')||target.hasSkill('gangzhi')) return false;
						return true;
					},
					basic:{
						useful:[5,3,1],
						value:[5,3,1],
					},
					order:function(item,player){
						if(player.hasSkillTag('presha',true,null,true)) return 10;
						if(game.hasNature(item,'linked')){
							if(game.hasPlayer(function(current){
								return current!=player&&current.isLinked()&&player.canUse(item,current,null,true)&&get.effect(current,item,player,player)>0&&lib.card.sha.ai.canLink(player,current,item);
							})&&game.countPlayer(function(current){
								return current.isLinked()&&get.damageEffect(current,player,player,get.nature(item))>0;
							})>1) return 3.1;
							return 3;
						}
						return 3.05;
					},
					result:{
						target:function(player,target,card,isLink){
							var eff=function(){
								if(!isLink&&player.hasSkill('jiu')){
									if(!target.hasSkillTag('filterDamage',null,{
										player:player,
										card:card,
										jiu:true,
									})){
										if(get.attitude(player,target)>0){
											return -7;
										}
										else{
											return -4;
										}
									}
									return -0.5;
								}
								return -1.5;
							}();
							if(!isLink&&target.mayHaveShan()&&!player.hasSkillTag('directHit_ai',true,{
								target:target,
								card:card,
							},true)) return eff/1.2;
							return eff;
						},
					},
					tag:{
						respond:1,
						respondShan:1,
						damage:function(card){
							if(game.hasNature(card,'poison')) return;
							return 1;
						},
						natureDamage:function(card){
							if(game.hasNature(card)) return 1;
						},
						fireDamage:function(card,nature){
							if(game.hasNature(card,'fire')) return 1;
						},
						thunderDamage:function(card,nature){
							if(game.hasNature(card,'thunder')) return 1;
						},
						poisonDamage:function(card,nature){
							if(game.hasNature(card,'poison')) return 1;
						}
					}
				}
			},
			shacopy:{
				ai:{
					basic:{
						useful:[5,3,1],
						value:[5,3,1],
					},
					order:3,
					result:{
						target:-1.5,
					},
					tag:{
						respond:1,
						respondShan:1,
						damage:function(card){
							if(game.hasNature(card,'poison')) return;
							return 1;
						},
						natureDamage:function(card){
							if(game.hasNature(card)) return 1;
						},
						fireDamage:function(card,nature){
							if(game.hasNature(card,'fire')) return 1;
						},
						thunderDamage:function(card,nature){
							if(game.hasNature(card,'thunder')) return 1;
						},
						poisonDamage:function(card,nature){
							if(game.hasNature(card,'poison')) return 1;
						}
					}
				}
			},
			shan:{
				audio:true,
				fullskin:true,
				type:'basic',
				cardcolor:'red',
				notarget:true,
				nodelay:true,
				defaultYingbianEffect:'draw',
				content:function(){
					event.result='shaned';
					event.getParent().delayx=false;
					game.delay(0.5);
				},
				ai:{
					order:3,
					basic:{
						useful:[7,5.1,2],
						value:[7,5.1,2],
					},
					result:{player:1},
					//expose:0.2
				}
			},
			tao:{
				fullskin:true,
				type:'basic',
				cardcolor:'red',
				toself:true,
				enable:function(card,player){
					return player.hp<player.maxHp;
				},
				savable:true,
				selectTarget:-1,
				filterTarget:function(card,player,target){
					return target==player&&target.hp<target.maxHp;
				},
				modTarget:function(card,player,target){
					return target.hp<target.maxHp;
				},
				content:function(){
					target.recover();
				},
				ai:{
					basic: {
						order: function (card, player) {
							if (player.hasSkillTag('pretao')) return 9;
							return 2;
						},
						useful: function (card, i) {
							let player = _status.event.player;
							if (player.isDamaged() && !game.checkMod(card, player, 'unchanged', 'cardEnabled2', player)) return 2 / (1 + i);
							let fs = game.filterPlayer(function (current) {
								return get.attitude(player, current) > 0 && current.hp <= 2;
							}), damaged = 0, needs = 0;
							for (let f of fs) {
								if (!lib.filter.cardSavable(card, player, f)) continue;
								if (f.hp > 1) damaged++;
								else needs++;
							}
							if (needs && damaged) return 5 * needs + 3 * damaged;
							if (needs + damaged > 1 || player.hasSkillTag('maixie')) return 8;
							if (player.hp / player.maxHp < 0.7) return 7 + Math.abs(player.hp / player.maxHp - 0.5);
							if (needs) return 7;
							if (damaged) return Math.max(3, 6.4 - i);
							return 6.8 - Math.min(5, player.hp);
						},
						value: function (card, player, i) {
							let fs = game.filterPlayer(function (current) {
								return get.attitude(_status.event.player, current) > 0;
							}), damaged = 0, needs = 0;
							for (let i of fs) {
								if (!player.canUse('tao', i)) continue;
								if (i.hp <= 1) needs++;
								else if (i.hp == 2) damaged++;
							}
							if (needs > 2) return 11;
							if (needs > 1) return 10;
							if ((needs && damaged) || player.hasSkillTag('maixie')) return 9;
							if (needs || damaged > 1) return 8;
							if (damaged) return 7.5;
							return Math.max(1, 9.2 - player.hp);
						}
					},
					result: {
						target: function (player, target) {
							if (target.hasSkillTag('maixie')) return 3;
							return 2;
						},
						target_use: function (player, target, card) {
							if (player === _status.currentPhase && player.hasSkillTag('nokeep', true, {card:card,target:target}, true)) return 2;
							let mode = get.mode();
							if (target.hp > 0) {
								let nd = player.needsToDiscard();
								let keep = false;
								if (player.isPhaseUsing()) {
									if (nd <= 0 || (nd === 1 && target.hp >= 2 && player.countCards('hs', 'tao') <= 1)) keep = true;
								}
								if (keep) {
									if (!nd || nd < 2 && game.hasPlayer(function (current) {
										if (current.hp <= 2 && player !== current && get.attitude(player, current) > 2) {
											if(target.hp >= 2 && current.identity === 'zhu' && (mode === 'identity' || mode === 'versus' || mode === 'chess')){
												keep=2;
												return true;
											}
											if (player.hp > current.hp) return true;
										}
										return false;
									})){
										if(keep>1) return 0;
									}
								}
							}
							if(target.isZhu2() || target===game.boss) return 2;
							if(player !== target){
								if (target.hp < 0 && player.countCards('hs', 'tao') + target.hp <= 0) return 0;
								if (Math.abs(get.attitude(player, target)) < 1.2) return 0;
							}
							if (!player.getFriends().length) return 2;
							let tri = _status.event.getTrigger(),
								num = game.countPlayer(function (current) {
									if (get.attitude(current, target) > 0) return current.countCards('hs', 'tao');
								}),
								dis = 1,
								t = _status.currentPhase;
							while (t !== target) {
								let att = get.attitude(player, t);
								if (Math.abs(att) < 2) dis += 0.45;
								else if (att < 0) dis++;
								t = t.next;
							}
							if (mode === 'identity') {
								if (tri && tri.name === 'dying') {
									if (target.identity === 'fan') {
										if (!tri.source && player !== target || tri.source && tri.source !== target && player.getFriends().includes(tri.source.identity)) {
											if (num > dis || (player === target && player.countCards('hs', {type: 'basic'}) > 1.6 * dis)) return 2;
											return 0;
										}
									}
									else if(tri.source&&tri.source.isZhu&&(target.identity==='zhong'||target.identity==='mingzhong')&&
										(tri.source.countCards('he')>2||player===tri.source&&player.hasCard((i)=>i.name!='tao','he'))) return 2;
									//if(player!==target&&!target.isZhu&&target.countCards('hs')<dis) return 0;
								}
								if (player.identity === 'zhu') {
									if (player.hp <= 1 && player !== target && player.countCards('hs', 'tao') + player.countCards('hs', 'jiu') <= Math.min(dis, game.countPlayer(function (current) {
										return current.identity === 'fan';
									}))) return 0;
								}
							}
							else if (mode === 'stone' && target.isMin() && player !== target && tri && tri.name === 'dying' && player.side === target.side && tri.source !== target.getEnemy()) return 0;
							return 2;
						}
					},
					tag:{
						recover:1,
						save:1,
					}
				}
			},
			bagua:{
				fullskin:true,
				type:'equip',
				subtype:'equip2',
				ai:{
					basic:{
						equipValue:7.5
					}
				},
				skills:['bagua_skill']
			},
			jueying:{
				fullskin:true,
				type:'equip',
				subtype:'equip3',
				distance:{globalTo:1},
			},
			dilu:{
				fullskin:true,
				type:'equip',
				subtype:'equip3',
				distance:{globalTo:1},
			},
			zhuahuang:{
				fullskin:true,
				type:'equip',
				subtype:'equip3',
				distance:{globalTo:1},
			},
			chitu:{
				fullskin:true,
				type:'equip',
				subtype:'equip4',
				distance:{globalFrom:-1},
			},
			dawan:{
				fullskin:true,
				type:'equip',
				subtype:'equip4',
				distance:{globalFrom:-1},
			},
			zixin:{
				fullskin:true,
				type:'equip',
				subtype:'equip4',
				distance:{globalFrom:-1},
			},
			zhuge:{
				fullskin:true,
				type:'equip',
				subtype:'equip1',
				ai:{
					order:function(){
						return get.order({name:'sha'})-0.1;
					},
					equipValue:function(card,player){
						if(player._zhuge_temp) return 1;
						player._zhuge_temp=true;
						var result=function(){
							if(!game.hasPlayer(function(current){
								return get.distance(player,current)<=1&&player.canUse('sha',current)&&get.effect(current,{name:'sha'},player,player)>0;
							})){
								return 1;
							}
							if(player.hasSha()&&_status.currentPhase==player){
								if(player.getEquip('zhuge')&&player.countUsed('sha')||player.getCardUsable('sha')==0){
									return 10;
								}
							}
							var num=player.countCards('h','sha');
							if(num>1) return 6+num;
							return 3+num;
						}();
						delete player._zhuge_temp;
						return result;
					},
					basic:{
						equipValue:5
					},
					tag:{
						valueswap:1
					}
				},
				skills:['zhuge_skill']
			},
			cixiong:{
				fullskin:true,
				type:'equip',
				subtype:'equip1',
				distance:{attackFrom:-1},
				ai:{
					basic:{
						equipValue:2
					}
				},
				skills:['cixiong_skill']
			},
			qinggang:{
				fullskin:true,
				type:'equip',
				subtype:'equip1',
				distance:{attackFrom:-1},
				ai:{
					basic:{
						equipValue:2
					}
				},
				skills:['qinggang_skill']
			},
			qinglong:{
				fullskin:true,
				type:'equip',
				subtype:'equip1',
				distance:{attackFrom:-2},
				ai:{
					equipValue:function(card,player){
						return Math.min(2.5+player.countCards('h','sha'),4);
					},
					basic:{
						equipValue:3.5
					}
				},
				skills:['qinglong_skill','qinglong_guozhan']
			},
			zhangba:{
				fullskin:true,
				type:'equip',
				subtype:'equip1',
				distance:{attackFrom:-2},
				ai:{
					equipValue:function(card,player){
						var num=2.5+player.countCards('h')/3;
						return Math.min(num,4);
					},
					basic:{
						equipValue:3.5
					}
				},
				skills:['zhangba_skill']
			},
			guanshi:{
				fullskin:true,
				type:'equip',
				subtype:'equip1',
				distance:{attackFrom:-2},
				ai:{
					equipValue:function(card,player){
						var num=2.5+(player.countCards('h')+player.countCards('e'))/2.5;
						return Math.min(num,5);
					},
					basic:{
						equipValue:4.5,
					}
				},
				skills:['guanshi_skill']
			},
			fangtian:{
				fullskin:true,
				type:'equip',
				subtype:'equip1',
				distance:{attackFrom:-3},
				ai:{
					basic:{
						equipValue:2.5
					}
				},
				skills:['fangtian_skill','fangtian_guozhan']
			},
			qilin:{
				fullskin:true,
				type:'equip',
				subtype:'equip1',
				distance:{attackFrom:-4},
				ai:{
					basic:{
						equipValue:3
					}
				},
				skills:['qilin_skill']
			},
			wugu:{
				audio:true,
				fullskin:true,
				type:'trick',
				enable:true,
				cardcolor:'red',
				selectTarget:-1,
				filterTarget:true,
				contentBefore:function(){
					"step 0"
					if(!targets.length){
						event.finish();
						return;
					}
					if(get.is.versus()){
						player.chooseControl('顺时针','逆时针',function(event,player){
							if(player.next.side==player.side) return '逆时针';
							return '顺时针';
						}).set('prompt','选择'+get.translation(card)+'的结算方向');
					}
					else{
						event.goto(2);
					}
					"step 1"
					if(result&&result.control=='顺时针'){
						var evt=event.getParent(),sorter=(_status.currentPhase||player);
						evt.fixedSeat=true;
						evt.targets.sortBySeat(sorter);
						evt.targets.reverse();
						if(evt.targets[evt.targets.length-1]==sorter){
							evt.targets.unshift(evt.targets.pop());
						}
					}
					"step 2"
					ui.clear();
					var num;
					if(event.targets){
						num=event.targets.length;
					}
					else{
						num=game.countPlayer();
					}
					if(card.storage&&typeof card.storage.extraCardsNum=='number') num+=card.storage.extraCardsNum;
					var cards=get.cards(num);
					game.cardsGotoOrdering(cards).relatedEvent=event.getParent();
					var dialog=ui.create.dialog('五谷丰登',cards,true);
					_status.dieClose.push(dialog);
					dialog.videoId=lib.status.videoId++;
					game.addVideo('cardDialog',null,['五谷丰登',get.cardsInfo(cards),dialog.videoId]);
					event.getParent().preResult=dialog.videoId;
					game.broadcast(function(cards,id){
						var dialog=ui.create.dialog('五谷丰登',cards,true);
						_status.dieClose.push(dialog);
						dialog.videoId=id;
					},cards,dialog.videoId);
					game.log(event.card,'亮出了',cards);
				},
				content:function(){
					"step 0"
					for(var i=0;i<ui.dialogs.length;i++){
						if(ui.dialogs[i].videoId==event.preResult){
							event.dialog=ui.dialogs[i];break;
						}
					}
					if(!event.dialog){
						event.finish();
						return;
					}
					if(event.dialog.buttons.length>1){
						var next=target.chooseButton(true,function(button){
							return get.value(button.link,_status.event.player);
						});
						next.set('dialog',event.preResult);
						next.set('closeDialog',false);
						next.set('dialogdisplay',true);
					}
					else{
						event.directButton=event.dialog.buttons[0];
					}
					"step 1"
					var dialog=event.dialog;
					var card;
					if(event.directButton){
						card=event.directButton.link;
					}
					else{
						for(var i of dialog.buttons){
							if(i.link==result.links[0]){
								card=i.link;
								break;
							}
						}
						if(!card) card=event.dialog.buttons[0].link;
					}

					var button;
					for(var i=0;i<dialog.buttons.length;i++){
						if(dialog.buttons[i].link==card){
							button=dialog.buttons[i];
							button.querySelector('.info').innerHTML=function(target){
								if(target._tempTranslate) return target._tempTranslate;
								var name=target.name;
								if(lib.translate[name+'_ab']) return lib.translate[name+'_ab'];
								return get.translation(name);
							}(target);
							dialog.buttons.remove(button);
							break;
						}
					}
					var capt=get.translation(target)+'选择了'+get.translation(button.link);
					if(card){
						target.gain(card,'visible');
						target.$gain2(card);
						game.broadcast(function(card,id,name,capt){
							var dialog=get.idDialog(id);
							if(dialog){
								dialog.content.firstChild.innerHTML=capt;
								for(var i=0;i<dialog.buttons.length;i++){
									if(dialog.buttons[i].link==card){
										dialog.buttons[i].querySelector('.info').innerHTML=name;
										dialog.buttons.splice(i--,1);
										break;
									}
								}
							}
						},card,dialog.videoId,function(target){
							if(target._tempTranslate) return target._tempTranslate;
							var name=target.name;
							if(lib.translate[name+'_ab']) return lib.translate[name+'_ab'];
							return get.translation(name);
						}(target),capt);
					}
					dialog.content.firstChild.innerHTML=capt;
					game.addVideo('dialogCapt',null,[dialog.videoId,dialog.content.firstChild.innerHTML]);
					game.log(target,'选择了',button.link);
					game.delay();
				},
				contentAfter:function(){
					for(var i=0;i<ui.dialogs.length;i++){
						if(ui.dialogs[i].videoId==event.preResult){
							var dialog=ui.dialogs[i];
							dialog.close();
							_status.dieClose.remove(dialog);
							if(dialog.buttons.length){
								event.remained=[];
								for(var i=0;i<dialog.buttons.length;i++){
									event.remained.push(dialog.buttons[i].link);
								}
								event.trigger('wuguRemained');
							}
							break;
						}
					}
					game.broadcast(function(id){
						var dialog=get.idDialog(id);
						if(dialog){
							dialog.close();
							_status.dieClose.remove(dialog);
						}
					},event.preResult);
					game.addVideo('cardDialog',null,event.preResult);
				},
				ai:{
					wuxie:function(){
						if(Math.random()<0.5) return 0;
					},
					basic:{
						order:3,
						useful:0.5,
					},
					result:{
						target:function(player,target){
							var sorter=(_status.currentPhase||player);
							if(get.is.versus()){
								if(target==sorter) return 1.5;
								return 1;
							}
							if(player.hasUnknown(2)){
								return 0;
							}
							return (1-get.distance(sorter,target,'absolute')/game.countPlayer())*get.attitude(player,target)>0?0.5:0.7;
						}
					},
					tag:{
						draw:1,
						multitarget:1
					}
				}
			},
			taoyuan:{
				audio:true,
				fullskin:true,
				type:'trick',
				enable:true,
				selectTarget:-1,
				cardcolor:'red',
				reverseOrder:true,
				defaultYingbianEffect:'remove',
				filterTarget:function(card,player,target){
					//return target.hp<target.maxHp;
					return true;
				},
				ignoreTarget:function(card,player,target){
					return target.isHealthy();
				},
				content:function(){
					target.recover();
				},
				ai:{
					basic:{
						order:function(){
							return 11;
						},
						useful:[3,1],
						value:0,
					},
					result:{
						target:function(player,target){
							return (target.hp<target.maxHp)?2:0;
						}
					},
					tag:{
						recover:0.5,
						multitarget:1
					}
				}
			},
			nanman:{
				audio:true,
				fullskin:true,
				type:'trick',
				enable:true,
				selectTarget:-1,
				defaultYingbianEffect:'remove',
				filterTarget:function(card,player,target){
					return target!=player;
				},
				reverseOrder:true,
				content:function(){
					"step 0"
					if(typeof event.shaRequired!='number'||!event.shaRequired||event.shaRequired<0) event.shaRequired=1;
					if(typeof event.baseDamage!='number') event.baseDamage=1;
					"step 1"
					if(event.directHit) event._result={bool:false};
					else{
						var next=target.chooseToRespond({name:'sha'});
						if(event.shaRequired>1){
							next.set('prompt2','共需打出'+event.shaRequired+'张杀');
						}
						next.set('ai',function(card){
							var evt=_status.event.getParent();
							if(get.damageEffect(evt.target,evt.player,evt.target)>=0) return 0;
							if(evt.player.hasSkillTag('notricksource')) return 0;
							if(evt.target.hasSkillTag('notrick')) return 0;
							return get.order(card);
						});
						next.autochoose=lib.filter.autoRespondSha;
					}
					"step 2"
					if(result.bool==false){
						target.damage();
					}
					else{
						event.shaRequired--;
						if(event.shaRequired>0) event.goto(1);
					}
				},
				ai:{
					wuxie:function(target,card,player,viewer){
						if(get.attitude(viewer,target)>0&&target.countCards('h','sha')){
							if(!target.countCards('h')||target.hp==1||Math.random()<0.7) return 0;
						}
					},
					basic:{
						order:9,
						useful:[5,1],
						value:5
					},
					result:{
						target_use:function(player,target){
							if(player.hasUnknown(2)&&get.mode()!='guozhan') return 0;
							var nh=target.countCards('h');
							if(get.mode()=='identity'){
								if(target.isZhu&&nh<=2&&target.hp<=1) return -100;
							}
							if(nh==0) return -2;
							if(nh==1) return -1.7
							return -1.5;
						},
						target:function(player,target){
							var nh=target.countCards('h');
							if(get.mode()=='identity'){
								if(target.isZhu&&nh<=2&&target.hp<=1) return -100;
							}
							if(nh==0) return -2;
							if(nh==1) return -1.7
							return -1.5;
						},
					},
					tag:{
						respond:1,
						respondSha:1,
						damage:1,
						multitarget:1,
						multineg:1,
					}
				}
			},
			wanjian:{
				audio:true,
				fullskin:true,
				type:'trick',
				enable:true,
				selectTarget:-1,
				reverseOrder:true,
				defaultYingbianEffect:'remove',
				filterTarget:function(card,player,target){
					return target!=player;
				},
				content:function(){
					"step 0"
					if(typeof event.shanRequired!='number'||!event.shanRequired||event.shanRequired<0) event.shanRequired=1;
					if(typeof event.baseDamage!='number') event.baseDamage=1;
					"step 1"
					if(event.directHit) event._result={bool:false};
					else{
						var next=target.chooseToRespond({name:'shan'});
						if(event.shanRequired>1){
							next.set('prompt2','共需打出'+event.shanRequired+'张闪');
						}
						next.set('ai',function(card){
							var evt=_status.event.getParent();
							if(get.damageEffect(evt.target,evt.player,evt.target)>=0) return 0;
							if(evt.player.hasSkillTag('notricksource')) return 0;
							if(evt.target.hasSkillTag('notrick')) return 0;
							if(evt.target.hasSkillTag('noShan')){
								return -1;
							}
						return get.order(card);
						});
						next.autochoose=lib.filter.autoRespondShan;
					}
					"step 2"
					if(result.bool==false){
						target.damage();
					}
					else{
						event.shanRequired--;
						if(event.shanRequired>0) event.goto(1);
					}
				},
				ai:{
					wuxie:function(target,card,player,viewer){
						if(get.attitude(viewer,target)>0&&target.countCards('h','shan')){
							if(!target.countCards('h')||target.hp==1||Math.random()<0.7) return 0;
						}
					},
					basic:{
						order:9,
						useful:1,
						value:5
					},
					result:{
						target_use:function(player,target){
							if(player.hasUnknown(2)&&get.mode()!='guozhan') return 0;
							var nh=target.countCards('h');
							if(get.mode()=='identity'){
								if(target.isZhu&&nh<=2&&target.hp<=1) return -100;
							}
							if(nh==0) return -2;
							if(nh==1) return -1.7
							return -1.5;
						},
						target:function(player,target){
							var nh=target.countCards('h');
							if(get.mode()=='identity'){
								if(target.isZhu&&nh<=2&&target.hp<=1) return -100;
							}
							if(nh==0) return -2;
							if(nh==1) return -1.7
							return -1.5;
						},
					},
					tag:{
						respond:1,
						respondShan:1,
						damage:1,
						multitarget:1,
						multineg:1,
					}
				}
			},
			wuzhong:{
				audio:true,
				fullskin:true,
				type:'trick',
				enable:true,
				selectTarget:-1,
				cardcolor:'red',
				toself:true,
				filterTarget:function(card,player,target){
					return target==player;
				},
				modTarget:true,
				content:function(){
					if(get.is.versus()){
						if(game.friend.contains(target)){
							if(game.friend.length<game.enemy.length){
								target.draw(3);return;
							}
						}
						else{
							if(game.friend.length>game.enemy.length){
								target.draw(3);return;
							}
						}
					}
					target.draw(2);
				},
				ai:{
					basic:{
						order:7.2,
						useful:4.5,
						value:9.2
					},
					result:{
						target:2,
					},
					tag:{
						draw:2
					}
				}
			},
			juedou:{
				audio:true,
				fullskin:true,
				type:'trick',
				enable:true,
				defaultYingbianEffect:'hit',
				filterTarget:function(card,player,target){
					return target!=player;
				},
				content:function(){
					"step 0"
					if(event.turn==undefined) event.turn=target;
					if(typeof event.baseDamage!='number') event.baseDamage=1;
					if(typeof event.extraDamage!='number'){
						event.extraDamage=0;
					}
					if(!event.shaReq) event.shaReq={};
					if(typeof event.shaReq[player.playerid]!='number') event.shaReq[player.playerid]=1;
					if(typeof event.shaReq[target.playerid]!='number') event.shaReq[target.playerid]=1;
					event.playerCards=[];
					event.targetCards=[];
					"step 1"
					event.trigger('juedou');
					event.shaRequired=event.shaReq[event.turn.playerid];
					"step 2"
					if(event.directHit){
						event._result={bool:false};
					}
					else{
						var next=event.turn.chooseToRespond({name:'sha'});
						if(event.shaRequired>1){
							next.set('prompt2','共需打出'+event.shaRequired+'张杀')
						}
						next.set('ai',function(card){
							var event=_status.event;
							var player=event.splayer;
							var target=event.starget;
							if(player.hasSkillTag('notricksource')) return 0;
							if(target.hasSkillTag('notrick')) return 0;
							if(event.shaRequired>1&&player.countCards('h','sha')<event.shaRequired) return 0;
							if(event.player==target){
								if(player.hasSkill('naman')) return -1;
								if(get.attitude(target,player)<0||event.player.hp<=1){
									return get.order(card);
								}
								return -1;
							}
							else{
								if(target.hasSkill('naman')) return -1;
								if(get.attitude(player,target)<0||event.player.hp<=1){
									return get.order(card);
								}
								return -1;
							}
						});
						next.set('splayer',player);
						next.set('starget',target);
						next.set('shaRequired',event.shaRequired);
						next.autochoose=lib.filter.autoRespondSha;
						if(event.turn==target){
							next.source=player;
						}
						else{
							next.source=target;
						}
					}
					"step 3"
					if(result.bool){
						event.shaRequired--;
						if(event.turn==target){
							if(result.cards) event.targetCards.addArray(result.cards);
							if(event.shaRequired>0) event.goto(2);
							else{
								event.turn=player;
								event.goto(1);
							}
						}
						else{
							if(result.cards) event.playerCards.addArray(result.cards);
							if(event.shaRequired>0) event.goto(2);
							else{
								event.turn=target;
								event.goto(1);
							}
						}
					}
					else{
						if(event.turn==target){
							target.damage();
						}
						else{
							player.damage(target);
						}
					}
					event._result={};
				},
				ai:{
					wuxie:function(target,card,player,viewer){
						if(player==game.me&&get.attitude(viewer,player)>0){
							return 0;
						}
					},
					basic:{
						order:5,
						useful:1,
						value:5.5
					},
					result:{
						target:-1.5,
						player:function(player,target,card){
							if(player.hasSkillTag('directHit_ai',true,{
								target:target,
								card:card,
							},true)){
								return 0;
							}
							if(get.damageEffect(target,player,target)>0&&get.attitude(player,target)>0&&get.attitude(target,player)>0){
								return 0;
							}
							var hs1=target.getCards('h','sha');
							var hs2=player.getCards('h','sha');
							if(hs1.length>hs2.length+1){
								return -2;
							}
							var hsx=target.getCards('h');
							if(hsx.length>2&&hs2.length==0&&hsx[0].number<6){
								return -2;
							}
							if(hsx.length>3&&hs2.length==0){
								return -2;
							}
							if(hs1.length>hs2.length&&(!hs2.length||hs1[0].number>hs2[0].number)){
								return -2;
							}
							return -0.5;
						}
					},
					tag:{
						respond:2,
						respondSha:2,
						damage:1,
					}
				}
			},
			shunshou:{
				audio:true,
				fullskin:true,
				type:'trick',
				enable:true,
				range:{global:1},
				selectTarget:1,
				postAi:function(targets){
					return targets.length==1&&targets[0].countCards('j');
				},
				filterTarget:function(card,player,target){
					if(player==target) return false;
					return target.hasCard(card=>lib.filter.canBeGained(card,target,player),get.is.single()?'he':'hej');
				},
				content:function(){
					var position=get.is.single()?'he':'hej';
					if(target.countGainableCards(player,position)){
						player.gainPlayerCard(position,target,true);
					}
				},
				ai:{
					wuxie:function(target,card,player,viewer){
						if(get.attitude(viewer,player)>0&&get.attitude(viewer,target)>0){
							return 0;
						}
					},
					basic:{
						order:7.5,
						useful:4,
						value:9
					},
					result:{
						target:function(player,target){
							const hs=target.getGainableCards(player,'h');
							const es=target.getGainableCards(player,'e');
							const js=target.getGainableCards(player,'j');
							
							if(get.attitude(player,target)<=0){
								if(hs.length>0) return -1.5;
								return (es.some(card=>{
									return get.value(card,target)>0&&card!=target.getEquip('jinhe');
								})||js.some(card=>{
									var cardj=card.viewAs?{name:card.viewAs}:card;
									return get.effect(target,cardj,target,player)<0;
								}))?-1.5:1.5;
							}
							return (es.some(card=>{
								return get.value(card,target)<=0;
							})||js.some(card=>{
								var cardj=card.viewAs?{name:card.viewAs}:card;
								return get.effect(target,cardj,target,player)<0;
							}))?1.5:-1.5;
						},
						player:function(player,target){
							const hs=target.getGainableCards(player,'h');
							const es=target.getGainableCards(player,'e');
							const js=target.getGainableCards(player,'j');
							
							const att=get.attitude(player,target);
							if(att<0){
								if(!hs.length&&!es.some(card=>{
									return get.value(card,target)>0&&card!=target.getEquip('jinhe');
								})&&!js.some(card=>{
									var cardj=card.viewAs?{name:card.viewAs}:card;
									return get.effect(target,cardj,target,player)<0;
								})) return 0;
							}
							else if(att>1){
								return (es.some(card=>{
									return get.value(card,target)<=0;
								})||js.some(card=>{
									var cardj=card.viewAs?{name:card.viewAs}:card;
									return get.effect(target,cardj,target,player)<0;
								}))?1.5:0;
							}
							return 1;
						}
					},
					tag:{
						loseCard:1,
						gain:1,
					}
				}
			},
			shunshou_copy:{
				ai:{
					basic:{
						order:7.5,
						useful:4,
						value:9
					},
					result:{
						target:function(player,target,card){
							let position='hej';
							if(card&&card.position) position=card.position;
							const hs=position.includes('h')?target.getGainableCards(player,'h'):[];
							const es=position.includes('e')?target.getGainableCards(player,'e'):[];
							const js=position.includes('j')?target.getGainableCards(player,'j'):[];
							
							if(get.attitude(player,target)<=0){
								if(hs.length>0) return -1.5;
								return (es.some(card=>{
									return get.value(card,target)>0&&card!=target.getEquip('jinhe');
								})||js.some(card=>{
									var cardj=card.viewAs?{name:card.viewAs}:card;
									return get.effect(target,cardj,target,player)<0;
								}))?-1.5:1.5;
							}
							return (es.some(card=>{
								return get.value(card,target)<=0;
							})||js.some(card=>{
								var cardj=card.viewAs?{name:card.viewAs}:card;
								return get.effect(target,cardj,target,player)<0;
							}))?1.5:-1.5;
						},
						player:function(player,target,card){
							let position='hej';
							if(card&&card.position) position=card.position;
							const hs=position.includes('h')?target.getGainableCards(player,'h'):[];
							const es=position.includes('e')?target.getGainableCards(player,'e'):[];
							const js=position.includes('j')?target.getGainableCards(player,'j'):[];
							
							const att=get.attitude(player,target);
							if(att<0){
								if(!hs.length&&!es.some(card=>{
									return get.value(card,target)>0&&card!=target.getEquip('jinhe');
								})&&!js.some(card=>{
									var cardj=card.viewAs?{name:card.viewAs}:card;
									return get.effect(target,cardj,target,player)<0;
								})) return 0;
							}
							else if(att>1){
								return (es.some(card=>{
									return get.value(card,target)<=0;
								})||js.some(card=>{
									var cardj=card.viewAs?{name:card.viewAs}:card;
									return get.effect(target,cardj,target,player)<0;
								}))?1.5:0;
							}
							return 1;
						}
					},
					tag:{
						loseCard:1,
						gain:1,
					}
				}
			},
			shunshou_copy2:{
				ai:{
					basic:{
						order:7.5,
						useful:4,
						value:9
					},
					result:{
						target:function(player,target,card,isLink){
							return lib.card.shunshou_copy.ai.result.target(player,target,{
								name:'shunshou_copy',
								position:'he',
							},isLink)
						},
						player:function(player,target,card,isLink){
							return lib.card.shunshou_copy.ai.result.player(player,target,{
								name:'shunshou_copy',
								position:'he',
							},isLink)
						}
					},
					tag:{
						loseCard:1,
						gain:1,
					}
				}
			},
			guohe:{
				audio:true,
				fullskin:true,
				type:'trick',
				enable:true,
				selectTarget:1,
				postAi:function(targets){
					return targets.length==1&&targets[0].countCards('j');
				},
				filterTarget:function(card,player,target){
					if(player==target) return false;
					return target.hasCard(card=>lib.filter.canBeDiscarded(card,target,player),get.is.single()?'he':'hej');
				},
				defaultYingbianEffect:'add',
				content:function(){
					'step 0'
					if(!get.is.single()&&target.countDiscardableCards(player,'hej')){
						player.discardPlayerCard('hej',target,true);
						event.finish();
					}
					else{
						var bool1=target.countDiscardableCards(player,'h');
						var bool2=target.countDiscardableCards(player,'e');
						if(bool1&&bool2){
							player.chooseControl('手牌区','装备区').set('ai',function(){
								return Math.random()<0.5?1:0;
							}).set('prompt','弃置'+(get.translation(target))+'装备区的一张牌,或观看其手牌并弃置其中的一张牌。');
						}
						else event._result={control:bool1?'手牌区':'装备区'};
					}
					'step 1'
					var pos=result.control=='手牌区'?'h':'e';
					player.discardPlayerCard(target,pos,true,'visible');
				},
				ai:{
					basic:{
						order:9,
						useful:5,
						value:5,
					},
					yingbian:function(card,player,targets,viewer){
						if(get.attitude(viewer,player)<=0) return 0;
						if(game.hasPlayer(function(current){
							return !targets.contains(current)&&lib.filter.targetEnabled2(card,player,current)&&get.effect(current,card,player,player)>0;
						})) return 6;
						return 0;
					},
					result:{
						target:function(player,target){
							const att=get.attitude(player,target);
							const hs=target.getDiscardableCards(player,'h');
							const es=target.getDiscardableCards(player,'e');
							const js=target.getDiscardableCards(player,'j');
							if(!hs.length&&!es.length&&!js.length) return 0;
							if(att>0){
								if(js.some(card=>{
									const cardj=card.viewAs?{name:card.viewAs}:card;
									return get.effect(target,cardj,target,player)<0;
								})) return 3;
								if(target.isDamaged()&&es.some(card=>card.name=='baiyin')&&
									get.recoverEffect(target,player,player)>0){
									if(target.hp==1&&!target.hujia) return 1.6;
								}
								if(es.some(card=>{
									return get.value(card,target)<0;
								})) return 1;
								return -1.5;
							}
							else{
								const noh=(hs.length==0||target.hasSkillTag('noh'));
								const noe=(es.length==0||target.hasSkillTag('noe'));
								const noe2=(noe||!es.some(card=>{
									return get.value(card,target)>0;
								}));
								const noj=(js.length==0||!js.some(card=>{
									const cardj=card.viewAs?{name:card.viewAs}:card;
									return get.effect(target,cardj,target,player)<0;
								}))
								if(noh&&noe2&&noj) return 1.5;
								return -1.5;
							}
						},
					},
					tag:{
						loseCard:1,
						discard:1
					}
				}
			},
			guohe_copy:{
				ai:{
					basic:{
						order:9,
						useful:5,
						value:5,
					},
					result:{
						target:function(player,target,card){
							let position='hej';
							if(card&&card.position) position=card.position;
							const att=get.attitude(player,target);
							const hs=position.includes('h')?target.getDiscardableCards(player,'h'):[];
							const es=position.includes('e')?target.getDiscardableCards(player,'e'):[];
							const js=position.includes('j')?target.getDiscardableCards(player,'j'):[];
							if(!hs.length&&!es.length&&!js.length) return 0;
							if(att>0){
								if(js.some(card=>{
									const cardj=card.viewAs?{name:card.viewAs}:card;
									return get.effect(target,cardj,target,player)<0;
								})) return 3;
								if(target.isDamaged()&&es.some(card=>card.name=='baiyin')&&
									get.recoverEffect(target,player,player)>0){
									if(target.hp==1&&!target.hujia) return 1.6;
								}
								if(es.some(card=>{
									return get.value(card,target)<0;
								})) return 1;
								return -1.5;
							}
							else{
								const noh=(hs.length==0||target.hasSkillTag('noh'));
								const noe=(es.length==0||target.hasSkillTag('noe'));
								const noe2=(noe||!es.some(card=>{
									return get.value(card,target)>0;
								}));
								const noj=(js.length==0||!js.some(card=>{
									const cardj=card.viewAs?{name:card.viewAs}:card;
									return get.effect(target,cardj,target,player)<0;
								}))
								if(noh&&noe2&&noj) return 1.5;
								return -1.5;
							}
						},
					},
					tag:{
						loseCard:1,
						discard:1
					}
				}
			},
			guohe_copy2:{
				ai:{
					basic:{
						order:9,
						useful:5,
						value:5,
					},
					result:{
						target:function(player,target,card,isLink){
							return lib.card.guohe_copy.ai.result.target(player,target,{
								name:'guohe_copy',
								position:'he',
							},isLink)
						},
					},
					tag:{
						loseCard:1,
						discard:1
					}
				}
			},
			jiedao:{
				audio:true,
				fullskin:true,
				type:'trick',
				enable:true,
				singleCard:true,
				targetprompt:['被借刀','出杀目标'],
				complexSelect:true,
				complexTarget:true,
				multicheck:function(){
					var card={name:'sha',isCard:true};
					return game.hasPlayer(function(current){
						if(current.getEquips(1).length>0){
							return game.hasPlayer(function(current2){
								return current.inRange(current2)&&lib.filter.targetEnabled(card,current,current2);
							})
						}
					});
				},
				filterTarget:function(card,player,target){
					var card={name:'sha',isCard:true};
					return player!=target&&target.getEquips(1).length>0&&game.hasPlayer(function(current){
						return target!=current&&target.inRange(current)&&lib.filter.targetEnabled(card,target,current);
					});
				},
				filterAddedTarget:function(card,player,target,preTarget){
					var card={name:'sha',isCard:true};
					return target!=preTarget&&preTarget.inRange(target)&&lib.filter.targetEnabled(card,preTarget,target);
				},
				content:function(){
					"step 0"
					if(event.directHit||!event.addedTarget||(!_status.connectMode&&lib.config.skip_shan&&!target.hasSha())){
						event.directfalse=true;
					}
					else{
						target.chooseToUse('对'+get.translation(event.addedTarget)+'使用一张杀,或令'+get.translation(player)+'获得你的武器牌',function(card,player){
							if(get.name(card)!='sha') return false;
							return lib.filter.filterCard.apply(this,arguments);
						}).set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
						if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false;
						return lib.filter.filterTarget.apply(this,arguments);
					}).set('sourcex',event.addedTarget).set('addCount',false).set('respondTo',[player,card]);
					}
					"step 1"
					if(event.directfalse||result.bool==false){
						var cards=target.getEquips(1);
						if(cards.length) player.gain(cards,target,'give','bySelf');
					}
				},
				ai:{
					wuxie:function(target,card,player,viewer){
						if(player==game.me&&get.attitude(viewer,player)>0){
							return 0;
						}
					},
					basic:{
						order:8,
						value:2,
						useful:1,
					},
					result:{
						target:-1.5,
						player:function(player){
							if(player.getCards('he',{subtype:'equip1'}).length) return 0;
							return 1.5;
						},
					},
					tag:{
						gain:1,
						use:1,
						useSha:1,
						loseCard:1,
					}
				}
			},
			wuxie:{
				audio:true,
				fullskin:true,
				type:'trick',
				ai:{
					basic:{
						useful:[6,4,3],
						value:[6,4,3],
					},
					result:{player:1},
					expose:0.2
				},
				notarget:true,
				finalDelay:false,
				defaultYingbianEffect:'draw',
				contentBefore:function(){
					'step 0'
					if(get.mode()=='guozhan'&&get.cardtag(card,'guo')){
						var trigger=event.getParent(2)._trigger;
						if(trigger.name!='phaseJudge'&&trigger.card.name!='wuxie'&&trigger.targets.length>1){
							player.chooseControl('对单体使用','对势力使用').set('prompt','请选择'+get.translation(card)+'的使用方式').set('ai',function(){
								return '对势力使用'
							});
						}
						else event.finish();
					}
					else event.finish();
					'step 1'
					if(result.control=='对势力使用'){
						player.chat('对势力使用');
						event.getParent().guowuxie=true;
					}
				},
				content:function(){
					var trigger=event.getParent(2)._trigger;
					if(trigger.name=='phaseJudge'){
						trigger.untrigger();
						trigger.cancelled=true;
					}
					else{
						trigger.neutralize();
						if(event.getParent().guowuxie==true){
							trigger.getParent().excluded.addArray(game.filterPlayer(function(current){
								return current.isFriendOf(trigger.target);
							}));
						}
					}
					/*
					event.result={
						wuxied:true,
						directHit:evt.directHit||[],
						nowuxie:evt.nowuxie,
					};*/
					if(player.isOnline()){
						player.send(function(player){
							if(ui.tempnowuxie&&!player.hasWuxie()){
								ui.tempnowuxie.close();
								delete ui.tempnowuxie;
							}
						},player);
					}
					else if(player==game.me){
						if(ui.tempnowuxie&&!player.hasWuxie()){
							ui.tempnowuxie.close();
							delete ui.tempnowuxie;
						}
					}
				}
			},
			lebu:{
				audio:true,
				fullskin:true,
				type:'delay',
				filterTarget:function(card,player,target){
					return (lib.filter.judge(card,player,target)&&player!=target);
				},
				judge:function(card){
					if(get.suit(card)=='heart') return 1;
					return -2;
				},
				judge2:function(result){
					if(result.bool==false) return true;
					return false;
				},
				effect:function(){
					if(result.bool==false){
						player.skip('phaseUse');
					}
				},
				ai:{
					basic:{
						order:1,
						useful:1,
						value:8,
					},
					result:{
						ignoreStatus:true,
						target:function(player,target){
							var num=target.hp-target.countCards('h')-2;
							if(num>-1) return -0.01;
							if(target.hp<3) num--;
							if(target.isTurnedOver()) num/=2;
							var dist=get.distance(player,target,'absolute');
							if(dist<1) dist=1;
							return num/Math.sqrt(dist)*get.threaten(target,player);
						}
					},
					tag:{
						skip:'phaseUse'
					}
				}
			},
			shandian:{
				audio:true,
				fullskin:true,
				type:'delay',
				cardnature:'thunder',
				modTarget:function(card,player,target){
					return lib.filter.judge(card,player,target);
				},
				enable:function(card,player){
					return player.canAddJudge(card);
				},
				filterTarget:function(card,player,target){
					return (lib.filter.judge(card,player,target)&&player==target);
				},
				selectTarget:[-1,-1],
				toself:true,
				judge:function(card){
					if(get.suit(card)=='spade'&&get.number(card)>1&&get.number(card)<10) return -5;
					return 1;
				},
				judge2:function(result){
					if(result.bool==false) return true;
					return false;
				},
				effect:function(){
					if(result.bool==false){
						player.damage(3,'thunder','nosource');
					}
					else{
						player.addJudgeNext(card);
					}
				},
				cancel:function(){
					player.addJudgeNext(card);
				},
				ai:{
					basic:{
						order:1,
						useful:0,
						value:0,
					},
					result:{
						target:function(player,target){
							var num=game.countPlayer(function(current){
								var skills=current.getSkills();
								for(var j=0;j<current.skills.length;j++){
									var rejudge=get.tag(current.skills[j],'rejudge',current);
									if(rejudge!=undefined){
										if(get.attitude(target,current)>0&&
										get.attitude(current,target)>0){
											return rejudge;
										}
										else{
											return -rejudge;
										}
									}
								}
							});
							if(num>0) return num;
							if(num==0){
								var mode=get.mode();
								if(mode=='identity'){
									if(target.identity=='nei') return 1;
									var situ=get.situation();
									if(target.identity=='fan'){
										if(situ>1) return 1;
									}
									else{
										if(situ<-1) return 1;
									}
								}
								else if(mode=='guozhan'){
									if(target.identity=='ye') return 1;
									if(game.hasPlayer(function(current){
										return current.identity=='unknown';
									})){
										return -1;
									}
									if(get.population(target.identity)==1){
										if(target.maxHp>2&&target.hp<2) return 1;
										if(game.countPlayer()<3) return -1;
										if(target.hp<=2&&target.countCards('he')<=3) return 1;
									}
								}
							}
							return -1;
						}
					},
					tag:{
						// damage:1,
						// natureDamage:1,
						// thunderDamage:1,
					}
				}
			},
			hanbing:{
				fullskin:true,
				type:"equip",
				subtype:"equip1",
				distance:{attackFrom:-1},
				skills:['hanbing_skill'],
				ai:{
					basic:{
						equipValue:2
					}
				},
			},
			renwang:{
				fullskin:true,
				type:"equip",
				subtype:"equip2",
				skills:['renwang_skill'],
				ai:{
					basic:{
						equipValue:7.5
					},
				},
			},
		},
		skill:{
			qinglong_guozhan:{
				equipSkill:true,
				trigger:{player:'useCard'},
				forced:true,
				audio:'qinglong_skill',
				filter:function(event,player){
					return get.mode()=='guozhan'&&event.card.name=='sha';
				},
				content:function(){
					if(!_status.qinglong_guozhan) _status.qinglong_guozhan=[];
					_status.qinglong_guozhan.add(trigger);
					game.countPlayer2(function(current){
						current.addTempSkill('qinglong_guozhan_mingzhi');
					});
					game.broadcast(function(list){
						_status.qinglong_guozhan=list;
					},_status.qinglong_guozhan.map(function(i){
						return {targets:i.targets};
					}))
					var next=game.createEvent('qinglong_guozhan');
					event.next.remove(next);
					trigger.after.add(next);
					next.setContent(function(){
						_status.qinglong_guozhan.remove(event.parent);
						game.broadcast(function(list){
							_status.qinglong_guozhan=list;
						},_status.qinglong_guozhan.map(function(i){
							return {targets:i.targets};
						}));
					});
				}
			},
			qinglong_guozhan_mingzhi:{
				ai:{
					nomingzhi:true,
					skillTagFilter:function(player){
						if(_status.qinglong_guozhan){
							for(var i=0;i<_status.qinglong_guozhan.length;i++){
								if(_status.qinglong_guozhan[i].targets.contains(player)) return true;
							}
						}
						return false;
					},
				}
			},
			hanbing_skill:{
				equipSkill:true,
				trigger:{source:'damageBegin2'},
				//direct:true,
				audio:true,
				filter:function(event){
					return event.card&&event.card.name=='sha'&&event.notLink()&&event.player.getCards('he').length>0;
				},
				//priority:1,
				check:function(event,player){
					var target=event.player;
					var eff=get.damageEffect(target,player,player,event.nature);
					if(get.attitude(player,target)>0){
						if(eff>=0) return false;
						return true;
					}
					if(eff<=0) return true;
					if(target.hp==1) return false;
					if(event.num>1||player.hasSkill('tianxianjiu')||
						player.hasSkill('luoyi2')||player.hasSkill('reluoyi2')) return false;
					if(target.countCards('he')<2) return false;
					var num=0;
					var cards=target.getCards('he');
					for(var i=0;i<cards.length;i++){
						if(get.value(cards[i])>6) num++;
					}
					if(num>=2) return true;
					return false;
				},
				logTarget:"player",
				content:function(){
					"step 0"
					trigger.cancel();
					"step 1"
					if(trigger.player.countDiscardableCards(player,'he')){
						player.line(trigger.player);
						player.discardPlayerCard('he',trigger.player,true);
					}
					"step 2"
					if(trigger.player.countDiscardableCards(player,'he')){
						player.line(trigger.player);
						player.discardPlayerCard('he',trigger.player,true);
					}
				}
			},
			icesha_skill:{
				inherit:'hanbing_skill',
				trigger:{source:'damageBegin2'},
				equipSkill:false,
				ruleSkill:true,
				filter:function(event){
					return event.hasNature('ice')&&event.notLink()&&event.player.getCards('he').length>0;
				},
			},
			renwang_skill:{
				equipSkill:true,
				trigger:{target:'shaBegin'},
				forced:true,
				priority:6,
				audio:true,
				filter:function(event,player){
					if(player.hasSkillTag('unequip2')) return false;
					if(event.player.hasSkillTag('unequip',false,{
						name:event.card?event.card.name:null,
						target:player,
						card:event.card
					})) return false;
					return (event.card.name=='sha'&&get.color(event.card)=='black')
				},
				content:function(){
					trigger.cancel();
				},
				ai:{
					effect:{
						target:function(card,player,target){
							if(target.hasSkillTag('unequip2')) return;
							if(player.hasSkillTag('unequip',false,{
								name:card?card.name:null,
								target:target,
								card:card
							})||player.hasSkillTag('unequip_ai',false,{
								name:card?card.name:null,
								target:target,
								card:card
							})) return;
							if(card.name=='sha'&&get.color(card)=='black') return 'zerotarget';
						}
					}
				}
			},
			zhuge_skill:{
				equipSkill:true,
				audio:true,
				firstDo:true,
				trigger:{player:'useCard1'},
				forced:true,
				filter:function(event,player){
					return !event.audioed&&event.card.name=='sha'&&player.countUsed('sha',true)>1&&event.getParent().type=='phase';
				},
				content:function(){
					trigger.audioed=true;
				},
				mod:{
					cardUsable:function(card,player,num){
						var cards=player.getEquips('zhuge')
						if(card.name=='sha'){
							if(!cards.length||player.hasSkill('zhuge_skill',null,false)||cards.some(card=>(card!=_status.zhuge_temp&&!ui.selected.cards.contains(card)))){
								if(get.is.versus()||get.is.changban()){
									return num+3;
								}
								return Infinity;
							}
						}
					},
					cardEnabled2:function(card,player){
						if(!_status.event.addCount_extra||player.hasSkill('zhuge_skill',null,false)) return;
						var cards=player.getEquips('zhuge');
						if(card&&cards.contains(card)){
							try{
								var cardz=get.card();
							}
							catch(e){
								return;
							}
							if(!cardz||cardz.name!='sha') return;
							_status.zhuge_temp=card;
							var bool=lib.filter.cardUsable(get.autoViewAs({name:'sha'},ui.selected.cards.concat([card])),player);
							delete _status.zhuge_temp;
							if(!bool) return false;
						}
					},
				},
			},
			cixiong_skill:{
				equipSkill:true,
				trigger:{player:'useCardToPlayered'},
				audio:true,
				logTarget:'target',
				check:function(event,player){
					if(get.attitude(player,event.target)>0) return true;
					var target=event.target;
					return target.countCards('h')==0||!target.hasSkillTag('noh');
				},
				filter:function(event,player){
					if(event.card.name!='sha') return false;
					return player.differentSexFrom(event.target);
				},
				content:function(){
					"step 0"
					if(!trigger.target.countCards('h')) event._result={bool:false};
					else trigger.target.chooseToDiscard('弃置一张手牌,或令'+get.translation(player)+'摸一张牌').set('ai',function(card){
						var trigger=_status.event.getTrigger();
						return -get.attitude(trigger.target,trigger.player)-get.value(card)-Math.max(0,4-trigger.target.hp)*2;
					});
					"step 1"
					if(result.bool==false) player.draw();
				}
			},
			qinggang_skill:{
				equipSkill:true,
				audio:true,
				trigger:{
					player:'useCardToPlayered',
				},
				filter:function(event){
					return event.card.name=='sha';
				},
				forced:true,
				logTarget:'target',
				content:function(){
					trigger.target.addTempSkill('qinggang2');
					trigger.target.storage.qinggang2.add(trigger.card);
					trigger.target.markSkill('qinggang2');
				},
				ai:{
					unequip_ai:true,
					skillTagFilter:function(player,tag,arg){
						if(arg&&arg.name=='sha') return true;
						return false;
					}
				}
			},
			qinggang2:{
				firstDo:true,
				ai:{unequip2:true},
				init:function(player,skill){
					if(!player.storage[skill]) player.storage[skill]=[];
				},
				onremove:true,
				trigger:{
					player:['damage','damageCancelled','damageZero'],
					source:['damage','damageCancelled','damageZero'],
					target:['shaMiss','useCardToExcluded','useCardToEnd','eventNeutralized'],
					global:['useCardEnd'],
				},
				charlotte:true,
				filter:function(event,player){
					return player.storage.qinggang2&&event.card&&player.storage.qinggang2.contains(event.card)&&(event.name!='damage'||event.notLink());
				},
				silent:true,
				forced:true,
				popup:false,
				priority:12,
				content:function(){
					player.storage.qinggang2.remove(trigger.card);
					if(!player.storage.qinggang2.length) player.removeSkill('qinggang2');
				},
				marktext:'※',
				intro:{content:'当前防具技能已失效'},
			},
			qinglong_skill:{
				equipSkill:true,
				trigger:{player:['shaMiss','eventNeutralized']},
				direct:true,
				filter:function(event,player){
					if(get.mode()=='guozhan'||!event.card||event.card.name!='sha') return false;
					return event.target.isIn()&&player.canUse('sha',event.target,false)&&(player.hasSha()||_status.connectMode&&player.countCards('hs'));
				},
				content:function(){
					"step 0"
					player.chooseToUse(get.prompt('qinglong',trigger.target),function(card,player,event){
						if(get.name(card)!='sha') return false;
						if(!player.hasSkill('qinglong_skill',null,false)){
							var cards=player.getEquips('qinglong');
							if(!cards.some(card2=>card2!=card&&!ui.selected.cards.contains(card2))) return false;
						}
						return lib.filter.filterCard.apply(this,arguments);
					},trigger.target,-1).set('addCount',false).logSkill='qinglong_skill';
				}
			},
			zhangba_skill:{
				equipSkill:true,
				enable:['chooseToUse','chooseToRespond'],
				filterCard:true,
				selectCard:2,
				position:'hs',
				viewAs:{name:'sha'},
				complexCard:true,
				filter:function(event,player){
					return player.countCards('hs')>=2;
				},
				audio:true,
				prompt:'将两张手牌当杀使用或打出',
				check:function(card){
					let player=_status.event.player;
					if(player.hasCard(function(card){
						return get.name(card)=='sha';
					})) return 0;
					if(_status.event&&_status.event.name=='chooseToRespond'&&player.hp<3&&!player.countCards('hs',function(card){
						return get.name(card)!='tao'&&get.name(card)!='jiu';
					})) return (player.hp>1?10:8)-get.value(card);
					return Math.max(5,8-0.7*player.hp)-get.value(card);
				},
				ai:{
					respondSha:true,
					skillTagFilter:function(player){
						return player.countCards('hs')>=2;
					},
				}
			},
			guanshi_skill:{
				equipSkill:true,
				trigger:{
					player:['shaMiss','eventNeutralized'],
				},
				direct:true,
				audio:true,
				filter:function(event,player){
					if(event.type!='card'||event.card.name!='sha'||!event.target.isIn()) return false;
					var min=2;
					if(!player.hasSkill('guanshi_skill',null,false)) min+=get.sgn(player.getEquips('guanshi').length)
					return player.countCards('he')>=min;
				},
				content:function(){
					"step 0"
					//装备区内可能有多个贯石斧 或者玩家可能通过其他渠道获得贯石斧技能 只要留一张贯石斧不扔掉即可
					var next=player.chooseToDiscard(get.prompt('guanshi'),2,'he',function(card,player){
						if(_status.event.ignoreCard) return true;
						var cards=player.getEquips('guanshi');
						if(!cards.contains(card)) return true;
						return cards.some(cardx=>(cardx!=card&&!ui.selected.cards.contains(cardx)));
					}).set('ignoreCard',player.hasSkill('guanshi_skill',null,false)).set('complexCard',true)
					next.logSkill='guanshi_skill';
					next.set('ai',function(card){
						var evt=_status.event.getTrigger();
						if(get.attitude(evt.player,evt.target)<0){
							if(player.needsToDiscard()) return 15-get.value(card);
							if(evt.baseDamage+evt.extraDamage>=Math.min(2,evt.target.hp)) return 8-get.value(card);
							return 5-get.value(card);
						}
						return -1;
					});
					"step 1"
					if(result.bool){
						if(event.triggername=='shaMiss'){
							trigger.untrigger();
							trigger.trigger('shaHit');
							trigger._result.bool=false;
							trigger._result.result=null;
						}
						else{
							trigger.unneutralize();
						}
					}
				},
				ai:{
					directHit_ai:true,
					skillTagFilter:function(player,tag,arg){
						if(player._guanshi_temp) return;
						player._guanshi_temp=true;
						var bool=(get.attitude(player,arg.target)<0&&arg.card&&arg.card.name=='sha'&&player.countCards('he',function(card){
							return card!=player.getEquip('guanshi')&&card!=arg.card&&(!arg.card.cards||!arg.card.cards.contains(card))&&get.value(card)<5;
						})>1);
						delete player._guanshi_temp;
						return bool;
					},
				},
			},
			fangtian_skill:{
				equipSkill:true,
				audio:true,
				trigger:{player:'useCard1'},
				forced:true,
				firstDo:true,
				filter:function(event,player){
					if(event.card.name!='sha'||get.mode()=='guozhan') return false;
					var card=event.card;
					var range;
					var select=get.copy(get.info(card).selectTarget);
					if(select==undefined){
						if(get.info(card).filterTarget==undefined) return false;
						range=[1,1];
					}
					else if(typeof select=='number') range=[select,select];
					else if(get.itemtype(select)=='select') range=select;
					else if(typeof select=='function') range=select(card,player);
					game.checkMod(card,player,range,'selectTarget',player);
					return range[1]!=-1&&event.targets.length>range[1];
				},
				content:function(){},
				mod:{
					selectTarget:function(card,player,range){
						if(card.name!='sha') return;
						if(get.mode()=='guozhan') return;
						if(range[1]==-1) return;
						var cards=player.getCards('h');
						if(!cards.length) return;
						for(var i=0;i<cards.length;i++){
							if(cards[i].classList.contains('selected')==false)
								return;
						}
						range[1]+=2;
					}
				}
			},
			fangtian_guozhan:{
				equipSkill:true,
				trigger:{player:'useCard2'},
				filter:function(event,player){
					if(get.mode()!='guozhan') return false;
					if(event.card.name!='sha') return false;
					return game.hasPlayer(function(target){
						if(event.targets.contains(target)) return false;
						if(!lib.filter.filterTarget(event.card,player,target)) return false;
						if(target.identity=='ye'||target.identity=='unknown') return true;
						for(var i=0;i<event.targets.length;i++){
							if(target.identity==event.targets[i].identity) return false;
						}
						return true;
					});
				},
				direct:true,
				content:function(){
					'step 0'
					player.chooseTarget(get.prompt2('fangtian'),[1,Infinity],function(card,player,target){
						var cardx=_status.event.cardx;
						if(!lib.filter.filterTarget(cardx,player,target)) return false;
						var targets=_status.event.targets.slice(0).concat(ui.selected.targets);
						if(targets.contains(target)) return false;
						if(target.identity=='ye'||target.identity=='unknown') return true;
						for(var i=0;i<targets.length;i++){
							if(target.identity==targets[i].identity) return false;
						}
						return true;
					}).set('promptbar','none').set('cardx',trigger.card).set('targets',trigger.targets).set('ai',function(target){
						var player=_status.event.player;
						return get.effect(target,_status.event.cardx,player,player)
					});
					'step 1'
					if(result.bool){
						player.logSkill('fangtian_skill',result.targets);
						if(!player.storage.fangtian_guozhan_trigger) player.storage.fangtian_guozhan_trigger=[];
						player.storage.fangtian_guozhan_trigger.add(trigger.card);
						trigger.targets.addArray(result.targets);
						player.addTempSkill('fangtian_guozhan_trigger');
					}
				},
			},
			fangtian_guozhan_trigger:{
				trigger:{player:'shaMiss'},
				silent:true,
				onremove:true,
				content:function(){
					if(player.storage[event.name].contains(trigger.card)) trigger.getParent().excluded.addArray(trigger.getParent().targets);
				},
				group:'fangtian_guozhan_remove',
			},
			fangtian_guozhan_remove:{
				trigger:{player:['useCardAfter','useCardCancelled']},
				silent:true,
				filter:function(event,player){
					return player.storage.fangtian_guozhan_trigger&&player.storage.fangtian_guozhan_trigger.contains(event.card);
				},
				content:function(){
					player.storage.fangtian_guozhan_trigger.remove(trigger.card);
				}
			},
			qilin_skill:{
				equipSkill:true,
				trigger:{source:'damageBegin2'},
				filter:function(event,player){
					return event.card&&event.card.name=='sha'&&event.notLink()&&event.player.getCards('e',{subtype:['equip3','equip4','equip6']}).length>0
				},
				direct:true,
				audio:true,
				content:function(){
					"step 0"
					var att=(get.attitude(player,trigger.player)<=0);
					var next=player.chooseButton();
					next.set('att',att);
					next.set('createDialog',['是否发动【麒麟弓】,弃置'+get.translation(trigger.player)+'的一张坐骑牌?',trigger.player.getCards('e',{subtype:['equip3','equip4','equip6']})]);
					next.set('ai',function(button){
						if(_status.event.att) return get.buttonValue(button);
						return 0;
					});
					"step 1"
					if(result.bool){
						player.logSkill('qilin_skill',trigger.player);
						trigger.player.discard(result.links[0]);
					}
				}
			},
			bagua_skill:{
				equipSkill:true,
				trigger:{player:['chooseToRespondBegin','chooseToUseBegin']},
				filter:function(event,player){
					if(event.responded) return false;
					if(event.bagua_skill) return false;
					if(!event.filterCard||!event.filterCard({name:'shan'},player,event)) return false;
					if(event.name=='chooseToRespond'&&!lib.filter.cardRespondable({name:'shan'},player,event)) return false;
					if(player.hasSkillTag('unequip2')) return false;
					var evt=event.getParent();
					if(evt.player&&evt.player.hasSkillTag('unequip',false,{
						name:evt.card?evt.card.name:null,
						target:player,
						card:evt.card
					})) return false;
					return true;
				},
				audio:true,
				check:function(event,player){
					if(event&&(event.ai||event.ai1)){
						var ai=event.ai||event.ai1;
						var tmp=_status.event;
						_status.event=event;
						var result=ai({name:'shan'},_status.event.player,event);
						_status.event=tmp;
						return result>0;
					}
					return true;
				},
				content:function(){
					"step 0"
					trigger.bagua_skill=true;
					player.judge('bagua',function(card){return (get.color(card)=='red')?1.5:-0.5}).judge2=function(result){
						return result.bool;
					};
					"step 1"
					if(result.judge>0){
						trigger.untrigger();
						trigger.set('responded',true);
						trigger.result={bool:true,card:{name:'shan',isCard:true}}
					}
				},
				ai:{
					respondShan:true,
					effect:{
						target:function(card,player,target,effect){
							if(target.hasSkillTag('unequip2')) return;
							if(player.hasSkillTag('unequip',false,{
								name:card?card.name:null,
								target:target,
								card:card
							})||player.hasSkillTag('unequip_ai',false,{
								name:card?card.name:null,
								target:target,
								card:card
							})) return;
							if(get.tag(card,'respondShan')) return 0.5;
						}
					}
				}
			},
			_wuxie:{
				trigger:{player:['useCardToBegin','phaseJudge']},
				priority:5,
				popup:false,
				forced:true,
				filter:function(event,player){
					if(event.card.storage&&event.card.storage.nowuxie) return false;
					var card=event.card;
					if(event.name=='phaseJudge'&&card.viewAs) card={name:card.viewAs};
					var info=get.info(card);
					if(info.wuxieable===false) return false;
					if(event.name!='phaseJudge'){
						if(event.getParent().nowuxie) return false;
						if(event.player.hasSkillTag('playernowuxie',false,event.card)) return false;
						if(get.type(event.card)!='trick'&&!info.wuxieable) return false;
					}
					return true;
				},
				forceLoad:true,
				content:function(){
					'step 0'
					delete event.wuxieresult;
					delete event.wuxieresult2;
					//创建map存储各种信息,用于hasHiddenWuxie判断
					var map={};
					event._info_map=map;
					var card=trigger.card;
					var state=true;
					if(trigger.name=='phaseJudge'){
						if(get.itemtype(card)=='card'&&card.viewAs) card=get.autoViewAs({name:card.viewAs},[card]);
						map.target=trigger.player;
						map.isJudge=true;
					}
					else{
						map.player=trigger.player;
						if(trigger.multitarget) map.multitargets=true;
						map.target=trigger.target;
						map.targets=trigger.targets;
						map.tempnowuxie=(trigger.targets&&trigger.targets.length>1&&!trigger.multitarget);
						map.noai=Boolean(trigger.getParent().noai);
						//如果对拼无懈,获取历史数据
						if(card.name=='wuxie'){
							var evt=event;
							while(true){
								evt=evt.getParent(5);
								if(evt&&evt.name=='_wuxie'){
									state=!state;
									var evtmap=evt._info_map;
									if(evtmap.card.name!='wuxie'){
										map._source=evtmap;
									}
								}
								else break;
							}
						}
					}
					map.card=card;
					map.state=state?1:-1;
					map.id2=trigger.getParent().id;
					event._global_waiting=true;
					//发送函数
					event.send=function(player,map,skillState){
						//获取技能数据
						if(skillState){
							player.applySkills(skillState);
						}
						//生成描述提示
						var prompt='',evtmap=map,state=map.state;
						if(map._source) evtmap=map._source;
						if(evtmap.isJudge){
							prompt+=(get.translation(evtmap.target)+'的'+get.translation(evtmap.card)+'即将'+(state>0?'生':'失')+'效。');
						}
						else{
							prompt+=get.translation(evtmap.player);
							if(evtmap.multitarget){
								if(evtmap.targets.length){
									prompt+='对';
									prompt+=get.translation(evtmap.targets);
								}
							}
							else if(evtmap.target){
								prompt+='对';
								prompt+=(evtmap.target==evtmap.player?'自己':get.translation(evtmap.target));
							}
							prompt+=('使用的'+get.translation(evtmap.card));
							prompt+=('即将'+(state>0?'生':'失')+'效。');
						}
						prompt+='是否使用【无懈可击】?';

						if(player.isUnderControl(true)&&!_status.auto&&!ui.tempnowuxie&&map.tempnowuxie){
							var translation=get.translation(map.card.name);
							if(translation.length>=4){
								translation=lib.translate[map.card.name+'_ab']||translation.slice(0,2);
							}
							ui.tempnowuxie=ui.create.control('不无懈'+translation,ui.click.tempnowuxie,'stayleft');
							ui.tempnowuxie._origin=map.id2;
						}
						var next=player.chooseToUse({
							filterCard:function(card,player){
								if(get.name(card)!='wuxie') return false;
								return lib.filter.cardEnabled(card,player,'forceEnable');
							},
							prompt:prompt,
							type:'wuxie',
							_global_waiting:true,
							ai1:function(){
								if(map.isJudge){
									var card=evtmap.card,source=evtmap.target;
									var name=card.viewAs||card.name;
									var info=lib.card[name];
									if(info&&info.ai&&info.ai.wuxie){
										var aiii=info.ai.wuxie(source,card,source,_status.event.player,state);
										if(typeof aiii=='number') return aiii;
									}
									if(Math.abs(get.attitude(_status.event.player,source))<3) return 0;
									if(source.hasSkillTag('nowuxie_judge')||source.hasSkillTag('guanxing')&&(source!=player||!source.hasSkill('guanxing_fail'))) return 0;
									if(name!='lebu'&&name!='bingliang'){
										if(source!=_status.event.player){
											return 0;
										}
									}
									if(name=='bingliang'&&source.countCards('j')>0&&source.countCards('h')>=source.hp-1){
										return 0;
									}
									var card2;
									if(name!=card.name){
										card2={name:name};
									}
									else{
										card2=card;
									}
									var eff=get.effect(source,card2,source,source);
									if(eff>=0) return 0;
									return state*get.attitude(_status.event.player,source);
								}
								else if(evtmap.target){
									var triggerevent=_status.event.getTrigger();
									if(triggerevent&&triggerevent.parent&&
										triggerevent.parent.postAi&&
										triggerevent.player.isUnknown(_status.event.player)){
										return 0;
									}
									var card=evtmap.card,target=evtmap.target,source=evtmap.player;
									var info=get.info(card);
									if(info.ai&&info.ai.wuxie){
										var aiii=info.ai.wuxie(target,card,source,_status.event.player,state);
										if(typeof aiii=='number') return aiii;
									}
									if(info.multitarget&&targets){
										var eff=0;
										for(var i=0;i<targets.length;i++){
											eff+=get.effect(targets[i],card,source,_status.event.player)
										}
										return -eff*state;
									}
									if(Math.abs(get.attitude(_status.event.player,target))<3) return 0;
									return -get.effect(target,card,source,_status.event.player)*state;
								}
								else{
									var triggerevent=_status.event.getTrigger();
									if(triggerevent&&triggerevent.parent&&
										triggerevent.parent.postAi&&
										triggerevent.player.isUnknown(_status.event.player)){
										return 0;
									}
									var card=evtmap.card,source=evtmap.player;
									var info=get.info(card);
									if(info.ai&&info.ai.wuxie){
										var aiii=info.ai.wuxie(target,card,source,_status.event.player,state);
										if(typeof aiii=='number') return aiii;
									}
									if(Math.abs(get.attitude(_status.event.player,source))<3) return 0;
									return -get.attitude(_status.event.player,source)*state;
								}
							},
							source:evtmap.target,
							source2:evtmap.targets,
							id:map.id,
							id2:map.id2,
							state:state,
							info_map:map,
						});
						if(map.card&&map.player) next.respondTo=[map.player,map.card]
						if(game.online){
							_status.event._resultid=map.id;
							game.resume();
						}
						else{
							next.nouse=true;
						}
					};
					'step 1'
					//判断谁有无懈
					var map=event._info_map;
					var list=game.filterPlayer(function(current){
						if(event.triggername=='phaseJudge'){
							if(game.checkMod(map.card,map.target,current,'unchanged','wuxieJudgeEnabled',current)==false) return false;
							if(game.checkMod(map.card,map.target,current,'unchanged','wuxieJudgeRespondable',map.target)==false) return false;
						}
						else{
							if(trigger.getParent().directHit.contains(current)) return false;
							if(game.checkMod(map.card,map.player,map.target,current,'unchanged','wuxieEnabled',current)==false) return false;
							if(game.checkMod(map.card,map.player,map.target,current,'unchanged','wuxieRespondable',map.player)==false) return false;
						}
						return current.hasWuxie(map);
					});
					event.list=list;
					event.id=get.id();
					map.id=event.id;
					list.sortBySeat(_status.currentPhase);
					'step 2'
					if(event.list.length==0){
						event.finish();
					}
					else if(_status.connectMode&&(event.list[0].isOnline()||event.list[0]==game.me)){
						event.goto(4);
					}
					else{
						event.current=event.list.shift();
						event.send(event.current,event._info_map);
					}
					'step 3'
					if(result.bool){
						event.wuxieresult=event.current;
						event.wuxieresult2=result;
						event.goto(8);
					}
					else{
						event.goto(2);
					}
					'step 4'
					var id=event.id;
					var sendback=function(result,player){
						if(result&&result.id==id&&!event.wuxieresult&&result.bool){
							event.wuxieresult=player;
							event.wuxieresult2=result;
							game.broadcast('cancel',id);
							return (function(){
								if(_status.event.id==id&&_status.event.name=='chooseToUse'&&_status.paused) event.resultOL=_status.event.resultOL;
								if(_status.event._parent_id==id){
									ui.click.cancel();
								}
								if(_status.event.id==id){
									if(_status.event._backup) ui.click.cancel();
									ui.click.cancel();
									if(ui.confirm){
										ui.confirm.close();
									}
									if(_status.event.result){
										_status.event.result.id=id;
									}
								}
							});
						}
						else{
							if(_status.event.id==id&&_status.event.name=='chooseToUse'&&_status.paused){
								return (function(){
									event.resultOL=_status.event.resultOL;
								});
							}
						}
					};

					var withme=false;
					var withol=false;
					var list=event.list;
					for(var i=0;i<list.length;i++){
						if(list[i].isOnline()){
							withol=true;
							list[i].wait(sendback);
							list[i].send(event.send,list[i],event._info_map,get.skillState(list[i]));
							list.splice(i--,1);
						}
						else if(list[i]==game.me){
							withme=true;
							event.send(list[i],event._info_map);
							list.splice(i--,1);
						}
					}
					if(!withme){
						event.goto(6);
					}
					if(_status.connectMode){
						if(withme||withol){
							for(var i=0;i<game.players.length;i++){
								game.players[i].showTimer();
							}
						}
					}
					event.withol=withol;
					'step 5'
					if(result&&result.bool&&!event.wuxieresult){
						game.broadcast('cancel',event.id);
						event.wuxieresult=game.me;
						event.wuxieresult2=result;
					}
					'step 6'
					if(event.withol&&!event.resultOL){
						game.pause();
					}
					'step 7'
					for(var i=0;i<game.players.length;i++){
						game.players[i].hideTimer();
					}
					'step 8'
					if(event.wuxieresult2&&event.wuxieresult2._sendskill) lib.skill[event.wuxieresult2._sendskill[0]]=event.wuxieresult2._sendskill[1];
					if(event.wuxieresult&&event.wuxieresult2&&event.wuxieresult2.skill){
						var info=get.info(event.wuxieresult2.skill);
						if(info&&info.precontent&&!game.online){
							var next=game.createEvent('pre_'+event.wuxieresult2.skill);
							next.setContent(info.precontent);
							next.set('result',event.wuxieresult2);
							next.set('player',event.wuxieresult);
						}
					}
					'step 9'
					if(event.wuxieresult){
						var next=event.wuxieresult.useResult(event.wuxieresult2);
						if(event.triggername!='phaseJudge'){
							next.respondTo=[trigger.player,trigger.card];
						}
					}
				},
			},
			/*
			_wuxie:{
				trigger:{player:['useCardToBegin','phaseJudge']},
				priority:5,
				popup:false,
				forced:true,
				filter:function(event,player){
					if(event.card.storage&&event.card.storage.nowuxie) return false;
					var card=event.card;
					if(event.name=='phaseJudge'&&card.viewAs) card={name:card.viewAs};
					var info=get.info(card);
					if(info.wuxieable===false) return false;
					if(event.name!='phaseJudge'){
						if(event.getParent().nowuxie) return false;
						if(!event.target){
							if(info.wuxieable) return true;
							return false;
						}
						if(event.player.hasSkillTag('playernowuxie',false,event.card)) return false;
						if(get.type(event.card)!='trick'&&!info.wuxieable) return false;
					}
					return true;
				},
				forceLoad:true,
				content:function(){
					'step 0'
					delete event.wuxieresult;
					delete event.wuxieresult2;
					if(trigger.multitarget){
						event.targets=trigger.targets;
					}
					event.target=trigger.target;
					if(event.triggername=='phaseJudge'){
						event.target=trigger.player;
					}
					event.sourcex=event.targets||event.target;
					if(!event.targets&&trigger.targets&&trigger.targets.length==1){
						event.sourcex2=trigger.player;
					}
					event.source=trigger.player;
					if(event.state==undefined) event.state=true;
					event.card=trigger.card;
					event._global_waiting=true;
					event.tempnowuxie=(trigger.targets&&trigger.targets.length>1&&!trigger.multitarget);
					event.filterCard=function(card,player){
						if(get.name(card)!='wuxie') return false;
						return lib.filter.cardEnabled(card,player,'forceEnable');
					};
					event.send=function(player,state,isJudge,card,source,target,targets,id,id2,tempnowuxie,skillState,respondInfo){
						if(skillState){
							player.applySkills(skillState);
						}
						state=state?1:-1;
						var str='';
						if(isJudge){
							str+=get.translation(source)+'的';
						}
						if(isJudge){
							str+=get.translation(card,'viewAs');
						}
						else{
							str+=get.translation(card);
						}
						if((targets||target)&&!isJudge){
							str+='对'+get.translation(targets||target);
						}
						str+='将'+(state>0?'生效':'失效')+',是否无懈?';

						if(player.isUnderControl(true)&&!_status.auto&&!ui.tempnowuxie&&tempnowuxie){
							var translation=get.translation(card.name);
							if(translation.length>=4){
								translation=lib.translate[card.name+'_ab']||translation.slice(0,2);
							}
							ui.tempnowuxie=ui.create.control('不无懈'+translation,ui.click.tempnowuxie,'stayleft');
							ui.tempnowuxie._origin=id2;
						}
						var next=player.chooseToUse({
							filterCard:function(card,player){
								if(get.name(card)!='wuxie') return false;
								return lib.filter.cardEnabled(card,player,'forceEnable');
							},
							prompt:str,
							type:'wuxie',
							state:state,
							_global_waiting:true,
							ai1:function(){
								if(isJudge){
									var name=card.viewAs||card.name;
									var info=lib.card[name];
									if(info&&info.ai&&info.ai.wuxie){
										var aiii=info.ai.wuxie(source,card,source,_status.event.player,state);
										if(typeof aiii=='number') return aiii;
									}
									if(Math.abs(get.attitude(_status.event.player,source))<3) return 0;
									if(source.hasSkillTag('nowuxie_judge')||source.hasSkillTag('guanxing')&&(source!=player||!source.hasSkill('guanxing_fail'))) return 0;
									if(name!='lebu'&&name!='bingliang'){
										if(source!=_status.event.player){
											return 0;
										}
									}
									var card2;
									if(name!=card.name){
										card2={name:name};
									}
									else{
										card2=card;
									}
									var eff=get.effect(source,card2,source,source);
									if(eff>=0) return 0;
									return state*get.attitude(_status.event.player,source);
								}
								else if(target){
									var triggerevent=_status.event.getTrigger();
									if(triggerevent&&triggerevent.parent&&
										triggerevent.parent.postAi&&
										triggerevent.player.isUnknown(_status.event.player)){
										return 0;
									}
									var info=get.info(card);
									if(info.ai&&info.ai.wuxie){
										var aiii=info.ai.wuxie(target,card,source,_status.event.player,state);
										if(typeof aiii=='number') return aiii;
									}
									if(info.multitarget&&targets){
										var eff=0;
										for(var i=0;i<targets.length;i++){
											eff+=get.effect(targets[i],card,source,_status.event.player)
										}
										return -eff*state;
									}
									if(Math.abs(get.attitude(_status.event.player,target))<3) return 0;
									return -get.effect(target,card,source,_status.event.player)*state;
								}
								else{
									var triggerevent=_status.event.getTrigger();
									if(triggerevent&&triggerevent.parent&&
										triggerevent.parent.postAi&&
										triggerevent.player.isUnknown(_status.event.player)){
										return 0;
									}
									var info=get.info(card);
									if(info.ai&&info.ai.wuxie){
										var aiii=info.ai.wuxie(target,card,source,_status.event.player,state);
										if(typeof aiii=='number') return aiii;
									}
									if(Math.abs(get.attitude(_status.event.player,source))<3) return 0;
									return -get.attitude(_status.event.player,source)*state;
								}
							},
							source:target,
							source2:targets,
							id:id,
							id2:id2,
							respondInfo:respondInfo,
						});
						if(event.stateplayer&&event.statecard) next.set('respondTo',[event.stateplayer,event.statecard]);
						else if(!isJudge){
							next.set('respondTo',[source,card]);
						}
						if(game.online){
							_status.event._resultid=id;
							game.resume();
						}
						else{
							next.nouse=true;
						}
					};
					event.settle=function(){
						if(event.respondWuxie) event.trigger('eventNeutralized');
						if(!event.state){
							if(event.triggername=='phaseJudge'){
								trigger.untrigger();
								trigger.cancelled=true;
							}
							else{
								trigger.neutralize();
								if(event.guowuxie==true){
									trigger.getParent().excluded.addArray(game.filterPlayer(function(current){
										return current.isFriendOf(trigger.target);
									}));
								}
							}
						}
						event.finish();
					};
					'step 1'
					var info={};
					if(event.statecard){
						info.player=event.stateplayer;
						info.card=event.statecard;
					}
					else if(event.triggername=='phaseJudge'){
						info.card=trigger.card;
						info.target=trigger.player;
					}
					else{
						info.player=trigger.player;
						info.card=trigger.card;
						if(trigger.multitarget){
							info.targets=trigger.targets;
						}
						else info.target=trigger.target;
					}
					event.respond_info=info;
					var list=game.filterPlayer(function(current){
						if(event.nowuxie) return false;
						if(event.directHit&&event.directHit.contains(current)) return false;
						if(event.triggername=='phaseJudge'){
							if(game.checkMod(trigger.card,player,current,'unchanged','wuxieJudgeEnabled',current)==false) return false;
							if(game.checkMod(trigger.card,player,current,'unchanged','wuxieJudgeRespondable',player)==false) return false;
							if(event.stateplayer&&event.statecard&&(game.checkMod(event.statecard,event.stateplayer,player,current,'unchanged','wuxieRespondable',event.stateplayer)==false)) return false;
						}
						else{
							if(!event.statecard&&trigger.getParent().directHit.contains(current)) return false;
							if(game.checkMod(trigger.card,player,trigger.target,current,'unchanged','wuxieEnabled',current)==false) return false;
							if(game.checkMod(trigger.card,player,trigger.target,current,'unchanged','wuxieRespondable',player)==false) return false;
							if(event.stateplayer&&event.statecard&&(game.checkMod(event.statecard,event.stateplayer,trigger.player,current,'unchanged','wuxieRespondable',event.stateplayer)==false)) return false;
						}
						return current.hasWuxie(info);
					});
					event.list=list;
					event.id=get.id();
					list.sort(function(a,b){
						return get.distance(event.source,a,'absolute')-get.distance(event.source,b,'absolute');
					});
					'step 2'
					if(event.list.length==0){
						event.settle();
					}
					else if(_status.connectMode&&(event.list[0].isOnline()||event.list[0]==game.me)){
						event.goto(4);
					}
					else{
						event.current=event.list.shift();
						event.send(event.current,event.state,event.triggername=='phaseJudge',
						event.card,event.source,event.target,event.targets,event.id,trigger.parent.id,event.tempnowuxie,null,event.respond_info);
					}
					'step 3'
					if(result.bool){
						event.wuxieresult=event.current;
						event.wuxieresult2=result;
						event.goto(8);
					}
					else{
						event.goto(2);
					}
					'step 4'
					var id=event.id;
					var sendback=function(result,player){
						if(result&&result.id==id&&!event.wuxieresult&&result.bool){
							event.wuxieresult=player;
							event.wuxieresult2=result;
							game.broadcast('cancel',id);
							return (function(){
								if(_status.event.id==id&&_status.event.name=='chooseToUse'&&_status.paused) event.resultOL=_status.event.resultOL;
								if(_status.event._parent_id==id){
									ui.click.cancel();
								}
								if(_status.event.id==id){
									if(_status.event._backup) ui.click.cancel();
									ui.click.cancel();
									if(ui.confirm){
										ui.confirm.close();
									}
									if(_status.event.result){
										_status.event.result.id=id;
									}
								}
							});
						}
						else{
							if(_status.event.id==id&&_status.event.name=='chooseToUse'&&_status.paused){
								return (function(){
									event.resultOL=_status.event.resultOL;
								});
							}
						}
					};

					var withme=false;
					var withol=false;
					var list=event.list;
					for(var i=0;i<list.length;i++){
						if(list[i].isOnline()){
							withol=true;
							list[i].wait(sendback);
							list[i].send(event.send,list[i],event.state,event.triggername=='phaseJudge',
							event.card,event.source,event.target,event.targets,event.id,trigger.parent.id,event.tempnowuxie,get.skillState(list[i]),event.respond_info);
							list.splice(i--,1);
						}
						else if(list[i]==game.me){
							withme=true;
							event.send(list[i],event.state,event.triggername=='phaseJudge',
							event.card,event.source,event.target,event.targets,event.id,trigger.parent.id,event.tempnowuxie,null,respondInfo);
							list.splice(i--,1);
						}
					}
					if(!withme){
						event.goto(6);
					}
					if(_status.connectMode){
						if(withme||withol){
							for(var i=0;i<game.players.length;i++){
								game.players[i].showTimer();
							}
						}
					}
					event.withol=withol;
					'step 5'
					if(result&&result.bool&&!event.wuxieresult){
						game.broadcast('cancel',event.id);
						event.wuxieresult=game.me;
						event.wuxieresult2=result;
					}
					'step 6'
					if(event.withol&&!event.resultOL){
						game.pause();
					}
					'step 7'
					for(var i=0;i<game.players.length;i++){
						game.players[i].hideTimer();
					}
					'step 8'
					if(event.wuxieresult2&&event.wuxieresult2._sendskill) lib.skill[event.wuxieresult2._sendskill[0]]=event.wuxieresult2._sendskill[1];
					if(event.wuxieresult&&event.wuxieresult2&&event.wuxieresult2.skill){
						var info=get.info(event.wuxieresult2.skill);
						if(info&&info.precontent&&!game.online){
							var next=game.createEvent('pre_'+event.wuxieresult2);
							next.setContent(info.precontent);
							next.set('result',event.wuxieresult2);
							next.set('player',event.wuxieresult);
						}
					}
					'step 9'
					if(event.wuxieresult){
						var next=event.wuxieresult.useResult(event.wuxieresult2);
						if(event.stateplayer&&event.statecard){
							event.respondWuxie=true;
							next.respondTo=[event.stateplayer,event.statecard];
						}
						else if(event.triggername!='phaseJudge'){
							next.respondTo=[trigger.player,trigger.card];
						}
					}
					'step 10'
					if(event.wuxieresult){
						if(result.wuxied){
							event.nowuxie=result.nowuxie;
							event.directHit=result.directHit;
							event.stateplayer=event.wuxieresult;
							if(event.wuxieresult2&&event.wuxieresult2.used){
								event.statecard=event.wuxieresult2.used;
							}
							else{
								event.statecard=true;
							}
							event.state=!event.state;
							event.goto(1);
						}
						else event.settle();
					}
					else if(event.list.length){
						event.goto(2);
					}
					else{
						event.settle();
					}
					delete event.resultOL;
					delete event.wuxieresult;
					delete event.wuxieresult2;
				}
			},*/
		},
		translate:{
			sha:'杀',
			huosha:'火杀',
			leisha:'雷杀',
			icesha:'冰杀',
			kamisha:'神杀',
			cisha:'刺杀',
			shan:'闪',
			tao:'桃',
			bagua:'八卦阵',
			bagua_bg:'卦',
			bagua_skill:'八卦阵',
			jueying:'绝影',
			dilu:'的卢',
			zhuahuang:'爪黄飞电',
			jueying_bg:'+马',
			dilu_bg:'+马',
			zhuahuang_bg:'+马',
			chitu:'赤兔',
			chitu_bg:'-马',
			dawan:'大宛',
			dawan_bg:'-马',
			zixin:'紫骍',
			zixin_bg:'-马',
			zhuge:'诸葛连弩',
			cixiong:'雌雄双股剑',
			zhuge_bg:'弩',
			cixiong_bg:'双',
			qinggang:'青釭剑',
			qinglong:'青龙偃月刀',
			zhangba:'丈八蛇矛',
			qinglong_bg:'偃',
			zhangba_bg:'蛇',
			guanshi:'贯石斧',
			fangtian:'方天画戟',
			qilin:'麒麟弓',
			qilin_bg:'弓',
			zhuge_skill:'诸葛连弩',
			cixiong_skill:'雌雄双股剑',
			qinggang_skill:'青釭剑',
			qinglong_skill:'青龙偃月刀',
			qinglong_guozhan:'青龙偃月刀',
			zhangba_skill:'丈八蛇矛',
			guanshi_skill:'贯石斧',
			fangtian_skill:'方天画戟',
			qilin_skill:'麒麟弓',
			wugu:'五谷丰登',
			taoyuan:'桃园结义',
			nanman:'南蛮入侵',
			wanjian:'万箭齐发',
			wuzhong:'无中生有',
			juedou:'决斗',
			wugu_bg:'谷',
			taoyuan_bg:'园',
			nanman_bg:'蛮',
			wanjian_bg:'箭',
			wuzhong_bg:'生',
			juedou_bg:'斗',
			shunshou:'顺手牵羊',
			guohe:'过河拆桥',
			guohe_bg:'拆',
			jiedao:'借刀杀人',
			wuxie:'无懈可击',
			wuxie_bg:'懈',
			lebu:'乐不思蜀',
			shandian:'闪电',
			shandian_bg:'电',
			hanbing:'寒冰剑',
			renwang:'仁王盾',
			hanbing_bg:'冰',
			renwang_bg:'盾',
			hanbing_skill:'寒冰剑',
			renwang_skill:'仁王盾',
			hanbing_info:'当你因执行【杀】的效果而造成伤害时,若目标角色有能被弃置的牌,则你可以防止此伤害,然后依次弃置目标角色的两张牌。',
			hanbing_skill_info:'当你因执行【杀】的效果而造成伤害时,若目标角色有能被弃置的牌,则你可以防止此伤害,然后依次弃置目标角色的两张牌。',
			renwang_info:'锁定技,黑色【杀】对你无效',
			renwang_skill_info:'锁定技,黑色【杀】对你无效',
			sha_info:'出牌阶段,对你攻击范围内的一名角色使用。其须使用一张【闪】,否则你对其造成1点伤害。',
			shan_info:'抵消一张【杀】',
			tao_info:'①出牌阶段,对自己使用,目标角色回复1点体力。②当有角色处于濒死状态时,对该角色使用。目标角色回复1点体力。',
			bagua_info:'当你需要使用或打出一张【闪】时,你可以进行判定。若结果为红色,则你视为使用或打出一张【闪】。',
			bagua_skill_info:'当你需要使用或打出一张【闪】时,你可以进行判定。若结果为红色,则你视为使用或打出一张【闪】。',
			jueying_info:'锁定技,其他角色计算与你的距离+1。',
			dilu_info:'锁定技,其他角色计算与你的距离+1。',
			zhuahuang_info:'锁定技,其他角色计算与你的距离+1。',
			chitu_info:'锁定技,你计算与其他角色的距离-1。',
			dawan_info:'锁定技,你计算与其他角色的距离-1。',
			zixin_info:'锁定技,你计算与其他角色的距离-1。',
			zhuge_skill_info:'锁定技,你于出牌阶段内使用【杀】无次数限制。',
			zhuge_info:'锁定技,你于出牌阶段内使用【杀】无次数限制。',
			cixiong_skill_info:'当你使用【杀】指定一名异性的目标角色后,你可以令其选择一项:1.弃置一张手牌;2.令你摸一张牌。',
			cixiong_info:'当你使用【杀】指定一名异性的目标角色后,你可以令其选择一项:1.弃置一张手牌;2.令你摸一张牌。',
			qinggang_skill_info:'锁定技,当你使用【杀】指定一名目标角色后,你令其防具技能无效直到此【杀】被抵消或造成伤害。',
			qinggang_info:'锁定技,当你使用【杀】指定一名目标角色后,你令其防具技能无效直到此【杀】被抵消或造成伤害。',
			qinglong_skill_info:'当你使用的【杀】被目标角色使用的【闪】抵消时,你可以对其使用一张【杀】(无距离限制)。',
			qinglong_guozhan_info:'锁定技,当你使用【杀】指定目标后,所有目标角色不能明置武将牌直到此【杀】结算完毕为止。',
			qinglong_info:'当你使用的【杀】被目标角色使用的【闪】抵消时,你可以对其使用一张【杀】(无距离限制)。',
			qinglong_info_guozhan:'锁定技,当你使用【杀】指定目标后,所有目标角色不能明置武将牌直到此【杀】结算完毕为止。',
			zhangba_skill_info:'你可以将两张手牌当【杀】使用或打出。',
			zhangba_info:'你可以将两张手牌当【杀】使用或打出。',
			guanshi_skill_info:'当你使用的【杀】被目标角色使用的【闪】抵消时,你可以弃置两张牌,令此【杀】依然对其造成伤害。',
			guanshi_info:'当你使用的【杀】被目标角色使用的【闪】抵消时,你可以弃置两张牌,令此【杀】依然对其造成伤害。',
			fangtian_skill_info:'你使用的【杀】若是你最后的手牌,你可以额外选择至多两个目标。',
			fangtian_info:'你使用的【杀】若是你最后的手牌,你可以额外选择至多两个目标。',
			fangtian_info_guozhan:'你使用【杀】可以指定任意名角色为目标(不能包含势力相同的角色),若任意一名目标角色使用【闪】抵消了此【杀】,则此【杀】对剩余的目标角色无效。',
			qilin_skill_info:'当你使用【杀】对目标角色造成伤害时,你可以弃置其装备区里的一张坐骑牌。',
			qilin_info:'当你使用【杀】对目标角色造成伤害时,你可以弃置其装备区里的一张坐骑牌。',
			wugu_info:'出牌阶段,对所有角色使用。(选择目标后)你从牌堆顶亮出等同于目标数量的牌,每名目标角色获得这些牌中(剩余的)的任意一张。',
			taoyuan_info:'出牌阶段,对所有角色使用。每名目标角色回复1点体力。',
			nanman_info:'出牌阶段,对所有其他角色使用。每名目标角色需打出一张【杀】,否则受到1点伤害。',
			wanjian_info:'出牌阶段,对所有其他角色使用。每名目标角色需打出一张【闪】,否则受到1点伤害。',
			wuzhong_info:'出牌阶段,对你使用。你摸两张牌。',
			juedou_info:'出牌阶段,对一名其他角色使用。由其开始,其与你轮流打出一张【杀】,直到其中一方未打出【杀】为止。未打出【杀】的一方受到另一方对其造成的1点伤害。',
			shunshou_info:'出牌阶段,对距离为1且区域里有牌的一名其他角色使用。你获得其区域里的一张牌。',
			guohe_info:'出牌阶段,对区域里有牌的一名其他角色使用。你弃置其区域里的一张牌。',
			jiedao_info:'出牌阶段,对装备区里有武器牌且有使用【杀】的目标的一名其他角色使用。令其对你指定的一名角色使用一张【杀】,否则将其装备区里的武器牌交给你。',
			jiedao_append:'<span class="text" style="font-family: yuanli">这是一种十分含蓄的计谋。</span>',
			wuxie_info:'一张锦囊牌生效前,对此牌使用。抵消此牌对一名角色产生的效果,或抵消另一张【无懈可击】产生的效果。',
			lebu_info:'出牌阶段,对一名其他角色使用。若判定结果不为红桃,跳过其出牌阶段。',
			shandian_info:'出牌阶段,对自己使用。若判定结果为黑桃2~9,则目标角色受到3点雷电伤害。若判定不为黑桃2~9,将之移动到下家的判定区里。',
			icesha_skill:'冰冻',
			icesha_skill_info:'防止即将造成的伤害,改为依次弃置其两张牌。',
			qinggang2:'破防',
		},
		list:[
			["spade",7,"sha"],
			["spade",8,"sha"],
			["spade",8,"sha"],
			["spade",9,"sha"],
			["spade",9,"sha"],
			["spade",10,"sha"],
			["spade",10,"sha"],
			["club",2,"sha"],
			["club",3,"sha"],
			["club",4,"sha"],
			["club",5,"sha"],
			["club",6,"sha"],
			["club",7,"sha"],
			["club",8,"sha"],
			["club",8,"sha"],
			["club",9,"sha"],
			["club",9,"sha"],
			["club",10,"sha"],
			["club",10,"sha"],
			["club",11,"sha"],
			["club",11,"sha"],
			["heart",10,"sha"],
			["heart",10,"sha"],
			["heart",11,"sha"],
			["diamond",6,"sha"],
			["diamond",7,"sha"],
			["diamond",8,"sha"],
			["diamond",9,"sha"],
			["diamond",10,"sha"],
			["diamond",13,"sha"],
			["heart",2,"shan"],
			["heart",2,"shan"],
			["heart",13,"shan"],
			["diamond",2,"shan"],
			["diamond",2,"shan"],
			["diamond",3,"shan"],
			["diamond",4,"shan"],
			["diamond",5,"shan"],
			["diamond",6,"shan"],
			["diamond",7,"shan"],
			["diamond",8,"shan"],
			["diamond",9,"shan"],
			["diamond",10,"shan"],
			["diamond",11,"shan"],
			["diamond",11,"shan"],
			["heart",3,"tao"],
			["heart",4,"tao"],
			["heart",6,"tao"],
			["heart",7,"tao"],
			["heart",8,"tao"],
			["heart",9,"tao"],
			["heart",12,"tao"],
			["diamond",12,"tao"],

			["spade",2,"bagua"],
			["club",2,"bagua"],
			["spade",5,"jueying"],
			["club",5,"dilu"],
			["heart",13,"zhuahuang"],
			["heart",5,"chitu"],
			["spade",13,"dawan"],
			["diamond",13,"zixin"],
			["club",1,"zhuge"],
			["diamond",1,"zhuge"],
			["spade",2,"cixiong"],
			["spade",6,"qinggang"],
			["spade",5,"qinglong"],
			["spade",12,"zhangba"],
			["diamond",5,"guanshi"],
			["diamond",12,"fangtian"],
			["heart",5,"qilin"],

			["heart",3,"wugu"],
			["heart",4,"wugu"],
			["heart",1,"taoyuan"],
			["spade",7,"nanman"],
			["spade",13,"nanman"],
			["club",7,"nanman"],
			["heart",1,"wanjian"],
			["spade",1,"juedou"],
			["club",1,"juedou"],
			["diamond",1,"juedou"],
			["heart",7,"wuzhong"],
			["heart",8,"wuzhong"],
			["heart",9,"wuzhong"],
			["heart",11,"wuzhong"],
			["spade",3,'shunshou'],
			["spade",4,'shunshou'],
			["spade",11,'shunshou'],
			["diamond",3,'shunshou'],
			["diamond",4,'shunshou'],
			["spade",3,'guohe'],
			["spade",4,'guohe'],
			["spade",12,'guohe'],
			["club",3,'guohe'],
			["club",4,'guohe'],
			["heart",12,'guohe'],
			["club",12,'jiedao'],
			["club",13,'jiedao'],
			["spade",11,'wuxie'],
			["club",12,'wuxie'],
			["club",13,'wuxie'],
			["spade",6,'lebu'],
			["club",6,'lebu'],
			["heart",6,'lebu'],
			["spade",1,'shandian'],
			["spade",2,'hanbing'],
			["club",2,'renwang'],
			["heart",12,'shandian'],
			["diamond",12,'wuxie'],
		],
	};
});