commit
4cea469cd6
|
@ -16,16 +16,264 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
clan_wukuang:['male','qun',4,['clanlianzhu','clanmuyin'],['clan:陈留吴氏']],
|
||||
clan_wangling:['male','wei',4,['clanbolong','clanzhongliu'],['clan:太原王氏']],
|
||||
clan_zhongyan:['female','jin',3,['clanguangu','clanxiaoyong','clanbaozu'],['clan:颍川钟氏']],
|
||||
clan_wangyun:['male','qun',3,['clanjiexuan','clanmingjie','clanzhongliu'],['clan:太原王氏']],
|
||||
},
|
||||
characterSort:{
|
||||
clan:{
|
||||
clan_wu:['clan_wuxian','clan_wuban','clan_wukuang'],
|
||||
clan_xun:['clan_xunshu','clan_xunchen','clan_xuncai','clan_xuncan'],
|
||||
clan_han:['clan_hanshao','clan_hanrong'],
|
||||
clan_wang:['clan_wangling'],
|
||||
clan_wang:['clan_wangling','clan_wangyun'],
|
||||
clan_zhong:['clan_zhongyan'],
|
||||
},
|
||||
},
|
||||
skill:{
|
||||
//族王允
|
||||
clanjiexuan:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
limited:true,
|
||||
zhuanhuanji:'number',
|
||||
mark:true,
|
||||
marktext:'☯',
|
||||
intro:{
|
||||
markcount:()=>0,
|
||||
content:function(storage){
|
||||
return '限定技,转换技。你可以将一张'+((storage||0)%2?'黑色牌当【过河拆桥】':'红色牌当【顺手牵羊】')+'使用。';
|
||||
},
|
||||
},
|
||||
viewAs:function(cards,player){
|
||||
var storage=player.storage.clanjiexuan;
|
||||
var name=(storage||0)%2?'guohe':'shunshou';
|
||||
return {name:name};
|
||||
},
|
||||
check:function(card){
|
||||
var player=_status.event.player;
|
||||
var storage=player.storage.clanjiexuan;
|
||||
var name=(storage||0)%2?'guohe':'shunshou';
|
||||
var fix=player.hasSkill('clanzhongliu')&&get.position(card)!='h'?2:1;
|
||||
return get.value({name:name},player)-get.value(card)+fix;
|
||||
},
|
||||
position:'hes',
|
||||
filterCard:function(card,player){
|
||||
var storage=player.storage.clanjiexuan;
|
||||
return get.color(card)==((storage||0)%2?'black':'red');
|
||||
},
|
||||
skillAnimation:true,
|
||||
animationColor:'thunder',
|
||||
precontent:function(){
|
||||
'step 0'
|
||||
var skill='clanjiexuan';
|
||||
player.logSkill(skill);
|
||||
player.changeZhuanhuanji(skill);
|
||||
player.awakenSkill(skill,true);
|
||||
delete event.result.skill;
|
||||
},
|
||||
ai:{
|
||||
order:function(item,player){
|
||||
player=player||_status.event.player;
|
||||
var storage=_status.event.player.storage.clanjiexuan;
|
||||
var name=(storage||0)%2?'guohe':'shunshou';
|
||||
return get.order({name:name})+0.1;
|
||||
},
|
||||
},
|
||||
},
|
||||
clanmingjie:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
limited:true,
|
||||
filterTarget:true,
|
||||
skillAnimation:true,
|
||||
animationColor:'thunder',
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.awakenSkill('clanmingjie');
|
||||
player.addSkill('clanmingjie_effect');
|
||||
player.markAuto('clanmingjie_effect',[target]);
|
||||
target.addTempSkill('clanmingjie_targeted',{player:'phaseAfter'});
|
||||
target.markAuto('clanmingjie_targeted',[player]);
|
||||
},
|
||||
ai:{
|
||||
order:10,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
if(player.getStorage('clanmingjie_effect').contains(target)) return 0;
|
||||
if(player.hasSkill('clanzhongliu')||player.hp==1){
|
||||
if(!player.hasCard(card=>{
|
||||
var info=get.info(card);
|
||||
if(info.allowMultiple==false) return false;
|
||||
if(!lib.filter.targetEnabled2(card,player,target)) return false;
|
||||
return game.hasPlayer(current=>{
|
||||
return player.canUse(card,current)&&get.effect(current,card,player,player)>0&¤t!=target&&get.effect(target,card,player,player)>0;
|
||||
});
|
||||
},'hs')) return 0;
|
||||
}
|
||||
else{
|
||||
if(player.countCards('hs',card=>{
|
||||
var info=get.info(card);
|
||||
if(info.allowMultiple==false) return false;
|
||||
if(!lib.filter.targetEnabled2(card,player,target)) return false;
|
||||
return game.hasPlayer(current=>{
|
||||
return player.canUse(card,current)&&get.effect(current,card,player,player)>0&¤t!=target&&get.effect(target,card,player,player)>0;
|
||||
});
|
||||
})<3) return 0;
|
||||
}
|
||||
return get.sgnAttitude(player,target);
|
||||
},
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
effect:{
|
||||
trigger:{player:'useCard2'},
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
var card=event.card;
|
||||
var info=get.info(card);
|
||||
if(info.allowMultiple==false) return false;
|
||||
if(event.targets&&!info.multitarget){
|
||||
if(player.getStorage('clanmingjie_effect').some(current=>{
|
||||
return current.isIn()&&!event.targets.contains(current)&&lib.filter.targetEnabled2(card,player,current);
|
||||
})){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
prompt:'是否发动【铭戒】?',
|
||||
prompt2:function(event,player){
|
||||
var list=player.getStorage('clanmingjie_effect').filter(target=>{
|
||||
if(event.targets.contains(target)||!target.isIn()) return false;
|
||||
return lib.filter.targetEnabled2(event.card,player,target);
|
||||
});
|
||||
return '令'+get.translation(list)+'也成为'+get.translation(event.card)+'的目标';
|
||||
},
|
||||
logTarget:function(event,player){
|
||||
return player.getStorage('clanmingjie_effect').filter(target=>{
|
||||
if(event.targets.contains(target)||!target.isIn()) return false;
|
||||
return lib.filter.targetEnabled2(event.card,player,target);
|
||||
});
|
||||
},
|
||||
check:function(event,player){
|
||||
var eff=0;
|
||||
var list=player.getStorage('clanmingjie_effect').filter(target=>{
|
||||
if(event.targets.contains(target)||!target.isIn()) return false;
|
||||
return lib.filter.targetEnabled2(event.card,player,target);
|
||||
});
|
||||
for(var i of list) eff+=get.effect(i,event.card,player,player);
|
||||
return eff>0;
|
||||
},
|
||||
content:function(){
|
||||
var list=player.getStorage('clanmingjie_effect').filter(target=>{
|
||||
if(trigger.targets.contains(target)||!target.isIn()) return false;
|
||||
return lib.filter.targetEnabled2(trigger.card,player,target);
|
||||
});
|
||||
if(list.length>0){
|
||||
trigger.targets.addArray(list);
|
||||
game.log(list,'也成为了',trigger.card,'的目标');
|
||||
}
|
||||
},
|
||||
intro:{
|
||||
content:'使用牌时可以额外指定$为目标',
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
player:function(card,player,target){
|
||||
if(_status.event.getParent('useCard',true)||_status.event.getParent('_wuxie',true)) return;
|
||||
if(player.getStorage('clanmingjie_effect').contains(target)) return [1,-0.5];
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
targeted:{
|
||||
trigger:{
|
||||
player:'phaseEnd',
|
||||
},
|
||||
filter:function(event,player){
|
||||
return player.getStorage('clanmingjie_targeted').length;
|
||||
},
|
||||
forced:true,
|
||||
popup:false,
|
||||
onremove:['clanmingjie_targeted','clanmingjie_record'],
|
||||
charlotte:true,
|
||||
group:'clanmingjie_record',
|
||||
content:function(){
|
||||
'step 0'
|
||||
var targets=player.getStorage('clanmingjie_targeted').slice();
|
||||
targets.sortBySeat();
|
||||
event.targets=targets;
|
||||
event.targetsx=targets.slice();
|
||||
var cards=[];
|
||||
var list=player.getStorage('clanmingjie_record');
|
||||
if(list.length){
|
||||
cards.addArray(list);
|
||||
}
|
||||
cards=cards.filterInD('d');
|
||||
if(cards.length){
|
||||
event.cards=cards;
|
||||
}
|
||||
else event.goto(6);
|
||||
'step 1'
|
||||
event.target=targets.shift();
|
||||
event.cards2=cards.filterInD('d');
|
||||
'step 2'
|
||||
target.chooseButton(['铭戒:是否使用这些牌?',event.cards2]).set('filterButton',button=>{
|
||||
return _status.event.player.hasUseTarget(button.link);
|
||||
}).set('ai',button=>{
|
||||
return _status.event.player.getUseValue(button.link);
|
||||
});
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var card=result.links[0];
|
||||
event.cards2.remove(card);
|
||||
target.$gain2(card,false);
|
||||
game.delayx();
|
||||
target.chooseUseTarget(card,true);
|
||||
}
|
||||
else event.goto(5);
|
||||
'step 4'
|
||||
if(event.cards2.filter(card=>{
|
||||
return get.position(card,true)=='d'&&target.hasUseTarget(card);
|
||||
}).length) event.goto(2);
|
||||
'step 5'
|
||||
if(targets.length) event.goto(1);
|
||||
'step 6'
|
||||
event.targetsx.forEach(target=>{
|
||||
target.unmarkAuto('clanmingjie_effect',[player]);
|
||||
});
|
||||
player.removeSkill('clanmingjie_targeted');
|
||||
},
|
||||
marktext:'戒',
|
||||
intro:{
|
||||
content:'已被$指定为〖铭戒〗目标',
|
||||
},
|
||||
},
|
||||
record:{
|
||||
trigger:{
|
||||
global:['shaMiss','eventNeutralized','useCard1','phaseAfter'],
|
||||
},
|
||||
silent:true,
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
if(_status.currentPhase!=player) return false;
|
||||
if(event.name=='useCard'){
|
||||
return get.suit(event.card)=='spade';
|
||||
}
|
||||
if(event.name=='phase') return true;
|
||||
if(event.type!='card') return false;
|
||||
return true;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(trigger.name=='phase'){
|
||||
delete player.storage.clanmingjie_record;
|
||||
return;
|
||||
}
|
||||
player.markAuto('clanmingjie_record',trigger.cards);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
//钟琰族钟琰
|
||||
clanguangu:{
|
||||
audio:2,
|
||||
|
@ -36,7 +284,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
marktext:'☯',
|
||||
intro:{
|
||||
content:function(storage){
|
||||
return '转换技。出牌阶段限一次,你可以观看'+(storage?'一名角色的至多四张手':'牌堆顶的至多四张')+'牌,然后可以使用其中的一张牌';
|
||||
return '转换技。出牌阶段限一次,你可以观看'+(storage?'一名角色的至多四张手':'牌堆顶的至多四张')+'牌,然后可以使用其中的一张牌。';
|
||||
},
|
||||
},
|
||||
filter:function(event,player){
|
||||
|
@ -132,7 +380,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
nature:get.nature(card,get.owner(card)),
|
||||
cards:[card],
|
||||
}
|
||||
return player.hasUseTarget(cardx);
|
||||
return player.hasUseTarget(cardx,null,false);
|
||||
}).set('ai',button=>{
|
||||
var len=_status.event.len;
|
||||
var card=button.link;
|
||||
|
@ -159,7 +407,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
nature:get.nature(card,get.owner(card)),
|
||||
cards:[card],
|
||||
}
|
||||
var next=player.chooseUseTarget(cardx,[card],true).set('oncard',(card)=>{
|
||||
var next=player.chooseUseTarget(cardx,[card],true,false).set('oncard',(card)=>{
|
||||
var owner=_status.event.getParent().owner;
|
||||
if(owner) owner.$throw(card.cards);
|
||||
});
|
||||
|
@ -348,7 +596,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
clanzhongliu:{
|
||||
audio:2,
|
||||
audioname:['clan_wangling'],
|
||||
audioname:['clan_wangling','clan_wangyun'],
|
||||
trigger:{player:'useCard'},
|
||||
forced:true,
|
||||
clanSkill:true,
|
||||
|
@ -958,6 +1206,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(!game.hasPlayer(current=>current!=player)) return false;
|
||||
var card=event.card,type=get.type2(card);
|
||||
for(var i=player.actionHistory.length-1; i>=0; i--){
|
||||
var history=player.actionHistory[i].useCard;
|
||||
|
@ -1392,7 +1641,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(cards.length) player.discard(cards);
|
||||
}
|
||||
'step 1'
|
||||
if(!player.isIn()) event.finish();
|
||||
if(!player.isIn()||!game.hasPlayer(current=>current!=player)) event.finish();
|
||||
else player.chooseTarget('烈誓:令一名其他角色选择另一项',lib.filter.notMe,true).set('ai',target=>{
|
||||
var player=_status.event.player,chosen=_status.event.getParent().choice,att=get.attitude(player,target);
|
||||
if(chosen=='damage'){
|
||||
|
@ -1881,6 +2130,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
clanxiaoyong_info:'锁定技。当你于回合内首次使用字数为X的牌时,你重置〖观骨〗(X为你上次发动〖观骨〗观看的牌数)。',
|
||||
clanbaozu:'保族',
|
||||
clanbaozu_info:'宗族技,限定技。当一名同族角色进入濒死状态时,你可以令其横置并回复1点体力。',
|
||||
clan_wangyun:'族王允',
|
||||
clanjiexuan:'解悬',
|
||||
clanjiexuan_info:'限定技,转换技。阴:你可以将一张红色牌当【顺手牵羊】使用;阳:你可以将一张黑色牌当【过河拆桥】使用。',
|
||||
clanmingjie:'铭戒',
|
||||
clanmingjie_info:'限定技。出牌阶段,你可以选择一名角色,然后直到其下回合结束时,当你使用牌时你可以指定其为额外目标。然后其下回合结束时,你可以使用本回合使用过的黑桃牌和被抵消过的牌。',
|
||||
|
||||
clan_wu:'陈留·吴氏',
|
||||
clan_xun:'颍川·荀氏',
|
||||
|
|
|
@ -8817,7 +8817,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return result.bool;
|
||||
};
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
if(result.bool&&game.hasPlayer(current=>current!=player)){
|
||||
player.chooseTarget(lib.filter.notMe,true,'选择一名其他角色,对其造成1点雷属性伤害').set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.damageEffect(target,player,player,'thunder');
|
||||
|
@ -12731,6 +12731,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
popup:false,
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
if(!game.hasPlayer(current=>current!=player)) return false;
|
||||
return event.skill=='junktaoluan_backup'||event.skill=='junktaoluan5'||event.skill=='junktaoluan4';
|
||||
},
|
||||
content:function(){
|
||||
|
|
|
@ -1483,11 +1483,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return ui.discardPile.childNodes.length>0;
|
||||
},
|
||||
onremove:true,
|
||||
mark:true,
|
||||
marktext:'灵',
|
||||
intro:{
|
||||
name2:'灵',
|
||||
content:'mark',
|
||||
mark:function(dialog,storage,player){
|
||||
dialog.addText('共有'+player.countMark(storage)+'个标记');
|
||||
dialog.addText('注:图标的颜色代表弃牌堆中较多的颜色');
|
||||
},
|
||||
},
|
||||
global:'dchuiling_hint',
|
||||
content:function(){
|
||||
'step 0'
|
||||
var mark=false;
|
||||
|
@ -1527,6 +1532,48 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.discardPlayerCard(target,'he',true);
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
hint:{
|
||||
trigger:{
|
||||
global:['loseAfter','loseAsyncAfter','cardsDiscardAfter','equipAfter'],
|
||||
},
|
||||
forced:true,
|
||||
popup:false,
|
||||
lastDo:true,
|
||||
forceDie:true,
|
||||
forceOut:true,
|
||||
filter:function(event,player){
|
||||
if(event._dchuiling_checked) return false;
|
||||
event._dchuiling_checked=true;
|
||||
var cards=event.getd();
|
||||
if(!cards.filterInD('d').length) return false;
|
||||
return true;
|
||||
},
|
||||
markColor:[
|
||||
['rgba(241, 42, 42, 0.75)', 'black'],
|
||||
['',''],
|
||||
['rgba(18, 4, 4, 0.75)', 'rgb(200, 200, 200)']
|
||||
],
|
||||
content:function(){
|
||||
'step 0'
|
||||
var red=0,black=0;
|
||||
for(var i=0;i<ui.discardPile.childNodes.length;i++){
|
||||
var color=get.color(ui.discardPile.childNodes[i]);
|
||||
if(color=='red') red++;
|
||||
if(color=='black') black++;
|
||||
}
|
||||
game.broadcastAll(function(ind){
|
||||
var bgColor=lib.skill.dchuiling_hint.markColor[ind][0],text='<span style="color: '+lib.skill.dchuiling_hint.markColor[ind][1]+'">灵</span>';
|
||||
for(var player of game.players){
|
||||
if(player.marks.dchuiling){
|
||||
player.marks.dchuiling.firstChild.style.backgroundColor=bgColor;
|
||||
player.marks.dchuiling.firstChild.innerHTML=text;
|
||||
}
|
||||
}
|
||||
},Math.sign(black-red)+1);
|
||||
},
|
||||
}
|
||||
},
|
||||
mod:{
|
||||
aiOrder:function(player,card,num){
|
||||
if(get.itemtype(card)!='card') return;
|
||||
|
@ -1575,7 +1622,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filterCard:()=>false,
|
||||
selectCard:[0,1],
|
||||
prompt:function(){
|
||||
return '限定技。你可以失去〖汇灵〗,增加'+_status.event.player.countMark('dchuiling')+'点体力上限,然后获得〖踏寂〗和〖清荒〗。'
|
||||
return '限定技。你可以失去〖汇灵〗,增加'+Math.min(game.countPlayer(),_status.event.player.countMark('dchuiling'))+'点体力上限,然后获得〖踏寂〗和〖清荒〗。'
|
||||
},
|
||||
filter:function(event,player){
|
||||
return player.countMark('dchuiling')>=4;
|
||||
|
@ -1583,7 +1630,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
player.awakenSkill('dcchongxu');
|
||||
player.gainMaxHp(player.countMark('dchuiling'));
|
||||
player.gainMaxHp(Math.min(game.countPlayer(),player.countMark('dchuiling')));
|
||||
player.removeSkill('dchuiling');
|
||||
'step 1'
|
||||
player.addSkillLog('dctaji');
|
||||
|
@ -1598,7 +1645,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
result:{
|
||||
player:function(player){
|
||||
return (player.countMark('dchuiling')>=6||player.hp<=2)?1:0;
|
||||
var count=player.countMark('dchuiling');
|
||||
if(count>=game.countPlayer()-1) return 1;
|
||||
return (count>=6||player.hp<=2)?1:0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1764,6 +1813,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
get.translation(mark)+'】</div><div>'+lib.translate[mark+'_info']+'</div></div>'])
|
||||
}
|
||||
var target=game.filterPlayer(i=>i!=player)[0];
|
||||
if(!game.hasPlayer(current=>current!=player)) target=player;
|
||||
event.target=target;
|
||||
player.chooseButton(['引路:令'+get.translation(target)+'获得2枚〖引路〗标记',[list,'textbutton']]).set('ai',button=>{
|
||||
var mark=button.link;
|
||||
|
@ -3214,7 +3264,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
onremove:['dcsilve','dcsilve_self'],
|
||||
filter:function(event,player){
|
||||
return (event.name!='phase'||game.phaseNumber==0);
|
||||
return game.hasPlayer(current=>current!=player)&&(event.name!='phase'||game.phaseNumber==0);
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
|
@ -4113,6 +4163,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:2,
|
||||
filter:function(event,player){
|
||||
return game.hasPlayer(current=>current!=player);
|
||||
},
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
var dialog=ui.create.dialog('劝谏:令一名其他角色…','hidden');
|
||||
|
@ -6487,7 +6540,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 0'
|
||||
player.draw();
|
||||
'step 1'
|
||||
if(player.countCards('h')>0){
|
||||
if(player.countCards('h')>0&&game.hasPlayer(current=>current!=player)){
|
||||
var suits=lib.suit.slice(0),cards=player.getExpansions('yuanyu');
|
||||
for(var i of cards) suits.remove(get.suit(i,false));
|
||||
var str='选择一张手牌,作为“怨”置于武将牌上;同时选择一名其他角色,令该角色获得〖怨语〗的后续效果。'
|
||||
|
@ -8414,6 +8467,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
filter:function(event,player,name){
|
||||
if(player.hasSkill('zhiwei2')) return false;
|
||||
if(!game.hasPlayer(current=>current!=player)) return false;
|
||||
if(get.mode()=='guozhan') return event.name=='showCharacter'&&(event.toShow.contains('gz_luyusheng')||event.toShow.contains('luyusheng'));
|
||||
return event.name!='showCharacter'&&(name!='phaseBefore'||game.phaseNumber==0);
|
||||
},
|
||||
|
@ -10119,7 +10173,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dchuiling:'汇灵',
|
||||
dchuiling_info:'锁定技。当你使用牌时,若此牌颜色为弃牌堆中数量较少的颜色,你获得1枚“灵”标记。若弃牌堆中:红色牌数大于黑色牌数,你回复1点体力;黑色牌数大于红色牌数,你可以弃置一名其他角色的一张牌。',
|
||||
dcchongxu:'冲虚',
|
||||
dcchongxu_info:'限定技。出牌阶段,若“灵”数不小于4,你可以失去〖汇灵〗,增加等同于“灵”数的体力上限,然后获得〖踏寂〗和〖清荒〗。',
|
||||
dcchongxu_info:'限定技。出牌阶段,若“灵”数不小于4,你可以失去〖汇灵〗,增加等同于“灵”数的体力上限(至多增加场上人数的体力上限),然后获得〖踏寂〗和〖清荒〗。',
|
||||
dctaji:'踏寂',
|
||||
dctaji_info:'当你失去手牌后,根据你失去牌的原因执行以下效果:1.使用:你弃置其他角色一张牌;2.打出:你摸一张牌;3.弃置:你回复1点体力;4.其他:你下一次对其他角色造成伤害时,此伤害+1。',
|
||||
dcqinghuang:'清荒',
|
||||
|
|
|
@ -2011,7 +2011,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
group:['sbanguo_move','sbanguo_damage','sbanguo_dying'],
|
||||
filter:function(event,player){
|
||||
return (event.name!='phase'||game.phaseNumber==0);
|
||||
return game.hasPlayer(current=>current!=player)&&(event.name!='phase'||game.phaseNumber==0);
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
|
@ -2423,6 +2423,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
group:['yijin_upstart','yijin_die'],
|
||||
filter:function(event,player){
|
||||
if(!game.hasPlayer(current=>current!=player)) return false;
|
||||
return lib.skill.yijin.getKane(player).length;
|
||||
},
|
||||
getKane:function(player){
|
||||
|
@ -2691,7 +2692,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
return game.countPlayer()>2;
|
||||
return game.countPlayer(current=>current!=player)>=2;
|
||||
},
|
||||
filterTarget:lib.filter.notMe,
|
||||
selectTarget:2,
|
||||
|
@ -8079,7 +8080,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else event.finish();
|
||||
}
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
if(result.bool&&game.hasPlayer(current=>current!=player)){
|
||||
event.card=result.links[0];
|
||||
player.chooseTarget(true,lib.filter.notMe,'选择一名其他角色获得'+get.translation(event.card)).set('ai',function(target){
|
||||
return get.value(_status.event.getParent().card,target)*get.attitude(_status.event.player,target);
|
||||
|
@ -9172,7 +9173,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else event.finish();
|
||||
'step 2'
|
||||
var max=Math.min(player.hp,target.countCards('he'));
|
||||
if(max>0){
|
||||
if(max>0&&target.isIn()){
|
||||
player.choosePlayerCard('he',target,true,[1,max]).set('forceAuto',true).set('prompt','将'+get.translation(target)+'的至多'+get.cnNumber(max)+'张牌置于其武将牌上');
|
||||
}
|
||||
else event.finish();
|
||||
|
|
|
@ -3726,7 +3726,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
dutySkill:true,
|
||||
filter:function(event,player){
|
||||
return (event.name!='phase'||game.phaseNumber==0);
|
||||
return game.hasPlayer(current=>current!=player)&&(event.name!='phase'||game.phaseNumber==0);
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
|
|
|
@ -12145,7 +12145,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
forced:true,
|
||||
filter:function(event){
|
||||
return game.players.length>1&&(event.name!='phase'||game.phaseNumber==0);
|
||||
return game.hasPlayer(current=>current!=player)&&(event.name!='phase'||game.phaseNumber==0);
|
||||
},
|
||||
audio:6,
|
||||
content:function(){
|
||||
|
@ -18744,6 +18744,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
global:'loseAsyncAfter',
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(!game.hasPlayer(current=>current!=player)) return false;
|
||||
if(event.type!='discard'||event.getlx===false) return false;
|
||||
var evt=event.getl(player);
|
||||
if(!evt||!evt.cards2) return false;
|
||||
|
|
|
@ -3816,7 +3816,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
event.finish();
|
||||
'step 6'
|
||||
player.chooseTarget('令一名其他角色弃置一张点数为6的牌,否则交给你一张牌',true,function(card,player,current){
|
||||
if(!game.hasPlayer(current=>current!=player)) event.finish();
|
||||
else player.chooseTarget('令一名其他角色弃置一张点数为6的牌,否则交给你一张牌',true,function(card,player,current){
|
||||
return current!=player&¤t.countCards('he')>0;
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player,att=get.attitude(player,target);
|
||||
|
@ -4504,7 +4505,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{player:'phaseBegin'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.phaseNumber==1&&!player.storage.jielie;
|
||||
return player.phaseNumber==1&&!player.storage.jielie&&game.hasPlayer(current=>current!=player);
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
|
@ -9648,7 +9649,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
forced:true,
|
||||
filter:function(event){
|
||||
return game.players.length>1&&(event.name!='phase'||game.phaseNumber==0);
|
||||
return game.hasPlayer(current=>current!=player)&&(event.name!='phase'||game.phaseNumber==0);
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
|
|
|
@ -713,7 +713,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
onremove:true,
|
||||
filter:function(event,player){
|
||||
return (event.name!='phase'||game.phaseNumber==0);
|
||||
return game.hasPlayer(current=>current!=player)&&(event.name!='phase'||game.phaseNumber==0);
|
||||
},
|
||||
group:['twyanshi_hurt','twyanshi_damage'],
|
||||
content:function(){
|
||||
|
@ -5019,7 +5019,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else event.finish();
|
||||
'step 2'
|
||||
game.delayx();
|
||||
if(player.getExpansions('twxingwu').length<3) event.finish();
|
||||
if(player.getExpansions('twxingwu').length<3||!game.hasPlayer(current=>current!=player)) event.finish();
|
||||
'step 3'
|
||||
player.chooseButton(['是否移去三张“星舞”牌并发射核弹?',player.getExpansions('twxingwu')],3).set('ai',function(button){
|
||||
if(_status.event.goon) return 1;
|
||||
|
@ -8300,7 +8300,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:3,
|
||||
trigger:{global:'phaseBefore',player:'enterGame'},
|
||||
filter:function(event,player){
|
||||
return event.name!='phase'||game.phaseNumber==0;
|
||||
return game.hasPlayer(current=>current!=player)&&(event.name!='phase'||game.phaseNumber==0);
|
||||
},
|
||||
forced:true,
|
||||
content:function(){
|
||||
|
@ -10710,7 +10710,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
};
|
||||
} else event.finish();
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
if(result.bool&&game.hasPlayer(current=>current!=player)){
|
||||
player.chooseTarget('选择一名其他角色,对其造成2点雷电伤害',lib.filter.notMe,true).set('ai',target=>get.damageEffect(target,player,player,'thunder'));
|
||||
}
|
||||
'step 4'
|
||||
|
@ -13294,6 +13294,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
var choiceList=['令一名其他角色与你各摸一张牌','令自己下个出牌阶段可以多发动一次【外使】'];
|
||||
event.count=0;
|
||||
if(game.hasPlayer(current=>current!=player)){
|
||||
choiceList.shift();
|
||||
event.count++;
|
||||
}
|
||||
if(lib.skill.chijie.filter&&lib.skill.chijie.filter({},player)) choiceList.push('将自己的势力变更为场上存在的一个其他势力');
|
||||
player.chooseControl('cancel2').set('prompt',get.prompt('renshe')).set('choiceList',choiceList).set('ai',function(){
|
||||
if(game.hasPlayer(function(current){
|
||||
|
@ -13306,13 +13311,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
event.index=result.index;
|
||||
player.logSkill('renshe');
|
||||
if(event.index==0){
|
||||
if(event.index+event.count==0){
|
||||
player.chooseTarget('请选择一名角色,与其各摸一张牌',lib.filter.notMe,true).ai=function(target){
|
||||
if(target.hasSkillTag('nogain')) return 0.1;
|
||||
return get.attitude(_status.event.player,target);
|
||||
};
|
||||
}
|
||||
else if(result.index==1){
|
||||
else if(result.index+event.count==1){
|
||||
player.storage.waishi++;
|
||||
event.finish();
|
||||
}
|
||||
|
|
|
@ -1384,11 +1384,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 2'
|
||||
if(get.position(card)=='h'&&get.owner(card)==player&&player.hasUseTarget(card)){
|
||||
player.chooseUseTarget(card,true);
|
||||
event.finish();
|
||||
}
|
||||
'step 3'
|
||||
player.link(true);
|
||||
target.link(true);
|
||||
if(player.hasHistory('useCard',evt=>{
|
||||
return evt.getParent(2).name=='dcjianzheng'&&evt.targets.contains(target);
|
||||
})){
|
||||
player.link(true);
|
||||
target.link(true);
|
||||
}
|
||||
else event.finish();
|
||||
'step 4'
|
||||
target.viewHandcards(player);
|
||||
},
|
||||
|
@ -1491,7 +1495,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
'step 5'
|
||||
if(event.targets.length) event.goto(3);
|
||||
else if(event.num) event.goto(1);
|
||||
// else if(event.num) event.goto(1);
|
||||
},
|
||||
ai:{
|
||||
maixie:true,
|
||||
|
@ -2207,7 +2211,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
player.recover();
|
||||
player.chooseTarget('残肆:选择一名其他角色',true,lib.filter.notMe).set('ai',target=>{
|
||||
if(!game.hasPlayer(current=>current!=player)) event.finish();
|
||||
else player.chooseTarget('残肆:选择一名其他角色',true,lib.filter.notMe).set('ai',target=>{
|
||||
var player=_status.event.player;
|
||||
var list=['recover','sha','juedou','huogong'];
|
||||
return list.reduce((p,c)=>{
|
||||
|
@ -3140,8 +3145,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else choiceList[0]='<span style="opacity:0.5; ">'+choiceList[0]+(used?'(同名牌被使用过)':'(已选择)')+'</span>';
|
||||
if(!player.hasSkill('dczhanmeng_choice1')) list.push('选项二');
|
||||
else choiceList[1]='<span style="opacity:0.5">'+choiceList[1]+'(已选择)</span>';
|
||||
if(!player.hasSkill('dczhanmeng_choice2')) list.push('选项三');
|
||||
else choiceList[2]='<span style="opacity:0.5">'+choiceList[2]+'(已选择)</span>';
|
||||
var other=game.hasPlayer(current=>current!=player);
|
||||
if(!player.hasSkill('dczhanmeng_choice2')&&other) list.push('选项三');
|
||||
else choiceList[2]='<span style="opacity:0.5">'+choiceList[2]+(!other?'(没人啦)':'(已选择)')+'</span>';
|
||||
list.push('cancel2');
|
||||
player.chooseControl(list).set('prompt',get.prompt('dczhanmeng')).set('ai',()=>{
|
||||
var choices=_status.event.controls.slice().remove('cancel2');
|
||||
|
@ -3375,7 +3381,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return (event.name!='phase'||game.phaseNumber==0);
|
||||
return game.hasPlayer(current=>current!=player)&&(event.name!='phase'||game.phaseNumber==0);
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
|
@ -4157,7 +4163,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
} else event.redo();
|
||||
event.nowProperty++;
|
||||
'step 2'
|
||||
player.chooseTarget('梦解:对一名其他角色造成1点伤害',true,lib.filter.notMe).set('ai',target=>get.damageEffect(target,player,player));
|
||||
if(!game.hasPlayer(current=>current!=player)) event._result={bool:false};
|
||||
else player.chooseTarget('梦解:对一名其他角色造成1点伤害',true,lib.filter.notMe).set('ai',target=>get.damageEffect(target,player,player));
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
player.logSkill('dcmengjie',result.targets[0]);
|
||||
|
@ -4196,7 +4203,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
game.delayx();
|
||||
event.goto(1);
|
||||
'step 10'
|
||||
player.chooseTarget('梦解:令一名其他角色将手牌补至上限',true,(card,player,target)=>{
|
||||
if(!game.hasPlayer(current=>current!=player)) event._result={bool:false};
|
||||
else player.chooseTarget('梦解:令一名其他角色将手牌补至上限',true,(card,player,target)=>{
|
||||
return target!=player;
|
||||
}).set('ai',target=>{
|
||||
var att=get.attitude(_status.event.player,target);
|
||||
|
@ -8836,6 +8844,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
skillAnimation:true,
|
||||
animationColor:'gray',
|
||||
filter:function(event,player){
|
||||
return game.hasPlayer(current=>current!=player);
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget('请选择【毒逝】的目标','选择一名其他角色,令其获得技能【毒逝】',true,lib.filter.notMe).set('forceDie',true).set('ai',function(target){
|
||||
|
@ -10918,7 +10929,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dcxinyou_info:'出牌阶段限一次。你可以将体力回复至上限并将手牌补至体力上限。若你以此法:获得了至少两张牌,你于结束阶段失去1点体力;回复了体力,你于结束阶段弃置两张牌。',
|
||||
zerong:'笮融',
|
||||
dccansi:'残肆',
|
||||
dccansi_info:'锁定技。准备阶段,你回复1点体力并选择一名其他角色,其回复1点体力,然后你视为对其依次使用以下能使用的牌:【杀】(无距离限制)、【决斗】、【火攻】。当其以此法受到1点伤害后,你摸两张牌。',
|
||||
dccansi_info:'锁定技。准备阶段,你回复1点体力,然后选择一名其他角色,其回复1点体力,你视为对其依次使用以下能使用的牌:【杀】(无距离限制)、【决斗】、【火攻】。当其以此法受到1点伤害后,你摸两张牌。',
|
||||
dcfozong:'佛宗',
|
||||
dcfozong_info:'锁定技。出牌阶段开始时,若你的手牌数大于7,你将X张手牌置于武将牌上(X为你的手牌数-7)。然后若你的武将牌上有至少七张牌,其他角色依次选择一项:1.获得其中的一张牌并令你回复1点体力;2.令你失去1点体力。',
|
||||
dc_ruiji:'芮姬',
|
||||
|
@ -10931,9 +10942,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dcliying_info:'每回合限一次。当你于摸牌阶段外获得牌后,你可以将这些牌中的任意张交给一名其他角色,然后摸一张牌。',
|
||||
huanfan:'桓范',
|
||||
dcjianzheng:'谏诤',
|
||||
dcjianzheng_info:'出牌阶段限一次。你可以观看一名其他角色的手牌,然后若其中有你可以使用的手牌,你获得并使用其中一张。若你未以此法使用牌,你令你与其横置,然后其观看你的手牌。',
|
||||
dcjianzheng_info:'出牌阶段限一次。你可以观看一名其他角色的手牌,然后若其中有你可以使用的手牌,你获得并使用其中一张。若你以此法使用牌指定了其为目标,你令你与其横置,然后其观看你的手牌。',
|
||||
dcfumou:'腹谋',
|
||||
dcfumou_info:'当你受到1点伤害后,你可以令至多X名角色依次选择一项:1.移动场上的一张牌;2.弃置所有手牌并摸两张牌;3.弃置装备区里的所有牌并回复1点体力(X为你已损失的体力值)。',
|
||||
dcfumou_info:'当你受到伤害后,你可以令至多X名角色依次选择一项:1.移动场上的一张牌;2.弃置所有手牌并摸两张牌;3.弃置装备区里的所有牌并回复1点体力(X为你已损失的体力值)。',
|
||||
chentai:'陈泰',
|
||||
dcctjiuxian:'救陷',
|
||||
dcctjiuxian_info:'出牌阶段限一次。你可以重铸一半数量的手牌(向上取整),然后视为使用一张【决斗】。当此牌对目标角色造成伤害后,你可以令其攻击范围内的一名其他角色回复1点体力。',
|
||||
|
|
|
@ -2409,6 +2409,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
popup:false,
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
if(!game.hasPlayer(current=>current!=player)) return false;
|
||||
return event.skill=='xintaoluan_backup'||event.skill=='xintaoluan5'||event.skill=='xintaoluan4';
|
||||
},
|
||||
content:function(){
|
||||
|
@ -5084,6 +5085,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
popup:false,
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
if(!game.hasPlayer(current=>current!=player)) return false;
|
||||
return event.skill=='taoluan_backup'||event.skill=='taoluan5'||event.skill=='taoluan4';
|
||||
},
|
||||
content:function(){
|
||||
|
|
|
@ -22462,6 +22462,7 @@
|
|||
}
|
||||
if(!name) return false;
|
||||
if(this.hasJudge(name)) return false;
|
||||
if(this.isOut()) return false;
|
||||
var mod=game.checkMod(card,this,this,'unchanged','targetEnabled',this);
|
||||
if(mod!='unchanged') return mod;
|
||||
return true;
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
Binary file not shown.
After Width: | Height: | Size: 32 KiB |
|
@ -2642,7 +2642,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var list=game.players.slice(0);
|
||||
var list=game.filterPlayer();
|
||||
list.remove(player);
|
||||
if(list.length){
|
||||
var target=list.randomGet();
|
||||
|
|
Loading…
Reference in New Issue