Merge branch 'libccy:PR-Branch' into PR-Branch
This commit is contained in:
commit
bf48a05fb7
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.
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.
Binary file not shown.
|
@ -718,11 +718,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
event.finish();
|
||||
return;
|
||||
}
|
||||
if(get.is.versus()){
|
||||
if(card.storage&&card.storage.chooseDirection||get.is.versus()){
|
||||
player.chooseControl('顺时针','逆时针',function(event,player){
|
||||
if(player.next.side==player.side) return '逆时针';
|
||||
if(get.event('isVersus')&&player.next.side==player.side||get.attitude(player,player.next)>get.attitude(player,player.previous)) return '逆时针';
|
||||
return '顺时针';
|
||||
}).set('prompt','选择'+get.translation(card)+'的结算方向');
|
||||
}).set('prompt','选择'+get.translation(card)+'的结算方向').set('isVersus',get.is.versus());
|
||||
}
|
||||
else{
|
||||
event.goto(2);
|
||||
|
@ -1168,26 +1168,21 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
else{
|
||||
var next=event.turn.chooseToRespond({name:'sha'});
|
||||
if(event.shaRequired>1){
|
||||
next.set('prompt2','共需打出'+event.shaRequired+'张杀')
|
||||
}
|
||||
if(event.shaRequired>1) next.set('prompt2','共需打出'+event.shaRequired+'张杀');
|
||||
next.set('ai',function(card){
|
||||
var event=_status.event;
|
||||
var player=event.splayer;
|
||||
var target=event.starget;
|
||||
if(player.hasSkillTag('notricksource')) return 0;
|
||||
if(target.hasSkillTag('notrick')) return 0;
|
||||
let event=_status.event,player=event.splayer,target=event.starget;
|
||||
if(player.hasSkillTag('notricksource')||target.hasSkillTag('notrick')) return 0;
|
||||
if(event.shaRequired>1&&player.countCards('h','sha')<event.shaRequired) return 0;
|
||||
if(event.player==target){
|
||||
if(player.hasSkill('naman')) return -1;
|
||||
if(get.attitude(target,player)<0||event.player.hp<=1&&get.damageEffect(target,player,event.player)<get.damageEffect(player,target,event.player)){
|
||||
if(event.player===target){
|
||||
if(_status.event.tdamage>=0||player.hasSkill('naman')) return -1;
|
||||
if(get.attitude(target,player)<=0||event.player.hp<=1&&_status.event.tdamage<_status.event.pdamage){
|
||||
return get.order(card);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
else{
|
||||
if(target.hasSkill('naman')) return -1;
|
||||
if(get.attitude(player,target)<0||event.player.hp<=1&&get.damageEffect(target,player,event.player)>get.damageEffect(player,target,event.player)){
|
||||
if(_status.event.pdamage>=0||target.hasSkill('naman')) return -1;
|
||||
if(get.attitude(player,target)<=0||event.player.hp<=1&&_status.event.tdamage>_status.event.pdamage){
|
||||
return get.order(card);
|
||||
}
|
||||
return -1;
|
||||
|
@ -1195,6 +1190,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
next.set('splayer',player);
|
||||
next.set('starget',target);
|
||||
next.set('pdamage',get.damageEffect(player,target,event.turn));
|
||||
next.set('tdamage',get.damageEffect(target,player,event.turn));
|
||||
next.set('shaRequired',event.shaRequired);
|
||||
next.autochoose=lib.filter.autoRespondSha;
|
||||
if(event.turn==target){
|
||||
|
|
1475
character/ddd.js
1475
character/ddd.js
File diff suppressed because it is too large
Load Diff
|
@ -6379,7 +6379,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
group:["nzry_jieying_1","nzry_jieying_2"],
|
||||
subSkill:{
|
||||
'1':{
|
||||
audio:2,
|
||||
audio:'nzry_jieying',
|
||||
trigger:{
|
||||
player:['linkBefore','enterGame'],
|
||||
global:'phaseBefore',
|
||||
|
@ -6395,7 +6395,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
'2':{
|
||||
audio:2,
|
||||
audio:'nzry_jieying',
|
||||
trigger:{
|
||||
player:'phaseJieshuBegin',
|
||||
},
|
||||
|
|
|
@ -5407,6 +5407,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
subSkill:{
|
||||
gain:{
|
||||
audio:'dcliuzhuan',
|
||||
trigger:{global:['loseAfter','loseAsyncAfter','cardsDiscardAfter']},
|
||||
forced:true,
|
||||
logTarget:()=>_status.currentPhase,
|
||||
|
|
|
@ -972,32 +972,95 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filterTarget:lib.filter.notMe,
|
||||
// filterTarget:lib.filter.notMe,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.damage('nosource');
|
||||
target.damage('unreal');
|
||||
'step 1'
|
||||
if(game.countPlayer()<2) event.finish();
|
||||
if(game.countPlayer()==2) event._result={bool:true,targets:[game.findPlayer(i=>i!=player),player]};
|
||||
else player.chooseTarget(`慧夭:请选择两名角色`,`令不为你的第一名角色视为对第二名角色造成过1点伤害。`,(card,player,target)=>{
|
||||
if(!ui.selected.targets.length) return player!=target;
|
||||
return true;
|
||||
},2,true).set('multitarget',true).set('targetprompt',['伤害来源','受伤角色']).set('ai',target=>{
|
||||
return target==get.event('aiTargets')[ui.selected.targets.length]?10:0;
|
||||
}).set('aiTargets',lib.skill.mbhuiyao.getUnrealDamageTargets(player,[game.filterPlayer(i=>i!=player),game.filterPlayer()],true));
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
var targets=result.targets;
|
||||
player.line2(targets,'green');
|
||||
game.delaye();
|
||||
targets[1].damage(targets[0],'unreal');
|
||||
}
|
||||
},
|
||||
getUnrealDamageTargets:(player,lists,forced)=>{
|
||||
const targets=[null,null];
|
||||
let sourceList,targetList;
|
||||
if(lists.length==2&&lists.every(l=>Array.isArray(l))){
|
||||
sourceList=lists[0]; targetList=lists[1];
|
||||
}
|
||||
else{
|
||||
sourceList=lists.slice(); targetList=lists.slice();
|
||||
}
|
||||
const list=targetList.map(current=>{
|
||||
const _hp=current.hp,_maxhp=current.maxHp;
|
||||
current.hp=100; current.maxHp=100;
|
||||
const att=-get.sgnAttitude(player,current);
|
||||
let val=get.damageEffect(current,player,current)*att;
|
||||
current.getSkills(null,false,false).forEach(skill=>{
|
||||
const info=get.info(skill);
|
||||
if(info&&info.ai&&(info.ai.maixie||info.ai.maixie_hp||info.ai.maixie_defend)) val=Math[val>0?'max':'min'](val>0?0.1:-0.1,val+2*att);
|
||||
});
|
||||
const eff=100/val+15;
|
||||
current.hp=_hp; current.maxHp=_maxhp;
|
||||
return [current,eff];
|
||||
}).sort((a,b)=>b[1]-a[1])[0];
|
||||
if(list[1]<0&&!forced) return targets;
|
||||
const targetx=list[0];
|
||||
targets[1]=targetx;
|
||||
const list2=sourceList.filter(i=>i!=targetx).map(current=>{
|
||||
const _hp=targetx.hp,_maxhp=targetx.maxHp;
|
||||
targetx.hp=100; targetx.maxHp=100;
|
||||
const att=-get.sgnAttitude(player,current);
|
||||
const eff=get.damageEffect(targetx,current,current)*att;
|
||||
targetx.hp=_hp; targetx.maxHp=_maxhp;
|
||||
return [current,eff];
|
||||
}).sort((a,b)=>b[1]-a[1])[0];
|
||||
if(!list2) return targets;
|
||||
targets[0]=list2[0];
|
||||
return targets;
|
||||
},
|
||||
ai:{
|
||||
order:6,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
if(player.getHp()+player.countCards('hs',card=>player.canSaveCard(card,player))<1) return 0;
|
||||
var _hp=target.hp,_maxhp=target.maxHp;
|
||||
target.hp=10; target.maxHp=10;
|
||||
var att=-get.sgnAttitude(player,target);
|
||||
var val=get.damageEffect(target,player,target)*att;
|
||||
target.getSkills(null,false,false).forEach(skill=>{
|
||||
var info=get.info(skill);
|
||||
if(info&&info.ai&&(info.ai.maixie||info.ai.maixie_hp||info.ai.maixie_defend)) val=Math[val>0?'max':'min'](val>0?0.1:-0.1,val+2*att);
|
||||
});
|
||||
var eff=100/val;
|
||||
target.hp=_hp; target.maxHp=_maxhp;
|
||||
var limit=17.5;
|
||||
if(player.hasSkill('mbquesong')){
|
||||
if(!player.getStat().damaged) limit+=7.5;
|
||||
player:function(player){
|
||||
if(player.getHp()+player.countCards('hs',card=>player.canSaveCard(card,player))<=1) return 0;
|
||||
var limit=25;
|
||||
var quesong=player.hasSkill('mbquesong')&&!player.getStat().damaged;
|
||||
if(quesong){
|
||||
limit-=7.5;
|
||||
}
|
||||
if(eff<limit) return 0;
|
||||
return eff/30;
|
||||
if(quesong&&game.hasPlayer(target=>{
|
||||
var att=get.attitude(player,target);
|
||||
if(att<0) return false;
|
||||
return att*Math.sqrt(Math.max(1,[1,2,3,4].reduce((p,c)=>p+target.countEmptySlot(c),0)))>=10||target.getHp()<=2;
|
||||
})) return 1;
|
||||
if(!quesong&&game.hasPlayer(target=>{
|
||||
if(target==player) return false;
|
||||
var _hp=target.hp,_maxhp=target.maxHp;
|
||||
target.hp=100; target.maxHp=100;
|
||||
var att=-get.sgnAttitude(player,target);
|
||||
var val=get.damageEffect(target,player,target)*att;
|
||||
target.getSkills(null,false,false).forEach(skill=>{
|
||||
var info=get.info(skill);
|
||||
if(info&&info.ai&&(info.ai.maixie||info.ai.maixie_hp||info.ai.maixie_defend)) val=Math[val>0?'max':'min'](val>0?0.1:-0.1,val+2*att);
|
||||
});
|
||||
var eff=100/val;
|
||||
target.hp=_hp; target.maxHp=_maxhp;
|
||||
if(eff<limit) return false;
|
||||
return true;
|
||||
})) return 1;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1014,7 +1077,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.chooseTarget(get.prompt2('mbquesong')).set('ai',target=>{
|
||||
var player=_status.event.player;
|
||||
if(get.attitude(player,target)<=0) return 0;
|
||||
var len=[1,2,3,4,5].reduce((p,c)=>p+target.countEmptySlot(c),0);hp=target.getHp();
|
||||
var len=Math.max(1,[1,2,3,4].reduce((p,c)=>p+target.countEmptySlot(c),0)),hp=target.getHp();
|
||||
return len+target.isTurnedOver()*2+1.5*Math.min(4,target.getDamagedHp())/(hp+1);
|
||||
});
|
||||
'step 1'
|
||||
|
@ -1022,22 +1085,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
player.logSkill('mbquesong',target);
|
||||
var len=[1,2,3,4,5].reduce((p,c)=>p+target.countEmptySlot(c),0);hp=target.getHp();
|
||||
var forced=false;
|
||||
if(len==0) forced=true;
|
||||
if(hp==0||target.countCards('h')<hp){
|
||||
if(forced) event.finish();
|
||||
else event._result={bool:false};
|
||||
}
|
||||
var len=Math.max(1,[1,2,3,4].reduce((p,c)=>p+target.countEmptySlot(c),0)),hp=target.getHp();
|
||||
if(hp==0||target.countCards('h')<hp) event._result={bool:false};
|
||||
else{
|
||||
var str=`${forced?'请':'是否'}弃置${get.cnNumber(hp)}张手牌并回复1点体力${forced?'':'?或点击“取消”摸'+get.cnNumber(len)+'张牌并复原武将牌'}。`;
|
||||
target.chooseToDiscard(get.translation(player)+'对你发动了【雀颂】',str,forced,'h',hp).set('ai',card=>{
|
||||
if(!_status.event.goon) return 0;
|
||||
var str=`是否弃置${get.cnNumber(hp)}张手牌并回复1点体力?或点击“取消”摸${get.cnNumber(len)}张牌并复原武将牌。`;
|
||||
target.chooseToDiscard(get.translation(player)+'对你发动了【雀颂】',str,'h',hp).set('ai',card=>{
|
||||
if(!get.event('goon')) return 0;
|
||||
return 6-get.value(card);
|
||||
}).set('goon',function(){
|
||||
var _hp=hp+target.isTurnedOver()*1.5;
|
||||
if(forced||_hp+player.countCards('hs',card=>get.tag(card,'recover'))<=2-len/4) return true;
|
||||
return len>_hp;
|
||||
if(_hp+player.countCards('hs',card=>get.tag(card,'recover'))<=2-len/4) return true;
|
||||
return len<=_hp;
|
||||
}());
|
||||
}
|
||||
}
|
||||
|
@ -1048,12 +1106,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
event.finish();
|
||||
}
|
||||
else{
|
||||
target.draw([1,2,3,4,5].reduce((p,c)=>p+target.countEmptySlot(c),0));
|
||||
target.draw(Math.max(1,[1,2,3,4].reduce((p,c)=>p+target.countEmptySlot(c),0)));
|
||||
}
|
||||
'step 3'
|
||||
player.link(false);
|
||||
target.link(false);
|
||||
'step 4'
|
||||
player.turnOver(false);
|
||||
target.turnOver(false);
|
||||
},
|
||||
ai:{
|
||||
expose:0.2,
|
||||
|
@ -11305,10 +11363,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('zhongzuo'),'令一名角色摸两张牌。若其已受伤,则你摸一张牌。').set('ai',function(target){
|
||||
if(target.hasSkillTag('nogain')&&target!=_status.currentPhase) return target.isDamaged()?0:1;
|
||||
var att=get.attitude(_status.event.player,target);
|
||||
if(target.isDamaged()) att=att*1.2;
|
||||
return att;
|
||||
if(target.hasSkillTag('nogain')) return target.isDamaged()?0:1;
|
||||
let att=get.attitude(_status.event.player,target);
|
||||
if(att<=0) return 0;
|
||||
if(target.isDamaged()) return 1+att/5;
|
||||
return att/5;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
|
@ -12622,7 +12681,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 3'
|
||||
if(result.bool){
|
||||
trigger.player.gain(event.card,'give',player,'bySelf');
|
||||
player.chooseBool('是否对'+get.translation(trigger.player)+'造成一点伤害?').ai=function(){
|
||||
player.chooseBool('是否对'+get.translation(trigger.player)+'造成1点伤害?').ai=function(){
|
||||
return get.damageEffect(trigger.player,player,player)>0
|
||||
};
|
||||
}
|
||||
|
@ -12968,7 +13027,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
event.ingame=game.hasPlayer(function(current){
|
||||
return ['re_xushu','xin_xushu','xushu','dc_xushu'].contains(current.name)||['re_xushu','xin_xushu','xushu','dc_xushu'].contains(current.name2);
|
||||
})?true:false;
|
||||
var prompt='请选择一名角色,令其回复一点体力并摸一张牌';
|
||||
var prompt='请选择一名角色,令其回复1点体力并摸一张牌';
|
||||
prompt+=event.ingame?',然后你摸一张牌。':'。';
|
||||
player.chooseTarget(prompt).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
|
@ -14646,6 +14705,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
gnjinfan_gain:{
|
||||
audio:'gnjinfan',
|
||||
trigger:{player:'loseAfter'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
|
@ -15534,9 +15594,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
yj_zhoubuyi:'☆周不疑',
|
||||
yj_zhoubuyi_prefix:'☆',
|
||||
mbhuiyao:'慧夭',
|
||||
mbhuiyao_info:'出牌阶段限一次。你可以受到1点无来源伤害,视为对一名其他角色造成过1点伤害。',
|
||||
mbhuiyao_info:'出牌阶段限一次。你可以受到1点无来源伤害,然后你选择一名其他角色,令其视为对另一名角色造成过1点伤害。',
|
||||
mbquesong:'雀颂',
|
||||
mbquesong_info:'一名角色的结束阶段,若你于本回合受到过伤害,你可以令一名角色选择一项:1.摸等同于其装备区中空栏的数量的牌并复原武将牌;2.弃置等同于其体力值的手牌并回复1点体力。',
|
||||
mbquesong_info:'一名角色的结束阶段,若你于本回合受到过伤害,你可以令一名角色选择一项:1.摸等同于其装备区中非宝物栏中空栏的数量的牌并复原武将牌(至少摸一张牌);2.弃置等同于其体力值的手牌并回复1点体力。',
|
||||
xin_yuanshao:'手杀界袁绍',
|
||||
xin_yuanshao_prefix:'手杀界',
|
||||
re_baosanniang:'手杀鲍三娘',
|
||||
|
|
|
@ -62,7 +62,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
old_guanyu:['male','shu',4,['wusheng','yijue']],
|
||||
old_caochun:['male','wei',4,['shanjia']],
|
||||
masu:['male','shu',3,['xinzhan','huilei']],
|
||||
xushu:['male','shu',3,['wuyan','jujian'],['border:wei']],
|
||||
xushu:['male','shu',3,['xswuyan','jujian'],['border:wei']],
|
||||
liru:['male','qun',3,['juece','mieji','fencheng']],
|
||||
xin_yujin:['male','wei',4,['jieyue']],
|
||||
//lusu:['male','wu',3,['haoshi','dimeng']],
|
||||
|
|
|
@ -1035,7 +1035,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
let hs=player.getCards('h',i=>i!==card&&(!card.cards||!card.cards.contains(i))),num=player.getCardUsable('sha');
|
||||
let hs=player.getCards('h',i=>i!==card&&(!card.cards||!card.cards.includes(i))),num=player.getCardUsable('sha');
|
||||
if(card.name!=='sha'&&card.name!=='juedou'||hs.length<target.countCards('h')) return 1;
|
||||
if(game.hasPlayer2(function(current){
|
||||
return current.getHistory('useCard',function(evt){
|
||||
|
@ -1044,6 +1044,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
})) return 1;
|
||||
if(card.name==='sha') num--;
|
||||
hs=hs.filter(i=>{
|
||||
if(!player.canUse(i,target)) return false;
|
||||
if(i.name==='juedou') return true;
|
||||
if(num&&i.name==='sha'){
|
||||
num--;
|
||||
|
@ -1727,7 +1728,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
'2':{
|
||||
audio:2,
|
||||
audio:"nzry_juzhan_1",
|
||||
trigger:{
|
||||
player:'useCardToPlayered'
|
||||
},
|
||||
|
@ -2486,7 +2487,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
2:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
player:['useCardAfter','respondAfter'],
|
||||
},
|
||||
|
@ -2607,7 +2607,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
'2':{
|
||||
audio:2,
|
||||
audio:'nzry_shenshi_1',
|
||||
trigger:{
|
||||
player:'damageEnd',
|
||||
},
|
||||
|
@ -3494,167 +3494,99 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
qiaobian:{
|
||||
audio:2,
|
||||
group:['qiaobian1','qiaobian2','qiaobian3','qiaobian4'],
|
||||
trigger:{player:['phaseJudgeBefore','phaseDrawBefore','phaseUseBefore','phaseDiscardBefore']},
|
||||
filter:function(event,player){
|
||||
return player.countCards('h')>0;
|
||||
},
|
||||
direct:true,
|
||||
preHidden:true,
|
||||
ai:{
|
||||
threaten:3
|
||||
}
|
||||
},
|
||||
qiaobian1:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseJudgeBefore'},
|
||||
filter:function(event,player){
|
||||
return player.countCards('h')>0;
|
||||
},
|
||||
direct:true,
|
||||
frequent:true,
|
||||
content:function(){
|
||||
"step 0"
|
||||
if(player.countCards('j')==0&&!event.isOnline()&&(!event.isMine()||!lib.config.autoskilllist.contains('qiaobian1'))){
|
||||
event.finish();
|
||||
}
|
||||
else{
|
||||
var next=player.chooseToDiscard(get.prompt('qiaobian'),'弃置一张手牌并跳过判定阶段');
|
||||
next.set('ai',get.unuseful2);
|
||||
next.set('logSkill','qiaobian1');
|
||||
next.setHiddenSkill('qiaobian');
|
||||
}
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
trigger.cancel();
|
||||
}
|
||||
}
|
||||
},
|
||||
qiaobian2:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseDrawBefore'},
|
||||
filter:function(event,player){
|
||||
return player.countCards('h')>0;
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
"step 0"
|
||||
var check,i,num=0,num2=0,players=game.filterPlayer();
|
||||
for(i=0;i<players.length;i++){
|
||||
if(player!=players[i]&&players[i].countCards('h')){
|
||||
var att=get.attitude(player,players[i]);
|
||||
if(att<=0){
|
||||
num++;
|
||||
'step 0'
|
||||
var check,str='弃置一张手牌并跳过';
|
||||
str+=['判定','摸牌','出牌','弃牌'][lib.skill.qiaobian.trigger.player.indexOf(event.triggername)];
|
||||
str+='阶段';
|
||||
if(trigger.name=='phaseDraw') str+=',然后可以获得至多两名角色各一张手牌';
|
||||
if(trigger.name=='phaseUse') str+=',然后可以移动场上的一张牌';
|
||||
switch(trigger.name){
|
||||
case 'phaseJudge':
|
||||
check=player.countCards('j');
|
||||
break;
|
||||
case 'phaseDraw':
|
||||
var i,num=0,num2=0,players=game.filterPlayer();
|
||||
for(i=0;i<players.length;i++){
|
||||
if(player!=players[i]&&players[i].countCards('h')){
|
||||
var att=get.attitude(player,players[i]);
|
||||
if(att<=0){
|
||||
num++;
|
||||
}
|
||||
if(att<0){
|
||||
num2++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(att<0){
|
||||
num2++;
|
||||
check=(num>=2&&num2>0);
|
||||
break;
|
||||
case 'phaseUse':
|
||||
if(!player.canMoveCard(true)){
|
||||
check=false;
|
||||
}
|
||||
}
|
||||
else{
|
||||
check=game.hasPlayer(function(current){
|
||||
return get.attitude(player,current)>0&¤t.countCards('j');
|
||||
});
|
||||
if(!check){
|
||||
if(player.countCards('h')>player.hp+1){
|
||||
check=false;
|
||||
}
|
||||
else if(player.countCards('h',{name:['wuzhong']})){
|
||||
check=false;
|
||||
}
|
||||
else{
|
||||
check=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'phaseDiscard':
|
||||
check=player.needsToDiscard();
|
||||
break;
|
||||
}
|
||||
check=(num>=2&&num2>0);
|
||||
|
||||
player.chooseToDiscard(get.prompt('qiaobian'),'弃置一张手牌并跳过摸牌阶段,然后可以获得至多两名角色各一张手牌',lib.filter.cardDiscardable).set('ai',function(card){
|
||||
if(!_status.event.check) return 0;
|
||||
player.chooseToDiscard(get.prompt('qiaobian'),str,lib.filter.cardDiscardable).set('ai',card=>{
|
||||
if(!_status.event.check) return -1;
|
||||
return 7-get.value(card);
|
||||
}).set('check',check).set('logSkill','qiaobian2').setHiddenSkill('qiaobian');
|
||||
"step 1"
|
||||
}).set('check',check).set('logSkill','qiaobian').setHiddenSkill('qiaobian');
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
trigger.cancel();
|
||||
player.chooseTarget([1,2],'获得至多两名角色各一张手牌',function(card,player,target){
|
||||
return target!=player&&target.countCards('h');
|
||||
}).set('ai',function(target){
|
||||
return 1-get.attitude(_status.event.player,target);
|
||||
})
|
||||
game.log(player,'跳过了','#y'+['判定','摸牌','出牌','弃牌'][lib.skill.qiaobian.trigger.player.indexOf(event.triggername)]+'阶段');
|
||||
if(trigger.name=='phaseUse'){
|
||||
if(player.canMoveCard()) player.moveCard();
|
||||
event.finish();
|
||||
}
|
||||
else if(trigger.name=='phaseDraw'){
|
||||
player.chooseTarget([1,2],'获得至多两名角色各一张手牌',function(card,player,target){
|
||||
return target!=player&&target.countCards('h');
|
||||
}).set('ai',function(target){
|
||||
return 1-get.attitude(_status.event.player,target);
|
||||
});
|
||||
}
|
||||
else event.finish();
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
"step 2"
|
||||
else event.finish();
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
result.targets.sortBySeat();
|
||||
player.line(result.targets,'green');
|
||||
event.targets=result.targets;
|
||||
if(!event.targets.length) event.finish();
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
"step 3"
|
||||
else event.finish();
|
||||
'step 3'
|
||||
player.gainMultiple(event.targets);
|
||||
"step 4"
|
||||
'step 4'
|
||||
game.delay();
|
||||
},
|
||||
ai:{
|
||||
expose:0.2
|
||||
}
|
||||
},
|
||||
qiaobian3:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseUseBefore'},
|
||||
filter:function(event,player){
|
||||
return player.countCards('h')>0;
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
"step 0"
|
||||
var check;
|
||||
if(!player.canMoveCard(true)){
|
||||
check=false;
|
||||
}
|
||||
else{
|
||||
check=game.hasPlayer(function(current){
|
||||
return get.attitude(player,current)>0&¤t.countCards('j');
|
||||
});
|
||||
if(!check){
|
||||
if(player.countCards('h')>player.hp+1){
|
||||
check=false;
|
||||
}
|
||||
else if(player.countCards('h',{name:['wuzhong']})){
|
||||
check=false;
|
||||
}
|
||||
else{
|
||||
check=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
player.chooseToDiscard(get.prompt('qiaobian'),'弃置一张手牌并跳过出牌阶段,然后可以移动场上的一张牌',lib.filter.cardDiscardable).set('ai',function(card){
|
||||
if(!_status.event.check) return 0;
|
||||
return 7-get.value(card);
|
||||
}).set('check',check).set('logSkill','qiaobian3').setHiddenSkill('qiaobian');
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
trigger.cancel();
|
||||
player.moveCard();
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
expose:0.2
|
||||
}
|
||||
},
|
||||
qiaobian4:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseDiscardBefore'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.countCards('h')>0;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
var discard=player.countCards('h')>player.hp;
|
||||
var next=player.chooseToDiscard(get.prompt('qiaobian4'),'弃置一张手牌并跳过弃牌阶段');
|
||||
next.setHiddenSkill('qiaobian');
|
||||
next.logSkill='qiaobian';
|
||||
next.ai=function(card){
|
||||
if(discard){
|
||||
return 100-get.useful(card);
|
||||
}
|
||||
else{
|
||||
return -1;
|
||||
}
|
||||
};
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
trigger.cancel();
|
||||
}
|
||||
}
|
||||
ai:{threaten:3},
|
||||
},
|
||||
tuntian:{
|
||||
audio:2,
|
||||
|
@ -7953,10 +7885,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
fangquan:'放权',
|
||||
ruoyu:'若愚',
|
||||
qiaobian:'巧变',
|
||||
qiaobian1:'巧变·判定',
|
||||
qiaobian2:'巧变·摸牌',
|
||||
qiaobian3:'巧变·出牌',
|
||||
qiaobian4:'巧变·弃牌',
|
||||
tuntian:'屯田',
|
||||
tuntian_bg:'田',
|
||||
zaoxian:'凿险',
|
||||
|
@ -7990,7 +7918,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xiangle_info:'锁定技,当其他角色使用【杀】指定你为目标时,其需弃置一张基本牌,否则此【杀】对你无效。',
|
||||
fangquan_info:'你可跳过你的出牌阶段,若如此做,回合结束时,你可以弃置一张手牌并令一名其他角色进行一个额外的回合。',
|
||||
ruoyu_info:'主公技,觉醒技,准备阶段,若你的体力是全场最少的(或之一),你须增加1点体力上限并回复1点体力,然后获得技能〖激将〗。',
|
||||
qiaobian_info:'你可以弃置一张手牌并跳过自己的一个阶段(准备阶段和结束阶段除外);若你以此法跳过了摸牌阶段,则你可以获得至多两名其他角色的各一张手牌;若你以此法跳过了出牌阶段,则你可以移动场上的一张牌。',
|
||||
qiaobian_info:'你可以弃置一张手牌并跳过自己的一个阶段(准备阶段和结束阶段除外)。若你以此法跳过了摸牌阶段,则你可以获得至多两名其他角色的各一张手牌;若你以此法跳过了出牌阶段,则你可以移动场上的一张牌。',
|
||||
tuntian_info:'①当你于回合外失去牌后,你可以判定。若判定结果不为♥,则你将此牌置于你的武将牌上,称为“田”。②你计算与其他角色的距离时-X(X为你武将牌上“田”的数目)。',
|
||||
zaoxian_info:'觉醒技,准备阶段,若你武将牌上“田”的数量达到3张或更多,则你减1点体力上限,并获得技能〖急袭〗。',
|
||||
jiang_info:'每当你使用(指定目标后)或被使用(成为目标后)一张【决斗】或红色的【杀】时,你可以摸一张牌。',
|
||||
|
|
|
@ -15689,7 +15689,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
jingong3:{charlotte:true},
|
||||
weikui:{
|
||||
audio:'kuiwei',
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filterTarget:function(card,player,target){
|
||||
|
@ -15735,7 +15735,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
lizhan:{
|
||||
audio:'yanzheng',
|
||||
audio:2,
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
|
|
|
@ -1537,6 +1537,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
player.draw(trigger.getl(player).cards2.length);
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
target:(card,player,target)=>{
|
||||
if((get.tag(card,'lose')||get.tag(card,'discard'))&&target.getHistory('damage').length&&!target.hasHistory('useSkill',evt=>evt.skill=='dczhengxu_lose')) return [1,1];
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
damage:{
|
||||
|
@ -1555,10 +1562,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
if(player.hasSkillTag('jueqing',false,target)) return;
|
||||
if(target.hasHistory('useSkill',evt=>evt.skill=='dczhengxu_damage')) return;
|
||||
if(get.tag(card,'damage')) return 0.6;
|
||||
target:(card,player,target)=>{
|
||||
if(player.hasSkillTag('jueqing',false,target)||!get.tag(card,'damage')) return;
|
||||
if(target.hasHistory('useSkill',evt=>evt.skill=='dczhengxu_damage')||!target.hasHistory('lose',evt=>evt.cards2&&evt.cards2.length)) return;
|
||||
if(get.attitude(player,target)>=0) return 'zeroplayertarget';
|
||||
let num=0,shas=player.getCardUsable('sha'),hs=player.getCards('hs',i=>{
|
||||
if(i===card||card.cards&&card.cards.includes(i)||!get.tag(i,'damage')||!player.canUse(i,target)) return false;
|
||||
if(get.name(i)==='sha'){
|
||||
num++;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
if(card.name==='sha') shas--;
|
||||
num=Math.min(num,shas);
|
||||
num+=hs.length;
|
||||
if(!num) return 'zeroplayertarget';
|
||||
num=1-2/3/num;
|
||||
return [num,0,num,0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5146,11 +5146,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
if(player==target) return;
|
||||
target:(card,player,target)=>{
|
||||
if(player===target) return;
|
||||
if(game.hasPlayer2(current=>{
|
||||
return current.hasHistory('useCard',evt=>evt.card.name==card.name&&evt.targets&&evt.targets.contains(player));
|
||||
})) return 'zerotarget';
|
||||
})) return 'zeroplayertarget';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12010,8 +12010,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
expose:0.3
|
||||
}
|
||||
},
|
||||
wuyan:{
|
||||
audio:2,
|
||||
//吾彦...
|
||||
wuyan:{audio:2},
|
||||
xswuyan:{
|
||||
audio:'wuyan',
|
||||
trigger:{target:'useCardToBefore',player:'useCardToBefore'},
|
||||
forced:true,
|
||||
check:function(event,player){
|
||||
|
@ -14461,7 +14463,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xinjunxing:'峻刑',
|
||||
xinjunxing_info:'出牌阶段限一次,你可以弃置至少一张手牌并选择一名其他角色,该角色需弃置一张与你弃置的牌类别均不同的手牌,否则其先将其武将牌翻面,然后将手牌摸至四张。',
|
||||
|
||||
wuyan:'无言',
|
||||
xswuyan:'无言',
|
||||
xinwuyan:'无言',
|
||||
jujian:'举荐',
|
||||
xinjujian:'举荐',
|
||||
|
@ -14578,7 +14580,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
oldrenxin_info:'其他角色进入濒死状态时,你可以将所有手牌交给该角色并翻面,然后该角色回复1点体力。',
|
||||
jingce_info:'出牌阶段结束时,若你本回合使用的牌数量大于或等于你的当前体力值,你可以摸两张牌。',
|
||||
xinjingce_info:'结束阶段,若你本回合使用的牌数量大于或等于你的当前体力值,你可以摸两张牌。',
|
||||
wuyan_info:'锁定技,你使用的普通锦囊牌对其他角色无效;其他角色使用的普通锦囊牌对你无效。',
|
||||
xswuyan_info:'锁定技,你使用的普通锦囊牌对其他角色无效;其他角色使用的普通锦囊牌对你无效。',
|
||||
xinwuyan_info:'锁定技,当你使用锦囊牌造成伤害时,你防止此伤害;锁定技,当你受到锦囊牌对你造成的伤害时,你防止此伤害。',
|
||||
jujian_info:'出牌阶段限一次,你可以弃至多三张牌,然后令一名其他角色摸等量的牌。若你以此法弃牌不少于三张且均为同一类别,你回复1点体力。',
|
||||
xinjujian_info:'结束阶段开始时,你可以弃置一张非基本牌并选择一名其他角色,令其选择一项:1.摸两张牌;2.回复1点体力;3.将其武将牌翻转至正面朝上并重置之。',
|
||||
|
|
66
game/game.js
66
game/game.js
|
@ -18230,29 +18230,32 @@
|
|||
},
|
||||
moveCard:function(){
|
||||
'step 0'
|
||||
if(!player.canMoveCard(null,event.nojudge)){
|
||||
if(!player.canMoveCard(null,event.nojudge,event.sourceTargets,event.aimTargets,event.filter)){
|
||||
event.finish();
|
||||
return;
|
||||
}
|
||||
var next=player.chooseTarget(2,function(card,player,target){
|
||||
var filterCard=get.event('filter');
|
||||
if(ui.selected.targets.length){
|
||||
if(!get.event('aimTargets').includes(target)) return false;
|
||||
var from=ui.selected.targets[0];
|
||||
var js=from.getCards('j');
|
||||
var js=from.getCards('j',filterCard);
|
||||
for(var i=0;i<js.length;i++){
|
||||
if(_status.event.nojudge) break;
|
||||
if(target.canAddJudge(js[i])) return true;
|
||||
}
|
||||
if(target.isMin()) return false;
|
||||
var es=from.getCards('e');
|
||||
var es=from.getCards('e',filterCard);
|
||||
for(var i=0;i<es.length;i++){
|
||||
if(target.canEquip(es[i])) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
else{
|
||||
if(!get.event('sourceTargets').includes(target)) return false;
|
||||
var range='ej';
|
||||
if(_status.event.nojudge) range='e';
|
||||
return target.countCards(range)>0;
|
||||
return target.countCards(range,filterCard)>0;
|
||||
}
|
||||
});
|
||||
next.set('nojudge',event.nojudge||false);
|
||||
|
@ -18308,6 +18311,9 @@
|
|||
next.set('multitarget',true);
|
||||
next.set('targetprompt',_status.event.targetprompt||['被移走','移动目标']);
|
||||
next.set('prompt',event.prompt||'移动场上的一张牌');
|
||||
next.set('filter',event.filter);
|
||||
next.set('sourceTargets',event.sourceTargets||game.filterPlayer());
|
||||
next.set('aimTargets',event.aimTargets||game.filterPlayer());
|
||||
if(event.prompt2) next.set('prompt2',event.prompt2);
|
||||
if(event.forced) next.set('forced',true);
|
||||
'step 1'
|
||||
|
@ -18338,6 +18344,7 @@
|
|||
}
|
||||
},targets[0]).set('nojudge',event.nojudge||false).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){
|
||||
var targets1=_status.event.targets1;
|
||||
if(!get.event('filter')(button.link)) return false;
|
||||
if(get.position(button.link)=='j'){
|
||||
if(_status.event.nojudge) return false;
|
||||
return targets1.canAddJudge(button.link);
|
||||
|
@ -18345,7 +18352,7 @@
|
|||
else{
|
||||
return targets1.canEquip(button.link);
|
||||
}
|
||||
});
|
||||
}).set('filter',event.filter);
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
|
@ -24875,13 +24882,33 @@
|
|||
}
|
||||
}
|
||||
canMoveCard(withatt,nojudge){
|
||||
var player=this;
|
||||
return game.hasPlayer(function(current){
|
||||
var att=get.sgn(get.attitude(player,current));
|
||||
const player=this;
|
||||
const args=Array.from(arguments).slice(2);
|
||||
let sourceTargets,aimTargets,filterCard;
|
||||
args.forEach(arg=>{
|
||||
if(get.itemtype(arg)=='players'){
|
||||
if(!sourceTargets) sourceTargets=arg;
|
||||
else if(!aimTargets) aimTargets=arg;
|
||||
}
|
||||
else if(get.itemtype(arg)=='player'){
|
||||
if(!sourceTargets) sourceTargets=[arg];
|
||||
else if(!aimTargets) aimTargets=[arg];
|
||||
}
|
||||
else if(typeof arg=='function'){
|
||||
filterCard=arg;
|
||||
}
|
||||
else if(typeof arg=='object'&&arg){
|
||||
filterCard=get.filter(arg);
|
||||
}
|
||||
});
|
||||
if(!sourceTargets) sourceTargets=game.filterPlayer();
|
||||
if(!aimTargets) aimTargets=game.filterPlayer();
|
||||
return sourceTargets.some(current=>{
|
||||
const att=get.sgn(get.attitude(player,current));
|
||||
if(!withatt||att!=0){
|
||||
var es=current.getCards('e');
|
||||
var es=current.getCards('e',filterCard);
|
||||
for(var i=0;i<es.length;i++){
|
||||
if(game.hasPlayer(function(current2){
|
||||
if(aimTargets.some(current2=>{
|
||||
if(withatt){
|
||||
if(get.sgn(get.value(es[i],current))!=-att) return false;
|
||||
var att2=get.sgn(get.attitude(player,current2));
|
||||
|
@ -24894,7 +24921,7 @@
|
|||
}
|
||||
}
|
||||
if(!nojudge&&(!withatt||att>0)){
|
||||
var js=current.getCards('j');
|
||||
var js=current.getCards('j',filterCard);
|
||||
for(var i=0;i<js.length;i++){
|
||||
if(game.hasPlayer(function(current2){
|
||||
if(withatt){
|
||||
|
@ -24916,6 +24943,14 @@
|
|||
if(typeof arguments[i]=='boolean'){
|
||||
next.forced=arguments[i];
|
||||
}
|
||||
else if(get.itemtype(arguments[i])=='players'){
|
||||
if(!next.sourceTargets) next.sourceTargets=arguments[i];
|
||||
else if(!next.aimTargets) next.aimTargets=arguments[i];
|
||||
}
|
||||
else if(get.itemtype(arguments[i])=='player'){
|
||||
if(!next.sourceTargets) next.sourceTargets=[arguments[i]];
|
||||
else if(!next.aimTargets) next.aimTargets=[arguments[i]];
|
||||
}
|
||||
else if(typeof arguments[i]=='string'){
|
||||
get.evtprompt(next,arguments[i]);
|
||||
}
|
||||
|
@ -24927,7 +24962,16 @@
|
|||
next.targetprompt=arguments[i];
|
||||
}
|
||||
}
|
||||
else if(typeof arguments[i]=='function'){
|
||||
next.filter=arguments[i];
|
||||
}
|
||||
else if(typeof arguments[i]=='object'&&arguments[i]){
|
||||
next.filter=get.filter(arguments[i]);
|
||||
}
|
||||
}
|
||||
if(!next.sourceTargets) next.sourceTargets=game.filterPlayer();
|
||||
if(!next.aimTargets) next.aimTargets=game.filterPlayer();
|
||||
if(next.filter==undefined) next.filter=lib.filter.all;
|
||||
next.setContent('moveCard');
|
||||
next._args=Array.from(arguments);
|
||||
return next;
|
||||
|
|
|
@ -1137,7 +1137,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
for(var i=0;i<lib.configOL.characterPack.length;i++){
|
||||
var pack=lib.characterPack[lib.configOL.characterPack[i]];
|
||||
for(var j in pack){
|
||||
if(j=='zuoci') continue;
|
||||
// if(j=='zuoci') continue;
|
||||
if(lib.character[j]) libCharacter[j]=pack[j];
|
||||
}
|
||||
}
|
||||
|
@ -1239,7 +1239,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
for(var i=0;i<lib.configOL.characterPack.length;i++){
|
||||
var pack=lib.characterPack[lib.configOL.characterPack[i]];
|
||||
for(var j in pack){
|
||||
if(j=='zuoci') continue;
|
||||
// if(j=='zuoci') continue;
|
||||
if(lib.character[j]) libCharacter[j]=pack[j];
|
||||
}
|
||||
}
|
||||
|
@ -1363,7 +1363,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
for(var i=0;i<lib.configOL.characterPack.length;i++){
|
||||
var pack=lib.characterPack[lib.configOL.characterPack[i]];
|
||||
for(var j in pack){
|
||||
if(j=='zuoci') continue;
|
||||
// if(j=='zuoci') continue;
|
||||
if(lib.character[j]) libCharacter[j]=pack[j];
|
||||
}
|
||||
}
|
||||
|
@ -1507,7 +1507,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
for(var i=0;i<lib.configOL.characterPack.length;i++){
|
||||
var pack=lib.characterPack[lib.configOL.characterPack[i]];
|
||||
for(var j in pack){
|
||||
if(j=='zuoci') continue;
|
||||
// if(j=='zuoci') continue;
|
||||
if(lib.character[j]) libCharacter[j]=pack[j];
|
||||
}
|
||||
}
|
||||
|
@ -1675,7 +1675,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
for(var i=0;i<lib.configOL.characterPack.length;i++){
|
||||
var pack=lib.characterPack[lib.configOL.characterPack[i]];
|
||||
for(var j in pack){
|
||||
if(j=='zuoci') continue;
|
||||
// if(j=='zuoci') continue;
|
||||
if(lib.character[j]) libCharacter[j]=pack[j];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13662,8 +13662,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
for(var i of map[sides[0]]){
|
||||
if(isYe(i)) return;
|
||||
}
|
||||
for(var i of hiddens){
|
||||
if(isYe(i)||i.getGuozhanGroup(2)!=identity||!i.wontYe()) return;
|
||||
for(var ind=0;ind<hiddens.length;ind++){
|
||||
var current=hiddens[ind];
|
||||
if(isYe(current)||current.getGuozhanGroup(2)!=identity||!current.wontYe(null,ind+1)) return;
|
||||
}
|
||||
game.broadcastAll(function(id){
|
||||
game.winner_id=id;
|
||||
|
@ -16032,14 +16033,15 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
game.tryResult();
|
||||
},
|
||||
wontYe:function(group){
|
||||
wontYe:function(group,numOfReadyToShow){
|
||||
if(!group){
|
||||
if(this.trueIdentity) group=this.trueIdentity;
|
||||
else group=lib.character[this.name1][1];
|
||||
}
|
||||
if(_status.yeidentity&&_status.yeidentity.contains(group)) return false;
|
||||
if(get.zhu(this,null,group)) return true;
|
||||
return get.totalPopulation(group)+1<=_status.separatism?Math.max(get.population()/2-1,1):get.population()/2;
|
||||
if(!numOfReadyToShow) numOfReadyToShow=1;
|
||||
return get.totalPopulation(group)+numOfReadyToShow<=(_status.separatism?Math.max(get.population()/2-1,1):get.population()/2);
|
||||
},
|
||||
perfectPair:function(choosing){
|
||||
if(_status.connectMode){
|
||||
|
|
|
@ -840,7 +840,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
for(var i=0;i<lib.configOL.characterPack.length;i++){
|
||||
var pack=lib.characterPack[lib.configOL.characterPack[i]];
|
||||
for(var j in pack){
|
||||
if(j=='zuoci') continue;
|
||||
// if(j=='zuoci') continue;
|
||||
if(lib.character[j]) libCharacter[j]=pack[j];
|
||||
}
|
||||
}
|
||||
|
@ -2246,7 +2246,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
for(var i=0;i<lib.configOL.characterPack.length;i++){
|
||||
var pack=lib.characterPack[lib.configOL.characterPack[i]];
|
||||
for(var j in pack){
|
||||
if(j=='zuoci') continue;
|
||||
// if(j=='zuoci') continue;
|
||||
if(lib.character[j]) libCharacter[j]=pack[j];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2797,7 +2797,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
},_status.firstAct);
|
||||
|
||||
var filterChoice=function(name){
|
||||
if(name=='zuoci'||name=='miheng') return true;
|
||||
// if(name=='zuoci'||name=='miheng') return true;
|
||||
if(!lib.choiceFour.contains(name)){
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue