Merge pull request #165 from copcap/dev

OL孟达,新服张楚;changeGroup事件化;bug修复;新增语音
This commit is contained in:
Spmario233 2023-07-22 10:58:26 +08:00 committed by GitHub
commit e86790366a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
56 changed files with 595 additions and 133 deletions

BIN
audio/die/dc_dengzhi.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/die/lushi.mp3 Normal file

Binary file not shown.

BIN
audio/die/ol_mengda.mp3 Normal file

Binary file not shown.

Binary file not shown.

BIN
audio/die/zhangchu.mp3 Normal file

Binary file not shown.

Binary file not shown.

BIN
audio/skill/dcchanjuan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcchanjuan2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcguangshi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcguangshi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjini1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjini2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjizhong1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjizhong2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcminze1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcminze2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcrihui1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcrihui2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcxunbie1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcxunbie2.mp3 Normal file

Binary file not shown.

Binary file not shown.

BIN
audio/skill/olgoude1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olgoude2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olleijie1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olleijie2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olzhuyan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olzhuyan2.mp3 Normal file

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.

View File

@ -2547,6 +2547,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return 0; return 0;
} }
} }
if(name=='bingliang'&&source.countCards('j')>0&&source.countCards('h')>=source.hp-1){
return 0;
}
var card2; var card2;
if(name!=card.name){ if(name!=card.name){
card2={name:name}; card2={name:name};

View File

@ -546,7 +546,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return 0; return 0;
}, },
ai2:function(target){ ai2:function(target){
return -get.attitude(_status.event.player,target); return -get.attitude(_status.event.player,target)+0.01;
}, },
}); });
'step 2' 'step 2'

View File

@ -932,6 +932,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.line(target,'thunder'); player.line(target,'thunder');
target.damage('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:{ subSkill:{
add:{ add:{
audio:'dcnutao', audio:'dcnutao',

View File

@ -1110,6 +1110,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:'twwuhun_gain', group:'twwuhun_gain',
subSkill:{ subSkill:{
gain:{ gain:{
audio:'twwuhun',
trigger:{ trigger:{
player:'damageEnd', player:'damageEnd',
source:'damageSource', source:'damageSource',
@ -5751,7 +5752,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var map={sha:'diamond',tao:'heart'} var map={sha:'diamond',tao:'heart'}
for(var i=0;i<list.length;i++){ for(var i=0;i<list.length;i++){
var name=list[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]; return (name!='sha'||get.value(card)<5)&&get.suit(card,player)==map[name];
})>0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){ })>0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){
var temp=get.order({name:name,nature:name=='sha'?'fire':null}); 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; return 1;
}, },
position:'hs', position:'hes',
filterCard:function(card,player,event){ filterCard:function(card,player,event){
event=event||_status.event; event=event||_status.event;
var filter=event._backup.filterCard; var filter=event._backup.filterCard;
@ -5779,10 +5780,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
filter:function(event,player){ filter:function(event,player){
var filter=event.filterCard; var filter=event.filterCard;
if(filter({name:'sha',nature:'fire'},player,event)&&player.countCards('hs',{suit:'diamond'})) 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('hs',{suit:'club'})) return true; if(filter({name:'shan'},player,event)&&player.countCards('hes',{suit:'club'})) return true;
if(filter({name:'tao'},player,event)&&player.countCards('hs',{suit:'heart'})) return true; if(filter({name:'tao'},player,event)&&player.countCards('hes',{suit:'heart'})) return true;
if(filter({name:'wuxie'},player,event)&&player.countCards('hs',{suit:'spade'})) return true; if(filter({name:'wuxie'},player,event)&&player.countCards('hes',{suit:'spade'})) return true;
return false; return false;
}, },
ai:{ ai:{
@ -5795,7 +5796,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
case 'respondShan':name='club';break; case 'respondShan':name='club';break;
case 'save':name='heart';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){ order:function(item,player){
if(player&&_status.event.type=='phase'){ 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'} var map={sha:'diamond',tao:'heart'}
for(var i=0;i<list.length;i++){ for(var i=0;i<list.length;i++){
var name=list[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]; return (name!='sha'||get.value(card)<5)&&get.suit(card,player)==map[name];
})>0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){ })>0&&player.getUseValue({name:name,nature:name=='sha'?'fire':null})>0){
var temp=get.order({name:name,nature:name=='sha'?'fire':null}); 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){ hiddenCard:function(player,name){
if(name=='wuxie'&&_status.connectMode&&player.countCards('hs')>0) return true; if(name=='wuxie'&&_status.connectMode&&player.countCards('hes')>0) return true;
if(name=='wuxie') return player.countCards('hs',{suit:'spade'})>0; if(name=='wuxie') return player.countCards('hes',{suit:'spade'})>0;
if(name=='tao') return player.countCards('hs',{suit:'heart'})>0; if(name=='tao') return player.countCards('hes',{suit:'heart'})>0;
}, },
}, },
xinjuejing:{ xinjuejing:{
@ -6954,7 +6955,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
relonghun:'龙魂', relonghun:'龙魂',
relonghun_info:'你可以将同花色的一至两张牌按下列规则使用或打出:红桃当【桃】,方块当火【杀】,梅花当【闪】,黑桃当普【无懈可击】。若你以此法使用了两张红色牌,则此牌回复值或伤害值+1。若你以此法使用了两张黑色牌则你弃置当前回合角色一张牌。', relonghun_info:'你可以将同花色的一至两张牌按下列规则使用或打出:红桃当【桃】,方块当火【杀】,梅花当【闪】,黑桃当普【无懈可击】。若你以此法使用了两张红色牌,则此牌回复值或伤害值+1。若你以此法使用了两张黑色牌则你弃置当前回合角色一张牌。',
xinlonghun:'龙魂', xinlonghun:'龙魂',
xinlonghun_info:'你可以将你的牌按下列规则使用或打出:红桃当【桃】,方块当火【杀】,梅花当【闪】,黑桃当普【无懈可击】。', xinlonghun_info:'你可以将你的牌按下列规则使用或打出:红桃当【桃】,方块当火【杀】,梅花当【闪】,黑桃当普【无懈可击】。',
longhun:'龙魂', longhun:'龙魂',
longhun1:'龙魂♥︎', longhun1:'龙魂♥︎',
longhun2:'龙魂♦︎', longhun2:'龙魂♦︎',

View File

@ -2360,8 +2360,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
//沮授 //沮授
xinjianying:{ xinjianying:{
audio:'jianying', audio:2,
audioname:['xin_jushou'],
subfrequent:['draw'], subfrequent:['draw'],
group:['xinjianying_draw'], group:['xinjianying_draw'],
enable:'phaseUse', enable:'phaseUse',
@ -2449,7 +2448,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
result:{player:1}, result:{player:1},
}, },
subSkill:{ 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'], sunhanhua:['dc_qiaozhou','sunhanhua'],
duyu:['duyu','sp_duyu','pk_sp_duyu'], duyu:['duyu','sp_duyu','pk_sp_duyu'],
kongrong:['sp_kongrong','jsrg_kongrong','kongrong'], kongrong:['sp_kongrong','jsrg_kongrong','kongrong'],
mifuren:['dc_mifuren','sp_mifuren'],
}, },
translate:{ translate:{
liuzan:'手杀留赞', liuzan:'手杀留赞',
@ -18393,7 +18393,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
heji_info:'当有角色使用的【决斗】或红色【杀】结算完成后若此牌对应的目标数为1则你可以对相同的目标使用一张【杀】或【决斗】无距离和次数限制。若你以此法使用的牌不为转化牌则你从牌堆中随机获得一张红色牌。', heji_info:'当有角色使用的【决斗】或红色【杀】结算完成后若此牌对应的目标数为1则你可以对相同的目标使用一张【杀】或【决斗】无距离和次数限制。若你以此法使用的牌不为转化牌则你从牌堆中随机获得一张红色牌。',
liubing:'流兵', liubing:'流兵',
liubing_info:'锁定技。①当你声明使用【杀】后,若此牌是你本回合使用的第一张有唯一对应实体牌的【杀】,则你将此牌的花色改为♦。②其他角色于其出牌阶段内使用的非转化黑色杀结算结束后,若此【杀】未造成伤害,则你获得之。', liubing_info:'锁定技。①当你声明使用【杀】后,若此牌是你本回合使用的第一张有唯一对应实体牌的【杀】,则你将此牌的花色改为♦。②其他角色于其出牌阶段内使用的非转化黑色杀结算结束后,若此【杀】未造成伤害,则你获得之。',
sp_mifuren:'糜夫人', sp_mifuren:'手杀糜夫人',
spcunsi:'存嗣', spcunsi:'存嗣',
spcunsi2:'存嗣', spcunsi2:'存嗣',
spcunsi_info:'出牌阶段限一次,你可将武将牌翻至背面并选择一名其他角色。其从牌堆或弃牌堆中获得一张【杀】,且下一张杀的伤害值基数+1。', spcunsi_info:'出牌阶段限一次,你可将武将牌翻至背面并选择一名其他角色。其从牌堆或弃牌堆中获得一张【杀】,且下一张杀的伤害值基数+1。',
@ -18821,7 +18821,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
duansuo_info:'出牌阶段限一次。你可以重置任意名处于连环状态的角色然后对这些角色各造成1点火焰伤害。', duansuo_info:'出牌阶段限一次。你可以重置任意名处于连环状态的角色然后对这些角色各造成1点火焰伤害。',
sp_pengyang:'彭羕', sp_pengyang:'彭羕',
spdaming:'达命', spdaming:'达命',
spdaming_info:'①游戏开始时你获得2点“达命”值。②其他角色A的出牌阶段限一次。其可以交给你一张牌然后你选择一名其他角色B。若B有与此牌相同类型的牌其将一张该类型的牌交给A你获得1点“达命”值否则你将此牌交给A。', spdaming_info:'①游戏开始时你获得2点“达命”值。②其他角色A的出牌阶段限一次。其可以交给你一张牌然后你选择一名其他角色B。若B有与此牌相同类型的牌其将一张该类型的牌交给A你获得1点“达命”值否则你将此牌交给A。',
spxiaoni:'嚣逆', spxiaoni:'嚣逆',
spxiaoni_info:'①出牌阶段限一次。若你的“达命”值大于0你可以将一张牌当任意一种【杀】或伤害类锦囊牌使用。然后你减少等同于此牌指定目标数的“达命”值。②你的手牌上限基数为XX为“达命”值且至多为你的体力值至少为0。', spxiaoni_info:'①出牌阶段限一次。若你的“达命”值大于0你可以将一张牌当任意一种【杀】或伤害类锦囊牌使用。然后你减少等同于此牌指定目标数的“达命”值。②你的手牌上限基数为XX为“达命”值且至多为你的体力值至少为0。',
xin_zhuhuan:'手杀朱桓', xin_zhuhuan:'手杀朱桓',

View File

@ -1854,7 +1854,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target:function(card,player,target){ target:function(card,player,target){
if(get.tag(card,'damage')){ if(get.tag(card,'damage')){
if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; 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; var num=1;
if(get.attitude(player,target)>0){ if(get.attitude(player,target)>0){
if(player.needsToDiscard()){ if(player.needsToDiscard()){
@ -4766,6 +4770,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event,player,name){ filter:function(event,player,name){
if(name=='damageEnd') return true; if(name=='damageEnd') return true;
var evt=event.getParent(); var evt=event.getParent();
if(evt.player!=player) return false;
return evt.card&&evt.type=='card'&&evt.targets.length==1; return evt.card&&evt.type=='card'&&evt.targets.length==1;
}, },
content:function(){ content:function(){

View File

@ -924,6 +924,7 @@ window.noname_character_rank={
'vtb_xiaole', 'vtb_xiaole',
'vtb_xiaojiu', 'vtb_xiaojiu',
'ol_zhangzhang', 'ol_zhangzhang',
'ol_mengda',
], ],
b:[ b:[
'diy_feishi', 'diy_feishi',
@ -1212,6 +1213,7 @@ window.noname_character_rank={
'sb_zhurong', 'sb_zhurong',
'vtb_xiaoshan', 'vtb_xiaoshan',
'vtb_xiaotao', 'vtb_xiaotao',
'zhangchu',
], ],
bm:[ bm:[
'diy_xizhenxihong', 'diy_xizhenxihong',

View File

@ -166,7 +166,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2, audio:2,
enable:'phaseUse', enable:'phaseUse',
filter:function(event,player){ filter:function(event,player){
return player.countCards('h',{type:'equip'})>0; return player.countCards('he',{type:'equip'})>0;
}, },
filterCard:function(card){ filterCard:function(card){
return get.type(card)=='equip'; return get.type(card)=='equip';
@ -213,6 +213,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event,player){ filter:function(event,player){
if(event.type!='discard') return false; if(event.type!='discard') return false;
if(player.hasSkill('olguzheng_used')) 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=>{ return game.hasPlayer(current=>{
if(current==player) return false; if(current==player) return false;
var evt=event.getl(current); 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(); if(typeof result.links[0]!='string') result.links.reverse();
var card=result.links[1]; var card=result.links[1];
target.gain(card,'gain2'); target.gain(card,'gain2');
event.cards.remove(card);
if(result.links[0]!='获得剩余的牌') event.finish(); if(result.links[0]!='获得剩余的牌') event.finish();
} }
else if(event.targets.length) event.goto(1);
else event.finish(); else event.finish();
'step 3' 'step 3'
var cards=cards.filterInD('d'); var cards=cards.filterInD('d');
if(cards.length>0) player.gain(cards,'gain2'); if(cards.length>0) player.gain(cards,'gain2');
'step 4'
if(event.targets.length) event.goto(1);
}, },
ai:{ ai:{
threaten:1.3, threaten:1.3,
@ -429,7 +437,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}); });
'step 2' 'step 2'
player.give(result.cards,trigger.player); player.give(result.cards,trigger.player);
trigger.player.addSkill('rexiantu_check'); trigger.player.addTempSkill('rexiantu_check','phaseUseAfter');
trigger.player.markAuto('rexiantu_check',[player]); trigger.player.markAuto('rexiantu_check',[player]);
}, },
ai:{ ai:{
@ -9837,9 +9845,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.rehuashen.current=event.card; player.storage.rehuashen.current=event.card;
game.broadcastAll(function(character,player){ game.broadcastAll(function(character,player){
player.sex=lib.character[character][0]; player.sex=lib.character[character][0];
player.group=lib.character[character][1]; //player.group=lib.character[character][1];
player.node.name.dataset.nature=get.groupnature(player.group); //player.node.name.dataset.nature=get.groupnature(player.group);
},event.card,player); },event.card,player);
player.changeGroup(lib.character[event.card][1],false);
} }
var link=result.control; var link=result.control;
player.storage.rehuashen.current2=link; player.storage.rehuashen.current2=link;
@ -12435,6 +12444,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
reyingzi:{ reyingzi:{
audio:2, audio:2,
audioname:['heqi','sunce','gexuan','re_sunben','re_sunce','re_heqi'], audioname:['heqi','sunce','gexuan','re_sunben','re_sunce','re_heqi'],
audioname2:{re_sunyi:'reyingzi_re_sunyi'},
trigger:{player:'phaseDrawBegin2'}, trigger:{player:'phaseDrawBegin2'},
forced:true, forced:true,
preHidden:true, preHidden:true,

View File

@ -32,7 +32,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sb_diaochan:['female','qun',3,['sblijian','sbbiyue']], sb_diaochan:['female','qun',3,['sblijian','sbbiyue']],
sb_yuanshao:['male','qun',4,['sbluanji','sbxueyi'],['zhu']], sb_yuanshao:['male','qun',4,['sbluanji','sbxueyi'],['zhu']],
sb_pangtong:['male','shu',3,['sblianhuan','sbniepan']], 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_daqiao:['female','wu',3,['sbguose','sbliuli']],
sb_liubiao:['male','qun',3,['sbzishou','sbzongshi']], sb_liubiao:['male','qun',3,['sbzishou','sbzongshi']],
sb_zhurong:['female','shu',4,['sblieren','sbjuxiang'],['unseen']], 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.awakenSkill('sbhunzi');
player.loseMaxHp(); player.loseMaxHp();
'step 1' 'step 1'
player.changeHujia(2,null,true); player.changeHujia(1,null,true);
'step 2' 'step 2'
player.draw(3); player.draw(2);
'step 3' 'step 3'
player.addSkillLog('sbyingzi'); player.addSkillLog('sbyingzi');
player.addSkillLog('gzyinghun'); player.addSkillLog('gzyinghun');
@ -348,7 +348,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
draw:{ draw:{
trigger:{global:'dieAfter'}, trigger:{global:'dieAfter'},
filter:function(event,player){ filter:function(event,player){
return event.getParent(4).name=='sbzhiba'; return event.getParent(3).name=='sbzhiba';
}, },
forced:true, forced:true,
charlotte: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; player.useCard({name:'lebu'},target,cards).audio=false;
} }
'step 1' 'step 1'
player.draw(); player.draw(2);
player.chooseToDiscard(true,'he','国色:请弃置一张牌'); player.chooseToDiscard(true,'he','国色:请弃置一张牌');
}, },
ai:{ ai:{
@ -725,6 +725,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(targets[i].hp==1){ if(targets[i].hp==1){
eff*=1.5; eff*=1.5;
} }
if(get.attitude(player,targets[i])==0||targets[i].group=='qun'){
eff+=0.5;
}
num+=eff; num+=eff;
} }
if(!player.needsToDiscard(-1)){ 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&&current.group=='qun'); return num+2*game.countPlayer(current=>player!=current&&current.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; var player=_status.event.player;
if(ui.selected.targets.length){ if(ui.selected.targets.length){
var current=ui.selected.targets[0]; var current=ui.selected.targets[0];
if(current.group=='shu'&&current.hp>=player.hp){ if(current.group=='shu'&&current.hp>=player.hp&&current!=player){
return -get.attitude(player,target); return -get.attitude(player,target);
} }
return Math.abs(get.attitude(player,current)); return Math.abs(get.attitude(player,current));
} }
else{ 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 get.attitude(player,current)<0;
})) return 10; })) return 10;
return 1; return 1;
@ -1630,7 +1640,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){ if(result.bool){
var targets=result.targets; var targets=result.targets;
event.targets=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.logSkill('sbjijiang',targets,false);
player.line2(targets); player.line2(targets);
var choiceList=[ var choiceList=[
@ -3442,7 +3452,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
sbjiuyuan:{ sbjiuyuan:{
audio:2, audio:2,
usable:1,
trigger:{global:'useCard'}, trigger:{global:'useCard'},
forced:true, forced:true,
zhuSkill:true, zhuSkill:true,
@ -4464,12 +4473,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sbjiang:'激昂', sbjiang:'激昂',
sbjiang_info:'①当你使用【决斗】或红色【杀】指定目标后或当你成为【决斗】或红色【杀】的目标后你摸一张牌。②当你使用【决斗】时你可以额外指定一名目标然后你失去1点体力。③出牌阶段限一次。你可以将所有手牌当【决斗】使用。', sbjiang_info:'①当你使用【决斗】或红色【杀】指定目标后或当你成为【决斗】或红色【杀】的目标后你摸一张牌。②当你使用【决斗】时你可以额外指定一名目标然后你失去1点体力。③出牌阶段限一次。你可以将所有手牌当【决斗】使用。',
sbhunzi:'魂姿', sbhunzi:'魂姿',
sbhunzi_info:'觉醒技。当你脱离濒死状态后你减1点体力上限获得2点护甲摸三张牌。然后你获得〖英姿〗和〖英魂〗。', sbhunzi_info:'觉醒技。当你脱离濒死状态后你减1点体力上限获得1点护甲摸两张牌。然后你获得〖英姿〗和〖英魂〗。',
sbzhiba:'制霸', sbzhiba:'制霸',
sbzhiba_info:'主公技限定技。当你进入濒死状态时你可以回复X点体力并修改〖激昂③〗为“出牌阶段限X次”X为场上其他吴势力角色数+1。然后其他吴势力角色依次受到1点无来源伤害且当有角色因此死亡后你摸三张牌。', sbzhiba_info:'主公技限定技。当你进入濒死状态时你可以回复X点体力并修改〖激昂③〗为“出牌阶段限X次”X为场上其他吴势力角色数+1。然后其他吴势力角色依次受到1点无来源伤害且当有角色因此死亡后你摸三张牌。',
sb_daqiao:'谋大乔', sb_daqiao:'谋大乔',
sbguose:'国色', sbguose:'国色',
sbguose_info:'出牌阶段限四次。你可以选择一项1.将一张♦牌当【乐不思蜀】使用2.弃置场上一张【乐不思蜀】。然后你摸张牌并弃置一张牌。', sbguose_info:'出牌阶段限四次。你可以选择一项1.将一张♦牌当【乐不思蜀】使用2.弃置场上一张【乐不思蜀】。然后你摸张牌并弃置一张牌。',
sbliuli:'流离', sbliuli:'流离',
sbliuli_info:'当你成为【杀】的目标时,你可以弃置一张牌并选择你攻击范围内的一名不为此【杀】使用者的角色,将此【杀】转移给该角色。若你以此法弃置了♥牌,则你可以令一名不为此【杀】使用者的其他角色获得“流离”标记,且移去场上所有其他的“流离”(每回合限一次)。有“流离”的角色回合开始时,其移去其“流离”并执行一个额外的出牌阶段。', sbliuli_info:'当你成为【杀】的目标时,你可以弃置一张牌并选择你攻击范围内的一名不为此【杀】使用者的角色,将此【杀】转移给该角色。若你以此法弃置了♥牌,则你可以令一名不为此【杀】使用者的其他角色获得“流离”标记,且移去场上所有其他的“流离”(每回合限一次)。有“流离”的角色回合开始时,其移去其“流离”并执行一个额外的出牌阶段。',
sb_liubiao:'谋刘表', sb_liubiao:'谋刘表',

View File

@ -4494,8 +4494,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.markSkill('huashen'); player.markSkill('huashen');
game.broadcastAll(function(character,player){ game.broadcastAll(function(character,player){
player.sex=lib.character[character][0]; player.sex=lib.character[character][0];
player.group=lib.character[character][1]; //player.group=lib.character[character][1];
player.node.name.dataset.nature=get.groupnature(player.group); //player.node.name.dataset.nature=get.groupnature(player.group);
var mark=player.marks.huashen; var mark=player.marks.huashen;
if(mark){ if(mark){
mark.style.transition='all 0.3s'; mark.style.transition='all 0.3s';
@ -4513,6 +4513,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},200); },200);
} }
},character,player); },character,player);
player.changeGroup(lib.character[character][1],false);
} }
player.storage.huashen.current2=skill; player.storage.huashen.current2=skill;
if(!player.additionalSkills.huashen||!player.additionalSkills.huashen.contains(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:{ gzyinghun:{
audio:'yinghun', audio:'yinghun',
audioname:['re_sunjian','sunce','re_sunben','re_sunce','ol_sunjian','sb_sunce'], audioname:['re_sunjian','sunce','re_sunben','re_sunce','ol_sunjian','sb_sunce'],
audioname2:{re_sunyi:'gzyinghun_re_sunyi'},
trigger:{player:'phaseZhunbeiBegin'}, trigger:{player:'phaseZhunbeiBegin'},
filter:function(event,player){ filter:function(event,player){
return player.getDamagedHp()>0; return player.getDamagedHp()>0;

View File

@ -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_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_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_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_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'],
sp_wanglang:['ol_wanglang'], sp_wanglang:['ol_wanglang'],
sp_zhongdan:["cuiyan","huangfusong"], sp_zhongdan:["cuiyan","huangfusong"],
@ -28,6 +28,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
character:{ character:{
ol_mengda:['male','shu',4,['olgoude']],
ol_wanglang:['male','wei',3,['gushe','oljici']], ol_wanglang:['male','wei',3,['gushe','oljici']],
ol_liuyan:['male','qun','4/6',['olpianan','olyinji','olkuisi'],['unseen']], ol_liuyan:['male','qun','4/6',['olpianan','olyinji','olkuisi'],['unseen']],
lushi:['female','qun',3,['olzhuyan','olleijie']], lushi:['female','qun',3,['olzhuyan','olleijie']],
@ -683,6 +684,208 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
skill:{ 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&&current!=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&&current!=player;
})-game.countPlayer(current=>{
return current.group==a&&current!=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&&current!=player;
})<=1&&lib.group.some(group=>{
return game.countPlayer(current=>{
return current.group==group&&current!=player;
})>2;
})) return 'zeroplayertarget';
},
},
},
},
//OL新改王朗 //OL新改王朗
oljici:{ oljici:{
audio:'jici', audio:'jici',
@ -8068,10 +8271,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{ ai:{
effect:{ effect:{
target:function(card,player,target){ 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){ 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){ check:function(card){
return 6-get.value(card); return 6-get.value(card);
}, },
position:'h', position:'hs',
onuse:function(result,player){ onuse:function(result,player){
player.addTempSkill('juguan_effect'); player.addTempSkill('juguan_effect');
}, },
@ -9006,7 +9209,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
backup:function(links,player){ backup:function(links,player){
return { return {
selectCard:player.countMark('jinzhi2')+1, 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:{ viewAs:{
name:links[0][2], name:links[0][2],
nature:links[0][3], nature:links[0][3],
@ -9055,7 +9264,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
prompt:function(links,player){ prompt:function(links,player){
var name=links[0][2]; var name=links[0][2];
var nature=links[0][3]; 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:{ ai:{
@ -22016,6 +22225,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yuantanyuanshang:['yuantanyuanshang','yuantanyuanxiyuanshang'], yuantanyuanshang:['yuantanyuanshang','yuantanyuanxiyuanshang'],
ruiji:['dc_ruiji','ruiji'], ruiji:['dc_ruiji','ruiji'],
jsp_huangyueying:['jsp_huangyueying','re_jsp_huangyueying'], jsp_huangyueying:['jsp_huangyueying','re_jsp_huangyueying'],
ganfuren:['dc_ganfuren','ganfuren'],
}, },
translate:{ translate:{
"xinfu_lingren":"凌人", "xinfu_lingren":"凌人",
@ -22097,7 +22307,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhugejin:'诸葛瑾', zhugejin:'诸葛瑾',
zhugeke:'诸葛恪', zhugeke:'诸葛恪',
guanyinping:'关银屏', guanyinping:'关银屏',
ganfuren:'甘夫人', ganfuren:'SP甘夫人',
sunhao:'孙皓', sunhao:'孙皓',
chengyu:'程昱', chengyu:'程昱',
simalang:'司马朗', simalang:'司马朗',
@ -22787,7 +22997,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
weiyi_info:'每名角色限一次。当有角色受到伤害后你可选择①若其体力值不小于你则其失去1点体力。②若其体力值不大于你且其已受伤则其回复1点体力。', weiyi_info:'每名角色限一次。当有角色受到伤害后你可选择①若其体力值不小于你则其失去1点体力。②若其体力值不大于你且其已受伤则其回复1点体力。',
jinzhi:'锦织', jinzhi:'锦织',
jinzhi2:'锦织', jinzhi2:'锦织',
jinzhi_info:'当你需要使用或打出一张基本牌时你可弃置X+1张牌并摸一张牌。若你以此法弃置的牌均为同一颜色,则视为你使用或打出了此牌。X为你于本轮内发动此技能的次数', jinzhi_info:'当你需要使用或打出一张基本牌时你可弃置X+1张颜色相同的牌并摸一张牌,然后视为你使用或打出了此牌。X为你于本轮内发动此技能的次数',
yanxiao_card:'言笑', yanxiao_card:'言笑',
yanxiao_global:'言笑', yanxiao_global:'言笑',
yanxiao_card_info:'判定阶段开始时,你获得判定区内的所有牌。', yanxiao_card_info:'判定阶段开始时,你获得判定区内的所有牌。',
@ -23094,6 +23304,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ol_wanglang:'OL王朗', ol_wanglang:'OL王朗',
oljici:'激词', oljici:'激词',
oljici_info:'当你的拼点牌亮出后若点数不大于X你可令点数+X并令〖鼓舌〗视为未发动过X为你的“饶舌”标记数。', oljici_info:'当你的拼点牌亮出后若点数不大于X你可令点数+X并令〖鼓舌〗视为未发动过X为你的“饶舌”标记数。',
ol_mengda:'OL孟达',
olgoude:'苟得',
olgoude_info:'一名角色的回合结束时若有与你势力相同的角色执行过以下项则你可以执行这些角色未执行过的一项1.摸一张牌2.弃置一名角色的一张手牌3.使用一张无对应实体牌的【杀】4.变更势力。',
sp_tianji:'天极·皇室宗亲', sp_tianji:'天极·皇室宗亲',
sp_sibi:'四弼·辅国文曲', sp_sibi:'四弼·辅国文曲',

View File

@ -5,8 +5,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true, connect:true,
character:{ character:{
ganfurenmifuren:['female','shu',3,['dcchanjuan','dcxunbie']], ganfurenmifuren:['female','shu',3,['dcchanjuan','dcxunbie']],
dc_ganfuren:['female','shu',3,['dcshushen','dcshenzhi'],['unseen']], dc_ganfuren:['female','shu',3,['dcshushen','dcshenzhi']],
dc_mifuren:['female','shu',3,['dcguixiu','dccunsi'],['unseen']], dc_mifuren:['female','shu',3,['dcguixiu','dccunsi']],
yue_caiwenji:['female','qun',3,['dcshuangjia','dcbeifen']], yue_caiwenji:['female','qun',3,['dcshuangjia','dcbeifen']],
wanglang:['male','wei',3,['regushe','rejici']], wanglang:['male','wei',3,['regushe','rejici']],
ruanji:['male','wei',3,['dczhaowen','dcjiudun']], 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']], xielingyu:['female','wu',3,['dcyuandi','dcxinyou']],
yuanyin:['male','qun',3,['dcmoshou','dcyunjiu'],['unseen']], yuanyin:['male','qun',3,['dcmoshou','dcyunjiu'],['unseen']],
dongwan:['female','qun',3,['dcshengdu','dcxianjiao'],['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']], peiyuanshao:['male','qun',4,['dcmoyu'],['unseen']],
mengjie:['male','qun',3,['dcyinlu','dcyouqi']], mengjie:['male','qun',3,['dcyinlu','dcyouqi']],
//dc_fuwan:['male','qun',4,['dcmoukui']], //dc_fuwan:['male','qun',4,['dcmoukui']],
@ -286,7 +286,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
filter:function(event,player){ filter:function(event,player){
if(event.targets.length!=1) return false; 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; if(event.getParent(2).name=='dcchanjuan') return false;
return !player.getStorage('dcchanjuan').contains(event.card.name); 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, nature:trigger.card.nature,
isCard:true, 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' 'step 1'
if(result.bool){ if(result.bool){
player.markAuto('dcchanjuan',[trigger.card.name]); player.markAuto('dcchanjuan',[trigger.card.name]);
var list1=trigger.targets.slice(),list2=result.targets.slice(); var list1=trigger.targets,list2=result.targets;
if(list1.removeArray(list2).length==0&&list2.removeArray(list1).length==0) player.draw(); if(list1.slice().removeArray(list2).length==0&&list2.slice().removeArray(list1).length==0) player.draw();
} }
}, },
ai:{ ai:{
@ -368,26 +368,52 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.reinit('ganfurenmifuren',character,false); player.reinit('ganfurenmifuren',character,false);
'step 2' 'step 2'
player.recover(1-player.hp); 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:{ dcguixiu:{
audio:2, audio:'guixiu',
trigger:{ trigger:{
player:'phaseBegin', player:'phaseBegin',
}, },
forced:true, forced:true,
onremove:true,
filter:function(event,player){ filter:function(event,player){
return !player.hasMark('dcguixiu'); return !player.hasMark('dcguixiu');
}, },
group:'dcguixiu_rec', group:'dcguixiu_rec',
content:function(){ content:function(){
player.addMark('dcguixiu',1,false); player.addMark('dcguixiu',1,false);
player.draw(); player.draw(2);
}, },
subSkill:{ subSkill:{
rec:{ rec:{
audio:'dcguixiu', audio:'guixiu',
trigger:{ trigger:{
player:'logSkillAfter', player:'logSkillAfter',
}, },
@ -402,12 +428,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
dccunsi:{ dccunsi:{
audio:2, audio:'cunsi',
enable:'phaseUse', enable:'phaseUse',
limited:true, limited:true,
skillAnimation:true, skillAnimation:true,
animationColor:'orange', animationColor:'orange',
filterTarget:true, filterTarget:true,
derivation:'dcyongjue',
content:function(){ content:function(){
'step 0' 'step 0'
player.awakenSkill('dccunsi'); player.awakenSkill('dccunsi');
@ -422,7 +449,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
dcyongjue:{ dcyongjue:{
audio:2, audio:'yongjue',
trigger:{ trigger:{
player:'useCard', player:'useCard',
}, },
@ -473,7 +500,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
//散装版甘夫人 //散装版甘夫人
dcshushen:{ dcshushen:{
audio:2, audio:'shushen',
trigger:{ trigger:{
player:'recoverEnd', player:'recoverEnd',
}, },
@ -499,7 +526,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
]; ];
if(target.isDamaged()) choices.unshift('选项一'); if(target.isDamaged()) choices.unshift('选项一');
else choiceList[0]='<span style="opacity:0.5">'+choiceList[0]+'</span>'; 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; return _status.event.choice;
}).set('choice',function(){ }).set('choice',function(){
if(target.hp<=2||get.recoverEffect(target,player,player)>20) return 0; 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:{ dcshenzhi:{
audio:2, audio:'shenzhi',
trigger:{ trigger:{
player:'phaseZhunbeiBegin', player:'phaseZhunbeiBegin',
}, },
@ -3216,7 +3243,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
} }
}, },
dcjucheng:{ dcrihui:{
audio:2, audio:2,
trigger:{player:'useCardAfter'}, trigger:{player:'useCardAfter'},
usable:1, 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}; var card={name:trigger.card.name,nature:trigger.card.nature,isCard:true};
event.target=target; event.target=target;
event.card=card; 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{ 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; return _status.event.bool;
}).set('bool',function(){ }).set('bool',function(){
var eff=0; var eff=0;
@ -3250,13 +3277,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
'step 1' 'step 1'
if(!result.bool){ if(!result.bool){
player.storage.counttrigger.dcjucheng--; player.storage.counttrigger.dcrihui--;
event.finish();
return; return;
} }
if(target.hasMark('dcjizhong')) event.finish(); if(target.hasMark('dcjizhong')) event.finish();
else{ else{
player.logSkill('dcjucheng',target); player.logSkill('dcrihui',target);
event.targets=game.filterPlayer(current=>current.hasMark('dcjizhong')); event.targets=game.filterPlayer(current=>current.hasMark('dcjizhong'));
event.targets.sortBySeat(_status.currentPhase);
} }
'step 2' 'step 2'
var current=event.targets.shift(); var current=event.targets.shift();
@ -7743,9 +7772,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
forced:true, forced:true,
filter:function(event,player){ filter:function(event,player){
if(player==_status.currentPhase) return false; if(player==_status.currentPhase) return false;
return !player.hasHistory('damage',evt=>{ return !event.nature&&!player.hasHistory('damage',evt=>{
return !evt.nature&&evt!=event; return !evt.nature&&evt!=event;
},event)||!player.hasHistory('damage',evt=>{ },event)||event.nature&&!player.hasHistory('damage',evt=>{
return evt.nature&&evt!=event; return evt.nature&&evt!=event;
},event)&&event.source&&event.source.isIn()&&event.source.countGainableCards(player,'h'); },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', group:'dcfuxue_draw',
subSkill:{ subSkill:{
draw:{ draw:{
audio:'dcfuxue',
trigger:{player:'phaseJieshuBegin'}, trigger:{player:'phaseJieshuBegin'},
forced:true, forced:true,
locked:false, locked:false,
@ -13643,7 +13673,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(evtx.getParent('phaseUse')!=evt) return false; if(evtx.getParent('phaseUse')!=evt) return false;
return !evtx.card.storage||!evtx.card.storage.tongli; return !evtx.card.storage||!evtx.card.storage.tongli;
}).length; }).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); if(event.card.name=='sha'&&event.card.nature) str+=get.translation(event.card.nature);
return (str+'【'+get.translation(event.card.name)+'】'); return (str+'【'+get.translation(event.card.name)+'】');
}, },
@ -17126,12 +17157,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return true; return true;
}, },
content:function(){ content:function(){
'step 0'
player.awakenSkill('syxiongyi'); player.awakenSkill('syxiongyi');
if(!_status.characterlist){ if(!_status.characterlist){
lib.skill.pingjian.initList(); lib.skill.pingjian.initList();
} }
var hp=1-player.hp; event.hp=1-player.hp;
if((player.name1=='re_sunyi'||player.name2=='re_sunyi')&&_status.characterlist.contains('xushi')){ 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; hp+=2;
_status.characterlist.remove('xushi'); _status.characterlist.remove('xushi');
_status.characterlist.add('re_sunyi'); _status.characterlist.add('re_sunyi');
@ -17139,7 +17176,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
else{ else{
player.addSkillLog('olhunzi'); 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); if(hp>0) player.recover(hp);
}, },
ai:{ ai:{
@ -17154,6 +17200,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
derivation:['olhunzi','reyingzi','gzyinghun'], derivation:['olhunzi','reyingzi','gzyinghun'],
}, },
gzyinghun_re_sunyi:{audio:1},
reyingzi_re_sunyi:{audio:1},
//庞德公 //庞德公
heqia:{ heqia:{
audio:2, audio:2,
@ -21786,6 +21834,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:'reyixiang_card', group:'reyixiang_card',
subSkill:{ subSkill:{
card:{ card:{
audio:'yixiang',
audioname:['re_taoqian'],
trigger:{target:'useCardToTargeted'}, trigger:{target:'useCardToTargeted'},
forced:true, forced:true,
filter:function(event,player){ filter:function(event,player){
@ -27376,10 +27426,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xpchijie:{ xpchijie:{
audio:2, audio:2,
trigger:{ trigger:{
player:'useCardToAfter', target:'useCardToAfter',
}, },
filter:function(event,player){ 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){ check:function(event,player){
var evt=event.getParent(); var evt=event.getParent();
@ -27391,7 +27449,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return num<-1; return num<-1;
}, },
content:function(){ content:function(){
player.addTempSkill('xpchijie4');
var evt=trigger.getParent(); var evt=trigger.getParent();
evt.excluded.addArray(evt.targets); evt.excluded.addArray(evt.targets);
}, },
@ -27401,17 +27458,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{global:'useCardAfter'}, trigger:{global:'useCardAfter'},
audio:'xpchijie', audio:'xpchijie',
filter:function(event,player){ 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 current.getHistory('damage',function(evt){
return evt.card==event.card; return evt.card==event.card;
}).length>0; }).length>0;
}); });
}, },
usable:1,
check:function(event,player){ check:function(event,player){
return get.value(event.cards.filterInD(),player,'raw')>0; return get.value(event.cards.filterInD(),player,'raw')>0;
}, },
prompt2:function(event,player){
return '获得'+get.translation(event.cards.filterInD())+'。';
},
content:function(){ content:function(){
player.addTempSkill('xpchijie4');
player.gain(trigger.cards.filterInD(),'log','gain2'); 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.storage.yinju2=target;
player.addTempSkill('yinju2'); 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:{ yinju2:{
trigger:{ trigger:{
@ -27456,6 +27532,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1' 'step 1'
game.delayx(); 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:{ gxlianhua:{
@ -28101,6 +28186,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
check:function(event,player){ check:function(event,player){
return get.value(event.cards)+player.maxHp*2-18>0; 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){ filter:function(event,player){
return player.isPhaseUsing()&&get.type(event.card)=='trick'&&event.cards.filterInD().length>0; 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":{ "xinfu_bijing":{
audio:2, audio:2,
group:["xinfu_bijing_lose","xinfu_bijing_discard"],
subSkill:{ subSkill:{
lose:{ lose:{
trigger:{ trigger:{
global:"phaseDiscardBegin", global:"phaseDiscardBegin",
}, },
audio:'xinfu_bijing', audio:'xinfu_bijing',
charlotte:true,
filter:function(event,player){ filter:function(event,player){
if(event.player==player) return false; if(event.player==player) return false;
return player.getHistory('lose',function(evt){ return player.getHistory('lose',function(evt){
@ -28446,6 +28534,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player:"phaseZhunbeiBegin", player:"phaseZhunbeiBegin",
}, },
forced:true, forced:true,
charlotte:true,
filter:function(event,player){ filter:function(event,player){
return player.getCards('h',function(card){ return player.getCards('h',function(card){
return card.hasGaintag('xinfu_bijing'); return card.hasGaintag('xinfu_bijing');
@ -28478,6 +28567,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){ if(result.bool){
player.logSkill('xinfu_bijing'); player.logSkill('xinfu_bijing');
player.addGaintag(result.cards,'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:'穆顺,小说《三国演义》中的人物,男,东汉末宦官。献帝欲修书与国舅伏完,共谋图曹公。因顺为宦官中之忠义可托者,乃命顺往送书。顺藏书于发中,潜出禁宫,径至完宅,将书呈上。及完回书付顺,顺乃藏于头髻内,辞完回宫。然公闻信,先于宫门等候,顺回遇公,公喝左右,遍搜身上,并无夹带,放行。忽然风吹落其帽。公又唤回,取帽视之,遍观无物,还帽令戴。顺双手倒戴其帽。公心疑,令左右搜其头发中,搜出伏完书来。公见书大怒,执下顺于密室问之,顺不肯招。当晚将顺、完等宗族二百余口,皆斩于市。', mushun:'穆顺,小说《三国演义》中的人物,男,东汉末宦官。献帝欲修书与国舅伏完,共谋图曹公。因顺为宦官中之忠义可托者,乃命顺往送书。顺藏书于发中,潜出禁宫,径至完宅,将书呈上。及完回书付顺,顺乃藏于头髻内,辞完回宫。然公闻信,先于宫门等候,顺回遇公,公喝左右,遍搜身上,并无夹带,放行。忽然风吹落其帽。公又唤回,取帽视之,遍观无物,还帽令戴。顺双手倒戴其帽。公心疑,令左右搜其头发中,搜出伏完书来。公见书大怒,执下顺于密室问之,顺不肯招。当晚将顺、完等宗族二百余口,皆斩于市。',
jsp_guanyu:'关羽,字云长。曾水淹七军、擒于禁、斩庞德、威震华夏,吓得曹操差点迁都躲避,但是东吴偷袭荆州,关羽兵败被害。后传说吕蒙因关羽之魂索命而死。', jsp_guanyu:'关羽,字云长。曾水淹七军、擒于禁、斩庞德、威震华夏,吓得曹操差点迁都躲避,但是东吴偷袭荆州,关羽兵败被害。后传说吕蒙因关羽之魂索命而死。',
ruanji:'阮籍公元210年263年字嗣宗陈留尉氏今河南省开封市三国时期魏国诗人、竹林七贤之一。阮瑀之子门荫入仕累迁步兵校尉世称阮步兵。崇奉老庄之学政治上则采取谨慎避祸的态度。景元四年公元263年阮籍去世享年五十三岁。作为“正始之音”的代表著有《咏怀八十二首》、《大人先生传》等其著作收录在《阮籍集》中。', ruanji:'阮籍公元210年263年字嗣宗陈留尉氏今河南省开封市三国时期魏国诗人、竹林七贤之一。阮瑀之子门荫入仕累迁步兵校尉世称阮步兵。崇奉老庄之学政治上则采取谨慎避祸的态度。景元四年公元263年阮籍去世享年五十三岁。作为“正始之音”的代表著有《咏怀八十二首》、《大人先生传》等其著作收录在《阮籍集》中。',
ganfurenmifuren:'甘夫人,刘备起兵后于沛城娶之为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月刘备病死于白帝城追谥甘夫人为“昭烈皇后”。<br>刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。' ganfurenmifuren:'甘夫人,刘备起兵后于沛城娶之为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月刘备病死于白帝城追谥甘夫人为“昭烈皇后”。<br>糜夫人,刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。'
}, },
characterTitle:{ characterTitle:{
// wulan:'#b对决限定武将', // wulan:'#b对决限定武将',
@ -29585,7 +29676,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
duanwei:['duanwei','junk_duanwei'], duanwei:['duanwei','junk_duanwei'],
xushao:['xushao','jsrg_xushao'], xushao:['xushao','jsrg_xushao'],
huban:['dc_huban','ol_huban'], huban:['dc_huban','ol_huban'],
mengda:['dc_mengda','pe_mengda'], mengda:['dc_mengda','ol_mengda','pe_mengda'],
jsp_guanyu:['dc_jsp_guanyu','jsp_guanyu'], jsp_guanyu:['dc_jsp_guanyu','jsp_guanyu'],
mushun:['mushun','sp_mushun'], mushun:['mushun','sp_mushun'],
}, },
@ -29626,7 +29717,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"xinfu_tunan":"图南", "xinfu_tunan":"图南",
"xinfu_tunan_info":"出牌阶段限一次,你可以展示牌堆顶的一张牌并选择一名其他角色,然后该角色选择一项:使用此牌(无距离限制);或将此牌当普通【杀】使用。", "xinfu_tunan_info":"出牌阶段限一次,你可以展示牌堆顶的一张牌并选择一名其他角色,然后该角色选择一项:使用此牌(无距离限制);或将此牌当普通【杀】使用。",
"xinfu_bijing":"闭境", "xinfu_bijing":"闭境",
"xinfu_bijing_info":"结束阶段,你可以选择至多两张手牌并标记为“闭境”。②其他角色的弃牌阶段开始时,若你于本回合内失去过“闭境”,其弃置两张牌。③准备阶段,你重铸所有“闭境”牌。", "xinfu_bijing_info":"结束阶段,你可以选择至多两张手牌并标记为“闭境”然后你获得如下效果1.其他角色的弃牌阶段开始时,若你于本回合内失去过“闭境”,其弃置两张牌2.准备阶段,你重铸所有“闭境”牌。",
"xinfu_zhenxing":"镇行", "xinfu_zhenxing":"镇行",
"xinfu_zhenxing_info":"结束阶段开始时或当你受到伤害后,你可以观看牌堆顶的至多三张牌,然后你获得其中与其余牌花色均不相同的一张牌。", "xinfu_zhenxing_info":"结束阶段开始时或当你受到伤害后,你可以观看牌堆顶的至多三张牌,然后你获得其中与其余牌花色均不相同的一张牌。",
"xinfu_qianxin":"遣信", "xinfu_qianxin":"遣信",
@ -29725,7 +29816,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lskuizhu:'馈珠', lskuizhu:'馈珠',
lskuizhu_info:'出牌阶段结束时你可以选择体力值为全场最多的一名其他角色将手牌摸至与该角色相同最多摸至五张然后该角色观看你的手牌弃置任意张手牌并从观看的牌中获得等量的牌。若其获得的牌大于一张则你选择一项移去一个“珠”或令其对其攻击范围内的一名角色造成1点伤害。', lskuizhu_info:'出牌阶段结束时你可以选择体力值为全场最多的一名其他角色将手牌摸至与该角色相同最多摸至五张然后该角色观看你的手牌弃置任意张手牌并从观看的牌中获得等量的牌。若其获得的牌大于一张则你选择一项移去一个“珠”或令其对其攻击范围内的一名角色造成1点伤害。',
xpchijie:'持节', xpchijie:'持节',
xpchijie_info:'每回合限一次。①当你其他角色使用的牌对你结算结束后,你可以令此牌对所有后续目标无效。②其他角色使用的牌结算完成时,若你是此牌的目标之一且此牌未造成过伤害,则你可以获得此牌对应的所有实体牌。', xpchijie_info:'每回合每项各限一次。1.当其他角色使用的牌对你结算结束后你可以令此牌对所有后续目标无效。2.其他角色使用的牌结算完成时,若你是此牌的目标之一且此牌未造成过伤害,则你可以获得此牌对应的所有实体牌。',
xpchijie2:'持节', xpchijie2:'持节',
yinju:'引裾', yinju:'引裾',
yinju_info:'限定技,出牌阶段,你可以选择一名其他角色。若如此做,当你于此阶段内使用牌指定其为目标后,你与其各摸一张牌;当你即将对其造成伤害时,防止此伤害,然后其回复等量的体力。', yinju_info:'限定技,出牌阶段,你可以选择一名其他角色。若如此做,当你于此阶段内使用牌指定其为目标后,你与其各摸一张牌;当你即将对其造成伤害时,防止此伤害,然后其回复等量的体力。',
@ -30230,7 +30321,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
syjiqiao:'激峭', syjiqiao:'激峭',
syjiqiao_info:'出牌阶段开始时你可将牌堆顶的X张牌置于你的武将牌上X为你的体力上限。当你于此出牌阶段内使用的牌结算结束后你可以获得其中的一张牌然后若剩余牌中红色牌和黑色牌的数量不相等你失去1点体力相等你回复1点体力。出牌阶段结束时你将这些牌置入弃牌堆。', syjiqiao_info:'出牌阶段开始时你可将牌堆顶的X张牌置于你的武将牌上X为你的体力上限。当你于此出牌阶段内使用的牌结算结束后你可以获得其中的一张牌然后若剩余牌中红色牌和黑色牌的数量不相等你失去1点体力相等你回复1点体力。出牌阶段结束时你将这些牌置入弃牌堆。',
syxiongyi:'凶疑', syxiongyi:'凶疑',
syxiongyi_info:'限定技。当你处于濒死状态时,若剩余武将牌堆中:有“徐氏”,则你将体力值回复至3点并将此武将牌替换为“徐氏”没有“徐氏”则你将体力值回复至1点并获得〖魂姿〗。', syxiongyi_info:'限定技。当你处于濒死状态时,若剩余武将牌堆中:有“徐氏”,则你可以将体力值回复至3点并将此武将牌替换为“徐氏”没有“徐氏”则你可以将体力值回复至1点并获得〖魂姿〗。',
zhaoyan:'赵嫣', zhaoyan:'赵嫣',
jinhui:'锦绘', jinhui:'锦绘',
jinhui_info:'出牌阶段限一次,你可以随机展示牌堆中的三张不具有“伤害”标签且使用目标范围为“自己”或“一名角色”的牌,然后选择一名其他角色。该角色选择并按如下“锦绘”规则使用其中一张,然后你可以按如下“锦绘”规则使用剩余的任意张牌:若此牌的使用目标为“自己”,则对自己使用该牌,否则对对方使用该牌(无距离限制且不计入次数限制)。', jinhui_info:'出牌阶段限一次,你可以随机展示牌堆中的三张不具有“伤害”标签且使用目标范围为“自己”或“一名角色”的牌,然后选择一名其他角色。该角色选择并按如下“锦绘”规则使用其中一张,然后你可以按如下“锦绘”规则使用剩余的任意张牌:若此牌的使用目标为“自己”,则对自己使用该牌,否则对对方使用该牌(无距离限制且不计入次数限制)。',
@ -30366,7 +30457,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcmingfa_info:'①出牌阶段限一次。当你使用【杀】或普通锦囊牌结算结束后若你的武将牌上没有“明伐”牌则你可以将此牌作为“明伐”牌置于武将牌上并选择一名其他角色记录该角色和此牌的名称。②一名角色的回合结束时若其是你〖明伐①〗记录的角色则你视为对其依次使用X张〖明伐①〗记录的牌然后移去“明伐”牌X为其手牌数且至少为1至多为5。③一名角色死亡时若其是你〖明伐①〗记录的角色则你移去“明伐”牌。', dcmingfa_info:'①出牌阶段限一次。当你使用【杀】或普通锦囊牌结算结束后若你的武将牌上没有“明伐”牌则你可以将此牌作为“明伐”牌置于武将牌上并选择一名其他角色记录该角色和此牌的名称。②一名角色的回合结束时若其是你〖明伐①〗记录的角色则你视为对其依次使用X张〖明伐①〗记录的牌然后移去“明伐”牌X为其手牌数且至少为1至多为5。③一名角色死亡时若其是你〖明伐①〗记录的角色则你移去“明伐”牌。',
zhangxuan:'张嫙', zhangxuan:'张嫙',
tongli:'同礼', tongli:'同礼',
tongli_info:'当你于出牌阶段内不因〖同礼〗而使用基本牌或普通锦囊牌指定第一个目标后若你手牌中的花色数和你于本阶段内不因〖同礼〗而使用过的牌数相等则你可以于此牌结算结束后依次视为对此牌的所有目标使用X张名称和属性相同的牌X为你手牌中的花色数。', //tongli_info:'当你于出牌阶段内不因〖同礼〗而使用基本牌或普通锦囊牌指定第一个目标后若你手牌中的花色数和你于本阶段内不因〖同礼〗而使用过的牌数相等则你可以于此牌结算结束后依次视为对此牌的所有目标使用X张名称和属性相同的牌X为你手牌中的花色数。',
tongli_info:'当你于出牌阶段内使用基本牌或普通锦囊牌指定第一个目标后若你手牌中的花色数和你于本阶段内使用过的牌数相等则你可以令此牌额外结算X次X为你手牌中的花色数。',
shezang:'奢葬', shezang:'奢葬',
shezang_info:'每轮限一次。当你或你回合内的其他角色进入濒死状态时,你可以从牌堆中获得每种花色的牌各一张。', shezang_info:'每轮限一次。当你或你回合内的其他角色进入濒死状态时,你可以从牌堆中获得每种花色的牌各一张。',
qinyilu:'秦宜禄', qinyilu:'秦宜禄',
@ -30763,8 +30855,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhangchu:'张楚', zhangchu:'张楚',
dcjizhong:'集众', dcjizhong:'集众',
dcjizhong_info:'出牌阶段限一次。你可以令一名其他角色摸两张牌然后其选择一项1.若其没有“信众”标记其获得“信众”标记2.弃置三张手牌。', dcjizhong_info:'出牌阶段限一次。你可以令一名其他角色摸两张牌然后其选择一项1.若其没有“信众”标记其获得“信众”标记2.弃置三张手牌。',
dcjucheng:'聚逞', dcrihui:'日慧',
dcjucheng_info:'每回合限一次。当你使用普通锦囊牌或黑色基本牌结算结束后若此牌的目标数为1且目标不为你且其没有“信众”所有有“信众”的角色依次视为对其使用一张与此牌牌名和属性相同的牌;有“信众”,你可以获得其区域里的一张牌。', dcrihui_info:'每回合限一次。当你使用普通锦囊牌或黑色基本牌结算结束后若此牌的目标数为1且目标不为你且其没有“信众”所有有“信众”的角色依次视为对其使用一张与此牌牌名和属性相同的牌;有“信众”,你可以获得其区域里的一张牌。',
dcguangshi:'光噬', dcguangshi:'光噬',
dcguangshi_info:'锁定技。准备阶段若所有其他角色均有“信众”你失去1点体力并摸两张牌。', dcguangshi_info:'锁定技。准备阶段若所有其他角色均有“信众”你失去1点体力并摸两张牌。',
dongwan:'董绾', dongwan:'董绾',

View File

@ -314,6 +314,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
else{ else{
if(lib.filter.canBeDiscarded(card,target,player)){ if(lib.filter.canBeDiscarded(card,target,player)){
target.discard(card,'notBySelf'); target.discard(card,'notBySelf');
target.draw();
} }
} }
} }
@ -405,9 +406,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
direct:true, direct:true,
content:function(){ content:function(){
'step 0' 'step 0'
var count=game.countPlayer(current=>{ var count=get.cnNumber(game.countPlayer(current=>{
return get.distance(player,current)<=1; return get.distance(player,current)<=1;
}); }));
player.chooseTarget(get.prompt('twzhiqu'),'选择一名其他角色并视为使用牌堆顶'+count+'张牌中的【杀】。若你与其均在对方的攻击范围内,你改为依次对其使用牌堆顶'+count+'张牌中的【杀】或锦囊牌。',lib.filter.notMe).set('ai',target=>{ player.chooseTarget(get.prompt('twzhiqu'),'选择一名其他角色并视为使用牌堆顶'+count+'张牌中的【杀】。若你与其均在对方的攻击范围内,你改为依次对其使用牌堆顶'+count+'张牌中的【杀】或锦囊牌。',lib.filter.notMe).set('ai',target=>{
var player=_status.event.player; var player=_status.event.player;
return get.effect(target,{name:'sha'},player,player)*(get.distance(player,target)==1?2:1); 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' 'step 2'
if(player.isIn()&&target.isIn()&&cards.length){ if(player.isIn()&&target.isIn()&&cards.length){
do var card=cards.shift(); do var card=cards.shift();
while(get.name(card)=='sha'||event.fight&&get.type2(card)=='trick'); while(get.name(card)!='sha'&&(!event.fight||get.type2(card)!='trick')&&cards.length);
if(!card) return; if(get.name(card)!='sha'&&(!event.fight||get.type2(card)!='trick')) return;
player.chooseUseTarget(card,true,false,'nodistance').set('filterTarget',function(card,player,target){ player.chooseUseTarget(card,true,false,'nodistance').set('filterTarget',function(card,player,target){
var evt=_status.event; var evt=_status.event;
if(_status.event.name=='chooseTarget') evt=evt.getParent(); 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){ filter:function(event,player){
if(!player.isPhaseUsing()) return false; if(!player.isPhaseUsing()) return false;
if(player==event.player) 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'); return event.card.name=='sha'||get.type(event.card)=='trick'&&get.tag(event.card,'damage');
}, },
logTarget:'player', 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(){ content:function(){
'step 0' 'step 0'
var target=trigger.player; var target=trigger.player;
@ -461,7 +480,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var att=get.attitude(target,player); var att=get.attitude(target,player);
if(att==0) return 0; if(att==0) return 0;
if(player.hasSkill('twzhiqu')){ 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(cnt>=2){
if(att<0) return 1; if(att<0) return 1;
return 0; return 0;
@ -478,38 +497,60 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.index==0){ if(result.index==0){
target.draw(); target.draw();
player.addTempSkill('twxianfeng_me',{player:'phaseBegin'}); player.addTempSkill('twxianfeng_me',{player:'phaseBegin'});
player.addMark('twxianfeng_me',1,false);
} }
else{ else{
player.draw(); player.draw();
target.addTempSkill('twxianfeng_others'); target.addSkill('twxianfeng_others');
target.markAuto('twxianfeng_others',[player]); 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:{ subSkill:{
me:{ me:{
charlotte:true, charlotte:true,
mark:true, mark:true,
intro:{content:'至其他角色的距离-1'}, intro:{content:'至其他角色的距离-#'},
mod:{ mod:{
globalFrom:function(from,to,distance){ globalFrom:function(from,to,distance){
return distance-1; return distance-from.countMark('twxianfeng_me');
} }
} }
}, },
others:{ others:{
trigger:{global:['phaseBegin','die']}, trigger:{global:['phaseBegin','die']},
filter:function(event,player){ 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, charlotte:true,
mark: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(){ 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:{ mod:{
globalFrom:function(from,to,distance){ 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 '选项一'; return '选项一';
}).set('list',list); }).set('list',list);
'step 1' 'step 1'
if(result.control=='背水!'&&player!=trigger.player) player.give(player.getCards('h'),trigger.player); event.choice=result.control;
if(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){ var card=get.cardPile2(function(card){
return card.name=='sha'; return card.name=='sha';
}); });
if(card) trigger.player.gain(card,'gain2'); if(card) trigger.player.gain(card,'gain2');
else game.log('但牌堆里已经没有','#y杀','了!'); 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({ if(trigger.player.countCards('h')) trigger.player.chooseCardTarget({
prompt:'将一张手牌交给另一名其他角色并摸两张牌', prompt:'将一张手牌交给另一名其他角色并摸两张牌',
filterCard:true, filterCard:true,
@ -2196,7 +2240,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}); });
else event.finish(); else event.finish();
} }
'step 2' 'step 4'
var target=result.targets[0]; var target=result.targets[0];
trigger.player.line(target); trigger.player.line(target);
trigger.player.give(result.cards,target); trigger.player.give(result.cards,target);
@ -4312,7 +4356,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
preHidden:true, preHidden:true,
content:function(){ content:function(){
'step 0' '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的角色使用一张【杀】没赢其可以视为对你使用一张【杀】'; var str='与一名角色拼点若你你可以视为对至多两名至其的距离不大于1的角色使用一张【杀】没赢其可以视为对你使用一张【杀】';
player.chooseTarget(forced?'双刃:选择一名角色':get.prompt('twshuangren'),str,forced,(card,player,target)=>{ player.chooseTarget(forced?'双刃:选择一名角色':get.prompt('twshuangren'),str,forced,(card,player,target)=>{
return player.canCompare(target); return player.canCompare(target);
@ -6664,7 +6710,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
logTarget:'player', logTarget:'player',
content:function(){ content:function(){
trigger.cancel(); 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;
}, },
}, },
//桥蕤 //桥蕤

View File

@ -836,21 +836,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
}, },
"xinfu_guanwei":{ xinfu_guanwei:{
audio:2, audio:2,
usable:1, usable:1,
trigger:{ trigger:{
global:"phaseUseEnd", global:"phaseUseEnd",
}, },
filter:function (event,player){ filter:function (event,player){
var history=event.player.getHistory('useCard',function(evt){ var history=event.player.getHistory('useCard');
return evt.getParent('phaseUse')==event;
});
var num=0; var num=0;
var suit=false; var suit=false;
for(var i=0;i<history.length;i++){ for(var i=0;i<history.length;i++){
var suit2=get.suit(history[i].card); var suit2=get.suit(history[i].card);
if(!suit2) continue; if(!lib.suit.contains(suit2)) return false;
if(suit&&suit!=suit2) return false; if(suit&&suit!=suit2) return false;
suit=suit2; suit=suit2;
num++; num++;
@ -858,17 +856,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return num>1; return num>1;
}, },
direct:true, direct:true,
global:'xinfu_guanwei_ai',
content:function (){ content:function (){
'step 0' 'step 0'
var target=trigger.player;
player.chooseToDiscard('he',get.prompt('xinfu_guanwei',trigger.player),'弃置一张牌,令其摸两张牌并进行一个额外的出牌阶段。').set('ai',function(card){ 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); return 9-get.value(card);
}).set('logSkill','xinfu_guanwei'); }).set('logSkill',['xinfu_guanwei',target]).set('targetx',target);
'step 1' 'step 1'
if(result.bool){ if(result.bool){
player.line(trigger.player,'green'); player.line(trigger.player,'green');
trigger.player.draw(2); trigger.player.draw(2);
}else{ }
else{
player.storage.counttrigger.xinfu_guanwei--;
event.finish(); event.finish();
} }
'step 2' 'step 2'
@ -879,6 +881,47 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{ ai:{
expose:0.5, 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&&current.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_gz_panjun:{audio:2},
"xinfu_gongqing":{ "xinfu_gongqing":{
@ -1537,7 +1580,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"xinfu_zengdao2":"赠刀", "xinfu_zengdao2":"赠刀",
"xinfu_zengdao2_info":"", "xinfu_zengdao2_info":"",
"xinfu_guanwei":"观微", "xinfu_guanwei":"观微",
"xinfu_guanwei_info":"每回合限一次。一名角色的出牌阶段结束时,若其于出牌阶段内使用过两张以上的牌且花色均相同,则你可以弃置一张牌,令其摸两张牌并进行一个额外的出牌阶段。", "xinfu_guanwei_info":"每回合限一次。一名角色的出牌阶段结束时,若其本回合使用过两张以上的牌且这些牌均有花色且花色均相同,则你可以弃置一张牌,令其摸两张牌并进行一个额外的出牌阶段。",
"xinfu_gongqing":"公清", "xinfu_gongqing":"公清",
"xinfu_gongqing_info":"锁定技。当你受到伤害时,若伤害来源的攻击范围:<3则你令此伤害的数值减为1。>3你令此伤害+1。", "xinfu_gongqing_info":"锁定技。当你受到伤害时,若伤害来源的攻击范围:<3则你令此伤害的数值减为1。>3你令此伤害+1。",
"xinfu_andong":"安东", "xinfu_andong":"安东",

View File

@ -10632,6 +10632,21 @@
emptyEvent:function(){ emptyEvent:function(){
event.trigger(event.name); 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(){ chooseToDebate:function(){
'step 0' 'step 0'
event.targets=event.list.filter(function(i){ event.targets=event.list.filter(function(i){
@ -18385,16 +18400,23 @@
return this.maxHp-Math.max(0,this.hp); return this.maxHp-Math.max(0,this.hp);
}, },
changeGroup:function(group,log,broadcast){ changeGroup:function(group,log,broadcast){
var player=this; var next=game.createEvent('changeGroup');
if(broadcast!==false){ next.player=this;
game.broadcast(function(player,group){ next.log=true;
player.group=group; for(var i=0;i<arguments.length;i++){
player.node.name.dataset.nature=get.groupnature(group); var arg=arguments[i];
},player,group); 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; next.setContent('changeGroup');
player.node.name.dataset.nature=get.groupnature(group); return next;
if(log!==false) game.log(this,'将势力变为了','#y'+get.translation(group+2));
}, },
chooseToDuiben:function(target){ chooseToDuiben:function(target){
var next=game.createEvent('chooseToDuiben'); var next=game.createEvent('chooseToDuiben');
@ -30264,7 +30286,7 @@
} }
player.playerid=i; player.playerid=i;
player.nickname=info.nickname; player.nickname=info.nickname;
player.changeGroup(info.group,false,false); player.changeGroup(info.group,false,'nobroadcast');
player.identity=info.identity; player.identity=info.identity;
player.identityShown=info.identityShown; player.identityShown=info.identityShown;
player.hp=info.hp; player.hp=info.hp;
@ -47710,10 +47732,10 @@
for(var i of game.connectPlayers){ for(var i of game.connectPlayers){
if(!i.nickname&&!i.classList.contains('unselectable2')) num++; if(!i.nickname&&!i.classList.contains('unselectable2')) num++;
} }
if(num>=lib.configOL.number-1){ // if(num>=lib.configOL.number-1){
alert('至少要有两名玩家才能开始游戏!'); // alert('至少要有两名玩家才能开始游戏!');
return; // return;
} // }
game.resume(); game.resume();
} }
button.delete(); button.delete();

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -1096,8 +1096,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
} }
"step 3" "step 3"
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
_status.characterlist.remove(get.sourceCharacter(game.players[i].name1)); _status.characterlist.remove(game.players[i].name1);
_status.characterlist.remove(get.sourceCharacter(game.players[i].name2)); _status.characterlist.remove(game.players[i].name2);
} }
setTimeout(function(){ setTimeout(function(){
ui.arena.classList.remove('choose-character'); ui.arena.classList.remove('choose-character');
@ -2259,9 +2259,15 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}, },
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('h',2,'是否发动【飞扬】,弃置两张手牌并弃置自己判定区的一张牌?').set('logSkill','feiyang').ai=function(card){ player.chooseToDiscard('h',2,get.prompt('feiyang'),'弃置两张手牌,然后弃置判定区里的一张牌').set('logSkill','feiyang').set('ai',function(card){
return 6-get.value(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" "step 1"
if(result.bool){ if(result.bool){
player.discardPlayerCard(player,'j',true); player.discardPlayerCard(player,'j',true);