character.diy={
	character:{
		// diy_caocao:['male','wei',4,['xicai','diyjianxiong','hujia']],
		// diy_hanlong:['male','wei',4,['siji','ciqiu']],
		diy_feishi:['male','shu',3,['shuaiyan','moshou']],
		diy_liuyan:['male','shu',3,['juedao','geju']],
		// diy_luxun:['male','wu',3,['shaoying','zonghuo']],
		diy_yuji:['male','qun',3,['diyguhuo','diychanyuan']],
		// diy_zhouyu:['male','wu',3,['jieyan','honglian']],
		diy_zhouyu:['male','wu',3,['xiongzi','yaliang']],
		diy_caiwenji:['female','qun',3,['beige','guihan']],
		diy_lukang:['male','wu',4,['luweiyan','qianxun']],
		diy_xuhuang:['male','wei',4,['diyduanliang']],
		// diy_dianwei:['male','wei',4,['diyqiangxi']],
		diy_huangzhong:['male','shu',4,['liegong','fuli']],
		diy_weiyan:['male','shu',4,['diykuanggu']],
		diy_zhenji:['female','wei',3,['jiaoxia','yiesheng']],
		// diy_menghuo:['male','shu',4,['huoshou','zaiqix']],
		re_huangyueying:['female','shu',3,['rejizhi','qicai']],
		old_zhonghui:['male','wei',3,['zzhenggong','zquanji','zbaijiang']],
	},
	perfectPair:{
		yuji:['zuoci']
	},
	skill:{
		zaiqix:{
			trigger:{player:'phaseDrawBefore'},
			filter:function(event,player){
				return player.hp<player.maxHp;
			},
			check:function(event,player){
				if(1+player.maxHp-player.hp<2){
					return false;
				}
				else if(1+player.maxHp-player.hp==2){
					return player.num('h')>=2;
				}
				return true;
			},
			content:function(){
				"step 0"
				trigger.untrigger();
				trigger.finish();
				event.cards=get.cards(player.maxHp-player.hp+1);
				player.showCards(event.cards);
				"step 1"
				var num=0;
				for(var i=0;i<event.cards.length;i++){
					if(get.suit(event.cards[i])=='heart'){
						num++;
						ui.discardPile.appendChild(event.cards[i]);
						event.cards.splice(i--,1);
					}
				}
				if(num){
					player.recover(num);
				}
				"step 2"
				if(event.cards.length){
					player.gain(event.cards);
					player.$gain2(event.cards);
					game.delay();
				}
			},
			ai:{
				threaten:function(player,target){
					if(target.hp==1) return 2;
					if(target.hp==2) return 1.5;
					return 1;
				},
			}
		},
		batu:{
			trigger:{player:'phaseEnd'},
			frequent:true,
			filter:function(event,player){
				var num=0;
				var list=['wei','shu','wu','qun'];
				for(var i=0;i<game.players.length&&list.length;i++){
					if(list.contains(game.players[i].group)){
						list.remove(game.players[i].group);
						num++;
					}
				}
				return player.num('h')<num;
			},
			content:function(){
				var num=0;
				var list=['wei','shu','wu','qun'];
				for(var i=0;i<game.players.length&&list.length;i++){
					if(list.contains(game.players[i].group)){
						list.remove(game.players[i].group);
						num++;
					}
				}
				player.draw(num-player.num('h'));
			},
			ai:{
				threaten:1.3
			}
		},
		diyzaiqi:{
			trigger:{player:'phaseDrawBegin'},
			forced:true,
			filter:function(event,player){
				return player.hp<player.maxHp;
			},
			content:function(){
				trigger.num+=player.maxHp-player.hp;
			},
			ai:{
				threaten:function(player,target){
					if(target.hp==1) return 2.5;
					if(target.hp==2) return 1.8;
					return 0.5;
				},
				maixie:true,
				effect:{
					target:function(card,player,target){
						if(get.tag(card,'damage')){
							if(target.hp==target.maxHp) return [0,1];
						}
						if(get.tag(card,'recover')&&player.hp>=player.maxHp-1) return [0,0];
					}
				}
			}
		},
		diykuanggu:{
			trigger:{source:'damageEnd'},
			forced:true,
			content:function(){
				if(get.distance(trigger.player,player,'attack')>1){
					player.draw(trigger.num);
				}
				else{
					player.recover(trigger.num);
				}
			}
		},
		diyduanliang:{
			group:['diyduanliang1','diyduanliang2'],
			ai:{
				threaten:1.2
			}
		},
		diyduanliang1:{
			enable:'phaseUse',
			usable:1,
			discard:false,
			filter:function(event,player){
				var cards=player.get('he',{color:'black'});
				for(var i=0;i<cards.length;i++){
					var type=get.type(cards[i]);
					if(type=='basic') return true;
				}
				return false;
			},
			prepare:function(cards,player,targets){
				player.$throw(cards);
			},
			position:'he',
			filterCard:function(card){
				if(get.color(card)!='black') return false;
				var type=get.type(card);
				return type=='basic';
			},
			filterTarget:function(card,player,target){
				return lib.filter.filterTarget({name:'bingliang'},player,target);
			},
			check:function(card){
				return 7-ai.get.value(card);
			},
			content:function(){
				player.useCard({name:'bingliang'},target,cards).animate=false;
				player.draw();
			},
			ai:{
				result:{
					target:function(player,target){
						return ai.get.effect(target,{name:'bingliang'},player,target);
					}
				},
				order:9,
			}
		},
		diyduanliang2:{
			mod:{
				targetInRange:function(card,player,target){
					if(card.name=='bingliang'){
						if(get.distance(player,target)<=2) return true;
					}
				}
			}
		},
		guihan:{
			unique:true,
			enable:'chooseToUse',
			mark:true,
			skillAnimation:'epic',
			init:function(player){
				player.storage.guihan=false;
			},
			filter:function(event,player){
				if(event.type!='dying') return false;
				if(player!=_status.dying) return false;
				if(player.storage.guihan) return false;
				return true;
			},
			filterTarget:function(card,player,target){
				return target.sex=='male'&&player!=target;
			},
			content:function(){
				"step 0"
				player.unmarkSkill('guihan');
				player.recover();
				player.storage.guihan=true;
				"step 1"
				player.draw(2);
				"step 2"
				target.recover();
				"step 3"
				target.draw(2);
				// if(lib.config.mode=='identity'){
				// 	player.node.identity.style.backgroundColor=get.translation('weiColor');
				// 	player.group='wei';
				// }
			},
			ai:{
				skillTagFilter:function(player){
					if(player.storage.guihan) return false;
					if(player.hp>0) return false;
				},
				save:true,
				result:{
					player:4,
					target:function(player,target){
						if(target.hp==target.maxHp) return 2;
						return 4;
					}
				},
				threaten:function(player,target){
					if(!target.storage.guihan) return 0.8;
				}
			},
			intro:{
				content:'limited'
			}
		},
		luweiyan:{
			enable:'chooseToUse',
			filterCard:{type:'equip'},
			position:'he',
			viewAs:{name:'shuiyanqijun'},
			prompt:'将一张装备牌当水淹七军使用',
			check:function(card){return 8-ai.get.equipValue(card)},
		},
		yaliang:{
			inherit:'wangxi'
		},
		xiongzi:{
			trigger:{player:'phaseDrawBegin'},
			forced:true,
			content:function(){
				trigger.num+=1+Math.floor(player.num('e')/2);
			}
		},
		honglian:{
			trigger:{player:'damageEnd'},
			check:function(event,player){
				return ai.get.attitude(player,event.player)<0;
			},
			filter:function(event,player){
				return event.source&&event.source!=player&&event.source.num('he',{color:'red'})>0;
			},
			content:function(){
				trigger.source.discard(trigger.source.get('he',{color:'red'}));
			},
			ai:{
				expose:0.1,
				result:{
					threaten:0.8,
					target:function(card,player,target){
						if(get.tag(card,'damage')&&ai.get.attitude(target,player)<0){
							return [1,0,0,-player.num('he',{color:'red'})];
						}
					}
				}
			}
		},
		diyguhuo:{
			trigger:{player:'phaseBegin'},
			forced:true,
			filter:function(event,player){
				return player.num('hej')>0;
			},
			content:function(){
				"step 0"
				player.draw(2);
				"step 1"
				player.chooseToDiscard('hej',2,true);
			},
			ai:{
				effect:{
					target:function(card){
						if(get.type(card)=='delay') return [0,0.5];
					}
				}
			}
		},
		diychanyuan:{
			trigger:{player:'dieBegin'},
			forced:true,
			filter:function(event){
				return event.source!=undefined;
			},
			content:function(){
				trigger.source.loseMaxHp(true);
			},
			ai:{
				threaten:function(player,target){
					if(target.hp==1) return 0.2;
				},
				result:{
					target:function(card,player,target,current){
						if(target.hp<=1&&get.tag(card,'damage')){
							if(player.hasSkill('jueqing')) return [1,-5];
							return [1,0,0,-2];
						}
					}
				}
			}
		},
		zonghuo:{
			trigger:{source:'damageBefore'},
			direct:true,
			priority:10,
			filter:function(event){
				return event.nature!='fire';
			},
			content:function(){
				"step 0"
				player.chooseToDiscard('是否发动【纵火】?').ai=function(card){
					var att=ai.get.attitude(player,trigger.player);
					if(trigger.player.hasSkillTag('nofire')){
						if(att>0) return 8-ai.get.value(card);
						return -1;
					}
					if(att<0){
						return 7-ai.get.value(card);
					}
					return -1;
				}
				"step 1"
				if(result.bool){
					player.logSkill('zonghuo',trigger.player,'fire');
					trigger.nature='fire';
				}
			}
		},
		shaoying:{
			trigger:{source:'damageAfter'},
			direct:true,
			filter:function(event){
				return event.nature=='fire';
			},
			content:function(){
				"step 0"
				player.chooseTarget('是否发动【烧营】?',function(card,player,target){
					return get.distance(trigger.player,target)<=1&&trigger.player!=target;
				}).ai=function(target){
					return ai.get.damageEffect(target,player,player,'fire');
				}
				"step 1"
				if(result.bool){
					var card=get.cards()[0];
					ui.discardPile.appendChild(card);
					player.showCards(card);
					event.bool=get.color(card)=='red';
					event.target=result.targets[0];
					player.logSkill('shaoying',event.target,false);
					trigger.player.line(event.target,'fire');
				}
				else{
					event.finish();
				}
				"step 2"
				if(event.bool){
					event.target.damage('fire');
				}
			}
		},
		tiangong:{
			group:['tiangong2'],
			trigger:{player:'damageBefore'},
			filter:function(event){
				if(event.nature=='thunder') return true;
			},
			forced:true,
			content:function(){
				trigger.untrigger();
				trigger.finish();
			},
			ai:{
				effect:{
					target:function(card,player,target,current){
						if(card.name=='tiesuo') return 0;
						if(get.tag(card,'thunderDamage')) return 0;
					}
				},
				threaten:0.5
			}
		},
		tiangong2:{
			trigger:{source:'damageAfter'},
			filter:function(event){
				if(event.nature=='thunder') return true;
			},
			forced:true,
			popup:false,
			priority:1,
			content:function(){
				player.draw();
			},
		},
		xicai:{
			inherit:'jianxiong'
		},
		diyjianxiong:{
			mode:['identity'],
			trigger:{global:'dieBefore'},
			forced:true,
			filter:function(event,player){
				return event.player!=game.zhu&&_status.currentPhase==player;
			},
			content:function(){
				trigger.player.identity='fan';
				trigger.player.setIdentity('fan');
				trigger.player.identityShown=true;
			}
		},
		shuaiyan:{
			trigger:{global:'recoverAfter'},
			filter:function(event,player){
				return event.player!=player&&_status.currentPhase!=player;
			},
			content:function(){
				"step 0"
				var att=ai.get.attitude(trigger.player,player);
				var bool=0;
				if(att<0){
					if(trigger.player.num('e')==0&&trigger.player.num('h')>2) bool=1;
					else if(trigger.player.num('he')==0) bool=1;
				}
				else if(att==0&&trigger.player.num('he')==0){
					bool=1;
				}
				trigger.player.chooseControl('draw_card','discard_card').ai=function(){
					return bool;
				};
				"step 1"
				if(result.control=='draw_card'){
					player.draw();
					event.finish();
				}
				else if(trigger.player.num('he')){
					player.discardPlayerCard(trigger.player,true,'he');
				}
				else{
					event.finish();
				}
			},
			ai:{
				threaten:1.2
			}
		},
		moshou:{
			mod:{
				targetEnabled:function(card,player,target,now){
					if(card.name=='bingliang'||card.name=='lebu') return false;
				}
			},
		},
		siji:{
			trigger:{player:'phaseDiscardEnd'},
			frequent:true,
			filter:function(event,player){
				if(event.cards){
					for(var i=0;i<event.cards.length;i++){
						if(event.cards[i].name=='sha') return true;
					}
				}
				return false;
			},
			content:function(){
				var num=0;
				for(var i=0;i<trigger.cards.length;i++){
					if(trigger.cards[i].name=='sha') num++;
				}
				player.draw(2*num);
			}
		},
		ciqiu:{
			unique:true,
			trigger:{source:'damageBegin'},
			forced:true,
			filter:function(event,player){
				return event.card&&event.card.name=='sha'&&event.player.hp==event.player.maxHp&&event.notLink();
			},
			content:function(){
				trigger.num++;
				player.addTempSkill('ciqiu3','damageAfter');
			},
			group:['ciqiu2']
		},
		ciqiu2:{
			trigger:{source:'damage'},
			filter:function(event,player){
				return player.hasSkill('ciqiu3')&&event.player.hp<=0;
			},
			forced:true,
			content:function(){
				trigger.player.die(trigger);
				player.removeSkill('ciqiu');
			}
		},
		ciqiu3:{},
		juedao:{
			enable:'phaseUse',
			filter:function(event,player){
				return player.isLinked()==false;
			},
			filterCard:true,
			check:function(card){
				return 6-ai.get.value(card);
			},
			content:function(){
				if(player.isLinked()==false) player.link();
			},
			ai:{
				order:2,
				result:{
					player:function(player){
						if(player.isLinked()) return 0;
						return 1;
					},
				},
				effect:{
					target:function(card,player,target){
						if(card.name=='tiesuo'){
							if(target.isLinked()){
								return [0,-0.5];
							}
							else{
								return [0,0.5];
							}
						}
					}
				}
			},
			mod:{
				globalFrom:function(from,to,distance){
					if(from.isLinked()) return distance+1;
				},
				globalTo:function(from,to,distance){
					if(to.isLinked()) return distance+1;
				},
			}
		},
		geju:{
			trigger:{player:'phaseBegin'},
			frequent:true,
			filter:function(event,player){
				var list=[];
				for(var i=0;i<game.players.length;i++){
					if(player!=game.players[i]) list.add(game.players[i].group);
				}
				list.remove('unknown');
				for(var i=0;i<game.players.length;i++){
					if(game.players[i]!=player){
						if(lib.filter.targetInRange({name:'sha'},game.players[i],player)){
							list.remove(game.players[i].group);
						}
					}
				}
				return list.length>0;
			},
			content:function(){
				var list=[];
				for(var i=0;i<game.players.length;i++){
					if(player!=game.players[i]) list.add(game.players[i].group);
				}
				list.remove('unknown');
				for(var i=0;i<game.players.length;i++){
					if(game.players[i]!=player){
						if(lib.filter.targetInRange({name:'sha'},game.players[i],player)){
							list.remove(game.players[i].group);
						}
					}
				}
				if(list.length>0) player.draw(list.length);
			}
		},
		diyqiangxi:{
			enable:'phaseUse',
			usable:1,
			filterCard:function(card){
				return get.subtype(card)=='equip1';
			},
			selectCard:[0,1],
			filterTarget:function(card,player,target){
				if(player==target) return false;
				return get.distance(player,target,'attack')<=1;
			},
			content:function(){
				"step 0"
				if(cards.length==0){
					player.loseHp();
				}
				"step 1"
				target.damage();
				"step 2"
				if(target.isAlive()&&target.num('he')){
					player.discardPlayerCard(target);
				}
			},
			check:function(card){
				return 10-ai.get.value(card);
			},
			position:'he',
			ai:{
				order:8,
				result:{
					player:function(player,target){
						if(ui.selected.cards.length) return 0;
						if(player.hp>=target.hp) return -0.9;
						if(player.hp<=2) return -10;
						return -2;
					},
					target:function(player,target){
						if(player.hp<=1) return 0;
						return ai.get.damageEffect(target,player);
					}
				}
			},
			threaten:1.3
		},
	},
	translate:{
		// diy_caocao:'曹操',
		diy_menghuo:'孟获',
		diy_huangzhong:'黄汉升',
		diy_xuhuang:'徐公明',
		diy_dianwei:'新典韦',
		diy_weiyan:'魏文长',
		xicai:'惜才',
		diyjianxiong:'奸雄',
		diy_feishi:'费诗',
		shuaiyan:'率言',
		moshou:'墨守',
		diy_hanlong:'韩龙',
		diy_luxun:'陆伯言',
		diy_yuji:'于吉',
		diy_zhouyu:'周公瑾',
		diy_lukang:'陆抗',
		diy_caiwenji:'蔡昭姬',
		diy_zhenji:'甄宓',
		siji:'伺机',
		ciqiu:'刺酋',
		ciqiu2:'刺酋',
		ciqiu3:'刺酋',
		diy_liuyan:'刘焉',
		juedao:'绝道',
		geju:'割据',
		shaoying:'烧营',
		zonghuo:'纵火',
		diychanyuan:'缠怨',
		diyguhuo:'蛊惑',
		jieyan:'劫焰',
		honglian:'红莲',
		xiongzi:'雄姿',
		yaliang:'雅量',
		yaliang_info:'每当你对其他角色造成1点伤害后,或受到其他角色造成的1点伤害后,你可与该角色各摸一张牌。',
		luweiyan:'围堰',
		guihan:'归汉',
		diyduanliang:'断粮',
		diyduanliang1:'断粮',
		diyduanliang2:'断粮',
		diyqiangxi:'强袭',
		diykuanggu:'狂骨',
		diyzaiqi:'再起',
		batu:'霸图',
		zaiqix:'再起',
		zaiqix_info:'摸牌阶段,若你已受伤,你可以放弃摸牌并展示牌堆顶的X+1张牌,X为你已损失的体力值,其中每有一张♥牌,你回复1点体力,然后弃掉这些♥牌,将其余的牌收入手牌。',
		batu_info:'回合结束阶段,你可以将手牌数补至X,X为现存的势力数',
		diyzaiqi_info:'锁定技,你摸牌阶段额外摸X张牌,X为你已损失的体力值',
		diykuanggu_info:'锁定技,每当你造成一点伤害,你在其攻击范围内,你回复一点体力,否则你摸一张牌',
		diyqiangxi_info:'出牌阶段,你可以自减一点体力或弃一张武器牌,然后你对你攻击范围内的一名角色造成一点伤害并弃置其一张牌,每回合限一次。',
		diyduanliang_info:'出牌阶段限一次,你可以将一张黑色的基本牌当兵粮寸断对一名角色使用,然后摸一张牌。你的兵粮寸断可以指定距离2以内的角色作为目标',
		guihan_info:'限定技,当你进入濒死状态时,可以指定一名男性角色与其各回复一点体力并摸两张牌',
		luweiyan_info:'你可以将一张装备牌当水淹七军使用',
		xiongzi_info:'锁定技,你于摸牌阶段额外摸X+1张牌,X为你装备区牌数的一半,向下取整',
		honglian_info:'每当你受到来自其他角色的伤害,可以弃置伤害来源的所有红色牌',
		jieyan_info:'出牌阶段限一次,你可以弃置一张红色手牌令场上所有角色受到一点火焰伤害',
		diyguhuo_info:'锁定技,回合开始阶段,你摸两张牌,然后弃置区域内的两张牌',
		diychanyuan_info:'锁定技,杀死你的角色失去一点体力上限',
		zonghuo_info:'你可弃置一张牌将你即将造成的伤害变为火焰伤害',
		shaoying_info:'每当你造成一次火焰伤害,可指定距离受伤害角色1以内的另一名角色,并展示牌堆顶的一张牌,若此牌为红色,该角色受到一点火焰伤害',
		juedao_info:'出牌阶段,你可以弃置一张手牌,横置你的武将牌;锁定技,若你处于连环状态,你与其他角色的距离、其他角色与你的距离各+1。',
		geju_info:'准备阶段开始时,你可以摸X张牌(X为攻击范围内不含有你的势力数)。',
		siji_info:'弃牌阶段结束后,你可以摸2X张牌(X为你于此阶段内弃置的【杀】的数量)。',
		ciqiu_info:'锁定技,每当你使用【杀】对目标角色造成伤害时,若该角色未受伤,你令此伤害+1;锁定技,每当未受伤的角色因受到你使用【杀】造成的伤害而扣减体力后,若该角色的体力值为0,你令其死亡,然后你失去“刺酋”。 ',
		shuaiyan_info:'每当其他角色于你的回合外回复体力后,你可以令该角色选择一项:1.令你摸一张牌;2.令你弃置其一张牌。 ',
		moshou_info:'锁定技,你不能成为乐不思蜀和兵粮寸断的目标。',
		xicai_info:'你可以立即获得对你造成伤害的牌',
		diyjianxiong_info:'锁定技,在身份局中,在你回合内死亡的角色均视为反贼,国战中,在你回合内死亡的角色若与你势力相同则随机改为另一个势力',
	},
}