就他妈你叫夏侯惇啊

This commit is contained in:
Spmario233 2020-11-20 14:06:26 +08:00
parent 48fb28ec84
commit 03aecb4927
31 changed files with 741 additions and 628 deletions

BIN
audio/die/caoxing.mp3 Normal file

Binary file not shown.

BIN
audio/skill/cxliushi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/cxliushi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhanwan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhanwan2.mp3 Normal file

Binary file not shown.

View File

@ -6437,7 +6437,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
evt.after.push(next); evt.after.push(next);
next.player=player; next.player=player;
next.setContent(function(){ next.setContent(function(){
player.storage.junktaoluan=[]; //player.storage.junktaoluan=[];
player.storage.junktaoluan2=[]; player.storage.junktaoluan2=[];
}); });
} }
@ -6536,7 +6536,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
evt.junktaoluan=true; evt.junktaoluan=true;
next.player=player; next.player=player;
next.setContent(function(){ next.setContent(function(){
player.storage.junktaoluan=[]; //player.storage.junktaoluan=[];
player.storage.junktaoluan2=[]; player.storage.junktaoluan2=[];
}); });
} }
@ -6593,7 +6593,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
evt.after.push(next); evt.after.push(next);
next.player=player; next.player=player;
next.setContent(function(){ next.setContent(function(){
player.storage.junktaoluan=[]; //player.storage.junktaoluan=[];
player.storage.junktaoluan2=[]; player.storage.junktaoluan2=[];
}); });
} }

View File

