'use strict';
game.import('card',function(lib,game,ui,get,ai,_status){
	return {
		name:'mtg',
		card:{
			mtg_lindixiliu:{
				type:'land',
				fullborder:'wood',
				enable:function(card,player){
					return !player.hasSkill('land_used');
				},
				notarget:true,
				content:function(){
					'step 0'
					game.changeLand('mtg_lindixiliu',player);
					var card=get.cardPile2(function(card){
						return get.suit(card)=='heart';
					});
					if(card){
						player.gain(card,'draw');
					}
					'step 1'
					player.chooseToDiscard('he',[1,Infinity],{suit:'heart'},'林地溪流').set('ai',function(card){
						return 8-get.value(card);
					}).set('prompt2','弃置任意张红桃牌,每弃置一张牌,将一张延时锦囊牌置入一名随机敌方角色的判定区');
					'step 2'
					if(result.bool){
						event.num=result.cards.length;
						event.targets=player.getEnemies();
					}
					'step 3'
					if(event.num&&event.targets&&event.targets.length){
						var target=event.targets.randomGet();
						var list=get.inpile('delay');
						for(var i=0;i<list.length;i++){
							if(target.hasJudge(list[i])){
								list.splice(i--,1);
							}
						}
						if(list.length){
							player.line(target);
							var card=game.createCard(list.randomGet());
							target.addJudge(card);
							target.$draw(card);
							game.delay();
							event.num--;
						}
						else{
							event.targets.remove(target);
						}
						event.redo();
					}
				},
				ai:{
					value:6,
					useful:3,
					order:7,
					result:{
						player:1
					}
				}
			},
			mtg_longlushanfeng:{
				type:'land',
				fullborder:'wood',
				enable:function(card,player){
					return !player.hasSkill('land_used');
				},
				notarget:true,
				content:function(){
					'step 0'
					game.changeLand('mtg_longlushanfeng',player);
					player.chooseControl('获得杀','获得闪').set('prompt','选择一项').set('ai',function(){
						var player=_status.event.player;
						if(player.hasShan()) return 0;
						return 1;
					});
					'step 1'
					if(result.control=='获得杀'){
						player.gain(game.createCard('sha'),'gain2');
					}
					else{
						player.gain(game.createCard('shan'),'gain2');
					}
				},
				ai:{
					value:5,
					useful:3,
					order:4,
					result:{
						player:1
					}
				}
			},
			mtg_cangbaohaiwan:{
				type:'land',
				fullborder:'wood',
				enable:function(card,player){
					if(!lib.cardPack.mode_derivation||!lib.cardPack.mode_derivation.length) return false;
					return !player.hasSkill('land_used');
				},
				notarget:true,
				content:function(){
					'step 0'
					game.changeLand('mtg_cangbaohaiwan',player);
					event.map={};
					var pack1=[];
					var pack2=[];
					for(var i=0;i<lib.cardPack.mode_derivation.length;i++){
						var name=lib.cardPack.mode_derivation[i];
						var info=lib.card[name];
						if(info.gainable==false||info.destroy) continue;
						if(info.derivationpack){
							var trans=lib.translate[info.derivationpack+'_card_config']+'(卡牌包)';
							if(!event.map[trans]){
								event.map[trans]=[];
								pack2.push(trans);
							}
							event.map[trans].push(name);
						}
						else if(typeof info.derivation=='string'){
							for(var j in lib.characterPack){
								if(lib.characterPack[j][info.derivation]){
									var trans=lib.translate[j+'_character_config']+'(武将包)';
									if(!event.map[trans]){
										event.map[trans]=[];
										pack1.push(trans);
									}
									event.map[trans].push(name);
									break;
								}
							}
						}
					}
					if(!pack1.length&&!pack2.length){
						event.finish();
						return;
					}
					player.chooseControl(pack1.concat(pack2),'dialogcontrol',function(){
						return _status.event.controls.randomGet('轩辕剑(卡牌包)');
					}).set('prompt','选择一个扩展包获得其中一张衍生牌');
					'step 1'
					if(result.control&&event.map[result.control]){
						player.gain(game.createCard(event.map[result.control].randomGet()),'draw');
					}
				},
				ai:{
					value:7,
					useful:3,
					order:9,
					result:{
						player:1
					}
				}
			},
			mtg_linzhongjianta:{
				type:'land',
				fullborder:'wood',
				enable:function(card,player){
					return !player.hasSkill('land_used');
				},
				notarget:true,
				content:function(){
					'step 0'
					game.changeLand('mtg_linzhongjianta',player);
					player.discoverCard(function(card){
						return get.subtype(card)=='equip1';
					},'nogain','选择一个武器装备之');
					'step 1'
					if(result.choice){
						player.equip(game.createCard(result.choice),true);
					}
				},
				ai:{
					value:5,
					useful:3,
					order:9,
					result:{
						player:function(player){
							if(player.getEquip(1)) return 0;
							return 1;
						}
					}
				}
			},
			mtg_youlin:{
				type:'land',
				fullborder:'wood',
				enable:function(card,player){
					return !player.hasSkill('land_used');
				},
				notarget:true,
				content:function(){
					game.changeLand('mtg_youlin',player);
					var list=get.inpile('trick');
					while(list.length){
						var name=list.randomRemove();
						if(lib.card[name].multitarget) continue;
						var targets=game.filterPlayer();
						while(targets.length){
							var target=targets.randomRemove();
							if(player.canUse(name,target,false)&&get.effect(target,{name:name},player,player)>0){
								player.useCard({name:name},target);
								return;
							}
						}
					}
				},
				ai:{
					value:5,
					useful:3,
					order:4,
					result:{
						player:1
					}
				}
			},
			mtg_haidao:{
				type:'land',
				fullborder:'wood',
				enable:function(card,player){
					return !player.hasSkill('land_used');
				},
				notarget:true,
				content:function(){
					'step 0'
					game.changeLand('mtg_haidao',player);
					if(player.isHealthy()){
						player.changeHujia();
						event.finish();
					}
					else{
						player._temp_mtg_haidao=true;
						player.chooseToDiscard('he','海岛').set('ai',function(card){
							return 5-get.value(card);
						}).set('prompt2','弃置一张牌并回复1点体力,或取消并获得1点护甲');
					}
					'step 1'
					if(result.bool){
						player.recover();
					}
					else{
						player.changeHujia();
					}
					'step 2'
					delete player._temp_mtg_haidao;
				},
				ai:{
					value:5,
					useful:3,
					order:4,
					result:{
						player:1
					}
				}
			},
			mtg_yixialan:{
				type:'land',
				fullborder:'wood',
				enable:function(card,player){
					return !player.hasSkill('land_used');
				},
				notarget:true,
				content:function(){
					'step 0'
					game.changeLand('mtg_yixialan',player);
					player.chooseControl('基本牌','锦囊牌').set('prompt','选择一个类型获得该类型的一张牌').set('ai',function(){
						var player=_status.event.player;
						if(!player.hasSha()||!player.hasShan()||player.hp==1) return 0;
						return 1;
					});
					'step 1'
					if(result.control=='基本牌'){
						player.gain(game.createCard(get.inpile('basic').randomGet()),'gain2');
					}
					else{
						player.gain(game.createCard(get.inpile('trick','trick').randomGet()),'gain2');
					}
				},
				ai:{
					value:5,
					useful:3,
					order:4,
					result:{
						player:1
					}
				}
			},
			mtg_shuimomuxue:{
				type:'land',
				fullborder:'wood',
				enable:function(card,player){
					return !player.hasSkill('land_used');
				},
				notarget:true,
				content:function(){
					'step 0'
					game.changeLand('mtg_shuimomuxue',player);
					if(player.countDiscardableCards('he')){
						player.chooseToDiscard('是否弃置一张牌并摸两张牌?','he').set('ai',function(card){
							return 8-get.value(card);
						});
					}
					else{
						event.finish();
					}
					'step 1'
					if(result.bool){
						player.draw(2);
					}
				},
				ai:{
					value:5,
					useful:3,
					order:4,
					result:{
						player:function(player){
							if(!player.countCards('h',function(card){
								return card.name!='mtg_shuimomuxue'&&get.value(card)<8;
							})){
								return 0;
							}
							return 1;
						}
					}
				}
			},
			mtg_feixu:{
				type:'land',
				fullborder:'wood',
				enable:function(card,player){
					return !player.hasSkill('land_used');
				},
				notarget:true,
				content:function(){
					game.changeLand('mtg_feixu',player);
					player.discoverCard(ui.discardPile.childNodes);
				},
				ai:{
					value:5,
					useful:3,
					order:4,
					result:{
						player:1
					}
				}
			},
			mtg_shamolvzhou:{
				type:'land',
				fullborder:'wood',
				enable:function(card,player){
					return !player.hasSkill('land_used');
				},
				notarget:true,
				content:function(){
					game.changeLand('mtg_shamolvzhou',player);
					player.discoverCard(get.inpile('basic'));
				},
				ai:{
					value:5,
					useful:3,
					order:4,
					result:{
						player:1
					}
				}
			},
			mtg_duzhao:{
				type:'land',
				fullborder:'wood',
				enable:function(card,player){
					return !player.hasSkill('land_used');
				},
				notarget:true,
				content:function(){
					'step 0'
					game.changeLand('mtg_duzhao',player);
					player.chooseTarget('选择一名角色令其获得一张毒',true).set('ai',function(target){
						if(target.hasSkillTag('nodu')) return 0;
						return -get.attitude(_status.event.player,target)/Math.sqrt(target.hp+1);
					});
					'step 1'
					if(result.bool){
						var target=result.targets[0];
						player.line(target,'green');
						target.gain(game.createCard('du'),'gain2');
					}
				},
				ai:{
					value:5,
					useful:3,
					order:4,
					result:{
						player:function(player){
							if(game.countPlayer(function(current){
								if(current.hasSkillTag('nodu')) return false;
								return get.attitude(player,current)<0;
							})>game.countPlayer(function(current){
								if(current.hasSkillTag('nodu')) return false;
								return get.attitude(player,current)>0;
							})){
								return 1;
							}
							return 0;
						}
					}
				}
			},
			mtg_bingheyaosai:{
				type:'land',
				fullborder:'wood',
				enable:function(card,player){
					return !player.hasSkill('land_used');
				},
				notarget:true,
				content:function(){
					'step 0'
					game.changeLand('mtg_bingheyaosai',player);
					player.draw(2);
					'step 1'
					player.chooseToDiscard('he',2,true);
				},
				ai:{
					value:5,
					useful:3,
					order:2,
					result:{
						player:1
					}
				}
			}
		},
		skill:{
			mtg_bingheyaosai_skill:{
				trigger:{player:'useCard'},
				forced:true,
				filter:function(event,player){
					if(player.countCards('he')==0) return false;
					return event.card.name=='sha';
				},
				autodelay:true,
				content:function(){
					player.chooseToDiscard(true,'he');
				},
				ai:{
					mapValue:-4
				}
			},
			mtg_duzhao_skill:{
				trigger:{player:'phaseEnd'},
				forced:true,
				content:function(){
					player.gain(game.createCard('du'),'gain2');
				},
				ai:{
					mapValue:-5
				}
			},
			mtg_shamolvzhou_skill:{
				mod:{
					ignoredHandcard:function(card){
						if(get.type(card)=='basic'){
							return true;
						}
					}
				},
				ai:{
					mapValue:3
				}
			},
			mtg_haidao_skill:{
				trigger:{player:'changeHujiaBefore'},
				forced:true,
				filter:function(event,player){
					return player.isDamaged()&&!player._temp_mtg_haidao&&event.num>0;
				},
				content:function(){
					player.recover(trigger.num);
					trigger.cancel();
				},
				ai:{
					mapValue:1
				}
			},
			mtg_yixialan_skill:{
				enable:'phaseUse',
				filter:(event,player)=>player.hasCard(card=>lib.skill.mtg_yixialan_skill.filterCard(card,player),'h'),
				filterCard:(card,player)=>get.type(card)=='basic'&&player.canRecast(card),
				discard:false,
				lose:false,
				check:function(card){
					return 7-get.value(card);
				},
				usable:1,
				content:function(){
					player.recast(cards,null,(player,cards)=>{
						var cardsToGain=[];
						for(var repetition=0;repetition<cards.length;repetition++){
							var card=get.cardPile(card=>get.type(card,'trick')=='trick');
							if(card) cardsToGain.push(card);
						}
						if(cardsToGain.length) player.gain(cardsToGain,'draw');
						if(cards.length-cardsToGain.length) player.draw(cards.length-cardsToGain.length).log=false;
					});
				},
				ai:{
					mapValue:2,
					order:1,
					result:{
						player:1
					}
				}
			},
			mtg_shuimomuxue_skill:{
				mod:{
					maxHandcard:function(player,num){
						return num-1;
					}
				},
				trigger:{player:'phaseDiscardEnd'},
				forced:true,
				filter:function(event){
					return event.cards&&event.cards.length>0;
				},
				content:function(){
					player.draw();
				},
				ai:{
					mapValue:2
				}
			},
			mtg_feixu_skill:{
				trigger:{player:'phaseBegin'},
				silent:true,
				content:function(){
					var num=ui.discardPile.childNodes.length;
					if(num){
						var card=ui.discardPile.childNodes[get.rand(num)];
						if(card){
							ui.cardPile.insertBefore(card,ui.cardPile.firstChild);
						}
					}
				},
				ai:{
					mapValue:0
				}
			},
			mtg_youlin_skill:{
				enable:'phaseUse',
				usable:1,
				filter:function(event,player){
					return player.countCards('h',{type:['trick','delay']});
				},
				filterCard:function(card){
					return get.type(card,'trick')=='trick';
				},
				check:function(card){
					return 7-get.value(card);
				},
				content:function(){
					player.discoverCard();
				},
				ai:{
					mapValue:1,
					order:7,
					result:{
						player:2
					}
				}
			},
			mtg_linzhongjianta_skill:{
				enable:'chooseToUse',
				filterCard:function(card){
					return get.type(card)=='basic';
				},
				usable:1,
				viewAs:{name:'sha'},
				viewAsFilter:function(player){
					if(!player.getEquip(1)) return false;
					if(!player.countCards('h',{type:'basic'})) return false;
				},
				prompt:'将一张基本牌当杀使用',
				check:function(card){return 6-get.value(card)},
				ai:{
					mapValue:2,
					respondSha:true,
					order:function(){
						return get.order({name:'sha'})-0.1;
					},
					skillTagFilter:function(player,tag,arg){
						if(arg!='use') return false;
						if(!player.getEquip(1)) return false;
						if(!player.countCards('h',{type:'basic'})) return false;
					},
				}
			},
			mtg_cangbaohaiwan_skill:{
				trigger:{player:'drawBegin'},
				silent:true,
				content:function(){
					if(Math.random()<1/3){
						var list=[];
						for(var i=0;i<lib.cardPack.mode_derivation.length;i++){
							var name=lib.cardPack.mode_derivation[i];
							var info=lib.card[name];
							if(info.gainable==false||info.destroy) continue;
							list.push(name);
						}
						if(list.length){
							ui.cardPile.insertBefore(game.createCard(list.randomGet()),ui.cardPile.firstChild);
						}
					}
				},
				ai:{
					mapValue:5
				}
			},
			mtg_longlushanfeng_skill:{
				mod:{
					cardUsable:function(card,player,num){
						if(card.name=='sha') return num+1;
					}
				},
				ai:{
					mapValue:2
				}
			},
			mtg_lindixiliu_skill:{
				trigger:{player:'phaseBegin'},
				direct:true,
				filter:function(event,player){
					return player.countCards('he',{suit:'heart'})&&player.countCards('j');
				},
				content:function(){
					'step 0'
					player.chooseToDiscard('he',{suit:'heart'},get.prompt2('mtg_lindixiliu_skill')).set('ai',function(card){
						return 8-get.value(card);
					}).set('logSkill','mtg_lindixiliu_skill');
					'step 1'
					if(result.bool){
						player.discardPlayerCard(player,'j',true);
					}
				},
				ai:{
					mapValue:1.5
				}
			}
		},
		cardType:{
			land:0.6
		},
		translate:{
			land:'地图',
			mtg_yixialan:'依夏兰',
			mtg_yixialan_skill:'依夏兰',
			mtg_yixialan_info:'选项一:随机获得一张基本牌;选项二:随机获得一张锦囊牌。地图效果:出牌阶段限一次,你可以将一张基本牌重铸为锦囊牌。',
			mtg_yixialan_skill_info:'出牌阶段限一次,你可以将一张基本牌重铸为锦囊牌。',
			mtg_shuimomuxue:'水没墓穴',
			mtg_shuimomuxue_skill:'水没墓穴',
			mtg_shuimomuxue_info:'你可以弃置一张牌并摸两张牌。地图效果:锁定技,你的手牌上限-1;若弃牌阶段弃置了至少一张牌,则在此阶段结束时摸一张牌。',
			mtg_shuimomuxue_skill_info:'锁定技,你的手牌上限-1;若弃牌阶段弃置了至少一张牌,则在此阶段结束时摸一张牌。',
			mtg_feixu:'废墟',
			mtg_feixu_skill:'废墟',
			mtg_feixu_info:'从弃牌堆中发现一张牌。地图效果:准备阶段,随机将弃牌堆的一张牌置于牌堆顶。',
			mtg_feixu_skill_info:'准备阶段,随机将弃牌堆的一张牌置于牌堆顶。',
			mtg_haidao:'海岛',
			mtg_haidao_skill:'海岛',
			mtg_haidao_info:'选项一:获得1点护甲(无视地图效果);选项二:弃置一张牌并回复1点体力。地图效果:锁定技,当你获得护甲时,若你已受伤,改为回复等量体力。',
			mtg_haidao_skill_info:'锁定技,当你获得护甲时,若你已受伤,改为回复等量体力。',
			mtg_youlin:'幽林',
			mtg_youlin_skill:'幽林',
			mtg_youlin_info:'随机使用一张普通锦囊牌,随机指定一个具有正收益的目标。地图效果:出牌阶段限一次,你可以弃置一张锦囊牌并发现一张牌。',
			mtg_youlin_skill_info:'出牌阶段限一次,你可以弃置一张锦囊牌并发现一张牌。',
			mtg_shamolvzhou:'沙漠绿洲',
			mtg_shamolvzhou_skill:'沙漠绿洲',
			mtg_shamolvzhou_info:'发现一张基本牌。地图效果:你的基本牌不计入手牌上限。',
			mtg_shamolvzhou_skill_info:'你的基本牌不计入手牌上限。',
			
			mtg_duzhao:'毒沼',
			mtg_duzhao_skill:'毒沼',
			mtg_duzhao_info:'选择一名角色令其获得一张毒。地图效果:结束阶段,你获得一张毒。',
			mtg_duzhao_skill_info:'结束阶段,你获得一张毒。',
			mtg_linzhongjianta:'林中尖塔',
			mtg_linzhongjianta_skill:'林中尖塔',
			mtg_linzhongjianta_info:'发现一张武器牌并装备之。地图效果:若你装备区内有武器牌,你可以将一张基本牌当作杀使用。',
			mtg_linzhongjianta_skill_info:'若你装备区内有武器牌,你可以将一张基本牌当作杀使用。',
			mtg_cangbaohaiwan:'藏宝海湾',
			mtg_cangbaohaiwan_skill:'藏宝海湾',
			mtg_cangbaohaiwan_info:'选择一个护展包,随机获得来自该扩展包的一张衍生牌。地图效果:你在摸牌时有可能摸到衍生牌。',
			mtg_cangbaohaiwan_skill_info:'你在摸牌时有可能摸到衍生牌。',
			mtg_longlushanfeng:'龙颅山峰',
			mtg_longlushanfeng_skill:'龙颅山峰',
			mtg_longlushanfeng_info:'选项一:获得一张杀;选项二:获得一张闪。地图效果:你出杀的次数上限+1。',
			mtg_longlushanfeng_skill_info:'你出杀的次数上限+1。',
			mtg_bingheyaosai:'冰河要塞',
			mtg_bingheyaosai_skill:'冰河要塞',
			mtg_bingheyaosai_info:'摸两张牌,然后弃置两张牌。地图效果:锁定技,每当你使用一张杀,若你有牌,则需弃置一张牌。',
			mtg_bingheyaosai_skill_info:'锁定技,每当你使用一张杀,若你有牌,则需弃置一张牌。',
			mtg_lindixiliu:'林地溪流',
			mtg_lindixiliu_skill:'林地溪流',
			mtg_lindixiliu_info:'从牌堆中摸一张红桃牌,然后弃置任意张红桃牌,每弃置一张牌,将一张延时锦囊牌置入一名随机敌方角色的判定区。地图效果:准备阶段,你可以弃置一张红桃牌,然后弃置判定区内的一张牌。',
			mtg_lindixiliu_skill_info:'准备阶段,你可以弃置一张红桃牌,然后弃置判定区内的一张牌。',
		},
		help:{
			'万智牌':'<ul><li>地图牌可于出牌阶段使用,每阶段最多使用一张地图牌<li>'+
			'地图牌分为两部分:即时效果以及地图效果,即时效果由使用者在使用时选择;地图效果对所有角色有效<li>'+
			'当使用者死亡或下个回合开始时,当前地图效果消失<li>'+
			'新地图被使用时会覆盖当前地图效果'
		},
		list:[
			['club',12,'mtg_yixialan'],
			['spade',11,'mtg_shuimomuxue'],
			['diamond',5,'mtg_haidao'],
			['club',10,'mtg_youlin'],
			['club',8,'mtg_feixu'],
			['heart',6,'mtg_shamolvzhou'],

			['club',12,'mtg_cangbaohaiwan'],
			['spade',11,'mtg_lindixiliu'],
			['diamond',5,'mtg_bingheyaosai'],
			['club',10,'mtg_longlushanfeng'],
			['club',8,'mtg_duzhao'],
			['heart',6,'mtg_linzhongjianta'],
		],
	};
});