Merge pull request #165 from copcap/dev
OL孟达,新服张楚;changeGroup事件化;bug修复;新增语音
This commit is contained in:
commit
e86790366a
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -2547,6 +2547,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
return 0;
|
||||
}
|
||||
}
|
||||
if(name=='bingliang'&&source.countCards('j')>0&&source.countCards('h')>=source.hp-1){
|
||||
return 0;
|
||||
}
|
||||
var card2;
|
||||
if(name!=card.name){
|
||||
card2={name:name};
|
||||
|
|
|
@ -546,7 +546,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
return 0;
|
||||
},
|
||||
ai2:function(target){
|
||||
return -get.attitude(_status.event.player,target);
|
||||
return -get.attitude(_status.event.player,target)+0.01;
|
||||
},
|
||||
});
|
||||
'step 2'
|
||||
|
|
|
@ -932,6 +932,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.line(target,'thunder');
|
||||
target.damage('thunder');
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
player:function(card,player,target){
|
||||
if(ui.selected.targets.length) return;
|
||||
if(player!=target&&get.type2(card)=='trick') return [1,0,1,-2];
|
||||
},
|
||||
},
|
||||
},
|
||||
subSkill:{
|
||||
add:{
|
||||
audio:'dcnutao',
|
||||
|
|
|
@ -1110,6 +1110,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
group:'twwuhun_gain',
|
||||
subSkill:{
|
||||
gain:{
|
||||
audio:'twwuhun',
|
||||
trigger:{
|
||||
player:'damageEnd',
|
||||
source:'damageSource',
|
||||
|
@ -5751,7 +5752,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var map={sha:'diamond',tao:'heart'}
|
||||
for(var i=0;i<list.length;i++){
|
||||
var name=list[i];
|
||||
if(player.countCards('hs',function(card){
|
||||
if(player.countCards('hes',function(card){
|
||||
return (name!='sha'||get.value(card)<5)&&get.suit(card,player)==map[name];
|
||||
})>0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){
|
||||
var temp=get.order({name:name,nature:name=='sha'?'fire':null});
|
||||
|
@ -5766,7 +5767,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
return 1;
|
||||
},
|
||||
position:'hs',
|
||||
position:'hes',
|
||||
filterCard:function(card,player,event){
|
||||
event=event||_status.event;
|
||||
var filter=event._backup.filterCard;
|
||||
|
@ -5779,10 +5780,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
filter:function(event,player){
|
||||
var filter=event.filterCard;
|
||||
if(filter({name:'sha',nature:'fire'},player,event)&&player.countCards('hs',{suit:'diamond'})) return true;
|
||||
if(filter({name:'shan'},player,event)&&player.countCards('hs',{suit:'club'})) return true;
|
||||
if(filter({name:'tao'},player,event)&&player.countCards('hs',{suit:'heart'})) return true;
|
||||
if(filter({name:'wuxie'},player,event)&&player.countCards('hs',{suit:'spade'})) return true;
|
||||
if(filter({name:'sha',nature:'fire'},player,event)&&player.countCards('hes',{suit:'diamond'})) return true;
|
||||
if(filter({name:'shan'},player,event)&&player.countCards('hes',{suit:'club'})) return true;
|
||||
if(filter({name:'tao'},player,event)&&player.countCards('hes',{suit:'heart'})) return true;
|
||||
if(filter({name:'wuxie'},player,event)&&player.countCards('hes',{suit:'spade'})) return true;
|
||||
return false;
|
||||
},
|
||||
ai:{
|
||||
|
@ -5795,7 +5796,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
case 'respondShan':name='club';break;
|
||||
case 'save':name='heart';break;
|
||||
}
|
||||
if(!player.countCards('hs',{suit:name})) return false;
|
||||
if(!player.countCards('hes',{suit:name})) return false;
|
||||
},
|
||||
order:function(item,player){
|
||||
if(player&&_status.event.type=='phase'){
|
||||
|
@ -5804,7 +5805,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var map={sha:'diamond',tao:'heart'}
|
||||
for(var i=0;i<list.length;i++){
|
||||
var name=list[i];
|
||||
if(player.countCards('hs',function(card){
|
||||
if(player.countCards('hes',function(card){
|
||||
return (name!='sha'||get.value(card)<5)&&get.suit(card,player)==map[name];
|
||||
})>0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){
|
||||
var temp=get.order({name:name,nature:name=='sha'?'fire':null});
|
||||
|
@ -5818,9 +5819,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
hiddenCard:function(player,name){
|
||||
if(name=='wuxie'&&_status.connectMode&&player.countCards('hs')>0) return true;
|
||||
if(name=='wuxie') return player.countCards('hs',{suit:'spade'})>0;
|
||||
if(name=='tao') return player.countCards('hs',{suit:'heart'})>0;
|
||||
if(name=='wuxie'&&_status.connectMode&&player.countCards('hes')>0) return true;
|
||||
if(name=='wuxie') return player.countCards('hes',{suit:'spade'})>0;
|
||||
if(name=='tao') return player.countCards('hes',{suit:'heart'})>0;
|
||||
},
|
||||
},
|
||||
xinjuejing:{
|
||||
|
@ -6954,7 +6955,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
relonghun:'龙魂',
|
||||
relonghun_info:'你可以将同花色的一至两张牌按下列规则使用或打出:红桃当【桃】,方块当火【杀】,梅花当【闪】,黑桃当普【无懈可击】。若你以此法使用了两张红色牌,则此牌回复值或伤害值+1。若你以此法使用了两张黑色牌,则你弃置当前回合角色一张牌。',
|
||||
xinlonghun:'龙魂',
|
||||
xinlonghun_info:'你可以将你的手牌按下列规则使用或打出:红桃当【桃】,方块当火【杀】,梅花当【闪】,黑桃当普【无懈可击】。',
|
||||
xinlonghun_info:'你可以将你的牌按下列规则使用或打出:红桃当【桃】,方块当火【杀】,梅花当【闪】,黑桃当普【无懈可击】。',
|
||||
longhun:'龙魂',
|
||||
longhun1:'龙魂♥︎',
|
||||
longhun2:'龙魂♦︎',
|
||||
|
|
|
@ -2360,8 +2360,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
//沮授
|
||||
xinjianying:{
|
||||
audio:'jianying',
|
||||
audioname:['xin_jushou'],
|
||||
audio:2,
|
||||
subfrequent:['draw'],
|
||||
group:['xinjianying_draw'],
|
||||
enable:'phaseUse',
|
||||
|
@ -2449,7 +2448,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
result:{player:1},
|
||||
},
|
||||
subSkill:{
|
||||
draw:{inherit:'jianying',audio:'jianying',audioname:['xin_jushou']},
|
||||
draw:{inherit:'jianying',audio:'xinjianying'},
|
||||
},
|
||||
},
|
||||
//刘巴
|
||||
|
@ -17949,6 +17948,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sunhanhua:['dc_qiaozhou','sunhanhua'],
|
||||
duyu:['duyu','sp_duyu','pk_sp_duyu'],
|
||||
kongrong:['sp_kongrong','jsrg_kongrong','kongrong'],
|
||||
mifuren:['dc_mifuren','sp_mifuren'],
|
||||
},
|
||||
translate:{
|
||||
liuzan:'手杀留赞',
|
||||
|
@ -18393,7 +18393,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
heji_info:'当有角色使用的【决斗】或红色【杀】结算完成后,若此牌对应的目标数为1,则你可以对相同的目标使用一张【杀】或【决斗】(无距离和次数限制)。若你以此法使用的牌不为转化牌,则你从牌堆中随机获得一张红色牌。',
|
||||
liubing:'流兵',
|
||||
liubing_info:'锁定技。①当你声明使用【杀】后,若此牌是你本回合使用的第一张有唯一对应实体牌的【杀】,则你将此牌的花色改为♦。②其他角色于其出牌阶段内使用的非转化黑色杀结算结束后,若此【杀】未造成伤害,则你获得之。',
|
||||
sp_mifuren:'糜夫人',
|
||||
sp_mifuren:'手杀糜夫人',
|
||||
spcunsi:'存嗣',
|
||||
spcunsi2:'存嗣',
|
||||
spcunsi_info:'出牌阶段限一次,你可将武将牌翻至背面并选择一名其他角色。其从牌堆或弃牌堆中获得一张【杀】,且下一张杀的伤害值基数+1。',
|
||||
|
@ -18821,7 +18821,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
duansuo_info:'出牌阶段限一次。你可以重置任意名处于连环状态的角色,然后对这些角色各造成1点火焰伤害。',
|
||||
sp_pengyang:'彭羕',
|
||||
spdaming:'达命',
|
||||
spdaming_info:'①游戏开始时,你获得2点“达命”值。②其他角色A的出牌阶段限一次。其可以交给你一张牌,然后你选择令一名其他角色B。若B有与此牌相同类型的牌,其将一张该类型的牌交给A,你获得1点“达命”值;否则你将此牌交给A。',
|
||||
spdaming_info:'①游戏开始时,你获得2点“达命”值。②其他角色A的出牌阶段限一次。其可以交给你一张牌,然后你选择另一名其他角色B。若B有与此牌相同类型的牌,其将一张该类型的牌交给A,你获得1点“达命”值;否则你将此牌交给A。',
|
||||
spxiaoni:'嚣逆',
|
||||
spxiaoni_info:'①出牌阶段限一次。若你的“达命”值大于0,你可以将一张牌当任意一种【杀】或伤害类锦囊牌使用。然后你减少等同于此牌指定目标数的“达命”值。②你的手牌上限基数为X(X为“达命”值,且至多为你的体力值,至少为0)。',
|
||||
xin_zhuhuan:'手杀朱桓',
|
||||
|
|
|
@ -1854,7 +1854,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
target:function(card,player,target){
|
||||
if(get.tag(card,'damage')){
|
||||
if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
|
||||
if(!target.canMoveCard(true)||!target.hasFriend()) return;
|
||||
if(target._jsrgrangjie_aiChecking) return;
|
||||
target._jsrgrangjie_aiChecking=true;
|
||||
var moveCard=target.canMoveCard(true);
|
||||
delete target._jsrgrangjie_aiChecking;
|
||||
if(!moveCard||!target.hasFriend()) return;
|
||||
var num=1;
|
||||
if(get.attitude(player,target)>0){
|
||||
if(player.needsToDiscard()){
|
||||
|
@ -4766,6 +4770,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filter:function(event,player,name){
|
||||
if(name=='damageEnd') return true;
|
||||
var evt=event.getParent();
|
||||
if(evt.player!=player) return false;
|
||||
return evt.card&&evt.type=='card'&&evt.targets.length==1;
|
||||
},
|
||||
content:function(){
|
||||
|
|
|
@ -924,6 +924,7 @@ window.noname_character_rank={
|
|||
'vtb_xiaole',
|
||||
'vtb_xiaojiu',
|
||||
'ol_zhangzhang',
|
||||
'ol_mengda',
|
||||
],
|
||||
b:[
|
||||
'diy_feishi',
|
||||
|
@ -1212,6 +1213,7 @@ window.noname_character_rank={
|
|||
'sb_zhurong',
|
||||
'vtb_xiaoshan',
|
||||
'vtb_xiaotao',
|
||||
'zhangchu',
|
||||
],
|
||||
bm:[
|
||||
'diy_xizhenxihong',
|
||||
|
|
|
@ -166,7 +166,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
enable:'phaseUse',
|
||||
filter:function(event,player){
|
||||
return player.countCards('h',{type:'equip'})>0;
|
||||
return player.countCards('he',{type:'equip'})>0;
|
||||
},
|
||||
filterCard:function(card){
|
||||
return get.type(card)=='equip';
|
||||
|
@ -213,6 +213,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filter:function(event,player){
|
||||
if(event.type!='discard') return false;
|
||||
if(player.hasSkill('olguzheng_used')) return false;
|
||||
var phaseName;
|
||||
for(var name of lib.phaseName){
|
||||
var evt=event.getParent(name);
|
||||
if(!evt||evt.name!=name) continue;
|
||||
phaseName=name;
|
||||
break;
|
||||
}
|
||||
if(!phaseName) return false;
|
||||
return game.hasPlayer(current=>{
|
||||
if(current==player) return false;
|
||||
var evt=event.getl(current);
|
||||
|
@ -277,14 +285,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(typeof result.links[0]!='string') result.links.reverse();
|
||||
var card=result.links[1];
|
||||
target.gain(card,'gain2');
|
||||
event.cards.remove(card);
|
||||
if(result.links[0]!='获得剩余的牌') event.finish();
|
||||
}
|
||||
else if(event.targets.length) event.goto(1);
|
||||
else event.finish();
|
||||
'step 3'
|
||||
var cards=cards.filterInD('d');
|
||||
if(cards.length>0) player.gain(cards,'gain2');
|
||||
'step 4'
|
||||
if(event.targets.length) event.goto(1);
|
||||
},
|
||||
ai:{
|
||||
threaten:1.3,
|
||||
|
@ -429,7 +437,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
'step 2'
|
||||
player.give(result.cards,trigger.player);
|
||||
trigger.player.addSkill('rexiantu_check');
|
||||
trigger.player.addTempSkill('rexiantu_check','phaseUseAfter');
|
||||
trigger.player.markAuto('rexiantu_check',[player]);
|
||||
},
|
||||
ai:{
|
||||
|
@ -9837,9 +9845,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.storage.rehuashen.current=event.card;
|
||||
game.broadcastAll(function(character,player){
|
||||
player.sex=lib.character[character][0];
|
||||
player.group=lib.character[character][1];
|
||||
player.node.name.dataset.nature=get.groupnature(player.group);
|
||||
//player.group=lib.character[character][1];
|
||||
//player.node.name.dataset.nature=get.groupnature(player.group);
|
||||
},event.card,player);
|
||||
player.changeGroup(lib.character[event.card][1],false);
|
||||
}
|
||||
var link=result.control;
|
||||
player.storage.rehuashen.current2=link;
|
||||
|
@ -12435,6 +12444,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
reyingzi:{
|
||||
audio:2,
|
||||
audioname:['heqi','sunce','gexuan','re_sunben','re_sunce','re_heqi'],
|
||||
audioname2:{re_sunyi:'reyingzi_re_sunyi'},
|
||||
trigger:{player:'phaseDrawBegin2'},
|
||||
forced:true,
|
||||
preHidden:true,
|
||||
|
|
|
@ -32,7 +32,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sb_diaochan:['female','qun',3,['sblijian','sbbiyue']],
|
||||
sb_yuanshao:['male','qun',4,['sbluanji','sbxueyi'],['zhu']],
|
||||
sb_pangtong:['male','shu',3,['sblianhuan','sbniepan']],
|
||||
sb_sunce:['male','wu','2/4',['sbjiang','sbhunzi','sbzhiba'],['zhu']],
|
||||
sb_sunce:['male','wu',4,['sbjiang','sbhunzi','sbzhiba'],['zhu']],
|
||||
sb_daqiao:['female','wu',3,['sbguose','sbliuli']],
|
||||
sb_liubiao:['male','qun',3,['sbzishou','sbzongshi']],
|
||||
sb_zhurong:['female','shu',4,['sblieren','sbjuxiang'],['unseen']],
|
||||
|
@ -295,9 +295,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.awakenSkill('sbhunzi');
|
||||
player.loseMaxHp();
|
||||
'step 1'
|
||||
player.changeHujia(2,null,true);
|
||||
player.changeHujia(1,null,true);
|
||||
'step 2'
|
||||
player.draw(3);
|
||||
player.draw(2);
|
||||
'step 3'
|
||||
player.addSkillLog('sbyingzi');
|
||||
player.addSkillLog('gzyinghun');
|
||||
|
@ -348,7 +348,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
draw:{
|
||||
trigger:{global:'dieAfter'},
|
||||
filter:function(event,player){
|
||||
return event.getParent(4).name=='sbzhiba';
|
||||
return event.getParent(3).name=='sbzhiba';
|
||||
},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
|
@ -394,7 +394,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.useCard({name:'lebu'},target,cards).audio=false;
|
||||
}
|
||||
'step 1'
|
||||
player.draw();
|
||||
player.draw(2);
|
||||
player.chooseToDiscard(true,'he','国色:请弃置一张牌');
|
||||
},
|
||||
ai:{
|
||||
|
@ -725,6 +725,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(targets[i].hp==1){
|
||||
eff*=1.5;
|
||||
}
|
||||
if(get.attitude(player,targets[i])==0||targets[i].group=='qun'){
|
||||
eff+=0.5;
|
||||
}
|
||||
num+=eff;
|
||||
}
|
||||
if(!player.needsToDiscard(-1)){
|
||||
|
@ -766,6 +769,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return num+2*game.countPlayer(current=>player!=current&¤t.group=='qun');
|
||||
}
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
player:function(card,player,target){
|
||||
if(player!=target&&target&&target.group=='qun') return [1,0.2];
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
//庞统
|
||||
|
@ -1614,13 +1624,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var player=_status.event.player;
|
||||
if(ui.selected.targets.length){
|
||||
var current=ui.selected.targets[0];
|
||||
if(current.group=='shu'&¤t.hp>=player.hp){
|
||||
if(current.group=='shu'&¤t.hp>=player.hp&¤t!=player){
|
||||
return -get.attitude(player,target);
|
||||
}
|
||||
return Math.abs(get.attitude(player,current));
|
||||
}
|
||||
else{
|
||||
if(target.group=='shu'&&target.hp>=player.hp&&game.hasPlayer(current=>{
|
||||
if(target.group=='shu'&&target.hp>=player.hp&&target!=player&&game.hasPlayer(current=>{
|
||||
return get.attitude(player,current)<0;
|
||||
})) return 10;
|
||||
return 1;
|
||||
|
@ -1630,7 +1640,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(result.bool){
|
||||
var targets=result.targets;
|
||||
event.targets=targets;
|
||||
if(targets[0].group!='shu'||targets[0].hp<player.hp) targets.reverse();
|
||||
if(targets[0].group!='shu'||targets[0].hp<player.hp||targets[0]==player) targets.reverse();
|
||||
player.logSkill('sbjijiang',targets,false);
|
||||
player.line2(targets);
|
||||
var choiceList=[
|
||||
|
@ -3442,7 +3452,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
sbjiuyuan:{
|
||||
audio:2,
|
||||
usable:1,
|
||||
trigger:{global:'useCard'},
|
||||
forced:true,
|
||||
zhuSkill:true,
|
||||
|
@ -4464,12 +4473,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sbjiang:'激昂',
|
||||
sbjiang_info:'①当你使用【决斗】或红色【杀】指定目标后,或当你成为【决斗】或红色【杀】的目标后,你摸一张牌。②当你使用【决斗】时,你可以额外指定一名目标,然后你失去1点体力。③出牌阶段限一次。你可以将所有手牌当【决斗】使用。',
|
||||
sbhunzi:'魂姿',
|
||||
sbhunzi_info:'觉醒技。当你脱离濒死状态后,你减1点体力上限,获得2点护甲,摸三张牌。然后你获得〖英姿〗和〖英魂〗。',
|
||||
sbhunzi_info:'觉醒技。当你脱离濒死状态后,你减1点体力上限,获得1点护甲,摸两张牌。然后你获得〖英姿〗和〖英魂〗。',
|
||||
sbzhiba:'制霸',
|
||||
sbzhiba_info:'主公技,限定技。当你进入濒死状态时,你可以回复X点体力并修改〖激昂③〗为“出牌阶段限X次”(X为场上其他吴势力角色数+1)。然后其他吴势力角色依次受到1点无来源伤害,且当有角色因此死亡后,你摸三张牌。',
|
||||
sb_daqiao:'谋大乔',
|
||||
sbguose:'国色',
|
||||
sbguose_info:'出牌阶段限四次。你可以选择一项:1.将一张♦牌当【乐不思蜀】使用;2.弃置场上一张【乐不思蜀】。然后你摸一张牌并弃置一张牌。',
|
||||
sbguose_info:'出牌阶段限四次。你可以选择一项:1.将一张♦牌当【乐不思蜀】使用;2.弃置场上一张【乐不思蜀】。然后你摸两张牌并弃置一张牌。',
|
||||
sbliuli:'流离',
|
||||
sbliuli_info:'当你成为【杀】的目标时,你可以弃置一张牌并选择你攻击范围内的一名不为此【杀】使用者的角色,将此【杀】转移给该角色。若你以此法弃置了♥牌,则你可以令一名不为此【杀】使用者的其他角色获得“流离”标记,且移去场上所有其他的“流离”(每回合限一次)。有“流离”的角色回合开始时,其移去其“流离”并执行一个额外的出牌阶段。',
|
||||
sb_liubiao:'谋刘表',
|
||||
|
|
|
@ -4494,8 +4494,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.markSkill('huashen');
|
||||
game.broadcastAll(function(character,player){
|
||||
player.sex=lib.character[character][0];
|
||||
player.group=lib.character[character][1];
|
||||
player.node.name.dataset.nature=get.groupnature(player.group);
|
||||
//player.group=lib.character[character][1];
|
||||
//player.node.name.dataset.nature=get.groupnature(player.group);
|
||||
var mark=player.marks.huashen;
|
||||
if(mark){
|
||||
mark.style.transition='all 0.3s';
|
||||
|
@ -4513,6 +4513,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},200);
|
||||
}
|
||||
},character,player);
|
||||
player.changeGroup(lib.character[character][1],false);
|
||||
}
|
||||
player.storage.huashen.current2=skill;
|
||||
if(!player.additionalSkills.huashen||!player.additionalSkills.huashen.contains(skill)){
|
||||
|
@ -5084,6 +5085,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
gzyinghun:{
|
||||
audio:'yinghun',
|
||||
audioname:['re_sunjian','sunce','re_sunben','re_sunce','ol_sunjian','sb_sunce'],
|
||||
audioname2:{re_sunyi:'gzyinghun_re_sunyi'},
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
filter:function(event,player){
|
||||
return player.getDamagedHp()>0;
|
||||
|
|
229
character/sp.js
229
character/sp.js
|
@ -13,7 +13,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong','ol_furong','macheng','ol_zhangyì','ol_zhujun','maxiumatie','luoxian'],
|
||||
sp_liesi:['mizhu','weizi','ol_liuba','zhangshiping'],
|
||||
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_waitforsort:['ol_huban'],
|
||||
sp_waitforsort:['ol_huban','ol_mengda'],
|
||||
sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'],
|
||||
sp_wanglang:['ol_wanglang'],
|
||||
sp_zhongdan:["cuiyan","huangfusong"],
|
||||
|
@ -28,6 +28,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
character:{
|
||||
ol_mengda:['male','shu',4,['olgoude']],
|
||||
ol_wanglang:['male','wei',3,['gushe','oljici']],
|
||||
ol_liuyan:['male','qun','4/6',['olpianan','olyinji','olkuisi'],['unseen']],
|
||||
lushi:['female','qun',3,['olzhuyan','olleijie']],
|
||||
|
@ -683,6 +684,208 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
skill:{
|
||||
//OL孟达
|
||||
olgoude:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
global:'phaseEnd',
|
||||
},
|
||||
filter:function(event,player){
|
||||
var list=[];
|
||||
game.countPlayer(current=>{
|
||||
if(current.group!=player.group) return false;
|
||||
var listx=lib.skill.olgoude.getActed(current);
|
||||
list.addArray(listx);
|
||||
});
|
||||
return list.length&&list.length<4;
|
||||
},
|
||||
getActed:function(target){
|
||||
var list=[];
|
||||
if(target.hasHistory('gain',evt=>{
|
||||
return evt.getParent().name=='draw'&&evt.cards.length==1;
|
||||
})){
|
||||
list.push(1);
|
||||
}
|
||||
if(game.hasPlayer2(current=>{
|
||||
return current.hasHistory('lose',evt=>{
|
||||
if(evt.type!='discard') return false;
|
||||
if((evt.discarder||evt.getParent(2).player)!=target) return false;
|
||||
var evtx=evt.getl(current);
|
||||
if(!evtx||evtx.hs.length!=1) return false;
|
||||
return true;
|
||||
});
|
||||
})){
|
||||
list.push(2);
|
||||
}
|
||||
if(target.hasHistory('useCard',evt=>{
|
||||
if(evt.card.name=='sha'&&evt.cards&&!evt.cards.length) return true;
|
||||
return false;
|
||||
})){
|
||||
list.push(3);
|
||||
}
|
||||
if(target.hasHistory('custom',evt=>{
|
||||
return evt.name=='changeGroup';
|
||||
})){
|
||||
list.push(4);
|
||||
}
|
||||
return list;
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var list=[1,2,3,4];
|
||||
game.countPlayer(current=>{
|
||||
if(current.group!=player.group) return false;
|
||||
var listx=lib.skill.olgoude.getActed(current);
|
||||
list.removeArray(listx);
|
||||
});
|
||||
var list2=list.slice();
|
||||
var nochai=false,nosha=false;
|
||||
if(!game.hasPlayer(current=>{
|
||||
return current.countDiscardableCards(player,'h');
|
||||
})){
|
||||
nochai=true;
|
||||
list2.remove(2);
|
||||
}
|
||||
if(!game.hasPlayer(current=>{
|
||||
return player.canUse({name:'sha',isCard:true},current,true,false);
|
||||
})){
|
||||
nosha=true;
|
||||
list2.remove(3);
|
||||
}
|
||||
var choices=list2.map(i=>{
|
||||
return '选项'+get.cnNumber(i,true);
|
||||
});
|
||||
var choiceList=[
|
||||
'摸一张牌',
|
||||
'弃置一名角色的一张手牌',
|
||||
'视为使用一张【杀】',
|
||||
'将势力改为任意一个势力'
|
||||
].map((text,ind)=>{
|
||||
var hint='';
|
||||
if(list.contains(ind+1)){
|
||||
return text;
|
||||
}
|
||||
else{
|
||||
hint+='已被执行过且';
|
||||
}
|
||||
if(ind==1&&nochai&&!list2.contains(ind+1)) hint+='无有手牌角色且';
|
||||
if(ind==2&&nosha&&!list2.contains(ind+1)) hint+='无可选目标且';
|
||||
hint=hint.slice(0,-1);
|
||||
return '<span style="opacity:0.5">'+text+'('+hint+')</span>';
|
||||
});
|
||||
choices.push('cancel2');
|
||||
if(_status.connectMode) game.broadcastAll(function(){_status.noclearcountdown=true});
|
||||
player.chooseControl(choices).set('choiceList',choiceList).set('prompt',get.prompt('olgoude')).set('ai',()=>{
|
||||
return _status.event.choice;
|
||||
}).set('choice',function(){
|
||||
var fn=function(control){
|
||||
switch(control){
|
||||
case '选项一':
|
||||
return player.getUseValue({name:'wuzhong'})/2;
|
||||
case '选项二':
|
||||
return Math.max.apply(Math,game.filterPlayer().map(current=>{
|
||||
if(current.hasSkillTag('noh')) return -1;
|
||||
return -1.5*get.attitude(player,current)-Math.max(0,current.countCards('h')-2)/3;
|
||||
}));
|
||||
case '选项三':
|
||||
return player.getUseValue({name:'sha'});
|
||||
case '选项四':
|
||||
var myPopulation=game.countPlayer(current=>{
|
||||
return current.group==player.group;
|
||||
})-1;
|
||||
var value=Math.max.apply(Math,lib.group.map(group=>{
|
||||
return game.countPlayer(current=>{
|
||||
return current.group==group&¤t!=player;
|
||||
})-myPopulation;
|
||||
}));
|
||||
return 10*value+0.1*(Math.random()-0.5);
|
||||
case 'cancel2':
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
var choicesx=choices.map(choice=>{
|
||||
return [choice,fn(choice)];
|
||||
});
|
||||
choicesx=choicesx.sort((a,b)=>{
|
||||
return b[1]-a[1];
|
||||
});
|
||||
var choice=choicesx[0];
|
||||
if(choice[1]<0) return 'cancel2';
|
||||
return choice[0];
|
||||
}());
|
||||
'step 1'
|
||||
if(result.control=='cancel2'){
|
||||
event.finish();
|
||||
return;
|
||||
}
|
||||
var contents={
|
||||
选项一:function(){
|
||||
player.logSkill('olgoude');
|
||||
player.draw();
|
||||
},
|
||||
选项二:function(){
|
||||
'step 0'
|
||||
player.chooseTarget('苟得:弃置一名角色的一张手牌',true,(card,player,target)=>{
|
||||
return target.countDiscardableCards(player,'h');
|
||||
}).set('ai',target=>{
|
||||
if(target.hasSkillTag('noh')) return 0;
|
||||
return -get.attitude(_status.event.player,target);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
if(_status.connectMode){game.broadcastAll(function(){delete _status.noclearcountdown;game.stopCountChoose()});}
|
||||
player.logSkill('olgoude',target);
|
||||
player.discardPlayerCard(target,true,'h');
|
||||
}
|
||||
},
|
||||
选项三:function(){
|
||||
player.chooseUseTarget('sha',true,false).set('logSkill','olgoude');
|
||||
},
|
||||
选项四:function(){
|
||||
'step 0'
|
||||
var list=lib.group.slice();
|
||||
var maxGroup=list.slice().sort((a,b)=>{
|
||||
return game.countPlayer(current=>{
|
||||
return current.group==b&¤t!=player;
|
||||
})-game.countPlayer(current=>{
|
||||
return current.group==a&¤t!=player;
|
||||
});
|
||||
})[0];
|
||||
player.chooseControl(list).set('prompt','苟得:请选择要变更为的势力').set('ai',()=>{
|
||||
return _status.event.choice;
|
||||
}).set('choice',maxGroup);
|
||||
'step 1'
|
||||
if(_status.connectMode){game.broadcastAll(function(){delete _status.noclearcountdown;game.stopCountChoose()});}
|
||||
var group=result.control;
|
||||
player.logSkill('olgoude');
|
||||
player.changeGroup(group);
|
||||
player.popup(group+'2',get.groupnature(group,'raw'));
|
||||
},
|
||||
}
|
||||
var next=game.createEvent('olgoude_'+result.control);
|
||||
next.player=player;
|
||||
next.setContent(contents[result.control]);
|
||||
},
|
||||
ai:{
|
||||
threaten:3,
|
||||
effect:{
|
||||
player_use:function(card,player,target){
|
||||
if(typeof card=='object'&&card.cards&&card.cards.some(card=>{
|
||||
return get.position(card)=='h';
|
||||
})&&!get.tag(card,'draw')&&!get.tag(card,'gain')&&!get.tag(card,'discard')&&
|
||||
player==_status.currentPhase&&player.needsToDiscard()==1&&game.countPlayer(current=>{
|
||||
return current.group==player.group&¤t!=player;
|
||||
})<=1&&lib.group.some(group=>{
|
||||
return game.countPlayer(current=>{
|
||||
return current.group==group&¤t!=player;
|
||||
})>2;
|
||||
})) return 'zeroplayertarget';
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//OL新改王朗
|
||||
oljici:{
|
||||
audio:'jici',
|
||||
|
@ -8068,10 +8271,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
if(!_status.olxiuhao_judging&&get.tag(card,'damage')&&get.attitude(target,player)>0&&(!target.storage.counttrigger||!target.storage.counttrigger.olxiuhao)) return [0,0.5,0,0.5];
|
||||
if(!_status.olxiuhao_judging&&get.tag(card,'damage')&&get.attitude(target,player)>0&&player!=target&&(!target.storage.counttrigger||!target.storage.counttrigger.olxiuhao)) return [0,0.5,0,0.5];
|
||||
},
|
||||
player:function(card,player,target){
|
||||
if(!_status.olxiuhao_judging&&get.tag(card,'damage')&&get.attitude(player,target)>0&&(!player.storage.counttrigger||!player.storage.counttrigger.olxiuhao)) return [0,0.5,0,0.5];
|
||||
if(!_status.olxiuhao_judging&&get.tag(card,'damage')&&get.attitude(player,target)>0&&player!=target&&(!player.storage.counttrigger||!player.storage.counttrigger.olxiuhao)) return [0,0.5,0,0.5];
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -8558,7 +8761,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
check:function(card){
|
||||
return 6-get.value(card);
|
||||
},
|
||||
position:'h',
|
||||
position:'hs',
|
||||
onuse:function(result,player){
|
||||
player.addTempSkill('juguan_effect');
|
||||
},
|
||||
|
@ -9006,7 +9209,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
backup:function(links,player){
|
||||
return {
|
||||
selectCard:player.countMark('jinzhi2')+1,
|
||||
filterCard:lib.filter.cardDiscardable,
|
||||
filterCard:function(card,player){
|
||||
if(ui.selected.cards.length){
|
||||
if(get.color(card)!=get.color(ui.selected.cards[0])) return false;
|
||||
}
|
||||
return lib.filter.cardDiscardable.apply(this,arguments);
|
||||
},
|
||||
complexCard:true,
|
||||
viewAs:{
|
||||
name:links[0][2],
|
||||
nature:links[0][3],
|
||||
|
@ -9055,7 +9264,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
prompt:function(links,player){
|
||||
var name=links[0][2];
|
||||
var nature=links[0][3];
|
||||
return '弃置'+get.cnNumber(player.countMark('jinzhi2')+1)+'张牌并摸一张牌。若弃置的牌颜色均相同,则视为使用'+(get.translation(nature)||'')+get.translation(name);
|
||||
return '弃置'+get.cnNumber(player.countMark('jinzhi2')+1)+'张颜色相同的牌并摸一张牌,然后视为使用'+(get.translation(nature)||'')+get.translation(name);
|
||||
},
|
||||
},
|
||||
ai:{
|
||||
|
@ -22016,6 +22225,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
yuantanyuanshang:['yuantanyuanshang','yuantanyuanxiyuanshang'],
|
||||
ruiji:['dc_ruiji','ruiji'],
|
||||
jsp_huangyueying:['jsp_huangyueying','re_jsp_huangyueying'],
|
||||
ganfuren:['dc_ganfuren','ganfuren'],
|
||||
},
|
||||
translate:{
|
||||
"xinfu_lingren":"凌人",
|
||||
|
@ -22097,7 +22307,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhugejin:'诸葛瑾',
|
||||
zhugeke:'诸葛恪',
|
||||
guanyinping:'关银屏',
|
||||
ganfuren:'甘夫人',
|
||||
ganfuren:'SP甘夫人',
|
||||
sunhao:'孙皓',
|
||||
chengyu:'程昱',
|
||||
simalang:'司马朗',
|
||||
|
@ -22787,7 +22997,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
weiyi_info:'每名角色限一次。当有角色受到伤害后,你可选择:①若其体力值不小于你,则其失去1点体力。②若其体力值不大于你且其已受伤,则其回复1点体力。',
|
||||
jinzhi:'锦织',
|
||||
jinzhi2:'锦织',
|
||||
jinzhi_info:'当你需要使用或打出一张基本牌时,你可弃置X+1张牌并摸一张牌。若你以此法弃置的牌均为同一颜色,则视为你使用或打出了此牌。(X为你于本轮内发动此技能的次数)',
|
||||
jinzhi_info:'当你需要使用或打出一张基本牌时,你可弃置X+1张颜色相同的牌并摸一张牌,然后视为你使用或打出了此牌。(X为你于本轮内发动此技能的次数)',
|
||||
yanxiao_card:'言笑',
|
||||
yanxiao_global:'言笑',
|
||||
yanxiao_card_info:'判定阶段开始时,你获得判定区内的所有牌。',
|
||||
|
@ -23094,6 +23304,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ol_wanglang:'OL王朗',
|
||||
oljici:'激词',
|
||||
oljici_info:'当你的拼点牌亮出后,若点数不大于X,你可令点数+X并令〖鼓舌〗视为未发动过(X为你的“饶舌”标记数)。',
|
||||
ol_mengda:'OL孟达',
|
||||
olgoude:'苟得',
|
||||
olgoude_info:'一名角色的回合结束时,若有与你势力相同的角色执行过以下项,则你可以执行这些角色未执行过的一项:1.摸一张牌;2.弃置一名角色的一张手牌;3.使用一张无对应实体牌的【杀】;4.变更势力。',
|
||||
|
||||
sp_tianji:'天极·皇室宗亲',
|
||||
sp_sibi:'四弼·辅国文曲',
|
||||
|
|
170
character/sp2.js
170
character/sp2.js
|
@ -5,8 +5,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
connect:true,
|
||||
character:{
|
||||
ganfurenmifuren:['female','shu',3,['dcchanjuan','dcxunbie']],
|
||||
dc_ganfuren:['female','shu',3,['dcshushen','dcshenzhi'],['unseen']],
|
||||
dc_mifuren:['female','shu',3,['dcguixiu','dccunsi'],['unseen']],
|
||||
dc_ganfuren:['female','shu',3,['dcshushen','dcshenzhi']],
|
||||
dc_mifuren:['female','shu',3,['dcguixiu','dccunsi']],
|
||||
yue_caiwenji:['female','qun',3,['dcshuangjia','dcbeifen']],
|
||||
wanglang:['male','wei',3,['regushe','rejici']],
|
||||
ruanji:['male','wei',3,['dczhaowen','dcjiudun']],
|
||||
|
@ -32,7 +32,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xielingyu:['female','wu',3,['dcyuandi','dcxinyou']],
|
||||
yuanyin:['male','qun',3,['dcmoshou','dcyunjiu'],['unseen']],
|
||||
dongwan:['female','qun',3,['dcshengdu','dcxianjiao'],['unseen']],
|
||||
zhangchu:['female','qun',3,['dcjizhong','dcjucheng','dcguangshi'],['unseen']],
|
||||
zhangchu:['female','qun',3,['dcjizhong','dcrihui','dcguangshi']],
|
||||
peiyuanshao:['male','qun',4,['dcmoyu'],['unseen']],
|
||||
mengjie:['male','qun',3,['dcyinlu','dcyouqi']],
|
||||
//dc_fuwan:['male','qun',4,['dcmoukui']],
|
||||
|
@ -286,7 +286,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
filter:function(event,player){
|
||||
if(event.targets.length!=1) return false;
|
||||
if(event.card.name!='sha'&&get.type(event.card,false)!='trick') return false;
|
||||
if(!['basic','trick'].contains(get.type(event.card,false))) return false;
|
||||
if(event.getParent(2).name=='dcchanjuan') return false;
|
||||
return !player.getStorage('dcchanjuan').contains(event.card.name);
|
||||
},
|
||||
|
@ -298,12 +298,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
nature:trigger.card.nature,
|
||||
isCard:true,
|
||||
}
|
||||
player.chooseUseTarget(card,get.prompt('dcchanjuan'),false,false).set('prompt2','再视为使用一张'+get.translation(card)).set('logSkill','dcchanjuan');
|
||||
player.chooseUseTarget(card,get.prompt('dcchanjuan'),false,false).set('prompt2','视为再使用一张'+get.translation(card)).set('logSkill','dcchanjuan');
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.markAuto('dcchanjuan',[trigger.card.name]);
|
||||
var list1=trigger.targets.slice(),list2=result.targets.slice();
|
||||
if(list1.removeArray(list2).length==0&&list2.removeArray(list1).length==0) player.draw();
|
||||
var list1=trigger.targets,list2=result.targets;
|
||||
if(list1.slice().removeArray(list2).length==0&&list2.slice().removeArray(list1).length==0) player.draw();
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
|
@ -368,26 +368,52 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.reinit('ganfurenmifuren',character,false);
|
||||
'step 2'
|
||||
player.recover(1-player.hp);
|
||||
player.addTempSkill('dcxunbie_muteki');
|
||||
},
|
||||
subSkill:{
|
||||
muteki:{
|
||||
trigger:{
|
||||
player:'damageBegin4',
|
||||
},
|
||||
charlotte:true,
|
||||
forced:true,
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
},
|
||||
mark:true,
|
||||
intro:{content:'防止本回合受到的所有伤害'},
|
||||
ai:{
|
||||
nofire:true,
|
||||
nothunder:true,
|
||||
nodamage:true,
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
if(get.tag(card,'damage')) return 'zeroplayertarget';
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
//散装版糜夫人
|
||||
dcguixiu:{
|
||||
audio:2,
|
||||
audio:'guixiu',
|
||||
trigger:{
|
||||
player:'phaseBegin',
|
||||
},
|
||||
forced:true,
|
||||
onremove:true,
|
||||
filter:function(event,player){
|
||||
return !player.hasMark('dcguixiu');
|
||||
},
|
||||
group:'dcguixiu_rec',
|
||||
content:function(){
|
||||
player.addMark('dcguixiu',1,false);
|
||||
player.draw();
|
||||
player.draw(2);
|
||||
},
|
||||
subSkill:{
|
||||
rec:{
|
||||
audio:'dcguixiu',
|
||||
audio:'guixiu',
|
||||
trigger:{
|
||||
player:'logSkillAfter',
|
||||
},
|
||||
|
@ -402,12 +428,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
dccunsi:{
|
||||
audio:2,
|
||||
audio:'cunsi',
|
||||
enable:'phaseUse',
|
||||
limited:true,
|
||||
skillAnimation:true,
|
||||
animationColor:'orange',
|
||||
filterTarget:true,
|
||||
derivation:'dcyongjue',
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.awakenSkill('dccunsi');
|
||||
|
@ -422,7 +449,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
dcyongjue:{
|
||||
audio:2,
|
||||
audio:'yongjue',
|
||||
trigger:{
|
||||
player:'useCard',
|
||||
},
|
||||
|
@ -473,7 +500,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
//散装版甘夫人
|
||||
dcshushen:{
|
||||
audio:2,
|
||||
audio:'shushen',
|
||||
trigger:{
|
||||
player:'recoverEnd',
|
||||
},
|
||||
|
@ -499,7 +526,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
];
|
||||
if(target.isDamaged()) choices.unshift('选项一');
|
||||
else choiceList[0]='<span style="opacity:0.5">'+choiceList[0]+'</span>';
|
||||
player.chooseControl(choice).set('choiceList',choiceList).set('prompt','淑慎:请选择一项').set('ai',()=>{
|
||||
player.chooseControl(choices).set('choiceList',choiceList).set('prompt','淑慎:请选择一项').set('ai',()=>{
|
||||
return _status.event.choice;
|
||||
}).set('choice',function(){
|
||||
if(target.hp<=2||get.recoverEffect(target,player,player)>20) return 0;
|
||||
|
@ -520,7 +547,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
dcshenzhi:{
|
||||
audio:2,
|
||||
audio:'shenzhi',
|
||||
trigger:{
|
||||
player:'phaseZhunbeiBegin',
|
||||
},
|
||||
|
@ -3216,7 +3243,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
},
|
||||
dcjucheng:{
|
||||
dcrihui:{
|
||||
audio:2,
|
||||
trigger:{player:'useCardAfter'},
|
||||
usable:1,
|
||||
|
@ -3235,9 +3262,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var card={name:trigger.card.name,nature:trigger.card.nature,isCard:true};
|
||||
event.target=target;
|
||||
event.card=card;
|
||||
if(target.hasMark('dcjizhong')) player.gainPlayerCard(get.prompt('dcjucheng',target),target,'hej').set('logSkill',['dcjucheng',target]);
|
||||
if(target.hasMark('dcjizhong')) player.gainPlayerCard(get.prompt('dcrihui',target),target,'hej').set('logSkill',['dcrihui',target]);
|
||||
else{
|
||||
player.chooseBool(get.prompt('dcjucheng',target),'令所有有“信众”的角色依次视为对其使用一张'+get.translation(card)).set('ai',()=>{
|
||||
player.chooseBool(get.prompt('dcrihui',target),'令所有有“信众”的角色依次视为对其使用一张'+get.translation(card)).set('ai',()=>{
|
||||
return _status.event.bool;
|
||||
}).set('bool',function(){
|
||||
var eff=0;
|
||||
|
@ -3250,13 +3277,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
'step 1'
|
||||
if(!result.bool){
|
||||
player.storage.counttrigger.dcjucheng--;
|
||||
player.storage.counttrigger.dcrihui--;
|
||||
event.finish();
|
||||
return;
|
||||
}
|
||||
if(target.hasMark('dcjizhong')) event.finish();
|
||||
else{
|
||||
player.logSkill('dcjucheng',target);
|
||||
player.logSkill('dcrihui',target);
|
||||
event.targets=game.filterPlayer(current=>current.hasMark('dcjizhong'));
|
||||
event.targets.sortBySeat(_status.currentPhase);
|
||||
}
|
||||
'step 2'
|
||||
var current=event.targets.shift();
|
||||
|
@ -7743,9 +7772,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(player==_status.currentPhase) return false;
|
||||
return !player.hasHistory('damage',evt=>{
|
||||
return !event.nature&&!player.hasHistory('damage',evt=>{
|
||||
return !evt.nature&&evt!=event;
|
||||
},event)||!player.hasHistory('damage',evt=>{
|
||||
},event)||event.nature&&!player.hasHistory('damage',evt=>{
|
||||
return evt.nature&&evt!=event;
|
||||
},event)&&event.source&&event.source.isIn()&&event.source.countGainableCards(player,'h');
|
||||
},
|
||||
|
@ -10006,6 +10035,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
group:'dcfuxue_draw',
|
||||
subSkill:{
|
||||
draw:{
|
||||
audio:'dcfuxue',
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
forced:true,
|
||||
locked:false,
|
||||
|
@ -13643,7 +13673,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(evtx.getParent('phaseUse')!=evt) return false;
|
||||
return !evtx.card.storage||!evtx.card.storage.tongli;
|
||||
}).length;
|
||||
var str='视为额外使用'+get.cnNumber(num)+'张'
|
||||
//var str='视为额外使用'+get.cnNumber(num)+'张'
|
||||
var str='额外结算'+get.cnNumber(num)+'次'
|
||||
if(event.card.name=='sha'&&event.card.nature) str+=get.translation(event.card.nature);
|
||||
return (str+'【'+get.translation(event.card.name)+'】');
|
||||
},
|
||||
|
@ -17126,12 +17157,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return true;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.awakenSkill('syxiongyi');
|
||||
if(!_status.characterlist){
|
||||
lib.skill.pingjian.initList();
|
||||
}
|
||||
var hp=1-player.hp;
|
||||
if((player.name1=='re_sunyi'||player.name2=='re_sunyi')&&_status.characterlist.contains('xushi')){
|
||||
event.hp=1-player.hp;
|
||||
if(_status.characterlist.contains('xushi')){
|
||||
if(player.name1=='re_sunyi'||player.name2=='re_sunyi') event._result={control:'re_sunyi'};
|
||||
else if(player.name2!=undefined){
|
||||
player.chooseControl(player.name1,player.name2).set('prompt','请选择要更换的武将牌');
|
||||
}
|
||||
else event._result={control:player.name1};
|
||||
hp+=2;
|
||||
_status.characterlist.remove('xushi');
|
||||
_status.characterlist.add('re_sunyi');
|
||||
|
@ -17139,7 +17176,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
else{
|
||||
player.addSkillLog('olhunzi');
|
||||
event.goto(2);
|
||||
}
|
||||
'step 1'
|
||||
event.hp+=2;
|
||||
var name=result.control;
|
||||
_status.characterlist.remove('xushi');
|
||||
_status.characterlist.add(name);
|
||||
player.reinit(name,'xushi',false);
|
||||
'step 2'
|
||||
var hp=event.hp;
|
||||
if(hp>0) player.recover(hp);
|
||||
},
|
||||
ai:{
|
||||
|
@ -17154,6 +17200,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
derivation:['olhunzi','reyingzi','gzyinghun'],
|
||||
},
|
||||
gzyinghun_re_sunyi:{audio:1},
|
||||
reyingzi_re_sunyi:{audio:1},
|
||||
//庞德公
|
||||
heqia:{
|
||||
audio:2,
|
||||
|
@ -21786,6 +21834,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
group:'reyixiang_card',
|
||||
subSkill:{
|
||||
card:{
|
||||
audio:'yixiang',
|
||||
audioname:['re_taoqian'],
|
||||
trigger:{target:'useCardToTargeted'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
|
@ -27376,10 +27426,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xpchijie:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
player:'useCardToAfter',
|
||||
target:'useCardToAfter',
|
||||
},
|
||||
filter:function(event,player){
|
||||
return !player.hasSkill('xpchijie4')&&event.player!=player;
|
||||
var evt=event.getParent();
|
||||
var targets=evt.targets.slice(evt.num+1);
|
||||
return event.player!=player&&targets.length>0;
|
||||
},
|
||||
usable:1,
|
||||
prompt2:function(event,player){
|
||||
var evt=event.getParent();
|
||||
var targets=evt.targets.slice(evt.num+1);
|
||||
return '令'+get.translation(event.card)+'对'+get.translation(targets)+'无效';
|
||||
},
|
||||
check:function(event,player){
|
||||
var evt=event.getParent();
|
||||
|
@ -27391,7 +27449,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return num<-1;
|
||||
},
|
||||
content:function(){
|
||||
player.addTempSkill('xpchijie4');
|
||||
var evt=trigger.getParent();
|
||||
evt.excluded.addArray(evt.targets);
|
||||
},
|
||||
|
@ -27401,17 +27458,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{global:'useCardAfter'},
|
||||
audio:'xpchijie',
|
||||
filter:function(event,player){
|
||||
return event.player!=player&&event.targets.contains(player)&&!player.hasSkill('xpchijie4')&&event.cards.filterInD().length>0&&!game.hasPlayer2(function(current){
|
||||
return event.player!=player&&event.targets.contains(player)&&event.cards.filterInD().length>0&&!game.hasPlayer2(function(current){
|
||||
return current.getHistory('damage',function(evt){
|
||||
return evt.card==event.card;
|
||||
}).length>0;
|
||||
});
|
||||
},
|
||||
usable:1,
|
||||
check:function(event,player){
|
||||
return get.value(event.cards.filterInD(),player,'raw')>0;
|
||||
},
|
||||
prompt2:function(event,player){
|
||||
return '获得'+get.translation(event.cards.filterInD())+'。';
|
||||
},
|
||||
content:function(){
|
||||
player.addTempSkill('xpchijie4');
|
||||
player.gain(trigger.cards.filterInD(),'log','gain2');
|
||||
},
|
||||
},
|
||||
|
@ -27428,6 +27488,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.storage.yinju2=target;
|
||||
player.addTempSkill('yinju2');
|
||||
},
|
||||
ai:{
|
||||
result:{
|
||||
player:function(player,target){
|
||||
if(player.countCards('hs',function(card){
|
||||
return get.tag(card,'damage')&&player.canUse(card,target);
|
||||
})>=1&&target.hp<=2) return 0.1;
|
||||
if(player.countCards('hes',function(card){
|
||||
return player.canUse(card,target);
|
||||
})<=2) return -100;
|
||||
return 1;
|
||||
},
|
||||
target:function(player,target){
|
||||
return target.isDamaged()?5:3;
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
yinju2:{
|
||||
trigger:{
|
||||
|
@ -27456,6 +27532,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 1'
|
||||
game.delayx();
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
player:function(card,player,target){
|
||||
if(target!=player.storage.yinju2) return;
|
||||
if(card.name=='lebu') return;
|
||||
return [0,0.5,0,0.5];
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//管辂和葛玄
|
||||
gxlianhua:{
|
||||
|
@ -28101,6 +28186,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
check:function(event,player){
|
||||
return get.value(event.cards)+player.maxHp*2-18>0;
|
||||
},
|
||||
prompt2:function(event,player){
|
||||
return '你可以减1点体力上限,然后获得'+get.translation(event.cards.filterInD())+'。';
|
||||
},
|
||||
filter:function(event,player){
|
||||
return player.isPhaseUsing()&&get.type(event.card)=='trick'&&event.cards.filterInD().length>0;
|
||||
},
|
||||
|
@ -28419,13 +28507,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
"xinfu_bijing":{
|
||||
audio:2,
|
||||
group:["xinfu_bijing_lose","xinfu_bijing_discard"],
|
||||
subSkill:{
|
||||
lose:{
|
||||
trigger:{
|
||||
global:"phaseDiscardBegin",
|
||||
},
|
||||
audio:'xinfu_bijing',
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
if(event.player==player) return false;
|
||||
return player.getHistory('lose',function(evt){
|
||||
|
@ -28446,6 +28534,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player:"phaseZhunbeiBegin",
|
||||
},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
return player.getCards('h',function(card){
|
||||
return card.hasGaintag('xinfu_bijing');
|
||||
|
@ -28478,6 +28567,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(result.bool){
|
||||
player.logSkill('xinfu_bijing');
|
||||
player.addGaintag(result.cards,'xinfu_bijing');
|
||||
player.addSkill('xinfu_bijing_lose');
|
||||
player.addSkill('xinfu_bijing_discard');
|
||||
}
|
||||
},
|
||||
},
|
||||
|
@ -29416,7 +29507,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
mushun:'穆顺,小说《三国演义》中的人物,男,东汉末宦官。献帝欲修书与国舅伏完,共谋图曹公。因顺为宦官中之忠义可托者,乃命顺往送书。顺藏书于发中,潜出禁宫,径至完宅,将书呈上。及完回书付顺,顺乃藏于头髻内,辞完回宫。然公闻信,先于宫门等候,顺回遇公,公喝左右,遍搜身上,并无夹带,放行。忽然风吹落其帽。公又唤回,取帽视之,遍观无物,还帽令戴。顺双手倒戴其帽。公心疑,令左右搜其头发中,搜出伏完书来。公见书大怒,执下顺于密室问之,顺不肯招。当晚将顺、完等宗族二百余口,皆斩于市。',
|
||||
jsp_guanyu:'关羽,字云长。曾水淹七军、擒于禁、斩庞德、威震华夏,吓得曹操差点迁都躲避,但是东吴偷袭荆州,关羽兵败被害。后传说吕蒙因关羽之魂索命而死。',
|
||||
ruanji:'阮籍(公元210年~263年),字嗣宗,陈留尉氏(今河南省开封市)人,三国时期魏国诗人、竹林七贤之一。阮瑀之子,门荫入仕,累迁步兵校尉,世称阮步兵。崇奉老庄之学,政治上则采取谨慎避祸的态度。景元四年(公元263年),阮籍去世,享年五十三岁。作为“正始之音”的代表,著有《咏怀八十二首》、《大人先生传》等,其著作收录在《阮籍集》中。',
|
||||
ganfurenmifuren:'甘夫人,刘备起兵后于沛城娶之为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月,刘备病死于白帝城,追谥甘夫人为“昭烈皇后”。<br>刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。'
|
||||
ganfurenmifuren:'甘夫人,刘备起兵后于沛城娶之为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月,刘备病死于白帝城,追谥甘夫人为“昭烈皇后”。<br>糜夫人,刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。'
|
||||
},
|
||||
characterTitle:{
|
||||
// wulan:'#b对决限定武将',
|
||||
|
@ -29585,7 +29676,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
duanwei:['duanwei','junk_duanwei'],
|
||||
xushao:['xushao','jsrg_xushao'],
|
||||
huban:['dc_huban','ol_huban'],
|
||||
mengda:['dc_mengda','pe_mengda'],
|
||||
mengda:['dc_mengda','ol_mengda','pe_mengda'],
|
||||
jsp_guanyu:['dc_jsp_guanyu','jsp_guanyu'],
|
||||
mushun:['mushun','sp_mushun'],
|
||||
},
|
||||
|
@ -29626,7 +29717,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"xinfu_tunan":"图南",
|
||||
"xinfu_tunan_info":"出牌阶段限一次,你可以展示牌堆顶的一张牌并选择一名其他角色,然后该角色选择一项:使用此牌(无距离限制);或将此牌当普通【杀】使用。",
|
||||
"xinfu_bijing":"闭境",
|
||||
"xinfu_bijing_info":"①结束阶段,你可以选择至多两张手牌并标记为“闭境”。②其他角色的弃牌阶段开始时,若你于本回合内失去过“闭境”,其弃置两张牌。③准备阶段,你重铸所有“闭境”牌。",
|
||||
"xinfu_bijing_info":"结束阶段,你可以选择至多两张手牌并标记为“闭境”,然后你获得如下效果:1.其他角色的弃牌阶段开始时,若你于本回合内失去过“闭境”,其弃置两张牌;2.准备阶段,你重铸所有“闭境”牌。",
|
||||
"xinfu_zhenxing":"镇行",
|
||||
"xinfu_zhenxing_info":"结束阶段开始时或当你受到伤害后,你可以观看牌堆顶的至多三张牌,然后你获得其中与其余牌花色均不相同的一张牌。",
|
||||
"xinfu_qianxin":"遣信",
|
||||
|
@ -29725,7 +29816,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
lskuizhu:'馈珠',
|
||||
lskuizhu_info:'出牌阶段结束时,你可以选择体力值为全场最多的一名其他角色,将手牌摸至与该角色相同(最多摸至五张),然后该角色观看你的手牌,弃置任意张手牌并从观看的牌中获得等量的牌。若其获得的牌大于一张,则你选择一项:移去一个“珠”;或令其对其攻击范围内的一名角色造成1点伤害。',
|
||||
xpchijie:'持节',
|
||||
xpchijie_info:'每回合限一次。①当你其他角色使用的牌对你结算结束后,你可以令此牌对所有后续目标无效。②其他角色使用的牌结算完成时,若你是此牌的目标之一且此牌未造成过伤害,则你可以获得此牌对应的所有实体牌。',
|
||||
xpchijie_info:'每回合每项各限一次。1.当其他角色使用的牌对你结算结束后,你可以令此牌对所有后续目标无效。2.其他角色使用的牌结算完成时,若你是此牌的目标之一且此牌未造成过伤害,则你可以获得此牌对应的所有实体牌。',
|
||||
xpchijie2:'持节',
|
||||
yinju:'引裾',
|
||||
yinju_info:'限定技,出牌阶段,你可以选择一名其他角色。若如此做,当你于此阶段内使用牌指定其为目标后,你与其各摸一张牌;当你即将对其造成伤害时,防止此伤害,然后其回复等量的体力。',
|
||||
|
@ -30230,7 +30321,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
syjiqiao:'激峭',
|
||||
syjiqiao_info:'出牌阶段开始时,你可将牌堆顶的X张牌置于你的武将牌上(X为你的体力上限)。当你于此出牌阶段内使用的牌结算结束后,你可以获得其中的一张牌,然后若剩余牌中红色牌和黑色牌的数量:不相等,你失去1点体力;相等,你回复1点体力。出牌阶段结束时,你将这些牌置入弃牌堆。',
|
||||
syxiongyi:'凶疑',
|
||||
syxiongyi_info:'限定技。当你处于濒死状态时,若剩余武将牌堆中:有“徐氏”,则你将体力值回复至3点,并将此武将牌替换为“徐氏”;没有“徐氏”,则你将体力值回复至1点并获得〖魂姿〗。',
|
||||
syxiongyi_info:'限定技。当你处于濒死状态时,若剩余武将牌堆中:有“徐氏”,则你可以将体力值回复至3点,并将此武将牌替换为“徐氏”;没有“徐氏”,则你可以将体力值回复至1点并获得〖魂姿〗。',
|
||||
zhaoyan:'赵嫣',
|
||||
jinhui:'锦绘',
|
||||
jinhui_info:'出牌阶段限一次,你可以随机展示牌堆中的三张不具有“伤害”标签且使用目标范围为“自己”或“一名角色”的牌,然后选择一名其他角色。该角色选择并按如下“锦绘”规则使用其中一张,然后你可以按如下“锦绘”规则使用剩余的任意张牌:若此牌的使用目标为“自己”,则对自己使用该牌,否则对对方使用该牌(无距离限制且不计入次数限制)。',
|
||||
|
@ -30366,7 +30457,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dcmingfa_info:'①出牌阶段限一次。当你使用【杀】或普通锦囊牌结算结束后,若你的武将牌上没有“明伐”牌,则你可以将此牌作为“明伐”牌置于武将牌上并选择一名其他角色,记录该角色和此牌的名称。②一名角色的回合结束时,若其是你〖明伐①〗记录的角色,则你视为对其依次使用X张〖明伐①〗记录的牌,然后移去“明伐”牌(X为其手牌数且至少为1,至多为5)。③一名角色死亡时,若其是你〖明伐①〗记录的角色,则你移去“明伐”牌。',
|
||||
zhangxuan:'张嫙',
|
||||
tongli:'同礼',
|
||||
tongli_info:'当你于出牌阶段内不因〖同礼〗而使用基本牌或普通锦囊牌指定第一个目标后,若你手牌中的花色数和你于本阶段内不因〖同礼〗而使用过的牌数相等,则你可以于此牌结算结束后依次视为对此牌的所有目标使用X张名称和属性相同的牌(X为你手牌中的花色数)。',
|
||||
//tongli_info:'当你于出牌阶段内不因〖同礼〗而使用基本牌或普通锦囊牌指定第一个目标后,若你手牌中的花色数和你于本阶段内不因〖同礼〗而使用过的牌数相等,则你可以于此牌结算结束后依次视为对此牌的所有目标使用X张名称和属性相同的牌(X为你手牌中的花色数)。',
|
||||
tongli_info:'当你于出牌阶段内使用基本牌或普通锦囊牌指定第一个目标后,若你手牌中的花色数和你于本阶段内使用过的牌数相等,则你可以令此牌额外结算X次(X为你手牌中的花色数)。',
|
||||
shezang:'奢葬',
|
||||
shezang_info:'每轮限一次。当你或你回合内的其他角色进入濒死状态时,你可以从牌堆中获得每种花色的牌各一张。',
|
||||
qinyilu:'秦宜禄',
|
||||
|
@ -30763,8 +30855,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhangchu:'张楚',
|
||||
dcjizhong:'集众',
|
||||
dcjizhong_info:'出牌阶段限一次。你可以令一名其他角色摸两张牌,然后其选择一项:1.若其没有“信众”标记,其获得“信众”标记;2.弃置三张手牌。',
|
||||
dcjucheng:'聚逞',
|
||||
dcjucheng_info:'每回合限一次。当你使用普通锦囊牌或黑色基本牌结算结束后,若此牌的目标数为1且目标不为你,且其:没有“信众”,所有有“信众”的角色依次视为对其使用一张与此牌牌名和属性相同的牌;有“信众”,你可以获得其区域里的一张牌。',
|
||||
dcrihui:'日慧',
|
||||
dcrihui_info:'每回合限一次。当你使用普通锦囊牌或黑色基本牌结算结束后,若此牌的目标数为1且目标不为你,且其:没有“信众”,则所有有“信众”的角色依次视为对其使用一张与此牌牌名和属性相同的牌;有“信众”,则你可以获得其区域里的一张牌。',
|
||||
dcguangshi:'光噬',
|
||||
dcguangshi_info:'锁定技。准备阶段,若所有其他角色均有“信众”,你失去1点体力并摸两张牌。',
|
||||
dongwan:'董绾',
|
||||
|
|
|
@ -314,6 +314,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
if(lib.filter.canBeDiscarded(card,target,player)){
|
||||
target.discard(card,'notBySelf');
|
||||
target.draw();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -405,9 +406,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var count=game.countPlayer(current=>{
|
||||
var count=get.cnNumber(game.countPlayer(current=>{
|
||||
return get.distance(player,current)<=1;
|
||||
});
|
||||
}));
|
||||
player.chooseTarget(get.prompt('twzhiqu'),'选择一名其他角色并视为使用牌堆顶'+count+'张牌中的【杀】。若你与其均在对方的攻击范围内,你改为依次对其使用牌堆顶'+count+'张牌中的【杀】或锦囊牌。',lib.filter.notMe).set('ai',target=>{
|
||||
var player=_status.event.player;
|
||||
return get.effect(target,{name:'sha'},player,player)*(get.distance(player,target)==1?2:1);
|
||||
|
@ -427,8 +428,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 2'
|
||||
if(player.isIn()&&target.isIn()&&cards.length){
|
||||
do var card=cards.shift();
|
||||
while(get.name(card)=='sha'||event.fight&&get.type2(card)=='trick');
|
||||
if(!card) return;
|
||||
while(get.name(card)!='sha'&&(!event.fight||get.type2(card)!='trick')&&cards.length);
|
||||
if(get.name(card)!='sha'&&(!event.fight||get.type2(card)!='trick')) return;
|
||||
player.chooseUseTarget(card,true,false,'nodistance').set('filterTarget',function(card,player,target){
|
||||
var evt=_status.event;
|
||||
if(_status.event.name=='chooseTarget') evt=evt.getParent();
|
||||
|
@ -445,9 +446,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filter:function(event,player){
|
||||
if(!player.isPhaseUsing()) return false;
|
||||
if(player==event.player) return false;
|
||||
if(!event.player.isIn()) return false;
|
||||
if(!event.card) return false;
|
||||
return event.card.name=='sha'||get.type(event.card)=='trick'&&get.tag(event.card,'damage');
|
||||
},
|
||||
logTarget:'player',
|
||||
check:function(event,player){
|
||||
var att=get.attitude(event.player,player);
|
||||
if(player.hasSkill('twzhiqu')){
|
||||
var cnt=game.countPlayer(current=>get.distance(player,current)==2&&!player.inRange(current));
|
||||
if(cnt>=2){
|
||||
if(att<0) return true;
|
||||
return false;
|
||||
}
|
||||
if(att<0&&cnt>=2||att>0&&!cnt) return true;
|
||||
return false;
|
||||
}
|
||||
else{
|
||||
if(att<0) return false;
|
||||
return true;
|
||||
}
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var target=trigger.player;
|
||||
|
@ -461,7 +480,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var att=get.attitude(target,player);
|
||||
if(att==0) return 0;
|
||||
if(player.hasSkill('twzhiqu')){
|
||||
var cnt=game.countPlayer(current=>get.distance(player,current)==2);
|
||||
var cnt=game.countPlayer(current=>get.distance(player,current)==2&&!player.inRange(current));
|
||||
if(cnt>=2){
|
||||
if(att<0) return 1;
|
||||
return 0;
|
||||
|
@ -478,38 +497,60 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(result.index==0){
|
||||
target.draw();
|
||||
player.addTempSkill('twxianfeng_me',{player:'phaseBegin'});
|
||||
player.addMark('twxianfeng_me',1,false);
|
||||
}
|
||||
else{
|
||||
player.draw();
|
||||
target.addTempSkill('twxianfeng_others');
|
||||
target.markAuto('twxianfeng_others',[player]);
|
||||
target.addSkill('twxianfeng_others');
|
||||
if(!target.storage.twxianfeng_others) target.storage.twxianfeng_others={};
|
||||
if(typeof target.storage.twxianfeng_others[player.playerid]!='number') target.storage.twxianfeng_others[player.playerid]=0;
|
||||
target.storage.twxianfeng_others[player.playerid]++;
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
me:{
|
||||
charlotte:true,
|
||||
mark:true,
|
||||
intro:{content:'至其他角色的距离-1'},
|
||||
intro:{content:'至其他角色的距离-#'},
|
||||
mod:{
|
||||
globalFrom:function(from,to,distance){
|
||||
return distance-1;
|
||||
return distance-from.countMark('twxianfeng_me');
|
||||
}
|
||||
}
|
||||
},
|
||||
others:{
|
||||
trigger:{global:['phaseBegin','die']},
|
||||
filter:function(event,player){
|
||||
return player.getStorage('twxianfeng_others').contains(event.player);
|
||||
return player.storage.twxianfeng_others&&player.storage.twxianfeng_others[event.player.playerid];
|
||||
},
|
||||
charlotte:true,
|
||||
mark:true,
|
||||
intro:{content:'至$的距离-1'},
|
||||
forced:true,
|
||||
intro:{
|
||||
markcount:function(storage,player){
|
||||
var max=0;
|
||||
for(var id in storage){
|
||||
if(storage[id]>max) max=storage[id];
|
||||
}
|
||||
return max;
|
||||
},
|
||||
content:function(storage,player){
|
||||
if(!storage) return '';
|
||||
var str='';
|
||||
var map=(_status.connectMode?lib.playerOL:game.playerMap);
|
||||
for(var id in storage){
|
||||
str+='至'+get.translation(map[id])+'的距离-'+storage[id]+'、';
|
||||
}
|
||||
return str.slice(0,-1);
|
||||
},
|
||||
},
|
||||
content:function(){
|
||||
player.unmarkAuto('twxianfeng_others',[trigger.player]);
|
||||
delete player.storage.twxianfeng_others[trigger.player.playerid];
|
||||
if(get.is.empty(player.storage.twxianfeng_others)) player.removeSkill('twxianfeng_others');
|
||||
},
|
||||
mod:{
|
||||
globalFrom:function(from,to,distance){
|
||||
if(from.getStorage('twxianfeng_others').contains(to)) return distance-1;
|
||||
if(from.storage.twxianfeng_others&&typeof from.storage.twxianfeng_others[to.playerid]=='number') return distance-from.storage.twxianfeng_others[to.playerid];
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -2170,16 +2211,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return '选项一';
|
||||
}).set('list',list);
|
||||
'step 1'
|
||||
if(result.control=='背水!'&&player!=trigger.player) player.give(player.getCards('h'),trigger.player);
|
||||
if(result.control!='选项二'){
|
||||
event.choice=result.control;
|
||||
if(event.choice=='背水!'&&player!=trigger.player) player.give(player.getCards('h'),trigger.player);
|
||||
'step 2'
|
||||
if(event.choice!='选项二'){
|
||||
var card=get.cardPile2(function(card){
|
||||
return card.name=='sha';
|
||||
});
|
||||
if(card) trigger.player.gain(card,'gain2');
|
||||
else game.log('但牌堆里已经没有','#y杀','了!');
|
||||
if(result.control=='选项一') event.finish();
|
||||
if(event.choice=='选项一') event.finish();
|
||||
}
|
||||
if(result.control!='选项一'){
|
||||
'step 3'
|
||||
if(event.choice!='选项一'){
|
||||
if(trigger.player.countCards('h')) trigger.player.chooseCardTarget({
|
||||
prompt:'将一张手牌交给另一名其他角色并摸两张牌',
|
||||
filterCard:true,
|
||||
|
@ -2196,7 +2240,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
else event.finish();
|
||||
}
|
||||
'step 2'
|
||||
'step 4'
|
||||
var target=result.targets[0];
|
||||
trigger.player.line(target);
|
||||
trigger.player.give(result.cards,target);
|
||||
|
@ -4312,7 +4356,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
preHidden:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var forced=event.getParent(2).name=='twshuangren_end';
|
||||
var forced=event.getParent(2).name=='twshuangren_end'&&game.hasPlayer(current=>{
|
||||
return player.canCompare(current);
|
||||
});
|
||||
var str='与一名角色拼点,若你:赢,你可以视为对至多两名至其的距离不大于1的角色使用一张【杀】;没赢,其可以视为对你使用一张【杀】';
|
||||
player.chooseTarget(forced?'双刃:选择一名角色':get.prompt('twshuangren'),str,forced,(card,player,target)=>{
|
||||
return player.canCompare(target);
|
||||
|
@ -6664,7 +6710,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
logTarget:'player',
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
target.damage(trigger.source?trigger.source:'nosource',trigger.nature,trigger.num).set('card',trigger.card).set('cards',trigger.cards).twgonghuan=true;
|
||||
player.damage(trigger.source?trigger.source:'nosource',trigger.nature,trigger.num).set('card',trigger.card).set('cards',trigger.cards).twgonghuan=true;
|
||||
},
|
||||
},
|
||||
//桥蕤
|
||||
|
|
|
@ -836,21 +836,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
},
|
||||
"xinfu_guanwei":{
|
||||
xinfu_guanwei:{
|
||||
audio:2,
|
||||
usable:1,
|
||||
trigger:{
|
||||
global:"phaseUseEnd",
|
||||
},
|
||||
filter:function (event,player){
|
||||
var history=event.player.getHistory('useCard',function(evt){
|
||||
return evt.getParent('phaseUse')==event;
|
||||
});
|
||||
var history=event.player.getHistory('useCard');
|
||||
var num=0;
|
||||
var suit=false;
|
||||
for(var i=0;i<history.length;i++){
|
||||
var suit2=get.suit(history[i].card);
|
||||
if(!suit2) continue;
|
||||
if(!lib.suit.contains(suit2)) return false;
|
||||
if(suit&&suit!=suit2) return false;
|
||||
suit=suit2;
|
||||
num++;
|
||||
|
@ -858,17 +856,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return num>1;
|
||||
},
|
||||
direct:true,
|
||||
global:'xinfu_guanwei_ai',
|
||||
content:function (){
|
||||
'step 0'
|
||||
var target=trigger.player;
|
||||
player.chooseToDiscard('he',get.prompt('xinfu_guanwei',trigger.player),'弃置一张牌,令其摸两张牌并进行一个额外的出牌阶段。').set('ai',function(card){
|
||||
if(get.attitude(_status.event.player,_status.currentPhase)<1) return 0;
|
||||
if(get.attitude(_status.event.player,_status.event.targetx)<1) return 0;
|
||||
return 9-get.value(card);
|
||||
}).set('logSkill','xinfu_guanwei');
|
||||
}).set('logSkill',['xinfu_guanwei',target]).set('targetx',target);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.line(trigger.player,'green');
|
||||
trigger.player.draw(2);
|
||||
}else{
|
||||
}
|
||||
else{
|
||||
player.storage.counttrigger.xinfu_guanwei--;
|
||||
event.finish();
|
||||
}
|
||||
'step 2'
|
||||
|
@ -879,6 +881,47 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ai:{
|
||||
expose:0.5,
|
||||
},
|
||||
subSkill:{
|
||||
ai:{
|
||||
ai:{
|
||||
effect:{
|
||||
player_use:function(card,player,target){
|
||||
if(typeof card!='object'||!player.isPhaseUsing()) return;
|
||||
var hasPanjun=game.hasPlayer(function(current){
|
||||
return current.hasSkill('xinfu_guanwei')&&(!current.storage.counttrigger||!current.storage.counttrigger.xinfu_guanwei)&&
|
||||
get.attitude(current,player)>=1&¤t.hasCard(function(card){
|
||||
return get.value(card)<7||(current!=game.me&&!current.isUnderControl()&&!current.isOnline())&&get.value(card)<9;
|
||||
},'he');
|
||||
});
|
||||
if(!hasPanjun) return;
|
||||
var suitx=get.suit(card);
|
||||
var history=player.getHistory('useCard');
|
||||
if(!history.length){
|
||||
var val=0;
|
||||
if(player.hasCard(function(cardx){
|
||||
return get.suit(cardx)==suitx&&card!=cardx&&(!card.cards||!card.cards.contains(cardx))&&player.hasValueTarget(cardx);
|
||||
},'hs')) val=[2,0.1];
|
||||
if(val) return val;
|
||||
return;
|
||||
}
|
||||
var num=0;
|
||||
var suit=false;
|
||||
for(var i=0;i<history.length;i++){
|
||||
var suit2=get.suit(history[i].card);
|
||||
if(!lib.suit.contains(suit2)) return;
|
||||
if(suit&&suit!=suit2) return;
|
||||
suit=suit2;
|
||||
num++;
|
||||
}
|
||||
if(suitx==suit&&num==1) return [1,0.1];
|
||||
if(suitx!=suit&&(num>1||num<=1&&player.hasCard(function(cardx){
|
||||
return get.suit(cardx)==suit&&player.hasValueTarget(cardx);
|
||||
},'hs'))) return 'zeroplayertarget';
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
},
|
||||
xinfu_gongqing_gz_panjun:{audio:2},
|
||||
"xinfu_gongqing":{
|
||||
|
@ -1537,7 +1580,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"xinfu_zengdao2":"赠刀",
|
||||
"xinfu_zengdao2_info":"",
|
||||
"xinfu_guanwei":"观微",
|
||||
"xinfu_guanwei_info":"每回合限一次。一名角色的出牌阶段结束时,若其于出牌阶段内使用过两张以上的牌且花色均相同,则你可以弃置一张牌,令其摸两张牌并进行一个额外的出牌阶段。",
|
||||
"xinfu_guanwei_info":"每回合限一次。一名角色的出牌阶段结束时,若其本回合使用过两张以上的牌且这些牌均有花色且花色均相同,则你可以弃置一张牌,令其摸两张牌并进行一个额外的出牌阶段。",
|
||||
"xinfu_gongqing":"公清",
|
||||
"xinfu_gongqing_info":"锁定技。当你受到伤害时,若伤害来源的攻击范围:<3,则你令此伤害的数值减为1。>3,你令此伤害+1。",
|
||||
"xinfu_andong":"安东",
|
||||
|
|
50
game/game.js
50
game/game.js
|
@ -10632,6 +10632,21 @@
|
|||
emptyEvent:function(){
|
||||
event.trigger(event.name);
|
||||
},
|
||||
changeGroup:function(){
|
||||
'step 0'
|
||||
if(!event.group) event.group=player.group;
|
||||
var group=event.group;
|
||||
player.getHistory('custom').push(event);
|
||||
if(event.broadcast!==false){
|
||||
game.broadcast(function(player,group){
|
||||
player.group=group;
|
||||
player.node.name.dataset.nature=get.groupnature(group);
|
||||
},player,group);
|
||||
}
|
||||
player.group=group;
|
||||
player.node.name.dataset.nature=get.groupnature(group);
|
||||
if(event.log!==false) game.log(player,'将势力变为了','#y'+get.translation(group+2));
|
||||
},
|
||||
chooseToDebate:function(){
|
||||
'step 0'
|
||||
event.targets=event.list.filter(function(i){
|
||||
|
@ -18385,16 +18400,23 @@
|
|||
return this.maxHp-Math.max(0,this.hp);
|
||||
},
|
||||
changeGroup:function(group,log,broadcast){
|
||||
var player=this;
|
||||
if(broadcast!==false){
|
||||
game.broadcast(function(player,group){
|
||||
player.group=group;
|
||||
player.node.name.dataset.nature=get.groupnature(group);
|
||||
},player,group);
|
||||
var next=game.createEvent('changeGroup');
|
||||
next.player=this;
|
||||
next.log=true;
|
||||
for(var i=0;i<arguments.length;i++){
|
||||
var arg=arguments[i];
|
||||
if(lib.group.contains(arg)){
|
||||
next.group=arg;
|
||||
}
|
||||
else if(typeof arg==='boolean'){
|
||||
next.log=arg;
|
||||
}
|
||||
else if(arg==='nobroadcast'){
|
||||
next.broadcast=false;
|
||||
}
|
||||
}
|
||||
player.group=group;
|
||||
player.node.name.dataset.nature=get.groupnature(group);
|
||||
if(log!==false) game.log(this,'将势力变为了','#y'+get.translation(group+2));
|
||||
next.setContent('changeGroup');
|
||||
return next;
|
||||
},
|
||||
chooseToDuiben:function(target){
|
||||
var next=game.createEvent('chooseToDuiben');
|
||||
|
@ -30264,7 +30286,7 @@
|
|||
}
|
||||
player.playerid=i;
|
||||
player.nickname=info.nickname;
|
||||
player.changeGroup(info.group,false,false);
|
||||
player.changeGroup(info.group,false,'nobroadcast');
|
||||
player.identity=info.identity;
|
||||
player.identityShown=info.identityShown;
|
||||
player.hp=info.hp;
|
||||
|
@ -47710,10 +47732,10 @@
|
|||
for(var i of game.connectPlayers){
|
||||
if(!i.nickname&&!i.classList.contains('unselectable2')) num++;
|
||||
}
|
||||
if(num>=lib.configOL.number-1){
|
||||
alert('至少要有两名玩家才能开始游戏!');
|
||||
return;
|
||||
}
|
||||
// if(num>=lib.configOL.number-1){
|
||||
// alert('至少要有两名玩家才能开始游戏!');
|
||||
// return;
|
||||
// }
|
||||
game.resume();
|
||||
}
|
||||
button.delete();
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
Binary file not shown.
After Width: | Height: | Size: 32 KiB |
|
@ -1096,8 +1096,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
"step 3"
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
_status.characterlist.remove(get.sourceCharacter(game.players[i].name1));
|
||||
_status.characterlist.remove(get.sourceCharacter(game.players[i].name2));
|
||||
_status.characterlist.remove(game.players[i].name1);
|
||||
_status.characterlist.remove(game.players[i].name2);
|
||||
}
|
||||
setTimeout(function(){
|
||||
ui.arena.classList.remove('choose-character');
|
||||
|
@ -2259,9 +2259,15 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.chooseToDiscard('h',2,'是否发动【飞扬】,弃置两张手牌并弃置自己判定区的一张牌?').set('logSkill','feiyang').ai=function(card){
|
||||
return 6-get.value(card);
|
||||
};
|
||||
player.chooseToDiscard('h',2,get.prompt('feiyang'),'弃置两张手牌,然后弃置判定区里的一张牌').set('logSkill','feiyang').set('ai',function(card){
|
||||
if(_status.event.goon) return 6-get.value(card);
|
||||
return 0;
|
||||
}).set('goon',player.hasCard(function(card){
|
||||
return get.effect(player,{
|
||||
name:card.viewAs||card.name,
|
||||
cards:[card],
|
||||
},player,player)<0;
|
||||
},'j'));
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
player.discardPlayerCard(player,'j',true);
|
||||
|
|
Loading…
Reference in New Issue