@ -849,7 +849,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(player.countCards('h',function(card){ if(player.countCards('h',function(card){
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2; if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardSavable',player); var mod=game.checkMod(card,player,event.player,'unchanged','cardSavable',player);
if(mod!='unchanged') return mod; if(mod!='unchanged') return mod;
var savable=get.info(card).savable; var savable=get.info(card).savable;
if(typeof savable=='function') savable=savable(card,player,event.player); if(typeof savable=='function') savable=savable(card,player,event.player);
@ -2412,7 +2412,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(player.countCards('h',function(card){ if(player.countCards('h',function(card){
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2; if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardSavable',player); var mod=game.checkMod(card,player,event.player,'unchanged','cardSavable',player);
if(mod!='unchanged') return mod; if(mod!='unchanged') return mod;
var savable=get.info(card).savable; var savable=get.info(card).savable;
if(typeof savable=='function') savable=savable(card,player,event.player); if(typeof savable=='function') savable=savable(card,player,event.player);
@ -4325,70 +4325,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"pcaudio_xuanjian_card":{ "pcaudio_xuanjian_card":{
audio:true, audio:true,
}, },
"yizan_respond_sha":{
audio:2,
enable:["chooseToRespond"],
filterCard:function(card,player,target){
if(player.storage.yizan) return get.type(card)=='basic';
else if(ui.selected.cards.length){
if(get.type(ui.selected.cards[0])=='basic') return true;
return get.type(card)=='basic';
}
return true;
},
selectCard:function(){
var player=_status.event.player;
if(player.storage.yizan) return 1;
return 2;
},
position:"he",
viewAs:{
name:"sha",
},
complexCard:true,
viewAsFilter:function(player){
if(!player.storage.yizan){
if(player.countCards('h')<2) return false;
}
return player.hasCard(function(card){
return get.type(card)=='basic';
},'h');
},
prompt:function(){
var player=_status.event.player;
var str=!player.storage.yizan?'两张牌(其中至少应有一张基本牌)':'一张基本牌';
return '将'+str+'当做杀打出';
},
check:function(card){
if(!ui.selected.cards.length&&get.type(card)=='basic') return 6;
return 5-get.value(card);
},
ai:{
skillTagFilter:function(player){
if(!player.storage.yizan){
if(player.countCards('he')<2) return false;
}
return player.hasCard(function(card){
return get.type(card)=='basic';
},'h');
},
respondSha:true,
},
},
"yizan_use":{ "yizan_use":{
init:function(player){
if(!player.storage.yizan_use) player.storage.yizan_use=0;
if(!player.storage.yizan) player.storage.yizan=false;
},
mark:true,
intro:{ intro:{
content:"已发动过#次", content:"已发动过#次",
}, },
group:["yizan_respond_sha","yizan_respond_shan","yizan_count"], enable:["chooseToUse","chooseToRespond"],
enable:"chooseToUse",
filter:function(event,player){ filter:function(event,player){
if(!player.storage.yizan&&player.countCards('he')<2) return false; if(!player.storage.yizan&&player.countCards('he')<2) return false;
if(event.filterCard({name:'sha'},player,event)|| if(event.filterCard({name:'sha'},player,event)||
event.filterCard({name:'shan'},player,event)||
event.filterCard({name:'jiu'},player,event)|| event.filterCard({name:'jiu'},player,event)||
event.filterCard({name:'tao'},player,event)){ event.filterCard({name:'tao'},player,event)){
return player.hasCard(function(card){ return player.hasCard(function(card){
@ -4405,6 +4350,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
list.push(['基本','','sha','fire']); list.push(['基本','','sha','fire']);
list.push(['基本','','sha','thunder']); list.push(['基本','','sha','thunder']);
} }
if(event.filterCard({name:'shan'},player,event)){
list.push(['基本','','shan']);
}
if(event.filterCard({name:'tao'},player,event)){ if(event.filterCard({name:'tao'},player,event)){
list.push(['基本','','tao']); list.push(['基本','','tao']);
} }
@ -4416,11 +4364,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
check:function(button){ check:function(button){
var player=_status.event.player; var player=_status.event.player;
var card={name:button.link[2],nature:button.link[3]}; var card={name:button.link[2],nature:button.link[3]};
if(game.hasPlayer(function(current){ if(_status.event.getParent().type!='phase'||game.hasPlayer(function(current){
return player.canUse(card,current)&&get.effect(current,card,player,player)>0; return player.canUse(card,current)&&get.effect(current,card,player,player)>0;
})){ })){
switch(button.link[2]){ switch(button.link[2]){
case 'tao':return 5; case 'tao':case 'shan':return 5;
case 'jiu':{ case 'jiu':{
if(player.storage.yizan&&player.countCards('h',{type:'basic'})>2) return 3; if(player.storage.yizan&&player.countCards('h',{type:'basic'})>2) return 3;
}; };
@ -4434,6 +4382,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
backup:function(links,player){ backup:function(links,player){
return { return {
audio:'yizan_respond_shan',
filterCard:function(card,player,target){ filterCard:function(card,player,target){
if(player.storage.yizan) return get.type(card)=='basic'; if(player.storage.yizan) return get.type(card)=='basic';
else if(ui.selected.cards.length){ else if(ui.selected.cards.length){
@ -4456,13 +4405,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
position:'he', position:'he',
popname:true, popname:true,
precontent:function(){ precontent:function(){
player.logSkill('yizan_respond_shan'); player.addMark('yizan_use',1,false);
}, },
} }
}, },
prompt:function(links,player){ prompt:function(links,player){
var str=!player.storage.yizan?'两张牌(其中至少应有一张基本牌)':'一张基本牌'; var str=!player.storage.yizan?'两张牌(其中至少应有一张基本牌)':'一张基本牌';
return '将'+str+'当做'+get.translation(links[0][3]||'')+get.translation(links[0][2])+'使用'; return '将'+str+'当做'+get.translation(links[0][3]||'')+get.translation(links[0][2])+'使用或打出';
}, },
}, },
ai:{ ai:{
@ -4475,83 +4424,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return 3.1; return 3.1;
}, },
save:true, save:true,
respondSha:true,
skillTagFilter:function(player,tag,arg){ skillTagFilter:function(player,tag,arg){
if(!player.storage.yizan&&player.countCards('he')<2) return false; if(!player.storage.yizan&&player.countCards('he')<2) return false;
if(player.hasCard(function(card){ if(!player.hasCard(function(card){
return get.type(card)=='basic'; return get.type(card)=='basic';
},'he')){ },'he')){
if(tag=='respondSha'){
if(arg!='use') return false;
}
}
else{
return false; return false;
} }
}, },
result:{ result:{
player:1, player:1,
}, },
respondSha:true,
respondShan:true,
}, },
}, },
"yizan_respond_shan":{ "yizan_respond_shan":{
complexCard:true,
audio:2, audio:2,
enable:["chooseToUse","chooseToRespond"],
filterCard:function(card,player,target){
if(player.storage.yizan) return get.type(card)=='basic';
else if(ui.selected.cards.length){
if(get.type(ui.selected.cards[0])=='basic') return true;
return get.type(card)=='basic';
}
return true;
},
selectCard:function(){
var player=_status.event.player;
if(player.storage.yizan) return 1;
return 2;
},
position:"he",
viewAs:{
name:"shan",
},
viewAsFilter:function(player){
if(!player.storage.yizan){
if(player.countCards('he')<2) return false;
}
return player.hasCard(function(card){
return get.type(card)=='basic';
},'h');
},
prompt:function(){
var player=_status.event.player;
var str=!player.storage.yizan?'两张牌(其中至少应有一张基本牌)':'一张基本牌';
return '将'+str+'当做闪使用或打出';
},
check:function(card){
if(!ui.selected.cards.length&&get.type(card)=='basic') return 6;
return 5-get.value(card);
},
ai:{
respondShan:true,
skillTagFilter:function(player){
if(!player.storage.yizan){
if(player.countCards('he')<2) return false;
}
return player.hasCard(function(card){
return get.type(card)=='basic';
},'h');
},
effect:{
target:function(card,player,target,current){
if(get.tag(card,'respondShan')&&current<0) return 0.6
},
},
basic:{
useful:[7,2],
value:[7,2],
},
},
}, },
"xinfu_longyuan":{ "xinfu_longyuan":{
audio:2, audio:2,
@ -4564,32 +4453,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
skillAnimation:true, skillAnimation:true,
animationColor:'orange', animationColor:'orange',
filter:function(event,player){ filter:function(event,player){
if(player.storage.xinfu_longyuan) return false; return player.countMark('yizan_use')>=3;
return player.storage.yizan_use&&player.storage.yizan_use>2;
}, },
content:function(){ content:function(){
player.awakenSkill('xinfu_longyuan'); player.awakenSkill('xinfu_longyuan');
player.storage.yizan=true; player.storage.yizan=true;
game.delay(1);
}, },
derivation:'yizan_rewrite', derivation:'yizan_rewrite',
}, },
"yizan_count":{
forced:true,
silent:true,
popup:false,
trigger:{
player:["respond","useCard1"],
},
filter:function(event,player){
if(event.skill!='yizan_respond_sha'&&event.skill!='yizan_respond_shan'&&event.skill!='yizan_use_backup') return false;
return player.storage.yizan_use!=undefined;
},
content:function(){
player.storage.yizan_use++;
player.markSkill('yizan_use');
},
},
xinfu_jingxie:{audio:2}, xinfu_jingxie:{audio:2},
"xinfu_jingxie1":{ "xinfu_jingxie1":{
group:["xinfu_jingxie2"], group:["xinfu_jingxie2"],
@ -5977,6 +5848,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"yizan_respond_sha":"翊赞", "yizan_respond_sha":"翊赞",
"yizan_respond_sha_info":"", "yizan_respond_sha_info":"",
"yizan_use":"翊赞", "yizan_use":"翊赞",
yizan_use_backup:'翊赞',
"yizan_use_info":"你可以将两张牌(其中至少一张为基本牌)当做任意基本牌使用或打出。", "yizan_use_info":"你可以将两张牌(其中至少一张为基本牌)当做任意基本牌使用或打出。",
"yizan_respond_shan":"翊赞", "yizan_respond_shan":"翊赞",
"yizan_respond_shan_info":"", "yizan_respond_shan_info":"",

View File

@ -937,6 +937,7 @@ window.noname_character_rank={
'zhugedan', 'zhugedan',
'leitong', 'leitong',
'wulan', 'wulan',
'caoxing',
'diy_wenyang', 'diy_wenyang',
'ns_caoshuang', 'ns_caoshuang',
'ns_huangchengyan', 'ns_huangchengyan',

View File

@ -10,7 +10,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
refresh_lin:['re_zhurong','re_menghuo','ol_sunjian','re_caopi','re_xuhuang','ol_dongzhuo'], refresh_lin:['re_zhurong','re_menghuo','ol_sunjian','re_caopi','re_xuhuang','ol_dongzhuo'],
refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai'], refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai'],
refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_lingtong','re_masu','xin_xusheng','xin_fazheng'], refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_lingtong','re_masu','xin_xusheng','xin_fazheng'],
refresh_yijiang2:['old_madai','wangyi','guanzhang','re_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_liubiao','re_bulianshi'], refresh_yijiang2:['old_madai','wangyi','guanzhang','re_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_liubiao','re_bulianshi','xin_lingtong'],
refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','re_yufan','re_liru','re_manchong'], refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','re_yufan','re_liru','re_manchong'],
refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan'], refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan'],
refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu'], refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu'],
@ -18,6 +18,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
connect:true, connect:true,
character:{ character:{
xin_lingtong:['male','wu',4,['decadexuanfeng','yongjin'],['unseen']],
re_caoxiu:['male','wei',4,['qianju','reqingxi']], re_caoxiu:['male','wei',4,['qianju','reqingxi']],
re_sunxiu:['male','wu',3,['reyanzhu','rexingxue','zhaofu'],['zhu']], re_sunxiu:['male','wu',3,['reyanzhu','rexingxue','zhaofu'],['zhu']],
ol_dengai:['male','wei',4,['oltuntian','olzaoxian'],['unseen']], ol_dengai:['male','wei',4,['oltuntian','olzaoxian'],['unseen']],
@ -127,6 +128,267 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sunben:['zhouyu','taishici','daqiao'], sunben:['zhouyu','taishici','daqiao'],
}, },
skill:{ skill:{
yongjin:{
unique:true,
limited:true,
skillAnimation:true,
animationColor:'wood',
enable:'phaseUse',
filter:function(event,player,cards){
return game.hasPlayer(function(current){
var es=current.getCards('e',function(card){
return !cards||!cards.contains(card);
});
for(var i=0;i<es.length;i++){
if(game.hasPlayer(function(current2){
return current!=current2&&!current2.isMin()&&current2.isEmpty(get.subtype(es[i]));
})){
return true;
}
}
});
},
content:function(){
'step 0'
player.awakenSkill('yongjin');
event.count=3;
event.cards=[];
'step 1'
event.count--;
if(!lib.skill.yongjin.filter(null,player,cards)){
event.finish();
return;
};
var next=player.chooseTarget(2,function(card,player,target){
if(ui.selected.targets.length){
var from=ui.selected.targets[0];
if(target.isMin()) return false;
var es=from.getCards('e',function(card){
return !_status.event.cards.contains(card);
});
for(var i=0;i<es.length;i++){
if(target.isEmpty(get.subtype(es[i]))) return true;
}
return false;
}
else{
return target.countCards('e',function(card){
return !_status.event.cards.contains(card);
})>0;
}
});
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(target.countCards('e',function(card){
return get.value(card,target)<0&&!_status.event.cards.contains(card)&&game.hasPlayer(function(current){
return current!=target&&get.attitude(player,current)<0&&current.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',function(card){
return !_status.event.cards.contains(card);
});
for(var i=0;i<es.length;i++){
if(get.value(es[i],target)>0&&current.isEmpty(get.subtype(es[i]))&&get.effect(current,es[i],player,current)>0) return true;
}
}
})){
return -att;
}
}
return 0;
}
var es=ui.selected.targets[0].getCards('e',function(card){
return !_status.event.cards.contains(card);
});
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.effect(target,es[i],player,target))==sgnatt&&
target.isEmpty(get.subtype(es[i]))){
return Math.abs(att);
}
}
if(i==es.length){
return 0;
}
return -att*get.attitude(player,ui.selected.targets[0]);
});
next.set('multitarget',true);
next.set('cards',cards);
next.set('targetprompt',['被移走','移动目标']);
next.set('prompt','移动场上的一张装备牌');
'step 2'
if(result.bool){
player.line2(result.targets,'green');
event.targets=result.targets;
}
else{
event.finish();
}
'step 3'
game.delay();
'step 4'
if(targets.length==2){
player.choosePlayerCard('e',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.value(button.link,targets0)<0&&get.effect(targets1,button.link,player,targets1)>0) return 10;
return 0;
}
else{
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){
if(_status.event.cards.contains(button.link)) return false;
var targets1=_status.event.targets1;
return targets1.isEmpty(get.subtype(button.link));
}).set('cards',cards);
}
else{
event.finish();
}
'step 5'
if(result.bool&&result.links.length){
var link=result.links[0];
cards.add(link);
event.targets[1].equip(link);
event.targets[0].$give(link,event.targets[1])
game.delay();
}
else event.finish();
'step 6'
if(event.count>0) event.goto(1);
},
ai:{
order:7,
result:{
player:function(player){
var num=0;
var friends=game.filterPlayer(function(current){
return get.attitude(player,current)>=4;
});
var vacancies={
equip1:0,
equip2:0,
equip3:0,
equip4:0,
equip5:0
};
for(var i=0;i<friends.length;i++){
for(var j=1;j<=5;j++){
if(friends[i].isEmpty(j)){
vacancies['equip'+j]++;
}
}
}
var sources=game.filterPlayer(function(current){
return get.attitude(player,current)<0&&current.countCards('e');
});
for(var i=0;i<sources.length;i++){
var es=sources[i].getCards('e');
for(var j=0;j<es.length;j++){
var type=get.subtype(es[j]);
if(vacancies[type]&&get.value(es[j])>0){
num++;
if(num>=3){
return 1;
}
vacancies[type]--;
}
}
}
if(num&&player.hp==1){
return 0.5;
}
return 0;
}
}
}
},
decadexuanfeng:{
audio:'xuanfeng',
audioname:['boss_lvbu3','re_heqi'],
trigger:{
player:['loseAfter','phaseDiscardEnd'],
global:['equipAfter','addJudgeAfter','gainAfter'],
},
direct:true,
filter:function(event,player){
if(event.name=='phaseDiscard'){
var cards=[];
player.getHistory('lose',function(evt){
if(evt&&evt.getParent('phaseDiscard')==event&&evt.hs) cards.addArray(evt.hs);
});
return cards.length>1;
}
else{
var evt=event.getl(player);
return evt&&evt.es&&evt.es.length>0;
}
},
content:function(){
"step 0"
event.count=2;
event.targets=[];
event.logged=false;
"step 1"
event.count--;
player.chooseTarget(get.prompt('decadexuanfeng'),'弃置一名其他角色的一张牌',function(card,player,target){
if(player==target) return false;
return target.countDiscardableCards(player,'he');
}).set('ai',function(target){
return -get.attitude(_status.event.player,target);
});
"step 2"
if(result.bool){
if(!event.logged){
player.logSkill('xuanfeng',result.targets);
event.logged=true;
}
else player.line(result.targets[0],'green');
targets.add(result.targets[0]);
player.discardPlayerCard(result.targets[0],'he',true);
}
else if(!targets.length) event.finish();
"step 3"
if(event.count) event.goto(1);
else if(player==_status.currentPhase){
player.chooseTarget('是否对一名目标角色造成1点伤害',function(card,player,target){
return _status.event.targets.contains(target);
}).set('targets',targets).set('ai',function(target){
var player=_status.event.player;
return get.damageEffect(target,player,player);
});
}
else event.finish();
"step 4"
if(result.bool){
player.line(result.targets[0],'thunder');
result.targets[0].damage();
}
},
ai:{
effect:{
target:function(card,player,target,current){
if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3];
}
},
reverseEquip:true,
noe:true
}
},
oltuntian:{ oltuntian:{
inherit:'tuntian', inherit:'tuntian',
filter:function(event,player){ filter:function(event,player){
@ -8000,6 +8262,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
olzaoxian_info:'觉醒技准备阶段若你武将牌上【田】的数量达到3张或更多则你减1点体力上限并获得技能〖急袭〗。你于当前回合结束后进行一个额外的回合。', olzaoxian_info:'觉醒技准备阶段若你武将牌上【田】的数量达到3张或更多则你减1点体力上限并获得技能〖急袭〗。你于当前回合结束后进行一个额外的回合。',
re_sunxiu:'界孙休', re_sunxiu:'界孙休',
re_caoxiu:'界曹休', re_caoxiu:'界曹休',
xin_lingtong:'界凌统',
decadexuanfeng:'旋风',
decadexuanfeng_info:'当你于弃牌阶段弃置过至少两张牌或当你失去装备区里的牌后你可以弃置至多两名其他角色的共计两张牌。若此时是你的回合内你可以对其中一个目标造成1点伤害。',
yongjin:'勇进',
yongjin_info:'限定技,出牌阶段,你可以依次移动场上的至多三张不同的装备牌。',
refresh_standard:'界限突破·标', refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风', refresh_feng:'界限突破·风',

View File

@ -566,7 +566,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(event.num==3) prompt="罪论:请按顺将卡牌置于牌堆顶(先选择的在上)"; if(event.num==3) prompt="罪论:请按顺将卡牌置于牌堆顶(先选择的在上)";
else prompt="罪论:请按顺将"+get.cnNumber(event.num)+"张卡牌置于牌堆顶(先选择的在上),然后获得其余的牌。"; else prompt="罪论:请按顺将"+get.cnNumber(event.num)+"张卡牌置于牌堆顶(先选择的在上),然后获得其余的牌。";
player.chooseCardButton(event.num,true,event.cards,prompt).set('ai',function(button){ player.chooseCardButton(event.num,true,event.cards,prompt).set('ai',function(button){
return 100-get.value(button.link); var player=_status.event.player;
var next=player.getNext();
var att=get.attitude(player,next);
var card=button.link;
var judge=next.getCards('j')[ui.selected.buttons.length];
if(judge){
return get.judge(judge)(card)*att;
}
return next.getUseValue(card)*att;
}); });
} }
'step 2' 'step 2'

View File

@ -9096,7 +9096,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
for(var i=0;i<result.cards.length;i++){ for(var i=0;i<result.cards.length;i++){
suits.add(get.suit(result.cards[i])); suits.add(get.suit(result.cards[i]));
} }
if(suits.length==4&&game.checkMod({name:'tao',isCard:true},player,'unchanged','cardSavable',player)){ if(suits.length==4&&game.checkMod({name:'tao',isCard:true},player,trigger.player,'unchanged','cardSavable',player)){
event.target.useCard({name:'tao',isCard:true},trigger.player); event.target.useCard({name:'tao',isCard:true},trigger.player);
} }
} }
@ -12131,33 +12131,59 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
aocai:{ aocai:{
audio:2, audio:2,
trigger:{player:'chooseToRespondBegin'}, enable:['chooseToUse','chooseToRespond'],
frequent:true,
filter:function(event,player){ filter:function(event,player){
if(event.responded) return false; if(event.responded||player==_status.currentPhase||event.aocai) return false;
return _status.currentPhase!==player; for(var i of lib.inpile){
if(get.type(i)=='basic'&&event.filterCard({name:i},player,event)) return true;
}
return false;
}, },
delay:false,
content:function(){ content:function(){
"step 0" 'step 0'
var cards=[]; var evt=event.getParent(2);
if(ui.cardPile.childNodes.length<2){ evt.set('aocai',true);
var discardcards=get.cards(2); var cards=get.cards(player.countCards('h')==0?4:2);
game.cardsDiscard(discardcards); for(var i=cards.length-1;i>=0;i--){
ui.cardPile.insertBefore(cards[i].fix(),ui.cardPile.firstChild);
} }
for(var i=0;i<2;i++){ player.chooseButton(['傲才:选择要'+(evt.name=='chooseToUse'?'使用':'打出')+'的牌',cards]).set('filterButton',function(button){
if(ui.cardPile.childNodes.length>i) cards.push(ui.cardPile.childNodes[i]); return _status.event.cards.contains(button.link);
} }).set('cards',cards.filter(function(card){
player.chooseCardButton('傲才:选择一张卡牌打出',cards).set('filterButton',function(button){ return evt.filterCard(card,evt.player,evt)
return get.type(button.link)=='basic'&&_status.event.getTrigger().filterCard(button.link); })).set('ai',function(button){
}); var evt=_status.event.getParent(3);
"step 1" if(evt&&evt.ai){
if(result.bool){ var tmp=_status.event;
game.log(player,'傲才发动成功'); _status.event=evt;
trigger.untrigger(); var result=(evt.ai||event.ai1)(button.link,_status.event.player,evt);
trigger.responded=true; _status.event=tmp;
result.links[0].remove(); return result;
trigger.result={bool:true,card:result.links[0]} }
return 1;
});;
'step 1'
var evt=event.getParent(2);
if(result.bool&&result.links&&result.links.length){
if(evt.name=='chooseToUse'){
game.broadcastAll(function(result){
lib.skill.aocai_backup.viewAs={name:result.name,cards:[result],isCard:true};
lib.skill.aocai_backup.prompt='选择'+get.translation(result)+'的目标';
},result.links[0]);
evt.set('_backupevent','aocai_backup');
evt.backup('aocai_backup');
}
else{
delete evt.result.skill;
delete evt.result.used;
evt.result.card=get.autoViewAs(result.links[0]);
evt.result.cards=[result.links[0]];
evt.redo();
return;
}
} }
evt.goto(0);
}, },
ai:{ ai:{
effect:{ effect:{
@ -12165,55 +12191,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(get.tag(card,'respondShan')) return 0.7; if(get.tag(card,'respondShan')) return 0.7;
if(get.tag(card,'respondSha')) return 0.7; if(get.tag(card,'respondSha')) return 0.7;
} }
}
},
group:'aocai2',
},
aocai2:{
enable:'chooseToUse',
filter:function(event,player){
return _status.currentPhase!==player&&event.type!='wuxie'&&event.type!='trickuse';
},
onChooseToUse:function(event){
if(!game.online){
var cards=[];
if(ui.cardPile.childNodes.length<2){
var discardcards=get.cards(2);
game.cardsDiscard(discardcards);
}
for(var i=0;i<2;i++){
if(ui.cardPile.childNodes.length>i) cards.push(ui.cardPile.childNodes[i]);
}
event.set('aocaicards',cards);
}
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('傲才:选择一张卡牌使用',event.aocaicards);
}, },
filter:function(button,player){
var evt=_status.event.getParent();
if(evt&&evt.filterCard){
return get.type(button.link)=='basic'&&evt.filterCard(button.link,player,evt);
}
return false;
},
check:function(button){
return 1;
},
backup:function(links,player){
return {
audio:'aocai',
filterCard:function(){return false},
selectCard:-1,
viewAs:links[0],
}
},
prompt:function(links,player){
return '选择'+get.translation(links)+'的目标';
}
},
ai:{
order:11, order:11,
respondShan:true, respondShan:true,
respondSha:true, respondSha:true,
@ -12226,6 +12204,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
} }
}, },
aocai_backup:{
sourceSkill:'aocai',
precontent:function(){
delete event.result.skill;
event.result.cards=event.result.card.cards;
event.result.card=get.autoViewAs(event.result.cards[0])
},
filterCard:function(){return false},
selectCard:-1,
},
hongyuan:{ hongyuan:{
trigger:{player:'phaseDrawBegin2'}, trigger:{player:'phaseDrawBegin2'},
direct:true, direct:true,
@ -12408,11 +12396,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
threaten:0.7 threaten:0.7
} }
}, },
duwu:{ duwu:{
audio:2, audio:2,
enable:'phaseUse', enable:'phaseUse',
filter:function(event,player){ filter:function(event,player){
return player.hasSkill('duwu2')==false; return player.hasSkill('duwu2')==false&&game.hasPlayer(function(current){
return current.hp<=player.countCards('he')&&player.inRange(current);
});
}, },
filterCard:function(){ filterCard:function(){
if(ui.selected.targets.length) return false; if(ui.selected.targets.length) return false;
@ -12426,25 +12417,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return target!=player&&player.inRange(target)&&ui.selected.cards.length==target.hp; return target!=player&&player.inRange(target)&&ui.selected.cards.length==target.hp;
}, },
check:function(card){ check:function(card){
var player=_status.event.player;
if(game.hasPlayer(function(current){
return current!=player&&player.inRange(current)&&ui.selected.cards.length==current.hp&&get.damageEffect(current,player,player)>0;
})) return 0;
switch(ui.selected.cards.length){ switch(ui.selected.cards.length){
case 0:return 7-get.value(card); case 0:return 8-get.value(card);
case 1:return 6-get.value(card); case 1:return 6-get.value(card);
case 2:return 3-get.value(card); case 2:return 3-get.value(card);
default:return 0; default:return 0;
} }
}, },
content:function(){ content:function(){
"step 0" player.addTempSkill('duwu3');
player.addSkill('duwu3');
target.damage('nocard'); target.damage('nocard');
"step 1"
if(!player.hasSkill('duwu3')){
player.addSkill('duwu2');
player.loseHp();
}
else{
player.removeSkill('duwu3');
}
}, },
ai:{ ai:{
damage:true, damage:true,
@ -12458,24 +12444,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
expose:0.3 expose:0.3
} }
}, },
duwu2:{ duwu2:{},
trigger:{player:'phaseZhunbeiBegin'}, duwu3:{
trigger:{global:'dyingAfter'},
forced:true, forced:true,
popup:false, popup:false,
audio:false, charlotte:true,
content:function(){
player.removeSkill('duwu2');
}
},
duwu3:{
trigger:{global:'dying'},
priority:15,
silent:true,
filter:function(event,player){ filter:function(event,player){
return event.reason&&event.reason.getParent().name=='duwu'; return event.player.isAlive()&&event.reason&&event.reason.getParent().name=='duwu';
}, },
content:function(){ content:function(){
player.removeSkill('duwu3'); player.loseHp();
player.addTempSkill('duwu2');
} }
}, },
yicong:{ yicong:{
@ -15253,6 +15233,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tianming:'天命', tianming:'天命',
mizhao:'密诏', mizhao:'密诏',
duwu:'黩武', duwu:'黩武',
duwu3:'黩武',
mingzhe:'明哲', mingzhe:'明哲',
huanshi:'缓释', huanshi:'缓释',
hongyuan:'弘援', hongyuan:'弘援',
@ -15423,12 +15404,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
wuji_info:'觉醒技结束阶段开始时若你于此回合内造成过3点或更多伤害你加1点体力上限并回复1点体力失去〖虎啸〗然后从场上、牌堆或弃牌堆中获得【青龙偃月刀】', wuji_info:'觉醒技结束阶段开始时若你于此回合内造成过3点或更多伤害你加1点体力上限并回复1点体力失去〖虎啸〗然后从场上、牌堆或弃牌堆中获得【青龙偃月刀】',
xueji_info:'出牌阶段限一次你可以弃置一张红色牌然后选择至多X名角色横置这些角色并对其中一名角色造成1点火焰伤害。X为你已损失的体力值且至少为1', xueji_info:'出牌阶段限一次你可以弃置一张红色牌然后选择至多X名角色横置这些角色并对其中一名角色造成1点火焰伤害。X为你已损失的体力值且至少为1',
huxiao_info:'锁定技,当你造成火属性伤害时,该角色摸一张牌。然后,你于此回合内对其使用牌没有次数限制。', huxiao_info:'锁定技,当你造成火属性伤害时,该角色摸一张牌。然后,你于此回合内对其使用牌没有次数限制。',
aocai_info:'当你于回合外需要使用或打出一张基本牌时,你可以观看牌堆顶的两张牌。若你观看的牌中有此牌,你可以使用打出之。', aocai_info:'当你于回合外需要使用或打出一张基本牌时,你可以观看牌堆顶的两张牌(若你没有手牌则改为四张)。若你观看的牌中有此牌,你可以使用打出之。',
hongyuan_info:'摸牌阶段,你可以少摸一张牌并指定至多两名其他角色。若如此做,这些角色各摸一张牌。', hongyuan_info:'摸牌阶段,你可以少摸一张牌并指定至多两名其他角色。若如此做,这些角色各摸一张牌。',
hongyuan_info_combat:'摸牌阶段,你可以少摸一张牌。若如此做,其他友方角色各摸一张牌。', hongyuan_info_combat:'摸牌阶段,你可以少摸一张牌。若如此做,其他友方角色各摸一张牌。',
huanshi_info:'一名角色的判定牌生效前,你可令其观看你的手牌。若如此做,该角色选择你的一张牌,你打出此牌代替之。', huanshi_info:'一名角色的判定牌生效前,你可令其观看你的手牌。若如此做,该角色选择你的一张牌,你打出此牌代替之。',
mingzhe_info:'当你于回合外使用或打出红色牌,或因弃置失去一张红色牌后,你可以摸一张牌。', mingzhe_info:'当你于回合外使用或打出红色牌,或因弃置失去一张红色牌后,你可以摸一张牌。',
duwu_info:'出牌阶段你可以弃置X张牌对你攻击范围内的一名其他角色造成1点伤害X为该角色的体力值。若该角色因此法进入濒死状态则你于濒死状态结算后失去1点体力且本回合不能再发动〖黩武〗。', duwu_info:'出牌阶段你可以弃置X张牌对你攻击范围内的一名其他角色造成1点伤害X为该角色的体力值。若该角色因此法进入濒死状态且存活则你于濒死状态结算后失去1点体力且本回合不能再发动〖黩武〗。',
tianming_info:'当你成为【杀】的目标时,你可以弃置两张牌(不足则全弃,无牌则不弃),然后摸两张牌;若此时全场体力值最多的角色仅有一名且不是你,该角色也可以如此做。', tianming_info:'当你成为【杀】的目标时,你可以弃置两张牌(不足则全弃,无牌则不弃),然后摸两张牌;若此时全场体力值最多的角色仅有一名且不是你,该角色也可以如此做。',
mizhao_info:'出牌阶段限一次,你可以将所有手牌交给一名其他角色。若如此做,你令该角色与你指定的另一名有手牌的角色拼点,视为拼点赢的角色对没赢的角色使用一张【杀】。', mizhao_info:'出牌阶段限一次,你可以将所有手牌交给一名其他角色。若如此做,你令该角色与你指定的另一名有手牌的角色拼点,视为拼点赢的角色对没赢的角色使用一张【杀】。',
yuanhu_info:'结束阶段开始时你可以将一张装备牌置于一名角色的装备区里然后根据此装备牌的类型执行以下对应效果。武器牌弃置该角色距离1以内的一名角色区域中的一张牌防具牌该角色摸一张牌坐骑牌该角色回复1点体力。', yuanhu_info:'结束阶段开始时你可以将一张装备牌置于一名角色的装备区里然后根据此装备牌的类型执行以下对应效果。武器牌弃置该角色距离1以内的一名角色区域中的一张牌防具牌该角色摸一张牌坐骑牌该角色回复1点体力。',

View File

@ -4,12 +4,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2', name:'sp2',
connect:true, connect:true,
character:{ character:{
liubian:['male','qun',3,['shiyuan','dushi'],['unseen']],
xin_baosanniang:['female','shu',3,['xinfu_wuniang','decadexushen']], xin_baosanniang:['female','shu',3,['xinfu_wuniang','decadexushen']],
re_hejin:['male','qun',4,['spmouzhu']], re_hejin:['male','qun',4,['spmouzhu']],
hansui:['male','qun',4,['spniluan','spweiwu']], hansui:['male','qun',4,['spniluan','spweiwu']],
liuhong:['male','qun',4,['yujue','tuxing'],['unseen']], liuhong:['male','qun',4,['yujue','tuxing'],['unseen']],
zhujun:['male','qun',4,['gongjian','kuimang'],['unseen']], zhujun:['male','qun',4,['gongjian','kuimang'],['unseen']],
caoxing:['male','qun',4,['cxliushi','zhanwan'],['unseen']], caoxing:['male','qun',4,['cxliushi','zhanwan']],
re_maliang:['male','shu',3,['rexiemu','heli'],[]], re_maliang:['male','shu',3,['rexiemu','heli'],[]],
ol_yujin:['male','wei',4,['rezhenjun']], ol_yujin:['male','wei',4,['rezhenjun']],
ol_xinxianying:['female','wei',3,['caishi','zhongjian']], ol_xinxianying:['female','wei',3,['caishi','zhongjian']],
@ -70,6 +71,48 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
skill:{ skill:{
shiyuan:{
trigger:{target:'useCardToTargeted'},
frequent:true,
filter:function(event,player){
return player!=event.player&&!player.getHistory('gain',function(evt){
return evt.getParent(2).name=='shiyuan'&&evt.cards.length==(2+get.sgn(event.player.hp-player.hp));
}).length;
},
content:function(){
player.draw(2+get.sgn(trigger.player.hp-player.hp));
},
},
dushi:{
global:'dushi2',
locked:true,
trigger:{player:'die'},
forceDie:true,
direct:true,
skillAnimation:true,
animationColor:'gray',
content:function(){
'step 0'
player.chooseTarget('请选择【毒逝】的目标','选择一名其他角色,令其获得技能【毒逝】',true,lib.filter.notMe).set('forceDie',true).set('ai',function(target){
return -get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('dushi',target);
target.markSkill('dushi');
target.addSkillLog('dushi');
}
},
intro:{content:'您已经获得弘农王的诅咒'},
},
dushi2:{
mod:{
cardSavable:function(card,player,target){
if(card.name=='tao'&&target!=player&&target.hasSkill('dushi')) return false;
},
},
},
decadexushen:{ decadexushen:{
derivation:'decadezhennan', derivation:'decadezhennan',
audio:'xinfu_xushen', audio:'xinfu_xushen',
@ -363,6 +406,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
cxliushi:{ cxliushi:{
audio:2,
enable:'phaseUse', enable:'phaseUse',
filter:function(event,player){ filter:function(event,player){
return player.countCards('he',{suit:'heart'})>0; return player.countCards('he',{suit:'heart'})>0;
@ -370,7 +414,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterCard:{suit:'heart'}, filterCard:{suit:'heart'},
position:'he', position:'he',
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
return player.canUse('sha',target); return player.canUse('sha',target,false);
},
check:function(card){
var player=_status.event.player;
var next=player.getNext();
var att=get.attitude(player,next);
if(att>0){
var js=next.getCards('j');
if(js.length) return get.judge(js[0])+10-get.value(card);
return 9-get.value(card)
}
return 6-get.value(card);
}, },
discard:false, discard:false,
prepare:'throw', prepare:'throw',
@ -379,15 +434,36 @@ game.import('character',function(lib,game,ui,get,ai,_status){
cards[0].fix(); cards[0].fix();
ui.cardPile.insertBefore(cards[0],ui.cardPile.firstChild); ui.cardPile.insertBefore(cards[0],ui.cardPile.firstChild);
game.updateRoundNumber(); game.updateRoundNumber();
player.useCard({name:'sha',isCard:true},false,targets); player.useCard({name:'sha',isCard:true},false,targets).card.cxliushi=true;
"step 1" },
if(target.getHistory('damage',function(evt){ group:'cxliushi_damage',
var evt2=evt.getParent('useCard'); subSkill:{
return evt.card==evt2.card&&evt2.getParent()==event; damage:{
}).length){ trigger:{source:'damageSource'},
target.addSkill('cxliushi2'); forced:true,
target.addMark('cxliushi2',1,false); popup:false,
} filter:function(event,player){
return event.card&&event.card.cxliushi==true&&event.player.isAlive()&&event.getParent(3).name=='cxliushi';
},
content:function(){
trigger.player.addMark('cxliushi2',1);
trigger.player.addSkill('cxliushi2');
},
},
},
ai:{
order:function(){
return get.order({name:'sha'})-0.4;
},
result:{
target:function(player,target){
var eff=get.effect(target,{name:'sha'},player,target);
var damageEff=get.damageEffect(target,player,player);
if(eff>0) return damageEff>0?0:eff;
if(target.hasSkill('bagua_skill')||target.hasSkill('rw_bagua_skill')||target.hasSkill('bazhen')) return 0;
return eff;
},
},
}, },
}, },
cxliushi2:{ cxliushi2:{
@ -397,11 +473,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
onremove:true, onremove:true,
charlotte:true,
intro:{ intro:{
name2:'流',
content:'手牌上限-#', content:'手牌上限-#',
}, },
}, },
zhanwan:{ zhanwan:{
audio:2,
trigger:{global:'phaseDiscardEnd'}, trigger:{global:'phaseDiscardEnd'},
forced:true, forced:true,
filter:function(event,player){ filter:function(event,player){
@ -5701,9 +5780,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
wangshuang:'王双(?-228年三国时期曹魏将领。蜀汉建兴六年228年诸葛亮出散关攻陈仓后粮尽而退。王双率领骑兵追击蜀军但在与蜀军的交战中被击败王双也被蜀军所斩。在《三国演义》中王双字子全是陇西郡狄道县今甘肃临洮县有万夫不当之勇。在诸葛亮北伐期间被魏延所斩。', wangshuang:'王双(?-228年三国时期曹魏将领。蜀汉建兴六年228年诸葛亮出散关攻陈仓后粮尽而退。王双率领骑兵追击蜀军但在与蜀军的交战中被击败王双也被蜀军所斩。在《三国演义》中王双字子全是陇西郡狄道县今甘肃临洮县有万夫不当之勇。在诸葛亮北伐期间被魏延所斩。',
wenyang:"文俶238年—291年一作文淑字次骞小名阿鸯世称文鸯谯郡今安徽亳州市人。魏末晋初名将曹魏扬州刺史文钦之子。骁勇善战依附大将军曹爽效忠于王室。司马师废黜皇帝曹芳后随父联合毌丘俭于淮南起兵勤王。兵败之后向南投奔吴国。诸葛诞发动淮南叛乱奉命率军驰援。双方发生内讧父亲为诸葛诞所害遂降于司马昭封关内侯。西晋建立后任平虏护军。咸宁三年277年拜平西将军、都督凉秦雍州三州军事大破鲜卑首领秃发树机能名震天下迁使持节、护东夷校尉、监辽东军事。八王之乱中为诸葛诞外孙、东安王司马繇所诬杀惨遭灭族时年五十四岁。", wenyang:"文俶238年—291年一作文淑字次骞小名阿鸯世称文鸯谯郡今安徽亳州市人。魏末晋初名将曹魏扬州刺史文钦之子。骁勇善战依附大将军曹爽效忠于王室。司马师废黜皇帝曹芳后随父联合毌丘俭于淮南起兵勤王。兵败之后向南投奔吴国。诸葛诞发动淮南叛乱奉命率军驰援。双方发生内讧父亲为诸葛诞所害遂降于司马昭封关内侯。西晋建立后任平虏护军。咸宁三年277年拜平西将军、都督凉秦雍州三州军事大破鲜卑首领秃发树机能名震天下迁使持节、护东夷校尉、监辽东军事。八王之乱中为诸葛诞外孙、东安王司马繇所诬杀惨遭灭族时年五十四岁。",
liuzan:'字正明会稽长山人人曾任左护军有两子留略、留平。少为会稽郡吏曾参与镇压黄巾起义后被东吴大将凌统所引用任屯骑校尉。吴五凤二年公元255年留赞任左护军随孙峻征淮南因病撤军被魏将蒋班围困于道力战而死时年73岁。', liuzan:'字正明会稽长山人人曾任左护军有两子留略、留平。少为会稽郡吏曾参与镇压黄巾起义后被东吴大将凌统所引用任屯骑校尉。吴五凤二年公元255年留赞任左护军随孙峻征淮南因病撤军被魏将蒋班围困于道力战而死时年73岁。',
caoxing:'曹性,东汉末年吕布部将,史载他曾与身为自己上司的反叛者郝萌交战,并砍去郝萌一臂,受到吕布的嘉奖。在罗贯中所著古典小说《三国演义》中,也有关于曹性箭射夏侯惇左目的描述,而曹性也随即被暴怒的夏侯惇所杀。', caoxing:'曹性,东汉末年吕布部将,史载他曾与身为自己上司的反叛者郝萌交战,并砍去郝萌一臂,受到吕布的嘉奖。在罗贯中所著古典小说《三国演义》中,也有关于曹性箭射夏侯惇左目的描述,而曹性也随即被暴怒的夏侯惇所杀。在穿越小说《三国之银河射手》中,主角穿越成为曹性,经过一番闯荡之后,被封为“银河射手”。',
zhujun:'朱儁195年字公伟。会稽郡上虞县今浙江绍兴上虞区人。东汉末年名将。朱儁出身寒门赡养母亲以好义轻财闻名受乡里敬重。后被太守徐珪举为孝廉任兰陵令颇有治绩。再升任交州刺史以家兵五千大破叛军平定交州。战后以功封都亭侯入朝为谏议大夫。光和七年184年黄巾起义爆发朱儁以右中郎将、持节平定三郡之地以功进封西乡侯迁镇贼中郎将。又率军讨平黄巾“威声满天下”。中平二年185年进拜右车骑将军更封钱塘侯。后为河内太守击退进逼的张燕。权臣董卓秉政时想任朱儁为副手遭其婉拒。其后出逃荆州更屯军中牟徐州刺史陶谦等欲推举他为太师并传檄各州牧伯相邀讨伐李傕、奉迎天子。但朱儁却奉诏入京任太仆。初平三年192年升任太尉、录尚书事。兴平元年194年行骠骑将军事持节镇关东因故未成行。兴平二年195年李傕与郭汜相互攻杀郭汜扣留朱儁作为人质。朱儁性格刚烈即日发病而死。', zhujun:'朱儁195年字公伟。会稽郡上虞县今浙江绍兴上虞区人。东汉末年名将。朱儁出身寒门赡养母亲以好义轻财闻名受乡里敬重。后被太守徐珪举为孝廉任兰陵令颇有治绩。再升任交州刺史以家兵五千大破叛军平定交州。战后以功封都亭侯入朝为谏议大夫。光和七年184年黄巾起义爆发朱儁以右中郎将、持节平定三郡之地以功进封西乡侯迁镇贼中郎将。又率军讨平黄巾“威声满天下”。中平二年185年进拜右车骑将军更封钱塘侯。后为河内太守击退进逼的张燕。权臣董卓秉政时想任朱儁为副手遭其婉拒。其后出逃荆州更屯军中牟徐州刺史陶谦等欲推举他为太师并传檄各州牧伯相邀讨伐李傕、奉迎天子。但朱儁却奉诏入京任太仆。初平三年192年升任太尉、录尚书事。兴平元年194年行骠骑将军事持节镇关东因故未成行。兴平二年195年李傕与郭汜相互攻杀郭汜扣留朱儁作为人质。朱儁性格刚烈即日发病而死。',
liuhong:'汉灵帝刘宏157年一作156年189年5月13日生于冀州河间国今河北深州。东汉第十二位皇帝168年189年在位汉章帝刘炟的玄孙。刘宏早年世袭解渎亭侯。永康元年167年十二月汉桓帝刘志逝世刘宏被外戚窦氏挑选为皇位继承人于建宁元年168年正月即位。刘宏在位的大部分时期施行党锢及宦官政治。他又设置西园巧立名目搜刮钱财甚至卖官鬻爵以用于自己享乐。在位晚期爆发了黄巾起义而凉州等地也陷入持续动乱之中。中平六年189年刘宏去世谥号孝灵皇帝葬于文陵。刘宏喜好辞赋作有《皇羲篇》、《追德赋》、《令仪颂》、《招商歌》等。', liuhong:'汉灵帝刘宏157年一作156年189年5月13日生于冀州河间国今河北深州。东汉第十二位皇帝168年189年在位汉章帝刘炟的玄孙。刘宏早年世袭解渎亭侯。永康元年167年十二月汉桓帝刘志逝世刘宏被外戚窦氏挑选为皇位继承人于建宁元年168年正月即位。刘宏在位的大部分时期施行党锢及宦官政治。他又设置西园巧立名目搜刮钱财甚至卖官鬻爵以用于自己享乐。在位晚期爆发了黄巾起义而凉州等地也陷入持续动乱之中。中平六年189年刘宏去世谥号孝灵皇帝葬于文陵。刘宏喜好辞赋作有《皇羲篇》、《追德赋》、《令仪颂》、《招商歌》等。',
liubian:'刘辩176年190年3月6日是汉灵帝刘宏与何皇后的嫡长子。刘辩在灵帝驾崩后继位为帝史称少帝由于年幼实权掌握在临朝称制的母亲何太后和母舅大将军何进手中。少帝在位时期东汉政权已经名存实亡他即位后不久即遭遇以何进为首的外戚集团和以十常侍为首的内廷宦官集团这两大敌对政治集团的火并被迫出宫回宫后又受制于以“勤王”为名进京的凉州军阀董卓终于被废为弘农王成为东汉唯一被废黜的皇帝其同父异母弟陈留王刘协继位为帝是为汉献帝。被废黜一年之后刘辩在董卓胁迫下自尽时年仅十五岁一说十八岁其弟献帝追谥他为怀王。中国古代的史书中称刘辩为皇子辩、少帝和弘农王等。因为在位不逾年传统上称东汉共十二帝刘辩与东汉另一位少帝刘懿都不在其中亦皆无本纪不过现代史学界也有观点承认两位少帝均是汉朝皇帝则刘辩为东汉第十三位皇帝。',
}, },
characterTitle:{ characterTitle:{
wulan:'#b对决限定武将', wulan:'#b对决限定武将',
@ -6027,9 +6107,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
caoxing:'曹性', caoxing:'曹性',
cxliushi:'流矢', cxliushi:'流矢',
cxliushi2:'流矢', cxliushi2:'流矢',
cxliushi_info:'出牌阶段,你可以将一张红桃牌置于牌堆顶,视为对一名角色使用一张不计入次数的【杀】。若此【杀】造成伤害,该角色手牌上限永久-1。', cxliushi_info:'出牌阶段,你可以将一张红桃牌置于牌堆顶,视为对一名角色使用一张【杀】(无距离限制且不计入使用次数)。当此【杀】造成伤害后,受到伤害的角色获得一个“流”。有“流”的角色手牌上限-XX为其“流”数。',
zhanwan:'斩腕', zhanwan:'斩腕',
zhanwan_info:'锁定技,受到【流矢】效果影响的角色若弃牌阶段有弃牌,你摸等量的牌,然后移除【流矢】的效果。', zhanwan_info:'锁定技,有“流”的角色于弃牌阶段弃牌后,你摸等量的牌,然后其移去所有的“流”。',
zhujun:'朱儁', zhujun:'朱儁',
gongjian:'攻坚', gongjian:'攻坚',
gongjian_info:'每回合限一次,当你使用【杀】指定目标后,若此【杀】和你使用的上一张【杀】有相同的目标,则你可以弃置其两张牌,然后获得以此法弃置的所有【杀】。', gongjian_info:'每回合限一次,当你使用【杀】指定目标后,若此【杀】和你使用的上一张【杀】有相同的目标,则你可以弃置其两张牌,然后获得以此法弃置的所有【杀】。',
@ -6051,6 +6131,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
decadexushen_info:"限定技,当你因其他角色而脱离濒死状态后,若场上没有“关索”,则你可发动此技能。你可令其选择是否将自己的一张武将牌变更为“关索”并摸三张牌。然后你回复一点体力,并获得技能〖镇南〗。", decadexushen_info:"限定技,当你因其他角色而脱离濒死状态后,若场上没有“关索”,则你可发动此技能。你可令其选择是否将自己的一张武将牌变更为“关索”并摸三张牌。然后你回复一点体力,并获得技能〖镇南〗。",
decadezhennan:"镇南", decadezhennan:"镇南",
decadezhennan_info:"当你成为锦囊牌的目标后若此牌的目标数大于1则你可以对一名其他角色造成1点伤害。", decadezhennan_info:"当你成为锦囊牌的目标后若此牌的目标数大于1则你可以对一名其他角色造成1点伤害。",
liubian:'刘辩',
shiyuan:'诗怨',
shiyuan_info:'每回合每项限一次, 当你成为其他角色使用牌的目标后: 1.若其体力值比你多,你摸三张牌; 2.若其体力值与你相同,你摸两张牌; 3.若其体力值比你少,你摸一张牌。',
dushi:'毒逝',
dushi_info:'锁定技,你处于濒死状态时,其他角色不能对你使用【桃】。你死亡时,你选择一名其他角色获得〖毒逝〗。',
sp_whlw:"文和乱武", sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原", sp_zlzy:"逐鹿中原",

View File

@ -843,34 +843,52 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'jijiang1', audio:'jijiang1',
audioname:['liushan','re_liubei','re_liushan','ol_liushan'], audioname:['liushan','re_liubei','re_liushan','ol_liushan'],
unique:true, unique:true,
group:['jijiang1','jijiang2'], group:['jijiang1'],
zhuSkill:true, zhuSkill:true,
filter:function(event,player){
if(!player.hasZhuSkill('jijiang')||!game.hasPlayer(function(current){
return current!=player&&current.group=='shu';
})) return false;
return !event.jijiang&&(event.type!='phase'||!player.hasSkill('jijiang3'));
},
enable:['chooseToUse','chooseToRespond'],
viewAs:{name:'sha'},
filterCard:function(){return false},
selectCard:-1,
ai:{
order:function(){
return get.order({name:'sha'})+0.3;
},
respondSha:true,
skillTagFilter:function(player){
if(!player.hasZhuSkill('jijiang')||!game.hasPlayer(function(current){
return current!=player&&current.group=='shu';
})) return false;
},
},
}, },
jijiang1:{ jijiang1:{
audio:2, audio:2,
audioname:['liushan','re_liubei','re_liushan','ol_liushan'], audioname:['liushan','re_liubei','re_liushan','ol_liushan'],
trigger:{player:'chooseToRespondBegin'}, trigger:{player:['useCardBegin','respondBegin']},
check:function(event){ logTarget:'targets',
if(event.jijiang) return false;
return true;
},
filter:function(event,player){ filter:function(event,player){
if(event.responded) return false; return event.skill=='jijiang';
if(player.storage.jijianging) return false;
if(!player.hasZhuSkill('jijiang')) return false;
if(!event.filterCard({name:'sha'},player,event)) return false;
return game.hasPlayer(function(current){
return current!=player&&current.group=='shu';
});
}, },
forced:true,
content:function(){ content:function(){
"step 0" "step 0"
delete trigger.skill;
trigger.getParent().set('jijiang',true);
"step 1"
if(event.current==undefined) event.current=player.next; if(event.current==undefined) event.current=player.next;
if(event.current==player){ if(event.current==player){
player.addTempSkill('jijiang3');
event.finish(); event.finish();
trigger.cancel();
trigger.getParent().goto(0);
} }
else if(event.current.group=='shu'){ else if(event.current.group=='shu'){
player.storage.jijianging=true;
var next=event.current.chooseToRespond('是否替'+get.translation(player)+'打出一张杀?',{name:'sha'}); var next=event.current.chooseToRespond('是否替'+get.translation(player)+'打出一张杀?',{name:'sha'});
next.set('ai',function(){ next.set('ai',function(){
var event=_status.event; var event=_status.event;
@ -886,13 +904,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.current=event.current.next; event.current=event.current.next;
event.redo(); event.redo();
} }
"step 1" "step 2"
player.storage.jijianging=false;
if(result.bool){ if(result.bool){
event.finish(); event.finish();
trigger.result=result; trigger.card=result.card;
trigger.responded=true; trigger.cards=result.cards;
trigger.animate=false; trigger.throw=false;
if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){
event.current.ai.shown+=0.3; event.current.ai.shown+=0.3;
if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; if(event.current.ai.shown>0.95) event.current.ai.shown=0.95;
@ -900,104 +917,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
else{ else{
event.current=event.current.next; event.current=event.current.next;
event.goto(0); event.goto(1);
} }
} }
}, },
jijiang2:{
audio:'jijiang1',
audioname:['liushan','re_liubei','re_liushan','ol_liushan'],
enable:'chooseToUse',
prompt:'选择一名目标角色。若有其他蜀势力角色打出【杀】响应,则视为你对其使用此【杀】。',
filter:function(event,player){
if(event.filterCard&&!event.filterCard({name:'sha'},player,event)) return false;
if(!player.hasZhuSkill('jijiang')) return false;
if(player.hasSkill('jijiang3')) return false;
if(!lib.filter.cardUsable({name:'sha'},player)) return false;
return game.hasPlayer(function(current){
return current!=player&&current.group=='shu';
});
},
filterTarget:function(card,player,target){
if(_status.event._backup&&
typeof _status.event._backup.filterTarget=='function'&&
!_status.event._backup.filterTarget({name:'sha'},player,target)){
return false;
}
return player.canUse({name:'sha'},target);
},
content:function(){
"step 0"
if(event.current==undefined) event.current=player.next;
if(event.current==player){
player.addSkill('jijiang3');
event.getParent(2).step=0;
event.finish();
}
else if(event.current.group=='shu'){
var next=event.current.chooseToRespond('是否替'+get.translation(player)+'对'+get.translation(target)+'使用一张杀',
function(card,player,event){
event=event||_status.event;
return card.name=='sha'&&event.source.canUse(card,event.target);
});
next.set('ai',function(card){
var event=_status.event;
return get.effect(event.target,card,event.source,event.player);
});
next.set('source',player);
next.set('target',target);
next.set('jijiang',true);
next.set('skillwarn','替'+get.translation(player)+'打出一张杀');
next.noOrdering=true;
next.autochoose=lib.filter.autoRespondSha;
}
else{
event.current=event.current.next;
event.redo();
}
"step 1"
if(result.bool){
event.finish();
if(result.cards&&result.cards.length){
player.useCard({name:'sha',isCard:true},result.cards,target).animate=false;
}
else{
player.useCard({name:'sha',isCard:true},target).animate=false;
}
if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){
event.current.ai.shown+=0.3;
if(event.current.ai.shown>0.95) event.current.ai.shown=0.95;
}
}
else{
event.current=event.current.next;
event.goto(0);
}
},
ai:{
respondSha:true,
skillTagFilter:function(player){
if(!player.hasZhuSkill('jijiang')) return false;
return game.hasPlayer(function(current){
return current!=player&&current.group=='shu';
});
},
result:{
target:function(player,target){
if(player.hasSkill('jijiang3')) return 0;
return get.effect(target,{name:'sha'},player,target);
}
},
order:function(){
return get.order({name:'sha'})-0.1;
},
}
},
jijiang3:{ jijiang3:{
trigger:{global:['useCardAfter','useSkillAfter','phaseAfter']}, trigger:{global:['useCardAfter','useSkillAfter','phaseAfter']},
silent:true, silent:true,
charlotte:true,
filter:function(event){ filter:function(event){
return event.skill!='jijiang2'&&event.skill!='qinwang2'; return event.skill!='jijiang'&&event.skill!='qinwang';
}, },
content:function(){ content:function(){
player.removeSkill('jijiang3'); player.removeSkill('jijiang3');

View File

@ -6950,103 +6950,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
qinwang:{ qinwang:{
audio:'qinwang1', audio:'qinwang1',
unique:true, unique:true,
group:['qinwang1','qinwang2'], group:['qinwang1'],
zhuSkill:true, zhuSkill:true,
subSkill:{
ai:{}
}
},
qinwang1:{
audio:2,
trigger:{player:'chooseToRespondBegin'},
filter:function(event,player){ filter:function(event,player){
if(event.responded) return false; if(!player.hasZhuSkill('qinwang')||!game.hasPlayer(function(current){
if(!player.hasZhuSkill('qinwang')) return false;
if(!player.countCards('he')) return false;
if(!event.filterCard({name:'sha'},player,event)) return false;
return game.hasPlayer(function(current){
return current!=player&&current.group=='shu'; return current!=player&&current.group=='shu';
}); })||!player.countCards('he')) return false;
return !event.jijiang&&(event.type!='phase'||!player.hasSkill('jijiang3'));
}, },
direct:true, enable:['chooseToUse','chooseToRespond'],
content:function(){ viewAs:{
"step 0" name:'sha',
var yep=false; cards:[],
if(!player.storage.jijianging&&!trigger.jijiang){ suit:'none',
var players=game.filterPlayer(); number:null,
for(var i=0;i<players.length;i++){ isCard:true,
var nh=players[i].countCards('h');
if(player!=players[i]&&players[i].group=='shu'&&get.attitude(players[i],player)>2&&(nh>=3&&players[i].countCards('h','sha'))){
yep=true;break;
}
}
}
var next=player.chooseToDiscard(get.prompt('qinwang'),'弃置一张牌并发动【激将】','he');
next.set('ai',function(card){
if(_status.event.yep) return 5-get.value(card);
return 0;
});
next.set('yep',yep);
next.logSkill='qinwang'
"step 1"
if(!result.bool){
event.finish();
}
"step 2"
if(event.current==undefined) event.current=player.next;
if(event.current==player){
event.finish();
}
else if(event.current.group=='shu'){
player.storage.jijianging=true;
var next=event.current.chooseToRespond('是否替'+get.translation(player)+'打出一张杀?',{name:'sha'});
next.set('ai',function(){
var event=_status.event;
return (get.attitude(event.player,event.sourcex)-2);
});
next.set('sourcex',player);
next.set('jijiang',true);
next.noOrdering=true;
next.autochoose=lib.filter.autoRespondSha;
}
else{
event.current=event.current.next;
event.redo();
}
"step 3"
player.storage.jijianging=false;
if(result.bool){
event.finish();
trigger.result=result;
trigger.responded=true;
trigger.animate=false;
event.current.draw();
if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){
event.current.ai.shown+=0.3;
if(event.current.ai.shown>0.95) event.current.ai.shown=0.95;
}
}
else{
event.current=event.current.next;
event.goto(2);
}
}
},
qinwang2:{
audio:'qinwang1',
enable:'chooseToUse',
filter:function(event,player){
if(event.filterCard&&!event.filterCard({name:'sha'},player,event)) return false;
if(!player.hasZhuSkill('qinwang')) return false;
if(!lib.filter.cardUsable({name:'sha'},player)) return false;
return game.hasPlayer(function(current){
return current!=player&&current.group=='shu';
});
}, },
filterCard:true, filterCard:lib.filter.cardDiscardable,
position:'he', position:'he',
check:function(card){ check:function(card){
var player=_status.event.player,players=game.filterPlayer(); var player=_status.event.player,players=game.filterPlayer();
if(player.hasSkill('qinwang_ai')) return false;
for(var i=0;i<players.length;i++){ for(var i=0;i<players.length;i++){
var nh=players[i].countCards('h'); var nh=players[i].countCards('h');
if(players[i]!=player&&players[i].group=='shu'&&get.attitude(players[i],player)>2&&(nh>=3&&players[i].countCards('h','sha'))){ if(players[i]!=player&&players[i].group=='shu'&&get.attitude(players[i],player)>2&&(nh>=3&&players[i].countCards('h','sha'))){
@ -7055,36 +6979,51 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
return 0; return 0;
}, },
filterTarget:function(card,player,target){ ai:{
if(_status.event._backup&& order:function(){
typeof _status.event._backup.filterTarget=='function'&& return get.order({name:'sha'})-0.3;
!_status.event._backup.filterTarget({name:'sha'},player,target)){ },
return false; respondSha:true,
} skillTagFilter:function(player){
return player.canUse({name:'sha'},target); if(!player.hasZhuSkill('qinwang')||!game.hasPlayer(function(current){
return current!=player&&current.group=='shu';
})||!player.countCards('he')) return false;
},
}, },
},
qinwang1:{
audio:2,
trigger:{player:['useCardBegin','respondBegin']},
logTarget:'targets',
filter:function(event,player){
return event.skill=='qinwang';
},
forced:true,
content:function(){ content:function(){
"step 0" "step 0"
delete trigger.skill;
delete trigger.card.cards;
player.discard(trigger.cards);
delete trigger.cards;
trigger.getParent().set('jijiang',true);
"step 1"
if(event.current==undefined) event.current=player.next; if(event.current==undefined) event.current=player.next;
if(event.current==player){ if(event.current==player){
player.addSkill('jijiang3'); player.addTempSkill('jijiang3');
player.addTempSkill('qinwang_ai'); player.addTempSkill('qinwang_ai');
event.getParent(2).step=0;
event.finish(); event.finish();
trigger.cancel();
trigger.getParent().goto(0);
} }
else if(event.current.group=='shu'){ else if(event.current.group=='shu'){
var next=event.current.chooseToRespond('是否替'+get.translation(player)+'对'+get.translation(target)+'使用一张杀', var next=event.current.chooseToRespond('是否替'+get.translation(player)+'打出一张杀?',{name:'sha'});
function(card,player,event){ next.set('ai',function(){
var evt=event||_status.event;
return card.name=='sha'&&evt.source.canUse(card,evt.target);
});
next.set('ai',function(card){
var event=_status.event; var event=_status.event;
return get.effect(event.target,card,event.source,event.player); return (get.attitude(event.player,event.source)-2);
}); });
next.set('source',player); next.set('source',player);
next.set('target',target);
next.set('jijiang',true); next.set('jijiang',true);
next.set('skillwarn','替'+get.translation(player)+'打出一张杀');
next.noOrdering=true; next.noOrdering=true;
next.autochoose=lib.filter.autoRespondSha; next.autochoose=lib.filter.autoRespondSha;
} }
@ -7092,16 +7031,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.current=event.current.next; event.current=event.current.next;
event.redo(); event.redo();
} }
"step 1" "step 2"
if(result.bool){ if(result.bool){
event.finish();
event.current.draw(); event.current.draw();
if(result.cards&&result.cards.length){ event.finish();
player.useCard({name:'sha',isCard:true},result.cards,target).animate=false; trigger.card=result.card;
} trigger.cards=result.cards;
else{ trigger.throw=false;
player.useCard({name:'sha',isCard:true},target).animate=false;
}
if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){
event.current.ai.shown+=0.3; event.current.ai.shown+=0.3;
if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; if(event.current.ai.shown>0.95) event.current.ai.shown=0.95;
@ -7109,21 +7045,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
else{ else{
event.current=event.current.next; event.current=event.current.next;
event.goto(0); event.goto(1);
} }
},
ai:{
respondSha:true,
result:{
target:function(player,target){
if(player.hasSkill('jijiang3')) return 0;
if(player.hasSkill('qinwang_ai')) return 0;
return get.effect(target,{name:'sha'},player,target);
}
},
order:function(){
return get.order({name:'sha'})-0.1;
},
} }
}, },
zuoding:{ zuoding:{

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[ window.noname_asset_list=[
'v1.9.105.10', 'v1.9.106',
'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3', 'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3', 'audio/background/aozhan_rewrite.mp3',
@ -634,6 +634,7 @@ window.noname_asset_list=[
'audio/die/sp_zhangliao.mp3', 'audio/die/sp_zhangliao.mp3',
'audio/die/re_caoxiu.mp3', 'audio/die/re_caoxiu.mp3',
'audio/die/re_sunxiu.mp3', 'audio/die/re_sunxiu.mp3',
'audio/die/caoxing.mp3',
'audio/skill/anguo1.mp3', 'audio/skill/anguo1.mp3',
'audio/skill/anguo2.mp3', 'audio/skill/anguo2.mp3',
@ -2799,6 +2800,10 @@ window.noname_asset_list=[
'audio/skill/reyanzhu2.mp3', 'audio/skill/reyanzhu2.mp3',
'audio/skill/tongqu1.mp3', 'audio/skill/tongqu1.mp3',
'audio/skill/tongqu2.mp3', 'audio/skill/tongqu2.mp3',
'audio/skill/cxliushi1.mp3',
'audio/skill/cxliushi2.mp3',
'audio/skill/zhanwan1.mp3',
'audio/skill/zhanwan2.mp3',
'font/huangcao.ttf', 'font/huangcao.ttf',
'font/shousha.ttf', 'font/shousha.ttf',
@ -3447,6 +3452,7 @@ window.noname_asset_list=[
'image/character/junk_zhangrang.jpg', 'image/character/junk_zhangrang.jpg',
'image/character/key_shiroha.jpg', 'image/character/key_shiroha.jpg',
'image/character/ns_caimao.jpg', 'image/character/ns_caimao.jpg',
'image/character/caoxing.jpg',
'image/character/baiwuchang.jpg', 'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg', 'image/character/baosanniang.jpg',
@ -5281,14 +5287,14 @@ window.noname_skin_list={
key_hinata:1, key_hinata:1,
key_iwasawa:2, key_iwasawa:2,
key_nao:3, key_nao:4,
key_shiki:4, key_shiki:6,
key_yui:2, key_yui:2,
key_yuri:4, key_yuri:4,
key_yuzuru:2, key_yuzuru:2,
sp_key_kanade:1, sp_key_kanade:8,
key_kamome:1, key_kamome:1,
key_umi:1, key_umi:2,
key_umi2:1, key_umi2:1,
key_mio:3, key_mio:3,
key_midori:1, key_midori:1,
@ -5298,4 +5304,6 @@ window.noname_skin_list={
key_misuzu:1, key_misuzu:1,
key_nagisa:1, key_nagisa:1,
key_rin:3, key_rin:3,
key_miki:1,
key_shiroha:6,
}; };

View File

@ -9932,7 +9932,7 @@
if(info.notarget||range[1]==-1){ if(info.notarget||range[1]==-1){
if(!info.notarget&&range[1]==-1){ if(!info.notarget&&range[1]==-1){
for(var i=0;i<targets.length;i++){ for(var i=0;i<targets.length;i++){
if(!player.canUse(card,targets[i],event.nodistance?false:null)){ if(!player.canUse(card,targets[i],event.nodistance?false:null,event.addCount===false?null:true)){
targets.splice(i--,1); targets.splice(i--,1);
} }
} }
@ -9966,7 +9966,8 @@
next.set('_get_card',card); next.set('_get_card',card);
next.set('filterTarget',function(card,player,target){ next.set('filterTarget',function(card,player,target){
if(!_status.event.targets.contains(target)) return false; if(!_status.event.targets.contains(target)) return false;
return lib.filter[_status.event.nodistance?'targetEnabled':'filterTarget'].apply(this,arguments); if(!_status.event.nodistance&&!lib.filter.targetInRange(card,player,target)) return false;
return lib.filter.targetEnabledx(card,player,target);
}); });
next.set('ai',event.ai||get.effect_use); next.set('ai',event.ai||get.effect_use);
next.set('selectTarget',event.selectTarget||lib.filter.selectTarget); next.set('selectTarget',event.selectTarget||lib.filter.selectTarget);
@ -11654,15 +11655,15 @@
if(info.chooseButton.chooseControl){ if(info.chooseButton.chooseControl){
var next=player.chooseControl(info.chooseButton.chooseControl(event,player)); var next=player.chooseControl(info.chooseButton.chooseControl(event,player));
next.dialog=dialog; next.dialog=dialog;
next.set('ai',info.chooseButton.check||function(){return 0;}); next.set('ai',info.chooseButton.check||function(){return 0;});
} }
else{ else{
var next=player.chooseButton(dialog); var next=player.chooseButton(dialog);
next.set('ai',info.chooseButton.check||function(){return 1;}); next.set('ai',info.chooseButton.check||function(){return 1;});
next.set('filterButton',info.chooseButton.filter||function(){return true;}); next.set('filterButton',info.chooseButton.filter||function(){return true;});
next.set('selectButton',info.chooseButton.select||1); next.set('selectButton',info.chooseButton.select||1);
} }
event.buttoned=event.result.skill; event.buttoned=event.result.skill;
} }
else if(info&&info.precontent&&!game.online){ else if(info&&info.precontent&&!game.online){
var next=game.createEvent('pre_'+event.result.skill); var next=game.createEvent('pre_'+event.result.skill);
@ -11723,19 +11724,34 @@
delete event.dialog; delete event.dialog;
return; return;
} }
var skills=player.getSkills(true);
game.expandSkills(skills);
for(var i=0;i<skills.length;i++){
var info=lib.skill[skills[i]];
if(info&&info.onChooseToRespond){
info.onChooseToRespond(event);
}
}
_status.noclearcountdown=true;
if(!_status.connectMode&&lib.config.skip_shan&&event.autochoose&&event.autochoose()){ if(!_status.connectMode&&lib.config.skip_shan&&event.autochoose&&event.autochoose()){
event.result={bool:false}; event.result={bool:false};
} }
else{ else{
// &&!lib.filter.wuxieSwap(trigger)
if(game.modeSwapPlayer&&!_status.auto&&player.isUnderControl()){ if(game.modeSwapPlayer&&!_status.auto&&player.isUnderControl()){
game.modeSwapPlayer(player); game.modeSwapPlayer(player);
} }
game.check(); game.check();
if(event.isMine()){ if(event.isMine()){
game.pause(); game.pause();
if(event.dialog) event.dialog=ui.create.dialog(event.dialog); if(event.openskilldialog){
if(event.prompt2) event.dialog.addText(event.prompt2); event.skillDialog=ui.create.dialog(event.openskilldialog);
delete event.openskilldialog;
event.dialog=event.prompt;
}
else{
if(event.prompt) event.dialog=ui.create.dialog(event.prompt);
if(event.prompt2) event.dialog.addText(event.prompt2);
}
} }
else if(event.isOnline()){ else if(event.isOnline()){
event.send(); event.send();
@ -11763,19 +11779,103 @@
} }
"step 2" "step 2"
event.resume(); event.resume();
if(event.result){
if(event.result.skill){
var info=get.info(event.result.skill);
if(info&&info.chooseButton){
if(event.dialog&&typeof event.dialog=='object') event.dialog.close();
var dialog=info.chooseButton.dialog(event,player);
if(info.chooseButton.chooseControl){
var next=player.chooseControl(info.chooseButton.chooseControl(event,player));
next.dialog=dialog;
next.set('ai',info.chooseButton.check||function(){return 0;});
}
else{
var next=player.chooseButton(dialog);
next.set('ai',info.chooseButton.check||function(){return 1;});
next.set('filterButton',info.chooseButton.filter||function(){return true;});
next.set('selectButton',info.chooseButton.select||1);
}
event.buttoned=event.result.skill;
}
else if(info&&info.precontent&&!game.online){
var next=game.createEvent('pre_'+event.result.skill);
next.setContent(info.precontent);
next.set('result',event.result);
next.set('player',player);
}
}
}
"step 3"
if(event.buttoned){
if(result.bool||result.control&&result.control!='cancel2'){
var info=get.info(event.buttoned).chooseButton;
lib.skill[event.buttoned+'_backup']=info.backup(info.chooseControl?result:result.links,player);
lib.skill[event.buttoned+'_backup'].sourceSkill=event.buttoned;
if(game.online){
event._sendskill=[event.buttoned+'_backup',lib.skill[event.buttoned+'_backup']];
}
event.backup(event.buttoned+'_backup');
if(info.prompt){
event.openskilldialog=info.prompt(info.chooseControl?result:result.links,player);
}
}
else{
ui.control.animate('nozoom',100);
event._aiexclude.add(event.buttoned);
}
event.goto(0);
delete event.buttoned;
}
"step 4"
delete _status.noclearcountdown;
if(event.skillDialog&&get.objtype(event.skillDialog)=='div'){
event.skillDialog.close();
}
if(event.result.bool&&!game.online){ if(event.result.bool&&!game.online){
if(event.result._sendskill){
lib.skill[event.result._sendskill[0]]=event.result._sendskill[1];
}
var info=get.info(event.result.skill); var info=get.info(event.result.skill);
if(info&&info.prerespond){ if(event.onresult){
info.prerespond(event.result,player); event.onresult(event.result);
} }
var next=player.respond(event.result.cards,event.result.card,event.animate,event.result.skill,event.source); if(event.result.skill){
if(event.result.noanimate) next.animate=false; if(info.direct&&!info.clearTime){
if(event.parent.card&&event.parent.type=='card'){ _status.noclearcountdown=true;
next.set('respondTo',[event.parent.player,event.parent.card]); }
} }
if(event.noOrdering) next.noOrdering=true; if(event.logSkill){
if(typeof event.logSkill=='string'){
player.logSkill(event.logSkill);
}
else if(Array.isArray(event.logSkill)){
player.logSkill.apply(player,event.logSkill);
}
}
if(!event.result.card&&event.result.skill){
event.result.used=event.result.skill;
player.useSkill(event.result.skill,event.result.cards,event.result.targets);
}
else{
if(info&&info.prerespond){
info.prerespond(event.result,player);
}
var next=player.respond(event.result.cards,event.result.card,event.animate,event.result.skill,event.source);
if(event.result.noanimate) next.animate=false;
if(event.parent.card&&event.parent.type=='card'){
next.set('respondTo',[event.parent.player,event.parent.card]);
}
if(event.noOrdering) next.noOrdering=true;
}
}
else if(event._sendskill){
event.result._sendskill=event._sendskill;
} }
if(event.dialog&&event.dialog.close) event.dialog.close(); if(event.dialog&&event.dialog.close) event.dialog.close();
if(!_status.noclearcountdown){
game.stopCountChoose();
}
}, },
chooseToDiscard:function(){ chooseToDiscard:function(){
"step 0" "step 0"
@ -14291,7 +14391,7 @@
console.log(player.name,event.skill); console.log(player.name,event.skill);
} }
if(document.getElementsByClassName('thrown').length){ if(document.getElementsByClassName('thrown').length){
if(event.skill&&get.info(event.skill).delay!==0) game.delayx(); if(event.skill&&get.info(event.skill).delay!==false&&get.info(event.skill).delay!==0) game.delayx();
} }
else{ else{
event.finish(); event.finish();
@ -14412,24 +14512,23 @@
if(event.noOrdering) next2.noOrdering=true; if(event.noOrdering) next2.noOrdering=true;
} }
} }
for(var i=0;i<cards.length;i++){ if(event.animate!=false&&event.throw!==false){
if(event.animate!=false) player.$throw(cards[i]); for(var i=0;i<cards.length;i++){
if(event.highlight){ player.$throw(cards[i]);
cards[i].clone.classList.add('thrownhighlight'); if(event.highlight){
game.addVideo('highlightnode',player,get.cardInfo(cards[i])); cards[i].clone.classList.add('thrownhighlight');
} game.addVideo('highlightnode',player,get.cardInfo(cards[i]));
var name='';
if(event.skill) name=get.translation(event.skill)+'';
if(event.card) name+=get.translation(event.card.name);
}
if(event.highlight){
game.broadcast(function(cards){
for(var i=0;i<cards.length;i++){
if(cards[i].clone){
cards[i].clone.classList.add('thrownhighlight');
}
} }
},cards); }
if(event.highlight){
game.broadcast(function(cards){
for(var i=0;i<cards.length;i++){
if(cards[i].clone){
cards[i].clone.classList.add('thrownhighlight');
}
}
},cards);
}
} }
event.trigger('respond'); event.trigger('respond');
'step 1' 'step 1'
@ -17548,7 +17647,7 @@
if(next.ai==undefined) next.ai=get.unuseful2; if(next.ai==undefined) next.ai=get.unuseful2;
if(next.prompt!=false){ if(next.prompt!=false){
if(typeof next.prompt=='string'){ if(typeof next.prompt=='string'){
next.dialog=next.prompt; //next.dialog=next.prompt;
} }
else{ else{
var str='请打出'+get.cnNumber(next.selectCard[0])+'张' var str='请打出'+get.cnNumber(next.selectCard[0])+'张'
@ -17569,7 +17668,7 @@
str+='响应'+lib.translate[cardname]; str+='响应'+lib.translate[cardname];
} }
} }
next.dialog=str; next.prompt=str;
} }
} }
next.setContent('chooseToRespond'); next.setContent('chooseToRespond');
@ -19943,10 +20042,8 @@
if(typeof card=='string') card={name:card,isCard:true}; if(typeof card=='string') card={name:card,isCard:true};
var info=get.info(card); var info=get.info(card);
if(info.multicheck&&!info.multicheck(card,this)) return false; if(info.multicheck&&!info.multicheck(card,this)) return false;
if(includecard!=false&&!lib.filter.cardEnabled(card,this)) return false; if(distance!==false&&!lib.filter.targetInRange(card,this,target)) return false;
if(includecard&&!lib.filter.cardUsable(card,this)) return false; return lib.filter[includecard?'targetEnabledx':'targetEnabled'](card,this,target);
if(distance==false) return lib.filter.targetEnabled(card,this,target);
return lib.filter.filterTarget(card,this,target);
}, },
hasUseTarget:function(card,distance,includecard){ hasUseTarget:function(card,distance,includecard){
var player=this; var player=this;
@ -24558,9 +24655,13 @@
return filterTarget(card,player,current); return filterTarget(card,player,current);
}); });
}, },
targetEnabled:function(card,player,target){ targetEnabledx:function(card,player,target){
if(!card) return false; if(!card) return false;
if(_status.event.addCount_extra&&!lib.filter.cardUsable2(card,player)&&!game.checkMod(card,player,target,false,'cardUsableTarget',player)) return false; if(_status.event.addCount_extra&&!lib.filter.cardUsable2(card,player)&&!game.checkMod(card,player,target,false,'cardUsableTarget',player)) return false;
return lib.filter.targetEnabled.apply(this,arguments);
},
targetEnabled:function(card,player,target){
if(!card) return false;
var info=get.info(card); var info=get.info(card);
var filter=info.filterTarget; var filter=info.filterTarget;
var mod=game.checkMod(card,player,target,'unchanged','playerEnabled',player); var mod=game.checkMod(card,player,target,'unchanged','playerEnabled',player);
@ -24636,7 +24737,7 @@
return true; return true;
}, },
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
return (lib.filter.targetEnabled(card,player,target)&& return (lib.filter.targetEnabledx(card,player,target)&&
lib.filter.targetInRange(card,player,target)); lib.filter.targetInRange(card,player,target));
}, },
filterTarget2:function(card,player,target){ filterTarget2:function(card,player,target){
@ -25351,7 +25452,7 @@
event=event||_status.event; event=event||_status.event;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2; if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardSavable',player); var mod=game.checkMod(card,player,event.dying,'unchanged','cardSavable',player);
if(mod!='unchanged') return mod; if(mod!='unchanged') return mod;
var savable=get.info(card).savable; var savable=get.info(card).savable;
if(typeof savable=='function') savable=savable(card,player,event.dying); if(typeof savable=='function') savable=savable(card,player,event.dying);
@ -46263,6 +46364,9 @@
} }
event.restore(); event.restore();
} }
else if(event.name=='chooseToUse'||event.name=='chooseToRespond'){
event.result.card=get.autoViewAs(event.result.cards[0]);
}
if(ui.skills) ui.skills.close(); if(ui.skills) ui.skills.close();
if(ui.skills2) ui.skills2.close(); if(ui.skills2) ui.skills2.close();
if(ui.skills3) ui.skills3.close(); if(ui.skills3) ui.skills3.close();

View File

@ -1,10 +1,9 @@
window.noname_update={ window.noname_update={
version:'1.9.105.10', version:'1.9.106',
update:'1.9.105.9.1', update:'1.9.105.10',
changeLog:[ changeLog:[
'鸣濑白羽', '银河射手-曹性、诸葛恪',
'3v3v2规则修复', 'bug修复',
'其他bug修复',
], ],
files:[ files:[
//'card/extra.js', //'card/extra.js',
@ -25,34 +24,34 @@ window.noname_update={
//'character/gujian.js', //'character/gujian.js',
//'character/gwent.js', //'character/gwent.js',
//'character/hearth.js', //'character/hearth.js',
//'character/mobile.js', 'character/mobile.js',
//'character/mtg.js', //'character/mtg.js',
//'character/old.js', //'character/old.js',
'character/rank.js', 'character/rank.js',
'character/refresh.js', 'character/refresh.js',
//'character/shenhua.js', 'character/shenhua.js',
'character/sp.js', 'character/sp.js',
'character/sp2.js', 'character/sp2.js',
//'character/tw.js', //'character/tw.js',
//'character/standard.js', 'character/standard.js',
//'character/swd.js', //'character/swd.js',
//'character/xianjian.js', //'character/xianjian.js',
//'character/xinghuoliaoyuan.js', //'character/xinghuoliaoyuan.js',
'character/yijiang.js', 'character/yijiang.js',
'character/yxs.js', //'character/yxs.js',
//'extension/boss/extension.js', //'extension/boss/extension.js',
//'layout/default/layout.css', //'layout/default/layout.css',
//'layout/nova/layout.css', //'layout/nova/layout.css',
'mode/identity.js', //'mode/identity.js',
//'mode/doudizhu.js', //'mode/doudizhu.js',
'mode/guozhan.js', 'mode/guozhan.js',
'mode/chess.js', //'mode/chess.js',
//'mode/tafang.js', //'mode/tafang.js',
//'mode/single.js', //'mode/single.js',
//'mode/stone.js', //'mode/stone.js',
//'mode/brawl.js', //'mode/brawl.js',
//'mode/versus.js', //'mode/versus.js',
'mode/boss.js', //'mode/boss.js',
'game/game.js', 'game/game.js',
//'game/keyWords.js', //'game/keyWords.js',
//'game/server.js', //'game/server.js',

BIN
image/character/caoxing.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

BIN
image/skin/key_miki/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

BIN
image/skin/key_nao/4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

BIN
image/skin/key_shiki/5.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

BIN
image/skin/key_shiki/6.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

BIN
image/skin/key_umi/2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

View File

@ -4021,68 +4021,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
} }
} }
},*/ },*/
yongjin:{
unique:true,
limited:true,
skillAnimation:true,
animationColor:'wood',
enable:'phaseUse',
content:function(){
'step 0'
player.awakenSkill('yongjin');
event.count=3;
'step 1'
player.moveCard().nojudge=true;
event.count--;
'step 2'
if(event.count&&result.bool) event.goto(1);
},
ai:{
order:7,
result:{
player:function(player){
var num=0;
var friends=game.filterPlayer(function(current){
return get.attitude(player,current)>=4;
});
var vacancies={
equip1:0,
equip2:0,
equip3:0,
equip4:0,
equip5:0
};
for(var i=0;i<friends.length;i++){
for(var j=1;j<=5;j++){
if(friends[i].isEmpty(j)){
vacancies['equip'+j]++;
}
}
}
var sources=game.filterPlayer(function(current){
return get.attitude(player,current)<0&&current.countCards('e');
});
for(var i=0;i<sources.length;i++){
var es=sources[i].getCards('e');
for(var j=0;j<es.length;j++){
var type=get.subtype(es[j]);
if(vacancies[type]&&get.value(es[j])>0){
num++;
if(num>=3){
return 1;
}
vacancies[type]--;
}
}
}
if(num&&player.hp==1){
return 0.5;
}
return 0;
}
}
}
},
xuanlve:{ xuanlve:{
trigger:{ trigger:{
player:'loseAfter', player:'loseAfter',
@ -7564,8 +7502,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gzdiancai_info:'其他角色的出牌阶段结束时若你于此阶段失去了x张或更多的牌则你可以将手牌摸至体力上限。若如此做你可以变更副将x为你的体力值。', gzdiancai_info:'其他角色的出牌阶段结束时若你于此阶段失去了x张或更多的牌则你可以将手牌摸至体力上限。若如此做你可以变更副将x为你的体力值。',
xuanlve:'旋略', xuanlve:'旋略',
xuanlve_info:'当你失去装备区里的牌后,你可以弃置一名其他角色的一张牌。', xuanlve_info:'当你失去装备区里的牌后,你可以弃置一名其他角色的一张牌。',
yongjin:'勇进',
yongjin_info:'限定技,出牌阶段,你可以依次移动场上的至多三张装备牌。',
lianzi:'敛资', lianzi:'敛资',
lianzi_info:'出牌阶段限一次你可以弃置一张手牌然后亮出牌堆顶X张牌X为吴势力角色装备区里的牌和“烽火”的总和获得其中所有与你弃置牌类别相同的牌将其余的牌置入弃牌堆若你以此法一次获得了三张或更多的牌则你失去技能〖敛资〗并获得技能〖制衡〗。', lianzi_info:'出牌阶段限一次你可以弃置一张手牌然后亮出牌堆顶X张牌X为吴势力角色装备区里的牌和“烽火”的总和获得其中所有与你弃置牌类别相同的牌将其余的牌置入弃牌堆若你以此法一次获得了三张或更多的牌则你失去技能〖敛资〗并获得技能〖制衡〗。',
gzqice:'奇策', gzqice:'奇策',