REFLECTION BLUE
This commit is contained in:
parent
f940028758
commit
49a8d93d13
|
@ -653,6 +653,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
return true;
|
||||
},
|
||||
check:function(button){
|
||||
if(_status.event.getParent().type!='phase') return 1;
|
||||
if(button.link.name=='du') return 10;
|
||||
var player=_status.event.player;
|
||||
if(player.getUseValue(button.link)>0) return get.order(button.link);
|
||||
|
@ -660,7 +661,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
backup:function(links,player){
|
||||
return {
|
||||
prompt:'选择'+get.translation(links)+'的目标',
|
||||
filterCard:function(){return false},
|
||||
selectCard:-1,
|
||||
viewAs:links[0],
|
||||
|
@ -674,6 +674,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
},
|
||||
prompt:function(links){
|
||||
return '选择'+get.translation(links)+'的目标';
|
||||
},
|
||||
},
|
||||
ai:{
|
||||
order:function(item,player){
|
||||
|
|
|
@ -2021,7 +2021,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
if(typeof aiii=='number') return aiii;
|
||||
}
|
||||
if(Math.abs(get.attitude(_status.event.player,source))<3) return 0;
|
||||
if(source.hasSkillTag('guanxing')&&(source!=player||!source.hasSkill('guanxing_fail'))) return 0;
|
||||
if(source.hasSkillTag('nowuxie_judge')||source.hasSkillTag('guanxing')&&(source!=player||!source.hasSkill('guanxing_fail'))) return 0;
|
||||
if(name!='lebu'&&name!='bingliang'){
|
||||
if(source!=_status.event.player){
|
||||
return 0;
|
||||
|
|
|
@ -859,7 +859,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{target:'shaBefore'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return !event.getParent().directHit.contains(player)&&player.hasCard('youdishenru');
|
||||
return !event.getParent().directHit.contains(player)&&player.hasUsableCard('youdishenru');
|
||||
},
|
||||
content:function(){
|
||||
event.youdiinfo={
|
||||
|
@ -880,7 +880,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
if(!event.player.countCards('he')) return false;
|
||||
if(!lib.filter.targetEnabled({name:'chenhuodajie'},player,event.player)) return false;
|
||||
if(event._notrigger.contains(event.player)) return false;
|
||||
return player.hasCard('chenhuodajie');
|
||||
return player.hasUsableCard('chenhuodajie');
|
||||
},
|
||||
content:function(){
|
||||
player.chooseToUse(get.prompt('chenhuodajie',trigger.player).replace(/发动/,'使用'),function(card,player){
|
||||
|
|
472
character/diy.js
472
character/diy.js
|
@ -57,6 +57,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']],
|
||||
key_kamome:['female','key',3,['kamome_yangfan','kamome_huanmeng','kamome_jieban']],
|
||||
key_nao:['female','key',3,['nao_duyin','nao_wanxin','nao_shouqing']],
|
||||
|
||||
ns_huangchengyan:['male','shu',3,['nslongyue','nszhenyin']],
|
||||
ns_sunchensunjun:['male','wu',5,['nsxianhai','nsxingchu']],
|
||||
ns_yuanxi:['male','qun',4,['nsshengyan','nsdaizhan']],
|
||||
ns_caoshuang:['male','wei',4,['nsjiquan','nsfuwei']],
|
||||
// diy_caocao:['male','wei',4,['xicai','diyjianxiong','hujia']],
|
||||
// diy_hanlong:['male','wei',4,['siji','ciqiu']],
|
||||
diy_feishi:['male','shu',3,['shuaiyan','moshou']],
|
||||
|
@ -137,7 +142,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
characterSort:{
|
||||
diy:{
|
||||
diy_yijiang:["key_kud","key_misuzu","key_kamome","key_nao"],
|
||||
diy_yijiang:["key_kud","key_misuzu","key_kamome","key_nao",
|
||||
"ns_huangchengyan","ns_sunchensunjun","ns_yuanxi","ns_caoshuang"],
|
||||
diy_tieba:["diy_wenyang","ns_zuoci","ns_lvzhi","ns_wangyun","ns_nanhua","ns_nanhua_left","ns_nanhua_right","ns_huamulan","ns_huangzu","ns_jinke","ns_yanliang","ns_wenchou","ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","ns_duangui","ns_zhangbao","ns_masu","ns_zhangxiu","ns_lvmeng","ns_shenpei","ns_yujisp","ns_yangyi","ns_liuzhang","ns_xinnanhua","ns_zhangwei"],
|
||||
diy_default:["diy_feishi","diy_liuyan","diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji","diy_liufu","diy_xizhenxihong","diy_liuzan","diy_zaozhirenjun","diy_yangyi","diy_tianyu"],
|
||||
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_kagari","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki"],
|
||||
|
@ -201,6 +207,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
key_kamome:'#b仿生纱',
|
||||
key_nao:'#b潮鸣',
|
||||
|
||||
ns_huangchengyan:'#g竹邀月',
|
||||
ns_sunchensunjun:'#gVenusjeu',
|
||||
ns_yuanxi:'#g食茸二十四',
|
||||
ns_caoshuang:'#g荬庀芬兰',
|
||||
|
||||
diy_wenyang:'#g最粗的梦想XD',
|
||||
ns_zuoci:'#bskystarwuwei',
|
||||
ns_lvzhi:'#bskystarwuwei',
|
||||
|
@ -502,7 +513,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
name2:'诅咒',
|
||||
content:'mark',
|
||||
},
|
||||
marktext:'阻',
|
||||
marktext:'诅',
|
||||
mod:{
|
||||
maxHandcard:function(player,num){
|
||||
return num+player.countMark('misuzu_hengzhou');
|
||||
|
@ -4820,6 +4831,434 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
|
||||
nslongyue:{
|
||||
trigger:{global:'useCard'},
|
||||
filter:function(event,player){
|
||||
return get.type(event.card,'trick')=='trick'&&event.player.getHistory('useCard').indexOf(event)==0;
|
||||
},
|
||||
logTarget:'player',
|
||||
check:function(event,player){
|
||||
return get.attitude(player,event.player)>0;
|
||||
},
|
||||
content:function(){
|
||||
trigger.player.draw();
|
||||
},
|
||||
ai:{
|
||||
expose:0.2,
|
||||
},
|
||||
global:'nslongyue_ai',
|
||||
},
|
||||
nslongyue_ai:{
|
||||
mod:{
|
||||
aiOrder:function(player,card,num){
|
||||
if(!player.getHistory('useCard').length&&get.type(card)=='trick'&&game.hasPlayer(function(current){
|
||||
return current.hasSkill('nslongyue')&&get.attitude(player,current)>=0;
|
||||
})) return num+6;
|
||||
},
|
||||
},
|
||||
},
|
||||
nszhenyin:{
|
||||
trigger:{global:'judge'},
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
return _status.currentPhase&&_status.currentPhase.countCards('h')>0;
|
||||
},
|
||||
logTarget:function(){
|
||||
return _status.currentPhase;
|
||||
},
|
||||
check:function(event,player){
|
||||
var target=_status.currentPhase;
|
||||
var judge=event.judge(event.player.judging[0]);
|
||||
var max=0;
|
||||
var hs=target.getCards('h',function(card){
|
||||
var mod2=game.checkMod(card,target,'unchanged','cardEnabled2',target);
|
||||
if(mod2!='unchanged') return mod2;
|
||||
var mod=game.checkMod(card,target,'unchanged','cardRespondable',target);
|
||||
if(mod!='unchanged') return mod;
|
||||
return true;
|
||||
});
|
||||
for(var i of hs){
|
||||
var num=event.judge(i)-judge;
|
||||
if(num>max) max=num;
|
||||
}
|
||||
var att=get.attitude(player,target);
|
||||
if(att>0) return max>0;
|
||||
if(att<0) return max<=0;
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
if(!_status.currentPhase.countCards('h',function(card){
|
||||
var player=_status.currentPhase;
|
||||
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
|
||||
if(mod2!='unchanged') return mod2;
|
||||
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
|
||||
if(mod!='unchanged') return mod;
|
||||
return true;
|
||||
})){
|
||||
event.finish();
|
||||
return;
|
||||
};
|
||||
_status.currentPhase.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
|
||||
get.translation(trigger.player.judging[0])+',请打出一张手牌进行改判','h',true,function(card){
|
||||
var player=_status.event.player;
|
||||
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
|
||||
if(mod2!='unchanged') return mod2;
|
||||
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
|
||||
if(mod!='unchanged') return mod;
|
||||
return true;
|
||||
}).set('ai',function(card){
|
||||
var trigger=_status.event.getTrigger();
|
||||
var player=_status.event.player;
|
||||
var judging=_status.event.judging;
|
||||
var result=trigger.judge(card)-trigger.judge(judging);
|
||||
var attitude=get.attitude(player,trigger.player);
|
||||
if(attitude==0||result==0) return 0;
|
||||
if(attitude>0){
|
||||
return result/Math.max(0.1,get.value(card));
|
||||
}
|
||||
else{
|
||||
return -result/Math.max(0.1,get.value(card));
|
||||
}
|
||||
}).set('judging',trigger.player.judging[0]);
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
_status.currentPhase.respond(result.cards,'highlight').nopopup=true;
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
"step 2"
|
||||
if(result.bool){
|
||||
if(trigger.player.judging[0].clone){
|
||||
trigger.player.judging[0].clone.classList.remove('thrownhighlight');
|
||||
game.broadcast(function(card){
|
||||
if(card.clone){
|
||||
card.clone.classList.remove('thrownhighlight');
|
||||
}
|
||||
},trigger.player.judging[0]);
|
||||
game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone]));
|
||||
}
|
||||
game.cardsDiscard(trigger.player.judging[0]);
|
||||
trigger.player.judging[0]=result.cards[0];
|
||||
trigger.orderingCards.addArray(result.cards);
|
||||
game.log(trigger.player,'的判定牌改为',result.cards[0]);
|
||||
game.delay(2);
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
rejudge:true,
|
||||
tag:{
|
||||
rejudge:1,
|
||||
}
|
||||
}
|
||||
},
|
||||
nsxianhai:{
|
||||
trigger:{global:'damageSource'},
|
||||
filter:function(event,player){
|
||||
return event.source&&event.source!=player&&event.source.isAlive()&&event.source==_status.currentPhase&&
|
||||
(event.source.getStat('damage')||0)>(player.getLastStat('damage')||0)&&
|
||||
!player.hasSkill('nsxianhai_round');
|
||||
},
|
||||
check:function(event,player){
|
||||
return player.maxHp>1&&get.attitude(player,event.source)<-4;
|
||||
},
|
||||
logTarget:'source',
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.addTempSkill('nsxianhai_round','roundStart');
|
||||
player.loseMaxHp();
|
||||
var list=[];
|
||||
for(var i=1;i<6;i++){
|
||||
if(!trigger.source.isDisabled(i)) list.add('equip'+((i==3||i==4)?6:i));
|
||||
}
|
||||
if(list.length){
|
||||
player.chooseControl(list).set('prompt','选择废除'+get.translation(trigger.source)+'的一种装备栏').set('ai',function(){
|
||||
var target=_status.event.getTrigger().source;
|
||||
if(list.contains('equip6')&&target.getEquip('equip3')&&target.getEquip('equip4')) return 'equip6';
|
||||
if(list.contains('equip2')&&target.getEquip(2)&&get.value(target.getEquip(2),target)>0) return 'equip2';
|
||||
if(list.contains('equip5')&&target.getEquip(5)&&get.value(target.getEquip(5),target)>0) return 'equip5';
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
else event.goto(2);
|
||||
'step 1'
|
||||
if(result.control!='equip6') trigger.source.disableEquip(result.control);
|
||||
else{
|
||||
trigger.source.disableEquip(3);
|
||||
trigger.source.disableEquip(4);
|
||||
}
|
||||
'step 2'
|
||||
if(player.awakenedSkills.contains('nsxingchu')){
|
||||
var next=game.createEvent('nsxianhai_clear');
|
||||
event.next.remove(next);
|
||||
event.getParent('phase').after.push(next);
|
||||
next.player=player;
|
||||
next.setContent(function(){
|
||||
player.restoreSkill('nsxingchu');
|
||||
});
|
||||
}
|
||||
'step 3'
|
||||
if(trigger.source){
|
||||
var hs=trigger.source.getCards('h','shan');
|
||||
if(hs.length) trigger.source.discard(hs);
|
||||
}
|
||||
},
|
||||
},
|
||||
nsxianhai_round:{},
|
||||
nsxingchu:{
|
||||
trigger:{global:'die'},
|
||||
forceDie:true,
|
||||
filter:function(event,player){
|
||||
return player==event.player||player==event.source;
|
||||
},
|
||||
limited:true,
|
||||
skillAnimation:true,
|
||||
animationColor:'wood',
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt2('nsxingchu')).set('ai',function(target){
|
||||
return get.attitude(_status.event.player,target);
|
||||
}).set('forceDie',true);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('nsxingchu',target);
|
||||
player.awakenSkill('nsxingchu');
|
||||
var he=trigger.player.getCards('he');
|
||||
if(he.length) target.gain(he,trigger.player,'giveAuto');
|
||||
target.gainMaxHp();
|
||||
}
|
||||
},
|
||||
},
|
||||
nsshengyan:{
|
||||
trigger:{player:'judgeEnd'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return _status.currentPhase&&_status.currentPhase.isAlive()&&(!player.storage.nsshengyan2||!player.storage.nsshengyan2.contains(event.result.suit));
|
||||
},
|
||||
logTarget:function(){
|
||||
return _status.currentPhase;
|
||||
},
|
||||
content:function(){
|
||||
player.addTempSkill('nsshengyan2');
|
||||
if(!player.storage.nsshengyan2) player.storage.nsshengyan2=[];
|
||||
_status.currentPhase.addTempSkill('nsshengyan3');
|
||||
player.storage.nsshengyan2.add(trigger.result.suit);
|
||||
_status.currentPhase.addMark('nsshengyan3',2,false);
|
||||
},
|
||||
},
|
||||
nsshengyan2:{onremove:true},
|
||||
nsshengyan3:{
|
||||
mod:{
|
||||
maxHandcard:function(player,num){
|
||||
return num+player.countMark('nsshengyan3');
|
||||
},
|
||||
},
|
||||
onremove:true,
|
||||
intro:{
|
||||
content:'本回合手牌上限+#',
|
||||
},
|
||||
marktext:'筵',
|
||||
},
|
||||
nsdaizhan:{
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return (!player.hasJudge('lebu')||!player.hasJudge('bingliang'))&&player.countCards('he',function(card){
|
||||
if(_status.connectMode) return true;
|
||||
return get.type(card,'trick')!='trick';
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
var next=player.chooseToUse();
|
||||
next.set('norestore',true);
|
||||
next.set('_backupevent','nsdaizhanx');
|
||||
next.backup('nsdaizhanx');
|
||||
},
|
||||
},
|
||||
nsdaizhanx:{
|
||||
chooseButton:{
|
||||
dialog:function(){
|
||||
var list=['lebu','bingliang'];
|
||||
var list2=[];
|
||||
for(var i of list){
|
||||
list2.push(['延时锦囊','',i]);
|
||||
}
|
||||
return ui.create.dialog(get.prompt('nsdaizhan'),[list2,'vcard'],'hidden');
|
||||
},
|
||||
filter:function(button,player){
|
||||
return !player.hasJudge(button.link[2])
|
||||
},
|
||||
check:function(button){
|
||||
if(button.link[2]=='lebu') return 0;
|
||||
var player=_status.event.player;
|
||||
var delta=player.getHandcardLimit()+player.countCards('j')*2+2-player.hp;
|
||||
if(delta>=2) return 1+Math.random();
|
||||
if(delta>=0&&!player.countCards('h',function(card){
|
||||
return player.hasValueTarget(card);
|
||||
})) return Math.random();
|
||||
return 0;
|
||||
},
|
||||
backup:function(links,player){
|
||||
return {
|
||||
filterCard:function(card,player){
|
||||
return get.type(card,'trick')!='trick'&&player.canAddJudge({name:links[0][2],cards:[card]});
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return player==target;
|
||||
},
|
||||
check:function(card){
|
||||
return 8-get.value(card);
|
||||
},
|
||||
viewAs:{name:links[0][2]},
|
||||
position:'he',
|
||||
precontent:function(){
|
||||
player.addTempSkill('nsdaizhany');
|
||||
event.result.skill='nsdaizhan';
|
||||
},
|
||||
ai:{
|
||||
result:{
|
||||
target:1,
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
prompt:function(links){
|
||||
return '将一张牌当做'+get.translation(links[0][2])+'对自己使用';
|
||||
},
|
||||
},
|
||||
},
|
||||
nsdaizhany:{
|
||||
trigger:{player:'phaseEnd'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
return player.countCards('h')<player.getHandcardLimit();
|
||||
},
|
||||
content:function(){
|
||||
player.drawTo(player.getHandcardLimit());
|
||||
},
|
||||
ai:{
|
||||
nowuxie_judge:true,
|
||||
},
|
||||
},
|
||||
nsjiquan:{
|
||||
trigger:{
|
||||
global:['damageEnd','damageSource'],
|
||||
},
|
||||
direct:true,
|
||||
filter:function(event,player,name){
|
||||
var target=(name=='damageSource'?event.source:event.player);
|
||||
return target&&target!=player&&get.distance(player,target)<=1&&target.countCards('hej')>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var target=(event.triggername=='damageSource'?trigger.source:trigger.player);
|
||||
event.target=target;
|
||||
player.choosePlayerCard(target,'hej',player.storage.nsfuwei?true:1).set('ai',function(button){
|
||||
var val=get.buttonValue(button);
|
||||
if(get.attitude(_status.event.player,get.owner(button.link))>0) return -val;
|
||||
return val;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('nsjiquan',target);
|
||||
target.lose(result.cards,ui.special,'toStorage');
|
||||
player.markAuto('nsjiquan_mark',result.cards);
|
||||
target.$give(result.cards,player,false);
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
game.delayx();
|
||||
},
|
||||
mod:{
|
||||
cardUsable:function(card,player,num){
|
||||
if(card.name=='sha') return num+player.getStorage('nsjiquan_mark').length;
|
||||
},
|
||||
},
|
||||
},
|
||||
nsjiquan_mark:{
|
||||
intro:{
|
||||
content:'cards',
|
||||
onunmark:'throw',
|
||||
},
|
||||
marktext:'威',
|
||||
},
|
||||
nsfuwei:{
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
forced:true,
|
||||
unique:true,
|
||||
juexingji:true,
|
||||
skillAnimation:true,
|
||||
filter:function(event,player){
|
||||
return player.getStorage('nsjiquan_mark').length>4;
|
||||
},
|
||||
content:function(){
|
||||
player.awakenSkill('nsfuwei');
|
||||
player.storage.nsfuwei=true;
|
||||
player.addSkill('nsdiemou');
|
||||
player.addSkill('nszhihuang');
|
||||
player.gainMaxHp(2);
|
||||
},
|
||||
derivation:['nsdiemou','nszhihuang'],
|
||||
},
|
||||
nsdiemou:{
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return player.getStorage('nsjiquan_mark').length>game.players.length;
|
||||
},
|
||||
content:function(){
|
||||
var num=player.getStorage('nsjiquan_mark').length;
|
||||
player.draw(num);
|
||||
player.loseMaxHp();
|
||||
player.unmarkSkill('nsjiquan_mark');
|
||||
if(num>4) player.turnOver();
|
||||
},
|
||||
},
|
||||
nszhihuang:{
|
||||
group:'nszhihuang_damage',
|
||||
trigger:{global:'useCard'},
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
return event.player==get.zhu(player)&&player.getStorage('nsjiquan_mark').length>0&&event.cards&&event.cards.filterInD().length>0;
|
||||
},
|
||||
prompt2:function(event){
|
||||
return '移去一张“威”并获得'+get.translation(event.cards.filterInD());
|
||||
},
|
||||
check:function(event,player){
|
||||
if(['equip','delay'].contains(get.type(event.card))) return get.attitude(player,event.player)<0;
|
||||
return get.value(event.cards.filterInD()>0);
|
||||
},
|
||||
logTarget:'player',
|
||||
content:function(){
|
||||
'step 0'
|
||||
var cards=player.getStorage('nsjiquan_mark');
|
||||
if(cards.length==1) event._result={
|
||||
bool:true,
|
||||
links:cards.slice(0),
|
||||
}
|
||||
else player.chooseButton(['选择移去一张“威”',cards],true);
|
||||
'step 1'
|
||||
player.unmarkAuto('nsjiquan_mark',result.links);
|
||||
game.cardsDiscard(result.links);
|
||||
player.gain(trigger.cards.filterInD(),'gain2','log');
|
||||
},
|
||||
},
|
||||
nszhihuang_damage:{
|
||||
trigger:{source:'damageBegin1'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
var zhu=get.zhu(player);
|
||||
return zhu&&player.countCards('h')>zhu.countCards('h')&&event.getParent().type=='card';
|
||||
},
|
||||
content:function(){
|
||||
trigger.num++;
|
||||
},
|
||||
},
|
||||
|
||||
yjxuepin:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
|
@ -9864,6 +10303,35 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
nao_shouqing3:'守情',
|
||||
nao_shouqing_info:'其他角色的出牌阶段内可以对你使用【桃】。若如此做,其摸一张牌且本局游戏内的手牌上限+1。',
|
||||
|
||||
ns_huangchengyan:'黄承彦',
|
||||
nslongyue:'龙岳',
|
||||
nslongyue_info:'当一名角色使用锦囊牌时,若此牌是其本回合内使用的第一张牌,则你可令其摸一张牌。',
|
||||
nszhenyin:'阵引',
|
||||
nszhenyin_info:'每回合限一次。一名角色的判定牌生效前,你可令当前回合角色打出一张手牌代替之。',
|
||||
ns_sunchensunjun:'孙綝孙峻',
|
||||
nsxianhai:'险害',
|
||||
nsxianhai_info:'每轮限一次,当一名其他角色于回合内造成伤害后,若其此回合内造成过的伤害总和大于你上一回合内造成的伤害总和,则你可以减1点体力上限,令其废除一种装备栏并弃置手牌中所有的【闪】。若〖兴黜〗已发动,此回合结束后视为该限定技未发动过。',
|
||||
nsxingchu:'兴黜',
|
||||
nsxingchu_info:'限定技,当你杀死一名角色/你死亡时,你可以令一名角色获得其/你的所有牌并增加1点体力上限。',
|
||||
ns_yuanxi:'袁熙',
|
||||
nsshengyan:'盛筵',
|
||||
nsshengyan3:'盛筵',
|
||||
nsshengyan_info:'锁定技,你的判定牌生效后,若结果花色与你本回合内其他判定结果的花色均不同,则你令当前回合角色本回合的手牌上限+2。',
|
||||
nsdaizhan:'怠战',
|
||||
nsdaizhany:'怠战',
|
||||
nsdaizhan_info:'准备阶段,你可以将一张非锦囊牌当做【兵粮寸断】或【乐不思蜀】对自己使用。若如此做,回合结束时,你将手牌摸至手牌上限。',
|
||||
ns_caoshuang:'曹爽',
|
||||
nsjiquan:'集权',
|
||||
nsjiquan_mark:'集权',
|
||||
nsjiquan_info:'与你距离1以内的其他角色造成或受到伤害后,你可以将其区域内的一张牌置于你的武将牌上(称为“威”)。你使用【杀】的次数上限+X(X为“威”数)。',
|
||||
nsfuwei:'附位',
|
||||
nsfuwei_info:'觉醒技,结束阶段开始时,若“威”数大于4,则你加2点体力上限,获得〖喋谋〗和〖制皇〗,并将〖集权〗改为锁定技。',
|
||||
nsdiemou:'喋谋',
|
||||
nsdiemou_info:'锁定技,出牌阶段开始时,若“威”大于全场角色数,你移去所有“威”,减一点体力上限并摸X张牌。若X大于4,你翻面。(X为移去的“威”数)',
|
||||
nszhihuang:'制皇',
|
||||
nszhihuang_damage:'制皇',
|
||||
nszhihuang_info:'每回合限一次,当主公使用牌时,你可以移去一张“威”,然后获得此牌。锁定技,若你的手牌数大于主公,则你使用牌造成的伤害+1。',
|
||||
|
||||
yj_caoang:'SP曹昂',
|
||||
yjxuepin:'血拼',
|
||||
yjxuepin_info:'出牌阶段限一次,你可以选择攻击范围内的一名角色并失去1点体力。你弃置其两张牌。若这两张牌类型相同,你回复1点体力。',
|
||||
|
|
|
@ -2884,11 +2884,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 0'
|
||||
event.list1=[];
|
||||
event.list2=[];
|
||||
if(target.countCards('h')>0){
|
||||
var chooseButton=player.chooseButton(4,'hidden',['你的手牌',player.getCards('h'),get.translation(target.name)+'的手牌',target.getCards('h'),'hidden']);
|
||||
if(player.countCards('h')>0){
|
||||
var chooseButton=player.chooseButton(4,['你的手牌',player.getCards('h'),get.translation(target.name)+'的手牌',target.getCards('h')]);
|
||||
}
|
||||
else{
|
||||
var chooseButton=player.chooseButton(4,'hidden',['你的手牌',player.getCards('h'),'hidden']);
|
||||
var chooseButton=player.chooseButton(4,[get.translation(target.name)+'的手牌',target.getCards('h')]);
|
||||
}
|
||||
chooseButton.set('target',target);
|
||||
chooseButton.set('ai',function(button){
|
||||
|
|
|
@ -13,8 +13,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
character:{
|
||||
yj_zhanghe:['male','qun',4,['zhilve']],
|
||||
yj_xuhuang:['male','qun',4,['xhzhiyan']],
|
||||
yj_zhangliao:['male','qun',4,['weifeng']],
|
||||
yj_zhanghe:['male','qun',4,['xinzhilve']],
|
||||
yj_xuhuang:['male','qun',4,['xinxhzhiyan']],
|
||||
yj_ganning:['male','qun',4,['gnjinfan','gnsheque']],
|
||||
re_sunjian:['male','wu',4,['gzyinghun','repolu']],
|
||||
zhengxuan:['male','qun',3,['zhengjing']],
|
||||
dengzhi:['male','shu',3,['jimeng','shuaiyan']],
|
||||
|
@ -1664,7 +1666,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
zhongzuo:{
|
||||
audio:2,
|
||||
trigger:{global:'phaseJieshuBegin'},
|
||||
trigger:{global:'phaseEnd'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.getHistory('damage').length>0||player.getHistory('sourceDamage').length>0;
|
||||
|
@ -4458,6 +4460,617 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
},
|
||||
xinzhilve:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
var list=[
|
||||
'移动场上的一张牌',
|
||||
'摸一张牌并视为使用一张【杀】',
|
||||
];
|
||||
var choiceList=ui.create.dialog('知略:失去1点体力并...','forcebutton','hidden');
|
||||
for(var i=0;i<list.length;i++){
|
||||
var str='<div class="popup text" style="width:calc(100% - 10px);display:inline-block">';
|
||||
var bool=lib.skill.xinzhilve.chooseButton.filter({link:i},player);
|
||||
if(i==0&&!bool) str+='<div style="opacity:0.5">';
|
||||
str+=list[i];
|
||||
if(i==0&&!bool) str+='</div>';
|
||||
str+='</div>';
|
||||
var next=choiceList.add(str);
|
||||
next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
|
||||
next.firstChild.link=i;
|
||||
for(var j in lib.element.button){
|
||||
next[j]=lib.element.button[i];
|
||||
}
|
||||
choiceList.buttons.add(next.firstChild);
|
||||
}
|
||||
return choiceList;
|
||||
},
|
||||
filter:function(button,player){
|
||||
if(button.link==0) return player.canMoveCard();
|
||||
return player.hasUseTarget({name:'sha',isCard:true},false);
|
||||
},
|
||||
check:function(button){
|
||||
return button.link;
|
||||
},
|
||||
backup:function(links){
|
||||
return lib.skill['xinzhilve_'+['move','use'][links[0]]];
|
||||
},
|
||||
prompt:function(){return '请选择【杀】的目标'},
|
||||
},
|
||||
ai:{
|
||||
order:function(item,player){
|
||||
return get.order({name:'sha'})+0.1;
|
||||
},
|
||||
result:{
|
||||
player:function(player){
|
||||
if(player.hp>2&&player.hasValueTarget({name:'sha'})) return 1;
|
||||
return 0;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
xinzhilve_move:{
|
||||
filterCard:function(){return false},
|
||||
selectCard:-1,
|
||||
delay:false,
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.forceDie=true;
|
||||
if(!player.canMoveCard(null,event.nojudge)){
|
||||
event.finish();
|
||||
return;
|
||||
}
|
||||
var next=player.chooseTarget(2,function(card,player,target){
|
||||
if(ui.selected.targets.length){
|
||||
var from=ui.selected.targets[0];
|
||||
var js=from.getCards('j');
|
||||
for(var i=0;i<js.length;i++){
|
||||
if(_status.event.nojudge) break;
|
||||
if(target.canAddJudge(js[i])) return true;
|
||||
}
|
||||
if(target.isMin()) return false;
|
||||
var es=from.getCards('e');
|
||||
for(var i=0;i<es.length;i++){
|
||||
if(target.isEmpty(get.subtype(es[i]))) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
else{
|
||||
var range='ej';
|
||||
if(_status.event.nojudge) range='e';
|
||||
return target.countCards(range)>0;
|
||||
}
|
||||
});
|
||||
next.set('nojudge',event.nojudge||false);
|
||||
next.set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
var att=get.attitude(player,target);
|
||||
var sgnatt=get.sgn(att);
|
||||
if(ui.selected.targets.length==0){
|
||||
if(att>0){
|
||||
if(!_status.event.nojudge&&target.countCards('j',function(card){
|
||||
return game.hasPlayer(function(current){
|
||||
return current.canAddJudge(card)&&get.attitude(player,current)<0;
|
||||
})
|
||||
})) return 14;
|
||||
if(target.countCards('e',function(card){
|
||||
return get.value(card,target)<0&&game.hasPlayer(function(current){
|
||||
return current!=target&&get.attitude(player,current)<0&¤t.isEmpty(get.subtype(card))
|
||||
});
|
||||
})>0) return 9;
|
||||
}
|
||||
else if(att<0){
|
||||
if(game.hasPlayer(function(current){
|
||||
if(current!=target&&get.attitude(player,current)>0){
|
||||
var es=target.getCards('e');
|
||||
for(var i=0;i<es.length;i++){
|
||||
if(get.value(es[i],target)>0&¤t.isEmpty(get.subtype(es[i]))&&get.value(es[i],current)>0) return true;
|
||||
}
|
||||
}
|
||||
})){
|
||||
return -att;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
var es=ui.selected.targets[0].getCards('e');
|
||||
var i;
|
||||
var att2=get.sgn(get.attitude(player,ui.selected.targets[0]));
|
||||
for(i=0;i<es.length;i++){
|
||||
if(sgnatt!=0&&att2!=0&&
|
||||
get.sgn(get.value(es[i],ui.selected.targets[0]))==-att2&&
|
||||
get.sgn(get.value(es[i],target))==sgnatt&&
|
||||
target.isEmpty(get.subtype(es[i]))){
|
||||
return Math.abs(att);
|
||||
}
|
||||
}
|
||||
if(i==es.length&&(_status.event.nojudge||!ui.selected.targets[0].countCards('j',function(card){
|
||||
return target.canAddJudge(card);
|
||||
}))){
|
||||
return 0;
|
||||
}
|
||||
return -att*get.attitude(player,ui.selected.targets[0]);
|
||||
});
|
||||
next.set('multitarget',true);
|
||||
next.set('targetprompt',_status.event.targetprompt||['被移走','移动目标']);
|
||||
next.set('prompt',event.prompt||'移动场上的一张牌');
|
||||
if(event.prompt2) next.set('prompt2',event.prompt2);
|
||||
if(event.forced) next.set('forced',true);
|
||||
'step 1'
|
||||
event.result=result;
|
||||
if(result.bool){
|
||||
player.line2(result.targets,'green');
|
||||
event.targets=result.targets;
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
'step 2'
|
||||
game.delay();
|
||||
'step 3'
|
||||
if(targets.length==2){
|
||||
player.choosePlayerCard('ej',true,function(button){
|
||||
var player=_status.event.player;
|
||||
var targets0=_status.event.targets0;
|
||||
var targets1=_status.event.targets1;
|
||||
if(get.attitude(player,targets0)>0&&get.attitude(player,targets1)<0){
|
||||
if(get.position(button.link)=='j') return 12;
|
||||
if(get.value(button.link,targets0)<0) return 10;
|
||||
return 0;
|
||||
}
|
||||
else{
|
||||
if(get.position(button.link)=='j') return -10;
|
||||
return get.equipValue(button.link);
|
||||
}
|
||||
},targets[0]).set('nojudge',event.nojudge||false).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){
|
||||
var targets1=_status.event.targets1;
|
||||
if(get.position(button.link)=='j'){
|
||||
if(_status.event.nojudge) return false;
|
||||
return targets1.canAddJudge(button.link);
|
||||
}
|
||||
else{
|
||||
return targets1.isEmpty(get.subtype(button.link));
|
||||
}
|
||||
});
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
'step 4'
|
||||
if(result.bool&&result.links.length){
|
||||
player.loseHp();
|
||||
}
|
||||
'step 5'
|
||||
if(result.bool&&result.links.length){
|
||||
var link=result.links[0];
|
||||
if(get.position(link)=='e'){
|
||||
event.targets[1].equip(link);
|
||||
}
|
||||
else if(link.viewAs){
|
||||
event.targets[1].addJudge({name:link.viewAs},[link]);
|
||||
}
|
||||
else{
|
||||
event.targets[1].addJudge(link);
|
||||
}
|
||||
event.targets[0].$give(link,event.targets[1])
|
||||
event.result.card=link;
|
||||
event.result.position=get.position(link);
|
||||
game.delay();
|
||||
player.addTempSkill('xinzhilve_mark');
|
||||
player.addMark('xinzhilve_mark',1,false);
|
||||
}
|
||||
},
|
||||
},
|
||||
xinzhilve_use:{
|
||||
filterCard:function(){return false},
|
||||
selectCard:-1,
|
||||
filterTarget:function(card,player,target){
|
||||
return player.canUse({name:'sha',isCard:true},target,false);
|
||||
},
|
||||
content:function(){
|
||||
player.loseHp();
|
||||
player.draw();
|
||||
player.useCard({name:'sha',isCard:true},false,target).forceDie=true;
|
||||
player.addTempSkill('xinzhilve_mark');
|
||||
player.addMark('xinzhilve_mark',1,false);
|
||||
},
|
||||
ai:{
|
||||
result:{
|
||||
target:function(player,target){
|
||||
return get.effect(target,{name:'sha'},player,target);
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
xinzhilve_mark:{
|
||||
intro:{content:'本回合手牌上限+#'},
|
||||
onunmark:true,
|
||||
charlotte:true,
|
||||
mod:{
|
||||
maxHandcard:function(player,num){
|
||||
return num+player.countMark('xinzhilve_mark');
|
||||
},
|
||||
},
|
||||
},
|
||||
xinxhzhiyan:{
|
||||
enable:'phaseUse',
|
||||
filter:function(event,player){
|
||||
return player.countCards('h')!=player.maxHp&&!player.hasSkill('xinxhzhiyan_'+(player.countCards('h')>player.maxHp));
|
||||
},
|
||||
filterCard:true,
|
||||
selectCard:function(){
|
||||
var player=_status.event.player;
|
||||
var num=Math.max(0,player.countCards('h')-player.maxHp);
|
||||
return [num,num];
|
||||
},
|
||||
filterTarget:lib.filter.notMe,
|
||||
selectTarget:function(){
|
||||
if(ui.selected.cards.length) return [1,1];
|
||||
return [0,0];
|
||||
},
|
||||
check:function(card){
|
||||
var player=_status.event.player;
|
||||
if(player.getUseValue(card)<=0&&game.hasPlayer(function(current){
|
||||
return current!=player&&get.value(card,current)*get.attitude(player,current)>0;
|
||||
})) return 1;
|
||||
return 0;
|
||||
},
|
||||
delay:false,
|
||||
discard:false,
|
||||
lose:false,
|
||||
content:function(){
|
||||
var bool=(player.countCards('h')>player.maxHp);
|
||||
player.addTempSkill('xinxhzhiyan_'+bool,'phaseUseEnd');
|
||||
if(!bool){
|
||||
player.draw(player.maxHp-player.countCards('h'));
|
||||
}
|
||||
else{
|
||||
target.gain(cards,player,'giveAuto');
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:function(obj,player){
|
||||
if(player.countCards('h')>player.maxHp) return 10;
|
||||
return 0.5;
|
||||
},
|
||||
result:{
|
||||
player:1,
|
||||
},
|
||||
},
|
||||
},
|
||||
xinxhzhiyan_true:{},
|
||||
xinxhzhiyan_false:{
|
||||
mod:{
|
||||
playerEnabled:function(card,player,target){
|
||||
if(player!=target&&(!get.info(card)||!get.info(card).singleCard||!ui.selected.targets.length)) return false;
|
||||
},
|
||||
},
|
||||
mark:true,
|
||||
intro:{
|
||||
content:'不能对其他角色使用牌',
|
||||
},
|
||||
},
|
||||
weifeng:{
|
||||
audio:2,
|
||||
trigger:{player:'useCardAfter'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(!event.targets||!event.targets.filter(function(target){
|
||||
return target!=player&&!target.storage.weifeng2;
|
||||
}).length) return false;
|
||||
var evt=event.getParent('phaseUse');
|
||||
if(!evt||evt.player!=player) return false;
|
||||
if(!get.tag(event.card,'damage')) return false;
|
||||
if(!['basic','trick'].contains(get.type(event.card))) return false;
|
||||
return player.getHistory('useCard',function(ev){
|
||||
return ev.getParent('phaseUse')==evt&&get.tag(ev.card,'damage')&&['basic','trick'].contains(get.type(ev.card));
|
||||
}).indexOf(event)==0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(true,'威风:请选择一个目标,令其获得一个【惧('+get.translation(trigger.card.name)+')】标记',function(card,player,target){
|
||||
return player!=target&&!target.storage.weifeng2&&_status.event.getTrigger().targets.contains(target);
|
||||
}).set('ai',function(target){
|
||||
return -get.attitude(_status.event.player,target);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
target.storage.weifeng2=trigger.card.name;
|
||||
player.line(target,'green');
|
||||
game.log(target,'获得了一个','#g【惧('+get.translation(trigger.card.name)+')】','标记')
|
||||
target.markSkill('weifeng2');
|
||||
player.addSkill('weifeng3');
|
||||
}
|
||||
},
|
||||
},
|
||||
weifeng2:{
|
||||
intro:{
|
||||
content:'当前“惧”标记名称:$',
|
||||
onunmark:function(storage,player){
|
||||
game.log(player,'移去了一个','#g【惧('+get.translation(storage)+')】','标记')
|
||||
delete player.storage.weifeng2;
|
||||
},
|
||||
},
|
||||
marktext:'惧',
|
||||
},
|
||||
weifeng3:{
|
||||
trigger:{
|
||||
global:'damageBegin3',
|
||||
player:['phaseZhunbeiBegin','dieBegin'],
|
||||
},
|
||||
forced:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
if(event.name!='damage') return true;
|
||||
return event.player!=player&&typeof event.player.storage.weifeng2=='string';
|
||||
},
|
||||
content:function(){
|
||||
if(trigger.name=='damage'){
|
||||
player.logSkill('weifeng',trigger.player);
|
||||
if(trigger.card&&trigger.card.name==trigger.player.storage.weifeng2) trigger.num++;
|
||||
else if(trigger.player.countGainableCards(player,'he')>0) player.gainPlayerCard(trigger.player,'he',true);
|
||||
trigger.player.unmarkSkill('weifeng2');
|
||||
}
|
||||
else{
|
||||
game.countPlayer(function(current){
|
||||
if(current.storage.weifeng2) current.unmarkSkill('weifeng2');
|
||||
});
|
||||
player.removeSkill('weifeng3');
|
||||
}
|
||||
},
|
||||
},
|
||||
gnjinfan:{
|
||||
trigger:{player:'phaseDiscardBegin'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
var list=[];
|
||||
player.getStorage('gnjinfan').filter(function(card){
|
||||
list.add(get.suit(card));
|
||||
});
|
||||
if(list.length>=lib.suit.length) return false;
|
||||
return player.countCards('h',function(card){
|
||||
return _status.connectMode||!list.contains(get.suit(card));
|
||||
})>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseCard('h',get.prompt('gnjinfan'),'将任意张手牌当做“铃”置于武将牌上',[1,function(){
|
||||
var list=[];
|
||||
var list2=[];
|
||||
player.getStorage('gnjinfan').filter(function(card){
|
||||
list.add(get.suit(card));
|
||||
});
|
||||
player.getCards('h',function(card){
|
||||
list2.add(get.suit(card));
|
||||
});
|
||||
list2.removeArray(list);
|
||||
return list2.length;
|
||||
}()],function(card,player){
|
||||
var list=player.getStorage('gnjinfan').concat(ui.selected.cards);
|
||||
return list.filter(function(cardx){
|
||||
return get.suit(card)==get.suit(cardx);
|
||||
}).length==0;
|
||||
}).set('ai',function(card){
|
||||
var player=_status.event.player;
|
||||
if(player.hasUseTarget(card)&&!player.hasValueTarget(card)) return 0;
|
||||
return 1+Math.random();
|
||||
}).set('complexCard',true);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('gnjinfan');
|
||||
player.markAuto('gnjinfan',result.cards);
|
||||
player.lose(result.cards,'toStorage',ui.special,'visible');
|
||||
game.log(player,'将',result.cards,'放到了武将牌上');
|
||||
}
|
||||
},
|
||||
group:['gnjinfan3','gnjinfan4','gnjinfan6','gnjinfan7'],
|
||||
marktext:'铃',
|
||||
intro:{
|
||||
content:'cards',
|
||||
},
|
||||
},
|
||||
gnjinfan3:{
|
||||
trigger:{player:'chooseToRespondBegin'},
|
||||
filter:function(event,player){
|
||||
if(event.responded) return false;
|
||||
var gnjinfan=player.getStorage('gnjinfan');
|
||||
if(!gnjinfan) return false;
|
||||
for(var i=0;i<gnjinfan.length;i++){
|
||||
if(event.filterCard(gnjinfan[i],player,event)&&lib.filter.cardRespondable(gnjinfan[i],player,event)) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.chooseButton([get.prompt('gnjinfan'),player.getStorage('gnjinfan')]).set('filterButton',function(button){
|
||||
var evt=_status.event.getTrigger();
|
||||
if(evt&&evt.filterCard){
|
||||
return evt.filterCard(button.link,_status.event.player,evt)&&lib.filter.cardRespondable(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],
|
||||
cards:result.links.slice(0),
|
||||
skill:'gnjinfan3',
|
||||
}
|
||||
player.unmarkAuto('gnjinfan',result.links);
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:4,
|
||||
useful:-1,
|
||||
value:-1
|
||||
}
|
||||
},
|
||||
gnjinfan4:{
|
||||
enable:'chooseToUse',
|
||||
filter:function(event,player){
|
||||
var gnjinfan=player.getStorage('gnjinfan');
|
||||
if(!gnjinfan) return false;
|
||||
for(var i=0;i<gnjinfan.length;i++){
|
||||
if(event.filterCard(gnjinfan[i],player,event)) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
return ui.create.dialog('锦帆',player.getStorage('gnjinfan'),'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(_status.event.getParent().type!='phase') return 1;
|
||||
if(button.link.name=='du') return 10;
|
||||
var player=_status.event.player;
|
||||
if(player.getUseValue(button.link)>0) return get.order(button.link);
|
||||
return -1;
|
||||
},
|
||||
backup:function(links,player){
|
||||
return {
|
||||
filterCard:function(){return false},
|
||||
selectCard:-1,
|
||||
viewAs:links[0],
|
||||
onuse:function(result,player){
|
||||
var gnjinfan=player.getStorage('gnjinfan');
|
||||
if(gnjinfan){
|
||||
player.unmarkAuto('gnjinfan',[result.card]);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
prompt:function(links){
|
||||
return '选择'+get.translation(links)+'的目标';
|
||||
},
|
||||
},
|
||||
ai:{
|
||||
order:function(item,player){
|
||||
var event=_status.event;
|
||||
if(event.type!='phase') return 4;
|
||||
if(!player) return -1;
|
||||
var gnjinfan=player.getStorage('gnjinfan');
|
||||
if(!gnjinfan) return -1;
|
||||
var order=0;
|
||||
for(var i=0;i<gnjinfan.length;i++){
|
||||
if(player.getUseValue(gnjinfan[i])>0){
|
||||
var order2=get.order(gnjinfan[i]);
|
||||
if(order2>order) order=order2
|
||||
}
|
||||
}
|
||||
return order+0.1;
|
||||
},
|
||||
result:{
|
||||
player:function(player){
|
||||
if(_status.event.dying) return get.attitude(player,_status.event.dying);
|
||||
return 1;
|
||||
}
|
||||
},
|
||||
useful:-1,
|
||||
value:-1
|
||||
}
|
||||
},
|
||||
gnjinfan6:{
|
||||
trigger:{global:'cardsGotoOrderingAfter'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
var evt=event.getParent();
|
||||
return evt&&evt.player==player&&evt.skill&&evt.skill.indexOf('gnjinfan')==0;
|
||||
},
|
||||
content:function(){
|
||||
var suit=get.suit(trigger.cards[0]);
|
||||
var card=get.cardPile2(function(cardx){
|
||||
return get.suit(cardx)==suit;
|
||||
});
|
||||
if(card) player.gain(card,'gain2','log');
|
||||
},
|
||||
},
|
||||
gnjinfan7:{
|
||||
filter:function(){return false},
|
||||
hiddenCard:function(player,name){
|
||||
var gnjinfan=player.getStorage('gnjinfan');
|
||||
if(!gnjinfan) return false;
|
||||
for(var i=0;i<gnjinfan.length;i++){
|
||||
if(gnjinfan[i].name==name) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
ai:{
|
||||
save:true,
|
||||
respondSha:true,
|
||||
respondShan:true,
|
||||
skillTagFilter:function(player,tag){
|
||||
var gnjinfan=player.getStorage('gnjinfan');
|
||||
for(var i=0;i<gnjinfan.length;i++){
|
||||
switch(tag){
|
||||
case 'respondSha':if(gnjinfan[i].name=='sha') return true;break;
|
||||
case 'respondShan':if(gnjinfan[i].name=='shan') return true;break;
|
||||
case 'save':{
|
||||
if(gnjinfan[i].name=='tao'||gnjinfan[i].name=='spell_zhiliaoshui') return true;
|
||||
if(player==_status.event.dying){
|
||||
if(gnjinfan[i].name=='jiu'||gnjinfan[i].name=='tianxianjiu') return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
}
|
||||
},
|
||||
gnsheque:{
|
||||
trigger:{global:'phaseZhunbeiBegin'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return event.player.isAlive()&event.player.countCards('e')&&
|
||||
lib.filter.targetEnabled({name:'sha'},player,event.player)&&(player.hasSha()||_status.connectMode&&player.countCards('h')>0);
|
||||
},
|
||||
content:function(){
|
||||
player.chooseToUse(function(card,player,event){
|
||||
if(get.name(card)!='sha') return false;
|
||||
return lib.filter.filterCard.apply(this,arguments);
|
||||
},'射却:是否对'+get.translation(trigger.player)+'使用一张杀?').set('logSkill','gnsheque').set('complexSelect',true).set('filterTarget',function(card,player,target){
|
||||
if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false;
|
||||
return lib.filter.targetEnabled.apply(this,arguments);
|
||||
}).set('sourcex',trigger.player).set('oncard',function(card){
|
||||
card.gnsheque_tag=true;
|
||||
});
|
||||
},
|
||||
ai:{
|
||||
unequip:true,
|
||||
unequip_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(tag=='unequip_ai'){
|
||||
if(_status.event.getParent().name!='gnsheque') return false;
|
||||
}
|
||||
else if(!arg||!arg.card||!arg.card.gnsheque_tag) return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
translate:{
|
||||
"re_sp_zhugeliang":"手杀卧龙",
|
||||
|
@ -4583,7 +5196,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhiyi:'执义',
|
||||
zhiyi_info:'锁定技,当你于一回合内使用或打出第一张基本牌时,你选择一项:1.摸一张牌。2.于此牌A(若此牌是因响应牌B而使用或打出的,则改为牌B)的使用或打出流程结算完成后,视为使用一张与此牌名称和属性相同的卡牌。',
|
||||
zhongzuo:'忠佐',
|
||||
zhongzuo_info:'一名角色的结束阶段开始时,若你于此回合内造成或受到过伤害,则你可以令一名角色摸两张牌。若该角色已受伤,则你摸一张牌。',
|
||||
zhongzuo_info:'一名角色的回合结束时,若你于此回合内造成或受到过伤害,则你可以令一名角色摸两张牌。若该角色已受伤,则你摸一张牌。',
|
||||
wanlan:'挽澜',
|
||||
wanlan_info:'限定技,当一名角色进入濒死状态时,你可以弃置所有手牌并令其回复体力至1点,然后对当前回合角色造成1点伤害。',
|
||||
re_jikang:"手杀嵇康",
|
||||
|
@ -4728,14 +5341,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhengjing2:'整经',
|
||||
|
||||
mobile_yijiang:'武将设计征集大赛',
|
||||
yj_zhanghe:'SP张郃',
|
||||
yj_zhangliao:'SP张辽',
|
||||
yj_xuhuang:'SP徐晃',
|
||||
yj_ganning:'SP甘宁',
|
||||
yj_zhanghe:'☆张郃',
|
||||
yj_zhangliao:'☆张辽',
|
||||
yj_xuhuang:'☆徐晃',
|
||||
yj_ganning:'☆甘宁',
|
||||
xhzhiyan:'治严',
|
||||
xhzhiyan_info:'出牌阶段,若你的手牌数不等于体力上限,则你可以将手牌摸至/弃至手牌上限,然后本回合不能对其他角色使用牌/可以将弃置的一张牌交给一名其他角色。',
|
||||
zhilve:'知略',
|
||||
zhilve_info:'锁定技,准备阶段,你选择一项:1.移动场上装备区的一张牌并失去1点体力。2.移动场上判定区的一张牌并令本回合手牌上限-1。3.本回合摸牌阶段多摸一张牌且使用的第一张【杀】无距离限制且不计入次数限制。',
|
||||
xinzhilve:'知略',
|
||||
xinzhilve_backup:'知略',
|
||||
xinzhilve_mark:'知略',
|
||||
xinzhilve_info:'出牌阶段限一次,你可以失去1点体力并选择一项:1.移动场上的一张牌;2.视为使用一张无距离限制且不计入次数限制的【杀】并摸一张牌。然后你本回合的手牌上限+1。',
|
||||
xinxhzhiyan:'治严',
|
||||
xinxhzhiyan_false:'治严',
|
||||
xinxhzhiyan_info:'出牌阶段每项各限一次,若你的手牌数:大于体力上限,则你可以将X张手牌交给一名其他角色;小于体力上限,则你可以摸X张牌且本阶段内不能再对其他角色使用牌。(X为你的手牌数与体力上限之差的绝对值)',
|
||||
weifeng:'威风',
|
||||
weifeng2:'威风',
|
||||
weifeng3:'威风',
|
||||
weifeng_info:'锁定技,当你于出牌阶段内使用第一张伤害性基本牌或普通锦囊牌后,你令此牌的一名没有“惧”的其他目标角色获得一枚名称为此牌牌名的“惧”。有“惧”的角色受到伤害时,其移去“惧”,然后若造成伤害的牌名称和“惧”:相同,此伤害+1;不同,你获得该角色的一张牌。准备阶段开始时或你死亡时,你移去场上的所有“惧”。',
|
||||
gnjinfan:'锦帆',
|
||||
gnjinfan3:'锦帆',
|
||||
gnjinfan4:'锦帆',
|
||||
gnjinfan6:'锦帆',
|
||||
gnjinfan7:'锦帆',
|
||||
gnjinfan4_backup:'锦帆',
|
||||
gnjinfan_info:'弃牌阶段开始时,你可将任意张手牌置于武将牌上,称为“铃”(每种花色的“铃”限一张)。当你需要使用或打出一张手牌时,你可以使用或打出一张“铃”。当有“铃”移动到处理区后,你从牌堆中获得与此次移动到第一张“铃”花色相同的一张牌。',
|
||||
gnsheque:'射却',
|
||||
gnsheque_info:'一名其他角色的准备阶段开始时,若其装备区内有牌,则你可以对其使用一张【杀】(无距离关系的限制且无视防具)。',
|
||||
}
|
||||
};
|
||||
});
|
||||
|
|
|
@ -5832,10 +5832,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
filter:function(event,player){
|
||||
return event.player.isAlive()&&event.player.getStat('damage')&&
|
||||
lib.filter.targetEnabled({name:'sha'},player,event.player)&&player.hasSha();
|
||||
lib.filter.targetEnabled({name:'sha'},player,event.player)&&(player.hasSha()||_status.connectMode&&player.countCards('h')>0);
|
||||
},
|
||||
content:function(){
|
||||
player.chooseToUse({name:'sha'},'诛害:是否对'+get.translation(trigger.player)+'使用一张杀?').set('logSkill','zhuhai').set('complexSelect',true).set('filterTarget',function(card,player,target){
|
||||
player.chooseToUse(function(card,player,event){
|
||||
if(get.name(card)!='sha') return false;
|
||||
return lib.filter.filterCard.apply(this,arguments);
|
||||
},'诛害:是否对'+get.translation(trigger.player)+'使用一张杀?').set('logSkill','zhuhai').set('complexSelect',true).set('filterTarget',function(card,player,target){
|
||||
if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false;
|
||||
return lib.filter.targetEnabled.apply(this,arguments);
|
||||
}).set('sourcex',trigger.player);
|
||||
|
|
|
@ -533,6 +533,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
spshicai:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
position:'he',
|
||||
filter:function(event,player){
|
||||
return !player.storage.spshicai2||!player.getCards('h').contains(player.storage.spshicai2);
|
||||
},
|
||||
|
@ -800,7 +801,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else event.finish();
|
||||
'step 2'
|
||||
if(player.countCards('h')&&game.hasPlayer(function(current){
|
||||
return current!=target&&player.inRange(target);
|
||||
return current!=target&&player.inRange(current);
|
||||
})){
|
||||
player.chooseCardTarget({
|
||||
position:'h',
|
||||
|
@ -8594,6 +8595,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhanyi:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
audio:2,
|
||||
filterCard:true,
|
||||
position:'he',
|
||||
check:function(card){
|
||||
|
@ -10427,6 +10429,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
zhenwei2:{
|
||||
mark:true,
|
||||
audio:false,
|
||||
intro:{
|
||||
content:'cards',
|
||||
onunmark:function(storage,player){
|
||||
|
@ -13598,7 +13601,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
else{
|
||||
player.draw(2);
|
||||
player.storage.liangzhu=player;
|
||||
if(!player.storage.liangzhu) player.storage.liangzhu=[];
|
||||
player.storage.liangzhu.add(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17888,7 +17892,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
"zhenyi_club":{
|
||||
log:false,
|
||||
audio:'xinfu_zhenyi',
|
||||
enable:"chooseToUse",
|
||||
filter:function (event,player){
|
||||
if(!player.isDying()) return false;
|
||||
|
@ -17917,6 +17921,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{
|
||||
source:"damageBegin1",
|
||||
},
|
||||
audio:'xinfu_zhenyi',
|
||||
filter:function (event,player){
|
||||
return player.hasMark('xinfu_falu_heart');
|
||||
},
|
||||
|
|
|
@ -649,6 +649,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
});
|
||||
next.set('complexSelect',true);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('xinfu_fangtong');
|
||||
|
|
|
@ -5745,6 +5745,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
onremove:true,
|
||||
},
|
||||
zhongyong:{
|
||||
audio:2,
|
||||
trigger:{player:'shaMiss'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
|
@ -5863,6 +5864,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
longyin:{
|
||||
audio:2,
|
||||
shaRelated:true,
|
||||
trigger:{global:'useCard'},
|
||||
direct:true,
|
||||
|
@ -5876,6 +5878,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(get.color(trigger.card)=='red'){
|
||||
go=true;
|
||||
}
|
||||
else if(trigger.addCount===false) go=false;
|
||||
else if(!trigger.player.hasSkill('paoxiao')&&
|
||||
!trigger.player.hasSkill('tanlin3')&&
|
||||
!trigger.player.hasSkill('zhaxiang2')&&
|
||||
|
@ -5917,7 +5920,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
next.set('go',go);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
if(trigger.addCount!==false){
|
||||
trigger.addCount=false;
|
||||
trigger.player.getStat().card.sha--;
|
||||
}
|
||||
if(get.color(trigger.card)=='red'){
|
||||
player.draw();
|
||||
}
|
||||
|
@ -10301,7 +10307,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{player:'phaseDrawBegin2'},
|
||||
check:function(event,player){
|
||||
return player.countCards('h')<=player.maxHp||player.skipList.contains('phaseUse');
|
||||
return player.countCards('h')<=(player.hasSkill('zongshi')?player.maxHp:(player.hp-2))||player.skipList.contains('phaseUse');
|
||||
},
|
||||
filter:function(event,player){
|
||||
return !event.numFixed;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
window.noname_asset_list=[
|
||||
'v1.9.100.5',
|
||||
'v1.9.100.6',
|
||||
'audio/background/aozhan_chaoming.mp3',
|
||||
'audio/background/aozhan_online.mp3',
|
||||
'audio/background/aozhan_rewrite.mp3',
|
||||
|
@ -3166,6 +3166,12 @@ window.noname_asset_list=[
|
|||
'image/character/key_kud.jpg',
|
||||
'image/character/key_misuzu.jpg',
|
||||
'image/character/key_nao.jpg',
|
||||
'image/character/ns_caoshuang.jpg',
|
||||
'image/character/ns_huangchengyan.jpg',
|
||||
'image/character/ns_sunchensunjun.jpg',
|
||||
'image/character/ns_yuanxi.jpg',
|
||||
'image/character/yj_ganning.jpg',
|
||||
'image/character/yj_zhangliao.jpg',
|
||||
|
||||
'image/character/baiwuchang.jpg',
|
||||
'image/character/baosanniang.jpg',
|
||||
|
|
15
game/game.js
15
game/game.js
|
@ -13437,7 +13437,7 @@
|
|||
if(current!=target&&get.attitude(player,current)>0){
|
||||
var es=target.getCards('e');
|
||||
for(var i=0;i<es.length;i++){
|
||||
if(get.value(es[i],target)>0&¤t.isEmpty(get.subtype(es[i]))&&get.value(es[i],current)>0) return true;
|
||||
if(get.value(es[i],target)>0&¤t.isEmpty(get.subtype(es[i]))&&get.effect(current,es[i],player,current)>0) return true;
|
||||
}
|
||||
}
|
||||
})){
|
||||
|
@ -13452,7 +13452,7 @@
|
|||
for(i=0;i<es.length;i++){
|
||||
if(sgnatt!=0&&att2!=0&&
|
||||
get.sgn(get.value(es[i],ui.selected.targets[0]))==-att2&&
|
||||
get.sgn(get.value(es[i],target))==sgnatt&&
|
||||
get.sgn(get.effect(target,es[i],player,target))==sgnatt&&
|
||||
target.isEmpty(get.subtype(es[i]))){
|
||||
return Math.abs(att);
|
||||
}
|
||||
|
@ -13488,12 +13488,12 @@
|
|||
var targets1=_status.event.targets1;
|
||||
if(get.attitude(player,targets0)>0&&get.attitude(player,targets1)<0){
|
||||
if(get.position(button.link)=='j') return 12;
|
||||
if(get.value(button.link,targets0)<0) return 10;
|
||||
if(get.value(button.link,targets0)<0&&get.effect(targets1,button.link,player,targets1)>0) return 10;
|
||||
return 0;
|
||||
}
|
||||
else{
|
||||
if(get.position(button.link)=='j') return -10;
|
||||
return get.equipValue(button.link);
|
||||
return get.equipValue(button.link)*get.effect(targets1,button.link,player,targets1);
|
||||
}
|
||||
},targets[0]).set('nojudge',event.nojudge||false).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){
|
||||
var targets1=_status.event.targets1;
|
||||
|
@ -18132,7 +18132,7 @@
|
|||
if(withatt){
|
||||
if(get.sgn(get.value(es[i],current))!=-att) return false;
|
||||
var att2=get.sgn(get.attitude(player,current2));
|
||||
if(att2!=get.sgn(get.value(es[i],current2))) return false;
|
||||
if(att2!=get.sgn(get.effect(current2,es[i],player,current2))) return false;
|
||||
}
|
||||
return current!=current2&&!current2.isMin()&¤t2.isEmpty(get.subtype(es[i]));
|
||||
})){
|
||||
|
@ -32446,7 +32446,7 @@
|
|||
var skills=arguments[arguments.length-1];
|
||||
if(skills.getSkills){
|
||||
if(name!='cardname') skills=skills.getSkills();
|
||||
else skills=skills.getSkills(true,false);
|
||||
else skills=skills.getSkills(null,false);
|
||||
}
|
||||
skills=skills.concat(lib.skill.global);
|
||||
game.expandSkills(skills);
|
||||
|
@ -40286,7 +40286,8 @@
|
|||
}
|
||||
}
|
||||
else if(text2.value.indexOf('无天使')!=-1&&(text2.value.indexOf('无神佛')!=-1||text2.value.indexOf('无神')!=-1&&text2.value.indexOf('无佛')!=-1)){
|
||||
game.print('Welcome to Shinda Sekai Sensen!');
|
||||
game.print('密码正确!欢迎来到死后世界战线!');
|
||||
_status.keyVerified=true;
|
||||
text2.value='';
|
||||
}
|
||||
else{
|
||||
|
|
|
@ -1,56 +1,58 @@
|
|||
window.noname_update={
|
||||
version:'1.9.100.5',
|
||||
update:'1.9.100.4.2',
|
||||
version:'1.9.100.6',
|
||||
update:'1.9.100.5',
|
||||
changeLog:[
|
||||
'武将技能设计征集比赛2020(Key组)',
|
||||
'武将技能设计征集比赛2020(三国组)',
|
||||
'星张辽,星甘宁,星徐晃,星张郃',
|
||||
'两军对垒(乱斗)',
|
||||
'bug修复',
|
||||
|
||||
],
|
||||
files:[
|
||||
//'card/extra.js',
|
||||
'card/extra.js',
|
||||
//'card/huanlekapai.js',
|
||||
//'card/sp.js',
|
||||
//'card/standard.js',
|
||||
'card/standard.js',
|
||||
//'card/swd.js',
|
||||
//'card/mtg.js',
|
||||
//'card/gujian.js',
|
||||
'card/guozhan.js',
|
||||
//'card/guozhan.js',
|
||||
//'card/gwent.js',
|
||||
//'card/yunchou.js',
|
||||
'card/yunchou.js',
|
||||
//'card/zhenfa.js',
|
||||
//'card/zhulu.js',
|
||||
'character/diy.js',
|
||||
//'character/extra.js',
|
||||
'character/extra.js',
|
||||
//'character/hearth.js',
|
||||
//'character/gujian.js',
|
||||
//'character/gwent.js',
|
||||
//'character/hearth.js',
|
||||
//'character/mobile.js',
|
||||
'character/mobile.js',
|
||||
//'character/mtg.js',
|
||||
//'character/old.js',
|
||||
'character/refresh.js',
|
||||
'character/shenhua.js',
|
||||
//'character/shenhua.js',
|
||||
'character/sp.js',
|
||||
//'character/tw.js',
|
||||
//'character/standard.js',
|
||||
//'character/swd.js',
|
||||
//'character/xianjian.js',
|
||||
//'character/xinghuoliaoyuan.js',
|
||||
'character/xinghuoliaoyuan.js',
|
||||
'character/yijiang.js',
|
||||
//'character/yxs.js',
|
||||
//'extension/boss/extension.js',
|
||||
//'layout/default/layout.css',
|
||||
//'layout/nova/layout.css',
|
||||
'mode/identity.js',
|
||||
//'mode/identity.js',
|
||||
//'mode/doudizhu.js',
|
||||
//'mode/guozhan.js',
|
||||
//'mode/chess.js',
|
||||
//'mode/tafang.js',
|
||||
//'mode/single.js',
|
||||
//'mode/stone.js',
|
||||
//'mode/brawl.js',
|
||||
'mode/brawl.js',
|
||||
//'mode/versus.js',
|
||||
'mode/boss.js',
|
||||
//'mode/boss.js',
|
||||
'game/game.js',
|
||||
//'game/NoSleep.js',
|
||||
//'game/config.js',
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 172 KiB |
Binary file not shown.
After Width: | Height: | Size: 161 KiB |
Binary file not shown.
After Width: | Height: | Size: 184 KiB |
Binary file not shown.
After Width: | Height: | Size: 202 KiB |
Binary file not shown.
After Width: | Height: | Size: 239 KiB |
Binary file not shown.
After Width: | Height: | Size: 226 KiB |
330
mode/brawl.js
330
mode/brawl.js
|
@ -1872,7 +1872,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
['sunquan','zhangzhang','zhouyu'],
|
||||
['re_yuanshao','guotufengji','yj_jushou']
|
||||
];
|
||||
if(_status.forceKey) list.push(['key_yuri','key_yuzuru','sp_key_kanade'])
|
||||
if(_status.keyVerified) list.push(['key_yuri','key_yuzuru','sp_key_kanade'])
|
||||
list.randomSort();
|
||||
var list2=[];
|
||||
for(var i=0;i<list.length;i++){
|
||||
|
@ -1941,7 +1941,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
if(group&&map[group]) map[group].push(i);
|
||||
}
|
||||
for(var i in map){
|
||||
if(map[i].length<8||(i=='key'&&!_status.forceKey)){
|
||||
if(map[i].length<8||(i=='key'&&!_status.keyVerified)){
|
||||
delete map[i];
|
||||
}
|
||||
else{
|
||||
|
@ -2436,6 +2436,332 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
},
|
||||
liangjunduilei:{
|
||||
name:'两军对垒',
|
||||
mode:'versus',
|
||||
submode:'2v2',
|
||||
showcase:function(init){
|
||||
var node=this;
|
||||
var player1,player2;
|
||||
var list=[
|
||||
['re_sp_zhugeliang','yujin_yujin','re_zhangliao','re_lusu'],
|
||||
['re_huangzhong','re_xiahouyuan','zhanghe','xin_fazheng'],
|
||||
['re_caocao','xin_yuanshao','guotufengji','re_guojia'],
|
||||
['chunyuqiong','sp_xuyou','re_xuhuang','gaolan'],
|
||||
['re_sp_zhugeliang','re_zhangzhang','guyong','re_lusu'],
|
||||
['yj_jushou','re_caocao','jsp_guanyu','re_yanwen'],
|
||||
['re_lingtong','re_lidian','re_zhangliao','re_ganning'],
|
||||
['re_guanyu','caoren','re_lvmeng','guanping'],
|
||||
].randomGet();
|
||||
if(_status.keyVerified){
|
||||
list=[
|
||||
['caozhen','key_hisako','key_iwasawa','sp_key_kanade'],
|
||||
].randomGet();
|
||||
}
|
||||
if(init){
|
||||
player1=ui.create.player(null,true).init(list[0]);
|
||||
player2=ui.create.player(null,true).init(list[1]);
|
||||
player1.node.marks.remove();
|
||||
player1.node.hp.remove();
|
||||
player2.node.marks.remove();
|
||||
player2.node.hp.remove();
|
||||
player1.style.left='20px';
|
||||
player1.style.top='20px';
|
||||
player1.style.transform='scale(0.9)';
|
||||
player1.node.count.remove();
|
||||
player2.style.left='auto';
|
||||
player2.style.right='20px';
|
||||
player2.style.top='20px';
|
||||
player2.style.transform='scale(0.9)';
|
||||
player2.node.count.remove();
|
||||
this.appendChild(player1);
|
||||
this.appendChild(player2);
|
||||
this.player1=player1;
|
||||
this.player2=player2;
|
||||
}
|
||||
else{
|
||||
player1=this.player1;
|
||||
player2=this.player2;
|
||||
}
|
||||
var player3,player4;
|
||||
if(init){
|
||||
player3=ui.create.player(null,true).init(list[3]);
|
||||
player4=ui.create.player(null,true).init(list[2]);
|
||||
player3.node.marks.remove();
|
||||
player3.node.hp.remove();
|
||||
player4.node.marks.remove();
|
||||
player4.node.hp.remove();
|
||||
player3.style.left='60px';
|
||||
player3.style.top='120px';
|
||||
player3.style.transform='scale(0.9)';
|
||||
player3.node.count.remove();
|
||||
player4.style.left='auto';
|
||||
player4.style.right='60px';
|
||||
player4.style.top='120px';
|
||||
player4.style.transform='scale(0.9)';
|
||||
player4.node.count.remove();
|
||||
this.appendChild(player3);
|
||||
this.appendChild(player4);
|
||||
this.player3=player3;
|
||||
this.player4=player4;
|
||||
}
|
||||
else{
|
||||
player3=this.player3;
|
||||
player4=this.player4;
|
||||
}
|
||||
},
|
||||
intro:['双方使用特定的武将,搭配特定的技能,还原特定的经典场景'],
|
||||
content:{
|
||||
submode:'two',
|
||||
chooseCharacterBefore:function(){
|
||||
var list=[
|
||||
{
|
||||
name:'草船借箭',
|
||||
place:[true,false,false,true],
|
||||
character:['re_sp_zhugeliang','yujin_yujin','re_zhangliao','re_lusu'],
|
||||
lib:{
|
||||
character:{
|
||||
re_sp_zhugeliang:['male','shu',3,['tiaoxin','bazhen','feiying'],[]],
|
||||
yujin_yujin:['male','wei',4,['jiangchi','danshou'],[]],
|
||||
re_zhangliao:['male','wei',4,['benxi','tuifeng','qingxi'],[]],
|
||||
re_lusu:['male','wu',3,['kaikang','shenxian'],[]],
|
||||
},
|
||||
translate:{
|
||||
re_sp_zhugeliang:'诸葛卧龙',
|
||||
yujin_yujin:'于文则',
|
||||
re_zhangliao:'张文远',
|
||||
re_lusu:'鲁子敬',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name:'定军山之战',
|
||||
place:[true,false,false,true],
|
||||
character:['re_huangzhong','re_xiahouyuan','zhanghe','xin_fazheng'],
|
||||
lib:{
|
||||
character:{
|
||||
re_huangzhong:['male','shu',4,['yingjian','weikui','gzyinghun'],[]],
|
||||
re_xiahouyuan:['male','wei',4,['benxi','yaowu','dujin','juesi'],[]],
|
||||
zhanghe:['male','wei',4,['kaikang','xingshang','zhiheng'],[]],
|
||||
xin_fazheng:['male','shu',4,['zhanji','nzry_chenglve','yiji'],[]],
|
||||
},
|
||||
translate:{
|
||||
re_huangzhong:'定军黄忠',
|
||||
re_xiahouyuan:'定军妙才',
|
||||
zhanghe:'定军张郃',
|
||||
xin_fazheng:'定军法正',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name:'官渡追击战',
|
||||
place:[false,true,true,false],
|
||||
character:['re_caocao','xin_yuanshao','guotufengji','re_guojia'],
|
||||
lib:{
|
||||
character:{
|
||||
re_caocao:['male','wei',4,['fankui','zhuiji','duanbing'],[]],
|
||||
xin_yuanshao:['male','qun','3/6',['reluanji','kuanggu','benghuai','weizhong'],[]],
|
||||
guotufengji:['male','qun',2,['sijian','jigong','shifei','jianying'],[]],
|
||||
re_guojia:['male','wei',3,['yiji','sanyao','gongxin'],[]],
|
||||
},
|
||||
translate:{
|
||||
re_caocao:'官渡曹操',
|
||||
xin_yuanshao:'官渡袁绍',
|
||||
guotufengji:'袁军智囊',
|
||||
re_guojia:'官渡郭嘉',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name:'奇袭乌巢',
|
||||
place:[true,false,false,true],
|
||||
character:['chunyuqiong','sp_xuyou','re_xuhuang','gaolan'],
|
||||
lib:{
|
||||
character:{
|
||||
chunyuqiong:['male','qun',8,['ranshang','duliang','jiuchi'],[]],
|
||||
sp_xuyou:['male','qun',3,['qice','lianying','nzry_jianxiang'],[]],
|
||||
re_xuhuang:['male','wei',4,['shenduan','xiaoguo','nzry_juzhan'],[]],
|
||||
gaolan:['male','qun',4,['yuanhu','shensu','benyu','suishi'],[]],
|
||||
},
|
||||
translate:{
|
||||
chunyuqiong:'乌巢淳于琼',
|
||||
sp_xuyou:'乌巢许攸',
|
||||
re_xuhuang:'乌巢徐晃',
|
||||
gaolan:'乌巢高览',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name:'舌战群儒',
|
||||
place:[false,true,false,true],
|
||||
character:['re_zhangzhang','re_sp_zhugeliang','guyong','re_lusu'],
|
||||
lib:{
|
||||
character:{
|
||||
re_sp_zhugeliang:['male','shu',3,['tianbian','jyzongshi','xinfu_guolun'],[]],
|
||||
re_zhangzhang:['male','wu',3,['zhuandui','tiaoxin','guzheng'],[]],
|
||||
guyong:['male','wu',3,['qiaoshui','qicai','bingyi'],[]],
|
||||
re_lusu:['male','wu',3,['qingzhongx','shuimeng'],[]],
|
||||
},
|
||||
translate:{
|
||||
re_sp_zhugeliang:'诸葛卧龙',
|
||||
re_zhangzhang:'张子布',
|
||||
guyong:'顾元叹',
|
||||
re_lusu:'鲁子敬',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name:'武圣战双雄',
|
||||
place:[true,false,false,true],
|
||||
character:['yj_jushou','re_caocao','jsp_guanyu','re_yanwen'],
|
||||
lib:{
|
||||
character:{
|
||||
yj_jushou:['male','qun',3,['mingce','jianyan','shibei'],[]],
|
||||
re_caocao:['male','wei',4,['miji','beige','feiying'],[]],
|
||||
jsp_guanyu:['male','wei',4,['nuzhan','jianchu','new_rewusheng'],[]],
|
||||
re_yanwen:['male','qun',4,['shuangxiong','zhanyi','zhichi'],[]],
|
||||
},
|
||||
translate:{
|
||||
yj_jushou:'白马沮授',
|
||||
re_caocao:'白马曹操',
|
||||
jsp_guanyu:'武圣关羽',
|
||||
re_yanwen:'颜文双雄',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name:'合肥之战',
|
||||
place:[true,false,false,true],
|
||||
character:['re_lingtong','re_lidian','re_zhangliao','re_ganning'],
|
||||
lib:{
|
||||
character:{
|
||||
re_lingtong:['male','wu',4,['xuanfeng','zishou','tiaoxin'],[]],
|
||||
re_lidian:['male','wei',3,['weijing','wangxi','zhuandui'],[]],
|
||||
re_zhangliao:['male','wei',3,['retuxi','mashu','reyingzi','xinpojun'],[]],
|
||||
re_ganning:['male','wu',5,['lizhan','jiang','zhenwei'],[]],
|
||||
},
|
||||
translate:{
|
||||
re_lingtong:'合肥凌统',
|
||||
re_lidian:'合肥李典',
|
||||
re_zhangliao:'合肥张辽',
|
||||
re_ganning:'合肥甘宁',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name:'荆州之战',
|
||||
place:[true,false,false,true],
|
||||
character:['re_guanyu','caoren','re_lvmeng','guanping'],
|
||||
lib:{
|
||||
character:{
|
||||
re_guanyu:['male','shu',5,['wusheng','zishou','zhongyong'],[]],
|
||||
caoren:['male','wei',1,['xinjiewei','qiuyuan','gzbuqu','xinjushou'],[]],
|
||||
re_lvmeng:['male','wu',4,['gongxin','duodao','dujin','huituo'],[]],
|
||||
guanping:['male','shu',5,['longyin','suishi'],[]],
|
||||
},
|
||||
translate:{
|
||||
re_guanyu:'荆州关羽',
|
||||
caoren:'樊城曹仁',
|
||||
re_lvmeng:'江东吕蒙',
|
||||
guanping:'荆州关平',
|
||||
},
|
||||
},
|
||||
},
|
||||
];
|
||||
if(_status.keyVerified) list=[
|
||||
{
|
||||
name:'My Song',
|
||||
place:[false,true,true,false],
|
||||
character:['caozhen','key_hisako','key_iwasawa','sp_key_kanade'],
|
||||
lib:{
|
||||
character:{
|
||||
caozhen:['male','wei',4,['xinsidi','tuxi']],
|
||||
key_hisako:['female','key','2/3',['hisako_yinbao','shenzhi','shiorimiyuki_banyin','hisako_zhuanyun'],[]],
|
||||
key_iwasawa:['female','key','-999/3',['iwasawa_yinhang','iwasawa_mysong','hisako_zhuanyun']],
|
||||
sp_key_kanade:['female','key',3,['xinwuyan','xinbenxi']],
|
||||
},
|
||||
translate:{
|
||||
caozhen:'突袭教师',
|
||||
key_hisako:'绝望恶魔',
|
||||
key_iwasawa:'引吭孤鸦',
|
||||
sp_key_kanade:'学生会长',
|
||||
},
|
||||
},
|
||||
},
|
||||
]
|
||||
game.liangjunduilei=list;
|
||||
game.chooseCharacterTwo=function(){
|
||||
var next=game.createEvent('chooseCharacter',false);
|
||||
next.setContent(function(){
|
||||
'step 0'
|
||||
for(var i in lib.skill){
|
||||
if(lib.skill[i].audio&&!lib.skill[i].equipSkill) lib.skill[i].audio=false;
|
||||
if(lib.skill[i].changeSeat){
|
||||
lib.skill[i]={};
|
||||
if(lib.translate[i+'_info']){
|
||||
lib.translate[i+'_info']='此模式下不可用';
|
||||
}
|
||||
}
|
||||
}
|
||||
ui.arena.classList.add('choose-character');
|
||||
var list=game.liangjunduilei;
|
||||
var id=lib.status.videoId++;
|
||||
var choiceList=ui.create.dialog('请选择要游玩的剧情','forcebutton');
|
||||
choiceList.videoId=id;
|
||||
for(var i=0;i<list.length;i++){
|
||||
var str='<div class="popup text center" style="width:calc(100% - 10px);display:inline-block">';
|
||||
str+=list[i].name;
|
||||
str+='</div>';
|
||||
var next=choiceList.add(str);
|
||||
next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
|
||||
next.firstChild.link=i;
|
||||
for(var j in lib.element.button){
|
||||
next[j]=lib.element.button[i];
|
||||
}
|
||||
choiceList.buttons.add(next.firstChild);
|
||||
}
|
||||
game.me.chooseButton(true).set('dialog',id).set('onfree',true);
|
||||
'step 1'
|
||||
var pack=game.liangjunduilei[result.links[0]];
|
||||
game.versusVideoName=pack.name;
|
||||
if(get.is.phoneLayout()){
|
||||
ui.duileiInfo=ui.create.div('.touchinfo.left',ui.window);
|
||||
}
|
||||
else{
|
||||
ui.duileiInfo=ui.create.div(ui.gameinfo);
|
||||
}
|
||||
ui.duileiInfo.innerHTML='当前剧情:'+pack.name;
|
||||
for(var i in pack.lib){
|
||||
for(var j in pack.lib[i]){
|
||||
lib[i][j]=pack.lib[i][j];
|
||||
}
|
||||
}
|
||||
var player=game.players.randomGet();
|
||||
_status.firstAct=player;
|
||||
for(var i=0;i<4;i++){
|
||||
player.init(pack.character[i]);
|
||||
player.side=pack.place[i];
|
||||
player=player.next;
|
||||
}
|
||||
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
if(game.players[i].side==game.me.side){
|
||||
game.players[i].node.identity.firstChild.innerHTML='友';
|
||||
}
|
||||
else{
|
||||
game.players[i].node.identity.firstChild.innerHTML='敌';
|
||||
}
|
||||
game.players[i].node.identity.dataset.color=game.players[i].side+'zhu';
|
||||
}
|
||||
game.addVideo('arrangeLib',null,pack.lib);
|
||||
setTimeout(function(){
|
||||
ui.arena.classList.remove('choose-character');
|
||||
},500);
|
||||
});
|
||||
};
|
||||
}
|
||||
}
|
||||
},
|
||||
scene:{
|
||||
name:'创建场景',
|
||||
content:{
|
||||
|
|
Loading…
Reference in New Issue