noname/card/mtg.js

727 lines
21 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'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'],
],
};
});