This commit is contained in:
libccy 2017-11-08 10:40:40 +08:00
parent 3d581cf103
commit b211aee799
16 changed files with 258 additions and 18 deletions

View File

@ -1320,6 +1320,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
mutoumianju_skill:{ mutoumianju_skill:{
enable:'chooseToUse', enable:'chooseToUse',
filterCard:true, filterCard:true,
usable:1,
viewAs:{name:'sha'}, viewAs:{name:'sha'},
viewAsFilter:function(player){ viewAsFilter:function(player){
if(!player.countCards('h')) return false; if(!player.countCards('h')) return false;
@ -1577,7 +1578,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
mutoumianju:'木头面具', mutoumianju:'木头面具',
mutoumianju_info:'你可以将一张手牌当作杀使用', mutoumianju_info:'你可以将一张手牌当作杀使用',
mutoumianju_skill:'木杀', mutoumianju_skill:'木杀',
mutoumianju_skill_info:'你可以将一张手牌当作杀使用', mutoumianju_skill_info:'出牌阶段限一次,你可以将一张手牌当作杀使用',
heilonglinpian:'黑龙鳞片', heilonglinpian:'黑龙鳞片',
heilonglinpian_info:'出牌阶段对自己使用,获得一点护甲,直到下一回合开始,你的防御距离+1', heilonglinpian_info:'出牌阶段对自己使用,获得一点护甲,直到下一回合开始,你的防御距离+1',

View File

@ -1561,6 +1561,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
popup:false, popup:false,
forced:true, forced:true,
filter:function(event,player){ filter:function(event,player){
if(event.card.storage&&event.card.storage.nowuxie) return false;
if(event.name!='phaseJudge'){ if(event.name!='phaseJudge'){
var info=get.info(event.card); var info=get.info(event.card);
if(!event.target){ if(!event.target){

205
character/mtg.js Normal file
View File

@ -0,0 +1,205 @@
'use strict';
game.import('character',function(lib,game,ui,get,ai,_status){
return {
name:'mtg',
character:{
mtg_jiding:['male','qun',4,['mbaizhan','msilian']],
// mtg_qianzhuo:['female','shu',3,[]],
mtg_jiesi:['male','wei',3,['mtongnian','msuoling','mhuanyi']],
// mtg_lilianna:['female','qun',3,[]],
// mtg_nisha:['female','wu',3,[]],
// mtg_ayeni:['male','qun',4,[]],
},
characterIntro:{
mtg_jiding:'这名白色魔法的使用者极其注重忠诚,正义和荣誉。他曾全力追捕茜卓纳拉,如今已不可思议地与这位火焰法师成为伙伴。',
mtg_qianzhuo:'茜卓纳拉是使用红色法术力的旅法师。她擅长使用火焰:除了火焰,还是火焰。茜卓性格冲动、易怒、富有激情,不断增长的火焰法术能力随时都准备爆发。她的火花在还很年轻时便已点燃,如今已是相当有经验的烈焰术士和旅法师。',
mtg_jiesi:'杰斯贝连是使用蓝色法术的鹏洛客。他擅长心灵法术:读取心灵,幻影,知识,以及欺瞒的咒语。',
mtg_lilianna:'莉莲娜维斯是一位精通死灵术的旅法师,她擅长用黑色法术力来复活死者,腐化生者,并从死亡中召唤力量。',
mtg_nisha:'赞迪卡妖精部落玖瑞加的一名战士,做事倾尽全力,与大地有密切的联系,还擅使元素魔法。她能够引导时空的魔法生机地脉,为土地赋予生命。',
mtg_ayeni:'金鬃阿耶尼是使用白色法术的鹏洛客。他长于净化身体与心灵的法术:用咒语来治疗、强化盟友,以及唤醒他人内在的心灵精华。',
},
skill:{
msuoling:{
enable:'chooseToUse',
// round:1,
filterCard:function(card){
return get.type(card,'trick')=='trick';
},
viewAsFilter:function(player){
return player.countCards('h',{type:['trick','delay']})>0;
},
viewAs:{name:'wuxie',{storage:{nowuxie:true}}},
prompt:'将一张锦囊牌当无懈可击使用',
check:function(card){return 8-get.value(card)},
threaten:1.2
},
mtongnian:{
trigger:{player:'phaseUseBegin'},
forced:true,
filter:function(event,player){
var enemies=player.getEnemies();
for(var i=0;i<enemies.length;i++){
if(enemies[i].countCards('h')) return true;
}
return false;
},
getList:function(player){
var list=[];
var enemies=player.getEnemies();
for(var i=0;i<enemies.length;i++){
list.addArray(enemies[i].getCards('h'));
}
return list;
},
content:function(){
var list=lib.skill.mtongnian.getList(player);
var card=list.randomGet();
var fake=game.createCard(card);
fake.mtongnian_link=card;
player.gain(fake,'draw')._triggered=null;
fake.classList.add('glow');
fake._destroy='mtongnian';
},
group:['mtongnian_change','mtongnian_use','mtongnian_lose'],
subSkill:{
change:{
trigger:{player:'useCard'},
silent:true,
filter:function(event,player){
return player.hasCard(function(card){
return card.mtongnian_link?true:false;
},'h');
},
content:function(){
var list=lib.skill.mtongnian.getList(player);
var hs=player.getCards('h',function(card){
return card.mtongnian_link?true:false;
});
for(var i=0;i<hs.length;i++){
var current=hs[i].mtongnian_link;
hs[i].mtongnian_link=list.randomGet(current);
if(!hs[i].mtongnian_link){
hs[i].mtongnian_link=current;
}
hs[i].init(hs[i].mtongnian_link);
}
}
},
use:{
trigger:{player:'useCardBefore'},
silent:true,
filter:function(event,player){
return event.card.mtongnian_link?true:false;
},
content:function(){
var link=trigger.card.mtongnian_link;
var target=get.owner(link);
if(target&&target!=player){
trigger.cards.add(trigger.card);
player.lose(trigger.cards,ui.discardPile);
trigger.card=link;
trigger.cards.length=0;
trigger.cards.push(link);
target.lose(link,ui.discardPile);
player.logSkill('mtongnian',target);
game.log(target,'失去了',link);
game.delayx();
}
else{
player.lose(trigger.card);
trigger.cancel();
}
}
},
lose:{
trigger:{player:'phaseUseEnd',global:'loseEnd'},
silent:true,
filter:function(event,player){
if(event.name=='lose'){
return lib.skill.mtongnian.getList(player).length==0;
}
return true;
},
content:function(){
var hs=player.getCards('h',function(card){
return card.mtongnian_link?true:false;
});
if(hs.length){
player.lose(hs)._triggered=null;
}
}
}
},
ai:{
threaten:1.3
}
},
mbaizhan:{
trigger:{source:'damageEnd'},
forced:true,
filter:function(event){
return event.num>0;
},
content:function(){
player.changeHujia(trigger.num);
}
},
msilian:{
trigger:{player:'phaseEnd'},
filter:function(event,player){
return player.hujia>0;
},
check:function(event,player){
return player.hujia>1&&player.hp>1;
},
content:function(){
player.storage.msilian=player.hujia;
player.changeHujia(-player.hujia);
player.insertPhase();
},
group:['msilian_hp','msilian_draw'],
subSkill:{
hp:{
trigger:{player:'phaseAfter'},
silent:true,
filter:function(event,player){
return event.skill=='msilian'&&!player.getStat('damage');
},
content:function(){
player.loseHp();
}
},
draw:{
trigger:{player:'phaseDrawBegin'},
filter:function(event){
return event.getParent('phase').skill=='msilian';
},
silent:true,
content:function(){
trigger.num+=player.storage.msilian-2;
}
}
}
}
},
translate:{
mtg_jiding:'基定',
mtg_qianzhuo:'茜卓',
mtg_jiesi:'杰斯',
mtg_lilianna:'莉莲娜',
mtg_nisha:'妮莎',
mtg_ayeni:'阿耶尼',
mbaizhan:'百战',
mbaizhan_info:'锁定技,每当你造成一点伤害,你获得一点护甲',
msilian:'祀炼',
msilian_info:'结束阶段,若你有护甲,你可以移去全部护甲,然后进行一个额外回合;在额外回合中,你的摸牌阶段摸牌基数为你移去的护甲数;额外回合结束后,若你未造成伤害,你失去一点体力',
mtongnian:'通念',
mtongnian_info:'锁定技,出牌阶段开始时,你获得一张替身牌,此牌对应一名随机敌人的一张随机手牌;每当你使用一张非替身牌,随机更换替身牌对应的牌;当你使用替身牌时,改为使用替身牌对应的牌;当出牌阶段结束,或替身牌离开手牌区,或敌方角色没有手牌时,销毁替身牌',
msuoling:'塑灵',
msuoling_info:'你可以将一张锦囊牌当作无懈可击使用,此无懈可击不能被其它无懈可击响应',
mhuanyi:'幻逸',
mhuanyi_info:'结束阶段你可以将【效果1】分配给任意名角色然后将【效果2】分配给其余角色分配结果对其他角色不可见。效果1当目标对你首次使用卡牌时若此牌为基本牌则取消之效果2当目标对你首次使用卡牌时若此牌为非基本牌则取消之',
},
};
});

View File

@ -427,7 +427,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
xiaoyue:{ xiaoyue:{
trigger:{player:'phaseBegin'}, trigger:{global:'roundStart'},
forced:true, forced:true,
filter:function(event,player){ filter:function(event,player){
return player.countCards('h','sha'); return player.countCards('h','sha');
@ -4149,7 +4149,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lingdi:'灵笛', lingdi:'灵笛',
lingdi_info:'出牌阶段你可以弃置一张本回合与此法弃置的牌花色均不同的手牌然后选择一名与你距离为X的角色与其各摸一张牌X为本回合发动灵笛的次数含此次', lingdi_info:'出牌阶段你可以弃置一张本回合与此法弃置的牌花色均不同的手牌然后选择一名与你距离为X的角色与其各摸一张牌X为本回合发动灵笛的次数含此次',
xiaoyue:'啸月', xiaoyue:'啸月',
xiaoyue_info:'锁定技,准备阶段,若你手牌中有杀,你将手牌中的一张随机杀对一名随机敌方角色使用,然后获得一点护甲', xiaoyue_info:'锁定技,每轮开始时,若你手牌中有杀,你将手牌中的一张随机杀对一名随机敌方角色使用,然后获得一点护甲',
minsha:'冥煞', minsha:'冥煞',
minsha_info:'出牌阶段限一次你可以弃置两张牌对一名体力值大于1的其他角色造成一点雷属性伤害然后距离目标1以内的所有其他角色随机弃置一张牌', minsha_info:'出牌阶段限一次你可以弃置两张牌对一名体力值大于1的其他角色造成一点雷属性伤害然后距离目标1以内的所有其他角色随机弃置一张牌',
xhuanlei:'唤雷', xhuanlei:'唤雷',

View File

@ -5534,7 +5534,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
mieji:{ mieji:{
trigger:{player:'useCardBegin'}, trigger:{player:'useCard'},
direct:true, direct:true,
audio:2, audio:2,
filter:function(event,player){ filter:function(event,player){
@ -5546,7 +5546,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.chooseTarget(get.prompt('mieji'),function(card,player,target){ player.chooseTarget(get.prompt('mieji'),function(card,player,target){
var trigger=_status.event.getTrigger(); var trigger=_status.event.getTrigger();
return lib.filter.filterTarget(trigger.card,player,target)&&target!=trigger.targets[0]; return lib.filter.filterTarget(trigger.card,player,target)&&target!=trigger.targets[0];
}).set('ai',function(target){ }).set('autodelay',true).set('ai',function(target){
var trigger=_status.event.getTrigger(); var trigger=_status.event.getTrigger();
var player=_status.event.player; var player=_status.event.player;
return get.effect(target,trigger.card,player,player); return get.effect(target,trigger.card,player,player);

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[ window.noname_asset_list=[
'1.9.40', '1.9.41',
'image/background/huangtian_bg.jpg', 'image/background/huangtian_bg.jpg',
'image/background/ol_bg.jpg', 'image/background/ol_bg.jpg',
'image/background/september_bg.jpg', 'image/background/september_bg.jpg',
@ -605,6 +605,12 @@ window.noname_asset_list=[
'image/character/mifuren.jpg', 'image/character/mifuren.jpg',
'image/character/miheng.jpg', 'image/character/miheng.jpg',
'image/character/mizhu.jpg', 'image/character/mizhu.jpg',
'image/character/mtg_ayeni.jpg',
'image/character/mtg_lilianna.jpg',
'image/character/mtg_jiding.jpg',
'image/character/mtg_jiesi.jpg',
'image/character/mtg_nisha.jpg',
'image/character/mtg_qianzhuo.jpg',
'image/character/nianshou.jpg', 'image/character/nianshou.jpg',
'image/character/niutou.jpg', 'image/character/niutou.jpg',
'image/character/old_caoxiu.jpg', 'image/character/old_caoxiu.jpg',

View File

@ -8839,8 +8839,16 @@
for(var i=0;i<cards.length;i++){ for(var i=0;i<cards.length;i++){
cards[i].discard(); cards[i].discard();
} }
player.removeEquipTrigger();
player.update(); player.update();
}, },
to:function(){
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=game.me){
cheat.t(i);
}
}
},
k:function(i){ k:function(i){
if(i==undefined) i=1; if(i==undefined) i=1;
game.players[i].hp=1; game.players[i].hp=1;
@ -9665,7 +9673,17 @@
event.num--; event.num--;
} }
if(event.num>0){ if(event.num>0){
player.draw(event.num); var num=event.num;
if(event.attachDraw){
for(var i=0;i<event.attachDraw.length;i++){
ui.cardPile.insertBefore(event.attachDraw[i],ui.cardPile.firstChild);
}
num+=event.attachDraw.length;
}
var next=player.draw(num);
if(event.attachDraw){
next.minnum=event.attachDraw.length;
}
} }
} }
"step 1" "step 1"
@ -11999,6 +12017,9 @@
// game.playAudio('effect','draw'); // game.playAudio('effect','draw');
// } // }
// }); // });
if(typeof event.minnum=='number'&&num<event.minnum){
num=event.minnum;
}
if(event.drawDeck){ if(event.drawDeck){
if(event.drawDeck>num){ if(event.drawDeck>num){
event.drawDeck=num; event.drawDeck=num;
@ -12385,9 +12406,9 @@
cards[i].classList.remove('glow'); cards[i].classList.remove('glow');
cards[i].recheck(); cards[i].recheck();
var info=lib.card[cards[i].name]; var info=lib.card[cards[i].name];
if(info.destroy){ if(info.destroy||cards[i]._destroy){
cards[i].delete(); cards[i].delete();
cards[i].destroyed=info.destroy; cards[i].destroyed=info.destroy||cards[i]._destroy;
} }
else if(event.position){ else if(event.position){
cards[i].goto(event.position); cards[i].goto(event.position);
@ -19127,6 +19148,9 @@
card[3]='thunder'; card[3]='thunder';
} }
} }
else if(typeof card=='object'){
card=[card.suit,card.number,card.name,card.nature];
}
if(!lib.card[card[2]]){ if(!lib.card[card[2]]){
lib.card[card[2]]={}; lib.card[card[2]]={};
} }
@ -19177,6 +19201,7 @@
this.classList.remove('fullimage'); this.classList.remove('fullimage');
this.classList.remove('fullborder'); this.classList.remove('fullborder');
this.node.name.dataset.nature=''; this.node.name.dataset.nature='';
this.node.info.classList.remove('red');
if(!lib.config.hide_card_image&&lib.card[bg].fullskin){ if(!lib.config.hide_card_image&&lib.card[bg].fullskin){
this.classList.add('fullskin'); this.classList.add('fullskin');
if(img){ if(img){
@ -41820,6 +41845,7 @@
for(var i in lib.card){ for(var i in lib.card){
if(lib.card[i].mode&&lib.card[i].mode.contains(get.mode())==false) continue; if(lib.card[i].mode&&lib.card[i].mode.contains(get.mode())==false) continue;
// if(lib.card[i].vanish||lib.card[i].destroy) continue; // if(lib.card[i].vanish||lib.card[i].destroy) continue;
if(lib.card[i].destroy) continue;
if(typeof filter=='function'&&!filter(i)) continue; if(typeof filter=='function'&&!filter(i)) continue;
if(lib.config.bannedcards.contains(i)) continue; if(lib.config.bannedcards.contains(i)) continue;
if(!lib.translate[i+'_info']) continue; if(!lib.translate[i+'_info']) continue;
@ -41838,7 +41864,8 @@
var list=[]; var list=[];
for(var i in lib.card){ for(var i in lib.card){
if(lib.card[i].mode&&lib.card[i].mode.contains(get.mode())==false) continue; if(lib.card[i].mode&&lib.card[i].mode.contains(get.mode())==false) continue;
if(lib.card[i].vanish||lib.card[i].destroy) continue; // if(lib.card[i].vanish||lib.card[i].destroy) continue;
if(lib.card[i].destroy) continue;
if(lib.config.bannedcards.contains(i)) continue; if(lib.config.bannedcards.contains(i)) continue;
if(!lib.translate[i+'_info']) continue; if(!lib.translate[i+'_info']) continue;
if(filter(lib.card[i],i)){ if(filter(lib.card[i],i)){

View File

@ -11,6 +11,7 @@ window.noname_package={
yxs:'英雄杀', yxs:'英雄杀',
hearth:'炉石传说', hearth:'炉石传说',
gwent:'昆特牌', gwent:'昆特牌',
mtg:'万智牌',
ow:'守望先锋', ow:'守望先锋',
swd:'轩辕剑', swd:'轩辕剑',
gujian:'古剑奇谭', gujian:'古剑奇谭',

View File

@ -14,6 +14,7 @@ window.noname_source_list=[
'character/gujian.js', 'character/gujian.js',
'character/gwent.js', 'character/gwent.js',
'character/hearth.js', 'character/hearth.js',
'character/mtg.js',
'character/old.js', 'character/old.js',
'character/ow.js', 'character/ow.js',
'character/rank.js', 'character/rank.js',

View File

@ -1,13 +1,11 @@
window.noname_update={ window.noname_update={
version:'1.9.40.2', version:'1.9.41',
// update:'1.9.38.1', // update:'1.9.38.1',
changeLog:[ changeLog:[
// '武将称号',
// '神之试炼',
'bug修复' 'bug修复'
], ],
files:[ files:[
'game/game.js', // 'game/game.js',
// 'game/package.js', // 'game/package.js',
// 'game/config.js', // 'game/config.js',
// 'game/source.js', // 'game/source.js',
@ -22,13 +20,13 @@ window.noname_update={
// 'character/gwent.js', // 'character/gwent.js',
// 'character/old.js', // 'character/old.js',
// 'character/standard.js', // 'character/standard.js',
'character/sp.js', // 'character/sp.js',
// 'character/swd.js', // 'character/swd.js',
// 'character/rank.js', // 'character/rank.js',
'character/yijiang.js', // 'character/yijiang.js',
// 'character/xianjian.js', // 'character/xianjian.js',
// 'mode/identity.js', // 'mode/identity.js',
'mode/boss.js', // 'mode/boss.js',
// 'mode/guozhan.js', // 'mode/guozhan.js',
// 'mode/versus.js', // 'mode/versus.js',
// 'mode/connect.js', // 'mode/connect.js',
@ -39,7 +37,7 @@ window.noname_update={
// 'theme/music/style.css', // 'theme/music/style.css',
// 'theme/woodden/style.css', // 'theme/woodden/style.css',
// 'theme/simple/style.css', // 'theme/simple/style.css',
'layout/default/layout.css', // 'layout/default/layout.css',
// 'layout/default/phone.css', // 'layout/default/phone.css',
// 'layout/default/menu.css', // 'layout/default/menu.css',
// 'theme/style/cardback/*', // 'theme/style/cardback/*',

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB