'use strict';
card.sp={
	connect:true,
	card:{
		yinyueqiang:{
			fullskin:true,
			type:'equip',
			subtype:'equip1',
			distance:{attackFrom:-2},
			ai:{
				basic:{
					equipValue:4
				}
			},
			skills:['yinyueqiang']
		},
		muniu:{
			fullskin:true,
			type:'equip',
			subtype:'equip5',
			nomod:true,
			skills:['muniu_skill','muniu_skill2','muniu_skill7'],
			ai:{
				basic:{
					equipValue:function(card){
						if(card.card) return 8+card.card.length;
						return 8;
					}
				}
			}
		},
		du:{
			type:'basic',
			fullskin:true,
			ai:{
				value:-5,
				useful:6,
			},
			enable:true,
			modTarget:true,
			filterTarget:function(card,player,target){
				return target==player;
			},
			delay:false,
			content:function(){},
			selectTarget:-1
		},
		shengdong:{
            fullskin:true,
            enable:function(card,player){
				var hs=player.get('h');
				if(hs.length>1) return true;
				if(hs.length==1&&hs[0]!=card) return true;
				return false;
			},
            type:'trick',
			selectTarget:2,
			multitarget:true,
			targetprompt:['交给其一张牌','得两张牌'],
			filterTarget:function(card,player,target){
				return target!=player;
			},
			content:function(){
				'step 0'
				if(!player.num('h')){
					event.finish();
				}
				else{
					event.target1=targets[0];
					event.target2=targets[1];
					player.chooseCard('h','将一张手牌交给'+get.translation(event.target1),true);
				}
				'step 1'
				player.$give(1,event.target1);
				event.target1.gain(result.cards,player);
				'step 2'
				if(!event.target1.num('h')){
					event.finish();
				}
				else{
					var he=event.target1.get('he');
					if(he.length<=2){
						event.directresult=he;
					}
					else{
						event.target1.chooseCard('he','将两张牌交给'+get.translation(event.target2),2,true);
					}
				}
				'step 3'
				if(!event.directresult){
					event.directresult=result.cards;
				}
				event.target1.$give(event.directresult.length,event.target2);
				event.target2.gain(event.directresult,event.target1);
			},
			ai:{
				order:2.5,
				value:[4,1],
				useful:1,
				wuxie:function(){
					return 0;
				},
				result:{
					target:function(player,target){
						var ok=false;
						var hs=player.get('h');
						for(var i=0;i<hs.length;i++){
							if(ai.get.value(hs[i])<=5){
								ok=true;
								break;
							}
						}
						if(!ok) return 0;
						if(ui.selected.targets.length==1) return 2;
						if(target.num('he')==0) return 0;
						if(player.hasFriend()) return -1;
						return 0;
					}
				}
			}
        },
        zengbin:{
            fullskin:true,
            enable:true,
            type:'trick',
            filterTarget:true,
			content:function(){
				'step 0'
				target.draw(3);
				'step 1'
				if(target.num('he',{type:'basic'})<target.num('he')){
					target.chooseToDiscard('弃置一张非基本牌(或取消并弃置两张牌)','he',function(card){
						return get.type(card)!='basic';
					}).set('ai',function(card){
						if(_status.event.goon) return 7-ai.get.value(card);
						return 8-ai.get.value(card);
					}).set('goon',target.num('h','basic')>2);
					event.more=true;
				}
				else{
					target.chooseToDiscard('he',2,true);
				}
				'step 2'
				if(event.more&&!result.bool){
					target.chooseToDiscard('he',2,true);
				}
			},
			ai:{
				order:7,
				useful:4,
				value:10,
				result:{
					target:function(player,target){
						if(target.num('j','lebu')) return 0;
						return Math.max(1,2-target.num('h')/10);
					}
				}
			}
        },
        caomu:{
            fullskin:true,
            enable:true,
            type:'delay',
			filterTarget:function(card,player,target){
				return (lib.filter.judge(card,player,target)&&player!=target);
			},
			judge:function(card){
				if(get.suit(card)=='club') return 0;
				return -3;
			},
			effect:function(){
				if(result.bool==false){
					player.addTempSkill('caomu_skill','phaseAfter');
				}
			},
			ai:{
				basic:{
					order:1,
					useful:1,
					value:4.5,
				},
				result:{
					player:function(player,target){
						var num=0;
						for(var i=0;i<game.players.length;i++){
							if(get.distance(target,game.players[i])<=1&&game.players[i]!=target){
								var att=ai.get.attitude(player,game.players[i]);
								if(att>3){
									num+=1.1;
								}
								else if(att>0){
									num++;
								}
								else if(att<-3){
									num-=1.1;
								}
								else if(att<0){
									num--;
								}
							}
						}
						return num;
					},
					target:-1
				},
			}
        }
	},
	skill:{
		yinyueqiang:{
			trigger:{player:['useCard','respondAfter']},
			direct:true,
			filter:function(event,player){
				if(_status.currentPhase==player) return false;
				if(!event.cards) return false;
				if(event.cards.length!=1) return false;
				if(lib.filter.autoRespondSha.call({player:player})) return false;
				return get.color(event.cards[0])=='black';
			},
			content:function(){
				'step 0'
				var next=player.chooseToUse(get.prompt('yinyueqiang'),{name:'sha'}).aidelay=true;
				next.logSkill='yinyueqiang';
				next.noButton=true;
				'step 1'
				if(result.bool){
					game.delay();
				}
			}
		},
		muniu_skill:{
			enable:'phaseUse',
			usable:1,
			filterCard:true,
			check:function(card){
				if(card.name=='du') return 20;
				var player=_status.event.player;
				var nh=player.num('h');
				if(nh<=player.hp){
					if(nh<3) return 0;
					if(nh==3) return 5-ai.get.value(card);
					return 7-ai.get.value(card);
				}
				return 10-ai.get.useful(card);
			},
			discard:false,
			lose:true,
			sync:function(muniu){
				if(game.online){
					return;
				}
				if(!muniu.cards){
					muniu.cards=[];
				}
				for(var i=0;i<muniu.cards.length;i++){
					if(!muniu.cards[i].parentNode||muniu.cards[i].parentNode.id!='special'){
						muniu.cards.splice(i--,1);
					}
				}
				game.broadcast(function(muniu,cards){
					muniu.cards=cards;
				},muniu,muniu.cards);
			},
			filter:function(event,player){
				return player.num('h')>0;
			},
			prepare:function(cards,player){
				player.$give(1,player,false);
			},
			content:function(){
				"step 0"
				for(var i=0;i<cards.length;i++){
					ui.special.appendChild(cards[i]);
				}
				var muniu=player.get('e','5');
				if(!muniu){
					for(var i=0;i<cards.length;i++){
						ui.discardPile.appendChild(cards[i]);
					}
					event.finish();
					return;
				}
				if(muniu.cards==undefined) muniu.cards=[];
				muniu.cards.push(cards[0]);
				game.broadcast(function(muniu,cards){
					muniu.cards=cards;
				},muniu,muniu.cards);
				var players=[];
				for(var i=0;i<game.players.length;i++){
					if(!game.players[i].get('e','5')&&game.players[i]!=player&&
						!game.players[i].isTurnedOver()&&
						ai.get.attitude(player,game.players[i])>=3&&ai.get.attitude(game.players[i],player)>=3){
						players.push(game.players[i]);
					}
				}
				players.sort(lib.sort.seat);
				var choice=players[0];
				var next=player.chooseTarget('是否移动木牛流马?',function(card,player,target){
					return !target.isMin()&&player!=target&&!target.get('e','5');
				});
				next.set('ai',function(target){
					return target==_status.event.choice?1:-1;
				});
				next.set('choice',choice);
				"step 1"
				if(result.bool){
					var card=player.get('e','5');
					result.targets[0].equip(card);
					player.addTempSkill('muniu_skill6','equipAfter');
					player.$give(card,result.targets[0]);
					player.line(result.targets,'green');
					game.delay();
				}
			},
			ai:{
				save:true,
				respondSha:true,
				respondShan:true,
				skillTagFilter:function(player,tag){
					var muniu=player.get('e','5');
					if(!muniu||!muniu.cards) return false;
					for(var i=0;i<muniu.cards.length;i++){
						switch(tag){
							case 'respondSha':if(muniu.cards[i].name=='sha') return true;break;
							case 'respondShan':if(muniu.cards[i].name=='shan') return true;break;
							case 'save':{
								if(muniu.cards[i].name=='tao'||muniu.cards[i].name=='spell_zhiliaoshui') return true;
								if(player==_status.event.dying){
									if(muniu.cards[i].name=='jiu'||muniu.cards[i].name=='tianxianjiu') return true;
								}
								break;
							}
						}
					}
					return false;
				},
				order:1,
				expose:0.1,
				result:{
					player:1
				}
			}
		},
		muniu_skill2:{
			group:['muniu_skill3','muniu_skill4']
		},
		muniu_skill3:{
			trigger:{player:'chooseToRespondBegin'},
			filter:function(event,player){
				if(event.responded) return false;
				var muniu=player.get('e','5');
				if(!muniu.cards) return false;
				lib.skill.muniu_skill.sync(muniu);
				for(var i=0;i<muniu.cards.length;i++){
					if(event.filterCard(muniu.cards[i],player,event)) return true;
				}
				return false;
			},
			direct:true,
			content:function(){
				"step 0"
				player.chooseButton(['木牛流马',player.get('e','5').cards]).set('filterButton',function(button){
					var evt=_status.event.getTrigger();
					if(evt&&evt.filterCard){
						return evt.filterCard(button.link,_status.event.player,evt);
					}
					return true;
				}).set('ai',function(button){
					var evt=_status.event.getTrigger();
					if(evt&&evt.ai){
						var tmp=_status.event;
						_status.event=evt;
						var result=evt.ai(button.link,_status.event.player,evt);
						_status.event=tmp;
						return result;
					}
					return 1;
				});
				"step 1"
				if(result.bool){
					trigger.untrigger();
					trigger.responded=true;
					trigger.result={bool:true,card:result.links[0]};
					var muniu=player.get('e','5');
					muniu.cards.remove(result.links[0]);
					lib.skill.muniu_skill.sync(muniu);
				}
			},
			ai:{
				order:4,
				useful:-1,
				value:-1
			}
		},
		muniu_skill4:{
			enable:'chooseToUse',
			filter:function(event,player){
				var muniu=player.get('e','5');
				if(!muniu.cards) return false;
				lib.skill.muniu_skill.sync(muniu);
				for(var i=0;i<muniu.cards.length;i++){
					if(event.filterCard(muniu.cards[i],player)) return true;
				}
				return false;
			},
			chooseButton:{
				dialog:function(event,player){
					return ui.create.dialog('木牛流马',player.get('e','5').cards,'hidden');
				},
				filter:function(button,player){
					var evt=_status.event.getParent();
					if(evt&&evt.filterCard){
						return evt.filterCard(button.link,player,evt);
					}
					return true;
				},
				check:function(button){
					if(button.link.name=='du') return -2;
					var player=_status.event.player;
					if(button.link.name=='xingjiegoutong'&&player.num('h')>1) return -2;
					if(get.select(get.info(button.link).selectTarget)[1]==-1){
						if(get.type(button.link)=='delay') return -1;
						if(get.type(button.link)=='equip'){
							var current=player.get('e',{subtype:get.subtype(button.link)})[0];
							if(current&&ai.get.equipValue(current)>=ai.get.equipValue(button.link)) return -1;
							return 1;
						}
						if(get.tag(button.link,'multitarget')) return -1;
						if(button.link.name=='huoshaolianying') return -1;
					}
					if(button.link.name=='jiu'){
						if(ai.get.effect(player,{name:'jiu'},player)>0){
							return 1;
						}
						return -1;
					}
					return 1;
				},
				backup:function(links,player){
					return {
						filterCard:function(){return false},
						selectCard:-1,
						viewAs:links[0],
						onuse:function(result,player){
							var muniu=player.get('e','5');
							if(muniu&&muniu.cards){
								muniu.cards.remove(result.card);
								lib.skill.muniu_skill.sync(muniu);
							}
						}
					}
				},
				prompt:function(links,player){
					return '选择'+get.translation(links)+'的目标';
				}
			},
			ai:{
				order:4,
				result:{
					player:function(player){
						if(_status.dying) return ai.get.attitude(player,_status.dying);
						return 1;
					}
				},
				useful:-1,
				value:-1
			}
		},
		muniu_skill6:{},
		muniu_skill7:{
			filter:function(){return false},
			hiddenCard:function(player,name){
				var muniu=player.get('e','5');
				if(!muniu.cards) return false;
				lib.skill.muniu_skill.sync(muniu);
				for(var i=0;i<muniu.cards.length;i++){
					if(muniu.cards[i].name==name) return true;
				}
				return false;
			},
		},
		_muliu:{
			trigger:{player:'loseEnd'},
			forced:true,
			popup:false,
			filter:function(event,player){
				for(var i=0;i<event.cards.length;i++){
					if(event.cards[i].name=='muniu'&&event.cards[i].original=='e'&&
						player.hasSkill('muniu_skill6')==false&&
						get.position(event.cards[i])==='d') return true;
				}
				return false;
			},
			content:function(){
				for(var i=0;i<trigger.cards.length;i++){
					if(trigger.cards[i].name=='muniu'&&trigger.cards[i].original=='e'&&
						player.hasSkill('muniu_skill6')==false){
						var card=trigger.cards[i];
						var card2;
						if(card.cards&&card.cards.length){
							player.$throw(card.cards,1000);
							player.popup('muniu');
							game.log('木牛流马掉落了',card.cards);
							while(card.cards.length){
								card2=card.cards.shift();
								if(card2.parentNode.id=='special'){
									ui.discardPile.appendChild(card2);
								}
							}
						}

						break;
					}
				}
			}
		},
		_du:{
			trigger:{player:['useCardAfter','respondAfter','discardAfter']},
			popup:false,
			forced:true,
			filter:function(event,player){
				if(event.cards){
					for(var i=0;i<event.cards.length;i++){
						if(event.cards[i].name=='du'&&event.cards[i].original!='j') return true;
					}
				}
				return false;
			},
			content:function(){
				var num=0;
				for(var i=0;i<trigger.cards.length;i++){
					if(trigger.cards[i].name=='du'&&trigger.cards[i].original!='j') num++;
				}
				player.popup('毒','wood');
				player.loseHp(num);
			},
		},
		caomu_skill:{
			unique:true,
			trigger:{player:'phaseDrawBegin'},
			forced:true,
			popup:false,
			silent:true,
			content:function(){
				trigger.num--;
			},
			group:'caomu_skill2'
		},
		caomu_skill2:{
			trigger:{player:'phaseDrawAfter'},
			forced:true,
			popup:false,
			silent:true,
			content:function(){
				var targets=game.filterPlayer(function(current){
					return get.distance(player,current)<=1&&player!=current;
				});
				if(targets.length){
					game.asyncDraw(targets);
				}
			}
		}
	},
	translate:{
		yinyueqiang:'银月枪',
		yinyueqiang_info:'你的回合外,每当你使用或打出了一张黑色手牌(若为使用则在它结算之前),你可以立即对你攻击范围内的任意一名角色使用一张【杀】',
		muniu:'木牛流马',
		muniu_bg:'牛',
		muniu_skill:'木牛',
		muniu_skill2:'流马',
		muniu_skill3:'流马',
		muniu_skill4:'流马',
		muniu_skill6:'流马',
		muniu_skill4_backup:'流马',
		muniu_info:'出牌阶段限一次,你可以将一张手牌扣置于你装备区里的【木牛流马】下,若如此做,你可以将此装备移动到一名其他角色的装备区里;你可以将此装备牌下的牌如手牌般使用或打出。',
		muniu_skill_info:'出牌阶段限一次,你可以将一张手牌扣置于你装备区里的【木牛流马】下,若如此做,你可以将此装备移动到一名其他角色的装备区里;你可以将此装备牌下的牌如手牌般使用或打出。',
		du:'毒',
		du_info:'当你因使用、打出或弃置而失去此牌时,你失去一点体力',
        shengdong:'声东击西',
		shengdong_info:'出牌阶段,对一名其他角色使用。你交给目标角色一张手牌,若如此做,其将两张牌交给另一名由你选择的其他角色',
        zengbin:'增兵减灶',
        zengbin_info:'出牌阶段,对一名角色使用。目标角色摸三张牌,然后选择一项:1.弃置一张非基本牌;2.弃置两张牌',
        caomu:'草木皆兵',
        caomu_info:'出牌阶段,对一名其他角色使用。将【草木皆兵】放置于该角色的判定区里,若判定结果不为梅花:摸牌阶段,目标角色少摸一张牌;摸牌阶段结束时,与其距离为1的角色各摸一张牌',
	},
	list:[
		['spade',1,'caomu'],
		['club',3,'caomu'],
		['heart',12,'shengdong',],
        ['club',9,'shengdong'],
		['spade',9,'shengdong'],
        ['diamond',4,'zengbin'],
        ['heart',6,'zengbin'],
        ['spade',7,'zengbin'],
		['spade',3,'du'],
		['spade',9,'du'],
		['club',3,'du'],
		['club',9,'du'],
		['diamond',5,'du'],
		['diamond',9,'du'],
		["diamond",5,'muniu'],
		["diamond",12,'yinyueqiang'],
	],
}