v1.9.117
23
card/sp.js
|
@ -16,7 +16,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
if(evt.jinchan){
|
||||
var type=get.type(evt.card,'trick');
|
||||
if(type=='basic'||type=='trick'){
|
||||
evt.cancel();
|
||||
evt.neutralize();
|
||||
}
|
||||
}
|
||||
player.draw(2);
|
||||
|
@ -544,18 +544,25 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
g_jinchan2:{
|
||||
trigger:{player:'discardAfter'},
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
forced:true,
|
||||
cardSkill:true,
|
||||
filter:function(event,player){
|
||||
for(var i=0;i<event.cards.length;i++){
|
||||
if(event.cards[i].name=='jinchan') return true;
|
||||
if(event.type!='discard') return false;
|
||||
var evt=event.getl(player);
|
||||
if(!evt||!evt.cards2||!evt.cards2.length) return false;
|
||||
for(var i of evt.cards2){
|
||||
if(i.name=='jinchan') return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
var num=0;
|
||||
for(var i=0;i<trigger.cards.length;i++){
|
||||
if(trigger.cards[i].name=='jinchan') num++;
|
||||
var num=0,cards=trigger.getl(player).cards2;
|
||||
for(var i=0;i<cards.length;i++){
|
||||
if(cards[i].name=='jinchan') num++;
|
||||
}
|
||||
if(num){
|
||||
player.draw(num);
|
||||
|
@ -614,7 +621,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
jinchan:'金蝉脱壳',
|
||||
g_jinchan2:'金蝉脱壳',
|
||||
g_jinchan2_info:'当你因弃置而失去【金蝉脱壳】时,你摸一张牌',
|
||||
jinchan_info:'当你成为其他角色使用牌的目标时,若你的手牌里只有【金蝉脱壳】,使目标锦囊牌或基本牌对你无效,你摸两张牌。当你因弃置而失去【金蝉脱壳】时,你摸一张牌。',
|
||||
jinchan_info:'其他角色使用的基本牌或普通牌对你生效时,若你的所有手牌均为【金蝉脱壳】,则你可以使用此牌。你令此牌对你无效并摸两张牌。当你因弃置而失去【金蝉脱壳】时,你摸一张牌。',
|
||||
fulei:'浮雷',
|
||||
fulei_info:'出牌阶段,对你使用。你将【浮雷】置入判定区。若判定结果为♠,则目标角色受到X点雷电伤害(X为此牌判定结果为♠的次数)。判定完成后,将此牌移动到下家的判定区里。',
|
||||
qibaodao:'七宝刀',
|
||||
|
|
|
@ -1585,21 +1585,24 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
complexSelect:true,
|
||||
complexTarget:true,
|
||||
multicheck:function(){
|
||||
var card={name:'sha',isCard:true};
|
||||
return game.hasPlayer(function(current){
|
||||
if(current.getEquip(1)){
|
||||
return game.hasPlayer(function(current2){
|
||||
return current.inRange(current2)&¤t.canUse('sha',current2,false);
|
||||
return current.inRange(current2)&&lib.filter.targetEnabled(card,current,current2);
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
var card={name:'sha',isCard:true};
|
||||
return player!=target&&target.getEquip(1)&&game.hasPlayer(function(current){
|
||||
return target!=current&&target.inRange(current)&&target.canUse('sha',current,false);
|
||||
return target!=current&&target.inRange(current)&&lib.filter.targetEnabled(card,target,current);
|
||||
});
|
||||
},
|
||||
filterAddedTarget:function(card,player,target,preTarget){
|
||||
return target!=preTarget&&preTarget.inRange(target)&&preTarget.canUse('sha',target,false);
|
||||
var card={name:'sha',isCard:true};
|
||||
return target!=preTarget&&preTarget.inRange(target)&&lib.filter.targetEnabled(card,preTarget,target);
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
|
@ -2108,7 +2111,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{
|
||||
player:['damage','damageCancelled','damageZero'],
|
||||
source:['damage','damageCancelled','damageZero'],
|
||||
target:['shaMiss','useCardToExcluded','useCardToEnd'],
|
||||
target:['shaMiss','useCardToExcluded','useCardToEnd','eventNeutralized'],
|
||||
global:['useCardEnd'],
|
||||
},
|
||||
charlotte:true,
|
||||
|
@ -2128,15 +2131,15 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
qinglong_skill:{
|
||||
equipSkill:true,
|
||||
trigger:{player:'shaMiss'},
|
||||
trigger:{player:['shaMiss','eventNeutralized']},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(get.mode()=='guozhan') return false;
|
||||
return player.canUse('sha',event.target,false)&&(player.hasSha()||_status.connectMode&&player.countCards('h'));
|
||||
if(get.mode()=='guozhan'||!event.card||event.card.name!='sha') return false;
|
||||
return event.target.isIn&&player.canUse('sha',event.target,false)&&(player.hasSha()||_status.connectMode&&player.countCards('h'));
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.chooseToUse(get.prompt('qinglong'),function(card,player,event){
|
||||
player.chooseToUse(get.prompt('qinglong',trigger.target),function(card,player,event){
|
||||
if(get.name(card)!='sha') return false;
|
||||
return lib.filter.filterCard.apply(this,arguments);
|
||||
},trigger.target,-1).set('addCount',false).logSkill='qinglong_skill';
|
||||
|
@ -2168,10 +2171,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
guanshi_skill:{
|
||||
equipSkill:true,
|
||||
trigger:{player:'shaMiss'},
|
||||
trigger:{
|
||||
player:['shaMiss','eventNeutralized'],
|
||||
},
|
||||
direct:true,
|
||||
audio:true,
|
||||
filter:function(event,player){
|
||||
if(event.type!='card'||event.card.name!='sha') return false;
|
||||
return player.countCards('he',function(card){
|
||||
return card!=player.getEquip('guanshi');
|
||||
})>=2&&event.target.isAlive();
|
||||
|
@ -2194,10 +2200,15 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
trigger.untrigger();
|
||||
trigger.trigger('shaHit');
|
||||
trigger._result.bool=false;
|
||||
trigger._result.result=null;
|
||||
if(event.triggername=='shaMiss'){
|
||||
trigger.untrigger();
|
||||
trigger.trigger('shaHit');
|
||||
trigger._result.bool=false;
|
||||
trigger._result.result=null;
|
||||
}
|
||||
else{
|
||||
trigger.unneutralize();
|
||||
}
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
|
@ -2570,7 +2581,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
trigger.cancelled=true;
|
||||
}
|
||||
else{
|
||||
trigger.cancel();
|
||||
trigger.neutralize();
|
||||
if(event.guowuxie==true){
|
||||
if(trigger.target.identity!='ye'&&trigger.target.identity!='unknown'){
|
||||
trigger.getParent().excluded.addArray(game.filterPlayer(function(current){
|
||||
|
|
|
@ -299,7 +299,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
notarget:true,
|
||||
content:function(){
|
||||
var evt2=event.getParent(3)._trigger;
|
||||
evt2.cancel();
|
||||
evt2.neutralize();
|
||||
var evt=evt2.getParent();
|
||||
var next=game.createEvent('caochuan_gain');
|
||||
_status.event.next.remove(next);
|
||||
|
|
143
character/diy.js
|
@ -86,6 +86,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
key_kyouko:['female','key',3,['kyouko_rongzhu','kyouko_gongmian']],
|
||||
key_kyou:['female','key',3,['kyou_zhidian','kyou_duanfa']],
|
||||
key_seira:['female','key',3,['seira_xinghui','seira_yuanying']],
|
||||
key_kiyu:['female','key',3,['kiyu_yuling','kiyu_xianyu']],
|
||||
|
||||
ns_huangchengyan:['male','shu',3,['nslongyue','nszhenyin']],
|
||||
ns_sunchensunjun:['male','wu',5,['nsxianhai','nsxingchu']],
|
||||
|
@ -202,7 +203,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"ns_huangchengyan","ns_sunchensunjun","ns_yuanxi","ns_caoshuang"],
|
||||
diy_yijiang2:["key_yuuki","key_tenzen","key_kyouko","key_kotarou","key_kyou",
|
||||
"ns_chentai","ns_huangwudie","ns_sunyi","ns_zhangning","ns_yanghu"],
|
||||
diy_yijiang3:['ns_ruanji','ns_zanghong','ns_limi','ns_zhonglimu','prp_zhugeliang','key_seira'],
|
||||
diy_yijiang3:['ns_ruanji','ns_zanghong','ns_limi','ns_zhonglimu','prp_zhugeliang','key_seira','key_kiyu'],
|
||||
diy_tieba:["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_luyusheng"],
|
||||
diy_fakenews:["diy_wenyang","ns_zhangwei","ns_caimao","ns_chengpu"],
|
||||
diy_xushi:["diy_feishi","diy_hanlong","diy_liufu","diy_liuyan","diy_liuzan","diy_tianyu","diy_xizhenxihong","diy_yangyi","diy_zaozhirenjun"],
|
||||
|
@ -305,6 +306,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
key_tenzen:'#b皋耳击',
|
||||
key_kotarou:'#bb1154486224',
|
||||
key_seira:'#b阿开木木W🍀',
|
||||
key_kiyu:'#b无面◎隐者',
|
||||
|
||||
ns_huangchengyan:'#g竹邀月',
|
||||
ns_sunchensunjun:'#gVenusjeu',
|
||||
|
@ -527,6 +529,117 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
key_lucia:['key_shizuru'],
|
||||
},
|
||||
skill:{
|
||||
//天宫希优
|
||||
kiyu_yuling:{
|
||||
mod:{
|
||||
targetEnabled:function(card){
|
||||
var info=get.info(card);
|
||||
if(!info||(info.type!='trick'&&info.type!='delay')) return;
|
||||
if(info.range) return false;
|
||||
},
|
||||
},
|
||||
trigger:{target:'useCardToTargeted'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
return event.card.name=='sha'&&event.player.countCards('he')>0;
|
||||
},
|
||||
logTarget:'player',
|
||||
content:function(){
|
||||
trigger.player.chooseToDiscard('he',true,get.distance(trigger.player,player));
|
||||
},
|
||||
ai:{
|
||||
threaten:0.7,
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
if(card.name=='sha') return 0.7;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
kiyu_xianyu:{
|
||||
trigger:{global:'phaseUseBegin'},
|
||||
charlotte:true,
|
||||
round:1,
|
||||
filter:function(event,player){
|
||||
return event.player.countCards('h')>0;
|
||||
},
|
||||
logTarget:'player',
|
||||
check:function(event,player){
|
||||
var target=event.player;
|
||||
var next=target.next;
|
||||
if(target.getSeatNum()>next.getSeatNum()) return true;
|
||||
if(target.countCards('h')<4&&target.countCards('h',function(card){
|
||||
return target.hasUseTarget(card,null,true);
|
||||
})<2) return false;
|
||||
return true;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var target=trigger.player,cards=target.getCards('h');
|
||||
var next=player.chooseToMove('先预:预测'+get.translation(target)+'使用牌的顺序',true);
|
||||
next.set('list',[
|
||||
[get.translation(target)+'的手牌',cards]
|
||||
]);
|
||||
next.set('processAI',function(list){
|
||||
var cards=list[0][1].slice(0);
|
||||
var target=_status.event.getTrigger().player;
|
||||
cards.sort(function(a,b){
|
||||
return get.order(b,target)-get.order(a,target);
|
||||
});
|
||||
return [cards];
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var list=result.moved[0];
|
||||
player.storage.kiyu_xianyu_lastrun=list;
|
||||
player.addTempSkill('kiyu_xianyu_lastrun',list);
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
lastrun:{
|
||||
trigger:{global:'phaseUseAfter'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
content:function(){
|
||||
var num=0,index=-1,target=trigger.player;
|
||||
var cards=player.getStorage('kiyu_xianyu_lastrun');
|
||||
var history=target.getHistory('useCard',function(event){
|
||||
return event.getParent('phaseUse')==trigger;
|
||||
});
|
||||
for(var evt of history){
|
||||
var goon=false;
|
||||
for(var card of evt.cards){
|
||||
var index2=cards.indexOf(card);
|
||||
if(index2>index){
|
||||
goon=true;
|
||||
index=index2;
|
||||
}
|
||||
}
|
||||
if(goon) num++;
|
||||
}
|
||||
if(num>0){
|
||||
num=Math.min(3,num);
|
||||
player.draw(num);
|
||||
if(target.isIn()){
|
||||
target.addTempSkill('kiyu_xianyu_effect');
|
||||
target.addMark('kiyu_xianyu_effect',num,false);
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
effect:{
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
mod:{
|
||||
maxHandcard:function(player,num){
|
||||
return num+player.countMark('kiyu_xianyu_effect');
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//樱庭星罗
|
||||
seira_xinghui:{
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
|
@ -6255,9 +6368,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
kyoko_juwu:{
|
||||
trigger:{global:['loseAfter','cardsDiscardAfter']},
|
||||
trigger:{global:['loseAfter','cardsDiscardAfter','loseAsyncAfter']},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(event.name.indexOf('lose')==0&&(event.getlx===false||event.position!=ui.discardPile)) return false;
|
||||
return player!=event.player&&player!=_status.currentPhase&&event.cards&&event.cards.filter(function(card){
|
||||
return get.position(card,true)=='d'&&get.type(card,false)=='equip';
|
||||
}).length>0;
|
||||
|
@ -7120,6 +7234,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
tomoya_shangxian:{
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
mark:true,
|
||||
locked:true,
|
||||
intro:{
|
||||
content:function(s){
|
||||
return '计算与其他角色的距离时始终从'+(s?'逆':'顺')+'时针计算'
|
||||
|
@ -8835,14 +8950,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(player!=_status.currentPhase) return false;
|
||||
if(event.name=='lose'&&event.position!=ui.discardPile) return false;
|
||||
if(event.name.indexOf('lose')==0&&(event.getlx===false||event.position!=ui.discardPile)) return false;
|
||||
var list=[];
|
||||
for(var i=0;i<event.cards.length;i++){
|
||||
var card=event.cards[i];
|
||||
list.add(card.suit);
|
||||
}
|
||||
game.getGlobalHistory('cardMove',function(evt){
|
||||
if(evt==event||(evt.name!='lose'&&evt.name!='cardsDiscard')) return false;
|
||||
if(evt==event||evt.getParent()==event||(evt.name!='lose'&&evt.name!='cardsDiscard')) return false;
|
||||
if(evt.name=='lose'&&evt.position!=ui.discardPile) return false;
|
||||
for(var i=0;i<evt.cards.length;i++){
|
||||
var card=evt.cards[i];
|
||||
|
@ -8861,7 +8976,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
list2.add(suit);
|
||||
}
|
||||
game.getGlobalHistory('cardMove',function(evt){
|
||||
if(evt==trigger||(evt.name!='lose'&&evt.name!='cardsDiscard')) return false;
|
||||
if(evt==trigger||evt.getParent()==trigger||(evt.name!='lose'&&evt.name!='cardsDiscard')) return false;
|
||||
if(evt.name=='lose'&&evt.position!=ui.discardPile) return false;
|
||||
for(var i=0;i<evt.cards.length;i++){
|
||||
var card=evt.cards[i];
|
||||
|
@ -9830,18 +9945,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
noname_duocai:{
|
||||
trigger:{
|
||||
global:"loseAfter",
|
||||
global:["loseAfter","loseAsyncAfter"],
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(event.type!='discard'||event.player==player) return false;
|
||||
return event.cards&&event.cards.filterInD('d').length>0&&!player.hasSkill('noname_duocai2');
|
||||
if(event.type!='discard'||event.getlx===false) return false;
|
||||
var evt=event.getl(player);
|
||||
var cards=event.cards.slice(0);
|
||||
if(evt&&evt.cards) cards.removeArray(evt.cards);
|
||||
return cards.filterInD('d').length>0&&!player.hasSkill('noname_duocai2');
|
||||
},
|
||||
direct:true,
|
||||
charlotte:true,
|
||||
content:function(){
|
||||
"step 0"
|
||||
if(trigger.delay==false&&player!=game.me&&!player.isOnline()) game.delay();
|
||||
var cards=trigger.cards.filterInD('d');
|
||||
var evt=trigger.getl(player);
|
||||
var cards=trigger.cards.slice(0);
|
||||
cards.removeArray(evt.cards);
|
||||
player.chooseButton([get.prompt('noname_duocai'),cards],[1,cards.length]);
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
|
@ -16665,6 +16785,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
seira_yuanying_info:'出牌阶段限一次,你可选择两名角色。这两名角色成为“姻缘者”且获得〖姻缘〗直到你下次发动〖缘映〗。',
|
||||
seira_yinyuan:'姻缘',
|
||||
seira_yinyuan_info:'你的手牌对其他“姻缘者”可见。出牌阶段限一次,你可以获得一名其他“姻缘者”区域内的一张牌,然后其回复1点体力。',
|
||||
key_kiyu:'露娜Q',
|
||||
kiyu_yuling:'玉灵',
|
||||
kiyu_yuling_info:'锁定技。你不是有距离限制的锦囊牌的合法目标;你成为【杀】的目标后,使用者需弃置X张牌(X为其至你的距离)。',
|
||||
kiyu_xianyu:'先预',
|
||||
kiyu_xianyu_info:'每轮限一次。一名角色的出牌阶段开始时,你可观看其手牌并预测其使用这些牌的顺序。此出牌阶段结束时,你摸X张牌,且其本回合的手牌上限+X(X为你的预测与其实际使用顺序的吻合数且至多为3)。',
|
||||
|
||||
noname:"小无",
|
||||
noname_zhuyuan:"祝愿",
|
||||
|
|
|
@ -1028,11 +1028,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
tianren:{
|
||||
audio:2,
|
||||
trigger:{global:['loseAfter','cardsDiscardAfter']},
|
||||
trigger:{global:['loseAfter','cardsDiscardAfter','loseAsyncAfter']},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(event.name=='lose'){
|
||||
if(event.position!=ui.discardPile) return false;
|
||||
if(event.name.indexOf('lose')==0){
|
||||
if(event.getlx===false||event.position!=ui.discardPile) return false;
|
||||
}
|
||||
else{
|
||||
var evt=event.getParent();
|
||||
|
@ -1643,17 +1643,29 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
dinghan:{
|
||||
audio:2,
|
||||
trigger:{target:'useCardToTarget'},
|
||||
trigger:{
|
||||
target:'useCardToTarget',
|
||||
player:'addJudgeBefore',
|
||||
},
|
||||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
return get.type2(event.card)=='trick'&&!player.getStorage('dinghan').contains(event.card.name);
|
||||
if(event.name=='useCardToTarget'&&get.type(event.card,null,false)!='trick') return false;
|
||||
return !player.getStorage('dinghan').contains(event.card.name);
|
||||
},
|
||||
content:function(){
|
||||
player.markAuto('dinghan',[trigger.card.name]);
|
||||
trigger.targets.remove(player);
|
||||
trigger.getParent().triggeredTargets2.remove(player);
|
||||
trigger.untrigger();
|
||||
player.markAuto('dinghan',[trigger.card.name]);if(trigger.name=='addJudge'){
|
||||
trigger.cancel();
|
||||
var owner=get.owner(trigger.card);
|
||||
if(owner&&owner.getCards('hej').contains(trigger.card)) owner.lose(trigger.card,ui.discardPile);
|
||||
else game.cardsDiscard(trigger.card);
|
||||
game.log(trigger.card,'进入了弃牌堆');
|
||||
}
|
||||
else{
|
||||
trigger.targets.remove(player);
|
||||
trigger.getParent().triggeredTargets2.remove(player);
|
||||
trigger.untrigger();
|
||||
}
|
||||
},
|
||||
onremove:true,
|
||||
intro:{content:'已记录牌名:$'},
|
||||
|
@ -3584,15 +3596,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
renjie2:{
|
||||
audio:2,
|
||||
trigger:{player:'loseAfter'},
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(event.type!='discard'||!event.cards2) return false;
|
||||
var evt=event.getParent('phaseDiscard');
|
||||
return evt&&evt.name=='phaseDiscard'&&evt.player==player;
|
||||
if(event.type!='discard'||event.getlx===false) return false;
|
||||
var evt=event.getParent('phaseDiscard'),evt2=event.getl(player);
|
||||
return evt&&evt2&&evt.name=='phaseDiscard'&&evt.player==player&&evt2.cards2&&evt2.cards2.length>0;
|
||||
},
|
||||
content:function(){
|
||||
player.addMark('renjie',trigger.cards2.length);
|
||||
player.addMark('renjie',trigger.getl(player).cards2.length);
|
||||
}
|
||||
},
|
||||
sbaiyin:{
|
||||
|
@ -5520,8 +5535,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
};
|
||||
};
|
||||
if(event.list1.length&&event.list2.length){
|
||||
target.discard(event.list2).delay=false;
|
||||
player.discard(event.list1);
|
||||
game.loseAsync({
|
||||
lose_list:[
|
||||
[player,event.list1],
|
||||
[target,event.list2]
|
||||
],
|
||||
}).setContent('discardMultiple');
|
||||
}
|
||||
else if(event.list2.length){
|
||||
target.discard(event.list2);
|
||||
|
@ -6164,7 +6183,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
lingce:'灵策',
|
||||
lingce_info:'锁定技。当有【奇正相生】或智囊或〖定汉①〗记录过的锦囊牌被使用时,若此牌不为转化牌且对应实体牌数量为1,则你摸一张牌。',
|
||||
dinghan:'定汉',
|
||||
dinghan_info:'①当你成为未记录过的锦囊牌的目标时,你记录此牌名并取消之。②准备阶段,你可在〖定汉①〗的记录中添加或减少一种锦囊牌的牌名。',
|
||||
dinghan_info:'①当你成为未记录过的普通锦囊牌的目标时,或有未记录过的延时锦囊牌进入你的判定区时,你记录此牌名并取消之。②准备阶段,你可在〖定汉①〗的记录中添加或减少一种锦囊牌的牌名。',
|
||||
shen_sunce:'神孙策',
|
||||
yingba:'英霸',
|
||||
yingba_info:'①出牌阶段限一次,你可令一名体力上限大于1的其他角色减少1点体力上限并获得“平定”标记,然后你减少1点体力上限。②你对拥有“平定”标记的角色使用牌没有距离限制。',
|
||||
|
|
|
@ -15,7 +15,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
mobile_shijiyan:['sp_cuiyan','sp_zhangchangpu','sp_jiangwan','sp_jiangqing','sp_lvfan','sp_huangfusong','sp_zhujun','liuba'],
|
||||
mobile_sunben:["re_sunben"],
|
||||
mobile_standard:["xin_xiahoudun","xin_zhangfei"],
|
||||
mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai","re_jiangwei","re_zhurong","re_caiwenji","re_xunyu"],
|
||||
mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai","re_jiangwei","re_zhurong","re_caiwenji","re_xunyu","re_dianwei"],
|
||||
mobile_yijiang1:["re_xusheng","re_lingtong","ol_yujin","re_wuguotai","re_gaoshun"],
|
||||
mobile_yijiang2:["xin_liaohua","xin_caozhang","re_liubiao","re_handang","xin_chengpu","xin_gongsunzan","re_zhonghui","re_bulianshi"],
|
||||
mobile_yijiang3:["xin_jianyong","xin_zhuran","xin_guohuai","xin_panzhangmazhong","xin_fuhuanghou","re_yufan"],
|
||||
|
@ -26,6 +26,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
character:{
|
||||
re_dianwei:["male","wei",4,["reqiangxi"]],
|
||||
xin_mamidi:['male','qun',3,['chengye','buxu']],
|
||||
ruanhui:['female','wei',3,['mingcha','jingzhong']],
|
||||
xin_quancong:['male','wu',4,['sbyaoming']],
|
||||
|
@ -642,7 +643,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
return false;
|
||||
},
|
||||
trigger:{global:['useCardAfter','loseAfter','cardsDiscardAfter']},
|
||||
trigger:{global:['useCardAfter','loseAfter','cardsDiscardAfter','loseAsyncAfter']},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(player==event.player) return false;
|
||||
|
@ -651,13 +652,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var cards=event.cards.filterInD();
|
||||
if(!cards.length) return false;
|
||||
}
|
||||
else if(event.name=='lose'){
|
||||
if(event.position!=ui.discardPile) return false;
|
||||
var cards=event.cards2.filter(function(card){
|
||||
if(get.position(card,true)!='d') return false;
|
||||
else if(event.name.indexOf('lose')==0){
|
||||
if(event.getlx===false||event.position!=ui.discardPile) return false;
|
||||
var cards=(event.cards2||event.cards).filter(function(card){
|
||||
if(card.original=='j'||get.position(card,true)!='d') return false;
|
||||
var type=get.type(card,false);
|
||||
return type=='delay'||type=='equip';
|
||||
});
|
||||
cards.removeArray(event.getl(player).cards);
|
||||
if(!cards.length) return false;
|
||||
}
|
||||
else{
|
||||
|
@ -685,12 +687,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(trigger.name=='useCard'){
|
||||
cards=trigger.cards.filterInD();
|
||||
}
|
||||
else if(trigger.name=='lose'){
|
||||
cards=trigger.cards2.filter(function(card){
|
||||
else if(trigger.name.indexOf('lose')==0){
|
||||
cards=(trigger.cards2|trigger.cards).filter(function(card){
|
||||
if(get.position(card,true)!='d') return false;
|
||||
var type=get.type(card,false);
|
||||
return type=='delay'||type=='equip';
|
||||
});
|
||||
cards.removeArray(trigger.getl(player).cards);
|
||||
}
|
||||
else{
|
||||
cards=trigger.cards.filter(function(card){
|
||||
|
@ -3479,7 +3482,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
enable:['chooseToUse','chooseToRespond'],
|
||||
filter:function(event,player){
|
||||
return player.getStorage('jibing').length>0&&(event.filterCard({name:'sha'},player,event)||event.filterCard({name:'shan'},player,event));
|
||||
return player.getExpansions('jibing').length>0&&(event.filterCard({name:'sha'},player,event)||event.filterCard({name:'shan'},player,event));
|
||||
},
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
|
@ -3507,7 +3510,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dialog.content.appendChild(table);
|
||||
}
|
||||
else dialog._cardName=event.filterCard({name:'sha'},player,event)?'sha':'shan';
|
||||
dialog.add(player.storage.jibing);
|
||||
dialog.add(player.getExpansions('jibing'));
|
||||
return dialog;
|
||||
},
|
||||
filter:function(button){
|
||||
|
@ -3540,17 +3543,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
return {
|
||||
audio:'jibing',
|
||||
filterCard:function(){return false},
|
||||
selectCard:-1,
|
||||
card:card,
|
||||
viewAs:get.autoViewAs({name:name},card),
|
||||
card:card,
|
||||
precontent:function(){
|
||||
var card=lib.skill.jibing_backup.card;
|
||||
player.unmarkAuto('jibing',[card]);
|
||||
event.result.card={name:event.result.card.name};
|
||||
event.result.cards=[card];
|
||||
filterCard:function(card){
|
||||
return card==lib.skill.jibing_backup.card;
|
||||
},
|
||||
selectCard:-1,
|
||||
position:'s',
|
||||
viewAs:{name:name},
|
||||
card:card,
|
||||
}
|
||||
},
|
||||
prompt:function(links,player){
|
||||
|
@ -3561,7 +3560,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
respondSha:true,
|
||||
respondShan:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
return player.getStorage('jibing').length>0;
|
||||
return player.getExpansions('jibing').length>0;
|
||||
},
|
||||
order:function(item,player){
|
||||
if(player.hasSkill('binghuo')) return 6;
|
||||
|
@ -3583,16 +3582,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
trigger.changeToZero();
|
||||
var cards=get.cards(2);
|
||||
game.cardsGotoOrdering(cards);
|
||||
player.markAuto('jibing',cards);
|
||||
player.$gain2(cards,false);
|
||||
game.log(player,'将',cards,'置于了武将牌上');
|
||||
game.delayx();
|
||||
player.addToExpansion(cards,'gain2').gaintag.add('jibing');
|
||||
},
|
||||
},
|
||||
backup:{audio:'jibing'},
|
||||
},
|
||||
intro:{content:'cards',onunmark:'throw'},
|
||||
intro:{content:'expansion',markcount:'expansion'},
|
||||
onremove:function(player,skill){
|
||||
var cards=player.getExpansions(skill);
|
||||
if(cards.length) player.loseToDiscardpile(cards);
|
||||
},
|
||||
},
|
||||
wangjing:{
|
||||
audio:2,
|
||||
|
@ -5968,12 +5967,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
discard:{
|
||||
trigger:{
|
||||
global:['loseAfter','cardsDiscardAfter'],
|
||||
global:['loseAfter','cardsDiscardAfter','loseAsyncAfter'],
|
||||
},
|
||||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
return player.storage.yizhu&&player.storage.yizhu.length&&(event.name!='lose'||event.position==ui.discardPile)&&event.cards.filter(function(i){
|
||||
return player.storage.yizhu&&player.storage.yizhu.length&&(event.name=='cardsDiscard'||(event.position==ui.discardPile&&event.getlx!==false))&&event.cards.filter(function(i){
|
||||
return player.storage.yizhu.contains(i);
|
||||
}).length>0;
|
||||
},
|
||||
|
@ -6591,7 +6590,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
card=game.createCard2('binglinchengxiax',info[0],info[1]);
|
||||
}
|
||||
}
|
||||
if(!card) card=get.cardPile(name);
|
||||
if(!card) card=get.cardPile2(name);
|
||||
if(card) player.gain(card,'gain2');
|
||||
player.removeSkill('mjweipo_effect');
|
||||
},
|
||||
|
@ -6844,14 +6843,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
mjkuanji:{
|
||||
audio:'fyjianyu',
|
||||
usable:1,
|
||||
trigger:{player:'loseAfter'},
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return event.type=='discard'&&event.cards2.filterInD('d').length>0;
|
||||
if(event.type!='discard') return false;
|
||||
var evt=event.getl(player);
|
||||
return evt.cards2.filterInD('d').length>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseButton(['宽济:是否将一张牌交给一名其他角色?',trigger.cards2.filterInD('d')]).set('ai',function(button){
|
||||
var cards=trigger.getl(player).cards2;
|
||||
player.chooseButton(['宽济:是否将一张牌交给一名其他角色?',cards.filterInD('d')]).set('ai',function(button){
|
||||
var player=_status.event.player;
|
||||
if(game.hasPlayer(function(current){
|
||||
return current!=player&&get.attitude(player,current)>0;
|
||||
|
@ -7496,7 +7501,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
guying:{
|
||||
audio:2,
|
||||
trigger:{player:'loseAfter'},
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
forced:true,
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
|
@ -7504,9 +7512,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var evt=event.getParent();
|
||||
if(evt.name!='useCard'&&evt.name!='respond') return false;
|
||||
}
|
||||
var target=_status.currentPhase;
|
||||
if(!event.cards2||event.cards2.length!=1||!target||target==player||!target.isIn()) return false;
|
||||
return get.position(event.cards2[0])=='d'||target.countCards('he')<0;
|
||||
var target=_status.currentPhase,evt=event.getl(player);
|
||||
if(!evt.cards2||evt.cards2.length!=1||!target||target==player||!target.isIn()) return false;
|
||||
return get.position(evt.cards2[0])=='d'||target.countCards('he')<0;
|
||||
},
|
||||
logTarget:function(){
|
||||
return _status.currentPhase;
|
||||
|
@ -7515,7 +7523,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 0'
|
||||
if(trigger.delay===false) game.delayx();
|
||||
event.target=_status.currentPhase;
|
||||
event.card=trigger.cards2[0];
|
||||
event.card=trigger.getl(player).cards2[0];
|
||||
'step 1'
|
||||
player.addMark('guying',1,false);
|
||||
event.addIndex=0;
|
||||
|
@ -10649,11 +10657,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
jinglve3:{
|
||||
audio:'jinglve',
|
||||
trigger:{global:['loseAfter','useCard','phaseAfter','cardsDiscardAfter']},
|
||||
trigger:{global:['loseAfter','useCard','phaseAfter','cardsDiscardAfter','loseAsyncAfter']},
|
||||
filter:function(event,player){
|
||||
if(event.player&&event.player!=player.storage.jinglve2) return false;
|
||||
if(event.name=='phase') return event.player.getCards('hej').contains(player.storage.jinglve3);
|
||||
if(!event.cards.contains(player.storage.jinglve3)) return false;
|
||||
if(event.name=='lose'&&event.getlx===false) return false;
|
||||
else if(event.name=='loseAsync'&&event.position==ui.discardPile){
|
||||
var evt=event.getl(player.storage.jinglve2);
|
||||
if(!evt.cards.contains(player.storage.jinglve3)) return false;
|
||||
}
|
||||
return event.name=='useCard'||get.position(player.storage.jinglve3,true)=='d'||event.position==ui.discardPile;
|
||||
},
|
||||
forced:true,
|
||||
|
@ -11302,7 +11315,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{source:'damage'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
locked:false,
|
||||
//locked:false,
|
||||
audio:'jiuchi',
|
||||
filter:function(event,player){
|
||||
return event.card&&event.card.name=='sha'&&event.getParent(2).jiu==true&&!player.hasSkill('rejiuchi_air');
|
||||
|
@ -13562,12 +13575,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
rebiaozhao2:{
|
||||
trigger:{
|
||||
global:["loseAfter","cardsDiscardAfter"],
|
||||
global:["loseAfter","cardsDiscardAfter","loseAsyncAfter"],
|
||||
},
|
||||
forced:true,
|
||||
audio:"biaozhao",
|
||||
filter:function(event,player){
|
||||
if(event.name=='lose'&&(event.position!=ui.discardPile||event.getParent(2).name=='rebiaozhao3')) return false;
|
||||
if(event.name.indexOf('lose')==0&&(event.getlx===false||event.position!=ui.discardPile||event.getParent(2).name=='rebiaozhao3')) return false;
|
||||
var cards=player.getExpansions('rebiaozhao');
|
||||
if(!cards.length) return false;
|
||||
var num=get.number(cards[0]);
|
||||
|
@ -14503,6 +14516,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:"xinfu_qianchong",
|
||||
trigger:{
|
||||
player:["useCard","respond","loseAfter"],
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
frequent:true,
|
||||
filter:function(event,player){
|
||||
|
@ -14513,11 +14527,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
for(var i=0;i<es.length;i++){
|
||||
if(get.color(es[i])!='red') return false;
|
||||
}
|
||||
if(event.name!='lose') return get.color(event.card)=='red';
|
||||
if(event.name.indexOf('lose')!=0) return get.color(event.card)=='red';
|
||||
if(event.type!='discard') return false;
|
||||
if(event.cards2){
|
||||
for(var i=0;i<event.cards2.length;i++){
|
||||
if(get.color(event.cards2[i])=='red') return true;
|
||||
var evt=event.getl(player);
|
||||
if(evt.cards2){
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
if(get.color(evt.cards2[i])=='red') return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
@ -14525,10 +14540,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
"step 0"
|
||||
event.count=1;
|
||||
if(trigger.name=='lose'){
|
||||
if(trigger.name.indexOf('lose')==0){
|
||||
event.count=0;
|
||||
for(var i=0;i<trigger.cards2.length;i++){
|
||||
if(get.color(trigger.cards2[i])=='red') event.count++;
|
||||
var evt=trigger.getl(player);
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
if(get.color(evt.cards2[i])=='red') event.count++;
|
||||
}
|
||||
}
|
||||
"step 1"
|
||||
|
@ -17408,6 +17424,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
buxu:'补叙',
|
||||
buxu_backup:'补叙',
|
||||
buxu_info:'出牌阶段,若你的“六经”中有空缺的位置,则你可以弃置X+1张牌并选择一种空缺的“六经”。系统从牌堆或弃牌堆中检索一张对应的牌,然后你将此牌置于你武将牌上,填补“六经”的对应位置。',
|
||||
re_dianwei:"手杀典韦",
|
||||
|
||||
mobile_standard:'手杀异构·标准包',
|
||||
mobile_shenhua:'手杀异构·神话再临',
|
||||
|
|
|
@ -653,17 +653,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
nsyice:{
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
global:'cardsDiscardAfter',
|
||||
global:['cardsDiscardAfter','loseAsyncAfter'],
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(event.name=='lose'){
|
||||
if(event.name!='cardsDiscard'){
|
||||
if(event.type!='discard') return false;
|
||||
var evt=event.getl(player);
|
||||
return evt.cards2&&evt.cards2.filterInD('d').length>0;
|
||||
}
|
||||
else{
|
||||
var evt=event.getParent();
|
||||
if(evt.name!='orderingDiscard'||!evt.relatedEvent||evt.relatedEvent.player!=player||!['useCard','respond'].contains(evt.relatedEvent.name)) return false;
|
||||
return event.cards.filterInD('d').length>0;
|
||||
}
|
||||
return (event.cards2||event.cards).filterInD('d').length>0;
|
||||
},
|
||||
forced:true,
|
||||
content:function(){
|
||||
|
@ -671,12 +673,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var evt=trigger.getParent().relatedEvent;
|
||||
if((trigger.name=='discard'&&!trigger.delay)||evt&&evt.name=='respond') game.delayx();
|
||||
'step 1'
|
||||
var cards=(trigger.cards2||trigger.cards).filterInD('d');
|
||||
player.$gain2(cards);
|
||||
var cards;
|
||||
if(trigger.getl) cards=trigger.getl(player).cards2.filterInD('d');
|
||||
else cards=trigger.cards.filterInD('d');
|
||||
if(cards.length==1) event._result={bool:true,links:cards};
|
||||
else{
|
||||
var dialog=['遗策:选择要放置的卡牌','<div class="text center">(从左到右为从旧到新,后选择的后置入)</div>',cards];
|
||||
var cards2=player.getStorage('nsyice');
|
||||
var cards2=player.getExpansions('nsyice');
|
||||
cards2.reverse();
|
||||
if(cards2.length){
|
||||
dialog.push('<div class="text center">原有“策”</div>');
|
||||
dialog.push(cards2);
|
||||
|
@ -686,11 +690,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}).set('cards',cards);
|
||||
}
|
||||
'step 2'
|
||||
game.cardsGotoSpecial(result.links);
|
||||
player.markAuto('nsyice',result.links);
|
||||
game.delayx();
|
||||
player.addToExpansion(result.links,'gain2').gaintag.add('nsyice');
|
||||
'step 3'
|
||||
var storage=player.storage.nsyice;
|
||||
var storage=player.getExpansions('nsyice');
|
||||
var bool=false;
|
||||
for(var i=0;i<storage.length;i++){
|
||||
for(var j=storage.length-1;j>i;j--){
|
||||
|
@ -702,9 +704,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(bool) break;
|
||||
}
|
||||
if(bool){
|
||||
event.cards=storage.slice(0);
|
||||
event.cards=storage.splice(i,j-i+1);
|
||||
player.unmarkAuto('nsyice',event.cards);
|
||||
}
|
||||
else event.finish();
|
||||
'step 4'
|
||||
|
@ -716,10 +716,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 5'
|
||||
player.chooseButton(['将一张牌置于牌堆顶,将另一张牌置于牌堆底',cards],true);
|
||||
'step 6'
|
||||
ui.cardPile.insertBefore(result.links[0].fix(),ui.cardPile.firstChild);
|
||||
cards.remove(result.links[0]);
|
||||
ui.cardPile.appendChild(cards[0].fix());
|
||||
game.updateRoundNumber();
|
||||
player.lose(event.cards,ui.cardPile).set('topper',result.links[0]).insert_index=function(event,card){
|
||||
if(card==event.topper) return ui.cardPile.firstChild;
|
||||
return null;
|
||||
};
|
||||
if(_status.dying.length) event.finish();
|
||||
'step 7'
|
||||
player.chooseTarget('对一名角色造成1点伤害',true).set('ai',function(target){
|
||||
|
@ -733,8 +733,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
target.damage('nocard');
|
||||
}
|
||||
},
|
||||
onremove:function(player,skill){
|
||||
var cards=player.getExpansions(skill);
|
||||
if(cards.length) player.loseToDiscardpile(cards);
|
||||
},
|
||||
marktext:'策',
|
||||
intro:{content:'cards'},
|
||||
intro:{
|
||||
content:'expansion',
|
||||
markcount:'expansion',
|
||||
},
|
||||
},
|
||||
//用间篇
|
||||
yjxuepin:{
|
||||
|
@ -891,10 +898,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger.player.skip('phaseJudge');
|
||||
}
|
||||
else{
|
||||
player.lose(card,ui.special,'toStorage');
|
||||
trigger.player.addToExpansion(card,player,'giveAuto').gaintag.add('spmingjian_charlotte');
|
||||
trigger.player.addSkill('spmingjian_charlotte');
|
||||
trigger.player.storage.spmingjian_charlotte.add(card);
|
||||
trigger.player.markSkill('spmingjian_charlotte');
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
|
@ -912,14 +917,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(trigger.name=='phase') player.removeSkill(event.name);
|
||||
else trigger.noJudgeTrigger=true;
|
||||
},
|
||||
init:function(player,skill){
|
||||
if(!player.storage[skill]) player.storage[skill]=[];
|
||||
onremove:function(player,skill){
|
||||
var cards=player.getExpansions(skill);
|
||||
if(cards.length) player.loseToDiscardpile(cards);
|
||||
},
|
||||
marktext:'鉴',
|
||||
intro:{
|
||||
name:'明鉴',
|
||||
content:'cards',
|
||||
onunmark:'throw',
|
||||
content:'expansion',
|
||||
markcount:'expansion',
|
||||
},
|
||||
},
|
||||
spshude:{
|
||||
|
@ -1051,7 +1057,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
sphantong:{
|
||||
trigger:{player:'loseEnd'},
|
||||
trigger:{
|
||||
player:'loseEnd',
|
||||
},
|
||||
frequent:true,
|
||||
filter:function(event,player){
|
||||
return event.type=='discard'&&event.getParent(3).name=='phaseDiscard'&&event.cards.filterInD('d').length>0;
|
||||
|
@ -1157,36 +1165,39 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('spyicong');
|
||||
if(!player.storage.spyicong) player.storage.spyicong=[];
|
||||
player.storage.spyicong.addArray(result.cards);
|
||||
player.$giveAuto(result.cards.length,player,false);
|
||||
game.log(player,'扣置了'+get.cnNumber(player.lose(result.cards,'toStorage',ui.special).cards.length)+'张【扈】');
|
||||
player.markSkill('spyicong');
|
||||
player.addToExpansion(result.cards,player,'give').gaintag.add('spyicong');
|
||||
}
|
||||
},
|
||||
mod:{
|
||||
globalTo:function(from,to,num){
|
||||
if(to.storage.spyicong&&to.storage.spyicong.length) return num+to.storage.spyicong.length;
|
||||
return num+to.getExpansions('spyicong').length;
|
||||
},
|
||||
},
|
||||
marktext:'扈',
|
||||
onremove:function(player,skill){
|
||||
var cards=player.getExpansions(skill);
|
||||
if(cards.length) player.loseToDiscardpile(cards);
|
||||
},
|
||||
intro:{
|
||||
name:'义从',
|
||||
content:'cardCount',
|
||||
onunmark:'throw',
|
||||
content:function(storage,player){
|
||||
return '共有'+get.cnNumber(player.getExpansions('spyicong').length)+'张“扈”';
|
||||
},
|
||||
markcount:'expansion',
|
||||
},
|
||||
},
|
||||
sptuji:{
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return player.storage.spyicong&&player.storage.spyicong.length>0;
|
||||
return player.getExpansions('spyicong').length>0;
|
||||
},
|
||||
content:function(){
|
||||
var num=player.storage.spyicong.length;
|
||||
var cards=player.getExpansions('spyicong');
|
||||
var num=cards.length;
|
||||
player.addMark('sptuji2',num,false);
|
||||
player.addTempSkill('sptuji2');
|
||||
player.unmarkSkill('spyicong');
|
||||
player.loseToDiscardpile(cards);
|
||||
if(num<=1) player.draw();
|
||||
},
|
||||
},
|
||||
|
@ -1285,13 +1296,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
delete player.storage.xinfu_yanyu2;
|
||||
},
|
||||
trigger:{
|
||||
global:["loseAfter","cardsDiscardAfter"],
|
||||
global:["loseAfter","cardsDiscardAfter","loseAsyncAfter"],
|
||||
},
|
||||
direct:true,
|
||||
filter:function (event,player){
|
||||
if(player.storage.xinfu_yanyu2>=3) return false;
|
||||
//var evt=event.getParent();
|
||||
//if(evt&&(evt.name=='useCard'||evt.name=='respond')) return false;
|
||||
if(event.name.indexOf('lose')==0&&(event.getlx===false||event.position!=ui.discardPile)) return false;
|
||||
var type=player.storage.xinfu_yanyu;
|
||||
var cards=event.cards;
|
||||
for(var i=0;i<cards.length;i++){
|
||||
|
@ -1584,13 +1594,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 0'
|
||||
player.awakenSkill('zuixiang');
|
||||
event.cards=player.showCards(get.cards(3)).cards;
|
||||
player.markAuto('zuixiang2',event.cards);
|
||||
game.cardsGotoSpecial(event.cards);
|
||||
player.addToExpansion(event.cards,'gain2').gaintag.add('zuixiang2');
|
||||
'step 1'
|
||||
if(lib.skill.zuixiang.filterSame(cards)){
|
||||
player.gain(cards,'gain2').type='xinmanjuan';
|
||||
delete player.storage.zuixiang2;
|
||||
player.unmarkSkill('zuixiang2');
|
||||
}
|
||||
else{
|
||||
trigger._zuixiang=true;
|
||||
|
@ -1608,15 +1615,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
zuixiang2:{
|
||||
intro:{
|
||||
content:'cards',
|
||||
onunmark:'throw',
|
||||
content:'expansion',
|
||||
markcount:'expansion',
|
||||
},
|
||||
mod:{
|
||||
cardEnabled:function(card,player){
|
||||
var type=get.type2(card);
|
||||
var list=player.getStorage('zuixiang2');
|
||||
var list=player.getExpansions('zuixiang2');
|
||||
for(var i of list){
|
||||
if(get.type2(i)==type) return false;
|
||||
if(get.type2(i,false)==type) return false;
|
||||
}
|
||||
},
|
||||
cardRespondable:function(){
|
||||
|
@ -1631,10 +1638,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
target:'useCardToBefore',
|
||||
},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
if(event.name=='phaseZhunbei') return !event._zuixiang;
|
||||
var type=get.type2(event.card);
|
||||
var list=player.getStorage('zuixiang2');
|
||||
var list=player.getExpansions('zuixiang2');
|
||||
for(var i of list){
|
||||
if(get.type2(i)==type) return true;
|
||||
}
|
||||
|
@ -1648,14 +1656,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return;
|
||||
}
|
||||
var cards=get.cards(3);
|
||||
player.markAuto('zuixiang2',cards);
|
||||
player.showCards(player.storage.zuixiang2);
|
||||
game.cardsGotoSpecial(cards);
|
||||
player.addToExpansion('gain2',cards).gaintag.add('zuixiang2');
|
||||
'step 1'
|
||||
var cards=player.getStorage('zuixiang2');
|
||||
var cards=player.getExpansions('zuixiang2');
|
||||
player.showCards(cards);
|
||||
if(lib.skill.zuixiang.filterSame(cards)){
|
||||
player.gain(cards,'gain2','log').type='xinmanjuan';
|
||||
delete player.storage.zuixiang2;
|
||||
player.removeSkill('zuixiang2');
|
||||
}
|
||||
},
|
||||
|
@ -1663,7 +1669,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
effect:{
|
||||
target:function(card,player,target){
|
||||
var type=get.type2(card);
|
||||
var list=target.getStorage('zuixiang2');
|
||||
var list=target.getExpansions('zuixiang2');
|
||||
for(var i of list){
|
||||
if(get.type2(i)==type) return 'zeroplayertarget';
|
||||
}
|
||||
|
@ -1783,36 +1789,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{player:'phaseJieshuBegin'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.storage.yinling&&player.storage.yinling.length>=3;
|
||||
return player.getExpansions('yinling').length>=3;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(player.storage.yinling.length>3){
|
||||
player.chooseButton(3,[get.prompt('junwei'),'hidden',player.storage.yinling]).set('ai',function(button){
|
||||
var cards=player.getExpansions('yinling');
|
||||
if(cards.length>3){
|
||||
player.chooseButton(3,[get.prompt('junwei'),'hidden',cards]).set('ai',function(button){
|
||||
return 1;
|
||||
});
|
||||
}
|
||||
else{
|
||||
player.chooseBool().set('createDialog',[get.prompt('junwei'),'hidden',player.storage.yinling]).set('dialogselectx',true).set('choice',true);
|
||||
event.cards=player.storage.yinling.slice(0);
|
||||
player.chooseBool().set('createDialog',[get.prompt('junwei'),'hidden',cards]).set('dialogselectx',true).set('choice',true);
|
||||
event.cards=cards.slice(0);
|
||||
}
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('junwei');
|
||||
var cards=event.cards||result.links;
|
||||
for(var i=0;i<cards.length;i++){
|
||||
player.storage.yinling.remove(cards[i]);
|
||||
}
|
||||
game.cardsDiscard(cards);
|
||||
player.$throw(cards);
|
||||
player.syncStorage('yinling');
|
||||
if(player.storage.yinling.length==0){
|
||||
player.unmarkSkill('yinling');
|
||||
}
|
||||
else{
|
||||
player.markSkill('yinling');
|
||||
}
|
||||
game.delay();
|
||||
player.loseToDiscardpile(cards);
|
||||
player.chooseTarget(true,function(card,player,target){
|
||||
return player!=target;
|
||||
}).set('ai',function(target){
|
||||
|
@ -1882,63 +1877,58 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 6'
|
||||
if(result.bool){
|
||||
var card=result.links[0];
|
||||
if(event.target.storage.junwei2){
|
||||
event.target.storage.junwei2.push(card);
|
||||
event.target.markSkill('junwei2');
|
||||
}
|
||||
else{
|
||||
event.target.storage.junwei2=[card];
|
||||
}
|
||||
event.target.lose(card,ui.special,'toStorage');
|
||||
event.target.addSkill('junwei2');
|
||||
event.target.syncStorage('junwei2');
|
||||
target.addToExpansion(card,target,'give').gaintag.add('junwei2');
|
||||
target.addSkill('junwei2');
|
||||
}
|
||||
}
|
||||
},
|
||||
junwei2:{
|
||||
mark:true,
|
||||
intro:{
|
||||
content:'cards',
|
||||
onunmark:function(storage,player){
|
||||
if(storage&&storage.length){
|
||||
player.$throw(storage,1000);
|
||||
game.cardsDiscard(storage);
|
||||
game.log(storage,'被置入了弃牌堆');
|
||||
storage.length=0;
|
||||
}
|
||||
},
|
||||
content:'expansion',
|
||||
markcount:'expansion',
|
||||
},
|
||||
onremove:function(player,skill){
|
||||
var cards=player.getExpansions(skill);
|
||||
if(cards.length) player.loseToDiscardpile(cards);
|
||||
},
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(player.storage.junwei2.length){
|
||||
var card=player.storage.junwei2.shift();
|
||||
var cards=player.getExpansions('junwei2').filter(function(card){
|
||||
return player.canEquip(card,true);
|
||||
});
|
||||
if(cards.length){
|
||||
player.$give(card,player,false);
|
||||
game.delay(0.5);
|
||||
player.equip(card);
|
||||
event.redo();
|
||||
}
|
||||
'step 1'
|
||||
player.removeSkill('junwei2');
|
||||
delete player.storage.junwei2;
|
||||
}
|
||||
},
|
||||
yinling:{
|
||||
enable:'phaseUse',
|
||||
filterCard:{color:'black'},
|
||||
position:'he',
|
||||
marktext:'锦',
|
||||
intro:{
|
||||
content:'cards',
|
||||
onunmark:'throw'
|
||||
content:'expansion',
|
||||
markcount:'expansion'
|
||||
},
|
||||
onremove:function(player,skill){
|
||||
var cards=player.getExpansions(skill);
|
||||
if(cards.length) player.loseToDiscardpile(cards);
|
||||
},
|
||||
filter:function(event,player){
|
||||
return player.countCards('he',{color:'black'})>0&&player.storage.yinling.length<4;
|
||||
return player.countCards('he',{color:'black'})>0&&player.getExpansions('yinling').length<4;
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return target.countCards('he')>0&&target!=player;
|
||||
},
|
||||
init:function(player){
|
||||
player.storage.yinling=[];
|
||||
},
|
||||
check:function(card){
|
||||
return 6-get.value(card);
|
||||
},
|
||||
|
@ -1947,11 +1937,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.choosePlayerCard('hej',target,true);
|
||||
'step 1'
|
||||
if(result.bool&&result.links&&result.links.length){
|
||||
target.$give(result.links,player,false);
|
||||
target.lose(result.links,ui.special,'toStorage');
|
||||
player.storage.yinling.push(result.links[0]);
|
||||
player.markSkill('yinling');
|
||||
player.syncStorage('yinling');
|
||||
player.addToExpansion(result.links,target,'give').gaintag.add('yinling');
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
|
|
|
@ -101,6 +101,7 @@ window.noname_character_rank={
|
|||
'shen_xunyu',
|
||||
'shen_guojia',
|
||||
'yangyan',
|
||||
'liuhui',
|
||||
'key_kamome',
|
||||
'key_yukine',
|
||||
'key_inari',
|
||||
|
@ -109,6 +110,7 @@ window.noname_character_rank={
|
|||
'key_yukito',
|
||||
'key_yuuki',
|
||||
'db_key_liyingxia',
|
||||
'key_kiyu',
|
||||
],
|
||||
a:[
|
||||
'diy_zaozhirenjun',
|
||||
|
@ -273,6 +275,7 @@ window.noname_character_rank={
|
|||
'ns_limi',
|
||||
'jin_zhouchu',
|
||||
'huojun',
|
||||
'xiahouxuan',
|
||||
'key_misuzu',
|
||||
'key_sunohara',
|
||||
'key_umi',
|
||||
|
@ -528,6 +531,7 @@ window.noname_character_rank={
|
|||
'dc_wangchang',
|
||||
'fengfang',
|
||||
'prp_zhugeliang',
|
||||
'dukui',
|
||||
],
|
||||
bp:[
|
||||
'chess_diaochan',
|
||||
|
@ -812,6 +816,9 @@ window.noname_character_rank={
|
|||
're_liufeng',
|
||||
'huzhao',
|
||||
'guanhai',
|
||||
'zhangfen',
|
||||
'ol_dianwei',
|
||||
'wangyan',
|
||||
],
|
||||
b:[
|
||||
'diy_feishi',
|
||||
|
@ -1051,6 +1058,8 @@ window.noname_character_rank={
|
|||
'zhangxun',
|
||||
'xiahoulingnv',
|
||||
're_sp_taishici',
|
||||
'dc_lvkuanglvxiang',
|
||||
'dengzhong',
|
||||
],
|
||||
bm:[
|
||||
'diy_xizhenxihong',
|
||||
|
@ -1214,6 +1223,7 @@ window.noname_character_rank={
|
|||
'ruanhui',
|
||||
'xin_mamidi',
|
||||
'xin_quancong',
|
||||
'dc_caiyang',
|
||||
],
|
||||
c:[
|
||||
'xiahoudun',
|
||||
|
@ -1430,6 +1440,7 @@ window.noname_character_rank={
|
|||
'key_erika',
|
||||
'key_satomi',
|
||||
'key_seira',
|
||||
'key_kiyu',
|
||||
'noname',
|
||||
],
|
||||
epic:[
|
||||
|
@ -1612,6 +1623,8 @@ window.noname_character_rank={
|
|||
'ol_xunyu',
|
||||
'ns_zhonglimu',
|
||||
'dc_sunru',
|
||||
'zhangfen',
|
||||
'xiahouxuan',
|
||||
'prp_zhugeliang',
|
||||
'key_kano',
|
||||
'key_haruko',
|
||||
|
@ -2027,6 +2040,8 @@ window.noname_character_rank={
|
|||
'huzhao',
|
||||
're_liufeng',
|
||||
'guanhai',
|
||||
'dukui',
|
||||
'ol_dianwei',
|
||||
],
|
||||
junk:[
|
||||
'sunshao',
|
||||
|
|
|
@ -6,7 +6,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
refresh:{
|
||||
refresh_standard:["re_caocao","re_simayi","re_guojia","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong",'re_gongsunzan'],
|
||||
refresh_feng:['caoren','ol_xiahouyuan','re_huangzhong','ol_weiyan','ol_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji'],
|
||||
refresh_huo:["ol_sp_zhugeliang","ol_xunyu","re_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"],
|
||||
refresh_huo:["ol_sp_zhugeliang","ol_xunyu","ol_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"],
|
||||
refresh_lin:['re_menghuo','ol_sunjian','re_caopi','ol_xuhuang','ol_dongzhuo','ol_zhurong','re_jiaxu','ol_lusu'],
|
||||
refresh_shan:['ol_jiangwei','ol_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai','re_zhanghe'],
|
||||
refresh_yijiang1:['xin_wuguotai','xin_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua','dc_xushu'],
|
||||
|
@ -20,6 +20,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
connect:true,
|
||||
character:{
|
||||
ol_dianwei:['male','wei',4,['olqiangxi','olningwu']],
|
||||
re_sp_taishici:['male','qun',4,['rejixu']],
|
||||
re_liufeng:['male','shu',4,['rexiansi']],
|
||||
ol_xunyu:['male','wei',3,['quhu','oljieming']],
|
||||
|
@ -33,7 +34,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_guohuanghou:['female','wei',3,['rejiaozhao','redanxin']],
|
||||
re_xiahoushi:['female','shu',3,['reqiaoshi','reyanyu']],
|
||||
ol_lusu:['male','wu',3,['olhaoshi','oldimeng']],
|
||||
re_jiaxu:['male','qun',3,['rewansha','luanwu','reweimu']],
|
||||
re_jiaxu:['male','qun',3,['rewansha','reluanwu','reweimu']],
|
||||
re_guyong:['male','wu',3,['reshenxing','rebingyi']],
|
||||
xin_zhonghui:['male','wei',4,['xinquanji','xinzili']],
|
||||
re_caifuren:['female','qun',3,['reqieting','rexianzhou']],
|
||||
|
@ -119,7 +120,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ol_pangde:['male','qun',4,['mashu','rejianchu']],
|
||||
ol_xuhuang:['male','wei',4,['olduanliang','oljiezi']],
|
||||
ol_sp_zhugeliang:["male","shu",3,["bazhen","rehuoji","rekanpo","cangzhuo"],[]],
|
||||
re_dianwei:["male","wei",4,["reqiangxi"],[]],
|
||||
re_yanwen:["male","qun",4,["reshuangxiong"],[]],
|
||||
ol_yuanshao:['male','qun',4,['olluanji','olxueyi'],['zhu']],
|
||||
re_menghuo:['male','shu',4,['huoshou','rezaiqi']],
|
||||
|
@ -149,6 +149,72 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_xushu:['zhaoyun','sp_zhugeliang'],
|
||||
},
|
||||
skill:{
|
||||
//典韦
|
||||
olqiangxi:{
|
||||
audio:'qiangxi',
|
||||
audioname:['ol_dianwei','boss_lvbu3'],
|
||||
enable:'phaseUse',
|
||||
usable:2,
|
||||
filter:function(event,player){
|
||||
if(player.hp<1&&!player.hasCard((card)=>lib.skill.olqiangxi.filterCard(card),'he')) return false;
|
||||
return game.hasPlayer((current)=>lib.skill.olqiangxi.filterTarget(null,player,current));
|
||||
},
|
||||
filterCard:function(card){
|
||||
return get.subtype(card)=='equip1';
|
||||
},
|
||||
position:'he',
|
||||
filterTarget:function(card,player,target){
|
||||
if(target==player) return false;
|
||||
var stat=player.getStat()._olqiangxi;
|
||||
return !stat||!stat.contains(target);
|
||||
},
|
||||
selectCard:function(){
|
||||
if(_status.event.player.hp<1) return 1;
|
||||
return [0,1];
|
||||
},
|
||||
content:function(){
|
||||
var stat=player.getStat();
|
||||
if(!stat._olqiangxi) stat._olqiangxi=[];
|
||||
stat._olqiangxi.push(target);
|
||||
if(!cards.length) player.damage('nosource','nocard');
|
||||
target.damage('nocard');
|
||||
},
|
||||
ai:{
|
||||
damage:true,
|
||||
order:8,
|
||||
result:{
|
||||
player:function(player,target){
|
||||
if(ui.selected.cards.length) return 0;
|
||||
if(player.hp>=target.hp) return -0.9;
|
||||
if(player.hp<=2) return -10;
|
||||
return get.damageEffect(player,player,player);
|
||||
},
|
||||
target:function(player,target){
|
||||
if(!ui.selected.cards.length){
|
||||
if(player.hp<2) return 0;
|
||||
if(player.hp==2&&target.hp>=2) return 0;
|
||||
if(target.hp>player.hp) return 0;
|
||||
}
|
||||
return get.damageEffect(target,player,target);
|
||||
}
|
||||
},
|
||||
threaten:1.5,
|
||||
},
|
||||
},
|
||||
olningwu:{
|
||||
audio:2,
|
||||
trigger:{global:'damageEnd'},
|
||||
filter:function(event,player){
|
||||
if(player!=event.player&&player!=event.source) return false;
|
||||
return event.player.getHistory('damage').indexOf(event)==1;
|
||||
},
|
||||
logTarget:'player',
|
||||
forced:true,
|
||||
content:function(){
|
||||
player.draw();
|
||||
player.discardPlayerCard(trigger.player,true,'ej');
|
||||
},
|
||||
},
|
||||
//群太史慈
|
||||
rejixu:{
|
||||
audio:2,
|
||||
|
@ -2271,11 +2337,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
//虞翻
|
||||
xinzongxuan:{
|
||||
audio:2,
|
||||
trigger:{player:'loseAfter'},
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(event.type!='discard') return false;
|
||||
for(var i=0;i<event.cards2.length;i++){
|
||||
if(get.position(event.cards2[i])=='d'){
|
||||
var evt=event.getl(player);
|
||||
if(!evt||!evt.cards2) return false;
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
if(get.position(evt.cards2[i])=='d'){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -2286,8 +2357,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(!game.hasPlayer(function(current){
|
||||
return current!=player&&get.attitude(player,current)>0&&!current.hasSkillTag('nogain');
|
||||
})) return false;
|
||||
for(var i=0;i<trigger.cards2.length;i++){
|
||||
if(get.position(trigger.cards2[i],true)=='d'&&get.type2(trigger.cards2[i],false)=='trick'){
|
||||
var cards=trigger.getl(player).cards2;
|
||||
for(var i=0;i<cards.length;i++){
|
||||
if(get.position(cards[i],true)=='d'&&get.type2(cards[i],false)=='trick'){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -2295,10 +2367,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
var cards=[];
|
||||
for(var i=0;i<trigger.cards2.length;i++){
|
||||
if(get.position(trigger.cards2[i],true)=='d'){
|
||||
cards.push(trigger.cards2[i]);
|
||||
var cards=[],cards2=trigger.getl(player).cards2;
|
||||
for(var i=0;i<cards2.length;i++){
|
||||
if(get.position(cards2[i],true)=='d'){
|
||||
cards.push(cards2[i]);
|
||||
}
|
||||
}
|
||||
var next=player.chooseToMove('纵玄:将任意张牌置于牌堆顶',true);
|
||||
|
@ -2832,7 +2904,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
reluanwu:{
|
||||
audio:2,
|
||||
audio:'luanwu',
|
||||
audioname:['re_jiaxu'],
|
||||
unique:true,
|
||||
enable:'phaseUse',
|
||||
limited:true,
|
||||
|
@ -2842,19 +2915,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return target!=player;
|
||||
},
|
||||
selectTarget:-1,
|
||||
multitarget:true,
|
||||
multiline:true,
|
||||
contentBefore:function(){
|
||||
player.awakenSkill('luanwu');
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.awakenSkill('reluanwu');
|
||||
event.current=player.next;
|
||||
event.currented=[];
|
||||
event.num1=0;
|
||||
event.num2=0;
|
||||
"step 1"
|
||||
event.currented.push(event.current);
|
||||
event.current.animate('target');
|
||||
event.current.chooseToUse('乱武:使用一张杀或失去一点体力',function(card){
|
||||
target.chooseToUse('乱武:使用一张杀或失去一点体力',function(card){
|
||||
if(get.name(card)!='sha') return false;
|
||||
return lib.filter.filterCard.apply(this,arguments)
|
||||
},function(card,player,target){
|
||||
|
@ -2869,20 +2936,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
return lib.filter.filterTarget.apply(this,arguments)
|
||||
}).set('ai2',function(){
|
||||
return get.effect_use.apply(this,arguments)+0.01;
|
||||
});
|
||||
"step 2"
|
||||
return get.effect_use.apply(this,arguments)-_status.event.effect;
|
||||
}).set('effect',get.effect(target,{name:'losehp'},target,target));
|
||||
"step 1"
|
||||
if(result.bool==false){
|
||||
event.num1++;
|
||||
event.current.loseHp();
|
||||
target.loseHp();
|
||||
}
|
||||
else event.num2++;
|
||||
event.current=event.current.next;
|
||||
if(event.current!=player&&!event.currented.contains(event.current)){
|
||||
game.delay(0.5);
|
||||
event.goto(1);
|
||||
}
|
||||
else player.draw(Math.max(event.num1,event.num2));
|
||||
},
|
||||
contentAfter:function(){
|
||||
player.chooseUseTarget('sha','是否使用一张【杀】?',false,'nodistance');
|
||||
},
|
||||
ai:{
|
||||
order:1,
|
||||
|
@ -2929,11 +2991,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
var num=trigger.num;
|
||||
player.draw(2*num);
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
if(target==_status.currentPhase&&get.tag(card,'damage')) return 'zerotarget';
|
||||
if(target==_status.currentPhase&&get.tag(card,'damage')) return [0,1];
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -4084,7 +4148,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
gzpaiyi:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:2,
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
return player.getExpansions('gzquanji').length>0;
|
||||
},
|
||||
|
@ -4121,7 +4185,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.loseToDiscardpile(card);
|
||||
"step 1"
|
||||
var num=player.getExpansions('gzquanji').length;
|
||||
if(num>0) target.draw(num);
|
||||
if(num>0) target.draw(Math.min(7,num));
|
||||
"step 2"
|
||||
if(target.countCards('h')>player.countCards('h')){
|
||||
target.damage();
|
||||
|
@ -5176,8 +5240,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
inherit:'tuntian',
|
||||
filter:function(event,player){
|
||||
if(player==_status.currentPhase){
|
||||
return event.name=='lose'&&event.type=='discard'&&event.cards2.filter(function(card){
|
||||
return get.name(card,event.hs.contains(card)?player:false)=='sha';
|
||||
if(event.type!='discard') return false;
|
||||
var evt=event.getl(player);
|
||||
return evt&&evt.cards2&&evt.cards2.filter(function(i){
|
||||
return get.name(i,evt.hs.contains(i)?player:false)==true;
|
||||
}).length>0;
|
||||
};
|
||||
if(event.name=='gain'&&event.player==player) return false;
|
||||
|
@ -6623,12 +6689,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
subSkill:{
|
||||
discard:{
|
||||
audio:'reluoying',
|
||||
trigger:{global:'loseAfter'},
|
||||
trigger:{global:['loseAfter','loseAsyncAfter']},
|
||||
filter:function(event,player){
|
||||
if(event.type!='discard') return false;
|
||||
if(event.player==player) return false;
|
||||
for(var i=0;i<event.cards2.length;i++){
|
||||
if(get.suit(event.cards2[i],event.player)=='club'&&get.position(event.cards2[i],true)=='d'){
|
||||
if(event.type!='discard'||event.getlx===false) return false;
|
||||
var cards=event.cards.slice(0);
|
||||
var evt=event.getl(player);
|
||||
if(evt&&evt.cards) cards.removeArray(evt.cards);
|
||||
for(var i=0;i<cards.length;i++){
|
||||
if(cards[i].original!='j'&&get.suit(cards[i],event.player)=='club'&&get.position(cards[i],true)=='d'){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -6639,10 +6707,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"step 0"
|
||||
if(trigger.delay==false) game.delay();
|
||||
"step 1"
|
||||
var cards=[];
|
||||
for(var i=0;i<trigger.cards2.length;i++){
|
||||
if(get.suit(trigger.cards2[i],trigger.player)=='club'&&get.position(trigger.cards2[i],true)=='d'){
|
||||
cards.push(trigger.cards2[i]);
|
||||
var cards=[],cards2=trigger.cards.slice(0),evt=trigger.getl(player);
|
||||
if(evt&&evt.cards) cards2.removeArray(evt.cards);
|
||||
for(var i=0;i<cards2.length;i++){
|
||||
if(cards2[i].original!='j'&&get.suit(cards2[i],trigger.player)=='club'&&get.position(cards2[i],true)=='d'){
|
||||
cards.push(cards2[i]);
|
||||
}
|
||||
}
|
||||
if(cards.length){
|
||||
|
@ -12063,7 +12132,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_huaxiong:"界华雄",
|
||||
|
||||
"ol_sp_zhugeliang":"界卧龙",
|
||||
"re_dianwei":"界典韦",
|
||||
"re_yanwen":"界颜良文丑",
|
||||
xin_yuanshao:"手杀袁绍",
|
||||
re_zhangjiao:'界张角',
|
||||
|
@ -12526,9 +12594,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
rewansha:'完杀',
|
||||
rewansha_info:'锁定技。①你的回合内,不处于濒死状态的角色不能使用【桃】。②当有角色于你的回合内进入濒死状态时,你令其以外的所有其他角色的非锁定技失效直到此濒死状态结算结束。',
|
||||
reluanwu:'乱武',
|
||||
reluanwu_info:'限定技,出牌阶段,你可令所有其他角色依次选择一项:①对距离最近(或之一)的角色使用一张【杀】;②失去1点体力。然后你摸X张牌(X为选择①和②的角色数中的最大值)。',
|
||||
reluanwu_info:'限定技,出牌阶段,你可令所有其他角色依次选择一项:①对距离最近(或之一)的角色使用一张【杀】;②失去1点体力。结算完成后,你可视为使用一张【杀】(无距离限制)。',
|
||||
reweimu:'帷幕',
|
||||
reweimu_info:'锁定技。①你不能成为黑色锦囊牌的目标。②当你于回合内受到伤害时,防止此伤害。',
|
||||
reweimu_info:'锁定技。①你不能成为黑色锦囊牌的目标。②当你于回合内受到伤害时,你防止此伤害并摸2X张牌(X为伤害值)。',
|
||||
ol_lusu:'界鲁肃',
|
||||
olhaoshi:'好施',
|
||||
olhaoshi_info:'摸牌阶段开始时,你可以多摸两张牌。然后摸牌阶段结束时,若你的手牌数大于5,则你将手牌数的一半(向下取整)交给一名手牌最少其他角色并获得如下效果直到你下回合开始:当你成为【杀】或普通锦囊牌的目标后,其可以交给你一张手 牌。',
|
||||
|
@ -12628,6 +12696,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_sp_taishici_ab:'太史慈',
|
||||
rejixu:"击虚",
|
||||
rejixu_info:"出牌阶段限一次。若你有手牌,则你可以选择至多X名角色,令这些角色猜测你的手牌区中是否有【杀】。若你:有【杀】,则你本阶段使用【杀】的次数上限+Y,且当你于本阶段内使用【杀】指定目标后,你可以令这Y名角色也成为此【杀】的目标;没有【杀】,则你弃置这Y名角色的各一张牌。然后你摸Y张牌(X为你的体力值,Y为这些角色中猜错的角色数)。",
|
||||
ol_dianwei:'界典韦',
|
||||
olqiangxi:'强袭',
|
||||
olqiangxi_info:'出牌阶段限两次。你可以弃置一张武器牌或受到1点无来源伤害,然后对一名本回合内未成为过〖强袭〗目标的其他角色造成1点伤害。',
|
||||
olningwu:'狞恶',
|
||||
olningwu_info:'锁定技。当一名角色A于一回合内第二次受到伤害后,若A或伤害来源为你,则你摸一张牌,然后弃置其装备区或判定区内的一张牌。',
|
||||
|
||||
refresh_standard:'界限突破·标',
|
||||
refresh_feng:'界限突破·风',
|
||||
|
|
|
@ -69,7 +69,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"yl_yuanshu":["male","qun",4,["drlt_yongsi","drlt_weidi"],["zhu"]],
|
||||
"zhangxiu":["male","qun",4,["drlt_xiongluan","drlt_congjian"],[]],
|
||||
"chendao":["male","shu",4,["drlt_wanglie"],[]],
|
||||
zhoufei:["female","wu",3,["liangyin","kongsheng"],[]],
|
||||
zhoufei:["female","wu",3,["olliangyin","olkongsheng"]],
|
||||
},
|
||||
perfectPair:{
|
||||
jiaxu:['liqueguosi'],
|
||||
|
@ -141,6 +141,250 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"chendao":"陈到,字叔至,生卒年不详,豫州汝南(今河南驻马店平舆县)人。三国时期蜀汉将领,刘备帐下白毦兵统领,名位常亚于赵云,以忠勇著称。蜀汉建兴年间,任征西将军、永安都督,封亭侯。在任期间去世。",
|
||||
},
|
||||
skill:{
|
||||
//周妃
|
||||
olliangyin:{
|
||||
audio:'liangyin',
|
||||
trigger:{
|
||||
global:["loseAfter","addToExpansionAfter","cardsGotoSpecialAfter",'loseAsyncAfter'],
|
||||
},
|
||||
filter:function(event,player,name){
|
||||
if(event.name=='lose'||event.name=='loseAsync') return event.getlx!==false&&event.toStorage==true;
|
||||
if(event.name=='cardGotoSpecial') return !event.notrigger;
|
||||
return true;
|
||||
},
|
||||
direct:true,
|
||||
usable:1,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('olliangyin'),'选择一名其他角色,你与其各摸一张牌',lib.filter.notMe).set('ai',function(target){
|
||||
var player=_status.event.player,num=player.getExpansions('olkongsheng').length-1;
|
||||
var att=get.attitude(player,target);
|
||||
if(att<=0) return 0;
|
||||
if(target.countCards('h')==num&&target.isDamaged()&&get.recoverEffect(target,player,player)>0) return 3*att;
|
||||
return att;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
player.logSkill('olliangyin',target);
|
||||
game.asyncDraw([player,target].sortBySeat());
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
game.delayx();
|
||||
var num=player.getExpansions('olkongsheng').length;
|
||||
var check=function(player){
|
||||
if(!player.isIn()||player.isHealthy()) return false;
|
||||
return player.countCards('h')==num;
|
||||
}
|
||||
if(check(player)||check(target)){
|
||||
var choiceList=[
|
||||
'令自己回复1点体力',
|
||||
'令'+get.translation(target)+'回复1点体力',
|
||||
];
|
||||
var choices=[];
|
||||
if(check(player)) choices.push('选项一');
|
||||
else choiceList[0]='<span style="opacity:0.5">'+choiceList[0]+'</span>';
|
||||
if(check(target)) choices.push('选项二');
|
||||
else choiceList[1]='<span style="opacity:0.5">'+choiceList[1]+'</span>';
|
||||
choices.push('cancel2');
|
||||
player.chooseControl(choices).set('choiceList',choiceList).set('prompt','良姻:是否令一名角色回复体力?').set('ai',function(){
|
||||
var player=_status.event.player,target=_status.event.getParent().target;
|
||||
var list=_status.event.controls.slice(0),eff1=0,eff2=0;
|
||||
if(list.contains('选项一')) eff1=get.recoverEffect(player,player,player);
|
||||
if(list.contains('选项二')) eff2=get.recoverEffect(target,player,player);
|
||||
if(eff1>Math.max(0,eff2)) return '选项一';
|
||||
if(eff2>0) return '选项二';
|
||||
return 'cancel2';
|
||||
});
|
||||
}
|
||||
else event.finish();
|
||||
'step 3'
|
||||
if(result.control=='选项一') player.recover();
|
||||
else if(result.control=='选项二') target.recover();
|
||||
},
|
||||
group:'olliangyin_gain',
|
||||
subSkill:{
|
||||
gain:{
|
||||
audio:'liangyin',
|
||||
trigger:{
|
||||
global:['loseAfter','equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
|
||||
},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
var evt=event.getl(player);
|
||||
return evt&&(evt.xs.length>0||evt.ss.length>0);
|
||||
},
|
||||
usable:1,
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(!player.countCards('he')||!game.hasPlayer(function(current){
|
||||
return current!=player&¤t.countCards('he')>0;
|
||||
})) event.finish();
|
||||
else player.chooseCardTarget({
|
||||
prompt:get.prompt('olliangyin'),
|
||||
prompt2:'弃置一张牌,并令一名其他角色也弃置一张牌',
|
||||
position:'he',
|
||||
filterCard:lib.filter.cardDiscardable,
|
||||
filterTarget:function(card,player,target){
|
||||
return target!=player&&target.countCards('he')>0;
|
||||
},
|
||||
ai1:function(card){
|
||||
var player=_status.event.player;
|
||||
var num=player.getExpansions('olkongsheng').length,hs=player.countCards('h');
|
||||
if(get.position(card)!='e') hs--;
|
||||
if(hs==num&&player.isDamaged()&&get.recoverEffect(player,player,player)>0) return 9-get.value(card);
|
||||
return 5-get.value(card);
|
||||
},
|
||||
ai2:function(target){
|
||||
var player=_status.event.player;
|
||||
var has=target.hasCard(function(card){
|
||||
return get.value(card,target)<=0;
|
||||
},'e'),att=get.attitude(player,target);
|
||||
if(!has) att=-att;
|
||||
return att*has?2:1;
|
||||
},
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
player.logSkill('olliangyin_gain',target);
|
||||
player.discard(result.cards);
|
||||
target.chooseToDiscard('he',true);
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
game.delayx();
|
||||
var num=player.getExpansions('olkongsheng').length;
|
||||
var check=function(player){
|
||||
if(!player.isIn()||player.isHealthy()) return false;
|
||||
return player.countCards('h')==num;
|
||||
}
|
||||
if(check(player)||check(target)){
|
||||
var choiceList=[
|
||||
'令自己回复1点体力',
|
||||
'令'+get.translation(target)+'回复1点体力',
|
||||
];
|
||||
var choices=[];
|
||||
if(check(player)) choices.push('选项一');
|
||||
else choiceList[0]='<span style="opacity:0.5">'+choiceList[0]+'</span>';
|
||||
if(check(target)) choices.push('选项二');
|
||||
else choiceList[1]='<span style="opacity:0.5">'+choiceList[1]+'</span>';
|
||||
choices.push('cancel2');
|
||||
player.chooseControl(choices).set('choiceList',choiceList).set('prompt','良姻:是否令一名角色回复体力?').set('ai',function(){
|
||||
var player=_status.event.player,target=_status.event.getParent().target;
|
||||
var list=_status.event.controls.slice(0),eff1=0,eff2=0;
|
||||
if(list.contains('选项一')) eff1=get.recoverEffect(player,player,player);
|
||||
if(list.contains('选项二')) eff2=get.recoverEffect(target,player,player);
|
||||
if(eff1>Math.max(0,eff2)) return '选项一';
|
||||
if(eff2>0) return '选项二';
|
||||
return 'cancel2';
|
||||
});
|
||||
}
|
||||
else event.finish();
|
||||
'step 3'
|
||||
if(result.control=='选项一') player.recover();
|
||||
else if(result.control=='选项二') target.recover();
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
olkongsheng:{
|
||||
audio:'kongsheng',
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.countCards('he')>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseCard('he',[1,player.countCards('he')],get.prompt('olkongsheng'),'将任意张牌作为“箜”置于武将牌上').set('ai',function(card){
|
||||
var player=_status.event.player,num=player.getExpansions('olkongsheng')+ui.selected.cards.length;
|
||||
if(ui.selected.cards.length>0&&game.hasPlayer(function(current){
|
||||
if(current.isHealthy()||get.recoverEffect(current,player,player)<=0) return false;
|
||||
var num2=current.countCards('h',function(card){
|
||||
if(current!=player) return true;
|
||||
return !ui.selected.cards.contains(card);
|
||||
})+1;
|
||||
return num==num2;
|
||||
})) return 0;
|
||||
if(get.type(card,null,false)=='equip'){
|
||||
for(var i of ui.selected.cards){
|
||||
if(get.type(i,null,false)=='equip') return 0;
|
||||
}
|
||||
return 5-get.value(card);
|
||||
}
|
||||
if(!player.hasValueTarget(card)) return 1;
|
||||
return 0;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('olkongsheng');
|
||||
player.addToExpansion(result.cards,player,'give').gaintag.add('olkongsheng');
|
||||
}
|
||||
},
|
||||
onremove:function(player,skill){
|
||||
var cards=player.getExpansions(skill);
|
||||
if(cards.length) player.loseToDiscardpile(cards);
|
||||
},
|
||||
intro:{
|
||||
content:'expansion',
|
||||
markcount:'expansion',
|
||||
},
|
||||
group:'olkongsheng_kessoku',
|
||||
subSkill:{
|
||||
kessoku:{
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
return player.getExpansions('olkongsheng').filter(function(card){
|
||||
return get.type(card,false)!='equip';
|
||||
}).length>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var cards=player.getExpansions('olkongsheng').filter(function(card){
|
||||
return get.type(card,false)!='equip';
|
||||
});
|
||||
if(cards.length) player.gain(cards,'gain2');
|
||||
'step 1'
|
||||
var cards=player.getExpansions('olkongsheng');
|
||||
if(cards.length>0){
|
||||
player.chooseTarget(true,'令一名角色使用以下装备牌',get.translation(cards)).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.effect(target,{name:'losehp'},player,player);
|
||||
});
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
player.line(target,'green');
|
||||
'step 3'
|
||||
var cards=player.getExpansions('olkongsheng').filter(function(i){
|
||||
return target.hasUseTarget(i);
|
||||
});
|
||||
if(cards.length==1){
|
||||
event._result={bool:true,links:cards}
|
||||
}
|
||||
else if(cards.length) target.chooseButton(true,['选择要使用的装备牌',cards]).set('ai',function(button){
|
||||
return get.order(button.link);
|
||||
});
|
||||
else event.goto(5);
|
||||
'step 4'
|
||||
if(result.bool){
|
||||
target.chooseUseTarget(result.links[0],true);
|
||||
event.goto(3);
|
||||
}
|
||||
'step 5'
|
||||
target.loseHp();
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//新毌丘俭
|
||||
zhengrong:{
|
||||
trigger:{player:'useCardToPlayered'},
|
||||
|
@ -1275,7 +1519,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
prompt2:'当你使用【杀】指定一名角色为目标后,你可以获得其一张牌,然后你本回合内不能再对其使用牌',
|
||||
filter:function(event,player){
|
||||
return event.card.name=='sha'&&event.player.countGainableCards(player,'he')>0&&player.storage.nzry_juzhan==true;
|
||||
return event.card.name=='sha'&&player.storage.nzry_juzhan==true&&event.target.countGainableCards(player,'he')>0;
|
||||
},
|
||||
check:function(event,player){
|
||||
return event.player.countCards('he')>0&&event.targets&&event.targets.length==1;
|
||||
|
@ -5473,9 +5717,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
return get.damageEffect(target,player);
|
||||
}
|
||||
}
|
||||
},
|
||||
threaten:1.3,
|
||||
},
|
||||
threaten:1.3
|
||||
},
|
||||
xinqiangxi:{
|
||||
audio:'qiangxi',
|
||||
|
@ -7300,7 +7544,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xiaoqiao:['ol_xiaoqiao','re_xiaoqiao','xiaoqiao'],
|
||||
yuji:['xin_yuji','re_yuji','yuji'],
|
||||
zhangjiao:['re_zhangjiao','sp_zhangjiao','zhangjiao'],
|
||||
dianwei:['dianwei','re_dianwei'],
|
||||
dianwei:['ol_dianwei','re_dianwei','dianwei'],
|
||||
xunyu:['ol_xunyu','re_xunyu','xunyu'],
|
||||
sp_zhugeliang:['ol_sp_zhugeliang','re_sp_zhugeliang','sp_zhugeliang'],
|
||||
pangtong:['ol_pangtong','re_pangtong','pangtong'],
|
||||
|
@ -7721,6 +7965,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"guhuo_phase_info":"",
|
||||
xinhongyan:'红颜',
|
||||
xinhongyan_info:'锁定技,你的♠牌和♠判定牌的花色视为♥。一名角色的判定结果生效前,若判定结果为♥,则你将其改为一种花色。',
|
||||
olliangyin:'良姻',
|
||||
olliangyin_info:'当有牌发生移动后,若此移动事件是本回合内你拥有〖良姻〗期间的首个有牌移出游戏/移入游戏的事件,则你可以选择一名其他角色。你与其各摸一张牌/弃置一张牌,然后你可以选择你或其中的一名手牌数为X的角色,该角色回复1点体力(X为你的“箜”数)',
|
||||
olkongsheng:'箜声',
|
||||
olkongsheng_info:'①准备阶段开始时,你可以将任意张牌置于你的武将牌上,称为“箜”。②结束阶段开始时,若你有不为装备牌的“箜”,则你获得“箜”中的非装备牌,然后令一名角色依次使用“箜”中的装备牌并失去1点体力。',
|
||||
|
||||
shenhua_feng:'神话再临·风',
|
||||
shenhua_huo:'神话再临·火',
|
||||
|
|
771
character/sp.js
|
@ -6,11 +6,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
characterSort:{
|
||||
sp:{
|
||||
sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","ganfuren","ol_bianfuren","qinghegongzhu","tengfanglan","ruiji",'caoxiancaohua'],
|
||||
sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi','ol_dongzhao','ol_chendeng','jin_yanghu','zhaoyǎn'],
|
||||
sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun"],
|
||||
sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu','ol_xinxianying',"daxiaoqiao"],
|
||||
sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi','ol_dongzhao','ol_chendeng','jin_yanghu','wangyan','xiahouxuan'],
|
||||
sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda"],
|
||||
sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu','ol_xinxianying',"daxiaoqiao","jin_guohuai"],
|
||||
sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','ol_puyuan'],
|
||||
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","fanjiangzhangda","huojun"],
|
||||
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong'],
|
||||
sp_liesi:['mizhu','weizi'],
|
||||
sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe','sp_menghuo'],
|
||||
sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'],
|
||||
|
@ -28,6 +28,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
character:{
|
||||
jin_guohuai:['female','jin',3,['zhefu','yidu']],
|
||||
xiahouxuan:['male','wei',3,['olhuanfu','olqingyi','olzeyue']],
|
||||
dengzhong:['male','wei',4,['dzkanpo','dzgengzhan']],
|
||||
wangyan:['male','jin',3,['yangkuang','cihuang','sanku']],
|
||||
huojun:['male','shu',4,['qiongshou','fenrui']],
|
||||
caoxiancaohua:['female','qun',3,['huamu','qianmeng','liangyuan','jisi']],
|
||||
jin_zhouchu:['male','jin',4,['shanduan','yilie']],
|
||||
|
@ -174,6 +178,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
//kaisa:["male","western",4,["zhengfu"]],
|
||||
},
|
||||
characterIntro:{
|
||||
xiahouxuan:'夏侯玄(209年~254年),字泰初(《三国志》等作太初),沛国谯县(今安徽省亳州市)人。三国时期曹魏大臣、思想家、文学家,征南大将军夏侯尚之子,大将军曹爽的表弟。夏侯玄少年有名望,仪表出众,时人称为“朗朗如日月之入怀”。魏文帝黄初六年(225年),袭封昌陵乡侯。魏明帝时,历任散骑黄门侍郎、羽林监。少帝曹芳继位后,拜散骑常侍、中护军,保卫皇宫。后任征西将军,任内与曹爽策划骆谷之役,大失人心。高平陵政变后,被夺去兵权,改任大鸿胪、太常卿。嘉平六年(254年),中书令李丰与外戚张缉密谋杀死大将军司马师,改以夏侯玄执政。事泄被杀,夷灭三族,夏侯玄死时年仅四十六岁。著有文集三卷,如今已佚。政治上,提出了“审官择人”、“除重官”、“改服制”等制度,被太傅司马懿评价“皆大善”。博学多识,才华出众,精通玄学,成为“四聪”之一,与何晏等人开创了魏晋玄学的先河,是早期的玄学领袖人物。',
|
||||
dengzhong:'邓忠(不详-264年),三国时期曹魏名将邓艾之子。景元五年(264年),钟会谋反事败,士兵哗变,钟会被杀,邓艾部将想追还邓艾父子,但卫瓘却派田续追邓艾,于绵竹西相遇,将邓艾和邓忠等人杀死。直至泰始九年(273年)才恢复名节。',
|
||||
wangyan:'王衍(256年~311年),字夷甫,琅邪郡临沂县(今山东省临沂市)人。西晋末年重臣,玄学清谈领袖,曹魏幽州刺史王雄之孙、平北将军王乂之子、司徒王戎堂弟。王衍出身琅琊王氏。外表清明俊秀,风姿安详文雅,笃好老庄学说,颇有时名。步入仕途后,历任黄门侍郎、中领军、尚书令、尚书仆射等职。光熙元年(307年),升任司空。次年,又任司徒。王衍位高权重,却不思为国,为保全自己,还让弟弟王澄、族弟王敦分任荆州、青州刺史,遭时人鄙夷。王弥进攻洛阳时,王衍率军抵抗。其后转任太尉兼尚书令,又兼领太傅军司。永嘉五年(311年),东海王司马越去世,王衍奉其灵柩返回东海,途中为羯人石勒所俘获。王衍在与石勒交谈时,仍推脱责任,并劝其称帝,石勒大怒,将其与西晋旧臣一同活埋,时年五十六岁。王衍工书法,尤擅行书,《宣和书谱》有其作品《尊夫人帖》。',
|
||||
caoxiancaohua:'此处为「曹宪」的相关介绍。关于「曹华」的部分请参考原本的介绍。<br>曹宪(生卒年不详),女,沛国谯县(今安徽省亳州市)人。东汉末年历史人物,汉献帝刘协嫔妃,魏武帝曹操女儿。建安十八年,嫁给汉献帝刘协,受封为贵人。黄初元年(220年),兄弟曹丕称帝后,汉献帝成为山阳公,不知所终。',
|
||||
zhaoyǎn:'赵俨(171~245年),字伯然,颍川阳翟(今河南禹州市)。东汉末年颍川“四大名士”之一,三国时期魏国名臣。熟读经史,精明强干。建安二年,投靠大将军曹操之后,起家朗陵县令,历任司空府掾、司空主薄、都督护军、扶风太守等职。魏文帝曹丕继位后,历任魏国侍中、驸马都尉、河东太守、典农中郎将、度支尚书,封宜土亭侯。魏明帝曹睿时期,历任大司农、骠骑将军、大司空等职。正始六年,去世,时年七十五,谥号为穆。',
|
||||
ruiji:'芮姬,芮玄之女,太子孙登妃,黄武五年卒。',
|
||||
|
@ -650,6 +657,556 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
skill:{
|
||||
//夏侯玄
|
||||
olhuanfu:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
player:'useCardToPlayered',
|
||||
target:'useCardToTargeted',
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(event.card.name!='sha') return false;
|
||||
if(player==event.player&&!event.isFirstTarget) return false;
|
||||
if(event.olhuanfu_map&&event.olhuanfu_map[player.playerid]) return false;
|
||||
return player.maxHp>0&&player.countCards('he')>0;
|
||||
},
|
||||
shaRelated:true,
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseToDiscard('he',[1,player.maxHp],get.prompt('olhuanfu'),'通过弃牌,预测'+(player==trigger.player?'你':get.translation(trigger.player))+'使用的'+get.translation(trigger.card)+'能造成多少伤害。如果弃置的牌数等于总伤害,则你摸两倍的牌。').set('predict',function(){
|
||||
var target=trigger.target;
|
||||
if(player==target){
|
||||
if(trigger.targets.length>1||player.hasShan()||get.effect(player,trigger.card,trigger.player,player)==0) return 0;
|
||||
}
|
||||
else{
|
||||
var target=trigger.target;
|
||||
if(trigger.targets.length>1||target.mayHaveShan()) return 0;
|
||||
}
|
||||
var num=trigger.getParent().baseDamage;
|
||||
var map=trigger.getParent().customArgs,id=target.playerid;
|
||||
if(map[id]){
|
||||
if(typeof map[id].baseDamage=='number') num=map[id].baseDamage;
|
||||
if(typeof map[id].extraDamage=='number') num+=map[id].extraDamage;
|
||||
}
|
||||
if(target.hasSkillTag('filterDamage',null,{
|
||||
player:trigger.player,
|
||||
card:trigger.card,
|
||||
})) num=1;
|
||||
return num;
|
||||
}()).set('ai',function(card){
|
||||
var num=_status.event.predict,player=_status.event.player;
|
||||
if(ui.selected.cards.length>=num) return 0;
|
||||
if(player.countCards('he',function(card){
|
||||
return get.value(card)<6+num;
|
||||
})<num) return 0;
|
||||
return 6+num-get.value(card);
|
||||
}).logSkill='olhuanfu';
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.addTempSkill('olhuanfu_lottery');
|
||||
var evt=trigger.getParent();
|
||||
if(!evt.olhuanfu_map) evt.olhuanfu_map={};
|
||||
evt.olhuanfu_map[player.playerid]=result.cards.length;
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
if(card.name=='sha'&&target.hp>0&¤t<0&&target.countCards('he')>0) return 0.7;
|
||||
},
|
||||
},
|
||||
},
|
||||
subSkill:{
|
||||
lottery:{
|
||||
trigger:{global:'useCardAfter'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
var map=event.olhuanfu_map;
|
||||
if(!map||!map[player.playerid]) return false;
|
||||
var num=0;
|
||||
event.player.getHistory('sourceDamage',function(evt){
|
||||
if(evt.card==event.card&&evt.getParent().type=='card') num+=evt.num;
|
||||
});
|
||||
return num==map[player.playerid];
|
||||
},
|
||||
content:function(){
|
||||
player.draw(2*trigger.olhuanfu_map[player.playerid]);
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
olqingyi:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
return player.hasCard(function(card){
|
||||
return lib.filter.cardDiscardable(card,player,'olqingyi');
|
||||
},'he')&&game.hasPlayer(current=>lib.skill.olqingyi.filterTarget(null,player,current));
|
||||
},
|
||||
selectTarget:[1,2],
|
||||
filterTarget:function(card,player,target){
|
||||
return target!=player&&target.countCards('he')>0;
|
||||
},
|
||||
multitarget:true,
|
||||
multiline:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var list=[player];
|
||||
list.addArray(targets);
|
||||
list.sortBySeat();
|
||||
event.list=list;
|
||||
for(var target of event.list){
|
||||
if(!target.hasCard(function(card){
|
||||
return lib.filter.cardDiscardable(card,target,'olqingyi');
|
||||
},'he')){
|
||||
event.finish();
|
||||
break;
|
||||
}
|
||||
}
|
||||
'step 1'
|
||||
player.chooseCardOL(event.list,'he',true,'清议:选择弃置一张牌',function(card,player){
|
||||
return lib.filter.cardDiscardable(card,player,'olqingyi');
|
||||
}).set('ai',get.unuseful);
|
||||
'step 2'
|
||||
var lose_list=[],cards=[];
|
||||
for(var i=0;i<result.length;i++){
|
||||
var current=event.list[i],card=result[i].cards[0];
|
||||
lose_list.push([current,result[i].cards]);
|
||||
card.classList.remove('glow');
|
||||
cards.push(card);
|
||||
}
|
||||
var type=get.type2(cards[0]);
|
||||
for(var i=1;i<cards.length;i++){
|
||||
if(get.type2(cards[i])!=type) event.finish();
|
||||
}
|
||||
game.loseAsync({
|
||||
lose_list:lose_list,
|
||||
}).setContent('discardMultiple');
|
||||
'step 3'
|
||||
event.goto(1);
|
||||
for(var target of event.list){
|
||||
if(!target.hasCard(function(card){
|
||||
return lib.filter.cardDiscardable(card,target,'olqingyi');
|
||||
},'he')){
|
||||
event.finish();
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
threaten:1.2,
|
||||
order:9,
|
||||
result:{
|
||||
target:-1,
|
||||
},
|
||||
},
|
||||
group:'olqingyi_gain',
|
||||
subSkill:{
|
||||
gain:{
|
||||
audio:'olqingyi',
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
var history=player.getHistory('useSkill',(evt)=>evt.skill=='olqingyi');
|
||||
if(!history.length) return false;
|
||||
var color=false;
|
||||
for(var evt of history){
|
||||
var list=[player];
|
||||
list.addArray(evt.targets);
|
||||
for(var target of list){
|
||||
target.getHistory('lose',function(evtx){
|
||||
if(color===true||evtx.getParent(2).name!='olqingyi') return false;
|
||||
for(var card of evtx.cards){
|
||||
if(color===true||get.position(card,true)!='d') continue;
|
||||
var color2=get.color(card,false);
|
||||
if(!color) color=color2;
|
||||
else if(color!=color2) color=true;
|
||||
}
|
||||
});
|
||||
if(color===true) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var history=player.getHistory('useSkill',(evt)=>evt.skill=='olqingyi'),cards=[];
|
||||
for(var evt of history){
|
||||
var list=[player];
|
||||
list.addArray(evt.targets);
|
||||
for(var target of list){
|
||||
target.getHistory('lose',function(evtx){
|
||||
if(evtx.getParent(2).name!='olqingyi') return false;
|
||||
for(var card of evtx.cards){
|
||||
if(get.position(card,true)=='d') cards.add(card);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
player.chooseButton(['清议:选择获得两张异色牌',cards],2).set('filterButton',function(button){
|
||||
if(!ui.selected.buttons.length) return true;
|
||||
return get.color(button.link,false)!=get.color(ui.selected.buttons[0].link,false);
|
||||
}).set('ai',function(button){
|
||||
return get.value(button.link,_status.event.player);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('olqingyi_gain');
|
||||
player.gain(result.links,'gain2');
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
olzeyue:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
limited:true,
|
||||
skillAnimation:true,
|
||||
animationColor:'water',
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
var sources=[],history=player.actionHistory;
|
||||
for(var i=history.length-1;i>=0;i--){
|
||||
if(i<history.length-1&&history[i].isMe) break;
|
||||
for(var evt of history[i].damage){
|
||||
if(evt.source&&evt.source!=player&&evt.source.isIn()) sources.add(evt.source);
|
||||
}
|
||||
}
|
||||
for(var source of sources){
|
||||
var skills=source.getStockSkills('一!','五!');
|
||||
for(var skill of skills){
|
||||
var info=get.info(skill);
|
||||
if(info&&!info.charlotte&&!get.is.locked(skill,source)&&source.hasSkill(skill,null,null,false)) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var sources=[],history=player.actionHistory;
|
||||
for(var i=history.length-1;i>=0;i--){
|
||||
if(i<history.length-1&&history[i].isMe) break;
|
||||
for(var evt of history[i].damage){
|
||||
if(evt.source&&evt.source!=player&&evt.source.isIn()) sources.add(evt.source);
|
||||
}
|
||||
}
|
||||
sources=sources.filter(function(source){
|
||||
var skills=source.getStockSkills('一!','五!');
|
||||
for(var skill of skills){
|
||||
var info=get.info(skill);
|
||||
if(info&&!info.charlotte&&!get.is.locked(skill,source)&&source.hasSkill(skill,null,null,false)) return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
player.chooseTarget(get.prompt('olzeyue'),'令一名可选角色的一个非锁定技失效',function(card,player,target){
|
||||
return _status.event.sources.contains(target);
|
||||
}).set('sources',sources).set('ai',function(target){
|
||||
var player=_status.event.player,att=get.attitude(player,target);
|
||||
if(att>=0) return 0;
|
||||
return get.threaten(target,player);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('olzeyue',target);
|
||||
player.awakenSkill('olzeyue');
|
||||
event.target=target;
|
||||
var skills=target.getStockSkills('一!','五!');
|
||||
skills=skills.filter(function(skill){
|
||||
var info=get.info(skill);
|
||||
if(info&&!info.charlotte&&!get.is.locked(skill,target)&&target.hasSkill(skill,null,null,false)) return true;
|
||||
});
|
||||
if(skills.length==1) event._result={control:skills[0]};
|
||||
else player.chooseControl(skills).set('prompt','令'+get.translation(target)+'的一个技能失效');
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
var skill=result.control;
|
||||
target.disableSkill('olzeyue_'+player.playerid,skill);
|
||||
target.storage['olzeyue_'+player.playerid]=true;
|
||||
player.addSkill('olzeyue_round');
|
||||
player.markAuto('olzeyue_round',[target]);
|
||||
if(!player.storage.olzeyue_map) player.storage.olzeyue_map={};
|
||||
player.storage.olzeyue_map[target.playerid]=0;
|
||||
game.log(target,'的技能','#g【'+get.translation(skill)+'】','被失效了');
|
||||
},
|
||||
ai:{threaten:3},
|
||||
subSkill:{
|
||||
round:{
|
||||
trigger:{global:'roundStart'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
var storage=player.getStorage('olzeyue_round');
|
||||
for(var source of storage){
|
||||
if(source.isIn()&&source.canUse('sha',player,false)) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.targets=player.storage.olzeyue_round.slice(0).sortBySeat();
|
||||
event.target=event.targets.shift();
|
||||
'step 1'
|
||||
var map=player.storage.olzeyue_map;
|
||||
if(target.storage['olzeyue_'+player.playerid]) map[target.playerid]++;
|
||||
event.num=map[target.playerid]-1;
|
||||
if(event.num<=0) event.finish();
|
||||
'step 2'
|
||||
event.num--;
|
||||
target.useCard(player,{name:'sha',isCard:true},false,'olzeyue_round');
|
||||
'step 3'
|
||||
var key='olzeyue_'+player.playerid;
|
||||
if(target.storage[key]&&player.hasHistory('damage',function(evt){
|
||||
return evt.card.name=='sha'&&evt.getParent().type=='card'&&evt.getParent(3)==event;
|
||||
})){
|
||||
for(var skill in target.disabledSkills){
|
||||
if(target.disabledSkills[skill].contains(key)) game.log(target,'恢复了技能','#g【'+get.translation(skill)+'】');
|
||||
}
|
||||
delete target.storage[key];
|
||||
target.enableSkill(key);
|
||||
}
|
||||
if(event.num>0&&player.isIn()&&target.isIn()&&target.canUse('sha',player,false)){
|
||||
event.goto(2);
|
||||
}
|
||||
else if(event.targets.length>0){
|
||||
event.target=event.targets.shift();
|
||||
event.goto(1);
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//邓忠
|
||||
dzkanpo:{
|
||||
audio:2,
|
||||
trigger:{source:'damageSource'},
|
||||
filter:function(event,player){
|
||||
return event.getParent().type=='card'&&event.card&&event.card.name=='sha'&&event.player.countCards('he')>0;
|
||||
},
|
||||
logTarget:'player',
|
||||
content:function(){
|
||||
var suit=get.suit(trigger.card);
|
||||
var next=player.gainPlayerCard(trigger.player,'h','visible');
|
||||
next.set('suit',suit);
|
||||
next.set('filterButton',function(button){
|
||||
var evt=_status.event;
|
||||
return get.suit(button.link,evt.target)==evt.suit;
|
||||
});
|
||||
},
|
||||
group:'dzkanpo_sha',
|
||||
subSkill:{
|
||||
sha:{
|
||||
enable:'chooseToUse',
|
||||
usable:1,
|
||||
viewAs:{name:'sha'},
|
||||
viewAsFilter:function(player){
|
||||
return player.countCards('hs')>0;
|
||||
},
|
||||
filterCard:true,
|
||||
position:'hs',
|
||||
prompt:'将一张手牌当做【杀】使用',
|
||||
check:function(card){
|
||||
return 6-get.value(card);
|
||||
},
|
||||
ai:{
|
||||
respondSha:true,
|
||||
skillTagFilter:function(player){
|
||||
if(player.getStat('skill').dzkanpo_sha) return false;
|
||||
if(!player.countCards('hs')) return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
dzgengzhan:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
global:['loseAfter','loseAsyncAfter'],
|
||||
},
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
if(event.type!='discard'||event.getlx===false||player==_status.currentPhase||!event.isPhaseUsing()) return false;
|
||||
for(var card of event.cards){
|
||||
if(get.position(card,true)=='d'&&get.name(card,event.hs&&event.hs.contains(card)?event.player:false)=='sha') return true;
|
||||
}
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var cards=trigger.cards.filter(function(card){
|
||||
return (get.position(card,true)=='d'&&get.name(card,trigger.hs&&trigger.hs.contains(card)?trigger.player:false)=='sha')
|
||||
});
|
||||
player.chooseButton(['是否发动【更战】获得一张杀?',cards]).set('ai',function(button){
|
||||
return get.value(button.link,_status.event.player);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('dzgengzhan');
|
||||
player.gain(result.links,'gain2');
|
||||
}
|
||||
else player.storage.counttrigger.dzgengzhan--;
|
||||
},
|
||||
group:'dzgengzhan_add',
|
||||
subSkill:{
|
||||
add:{
|
||||
audio:'dzgengzhan',
|
||||
trigger:{global:'phaseJieshuBegin'},
|
||||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
return player!=event.player&&!event.player.hasHistory('useCard',function(evt){
|
||||
return evt.card.name=='sha';
|
||||
});
|
||||
},
|
||||
logTarget:'player',
|
||||
content:function(){
|
||||
player.addTempSkill('dzgengzhan_effect',{player:'phaseUseAfter'});
|
||||
player.addMark('dzgengzhan_effect',1,false);
|
||||
game.delayx();
|
||||
},
|
||||
},
|
||||
effect:{
|
||||
onremove:true,
|
||||
charlotte:true,
|
||||
mod:{
|
||||
cardUsable:function(card,player,num){
|
||||
if(card.name=='sha') return num+player.countMark('dzgengzhan_effect');
|
||||
},
|
||||
},
|
||||
intro:{content:'使用杀的次数上限+#'},
|
||||
},
|
||||
},
|
||||
},
|
||||
//王衍
|
||||
yangkuang:{
|
||||
audio:2,
|
||||
trigger:{player:'recoverEnd'},
|
||||
filter:function(event,player){
|
||||
return player.isHealthy();
|
||||
},
|
||||
logTarget:function(event,player){
|
||||
return _status.currentPhase||player;
|
||||
},
|
||||
check:function(event,player){
|
||||
var target=(_status.currentPhase||player);
|
||||
if(get.attitude(player,target)>0) return true;
|
||||
if(player.countCards('h')>target.countCards('h')) return true;
|
||||
if(!target.getCardUsable('sha')) return true;
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseUseTarget('jiu',true);
|
||||
'step 1'
|
||||
var target=_status.currentPhase;
|
||||
if(target) target.draw('nodelay');
|
||||
player.draw();
|
||||
},
|
||||
},
|
||||
cihuang:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
global:['eventNeutralized','shaMiss'],
|
||||
},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(event.player!=_status.currentPhase||event.targets.length!=1||event.type!='card') return false;
|
||||
return lib.skill.cihuang.getList(player,event.player,true);
|
||||
},
|
||||
getList:function(player,target,bool){
|
||||
var natures=lib.inpile_nature.slice(0);
|
||||
var tricks=[];
|
||||
for(var name of lib.inpile){
|
||||
var info=lib.card[name];
|
||||
if(!info||info.type!='trick'||info.notarget||((info.selectTarget&&info.selectTarget!=1)&&(info.selectTarget!=-1||!info.toself))) continue;
|
||||
tricks.push(name);
|
||||
}
|
||||
var history=player.actionHistory;
|
||||
for(var i=history.length-1;i>=0;i--){
|
||||
var info=history[i];
|
||||
for(var evt of info.useCard){
|
||||
var name=evt.card.name;
|
||||
if(name=='sha'){
|
||||
if(evt.card.nature) natures.remove(evt.card.nature);
|
||||
}
|
||||
else tricks.remove(name);
|
||||
};
|
||||
if(info.isRound) break;
|
||||
}
|
||||
var vcards=[];
|
||||
for(var i of natures){
|
||||
if(player.canUse({
|
||||
name:'sha',
|
||||
nature:i,
|
||||
isCard:true,
|
||||
},target)){
|
||||
if(bool) return true;
|
||||
else vcards.push(['基本','','sha',i]);
|
||||
}
|
||||
}
|
||||
for(var i of tricks){
|
||||
if(player.canUse({
|
||||
name:i,
|
||||
isCard:true,
|
||||
},target)){
|
||||
if(bool) return true;
|
||||
else vcards.push(['锦囊','',i]);
|
||||
}
|
||||
}
|
||||
if(bool) return false;
|
||||
return vcards;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var target=trigger.player;
|
||||
var list=lib.skill.cihuang.getList(player,target);
|
||||
player.chooseButton([get.prompt('cihuang',target),'<div class="text center">视为对'+get.translation(target)+'使用以下的一张牌</div>',[list,'vcard']]).set('ai',function(button){
|
||||
var card={
|
||||
name:button.link[2],
|
||||
nature:button.link[3],
|
||||
isCard:true,
|
||||
storage:{cihuang:true},
|
||||
},player=_status.event.player,target=_status.event.getTrigger().player;
|
||||
return get.effect(target,card,player,player);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.useCard({
|
||||
name:result.links[0][2],
|
||||
nature:result.links[0][3],
|
||||
isCard:true,
|
||||
storage:{cihuang:true},
|
||||
},false,trigger.player,'cihuang').oncard=function(card,player){
|
||||
_status.event.directHit.addArray(game.filterPlayer());
|
||||
};
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
return arg&&arg.card&&arg.card.storage&&arg.card.storage.cihuang;
|
||||
},
|
||||
},
|
||||
},
|
||||
sanku:{
|
||||
audio:2,
|
||||
trigger:{player:'dying'},
|
||||
forced:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.loseMaxHp();
|
||||
'step 1'
|
||||
var num=player.maxHp-player.hp;
|
||||
if(num>0) player.recover(num);
|
||||
},
|
||||
ai:{halfneg:true},
|
||||
},
|
||||
//霍峻
|
||||
qiongshou:{
|
||||
audio:2,
|
||||
|
@ -734,7 +1291,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return player!=target&&player.countCards('e')>target.countCards('e');
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
var num=player.countCards('h')-target.countCards('h');
|
||||
var num=player.countCards('e')-target.countCards('e');
|
||||
if(get.attitude(player,target)>=0) return 0;
|
||||
if(num>=Math.min(2,player.hp,target.hp)) return get.damageEffect(target,player,player);
|
||||
return 0;
|
||||
|
@ -1455,7 +2012,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('tongxie'),'选择至多两名其他角色作为“同协角色”',lib.filter.notMe,[1,2]).set('ai',function(target){
|
||||
player.chooseTarget(get.prompt('tongxie'),'选择至多两名其他角色作为“同协角色”',lib.filter.notMe,[0,2]).set('ai',function(target){
|
||||
return get.attitude(_status.event.player,target);
|
||||
});
|
||||
'step 1'
|
||||
|
@ -1803,15 +2360,36 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var subtype=get.subtype(cards[0]);
|
||||
if(subtype!='equip1'&&subtype!='equip2') subtype='others';
|
||||
var card_map={
|
||||
equip1:['wushuangfangtianji','guilongzhanyuedao','chixueqingfeng','bintieshuangji','wutiesuolian','wuxinghelingshan'],
|
||||
equip2:['linglongshimandai','hongmianbaihuapao','qimenbagua','guofengyupao','huxinjing','heiguangkai'],
|
||||
others:['shufazijinguan','xuwangzhimian','tianjitu','taigongyinfu','sanlve','zhaogujing'],
|
||||
equip1:[
|
||||
['diamond',13,'bintieshuangji'],
|
||||
['diamond',1,'wuxinghelingshan'],
|
||||
['spade',13,'wutiesuolian'],
|
||||
['diamond',12,'wushuangfangtianji'],
|
||||
['spade',6,'chixueqingfeng'],
|
||||
['spade',5,'guilongzhanyuedao'],
|
||||
],
|
||||
equip2:[
|
||||
['club',1,'huxinjing'],
|
||||
['club',2,'heiguangkai'],
|
||||
['spade',2,'linglongshimandai'],
|
||||
['club',1,'hongmianbaihuapao'],
|
||||
['spade',2,'qimenbagua'],
|
||||
['spade',9,'guofengyupao'],
|
||||
],
|
||||
others:[
|
||||
['diamond',1,'zhaogujing'],
|
||||
['spade',5,'sanlve'],
|
||||
['club',12,'tianjitu'],
|
||||
['spade',2,'taigongyinfu'],
|
||||
['diamond',1,'shufazijinguan'],
|
||||
['club',4,'xuwangzhimian'],
|
||||
],
|
||||
};
|
||||
if(!_status.olshengong_map) _status.olshengong_map={};
|
||||
if(!_status.olshengong_maken) _status.olshengong_maken={};
|
||||
var list=card_map[subtype];
|
||||
for(var i=0;i<list.length;i++){
|
||||
var name=list[i];
|
||||
var name=list[i][2];
|
||||
if(!lib.card[name]||_status.olshengong_map[name]){
|
||||
list.splice(i--,1);
|
||||
}
|
||||
|
@ -1825,7 +2403,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var card;
|
||||
if(_status.olshengong_maken[name]) card=_status.olshengong_maken[name];
|
||||
else{
|
||||
card=game.createCard2(name);
|
||||
card=game.createCard2(name,result.links[0][0],result.links[0][1]);
|
||||
_status.olshengong_maken[name]=card;
|
||||
}
|
||||
event.card=card;
|
||||
|
@ -1919,6 +2497,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(player.isEmpty(2)||player.isEmpty(5)||player.isEmpty(1)) return true;
|
||||
return false;
|
||||
},
|
||||
prompt2:'摸牌阶段开始时,你可以少摸一张牌并声明一种装备牌的副类别,然后从牌堆或弃牌堆中获得一张该副类别的牌。',
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseControl('equip1','equip2','equip6','equip5').set('prompt','选择获得一种副类别的装备牌').set('ai',function(card){
|
||||
|
@ -3886,24 +4465,40 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
chuiti:{
|
||||
audio:2,
|
||||
usable:1,
|
||||
trigger:{global:'loseAfter'},
|
||||
trigger:{
|
||||
global:['loseAfter','loseAsyncAfter'],
|
||||
},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(event.type!='discard') return false;
|
||||
if(player!=event.player){
|
||||
var card=event.player.getEquip(5);
|
||||
if(!card||card.name.indexOf('zhuangshu_')!=0) return false;
|
||||
}
|
||||
for(var i of event.cards2){
|
||||
if(get.position(i,true)=='d'&&player.hasUseTarget(i)) return true;
|
||||
}
|
||||
return false;
|
||||
if(event.type!='discard'||event.getlx===false) return false;
|
||||
return game.hasPlayer(function(current){
|
||||
if(player!=current){
|
||||
var card=current.getEquip(5);
|
||||
if(!card||card.name.indexOf('zhuangshu_')!=0) return false;
|
||||
}
|
||||
var evt=event.getl(current);
|
||||
if(!evt||!evt.cards2) return false;
|
||||
for(var i of evt.cards2){
|
||||
if(get.position(i,true)=='d'&&player.hasUseTarget(i)) return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseButton(['垂涕:是否使用其中的一张牌?',trigger.cards2.filter(function(i){
|
||||
return (get.position(i,true)=='d'&&player.hasUseTarget(i));
|
||||
})]).set('ai',function(button){
|
||||
var cards=[];
|
||||
game.countPlayer(function(current){
|
||||
if(player!=current){
|
||||
var card=current.getEquip(5);
|
||||
if(!card||card.name.indexOf('zhuangshu_')!=0) return false;
|
||||
}
|
||||
var evt=trigger.getl(current);
|
||||
for(var i of evt.cards2){
|
||||
if(get.position(i,true)=='d'&&player.hasUseTarget(i)) cards.push(i);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
player.chooseButton(['垂涕:是否使用其中的一张牌?',cards]).set('ai',function(button){
|
||||
return _status.event.player.getUseValue(button.link);
|
||||
});
|
||||
'step 1'
|
||||
|
@ -4906,14 +5501,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
bixiong:{
|
||||
trigger:{player:'loseAfter'},
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.type=='discard'&&event.getParent('phaseDiscard').player==player&&event.hs&&event.hs.length>0;
|
||||
if(event.type!='discard'||event.getlx===false||event.getParent('phaseDiscard').player!=player) return false;
|
||||
var evt=event.getl(player);
|
||||
return evt&&evt.hs&&evt.hs.length>0;
|
||||
},
|
||||
content:function(){
|
||||
var cards=[];
|
||||
for(var i of trigger.hs) cards.add(get.suit(i,player));
|
||||
var cards=[],hs=trigger.getl(player).hs;
|
||||
for(var i of hs) cards.add(get.suit(i,player));
|
||||
player.addTempSkill('bixiong2',{player:'phaseBegin'});
|
||||
player.markAuto('bixiong2',cards);
|
||||
},
|
||||
|
@ -5785,10 +6385,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
var suit=get.suit(trigger.card);
|
||||
var number=get.number(trigger.card);
|
||||
var card=get.cardPile2(function(card){
|
||||
return card.suit==suit&&card.number==number;
|
||||
});
|
||||
if(card) player.gain(card,'gain2');
|
||||
var cards=[];
|
||||
for(var i=0;i<ui.cardPile.childNodes.length;i++){
|
||||
var card=ui.cardPile.childNodes[i];
|
||||
if(card.suit==suit&&card.number==number) cards.push(card);
|
||||
}
|
||||
if(cards.length) player.gain(cards,'gain2');
|
||||
},
|
||||
},
|
||||
//新丁奉
|
||||
|
@ -6633,15 +7235,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
trigger:{
|
||||
player:['damageEnd','loseAfter'],
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
var storage=player.getExpansions('zlshoufu2');
|
||||
if(!storage.length) return false;
|
||||
if(event.name=='damage') return true;
|
||||
if(event.type!='discard'||event.getParent('phaseDiscard').player!=player) return false;
|
||||
var num=0;
|
||||
for(var i of event.cards2){
|
||||
if(event.type!='discard'||event.getlx===false||event.getParent('phaseDiscard').player!=player) return false;
|
||||
var num=0,evt=event.getl(player);
|
||||
if(!evt||!evt.cards2) return false;
|
||||
for(var i of evt.cards2){
|
||||
if(storage.filter(function(magic){
|
||||
return get.type2(magic)==get.type2(i,event.hs.contains(i)?player:false);
|
||||
}).length) num++;
|
||||
|
@ -15095,11 +15699,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
lirang:{
|
||||
audio:2,
|
||||
trigger:{player:'loseAfter'},
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(event.type!='discard') return false;
|
||||
for(var i=0;i<event.cards2.length;i++){
|
||||
if(get.position(event.cards2[i])=='d'){
|
||||
if(event.type!='discard'||event.getlx===false) return false;
|
||||
var evt=event.getl(player);
|
||||
if(!evt||!evt.cards2) return false;
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
if(get.position(evt.cards2[i])=='d'){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -15113,10 +15722,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(trigger.delay==false) game.delay();
|
||||
event.cards=[];
|
||||
event.logged=false;
|
||||
for(var i=0;i<trigger.cards2.length;i++){
|
||||
if(get.position(trigger.cards2[i],true)=='d'){
|
||||
event.cards.push(trigger.cards2[i]);
|
||||
//ui.special.appendChild(trigger.cards[i]);
|
||||
var cards2=trigger.getl(player).cards2;
|
||||
for(var i=0;i<cards2.length;i++){
|
||||
if(get.position(cards2[i],true)=='d'){
|
||||
event.cards.push(cards2[i]);
|
||||
}
|
||||
}
|
||||
"step 1"
|
||||
|
@ -15244,12 +15853,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
shenxian:{
|
||||
audio:2,
|
||||
trigger:{global:'loseAfter'},
|
||||
trigger:{global:['loseAfter','loseAsyncAfter']},
|
||||
filter:function(event,player){
|
||||
if(event.type!='discard'||event.player==player||_status.currentPhase==player) return false;
|
||||
if(event.type!='discard'||_status.currentPhase==player||event.getlx===false) return false;
|
||||
if(event.name=='lose'&&event.player==player) return false;
|
||||
if(player.hasSkill('shenxian2')) return false;
|
||||
for(var i=0;i<event.cards2.length;i++){
|
||||
if(get.type(event.cards2[i],null,event.hs.contains(event.cards2[i])?event.player:false)=='basic'){
|
||||
var cards=event.cards.slice(0);
|
||||
var evt=event.getl(player);
|
||||
if(evt&&evt.cards) cards.removeArray(evt.cards);
|
||||
for(var i=0;i<cards.length;i++){
|
||||
if(get.type(cards[i],null,event.hs&&event.hs.contains(cards[i])?event.player:false)=='basic'&&cards[i].original!='j'){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -16516,15 +17129,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
mingzhe:{
|
||||
audio:2,
|
||||
trigger:{player:['useCard','respond','loseAfter']},
|
||||
trigger:{
|
||||
player:['useCard','respond','loseAfter'],
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
frequent:true,
|
||||
filter:function(event,player){
|
||||
if(player==_status.currentPhase) return false;
|
||||
if(event.name!='lose') return get.color(event.card)=='red';
|
||||
if(event.name.indexOf('lose')!=0) return get.color(event.card)=='red';
|
||||
if(event.type!='discard') return false;
|
||||
if(event.cards2){
|
||||
for(var i=0;i<event.cards2.length;i++){
|
||||
if(get.color(event.cards2[i],player)=='red') return true;
|
||||
var evt=event.getl(player);
|
||||
if(evt&&evt.cards2){
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
if(get.color(evt.cards2[i],player)=='red') return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
@ -16532,10 +17149,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
"step 0"
|
||||
event.count=1;
|
||||
if(trigger.name=='lose'){
|
||||
if(trigger.name.indexOf('lose')==0){
|
||||
event.count=0;
|
||||
for(var i=0;i<trigger.cards2.length;i++){
|
||||
if(get.color(trigger.cards2[i],player)=='red') event.count++;
|
||||
var evt=trigger.getl(player);
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
if(get.color(evt.cards2[i],player)=='red') event.count++;
|
||||
}
|
||||
}
|
||||
"step 1"
|
||||
|
@ -18201,25 +18819,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{
|
||||
player:["loseAfter","enterGame"],
|
||||
global:"phaseBefore",
|
||||
global:['loseAsyncAfter',"phaseBefore"],
|
||||
},
|
||||
filter:function (event,player){
|
||||
if(event.name!='lose') return (event.name!='phase'||game.phaseNumber==0);
|
||||
if(event.type!='discard') return false;
|
||||
for(var i=0;i<event.cards2.length;i++){
|
||||
if(!player.hasMark('xinfu_falu_'+get.suit(event.cards2[i]))) return true;
|
||||
if(event.name.indexOf('lose')!=0) return (event.name!='phase'||game.phaseNumber==0);
|
||||
if(event.type!='discard'||event.getlx===false) return false;
|
||||
var evt=event.getl(player);
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
if(!player.hasMark('xinfu_falu_'+get.suit(evt.cards2[i]))) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function (){
|
||||
if(trigger.name!='lose'){
|
||||
if(trigger.name.indexOf('lose')!==0){
|
||||
for(var i=0;i<lib.suit.length;i++){
|
||||
if(!player.hasMark('xinfu_falu_'+lib.suit[i])) player.addMark('xinfu_falu_'+lib.suit[i]);
|
||||
}
|
||||
return;
|
||||
}
|
||||
for(var i=0;i<trigger.cards2.length;i++){
|
||||
var suit=get.suit(trigger.cards2[i]);
|
||||
var evt=trigger.getl(player);
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
var suit=get.suit(evt.cards2[i]);
|
||||
if(!player.hasMark('xinfu_falu_'+suit)) player.addMark('xinfu_falu_'+suit);
|
||||
}
|
||||
},
|
||||
|
@ -19334,8 +19954,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zyqiao_info:'每回合限两次。当你成为其他角色使用牌的目标后,你可以弃置其一张牌,然后你弃置一张牌。',
|
||||
zyqiao_info_guozhan:'每回合限两次。当你成为其他势力的角色使用牌的目标后,你可以弃置其一张牌,然后你弃置一张牌。',
|
||||
chengshang:'承赏',
|
||||
chengshang_info:'当你于出牌阶段内使用的牌结算完成后,若此牌未造成过伤害且此牌的目标包含其他角色且你本阶段内未因〖承赏〗获得过牌,则你可以从牌堆中获得一张与此牌花色点数相同的牌。',
|
||||
chengshang_info_guozhan:'当你于出牌阶段内使用的牌结算完成后,若此牌未造成过伤害且此牌的目标包含其他角色且你本阶段内未因〖承赏〗获得过牌,则你可以从牌堆中获得一张与此牌花色点数相同的牌。',
|
||||
chengshang_info:'当你于出牌阶段内使用的牌结算完成后,若此牌未造成过伤害且此牌的目标包含其他角色且你本阶段内未因〖承赏〗获得过牌,则你可以从牌堆中获得所有与此牌花色点数相同的牌。',
|
||||
chengshang_info_guozhan:'当你于出牌阶段内使用的牌结算完成后,若此牌未造成过伤害且此牌的目标包含其他角色且你本阶段内未因〖承赏〗获得过牌,则你可以从牌堆中获得所有与此牌花色点数相同的牌。',
|
||||
sp_fuwan:'SP伏完',
|
||||
spfengyin:'奉印',
|
||||
spfengyin_info:'其他角色的回合开始时,若其体力值不少于你,你可以交给其一张【杀】,令其跳过出牌阶段和弃牌阶段。',
|
||||
|
@ -19524,7 +20144,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
olzhuiji_info:'锁定技。①你至体力值不大于你的角色的距离为1。②当你使用【杀】指定距离为1的角色为目标后,你令其选择一项:⒈弃置一张牌。⒉重铸装备区内的所有牌。',
|
||||
zhaoyǎn:'赵俨',
|
||||
tongxie:'同协',
|
||||
tongxie_info:'出牌阶段开始时,你可以选择至多两名其他角色(你与这些角色均称为“同协角色”)。这些角色中手牌数唯一最少的角色摸一张牌,且你获得如下效果直到你下回合开始:①当有“同协角色”对唯一目标角色使用的【杀】结算结束后,其他“同协角色”可以依次对目标角色使用一张【杀】(无距离和次数限制,且不能再触发此效果)。②当有“同协角色”受到伤害时,其他“同协角色”(本回合内失去过体力的角色除外)可以防止此伤害,失去1点体力。',
|
||||
tongxie_info:'出牌阶段开始时,你可以选择包括你在内的至多三名角色(你与这些角色均称为“同协角色”)。这些角色中手牌数唯一最少的角色摸一张牌,且你获得如下效果直到你下回合开始:①当有“同协角色”对唯一目标角色使用的【杀】结算结束后,其他“同协角色”可以依次对目标角色使用一张【杀】(无距离和次数限制,且不能再触发此效果)。②当有“同协角色”受到伤害时,其他“同协角色”(本回合内失去过体力的角色除外)可以防止此伤害,失去1点体力。',
|
||||
jin_zhouchu:'周处',
|
||||
shanduan:'善断',
|
||||
shanduan_info:'①回合开始时,你生成数组R=[1,2,3,4]。②摸牌阶段开始时,你从数组R中选择并移除一个数字A。你本阶段的额定摸牌数改为A。③出牌阶段开始时,你从数组R中选择并移除两个数字B和C。你将你本阶段内的攻击范围基数最小值和使用【杀】的次数上限基础值改为B和C。④弃牌阶段开始时,你从数组R中选择并移除一个数字D。你令你本回合的手牌上限基数改为D。⑤当你于回合外受到伤害后,你令下回合生成的R中最小的一个数字+1。',
|
||||
|
@ -19544,6 +20164,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
qiongshou_info:'锁定技。①游戏开始时,你废除所有装备栏并摸四张牌。②你的手牌上限+4。',
|
||||
fenrui:'奋锐',
|
||||
fenrui_info:'结束阶段,你可以弃置一张牌并恢复一个装备栏。系统检索一张对应的装备牌,你使用之。然后你可以选择一名装备区内牌数小于你的其他角色,对其造成X点伤害(X为你与其装备区内的牌数之差,且每局限一次)。',
|
||||
wangyan:'王衍',
|
||||
yangkuang:'阳狂',
|
||||
yangkuang_info:'当你回复体力后,若你的体力值等于体力上限,则你可以视为使用一张【酒】,然后当前回合角色摸一张牌,你摸一张牌。',
|
||||
cihuang:'雌黄',
|
||||
cihuang_info:'当有牌被抵消后,若此牌的目标数为1且此牌的使用者A为当前回合角色,则你可以视为对A使用一张你本轮内未使用过的属性【杀】或单目标锦囊牌(不可被响应)。',
|
||||
sanku:'三窟',
|
||||
sanku_info:'锁定技。当你进入濒死状态时,你减1点体力上限,然后将体力回复至体力上限。',
|
||||
dengzhong:'邓忠',
|
||||
dzkanpo:'勘破',
|
||||
dzkanpo_info:'①当你因执行【杀】的效果而造成伤害后,你可以观看目标角色的手牌,然后获得其中一张与此【杀】花色相同的牌。②每回合限一次,你可以将一张手牌当做【杀】使用。',
|
||||
dzgengzhan:'更战',
|
||||
dzgengzhan_info:'①其他角色的出牌阶段限一次,当有【杀】因弃置而进入弃牌堆后,你可以获得这些【杀】。②其他角色的结束阶段,若其本回合内未使用过【杀】,则你下个出牌阶段使用【杀】的次数上限+1。',
|
||||
xiahouxuan:'夏侯玄',
|
||||
olhuanfu:'宦浮',
|
||||
olhuanfu_info:'当你使用【杀】指定第一个目标后,或成为【杀】的目标后,你可以弃置X张牌(X∈[1, 你的体力上限])。此【杀】结算结束后,若此【杀】累计因执行效果而造成的伤害值等于X,则你摸2X张牌。',
|
||||
olqingyi:'清议',
|
||||
olqingyi_info:'①出牌阶段限一次,你可以选择至多两名有牌的其他角色。你和这些角色同时弃置一张牌,然后若这些牌类型均相同,则你重复此流程。②结束阶段开始时,若你本回合内发动〖清议①〗弃置的牌包含两种颜色,则你获得每种颜色的牌各一张。',
|
||||
olzeyue:'迮阅',
|
||||
olzeyue_info:'限定技。准备阶段,你可以选择一名于你的上个回合结束后对你造成过伤害的角色A及其武将牌上的一个非锁定技B,令A的B失效。然后每轮游戏开始时,A依次视为对你使用X张【杀】(X为B失效状态下经过的完整轮数)。当你因这些【杀】受到伤害后,你令A恢复技能B。',
|
||||
|
||||
sp_tianji:'天极·皇室宗亲',
|
||||
sp_sibi:'四弼·辅国文曲',
|
||||
|
|
964
character/sp2.js
|
@ -752,16 +752,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{player:'loseAfter'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(player==_status.currentPhase||event.type!='discard'||event.position!=ui.discardPile||!game.hasPlayer((current)=>current!=player)) return false;
|
||||
for(var i of event.cards2){
|
||||
if(player==_status.currentPhase||event.type!='discard'||event.getlx===false||!game.hasPlayer((current)=>current!=player)) return false;
|
||||
var evt=event.getl(player);
|
||||
for(var i of evt.cards2){
|
||||
if(get.color(i,player)=='red'&&get.position(i,true)=='d') return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var cards=[];
|
||||
for(var i of trigger.cards2){
|
||||
var cards=[],cards2=trigger.getl(player);
|
||||
for(var i of cards2){
|
||||
if(get.color(i,player)=='red'&&get.position(i,true)=='d') cards.push(i);
|
||||
}
|
||||
player.chooseButton(['从击:选择任意张牌交给其他角色',cards],[1,cards.length]).set('goon',game.hasPlayer(function(current){
|
||||
|
|
|
@ -378,9 +378,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
//顾雍
|
||||
olbingyi:{
|
||||
audio:'bingyi',
|
||||
trigger:{player:'loseAfter'},
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
filter:function(event,player){
|
||||
return event.type=='discard'&&event.cards2.length>0&&player.countCards('h')>0&&!player.hasSkill('olbingyi_blocker',null,null,false);
|
||||
return event.type=='discard'&&event.getl(player).cards2.length>0&&player.countCards('h')>0&&!player.hasSkill('olbingyi_blocker',null,null,false);
|
||||
},
|
||||
prompt2:function(event,player){
|
||||
var str='展示所有手牌,然后',hs=player.getCards('h');
|
||||
|
@ -3342,6 +3345,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return get.translation(name);
|
||||
}(target),capt);
|
||||
if(event.togain.length) event.goto(5);
|
||||
else{
|
||||
for(var i=0;i<ui.dialogs.length;i++){
|
||||
if(ui.dialogs[i].videoId==event.dialogID){
|
||||
var dialog=ui.dialogs[i];
|
||||
dialog.close();
|
||||
_status.dieClose.remove(dialog);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(event.togain.length){
|
||||
game.cardsDiscard(event.togain);
|
||||
}
|
||||
game.broadcast(function(id){
|
||||
var dialog=get.idDialog(id);
|
||||
if(dialog){
|
||||
dialog.close();
|
||||
_status.dieClose.remove(dialog);
|
||||
}
|
||||
},event.dialogID);
|
||||
game.addVideo('cardDialog',null,event.dialogID);
|
||||
event.finish();
|
||||
}
|
||||
}
|
||||
},
|
||||
fuzhu:{
|
||||
|
@ -5887,12 +5912,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
shenduan:{
|
||||
trigger:{player:'loseAfter'},
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(event.type!='discard') return;
|
||||
for(var i=0;i<event.cards2.length;i++){
|
||||
if(get.color(event.cards2[i],event.hs.contains(event.cards2[i])?event.player:false)=='black'&&get.type(event.cards2[i])=='basic'&&
|
||||
get.position(event.cards2[i],event.hs.contains(event.cards2[i])?event.player:false)=='d'){
|
||||
if(event.type!='discard'||event.getlx===false) return;
|
||||
var evt=event.getl(player);
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
if(get.color(evt.cards2[i],evt.hs.contains(evt.cards2[i])?evt.player:false)=='black'&&get.type(evt.cards2[i])=='basic'&&
|
||||
get.position(evt.cards2[i],evt.hs.contains(evt.cards2[i])?evt.player:false)=='d'){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -5903,10 +5932,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
var cards=[];
|
||||
for(var i=0;i<trigger.cards2.length;i++){
|
||||
if(get.color(trigger.cards2[i],trigger.hs.contains(trigger.cards2[i])?trigger.player:false)=='black'&&get.type(trigger.cards2[i],trigger.hs.contains(trigger.cards2[i])?trigger.player:false)=='basic'&&
|
||||
get.position(trigger.cards2[i])=='d'){
|
||||
cards.push(trigger.cards2[i]);
|
||||
var evt=trigger.getl(player);
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
if(get.color(evt.cards2[i],evt.hs.contains(evt.cards2[i])?evt.player:false)=='black'&&get.type(evt.cards2[i],evt.hs.contains(evt.cards2[i])?evt.player:false)=='basic'&&
|
||||
get.position(evt.cards2[i])=='d'){
|
||||
cards.push(evt.cards2[i]);
|
||||
}
|
||||
}
|
||||
if(!cards.length){
|
||||
|
@ -5966,12 +5996,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
reshenduan:{
|
||||
audio:2,
|
||||
trigger:{player:'loseAfter'},
|
||||
trigger:{
|
||||
global:'loseAsyncAfter',
|
||||
player:'loseAfter',
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(event.type!='discard') return;
|
||||
for(var i=0;i<event.cards2.length;i++){
|
||||
if(get.color(event.cards2[i],player)=='black'&&['basic','equip'].contains(get.type(event.cards2[i],event.hs.contains(event.cards2[i])?event.player:false))&&
|
||||
get.position(event.cards2[i])=='d'){
|
||||
if(event.type!='discard'||event.getlx===false) return;
|
||||
var evt=event.getl(player);
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
if(get.color(evt.cards2[i],player)=='black'&&['basic','equip'].contains(get.type(evt.cards2[i],evt.hs.contains(evt.cards2[i])?evt.player:false))&&
|
||||
get.position(evt.cards2[i])=='d'){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -5981,10 +6015,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
var cards=[];
|
||||
for(var i=0;i<trigger.cards2.length;i++){
|
||||
if(get.color(trigger.cards2[i],player)=='black'&&['basic','equip'].contains(get.type(trigger.cards2[i],trigger.hs.contains(trigger.cards2[i])?trigger.player:false))&&
|
||||
get.position(trigger.cards2[i])=='d'){
|
||||
cards.push(trigger.cards2[i]);
|
||||
var evt=trigger.getl(player);
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
if(get.color(evt.cards2[i],player)=='black'&&['basic','equip'].contains(get.type(evt.cards2[i],evt.hs.contains(evt.cards2[i])?evt.player:false))&&
|
||||
get.position(evt.cards2[i])=='d'){
|
||||
cards.push(evt.cards2[i]);
|
||||
}
|
||||
}
|
||||
if(!cards.length){
|
||||
|
@ -10269,11 +10304,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
zongxuan:{
|
||||
audio:2,
|
||||
trigger:{player:'loseAfter'},
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(event.type!='discard') return false;
|
||||
for(var i=0;i<event.cards2.length;i++){
|
||||
if(get.position(event.cards2[i])=='d'){
|
||||
if(event.type!='discard'||event.getlx===false) return;
|
||||
var evt=event.getl(player);
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
if(get.position(evt.cards2[i])=='d'){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -10283,8 +10322,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(trigger.getParent(3).name!='phaseDiscard'||!game.hasPlayer(function(current){
|
||||
return current.isDamaged()&&get.recoverEffect(current,player,player)>0;
|
||||
}))
|
||||
for(var i=0;i<trigger.cards2.length;i++){
|
||||
if(get.position(trigger.cards2[i],true)=='d'&&get.type(trigger.cards2[i],false)=='equip'){
|
||||
var evt=trigger.getl(player);
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
if(get.position(evt.cards2[i],true)=='d'&&get.type(evt.cards2[i],false)=='equip'){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -10293,9 +10333,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
"step 0"
|
||||
var cards=[];
|
||||
for(var i=0;i<trigger.cards2.length;i++){
|
||||
if(get.position(trigger.cards2[i],true)=='d'){
|
||||
cards.push(trigger.cards2[i]);
|
||||
var evt=trigger.getl(player);
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
if(get.position(evt.cards2[i],true)=='d'){
|
||||
cards.push(evt.cards2[i]);
|
||||
}
|
||||
}
|
||||
var next=player.chooseToMove('纵玄:将任意张牌置于牌堆顶',true);
|
||||
|
@ -10707,25 +10748,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{global:'loseAfter'},
|
||||
filter:function(event,player){
|
||||
if(event.type!='discard') return false;
|
||||
if(event.player==player) return false;
|
||||
for(var i=0;i<event.cards2.length;i++){
|
||||
if(get.suit(event.cards2[i],event.player)=='club'&&get.position(event.cards2[i],true)=='d'){
|
||||
if(event.type!='discard'||event.getlx===false) return false;
|
||||
var cards=event.cards.slice(0);
|
||||
var evt=event.getl(player);
|
||||
if(evt&&evt.cards) cards.removeArray(evt.cards);
|
||||
for(var i=0;i<cards.length;i++){
|
||||
if(cards[i].original!='j'&&get.suit(cards[i],event.player)=='club'&&get.position(cards[i],true)=='d'){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
direct:true,
|
||||
//frequent:'check',
|
||||
content:function(){
|
||||
"step 0"
|
||||
if(trigger.delay==false) game.delay();
|
||||
"step 1"
|
||||
var cards=[];
|
||||
for(var i=0;i<trigger.cards2.length;i++){
|
||||
if(get.suit(trigger.cards2[i],trigger.player)=='club'&&get.position(trigger.cards2[i],true)=='d'){
|
||||
cards.push(trigger.cards2[i]);
|
||||
var cards=[],cards2=trigger.cards.slice(0),evt=trigger.getl(player);
|
||||
if(evt&&evt.cards) cards2.removeArray(evt.cards);
|
||||
for(var i=0;i<cards2.length;i++){
|
||||
if(cards2[i].original!='j'&&get.suit(cards2[i],trigger.player)=='club'&&get.position(cards2[i],true)=='d'){
|
||||
cards.push(cards2[i]);
|
||||
}
|
||||
}
|
||||
if(cards.length){
|
||||
|
|
|
@ -5,7 +5,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
connect:true,
|
||||
character:{
|
||||
wangxiang:['male','jin',3,['bingxin']],
|
||||
jin_guohuai:['female','jin',3,['zhefu','yidu']],
|
||||
jin_jiachong:['male','jin',3,['xiongshu','jianhui']],
|
||||
xuangongzhu:['female','jin',3,['gaoling','qimei','ybzhuiji'],['hiddenSkill']],
|
||||
xinchang:['male','jin',3,['canmou','congjian']],
|
||||
|
@ -33,7 +32,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
yingbian_pack1:['jin_simayi','jin_zhangchunhua','ol_lisu','simazhou','cheliji','ol_huaxin'],
|
||||
yingbian_pack2:['jin_simashi','jin_xiahouhui','zhanghuyuechen','shibao','jin_yanghuiyu'],
|
||||
yingbian_pack3:['jin_simazhao','jin_wangyuanji','duyu','weiguan','xuangongzhu'],
|
||||
yingbian_pack4:['zhongyan','xinchang','jin_jiachong','jin_guohuai','wangxiang'],
|
||||
yingbian_pack4:['zhongyan','xinchang','jin_jiachong','wangxiang'],
|
||||
yingbian_pack5:['yangyan','yangzhi'],
|
||||
},
|
||||
},
|
||||
|
@ -730,10 +729,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
group:'weishu_discard',
|
||||
subSkill:{
|
||||
discard:{
|
||||
trigger:{player:'loseAfter'},
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.type=='discard'&&event.getParent(3).name!='weishu_discard'&&event.getParent('phaseDiscard').player!=player&&event.cards2.length>0&&game.hasPlayer((target)=>(target!=player&&target.countDiscardableCards(player,'he')>0));
|
||||
return event.type=='discard'&&event.getParent(3).name!='weishu_discard'&&event.getParent('phaseDiscard').player!=player&&event.getl(player).cards2.length>0&&game.hasPlayer((target)=>(target!=player&&target.countDiscardableCards(player,'he')>0));
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
|
@ -871,6 +873,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}).setHiddenSkill('ybzhuiji');
|
||||
'step 1'
|
||||
if(result.control!='cancel2'){
|
||||
player.logSkill('ybzhuiji');
|
||||
if(result.index==0) player.draw(2);
|
||||
else player.recover();
|
||||
player.addTempSkill('ybzhuiji_'+result.index,'phaseUseAfter');
|
||||
|
@ -2682,17 +2685,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
jyishi:{
|
||||
audio:2,
|
||||
trigger:{global:'loseAfter'},
|
||||
trigger:{
|
||||
global:['loseAfter','loseAsyncAfter'],
|
||||
},
|
||||
usable:1,
|
||||
direct:true,
|
||||
preHidden:true,
|
||||
filter:function(event,player){
|
||||
return (event.type=='discard'&&event.hs&&event.hs.filterInD('d').length&&event.player.isAlive()&&
|
||||
event.player!=player&&event.player.isPhaseUsing()&&!player.hasSkill('jyishi2'));
|
||||
var target=_status.currentPhase;
|
||||
if(!target||!target.isIn()||event.type!='discard'||event.getlx===false||!target.isPhaseUsing()) return false;
|
||||
var evt=event.getl(player);
|
||||
for(var i of evt.hs){
|
||||
if(get.position(i,true)=='d') return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.cards=trigger.hs.filterInD('d');
|
||||
var str='是否发动【宜室】令'+get.translation(trigger.player)+'获得一张牌';
|
||||
event.target=_status.currentPhase;
|
||||
event.cards=trigger.getl(event.target).hs.filterInD('d');
|
||||
var str='是否发动【宜室】令'+get.translation(event.target)+'获得一张牌';
|
||||
if(event.cards.length>1) str+=',然后获得其余的牌';
|
||||
str+='?';
|
||||
player.chooseButton([str,event.cards]).set('ai',function(button){
|
||||
|
@ -2703,22 +2715,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(cards.length==1) return -get.value(card);
|
||||
cards.remove(card);
|
||||
return (get.value(cards)-get.value(card)-2);
|
||||
}).set('source',trigger.player).setHiddenSkill(event.name);
|
||||
}).set('source',event.target).setHiddenSkill(event.name);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.addTempSkill('jyishi2');
|
||||
player.logSkill('jyishi',trigger.player);
|
||||
player.logSkill('jyishi',target);
|
||||
if(cards.length>1){
|
||||
trigger.player.$gain2(result.links[0]);
|
||||
trigger.player.gain(result.links[0],'log');
|
||||
target.$gain2(result.links[0]);
|
||||
target.gain(result.links[0],'log');
|
||||
}
|
||||
else trigger.player.gain(result.links[0],'gain2');
|
||||
cards.remove(result.links[0]);
|
||||
if(cards.length) player.gain(cards,'gain2');
|
||||
}
|
||||
else player.storage.counttrigger.jyishi--;
|
||||
},
|
||||
},
|
||||
jyishi2:{},
|
||||
jyishi2:{charlotte:true},
|
||||
shiduo:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
window.noname_asset_list=[
|
||||
'v1.9.116.3',
|
||||
'v1.9.117',
|
||||
'audio/background/aozhan_chaoming.mp3',
|
||||
'audio/background/aozhan_online.mp3',
|
||||
'audio/background/aozhan_rewrite.mp3',
|
||||
|
@ -185,6 +185,15 @@ window.noname_asset_list=[
|
|||
'audio/die/re_liufeng.mp3',
|
||||
'audio/die/re_sp_taishici.mp3',
|
||||
'audio/die/xiahoulingnv.mp3',
|
||||
'audio/die/dc_caiyang.mp3',
|
||||
'audio/die/dc_lvkuanglvxiang.mp3',
|
||||
'audio/die/dengzhong.mp3',
|
||||
'audio/die/dukui.mp3',
|
||||
'audio/die/liuhui.mp3',
|
||||
'audio/die/ol_dianwei.mp3',
|
||||
'audio/die/wangyan.mp3',
|
||||
'audio/die/xiahouxuan.mp3',
|
||||
'audio/die/zhangfen.mp3',
|
||||
|
||||
'audio/die/baosanniang.mp3',
|
||||
'audio/die/beimihu.mp3',
|
||||
|
@ -1006,7 +1015,6 @@ window.noname_asset_list=[
|
|||
'audio/effect/tori_no_uta.mp3',
|
||||
'audio/effect/win.mp3',
|
||||
|
||||
|
||||
'audio/skill/dcliuzhuan1.mp3',
|
||||
'audio/skill/dcliuzhuan2.mp3',
|
||||
'audio/skill/dcxiaoxi1.mp3',
|
||||
|
@ -1041,6 +1049,50 @@ window.noname_asset_list=[
|
|||
'audio/skill/xianwang2.mp3',
|
||||
'audio/skill/xiongrao1.mp3',
|
||||
'audio/skill/xiongrao2.mp3',
|
||||
'audio/skill/cihuang1.mp3',
|
||||
'audio/skill/cihuang2.mp3',
|
||||
'audio/skill/dcchaixie1.mp3',
|
||||
'audio/skill/dcchaixie2.mp3',
|
||||
'audio/skill/dcfanyin1.mp3',
|
||||
'audio/skill/dcfanyin2.mp3',
|
||||
'audio/skill/dcgeyuan1.mp3',
|
||||
'audio/skill/dcgeyuan2.mp3',
|
||||
'audio/skill/dcgusuan1.mp3',
|
||||
'audio/skill/dcgusuan2.mp3',
|
||||
'audio/skill/dcjiaofeng1.mp3',
|
||||
'audio/skill/dcjiaofeng2.mp3',
|
||||
'audio/skill/dcjieshu1.mp3',
|
||||
'audio/skill/dcjieshu2.mp3',
|
||||
'audio/skill/dcliehou1.mp3',
|
||||
'audio/skill/dcliehou2.mp3',
|
||||
'audio/skill/dcpeiqi1.mp3',
|
||||
'audio/skill/dcpeiqi2.mp3',
|
||||
'audio/skill/dcshuhe1.mp3',
|
||||
'audio/skill/dcshuhe2.mp3',
|
||||
'audio/skill/dcwanglu1.mp3',
|
||||
'audio/skill/dcwanglu2.mp3',
|
||||
'audio/skill/dcxianzhu1.mp3',
|
||||
'audio/skill/dcxianzhu2.mp3',
|
||||
'audio/skill/dcxunji1.mp3',
|
||||
'audio/skill/dcxunji2.mp3',
|
||||
'audio/skill/dzgengzhan1.mp3',
|
||||
'audio/skill/dzgengzhan2.mp3',
|
||||
'audio/skill/dzkanpo1.mp3',
|
||||
'audio/skill/dzkanpo2.mp3',
|
||||
'audio/skill/olhuanfu1.mp3',
|
||||
'audio/skill/olhuanfu2.mp3',
|
||||
'audio/skill/olningwu1.mp3',
|
||||
'audio/skill/olningwu2.mp3',
|
||||
'audio/skill/olqingyi1.mp3',
|
||||
'audio/skill/olqingyi2.mp3',
|
||||
'audio/skill/olzeyue1.mp3',
|
||||
'audio/skill/olzeyue2.mp3',
|
||||
'audio/skill/qiangxi_ol_dianwei1.mp3',
|
||||
'audio/skill/qiangxi_ol_dianwei2.mp3',
|
||||
'audio/skill/sanku1.mp3',
|
||||
'audio/skill/sanku2.mp3',
|
||||
'audio/skill/yangkuang1.mp3',
|
||||
'audio/skill/yangkuang2.mp3',
|
||||
|
||||
'audio/skill/aichen1.mp3',
|
||||
'audio/skill/aichen2.mp3',
|
||||
|
@ -4680,6 +4732,7 @@ window.noname_asset_list=[
|
|||
'image/card/lukai_diamond.png',
|
||||
'image/card/lukai_heart.png',
|
||||
'image/card/lukai_spade.png',
|
||||
'image/card/dagongche.png',
|
||||
|
||||
'image/card/bagua.png',
|
||||
'image/card/baihupifeng.png',
|
||||
|
@ -5708,6 +5761,16 @@ window.noname_asset_list=[
|
|||
'image/character/lukai.jpg',
|
||||
'image/character/prp_zhugeliang.jpg',
|
||||
'image/character/xiahoulingnv.jpg',
|
||||
'audio/skill/dc_caiyang.jpg',
|
||||
'audio/skill/dc_lvkuanglvxiang.jpg',
|
||||
'audio/skill/dengzhong.jpg',
|
||||
'audio/skill/dukui.jpg',
|
||||
'audio/skill/key_kiyu.jpg',
|
||||
'audio/skill/liuhui.jpg',
|
||||
'audio/skill/ol_dianwei.jpg',
|
||||
'audio/skill/wangyan.jpg',
|
||||
'audio/skill/xiahouxuan.jpg',
|
||||
'audio/skill/zhangfen.jpg',
|
||||
|
||||
'image/character/baiwuchang.jpg',
|
||||
'image/character/baosanniang.jpg',
|
||||
|
|
189
game/game.js
|
@ -10653,7 +10653,6 @@
|
|||
},event.chooseTime);
|
||||
}
|
||||
if(event.isMine()){
|
||||
ui.arena.classList.add('choose-to-move');
|
||||
delete ui.selected.guanxing_button;
|
||||
var list=event.list,filterMove=event.filterMove,filterOk=event.filterOk;
|
||||
_status.imchoosing=true;
|
||||
|
@ -10682,7 +10681,10 @@
|
|||
event.dialog.classList.add('scroll1');
|
||||
event.dialog.classList.add('scroll2');
|
||||
event.dialog.classList.add('fullwidth');
|
||||
event.dialog.classList.add('fullheight');
|
||||
if(list.length>1){
|
||||
ui.arena.classList.add('choose-to-move');
|
||||
event.dialog.classList.add('fullheight');
|
||||
}
|
||||
|
||||
event.moved=[];
|
||||
var buttonss=[];
|
||||
|
@ -13072,6 +13074,73 @@
|
|||
}
|
||||
if(event.dialog&&event.dialog.close) event.dialog.close();
|
||||
},
|
||||
discardMultiple:function(){
|
||||
'step 0'
|
||||
event.type='discard';
|
||||
if(!event.position) event.position=ui.discardPile;
|
||||
var cards=[];
|
||||
event.cards=cards;
|
||||
for(var i=0;i<event.lose_list.length;i++){
|
||||
var next=event.lose_list[i][0].lose(event.lose_list[i][1],event.position);
|
||||
game.log(event.lose_list[i][0],'弃置了',event.lose_list[i][1]);
|
||||
next.type=='discard';
|
||||
cards.addArray(event.lose_list[i][1]);
|
||||
next.getlx=false;
|
||||
}
|
||||
var evt=event;
|
||||
if(evt.animate!=false){
|
||||
evt.discardid=lib.status.videoId++;
|
||||
game.broadcastAll(function(list,id){
|
||||
for(var i of list){
|
||||
i[0].$throw(i[1],null,'nobroadcast');
|
||||
}
|
||||
var cardnodes=[];
|
||||
cardnodes._discardtime=get.time();
|
||||
for(var ix of list){
|
||||
var card=ix[1];
|
||||
for(var i=0;i<cards.length;i++){
|
||||
if(cards[i].clone){
|
||||
cardnodes.push(cards[i].clone);
|
||||
}
|
||||
}
|
||||
}
|
||||
ui.todiscard[id]=cardnodes;
|
||||
},event.lose_list,evt.discardid);
|
||||
if(lib.config.sync_speed&&cards[0]&&cards[0].clone){
|
||||
if(evt.delay!=false){
|
||||
var waitingForTransition=get.time();
|
||||
evt.waitingForTransition=waitingForTransition;
|
||||
cards[0].clone.listenTransition(function(){
|
||||
if(_status.waitingForTransition==waitingForTransition&&_status.paused){
|
||||
game.resume();
|
||||
}
|
||||
delete evt.waitingForTransition;
|
||||
});
|
||||
}
|
||||
else if(evt.getParent().discardTransition){
|
||||
delete evt.getParent().discardTransition;
|
||||
var waitingForTransition=get.time();
|
||||
evt.getParent().waitingForTransition=waitingForTransition;
|
||||
cards[0].clone.listenTransition(function(){
|
||||
if(_status.waitingForTransition==waitingForTransition&&_status.paused){
|
||||
game.resume();
|
||||
}
|
||||
delete evt.getParent().waitingForTransition;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
'step 1'
|
||||
if(event.delay!=false){
|
||||
if(event.waitingForTransition){
|
||||
_status.waitingForTransition=event.waitingForTransition;
|
||||
game.pause();
|
||||
}
|
||||
else{
|
||||
game.delayx();
|
||||
}
|
||||
}
|
||||
},
|
||||
chooseToCompareLose:function(){
|
||||
for(var i=0;i<event.lose_list.length;i++){
|
||||
var next=event.lose_list[i][0].lose(event.lose_list[i][1],ui.ordering);
|
||||
|
@ -14707,7 +14776,7 @@
|
|||
else{
|
||||
game.log(player,'展示了',cards);
|
||||
}
|
||||
game.delayx(2);
|
||||
game.delayx(event.delay_time||2.5);
|
||||
game.addVideo('showCards',player,[event.str,get.cardsInfo(cards)]);
|
||||
"step 1"
|
||||
game.broadcast('closeDialog',event.dialogid);
|
||||
|
@ -16148,7 +16217,7 @@
|
|||
lose:function(){
|
||||
"step 0"
|
||||
var evt=event.getParent();
|
||||
if((evt.name!='discard'&&event.type!='discard')&&(evt.name!='loseToDiscardpile'&&event.type!='loseToDiscardpile')){
|
||||
if((evt.name!='discard'||event.type!='discard')&&(evt.name!='loseToDiscardpile'||event.type!='loseToDiscardpile')){
|
||||
event.delay=false;
|
||||
return;
|
||||
}
|
||||
|
@ -19599,13 +19668,17 @@
|
|||
var player=_status.event.player;
|
||||
var event=_status.event.getParent();
|
||||
var getn=function(card){
|
||||
if(player.hasSkill('tianbian')&&get.suit(card)=='heart') return 13*(event.small?-1:1);
|
||||
return get.number(card)*(event.small?-1:1);
|
||||
if(player.hasSkill('tianbian')&&get.suit(card)=='heart') return 13*(Boolean(event.small)?-1:1);
|
||||
return get.number(card)*(Boolean(event.small)?-1:1);
|
||||
}
|
||||
if(source&&source!=player&&get.attitude(player,source)>1){
|
||||
return -getn(card)-get.value(card)/2+addi;
|
||||
if(source&&source!=player){
|
||||
if((get.attitude(player,source)>1)==Boolean(event.small)) return -getn(card)-get.value(card)/2+addi;
|
||||
return getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
else{
|
||||
if(Boolean(event.small)) return -getn(card)-get.value(card)/2+addi;
|
||||
return getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
return getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
next.setContent('chooseToCompareMultiple');
|
||||
}
|
||||
|
@ -19619,21 +19692,21 @@
|
|||
}
|
||||
var player=get.owner(card);
|
||||
var getn=function(card){
|
||||
if(player.hasSkill('tianbian')&&get.suit(card)=='heart') return 13*(event.small?-1:1);
|
||||
return get.number(card)*(event.small?-1:1);
|
||||
if(player.hasSkill('tianbian')&&get.suit(card)=='heart') return 13;
|
||||
return get.number(card);
|
||||
}
|
||||
var event=_status.event.getParent();
|
||||
var to=(player==event.player?event.target:event.player);
|
||||
var addi=(get.value(card)>=8&&get.type(card)!='equip')?-6:0;
|
||||
if(card.name=='du') addi-=5;
|
||||
if(player==event.player){
|
||||
if(get.attitude(player,to)>0&&event.small){
|
||||
if(Boolean(event.small)){
|
||||
return -getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
return getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
else{
|
||||
if(get.attitude(player,to)>0){
|
||||
if((get.attitude(player,to)<=0)==Boolean(event.small)){
|
||||
return -getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
return getn(card)-get.value(card)/2+addi;
|
||||
|
@ -20873,7 +20946,7 @@
|
|||
map.cards2.addArray(evt.cards2);
|
||||
}
|
||||
});
|
||||
if(map.cards.length>0||map.ss.length>0||map.xs.length>0) return map;
|
||||
return map;
|
||||
};
|
||||
next.gaintag=[];
|
||||
return next;
|
||||
|
@ -20940,7 +21013,7 @@
|
|||
map.cards2.addArray(evt.cards2);
|
||||
}
|
||||
});
|
||||
if(map.cards.length>0||map.ss.length>0||map.xs.length>0) return map;
|
||||
return map;
|
||||
};
|
||||
next.gaintag=[];
|
||||
return next;
|
||||
|
@ -20999,6 +21072,16 @@
|
|||
next.setContent('lose');
|
||||
next.getl=function(player){
|
||||
if(this.getlx!==false&&this.player==player) return this;
|
||||
return {
|
||||
player:player,
|
||||
hs:[],
|
||||
es:[],
|
||||
js:[],
|
||||
ss:[],
|
||||
xs:[],
|
||||
cards:[],
|
||||
cards2:[],
|
||||
};
|
||||
};
|
||||
return next;
|
||||
},
|
||||
|
@ -21389,16 +21472,24 @@
|
|||
map.cards2.addArray(evt.cards2);
|
||||
}
|
||||
});
|
||||
if(map.cards.length>0||map.ss.length>0||map.xs.length>0) return map;
|
||||
return map;
|
||||
};
|
||||
return next;
|
||||
},
|
||||
addJudge:function(card,cards){
|
||||
var next=game.createEvent('addJudge');
|
||||
next.card=card;
|
||||
next.cards=cards;
|
||||
if(next.cards==undefined) next.cards=[card];
|
||||
if(get.itemtype(next.cards)=='card') next.cards=[next.cards];
|
||||
if(get.itemtype(card)=='card'){
|
||||
next.card=card;
|
||||
next.cards=[card];
|
||||
}
|
||||
else{
|
||||
next.cards=cards;
|
||||
if(get.itemtype(next.cards)=='card') next.cards=[next.cards];
|
||||
if(typeof card=='string'){
|
||||
card={name:card};
|
||||
}
|
||||
next.card=get.autoViewAs(card,next.cards)
|
||||
}
|
||||
next.player=this;
|
||||
next.setContent('addJudge');
|
||||
next.getl=function(player){
|
||||
|
@ -21424,7 +21515,7 @@
|
|||
map.cards2.addArray(evt.cards2);
|
||||
}
|
||||
});
|
||||
if(map.cards.length>0||map.ss.length>0||map.xs.length>0) return map;
|
||||
return map;
|
||||
};
|
||||
return next;
|
||||
},
|
||||
|
@ -22552,7 +22643,37 @@
|
|||
this.disabledSkills[skills]=[];
|
||||
var info=get.info(skills);
|
||||
if(info.ondisable&&info.onremove){
|
||||
info.onremove(this);
|
||||
if(typeof info.onremove=='function'){
|
||||
info.onremove(this,skill);
|
||||
}
|
||||
else if(typeof info.onremove=='string'){
|
||||
if(info.onremove=='storage'){
|
||||
delete this.storage[skill];
|
||||
}
|
||||
else{
|
||||
var cards=this.storage[skill];
|
||||
if(get.itemtype(cards)=='card'){
|
||||
cards=[cards];
|
||||
}
|
||||
if(get.itemtype(cards)=='cards'){
|
||||
if(this.onremove=='discard'){
|
||||
this.$throw(cards);
|
||||
}
|
||||
if(this.onremove=='discard'||this.onremove=='lose'){
|
||||
game.cardsDiscard(cards);
|
||||
delete this.storage[skill];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(Array.isArray(info.onremove)){
|
||||
for(var i=0;i<info.onremove.length;i++){
|
||||
delete this.storage[info.onremove[i]];
|
||||
}
|
||||
}
|
||||
else if(info.onremove===true){
|
||||
delete this.storage[skill];
|
||||
}
|
||||
}
|
||||
}
|
||||
this.disabledSkills[skills].add(skill);
|
||||
|
@ -25765,6 +25886,18 @@
|
|||
this.trigger(this.name+'Cancelled');
|
||||
if(this.player&&lib.phaseName.contains(this.name)) this.player.getHistory('skipped').add(this.name)}
|
||||
},
|
||||
neutralize:function(){
|
||||
this.untrigger.call(this,arguments);
|
||||
this.finish();
|
||||
this._neutralized=true;
|
||||
this.trigger('eventNeutralized');
|
||||
},
|
||||
unneutralize:function(){
|
||||
this.untrigger.call(this,arguments);
|
||||
delete this._neutralized;
|
||||
delete this.finished;
|
||||
if(this.type=='card'&&this.card&&this.name=='sha') this.directHit=true;
|
||||
},
|
||||
goto:function(step){
|
||||
this.step=step-1;
|
||||
},
|
||||
|
@ -27888,7 +28021,7 @@
|
|||
}
|
||||
},
|
||||
_discard:{
|
||||
trigger:{global:['discardAfter','loseToDiscardpileAfter']},
|
||||
trigger:{global:['discardAfter','loseToDiscardpileAfter','loseAsyncAfter']},
|
||||
forced:true,
|
||||
popup:false,
|
||||
priority:-100,
|
||||
|
@ -29266,7 +29399,7 @@
|
|||
map.cards2.addArray(evt.cards2);
|
||||
}
|
||||
});
|
||||
if(map.cards.length>0||map.ss.length>0||map.xs.length>0) return map;
|
||||
return map;
|
||||
};
|
||||
if(arg&&get.is.object(arg)){
|
||||
for(var i in arg) next[i]=arg[i];
|
||||
|
@ -51045,8 +51178,8 @@
|
|||
isCard:true,
|
||||
cardid:card.cardid,
|
||||
wunature:card.wunature,
|
||||
storage:card.storage,
|
||||
cards:card.cards,
|
||||
storage:get.copy(card.storage),
|
||||
cards:get.copy(card.cards),
|
||||
};
|
||||
if(get.itemtype(cards)=='cards'&&!card.cards) next.cards=cards.slice(0);
|
||||
else if(get.itemtype(card)=='card') next.cards=[card];
|
||||
|
@ -53490,7 +53623,9 @@
|
|||
if(!simple||get.is.phoneLayout()){
|
||||
var es=node.getCards('e');
|
||||
for(var i=0;i<es.length;i++){
|
||||
uiintro.add('<div><div class="skill">'+es[i].outerHTML+'</div><div>'+lib.translate[es[i].name+'_info']+'</div></div>');
|
||||
var cardinfo=lib.card[es[i].name];
|
||||
if(cardinfo&&cardinfo.cardPrompt) uiintro.add('<div><div class="skill">'+es[i].outerHTML+'</div><div>'+cardinfo.cardPrompt(es[i])+'</div></div>');
|
||||
else uiintro.add('<div><div class="skill">'+es[i].outerHTML+'</div><div>'+lib.translate[es[i].name+'_info']+'</div></div>');
|
||||
uiintro.content.lastChild.querySelector('.skill>.card').style.transform='';
|
||||
}
|
||||
var js=node.getCards('j');
|
||||
|
|
|
@ -1,45 +1,46 @@
|
|||
window.noname_update={
|
||||
version:'1.9.116.3',
|
||||
update:'1.9.116.2',
|
||||
version:'1.9.117',
|
||||
update:'1.9.116.3',
|
||||
changeLog:[
|
||||
'OL霍峻,十周年管亥',
|
||||
'国战模式晋武将更新与技能调整',
|
||||
'其他技能调整和bug修复',
|
||||
'露娜Q',
|
||||
'OL界典韦、邓忠、王衍、夏侯玄',
|
||||
'十周年刘徽、蔡阳、吕旷吕翔、杜夔、张奋',
|
||||
'其他技能调整和bug修复', 'players://["dc_caiyang","dc_lvkuanglvxiang","dengzhong","dukui","key_kiyu","liuhui","ol_dianwei","wangyan","xiahouxuan","zhangfen"]',
|
||||
],
|
||||
files:[
|
||||
'card/extra.js',
|
||||
//'card/extra.js',
|
||||
//'card/gujian.js',
|
||||
'card/guozhan.js',
|
||||
//'card/guozhan.js',
|
||||
//'card/gwent.js',
|
||||
//'card/huanlekapai.js',
|
||||
//'card/mtg.js',
|
||||
//'card/sp.js',
|
||||
//'card/standard.js',
|
||||
'card/sp.js',
|
||||
'card/standard.js',
|
||||
//'card/swd.js',
|
||||
//'card/yunchou.js',
|
||||
//'card/yingbian.js',
|
||||
//'card/yongjian.js',
|
||||
//'card/zhenfa.js',
|
||||
//'card/zhulu.js',
|
||||
//'character/diy.js',
|
||||
//'character/extra.js',
|
||||
'card/zhulu.js',
|
||||
'character/diy.js',
|
||||
'character/extra.js',
|
||||
//'character/hearth.js',
|
||||
//'character/gujian.js',
|
||||
//'character/gwent.js',
|
||||
//'character/hearth.js',
|
||||
'character/mobile.js',
|
||||
//'character/mtg.js',
|
||||
//'character/offline.js',
|
||||
'character/offline.js',
|
||||
//'character/old.js',
|
||||
//'character/ow.js',
|
||||
'character/rank.js',
|
||||
'character/refresh.js',
|
||||
//'character/sb.js',
|
||||
//'character/shenhua.js',
|
||||
'character/shenhua.js',
|
||||
'character/sp.js',
|
||||
'character/sp2.js',
|
||||
//'character/standard.js',
|
||||
//'character/tw.js',
|
||||
'character/tw.js',
|
||||
//'character/swd.js',
|
||||
//'character/xianjian.js',
|
||||
//'character/xinghuoliaoyuan.js',
|
||||
|
@ -55,7 +56,7 @@ window.noname_update={
|
|||
//'layout/mobile/layout.css',
|
||||
//'layout/newlayout/global.css',
|
||||
//'layout/nova/layout.css',
|
||||
//'mode/boss.js',
|
||||
'mode/boss.js',
|
||||
//'mode/brawl.js',
|
||||
//'mode/chess.js',
|
||||
//'mode/connect.js',
|
||||
|
|
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 84 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 129 KiB |
After Width: | Height: | Size: 89 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 71 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 95 KiB |
13
mode/boss.js
|
@ -2169,14 +2169,19 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
iwasawa_crowbow:{
|
||||
equipSkill:true,
|
||||
trigger:{player:'loseAfter'},
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
|
||||
},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return event.hs&&event.hs.length>1&&player.isPhaseUsing();
|
||||
var evt=event.getl(player);
|
||||
return evt&&evt.hs&&evt.hs.length>1&&player.isPhaseUsing();
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.num=trigger.hs.length;
|
||||
var evt=trigger.getl(player);
|
||||
event.num=evt.hs.length;
|
||||
player.chooseTarget(get.prompt('iwasawa_crowbow'),'弃置一名其他角色的'+get.cnNumber(event.num)+'张牌',function(card,player,target){
|
||||
return player!=target&&target.countDiscardableCards(player,'he')>0;
|
||||
}).set('ai',function(target){
|
||||
|
@ -2778,7 +2783,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
//孟婆:
|
||||
"boss_shiyou":{
|
||||
audio:true,
|
||||
trigger:{global:'loseEnd'},
|
||||
trigger:{global:'loseAfter'},
|
||||
filter:function(event,player){
|
||||
var evt=event.getParent(3);
|
||||
return event.type=='discard'&&evt.name=='phaseDiscard'&&evt.player==event.player&&evt.player!=player&&event.cards2&&event.cards2.filterInD('d').length>0;
|
||||
|
|
|
@ -532,7 +532,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
gz_wuguotai:['female','wu',3,['gzbuyi','ganlu'],['gzskin']],
|
||||
gz_lukang:['male','wu',3,['keshou','zhuwei'],['gzskin']],
|
||||
gz_yuanshu:['male','qun',4,['gzweidi','gzyongsi'],['gzskin']],
|
||||
gz_zhangxiu:['male','qun',4,['gzfudi','congjian'],['gzskin']],
|
||||
gz_zhangxiu:['male','qun',4,['gzfudi','gzcongjian'],['gzskin']],
|
||||
gz_jun_caocao:['male','wei',4,['jianan','huibian','gzzongyu','wuziliangjiangdao'],[]],
|
||||
|
||||
gz_jin_zhangchunhua:['female','jin',3,['gzhuishi','gzqingleng']],
|
||||
|
@ -5379,7 +5379,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
'step 0'
|
||||
var target=trigger.player;
|
||||
event.target=target;
|
||||
if(player.countDiscardableCards(target,'e')){
|
||||
if(!player.countDiscardableCards(target,'e')){
|
||||
player.draw();
|
||||
event.finish();
|
||||
return;
|
||||
|
@ -6270,7 +6270,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
},
|
||||
congjian:{
|
||||
gzcongjian:{
|
||||
trigger:{
|
||||
player:'damageBegin3',
|
||||
source:'damageBegin1',
|
||||
|
@ -8824,6 +8824,13 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
},
|
||||
gzsanyao:{
|
||||
audio:'sanyao',
|
||||
inherit:'sanyao',
|
||||
filterTarget:function(card,player,target){
|
||||
return target.hp>player.hp||target.countCards('h')>player.countCards('h');
|
||||
},
|
||||
},
|
||||
gzzhiman:{
|
||||
audio:'zhiman',
|
||||
inherit:'zhiman',
|
||||
|
@ -10185,6 +10192,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
target.chooseBool(get.prompt('gzyicheng'),'摸一张牌,然后弃置一张牌').set('frequentSkill','gzyicheng');
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('gzyicheng',target);
|
||||
target.draw();
|
||||
target.chooseToDiscard('he',true);
|
||||
}
|
||||
|
@ -10257,7 +10265,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
if(get.type(card)!='equip') return true;
|
||||
return target.isEmpty(get.subtype(card));
|
||||
},
|
||||
prompt:get.prompt2('huyuan'),
|
||||
prompt:get.prompt2('gzhuyuan'),
|
||||
ai1:function(card){
|
||||
var player=_status.event.player;
|
||||
if(get.type(card)!='equip') return 0;
|
||||
|
@ -10267,11 +10275,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
var player=_status.event.player,card=ui.selected.cards[0];
|
||||
return get.effect(target,card,player,player);
|
||||
},
|
||||
}).setHiddenSkill('huyuan');
|
||||
}).setHiddenSkill('gzhuyuan');
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0],card=result.cards[0];
|
||||
player.logSkill('huyuan',target);
|
||||
player.logSkill('gzhuyuan',target);
|
||||
if(get.type(card)=='equip'){
|
||||
player.$give(card,target,false);
|
||||
game.delayx();
|
||||
|
@ -10809,7 +10817,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
return event.name=='addJudge'||(event.card.name!='chiling'&&get.effect(event.target,event.card,event.player,player)<0);
|
||||
},
|
||||
filter:function(event,player){
|
||||
return get.type(event.card,'trick')=='trick'&&get.color(event.card)=='black';
|
||||
if(event.name=='addJudge') return get.color(event.card)=='black';
|
||||
return get.type(event.card,null,false)=='trick'&&get.color(event.card)=='black';
|
||||
},
|
||||
content:function(){
|
||||
if(trigger.name=='addJudge'){
|
||||
|
@ -10842,7 +10851,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
return event.name=='addJudge'||get.effect(event.target,event.card,event.player,player)<0;
|
||||
},
|
||||
filter:function(event,player){
|
||||
return event.card.name=='shunshou'||event.card.name=='lebu';
|
||||
return event.card.name==(event.name=='addJudge'?'lebu':'shunshou');
|
||||
},
|
||||
content:function(){
|
||||
if(trigger.name=='addJudge'){
|
||||
|
@ -12543,8 +12552,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
gz_zhangxiu:'张绣',
|
||||
gzfudi:'附敌',
|
||||
gzfudi_info:'当你受到伤害后,你可以交给伤害来源一张手牌。若如此做,你对其势力中体力值最大且不小于你的一名角色造成一点伤害。',
|
||||
congjian:'从谏',
|
||||
congjian_info:'锁定技,当你于回合外造成伤害,或于回合内受到伤害时,此伤害+1。',
|
||||
gzcongjian:'从谏',
|
||||
gzcongjian_info:'锁定技,当你于回合外造成伤害,或于回合内受到伤害时,此伤害+1。',
|
||||
gz_jun_caocao:'君曹操',
|
||||
jianan:'建安',
|
||||
jianan_info:'君主技,只要此武将处于明置状态,你便拥有“五子良将纛”。',
|
||||
|
@ -12655,6 +12664,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
qianhuan:'千幻',
|
||||
qianhuan_bg:'幻',
|
||||
qianhuan_info:'当与你势力相同的一名角色受到伤害后,你可以将一张与你武将牌上花色均不同的牌置于你的武将牌上。当一名与你势力相同的角色成为基本牌或锦囊牌的唯一目标时,你可以移去一张“千幻”牌,取消之。',
|
||||
gzsanyao_info:'出牌阶段限一次。你可以弃置一张牌,对一名手牌数或体力值大于你的角色造成1点伤害。',
|
||||
gzzhiman:'制蛮',
|
||||
gzzhiman_info:'当你对其他角色造成伤害时,你可以防止此伤害。若如此做,你获得其装备区或判定区里的一张牌。然后若该角色与你势力相同,该角色可以变更副将。',
|
||||
|
||||
|
@ -12774,9 +12784,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
gzduanchang:'断肠',
|
||||
gzduanchang_info:'锁定技,当你死亡时,你令杀死你的角色失去一张武将牌上的所有技能。',
|
||||
gzweimu:'帷幕',
|
||||
gzweimu_info:'锁定技,当你成为黑色锦囊牌的目标时,取消之。',
|
||||
gzweimu_info:'锁定技,当你成为黑色普通锦囊牌的目标时,或有黑色延时锦囊牌进入你的判定区时,取消之。',
|
||||
gzqianxun:'谦逊',
|
||||
gzqianxun_info:'锁定技,当你成为【顺手牵羊】或【乐不思蜀】的目标时,取消之。',
|
||||
gzqianxun_info:'锁定技,当你成为【顺手牵羊】的目标时,或有【乐不思蜀】进入你的判定区时,取消之。',
|
||||
gzkongcheng:'空城',
|
||||
gzkongcheng_info:'锁定技,当你成为【杀】或【决斗】的目标时,若你没有手牌,则取消之',
|
||||
gzxiaoji:'枭姬',
|
||||
|
@ -12823,7 +12833,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
gzzhaosong:'诏颂',
|
||||
gzzhaosong_info:'每局游戏每项限一次。①一名角色进入濒死状态时,你可以令其回复至2点体力并摸一张牌。②出牌阶段,你可观看一名其他角色的所有暗置武将牌和手牌,然后可以获得其区域内的一张牌。③一名角色使用【杀】选择唯一目标后,你可以为此【杀】增加两个目标。',
|
||||
gzlisi:'离思',
|
||||
gzlisi:'一名己方角色死亡后,你可以选择〖诏颂〗中的一个已发动过的选项,令其视为未发动过。',
|
||||
gzlisi_info:'一名己方角色死亡后,你可以选择〖诏颂〗中的一个已发动过的选项,令其视为未发动过。',
|
||||
gzcaiyuan:'才媛',
|
||||
gzcaiyuan_info:'锁定技。结束阶段开始时,若你的手牌数大于本回合开始时的手牌数,则你摸两张牌或回复1点体力。',
|
||||
gzwanyi:'婉嫕',
|
||||
|
|