新版OL谋关羽
This commit is contained in:
parent
83a995563c
commit
bc87bb4373
|
@ -94,7 +94,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return false;
|
||||
},
|
||||
filter(event,player){
|
||||
if(player.countMark('dclonghun')>=20) return false;
|
||||
var filter=event.filterCard;
|
||||
if(filter({name:'sha',nature:'fire'},player,event)&&player.countCards('hes',{suit:'diamond'})) return true;
|
||||
if(filter({name:'shan'},player,event)&&player.countCards('hes',{suit:'club'})) return true;
|
||||
|
@ -102,17 +101,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(filter({name:'wuxie'},player,event)&&player.countCards('hes',{suit:'spade'})) return true;
|
||||
return false;
|
||||
},
|
||||
precontent(){
|
||||
if(!player.hasMark('dclonghun')){
|
||||
player.when({global:'phaseAfter'}).then(()=>player.removeMark('dclonghun',player.countMark('dclonghun'),false));
|
||||
}
|
||||
player.addMark('dclonghun',1,false);
|
||||
},
|
||||
usable:20,
|
||||
ai:{
|
||||
respondSha:true,
|
||||
respondShan:true,
|
||||
skillTagFilter(player,tag){
|
||||
if(player.countMark('dclonghun')>=20) return false;
|
||||
if((player.getStat('skill').dclonghun||0)>=20) return false;
|
||||
var name;
|
||||
switch(tag){
|
||||
case 'respondSha':name='diamond';break;
|
||||
|
@ -142,7 +136,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
hiddenCard(player,name){
|
||||
if(player.countMark('dclonghun')>=20) return false;
|
||||
if((player.getStat('skill').dclonghun||0)>=20) return false;
|
||||
if(name=='wuxie'&&_status.connectMode&&player.countCards('hes')>0) return true;
|
||||
if(name=='wuxie') return player.countCards('hes',{suit:'spade'})>0;
|
||||
if(name=='tao') return player.countCards('hes',{suit:'heart'})>0;
|
||||
|
|
|
@ -8,7 +8,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ol_caozhang:['male','wei',4,['oljiangchi'],['die_audio:xin_caozhang']],
|
||||
ol_jianyong:['male','shu',3,['olqiaoshui','jyzongshi'],['tempname:re_jianyong','die_audio:re_jianyong']],
|
||||
ol_lingtong:['male','wu',4,['olxuanfeng'],['die_audio:re_lingtong']],
|
||||
ol_sb_guanyu:['male','shu',4,['olsbfumeng','olsbguidao']],
|
||||
ol_sb_guanyu:['male','shu',4,['olsbweilin','olsbduoshou']],
|
||||
ol_sb_taishici:['male','wu',4,['olsbdulie','olsbdouchan']],
|
||||
},
|
||||
characterSort:{
|
||||
|
@ -23,6 +23,165 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
characterReplace:{
|
||||
},
|
||||
skill:{
|
||||
//新OL谋关羽
|
||||
olsbweilin:{
|
||||
audio:2,
|
||||
enable:'chooseToUse',
|
||||
filter(event,player){
|
||||
return get.inpileVCardList(info=>{
|
||||
return get.type(info[2])=='basic';
|
||||
}).some(card=>player.hasCard(cardx=>event.filterCard({name:card[2],nature:card[3],cards:[cardx]},player,event),'hes'));
|
||||
},
|
||||
usable:1,
|
||||
chooseButton:{
|
||||
dialog(event,player){
|
||||
const list=get.inpileVCardList(info=>{
|
||||
return get.type(info[2])=='basic';
|
||||
}).filter(card=>player.hasCard(cardx=>event.filterCard({name:card[2],nature:card[3],cards:[cardx]},player,event),'hes'));
|
||||
return ui.create.dialog('威临',[list,'vcard']);
|
||||
},
|
||||
filter(button,player){
|
||||
return _status.event.getParent().filterCard({name:button.link[2],nature:button.link[3]},player,_status.event.getParent());
|
||||
},
|
||||
check(button){
|
||||
if(_status.event.getParent().type!='phase') return 1;
|
||||
const player=get.event('player'),value=player.getUseValue({name:button.link[2],nature:button.link[3]});
|
||||
if(button.link[2]=='sha'&&!player.getHistory('useCard',evt=>get.type(evt.card)=='basic').length){
|
||||
if(value>0) return value+20;
|
||||
}
|
||||
return value;
|
||||
},
|
||||
backup(links,player){
|
||||
return {
|
||||
audio:'olsbweilin',
|
||||
filterCard:true,
|
||||
popname:true,
|
||||
check(card){
|
||||
const name=lib.skill.olsbweilin_backup.viewAs.name,color=get.color(card);
|
||||
const phase=(_status.event.getParent().type=='phase');
|
||||
if(phase&&name=='sha'&&color=='red') return 10-get.value(card);
|
||||
if(name=='tao') return 7+[-2,0,2][['black','red','none'].indexOf(color)]-get.value(card);
|
||||
return 6-get.value(card);
|
||||
},
|
||||
position:'hse',
|
||||
viewAs:{name:links[0][2],nature:links[0][3]},
|
||||
precontent(){
|
||||
if(!player.storage.olsbweilin_backup){
|
||||
player.storage.olsbweilin_backup=true;
|
||||
player.when('useCardToTargeted')
|
||||
.filter(evt=>evt.getParent().skill=='olsbweilin_backup'&&evt.getParent().triggeredTargets3.length==evt.targets.length)
|
||||
.then(()=>{
|
||||
delete player.storage.olsbweilin_backup;
|
||||
const targets=trigger.targets.slice().sortBySeat();
|
||||
player.line(targets);
|
||||
for(const target of targets){
|
||||
target.addTempSkill('olsbweilin_wusheng');
|
||||
target.markAuto('olsbweilin_wusheng',[get.color(trigger.card)]);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter(player,tag,arg){
|
||||
if(get.event('skill')!='olsbweilin_backup') return false;
|
||||
return arg&&arg.card&&arg.card.name=='sha'&&get.color(arg.card)=='red';
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
prompt(links,player){
|
||||
return '将一张牌当作'+(get.translation(links[0][3])||'')+'【'+get.translation(links[0][2])+'】使用';
|
||||
}
|
||||
},
|
||||
hiddenCard(player,name){
|
||||
if(!lib.inpile.includes(name)) return false;
|
||||
return get.type(name)=='basic'&&!player.getStat('skill').olsbweilin&&player.countCards('hes');
|
||||
},
|
||||
ai:{
|
||||
fireAttack:true,
|
||||
respondSha:true,
|
||||
respondShan:true,
|
||||
skillTagFilter(player){
|
||||
if(player.getStat('skill').olsbweilin||!player.countCards('hes')) return false;
|
||||
},
|
||||
order(item,player){
|
||||
if(player&&_status.event.type=='phase'){
|
||||
let max=0,names=get.inpileVCardList(info=>get.type(info[2])=='basic');
|
||||
names=names.map(namex=>{return {name:namex[2],nature:namex[3]}});
|
||||
names.forEach(card=>{
|
||||
if(player.getUseValue(card)>0){
|
||||
let temp=get.order(card);
|
||||
if(card.name=='jiu'){
|
||||
let cards=player.getCards('hs',cardx=>get.value(cardx)<8);
|
||||
cards.sort((a,b)=>get.value(a)-get.value(b));
|
||||
if(!cards.some(cardx=>get.name(cardx)=='sha'&&!cards.slice(0,2).includes(cardx))) temp=0;
|
||||
}
|
||||
if(temp>max) max=temp;
|
||||
}
|
||||
});
|
||||
if(max>0) max+=3;
|
||||
return max;
|
||||
}
|
||||
return 0.5;
|
||||
},
|
||||
result:{
|
||||
player(player){
|
||||
if(_status.event.dying) return get.attitude(player,_status.event.dying);
|
||||
return 1;
|
||||
},
|
||||
},
|
||||
},
|
||||
subSkill:{
|
||||
backup:{},
|
||||
wusheng:{
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
mod:{
|
||||
cardname(card,player){
|
||||
if(player.getStorage('olsbweilin_wusheng').includes(get.color(card))) return 'sha';
|
||||
},
|
||||
},
|
||||
intro:{content:'手牌中所有$牌均视为【杀】'},
|
||||
},
|
||||
},
|
||||
},
|
||||
olsbduoshou:{
|
||||
init(player){
|
||||
if(player.getHistory('useCard',evt=>get.color(evt.card)=='red').length) player.addTempSkill('olsbduoshou_used');
|
||||
},
|
||||
mod:{
|
||||
targetInRange(card,player,target){
|
||||
if(get.color(card)=='red'&&!player.hasSkill('olsbduoshou_used')) return true;
|
||||
},
|
||||
},
|
||||
audio:2,
|
||||
trigger:{
|
||||
player:'useCard',
|
||||
source:'damageSource',
|
||||
},
|
||||
filter(event,player){
|
||||
if(event.name=='damage') return player.getHistory('sourceDamage').indexOf(event)==0;
|
||||
if(get.color(event.card)=='red'&&!player.hasSkill('olsbduoshou_used')) return true;
|
||||
return get.type(event.card)=='basic'&&player.getHistory('useCard',evt=>get.type(evt.card)=='basic').indexOf(event)==0;
|
||||
},
|
||||
forced:true,
|
||||
async content(event,trigger,player){
|
||||
if(trigger.name=='damage') player.draw();
|
||||
else{
|
||||
if(get.color(trigger.card)=='red'&&!player.hasSkill('olsbduoshou_used')){
|
||||
game.log(trigger.card,'无距离限制');
|
||||
player.addTempSkill('olsbduoshou_used');
|
||||
}
|
||||
if(get.type(trigger.card)=='basic'&&player.getHistory('useCard',evt=>get.type(evt.card)=='basic').indexOf(trigger)==0){
|
||||
game.log(trigger.card,'不计入次数上限');
|
||||
trigger.addCount=false;
|
||||
if(player.stat[player.stat.length-1].card.sha>0) player.stat[player.stat.length-1].card.sha--;
|
||||
}
|
||||
}
|
||||
},
|
||||
subSkill:{used:{charlotte:true}},
|
||||
},
|
||||
//OL谋太史慈
|
||||
olsbdulie:{
|
||||
audio:2,
|
||||
|
@ -559,6 +718,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
olsbdulie_info:'每回合限一次,当你成为其他角色使用基本牌或普通锦囊牌的目标时,你可以令此牌额外结算一次。若如此做,此牌结算完毕后,你摸X张牌(X为你的攻击范围且至多为5)。',
|
||||
olsbdouchan:'斗缠',
|
||||
olsbdouchan_info:'锁定技,准备阶段,你从牌堆中获得一张【决斗】,若牌堆没有【决斗】,则你的攻击范围和出牌阶段使用【杀】的次数上限+1(增加次数不超过游戏人数)。',
|
||||
olsbweilin:'威临',
|
||||
olsbweilin_info:'每回合限一次,你可以将一张牌当作任意基本牌使用,且你以此法使用的牌指定最后一个目标后,你令所有目标角色本回合与此牌颜色相同的手牌均视为【杀】。',
|
||||
olsbduoshou:'夺首',
|
||||
olsbduoshou_info:'锁定技。①你每回合使用的第一张红色牌无距离限制。②你每回合使用的第一张基本牌不计入使用次数。③你每回合第一次造成伤害后,你摸一张牌。',
|
||||
|
||||
onlyOL_yijiang1:'OL专属·将1',
|
||||
onlyOL_yijiang2:'OL专属·将2',
|
||||
|
|
Loading…
Reference in New Issue