Merge branch 'libccy:PR-Branch' into PR-Branch
This commit is contained in:
commit
d2e04ff8a7
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"extends": "chrome 46",
|
||||
"extends": "eslint:recommended",
|
||||
"env": {
|
||||
"browser": true,
|
||||
"node": true,
|
||||
|
@ -10,6 +10,12 @@
|
|||
"no-console": 0,
|
||||
"no-unused-vars": 0,
|
||||
"no-undef": 0,
|
||||
"no-redeclare": 0
|
||||
"no-redeclare": 0,
|
||||
"no-prototype-builtins": 0,
|
||||
"require-yield": 0,
|
||||
"no-irregular-whitespace": ["error", { "skipStrings": true, "skipTemplates": true }],
|
||||
"no-constant-condition": ["error", { "checkLoops": false }]/* ,
|
||||
"comma-dangle": ["error", "only-multiline"],
|
||||
"complexity": ["error",100] */
|
||||
}
|
||||
}
|
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.
|
@ -1685,10 +1685,22 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
useful:1,
|
||||
},
|
||||
result:{
|
||||
target:-1.5,
|
||||
target:function(player,target){
|
||||
if(ui.selected.targets.length){
|
||||
const preTarget=ui.selected.targets.lastItem;
|
||||
const eff=get.effect(target,{name:'sha'},preTarget,player);
|
||||
return Math.sign(eff)*get.sgnAttitude(player,target);
|
||||
}
|
||||
const filter=get.info({name:'jiedao'}).filterAddedTarget;
|
||||
if(game.hasPlayer(current=>{
|
||||
return filter(null,null,current,target)&&get.effect(current,{name:'sha'},target,player)>=0;
|
||||
})) return -1;
|
||||
if(target.mayHaveSha(player,'use')) return 0.25;
|
||||
return -1;
|
||||
},
|
||||
player:function(player){
|
||||
if(player.getCards('he',{subtype:'equip1'}).length) return 0;
|
||||
return 1.5;
|
||||
return 1.25;
|
||||
},
|
||||
},
|
||||
tag:{
|
||||
|
|
|
@ -238,7 +238,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
fullskin:true,
|
||||
type:'equip',
|
||||
subtype:'equip5',
|
||||
loseDelay:false,
|
||||
skills:['tianjitu_skill'],
|
||||
onLose:function(){
|
||||
player.addTempSkill('tianjitu_skill_lose')
|
||||
|
|
|
@ -561,13 +561,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
prompt:'是否发动【赠毒】?',
|
||||
prompt2:'将本次获得的【毒】交给其他角色',
|
||||
ai1:function(card){
|
||||
var player = _status.event.player;
|
||||
if(player.hasSkillTag("usedu")||get.effect(player,{name: "losehp"}, player, player)>0) return 0;
|
||||
var player=get.player();
|
||||
if(['usedu','keepdu'].some(tag=>player.hasSkillTag(tag))||get.effect(player,{name:"losehp"},player,player)>0) return 0;
|
||||
if(!ui.selected.cards.length) return 1;
|
||||
return 0;
|
||||
},
|
||||
ai2:function(target){
|
||||
if (target.hasSkillTag("usedu")) return get.attitude(_status.event.player,target)-0.01;
|
||||
if(['usedu','keepdu'].some(tag=>target.hasSkillTag(tag))) return get.attitude(_status.event.player,target)-0.01;
|
||||
return -get.attitude(_status.event.player,target)+0.01;
|
||||
},
|
||||
});
|
||||
|
|
|
@ -48,7 +48,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
return get.type(card)=='equip'&&!cards.contains(card);
|
||||
});
|
||||
if(cardx) cards.push(cardx);
|
||||
};
|
||||
}
|
||||
if(!cards.length){
|
||||
event.finish();
|
||||
event.getParent().excluded.addArray(game.players);
|
||||
|
@ -115,11 +115,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
if(dialog.buttons[i].link==card){
|
||||
button=dialog.buttons[i];
|
||||
button.querySelector('.info').innerHTML=function(target){
|
||||
if(target._tempTranslate) return target._tempTranslate;
|
||||
var name=target.name;
|
||||
if(lib.translate[name+'_ab']) return lib.translate[name+'_ab'];
|
||||
return get.translation(name);
|
||||
}(target);
|
||||
if(target._tempTranslate) return target._tempTranslate;
|
||||
var name=target.name;
|
||||
if(lib.translate[name+'_ab']) return lib.translate[name+'_ab'];
|
||||
return get.translation(name);
|
||||
}(target);
|
||||
dialog.buttons.remove(button);
|
||||
break;
|
||||
}
|
||||
|
@ -701,7 +701,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
player.$throw(card);
|
||||
game.log(card,'进入了弃牌堆');
|
||||
delete _status.jinhe[es[i].cardid];
|
||||
};
|
||||
}
|
||||
}
|
||||
game.broadcastAll(function(jinhe){
|
||||
_status.jinhe=jinhe;
|
||||
|
|
|
@ -210,7 +210,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
list.push([get.translation(get.type(name)),'',name]);
|
||||
if(name=='sha'){
|
||||
for(var nature of lib.inpile_nature){
|
||||
if(!player.canUse(get.autoViewAs({name:name,nature,nature},[]),target)) continue;
|
||||
if(!player.canUse(get.autoViewAs({name:name,nature:nature},[]),target)) continue;
|
||||
list.push([get.translation(get.type(name)),'',name,nature]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_fuhuanghou:['female','qun',3,['spcangni','spmixin']],
|
||||
sp_fuwan:['male','qun',3,['spfengyin','spchizhong']],
|
||||
old_lingju:['female','qun',3,['jieyuan','fenxin_old']],
|
||||
sp_mushun:['male','qun',4,['dcmoukui']],
|
||||
sp_mushun:['male','qun',4,['moukui']],
|
||||
},
|
||||
characterFilter:{
|
||||
old_lingju:function(mode){
|
||||
|
@ -359,8 +359,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return card!=card2&&get.number(card2,player)<num;
|
||||
})
|
||||
}).set('ai',function(card){
|
||||
var player=_status.event.player;
|
||||
return 1+Math.max(0,player.getUseValue(card,null,true))
|
||||
var player=_status.event.player;
|
||||
return 1+Math.max(0,player.getUseValue(card,null,true))
|
||||
})
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
|
@ -598,32 +598,38 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
},
|
||||
content_old:function(){
|
||||
'step 0'
|
||||
if(lib.skill.dcshixian.filterx(trigger)){
|
||||
player.chooseControl('cancel2').set('choiceList',[
|
||||
'摸一张牌',
|
||||
'令'+get.translation(trigger.card)+'额外结算一次',
|
||||
]).set('prompt',get.prompt('dcsitian'));
|
||||
}
|
||||
else{
|
||||
player.chooseBool('是否发动【诗仙】摸一张牌?').set('frequentSkill','dcshixian');
|
||||
}
|
||||
'step 1'
|
||||
if(result.control){
|
||||
if(result.index==0){
|
||||
player.logSkill('dcshixian');
|
||||
player.draw();
|
||||
}
|
||||
else if(result.index==1){
|
||||
trigger.effectCount++;
|
||||
}
|
||||
}
|
||||
else if(result.bool){
|
||||
player.logSkill('dcshixian');
|
||||
player.draw();
|
||||
init:function(player){
|
||||
player.addSkill('dcshixian_yayun');
|
||||
var history=player.getAllHistory('useCard');
|
||||
if(history.length){
|
||||
player.addGaintag(player.getCards('h',card=>{
|
||||
return get.is.yayun(get.translation(card.name),get.translation(history[history.length-1].card.name));
|
||||
}),'dcshixian_yayun');
|
||||
}
|
||||
},
|
||||
onremove:function(player){
|
||||
player.removeSkill('dcshixian_yayun');
|
||||
player.removeGaintag('dcshixian_yayun');
|
||||
},
|
||||
subSkill:{
|
||||
yayun:{
|
||||
charlotte:true,
|
||||
trigger:{player:'useCard1'},
|
||||
filter:function(event,player){
|
||||
return player.countCards('h');
|
||||
},
|
||||
direct:true,
|
||||
priority:11+45+14+19+19+810,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.removeGaintag('dcshixian_yayun');
|
||||
'step 1'
|
||||
player.addGaintag(player.getCards('h',card=>{
|
||||
return get.is.yayun(get.translation(card.name),get.translation(trigger.card.name));
|
||||
}),'dcshixian_yayun');
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//龙王
|
||||
dclonggong:{
|
||||
|
@ -819,11 +825,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(target.isIn()){
|
||||
var num=target.countCards('e');
|
||||
if(num>0){
|
||||
player.discardPlayerCard(target,true,'e',num)
|
||||
player.discardPlayerCard(target,true,'e',num)
|
||||
}
|
||||
else{
|
||||
target.loseHp();
|
||||
game.delayex();
|
||||
target.loseHp();
|
||||
game.delayex();
|
||||
}
|
||||
}
|
||||
if(targets.length>0) event.redo();
|
||||
|
@ -860,11 +866,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.line(target,'green');
|
||||
var num=target.countCards('h');
|
||||
if(num>0){
|
||||
player.discardPlayerCard(target,true,'h',num)
|
||||
player.discardPlayerCard(target,true,'h',num)
|
||||
}
|
||||
else{
|
||||
target.loseHp();
|
||||
game.delayex();
|
||||
target.loseHp();
|
||||
game.delayex();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1281,9 +1287,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseDrawRecover('###'+get.prompt('spcangni')+'###摸两张牌或回复1点体力,然后将武将牌翻面',2).set('ai',function(){
|
||||
return 'cancel2';
|
||||
}).logSkill='spcangni';
|
||||
player.chooseDrawRecover('###'+get.prompt('spcangni')+'###摸两张牌或回复1点体力,然后将武将牌翻面',2).logSkill='spcangni';
|
||||
'step 1'
|
||||
if(result.control!='cancel2') player.turnOver();
|
||||
},
|
||||
|
@ -1566,6 +1570,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dclbjiuxian:'酒仙',
|
||||
dclbjiuxian_info:'①你可以将额定目标数大于1的锦囊牌当做【酒】使用。②你使用【酒】无次数限制。',
|
||||
dcshixian:'诗仙',
|
||||
dcshixian_yayun:'押韵',
|
||||
dcshixian_info:'当你使用一张牌时,若此牌的牌名与你于本局游戏使用的上一张牌的牌名押韵,则你可以摸一张牌,并令此牌额外结算一次。',
|
||||
taoshen:'涛神',
|
||||
dcnutao:'怒涛',
|
||||
|
|
|
@ -526,7 +526,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var skill={
|
||||
viewAs:{
|
||||
name:links[0][2],
|
||||
isCard:true,
|
||||
suit:'none',
|
||||
number:null,
|
||||
isCard:true,
|
||||
|
@ -1697,7 +1696,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
dddxunxun:{
|
||||
inherit:"xunxun",
|
||||
audio:"ext:3D8测试包:2",
|
||||
audio:2,
|
||||
},
|
||||
dddfusi:{
|
||||
mod:{
|
||||
|
@ -3381,7 +3380,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
//轲比能
|
||||
dddxiaoxing:{
|
||||
audio:2,
|
||||
forced:true,
|
||||
trigger:{global:'gameDrawBegin'},
|
||||
forced:true,
|
||||
group:'dddxiaoxing_remove',
|
||||
|
|
|
@ -294,7 +294,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
key_inari:'#bSummer Pockets',
|
||||
key_saya:'#bLittle Busters!',
|
||||
key_harukakanata:'#bLittle Busters!',
|
||||
key_tsumugi:'#bSummer Pockets',
|
||||
key_yui:'#rAngel Beats!',
|
||||
key_yoshino:'#bRewrite',
|
||||
key_kengo:'#bLittle Busters!',
|
||||
|
@ -753,8 +752,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(map[1]){
|
||||
if(map[1].length==len&&len>4){
|
||||
for(var i=0;i<map[1].length-1;i++){
|
||||
if(map[1][i+1]-map[1][i]!=1) return null;
|
||||
if(map[1][i+1]==15) return null;
|
||||
if(map[1][i+1]-map[1][i]!=1) return null;
|
||||
if(map[1][i+1]==15) return null;
|
||||
}
|
||||
return ['单顺',nums[0],len];
|
||||
}
|
||||
|
@ -764,7 +763,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else if(map[3]&&map[1].length==map[3].length&&len==map[1].length*4){
|
||||
if(map[3].length==1) return ['三带一',map[3][0],1];
|
||||
for(var i=0;i<map[3].length-1;i++){
|
||||
if(map[3][i+1]-map[3][i]!=1) return null;
|
||||
if(map[3][i+1]-map[3][i]!=1) return null;
|
||||
}
|
||||
return ['单带飞机',map[3][0],map[3].length];
|
||||
}
|
||||
|
@ -773,8 +772,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(map[2]){
|
||||
if(map[2].length*2==len&&len>5){
|
||||
for(var i=0;i<map[2].length-1;i++){
|
||||
if(map[2][i+1]-map[2][i]!=1) return null;
|
||||
if(map[2][i+1]==15) return null;
|
||||
if(map[2][i+1]-map[2][i]!=1) return null;
|
||||
if(map[2][i+1]==15) return null;
|
||||
}
|
||||
return ['双顺',nums[0],len];
|
||||
}
|
||||
|
@ -784,8 +783,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else if(map[3]&&map[2].length==map[3].length&&len==map[2].length*5){
|
||||
if(map[3].length==1) return ['三带二',map[3][0],1];
|
||||
for(var i=0;i<map[3].length-1;i++){
|
||||
if(map[3][i+1]-map[3][i]!=1) return null;
|
||||
if(map[3][i+1]==15) return null;
|
||||
if(map[3][i+1]-map[3][i]!=1) return null;
|
||||
if(map[3][i+1]==15) return null;
|
||||
}
|
||||
return ['双带飞机',map[3][0],map[3].length];
|
||||
}
|
||||
|
@ -794,8 +793,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(map[3]){
|
||||
if(map[3].length*3==len&&len>5){
|
||||
for(var i=0;i<map[3].length-1;i++){
|
||||
if(map[3][i+1]-map[3][i]!=1) return null;
|
||||
if(map[3][i+1]==15) return null;
|
||||
if(map[3][i+1]-map[3][i]!=1) return null;
|
||||
if(map[3][i+1]==15) return null;
|
||||
}
|
||||
return ['三顺',nums[0],len];
|
||||
}
|
||||
|
@ -2934,9 +2933,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(target.hasCard(function(card){
|
||||
return get.name(card,target)=='shan';
|
||||
},'h')){
|
||||
player.discardPlayerCard(target,true,'h','visible').set('filterButton',function(button){
|
||||
return get.name(button.link)=='shan';
|
||||
});
|
||||
player.discardPlayerCard(target,true,'h','visible').set('filterButton',function(button){
|
||||
return get.name(button.link)=='shan';
|
||||
});
|
||||
}
|
||||
else if(player.countCards('he')>0) player.chooseToDiscard('he',true);
|
||||
},
|
||||
|
@ -3008,7 +3007,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return false;
|
||||
},
|
||||
content:function(){
|
||||
player.draw();
|
||||
player.draw();
|
||||
},
|
||||
mod:{
|
||||
maxHandcard:function(player,num){
|
||||
|
@ -3793,7 +3792,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.chooseButton(['选择获得一张“兴”',player.getExpansions('tenzen_yixing')],true);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.gain(result.links,'gain2');;
|
||||
player.gain(result.links,'gain2');
|
||||
}
|
||||
var next=game.createEvent('tenzen_yixing_insert');
|
||||
event.next.remove(next);
|
||||
|
@ -3968,9 +3967,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
filterTarget:function(card,kyouko,hina){
|
||||
if(kyouko==hina||kyouko.getStorage('kyouko_gongmian').contains(hina)) return false;
|
||||
var hs=hina.countCards('he');
|
||||
if(hs==0) return kyouko.countCards('h')==0;
|
||||
return true;
|
||||
var hs=hina.countCards('he');
|
||||
if(hs==0) return kyouko.countCards('h')==0;
|
||||
return true;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
|
@ -4958,10 +4957,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
switch(button.link){
|
||||
case 3:return 4.5;break;
|
||||
case 4:return 4.4;break;
|
||||
case 5:return 4.3;break;
|
||||
case 2:return (3-player.hp)*1.5;break;
|
||||
case 3:return 4.5;
|
||||
case 4:return 4.4;
|
||||
case 5:return 4.3;
|
||||
case 2:return (3-player.hp)*1.5;
|
||||
case 1:{
|
||||
if(game.hasPlayer(function(current){
|
||||
return (get.realAttitude||get.attitude)(player,current)<0&&get.distance(player,current)>1;
|
||||
|
@ -6122,7 +6121,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.popup('花绽',get.groupnature(name.slice(12)));
|
||||
game.log(player,'发动了技能',lib.translate[name].replace(/魔物/g,'【花绽】'));
|
||||
player.removeMark(name,1,false);
|
||||
;game.log(player,'移去了一个',lib.translate[name].replace(/魔物/g,'【魔物】'));
|
||||
game.log(player,'移去了一个',lib.translate[name].replace(/魔物/g,'【魔物】'));
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -6388,7 +6387,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{source:'damageBefore'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
audio:'abyusa_jueqing',
|
||||
filter:function(event,player){
|
||||
return player.storage.abyusa_jueqing_rewrite==true;
|
||||
},
|
||||
|
@ -9106,7 +9104,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
},
|
||||
filterCard:true,
|
||||
log:false,
|
||||
filterTarget:function(card,player,target){
|
||||
return target!=player&&target.hasZhuSkill('akane_yifu',player)&&!target.hasSkill('akane_yifu3');
|
||||
},
|
||||
|
@ -9349,7 +9346,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
for(var i=0;i<targets.length;i++){
|
||||
if(targets[i].differentSexFrom(player)){
|
||||
bool=true;break;
|
||||
};
|
||||
}
|
||||
}
|
||||
if(bool) player.loseHp();
|
||||
},
|
||||
|
@ -9807,10 +9804,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
backup:function(links,player){
|
||||
return {
|
||||
filterCard:true,
|
||||
audio:'haruka_shuangche',
|
||||
selectCard:-1,
|
||||
filterCard:function(){return false},
|
||||
selectCard:-1,
|
||||
popname:true,
|
||||
check:function(card){
|
||||
return 6-get.value(card);
|
||||
|
@ -11986,7 +11982,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
})){
|
||||
event.finish();
|
||||
return;
|
||||
};
|
||||
}
|
||||
_status.currentPhase.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
|
||||
get.translation(trigger.player.judging[0])+',请打出一张手牌进行改判','h',true,function(card){
|
||||
var player=_status.event.player;
|
||||
|
@ -13140,11 +13136,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(n==1){
|
||||
player.addTempSkill("releiji",{player:"phaseUseBegin"});
|
||||
player.markSkill("releiji",{player:"phaseUseBegin"});
|
||||
};
|
||||
}
|
||||
if(n==2){
|
||||
player.addTempSkill("guidao",{player:"phaseUseBegin"});
|
||||
player.markSkill("guidao",{player:"phaseUseBegin"});
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
ns_xiandao2:{
|
||||
|
|
|
@ -135,7 +135,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
identities.add(i);
|
||||
population=curPopulation;
|
||||
}
|
||||
};
|
||||
}
|
||||
return identities;
|
||||
},
|
||||
group:'jxlianpo_show',
|
||||
|
@ -620,7 +620,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
})){
|
||||
goon=6;
|
||||
}
|
||||
}catch(e){}
|
||||
}catch(e){
|
||||
console.trace(e);
|
||||
}
|
||||
ui.selected.cards.remove(card);
|
||||
return goon-get.value(card);
|
||||
},
|
||||
|
@ -1722,13 +1724,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filter:function(event,player){
|
||||
if(event.responded||event.shouli||event.type=='wuxie') return false;
|
||||
if(game.hasPlayer(function(current){
|
||||
return current.getCards('e',card=>get.subtype(card)=='equip4').length>0;
|
||||
return current.getCards('e',card=>get.is.attackingMount(card)).length>0;
|
||||
})&&event.filterCard({
|
||||
name:'sha',
|
||||
storage:{shouli:true},
|
||||
},player,event)) return true;
|
||||
if(game.hasPlayer(function(current){
|
||||
return current.getCards('e',card=>get.subtype(card)=='equip3').length>0;
|
||||
return current.getCards('e',card=>get.is.defendingMount(card)).length>0;
|
||||
})&&event.filterCard({
|
||||
name:'shan',
|
||||
storage:{shouli:true},
|
||||
|
@ -1740,8 +1742,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filterTarget:function(card,player,target){
|
||||
var event=_status.event,evt=event;
|
||||
if(event._backup) evt=event._backup;
|
||||
var equip3=target.getCards('e',card=>get.subtype(card,false)=='equip3');
|
||||
var equip4=target.getCards('e',card=>get.subtype(card,false)=='equip4');
|
||||
var equip3=target.getCards('e',card=>get.is.defendingMount(card,false));
|
||||
var equip4=target.getCards('e',card=>get.is.attackingMount(card,false));
|
||||
if(equip3.length&&equip3.some(card=>evt.filterCard(get.autoViewAs({
|
||||
name:'shan',
|
||||
storage:{shouli:true},
|
||||
|
@ -1756,7 +1758,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return game.hasPlayer(function(current){
|
||||
return evt.filterTarget(sha,player,current);
|
||||
})
|
||||
};
|
||||
}
|
||||
})
|
||||
},
|
||||
prompt:'将场上的一张坐骑牌当做【杀】或【闪】使用或打出',
|
||||
|
@ -1765,8 +1767,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var evt=event.getParent(2);
|
||||
evt.set('shouli',true);
|
||||
var list=[];
|
||||
var equip3=target.getCards('e',card=>get.subtype(card,false)=='equip3');
|
||||
var equip4=target.getCards('e',card=>get.subtype(card,false)=='equip4');
|
||||
var equip3=target.getCards('e',card=>get.is.defendingMount(card,false));
|
||||
var equip4=target.getCards('e',card=>get.is.attackingMount(card,false));
|
||||
var backupx=_status.event;
|
||||
_status.event=evt;
|
||||
try{
|
||||
|
@ -1791,8 +1793,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return false;
|
||||
})){
|
||||
list.push('sha');
|
||||
};
|
||||
}catch(e){game.print(e)};
|
||||
}
|
||||
}catch(e){game.print(e)}
|
||||
_status.event=backupx;
|
||||
if(list.length==1){
|
||||
event.cardName=list[0];
|
||||
|
@ -1806,13 +1808,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}).set('cards',cards)
|
||||
}
|
||||
else player.choosePlayerCard(true,target,'e').set('filterButton',function(button){
|
||||
var type=get.subtype(button.link);
|
||||
return type=='equip3'||type=='equip4';
|
||||
var card=button.link;
|
||||
return get.is.attackingMount(card)||get.is.defendingMount(card);
|
||||
});
|
||||
'step 1'
|
||||
var evt=event.getParent(2);
|
||||
if(result.bool&&result.links&&result.links.length){
|
||||
var name=(event.cardName||(get.subtype(result.links[0])=='equip4'?'sha':'shan'));
|
||||
var name=(event.cardName||(get.is.attackingMount(result.links[0])?'sha':'shan'));
|
||||
if(evt.name=='chooseToUse'){
|
||||
game.broadcastAll(function(result,name){
|
||||
lib.skill.shouli_backup.viewAs={
|
||||
|
@ -1854,9 +1856,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
respondSha:true,
|
||||
respondShan:true,
|
||||
skillTagFilter:function(player,tag){
|
||||
var subtype=(tag=='respondSha'?'equip4':'equip3');
|
||||
var func=get.is[tag=='respondSha'?'attackingMount':'defendingMount'];
|
||||
return game.hasPlayer(function(current){
|
||||
return current.hasCard(card=>get.subtype(card,false)==subtype,'e');
|
||||
return current.hasCard(card=>func(card,false),'e');
|
||||
});
|
||||
},
|
||||
order:2,
|
||||
|
@ -4400,14 +4402,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var list=[];
|
||||
for(var i in player.disabledSkills){
|
||||
if(player.disabledSkills[i].contains(skill)) list.push(i);
|
||||
};
|
||||
}
|
||||
if(list.length){
|
||||
var str='失效技能:';
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(lib.translate[list[i]+'_info']) str+=get.translation(list[i])+'、';
|
||||
};
|
||||
}
|
||||
return str.slice(0,str.length-1);
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -4987,7 +4989,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
maixie:true,
|
||||
maixie_hp:true,
|
||||
combo:'sbaiyin',
|
||||
/*effect:{
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
|
||||
if(get.tag(card,'damage')){
|
||||
|
@ -5011,7 +5013,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return 'zeroplayertarget';
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
},
|
||||
renjie2:{
|
||||
|
@ -5028,7 +5030,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
player.addMark('renjie',trigger.getl(player).cards2.length);
|
||||
}
|
||||
},
|
||||
},
|
||||
sbaiyin:{
|
||||
skillAnimation:'epic',
|
||||
|
@ -5046,11 +5048,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.addSkill('jilue');
|
||||
player.awakenSkill('sbaiyin');
|
||||
},
|
||||
derivation:'jilue',
|
||||
derivation:['jilue','reguicai','fangzhu','rejizhi','rezhiheng','rewansha'],
|
||||
},
|
||||
jilue:{
|
||||
unique:true,
|
||||
group:['jilue_guicai','jilue_fangzhu','jilue_wansha','jilue_zhiheng','jilue_jizhi','jilue_jizhi_clear']
|
||||
group:['jilue_guicai','jilue_fangzhu','jilue_wansha','jilue_zhiheng','jilue_jizhi'],
|
||||
},
|
||||
jilue_guicai:{
|
||||
audio:1,
|
||||
|
@ -5251,7 +5253,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
skillTagFilter:function(player,tag,arg){
|
||||
if(tag==='nokeep') return player.isPhaseUsing()&&!player.getStat().skill.jilue_zhiheng&&player.hasCard((card)=>get.name(card)!=='tao','h');
|
||||
},
|
||||
threaten:1.5
|
||||
},
|
||||
},
|
||||
jilue_jizhi:{
|
||||
|
@ -5260,9 +5261,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filter:function(event,player){
|
||||
return (get.type(event.card,'trick')=='trick'&&event.card.isCard&&player.hasMark('renjie'));
|
||||
},
|
||||
init:function(player){
|
||||
player.storage.jilue_jizhi=0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.removeMark('renjie',1);
|
||||
|
@ -5277,33 +5275,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 2'
|
||||
if(result.bool){
|
||||
player.discard(event.card);
|
||||
player.storage.jilue_jizhi++;
|
||||
if(_status.currentPhase==player){
|
||||
player.markSkill('jilue_jizhi');
|
||||
}
|
||||
player.addTempSkill('jilue_jizhi_clear');
|
||||
player.addMark('jilue_jizhi_clear',1,false);
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
threaten:1.4
|
||||
},
|
||||
mod:{
|
||||
maxHandcard:function(player,num){
|
||||
return num+player.storage.jilue_jizhi;
|
||||
}
|
||||
},
|
||||
intro:{
|
||||
content:'本回合手牌上限+#',
|
||||
},
|
||||
subSkill:{
|
||||
clear:{
|
||||
trigger:{global:'phaseAfter'},
|
||||
silent:true,
|
||||
content:function(){
|
||||
player.storage.jilue_jizhi=0;
|
||||
player.unmarkSkill('jilue_jizhi');
|
||||
}
|
||||
}
|
||||
}
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
mod:{
|
||||
maxHandcard:function(player,num){
|
||||
return num+player.countMark('jilue_jizhi_clear');
|
||||
},
|
||||
},
|
||||
intro:{content:'手牌上限+#'},
|
||||
},
|
||||
},
|
||||
},
|
||||
wushen:{
|
||||
mod:{
|
||||
|
@ -5380,7 +5367,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
wuhun2:{
|
||||
trigger:{
|
||||
player:'dieBegin',
|
||||
player:'dieBegin',
|
||||
},
|
||||
forced:true,
|
||||
popup:false,
|
||||
|
@ -5405,8 +5392,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return -ai.get.attitude(_status.event.player,target);
|
||||
});
|
||||
"step 1"
|
||||
player.line(result.targets[0],'fire');
|
||||
result.targets[0].addSkill('wuhun3')
|
||||
player.line(result.targets[0],'fire');
|
||||
result.targets[0].addSkill('wuhun3')
|
||||
},
|
||||
ai:{
|
||||
threaten:0.5,
|
||||
|
@ -5965,7 +5952,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(player.countCards('he',{suit:'heart'})<Math.max(1,player.hp)) return false;
|
||||
break;
|
||||
}
|
||||
default:return true;break;
|
||||
default:return true;
|
||||
}
|
||||
},
|
||||
maixie:true,
|
||||
|
@ -6501,7 +6488,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
else{
|
||||
player.addTempSkill('nzry_longnu_1','phaseUseAfter');
|
||||
};
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
'1':{
|
||||
|
@ -6607,7 +6594,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
result.targets[0].link(true);
|
||||
}else{
|
||||
event.finish();
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -6662,8 +6649,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
result.targets[0].link(true);
|
||||
player.discardPlayerCard(result.targets[0],1,'hej',true);
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
'step 2'
|
||||
if(player.countMark('nzry_junlve')>7){
|
||||
player.chooseBool().set('ai',function(){
|
||||
|
@ -6671,7 +6658,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}).set('prompt','是否弃置所有“军略”标记并对所有其他角色造成1点伤害?');
|
||||
}else{
|
||||
event.finish();
|
||||
};
|
||||
}
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var players=game.players.slice(0).sortBySeat();
|
||||
|
@ -6679,8 +6666,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.removeMark('nzry_junlve',player.countMark('nzry_junlve'));
|
||||
for(var i=0;i<players.length;i++){
|
||||
if(players[i]!=player) players[i].damage();
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
"nzry_dinghuo":{
|
||||
|
@ -6833,14 +6820,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var list=[];
|
||||
for(var i in player.disabledSkills){
|
||||
if(player.disabledSkills[i].contains(skill)) list.push(i);
|
||||
};
|
||||
}
|
||||
if(list.length){
|
||||
var str='失效技能:';
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(lib.translate[list[i]+'_info']) str+=get.translation(list[i])+'、';
|
||||
};
|
||||
}
|
||||
return str.slice(0,str.length-1);
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -6969,7 +6956,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
chooseButton.set('filterButton',function(button){
|
||||
for(var i=0;i<ui.selected.buttons.length;i++){
|
||||
if(get.suit(button.link)==get.suit(ui.selected.buttons[i].link)) return false;
|
||||
};
|
||||
}
|
||||
return true;
|
||||
});
|
||||
'step 1'
|
||||
|
@ -6980,8 +6967,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
event.list1.push(list[i]);
|
||||
}else{
|
||||
event.list2.push(list[i]);
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
if(event.list1.length&&event.list2.length){
|
||||
game.loseAsync({
|
||||
lose_list:[
|
||||
|
@ -6995,7 +6982,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
target.discard(event.list2);
|
||||
}
|
||||
else player.discard(event.list1);
|
||||
};
|
||||
}
|
||||
'step 2'
|
||||
if(event.list1.length+event.list2.length==4){
|
||||
if(event.list1.length==0) player.loseMaxHp();
|
||||
|
@ -7006,13 +6993,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(evt.name=='phaseUse'){
|
||||
evt.skipped=true;
|
||||
break;
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
player.addTempSkill('drlt_poxi1',{player:'phaseAfter'});
|
||||
};
|
||||
}
|
||||
if(event.list1.length==3) player.recover();
|
||||
if(event.list1.length==4) player.draw(4);
|
||||
};
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:13,
|
||||
|
@ -7123,7 +7110,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var mark=player.countMark('drlt_jieying_mark');
|
||||
player.removeMark('drlt_jieying_mark',mark);
|
||||
target.addMark('drlt_jieying_mark',mark);
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
'3':{
|
||||
|
|
|
@ -1959,7 +1959,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
case 'jiu':return 3.01;
|
||||
case 'sha':
|
||||
if(button.link[3]=='fire') return 2.95;
|
||||
else if(button.link[3]=='fire') return 2.92;
|
||||
else if(button.link[3]=='thunder') return 2.92;
|
||||
else return 2.9;
|
||||
default:return 2+_status.event.getRand()*2;
|
||||
}
|
||||
|
|
|
@ -4,16 +4,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
name:'huicui',
|
||||
connect:true,
|
||||
character:{
|
||||
dc_sunchen:['male','wu',4,['dczigu','dczuowei'],['unseen']],
|
||||
dc_sunchen:['male','wu',4,['dczigu','dczuowei']],
|
||||
dc_zhangmancheng:['male','qun',4,['dclvecheng','dczhongji']],
|
||||
yue_zhoufei:['female','wu',3,['dclingkong','dcxianshu']],
|
||||
dc_wuban:['male','shu',4,['dcyouzhan'],['clan:陈留吴氏','unseen']],
|
||||
dc_wuban:['male','shu',4,['dcyouzhan'],['clan:陈留吴氏']],
|
||||
yue_caiwenji:['female','qun',3,['dcshuangjia','dcbeifen']],
|
||||
liuchongluojun:['male','qun',3,['dcminze','dcjini']],
|
||||
yuechen:['male','wei',4,['dcporui','dcgonghu']],
|
||||
zhangkai:['male','qun',4,['dcxiangshu']],
|
||||
gaoxiang:['male','shu',4,['dcchiying']],
|
||||
yuanyin:['male','qun',3,['dcmoshou','dcyunjiu'],['unseen']],
|
||||
yuanyin:['male','qun',3,['dcmoshou','dcyunjiu']],
|
||||
dongwan:['female','qun',3,['dcshengdu','dcjieling']],
|
||||
zhangchu:['female','qun',3,['dcjizhong','dcrihui','dcguangshi']],
|
||||
peiyuanshao:['male','qun',4,['dcmoyu']],
|
||||
|
@ -4138,7 +4138,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var cards=evt.cards.filterInD();
|
||||
return get.value(cards,evt.player)*get.attitude(player,evt.player);
|
||||
}
|
||||
return 0;
|
||||
})
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
|
@ -5781,7 +5780,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
subSkill:{
|
||||
blocker:{
|
||||
charlotte:true,
|
||||
init:function(player,skill){
|
||||
player.addSkillBlocker(skill);
|
||||
},
|
||||
|
@ -10165,7 +10163,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
characterTitle:{
|
||||
},
|
||||
perfectPair:{},
|
||||
characterFilter:{
|
||||
},
|
||||
dynamicTranslate:{
|
||||
|
|
|
@ -384,7 +384,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
onremove:true,
|
||||
filter:function(event,player){
|
||||
if(!event.card.storage||!event.card.storage.jsrgzhenfeng) return false;
|
||||
debugger
|
||||
// debugger
|
||||
var str=event.target.getSkills(null,false,false).map(skill=>{
|
||||
var info=get.info(skill);
|
||||
if(!info||info.charlotte) return;
|
||||
|
@ -1992,7 +1992,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
subSkill:{
|
||||
undist:{
|
||||
group:'undist',
|
||||
charlotte:true,
|
||||
trigger:{
|
||||
player:['useCardAfter','damageEnd'],
|
||||
},
|
||||
|
@ -2954,7 +2953,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(count==1) return true;
|
||||
for(var i=0;i<ui.selected.buttons.length;i++){
|
||||
if(get.owner(button.link)==get.owner(ui.selected.buttons[i].link)) return false;
|
||||
};
|
||||
}
|
||||
return true;
|
||||
}).set('count',targets.length).set('ai',button=>{
|
||||
var player=_status.event.player;
|
||||
|
@ -4390,7 +4389,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var ind=skillx.lastIndexOf('_');
|
||||
if(ind==-1) break;
|
||||
skillx=skillx.slice(0,ind);
|
||||
};
|
||||
}
|
||||
}
|
||||
if(popup!=false&&!infox.silent) infox.forced=false;
|
||||
if(!infox.charlotte&&infox.mod) delete infox.mod;
|
||||
|
|
|
@ -31,8 +31,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xin_wuban:['male','shu',4,['xinjintao'],['clan:陈留吴氏','character:wuban']],
|
||||
baoxin:['male','qun',4,['mutao','yimou'],['character:tw_baoxin','die_audio:tw_baoxin']],
|
||||
jiangji:['male','wei',3,['twjichou','jilun'],['character:tw_jiangji','die_audio:tw_jiangji']],
|
||||
liwei:['male','shu',4,['jiaohua'],['character:tw_liwei','die:tw_liwei']],
|
||||
laimin:['male','shu',3,['laishou','luanqun'],['unseen']],
|
||||
liwei:['male','shu',4,['jiaohua'],['die_audio:tw_liwei']],
|
||||
laimin:['male','shu',3,['laishou','luanqun']],
|
||||
yj_zhoubuyi:['male','wei',3,['mbhuiyao','mbquesong']],
|
||||
xin_guozhao:['female','wei',3,['yichong','wufei']],
|
||||
xin_zhangyi:['male','shu',4,['xinwurong','shizhi']],
|
||||
|
@ -4739,7 +4739,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xingtu:{
|
||||
trigger:{player:'useCard'},
|
||||
filter:function(event,player){
|
||||
var num1=get.number(event.card),num2=player.storage.xingtu;
|
||||
var evt=lib.skill.dcjianying.getLastUsed(player,event);
|
||||
if(!evt||!evt.card) return false;
|
||||
var num1=get.number(event.card),num2=get.number(evt.card);
|
||||
return typeof num1=='number'&&typeof num2=='number'&&num2%num1==0;
|
||||
},
|
||||
forced:true,
|
||||
|
@ -4748,29 +4750,73 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
mod:{
|
||||
cardUsable:function(card,player){
|
||||
var num1=get.number(card),num2=player.storage.xingtu;
|
||||
if(typeof num1=='number'&&typeof num2=='number'&&num1%num2==0) return Infinity;
|
||||
if(typeof card=='object'){
|
||||
var evt=lib.skill.dcjianying.getLastUsed(player);
|
||||
if(!evt||!evt.card) return;
|
||||
var num1=get.number(card),num2=get.number(evt.card);
|
||||
if(typeof num1=='number'&&typeof num2=='number'&&num1%num2==0) return Infinity;
|
||||
}
|
||||
},
|
||||
aiOrder:function(player,card,num){
|
||||
var num1=get.number(card),num2=player.storage.xingtu;
|
||||
if(typeof num1=='number'&&typeof num2=='number'&&num2%num1==0) return num+5;
|
||||
if(typeof card=='object'){
|
||||
var evt=lib.skill.dcjianying.getLastUsed(player);
|
||||
if(!evt||!evt.card) return;
|
||||
var num1=get.number(card),num2=num2=get.number(evt.card);
|
||||
if(typeof num1=='number'&&typeof num2=='number'&&num2%num1==0) return num+5;
|
||||
}
|
||||
},
|
||||
},
|
||||
group:'xingtu_record',
|
||||
intro:{
|
||||
content:'当前记录:X=#',
|
||||
init:function(player){
|
||||
player.addSkill('xingtu_mark');
|
||||
var history=player.getAllHistory('useCard');
|
||||
if(history.length){
|
||||
var trigger=history[history.length-1],num=get.number(trigger.card);
|
||||
player.storage.xingtu_mark=num;
|
||||
player[typeof num!='number'?'unmarkSkill':'markSkill']('xingtu_mark');
|
||||
}
|
||||
},
|
||||
onremove:function(player){
|
||||
player.removeSkill('xingtu_mark');
|
||||
player.removeGaintag('xingtu1');
|
||||
player.removeGaintag('xingtu2');
|
||||
delete player.storage.xingtu_mark;
|
||||
},
|
||||
subSkill:{
|
||||
record:{
|
||||
trigger:{player:'useCardAfter'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return typeof get.number(event.card)=='number';
|
||||
mark:{
|
||||
charlotte:true,
|
||||
trigger:{
|
||||
player:['useCard1','gainAfter'],
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
filter:function(event,player,name){
|
||||
if(!player.countCards('h')) return false;
|
||||
return name=='useCard1'||event.getg(player).length;
|
||||
},
|
||||
direct:true,
|
||||
firstDo:true,
|
||||
content:function(){
|
||||
player.storage.xingtu=get.number(trigger.card);
|
||||
player.markSkill('xingtu');
|
||||
'step 0'
|
||||
player.removeGaintag('xingtu1');
|
||||
player.removeGaintag('xingtu2');
|
||||
if(event.triggername=='useCard1'){
|
||||
var num=get.number(trigger.card,player);
|
||||
player.storage.xingtu_mark=num;
|
||||
player[typeof num!='number'?'unmarkSkill':'markSkill']('xingtu_mark');
|
||||
if(typeof num!='number') event.finish();
|
||||
}
|
||||
'step 1'
|
||||
var cards1=[],cards2=[],num=player.storage.xingtu_mark;
|
||||
player.getCards('h').forEach(card=>{
|
||||
var numx=get.number(card,player);
|
||||
if(typeof numx=='number'){
|
||||
if(numx%num==0) cards1.push(card);
|
||||
if(num%numx==0) cards2.push(card);
|
||||
}
|
||||
});
|
||||
player.addGaintag(cards1,'xingtu1');
|
||||
player.addGaintag(cards2,'xingtu2');
|
||||
},
|
||||
intro:{content:'上一张牌的点数:#'},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -4784,7 +4830,33 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
selectCard:[2,Infinity],
|
||||
check:function(card){
|
||||
if(ui.selected.cards.length>1) return 0;
|
||||
return 4-get.value(card);
|
||||
var player=_status.event.player;
|
||||
if(player.hasSkill('xingtu')&&player.storage.xingtu){
|
||||
var cards=player.getCards('he');
|
||||
var num=player.storage.xingtu,stop=false;
|
||||
for(var i=0;i<=cards.length;i++){
|
||||
if(i!=cards.length){
|
||||
var num1=get.number(cards[i],player);
|
||||
if(typeof num1!='number') continue;
|
||||
for(var j=0;j<cards.length;j++){
|
||||
if(i==j) continue;
|
||||
var num2=get.number(cards[j],player);
|
||||
if(typeof num2!='number') continue;
|
||||
var sum=num1+num2;
|
||||
if(sum%num==0||num%sum==0){
|
||||
stop=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(stop) break;
|
||||
}
|
||||
}
|
||||
if(i!=cards.length){
|
||||
var cardx=[cards[i],cards[j]];
|
||||
if(cardx.includes(card)) return 10-get.value(card);
|
||||
}
|
||||
}
|
||||
return 5-get.value(card);
|
||||
},
|
||||
content:function(){
|
||||
var num=0;
|
||||
|
@ -15272,9 +15344,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_gaoshun_prefix:'手杀界',
|
||||
peixiu:'裴秀',
|
||||
xingtu:'行图',
|
||||
xingtu_info:'锁定技。①当你使用有点数的牌结算结束后,你将此牌点数记录为X。②当你使用牌时,若X÷Y的余数为0,则你摸一张牌(Y为此牌的点数)。③你使用Y÷X的余数为0的牌无次数限制(Y为此牌的点数)。',
|
||||
xingtu1:'倍数',
|
||||
xingtu2:'约数',
|
||||
xingtu_info:'锁定技。你使用点数为X的倍数的牌无次数限制,你使用点数为X的约数的牌时摸一张牌(X为你本局游戏使用的上一张牌的点数)。',
|
||||
juezhi:'爵制',
|
||||
juezhi_info:'出牌阶段,你可以弃置至少两张牌,然后从牌堆中获得一张点数为X的牌(X为这些牌的点数和除以13后的余数,且当余数为0时X为13)。',
|
||||
juezhi_info:'出牌阶段,你可以弃置至少两张牌,然后从牌堆中获得一张点数为Y的牌(Y为这些牌的点数和对13取余,余数为0时Y取13)。',
|
||||
sp_jianggan:'手杀蒋干',
|
||||
sp_jianggan_prefix:'手杀',
|
||||
spdaoshu:'盗书',
|
||||
|
|
|
@ -614,8 +614,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filterTarget:function(card,player,target){
|
||||
var event=_status.event,evt=event;
|
||||
if(event._backup) evt=event._backup;
|
||||
var equip3=target.getCards('e',card=>get.subtype(card,false)=='equip3');
|
||||
var equip4=target.getCards('e',card=>get.subtype(card,false)=='equip4');
|
||||
var equip3=target.getCards('e',card=>get.is.defendingMount(card,false));
|
||||
var equip4=target.getCards('e',card=>get.is.attackingMount(card,false));
|
||||
if(equip3.length&&equip3.some(card=>evt.filterCard(get.autoViewAs({
|
||||
name:'shan',
|
||||
storage:{psshouli:true},
|
||||
|
@ -630,7 +630,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return game.hasPlayer(function(current){
|
||||
return evt.filterTarget(sha,player,current);
|
||||
})
|
||||
};
|
||||
}
|
||||
})
|
||||
},
|
||||
prompt:'将场上的一张坐骑牌当做【杀】或【闪】使用或打出',
|
||||
|
@ -639,8 +639,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var evt=event.getParent(2);
|
||||
evt.set('psshouli',true);
|
||||
var list=[];
|
||||
var equip3=target.getCards('e',card=>get.subtype(card,false)=='equip3');
|
||||
var equip4=target.getCards('e',card=>get.subtype(card,false)=='equip4');
|
||||
var equip3=target.getCards('e',card=>get.is.defendingMount(card,false));
|
||||
var equip4=target.getCards('e',card=>get.is.attackingMount(card,false));
|
||||
var backupx=_status.event;
|
||||
_status.event=evt;
|
||||
try{
|
||||
|
@ -665,8 +665,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return false;
|
||||
})){
|
||||
list.push('sha');
|
||||
};
|
||||
}catch(e){game.print(e)};
|
||||
}
|
||||
}catch(e){game.print(e)}
|
||||
_status.event=backupx;
|
||||
if(list.length==1){
|
||||
event.cardName=list[0];
|
||||
|
@ -680,13 +680,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}).set('cards',cards)
|
||||
}
|
||||
else player.choosePlayerCard(true,target,'e').set('filterButton',function(button){
|
||||
var type=get.subtype(button.link);
|
||||
return type=='equip3'||type=='equip4';
|
||||
var card=button.link;
|
||||
return get.is.attackingMount(card)||get.is.defendingMount(card);
|
||||
});
|
||||
'step 1'
|
||||
var evt=event.getParent(2);
|
||||
if(result.bool&&result.links&&result.links.length){
|
||||
var name=(event.cardName||(get.subtype(result.links[0])=='equip4'?'sha':'shan'));
|
||||
var name=(event.cardName||(get.is.attackingMount(result.links[0])?'sha':'shan'));
|
||||
if(evt.name=='chooseToUse'){
|
||||
game.broadcastAll(function(result,name){
|
||||
lib.skill.psshouli_backup.viewAs={
|
||||
|
@ -728,9 +728,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
respondSha:true,
|
||||
respondShan:true,
|
||||
skillTagFilter:function(player,tag){
|
||||
var subtype=(tag=='respondSha'?'equip4':'equip3');
|
||||
var func=get.is[tag=='respondSha'?'attackingMount':'defendingMount'];
|
||||
return game.hasPlayer(function(current){
|
||||
return current.getEquip(subtype);
|
||||
return current.hasCard(card=>func(card,false),'e');
|
||||
});
|
||||
},
|
||||
order:2,
|
||||
|
@ -1533,7 +1533,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.addToExpansion(result.cards[0],'give',player).gaintag.add('psshiyin');
|
||||
var card=player.getExpansions('psshiyin')[0];
|
||||
if(card) player.gain(card,'gain2');
|
||||
};
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -1654,7 +1654,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(card.name=='du') addi-=5;
|
||||
if(get.color(card)=='black') addi-=6;
|
||||
if(player==event.player){
|
||||
if(Boolean(event.small)){
|
||||
if(event.small){
|
||||
return -getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
return getn(card)-get.value(card)/2+addi;
|
||||
|
@ -2670,9 +2670,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return '没有“戮”';
|
||||
}
|
||||
},
|
||||
content:function(storage,player){
|
||||
return '共有'+get.cnNumber(storage.length)+'张“戮”';
|
||||
},
|
||||
// content:function(storage,player){
|
||||
// return '共有'+get.cnNumber(storage.length)+'张“戮”';
|
||||
// },
|
||||
},
|
||||
group:'zyshilu_zhiheng',
|
||||
subSkill:{
|
||||
|
@ -4096,7 +4096,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
list.push(['基本','','sha']);
|
||||
}
|
||||
for(var i of lib.inpile_nature){
|
||||
if(lib.filter.cardUsable({name:'sha',nature:i},player,event.getParent('chooseToUse'))&&game.hasPlayer(function(current){
|
||||
if(lib.filter.cardUsable({name:'sha',nature:i},player,event.getParent('chooseToUse'))&&game.hasPlayer(function(current){
|
||||
return player.canUse({name:'sha',nature:i},current);
|
||||
})){
|
||||
list.push(['基本','','sha',i]);
|
||||
|
@ -4594,14 +4594,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(cards.length) player.gain(cards,'gain2','log');
|
||||
'step 5'
|
||||
if(event.count>0&&player.hasSkill('spyinzhi')){
|
||||
player.chooseBool(get.prompt2('spyinzhi')).set('frequentSkill','spyinzhi');
|
||||
player.chooseBool(get.prompt2('spyinzhi')).set('frequentSkill','spyinzhi');
|
||||
}
|
||||
else event.finish();
|
||||
'step 6'
|
||||
if(result.bool){
|
||||
player.logSkill('spyinzhi');
|
||||
event.goto(1);
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
spmingjian:{
|
||||
|
@ -4836,7 +4836,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseButton([get.prompt('sphantong'),player.storage.sphantong],function(button){return -1});
|
||||
player.chooseButton([get.prompt('sphantong'),player.storage.sphantong],function(button){
|
||||
var player=_status.event.player;
|
||||
if(_status.currentPhase==player){
|
||||
//血裔
|
||||
if((player.hasJudge('lebu')||player.skipList.includes('phaseUse'))&&game.hasPlayer(function(current){
|
||||
return current!=player&¤t.group=='qun';
|
||||
})) return 1;
|
||||
//激将
|
||||
if(!player.hasJudge('lebu')&&!player.skipList.includes('phaseUse')&&game.hasPlayer(function(current){
|
||||
return current!=player&¤t.group=='shu'&¤t.hasSha()&&get.attitude(player,current)>0&&get.attitude(current,player)>0;
|
||||
})&&game.hasPlayer(function(target){
|
||||
return player.canUse({name:'sha'},target)&&get.effect(target,{name:'sha'},player,player)>0;
|
||||
})) return 1;
|
||||
}
|
||||
//护驾
|
||||
else if(!player.hasShan()&&game.hasPlayer(function(current){
|
||||
return current!=player&¤t.group=='wei'&¤t.mayHaveShan()&&get.attitude(player,current)>0&&get.attitude(current,player)>0;
|
||||
})) return 1;
|
||||
return -1;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('sphantong');
|
||||
|
@ -4848,31 +4867,41 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
game.cardsDiscard(card);
|
||||
var list=['hujia','jijiang','jiuyuan','xueyi'];
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(player.hasZhuSkill(list[i])) list.splice(i--,1);
|
||||
if(player.hasSkill(list[i])) list.splice(i--,1);
|
||||
}
|
||||
if(list.length){
|
||||
player.chooseControl(list).set('prompt','选择获得以下技能中的一个').set('ai',function(){
|
||||
var player=_status.event.player;
|
||||
if(_status.currentPhase==player){
|
||||
//血裔
|
||||
if((player.hasJudge('lebu')||player.skipList.includes('phaseUse'))&&game.hasPlayer(function(current){
|
||||
return current!=player&¤t.group=='qun';
|
||||
})) return 'xueyi';
|
||||
//激将
|
||||
if(!player.hasJudge('lebu')&&!player.skipList.includes('phaseUse')&&game.hasPlayer(function(current){
|
||||
return current!=player&¤t.group=='shu'&¤t.hasSha()&&get.attitude(player,current)>0&&get.attitude(current,player)>0;
|
||||
})&&game.hasPlayer(function(target){
|
||||
return player.canUse({name:'sha'},target)&&get.effect(target,{name:'sha'},player,player)>0;
|
||||
})) return 'jijiang';
|
||||
}
|
||||
//护驾
|
||||
else if(!player.hasShan()&&game.hasPlayer(function(current){
|
||||
return current!=player&¤t.group=='wei'&¤t.mayHaveShan()&&get.attitude(player,current)>0&&get.attitude(current,player)>0;
|
||||
})) return 'hujia';
|
||||
});
|
||||
}
|
||||
if(list.length>0) player.chooseControl(list).set('prompt','选择获得以下技能中的一个');
|
||||
else event.finish();
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
var skill=result.control;
|
||||
player.addTempSkill(skill);
|
||||
if(!player.storage.zhuSkill_sphantong) player.storage.zhuSkill_sphantong=[];
|
||||
player.storage.zhuSkill_sphantong.add(skill);
|
||||
player.popup(skill,'wood');
|
||||
game.log(player,'获得了技能','#g【'+get.translation(skill)+'】');
|
||||
var next=game.createEvent('sphantong_clear',false);
|
||||
event.next.remove(next);
|
||||
trigger.after.push(next);
|
||||
next.player=player;
|
||||
next.skill=skill;
|
||||
next.setContent(function(){
|
||||
if(player.storage.zhuSkill_sphantong) player.storage.zhuSkill_sphantong.remove(event.skill);
|
||||
})
|
||||
},
|
||||
},
|
||||
sphuangen:{
|
||||
trigger:{global:'useCardToPlayered'},
|
||||
trigger:{global:'useCardToPlayered'},
|
||||
filter:function(event,player){
|
||||
if(!event.isFirstTarget) return false;
|
||||
if(get.type(event.card)!='trick') return false;
|
||||
|
@ -5436,7 +5465,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
enable:'phaseUse',
|
||||
filterCard:{suit:'diamond'},
|
||||
filterTarget:true,
|
||||
filterTarget:function(card,player,target){
|
||||
return target.canAddJudge({name:'yanxiao_card'});
|
||||
},
|
||||
check:function(card){
|
||||
return 7-get.value(card);
|
||||
},
|
||||
|
|
|
@ -520,7 +520,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
old_guhuo:{
|
||||
audio:2,
|
||||
group:['old_guhuo_guess'],
|
||||
enable:['chooseToUse','chooseToRespond'],
|
||||
hiddenCard:function(player,name){
|
||||
return (lib.inpile.contains(name)&&player.countCards('hs')>0);
|
||||
|
@ -636,6 +635,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
precontent:function(){
|
||||
player.logSkill('old_guhuo');
|
||||
player.addTempSkill('old_guhuo_guess');
|
||||
var card=event.result.cards[0];
|
||||
event.result.card.suit=get.suit(card);
|
||||
event.result.card.number=get.number(card);
|
||||
|
|
|
@ -342,6 +342,8 @@ window.noname_character_rank={
|
|||
'key_kyou',
|
||||
'key_tomoyo',
|
||||
'star_yuanshu',
|
||||
'jiangji',
|
||||
'tianshangyi',
|
||||
],
|
||||
am:[
|
||||
'diy_caiwenji',
|
||||
|
@ -621,6 +623,11 @@ window.noname_character_rank={
|
|||
'jsrg_xiahourong',
|
||||
'jsrg_sunshangxiang',
|
||||
'jsrg_machao',
|
||||
'sunyu',
|
||||
're_caorui',
|
||||
're_zhugedan',
|
||||
'tw_yanxiang',
|
||||
'yanxiang',
|
||||
],
|
||||
bp:[
|
||||
'chess_diaochan',
|
||||
|
@ -981,6 +988,11 @@ window.noname_character_rank={
|
|||
'jsrg_zhangchu',
|
||||
'ol_dingshangwan',
|
||||
'ol_liwan',
|
||||
'chengjichengcui',
|
||||
'xin_zhangliang',
|
||||
'liwei',
|
||||
'xin_wuban',
|
||||
'ol_liuyan',
|
||||
],
|
||||
b:[
|
||||
'diy_feishi',
|
||||
|
@ -1288,6 +1300,10 @@ window.noname_character_rank={
|
|||
'feiyao',
|
||||
'jsrg_xiahouen',
|
||||
'old_shen_zhaoyun',
|
||||
'sb_qiaoxiao',
|
||||
're_simalang',
|
||||
'laimin',
|
||||
'baoxin',
|
||||
],
|
||||
bm:[
|
||||
'diy_xizhenxihong',
|
||||
|
@ -1480,6 +1496,7 @@ window.noname_character_rank={
|
|||
'huanfan',
|
||||
'jsrg_xugong',
|
||||
'old_xiaoqiao',
|
||||
'old_guanyu',
|
||||
],
|
||||
c:[
|
||||
'xiahoudun',
|
||||
|
@ -1543,6 +1560,7 @@ window.noname_character_rank={
|
|||
'ol_huban',
|
||||
'sb_menghuo',
|
||||
'old_caocao',
|
||||
'sb_yl_luzhi',
|
||||
],
|
||||
d:[
|
||||
'lvmeng',
|
||||
|
|
|
@ -23,10 +23,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_xushu:['male','shu',4,['zhuhai','qianxin']],
|
||||
re_lidian:['male','wei',3,['xunxun','xinwangxi']],
|
||||
re_zhongyao:['male','wei',3,['rehuomo','zuoding'],['clan:颍川钟氏']],
|
||||
xin_zhangliang:['male','qun',4,['rejijun','refangtong'],['unseen']],
|
||||
re_simalang:['male','wei',3,['requji','rejunbing'],['unseen']],
|
||||
re_zhugedan:['male','wei',4,['regongao','rejuyi'],['unseen']],
|
||||
re_caorui:['male','wei',3,['huituo','mingjian','rexingshuai'],['unseen','zhu']],
|
||||
xin_zhangliang:['male','qun',4,['rejijun','refangtong']],
|
||||
re_simalang:['male','wei',3,['requji','rejunbing']],
|
||||
re_zhugedan:['male','wei',4,['regongao','rejuyi']],
|
||||
re_caorui:['male','wei',3,['huituo','mingjian','rexingshuai'],['zhu']],
|
||||
re_caochong:['male','wei',3,['rechengxiang','renxin']],
|
||||
ol_zhangzhang:['male','wu',3,['olzhijian','olguzheng']],
|
||||
re_jsp_huangyueying:['female','qun',3,['rejiqiao','relinglong']],
|
||||
|
@ -331,10 +331,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
switch(button.link[2]){
|
||||
case 'tao':return 5;
|
||||
case 'jiu':return 3.01;
|
||||
case 'shan':return 3.01;
|
||||
case 'sha':
|
||||
if(button.link[3]=='fire') return 2.95;
|
||||
else if(button.link[3]=='fire') return 2.92;
|
||||
else if(button.link[3]=='thunder') return 2.92;
|
||||
else return 2.9;
|
||||
case 'shan':return 1;
|
||||
}
|
||||
|
@ -1195,7 +1194,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var color=get.color(card),colors=player.getStorage('olshuangxiong_effect');
|
||||
for(var i of colors){
|
||||
if(color!=i) return true;
|
||||
};
|
||||
}
|
||||
return false;
|
||||
},
|
||||
prompt:function(){
|
||||
|
@ -2305,7 +2304,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return current!=player;
|
||||
}).sortBySeat(target);
|
||||
for(var target of players){
|
||||
if(get.damageEffect(target,player,target,'fire')>=0){num=0;continue};
|
||||
if(get.damageEffect(target,player,target,'fire')>=0){num=0;continue}
|
||||
var shao=false;
|
||||
num++;
|
||||
if(target.countCards('he',function(card){
|
||||
|
@ -3171,7 +3170,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
audio:2,
|
||||
check:function(event,player){
|
||||
return player.getHistory('damage').indexOf(event)==0;
|
||||
return player.getHistory('damage').indexOf(event)==0;
|
||||
},
|
||||
filter:function(event,player){
|
||||
var index=player.getHistory('damage').indexOf(event);
|
||||
|
@ -3851,6 +3850,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.loseMaxHp();
|
||||
player.addSkill('rejianyan');
|
||||
},
|
||||
derivation:'rejianyan',
|
||||
},
|
||||
rejianyan:{
|
||||
audio:2,
|
||||
|
@ -4416,6 +4416,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(player.countMark('redanxin')<2) player.addMark('redanxin',1,false);
|
||||
},
|
||||
intro:{content:'当前升级等级。:Lv#'},
|
||||
ai:{
|
||||
maixie:true,
|
||||
effect:{
|
||||
target:(card,player,target)=>{
|
||||
if(!get.tag(card,'damage')) return;
|
||||
if(target.hp<2&&target.countCards('hs')<3||player.hasSkillTag('jueqing',false,target)) return -2;
|
||||
if(target.countMark('redanxin')>1) return [1,1];
|
||||
return [1,Math.min(3.2,0.8*target.hp)];
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
//马岱
|
||||
reqianxi:{
|
||||
|
@ -4501,7 +4512,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
locked:false,
|
||||
enable:'chooseToUse',
|
||||
filterCard:function(card){
|
||||
return (get.type2(card)!='trick'&&get.color(card)=='black');
|
||||
return (get.type2(card)!='trick'&&get.color(card)=='black');
|
||||
},
|
||||
filter:function(event,player){
|
||||
return player.hasCard((card)=>(get.type2(card)!='trick'&&get.color(card)=='black'),'hes');
|
||||
|
@ -6418,7 +6429,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
position:'hs',
|
||||
viewAs:{
|
||||
name:'sha',
|
||||
changbiao:true,
|
||||
|
@ -7373,7 +7383,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(!lib.skill.yongjin.filter(null,player,cards)){
|
||||
event.finish();
|
||||
return;
|
||||
};
|
||||
}
|
||||
var next=player.chooseTarget(2,function(card,player,target){
|
||||
if(ui.selected.targets.length){
|
||||
var from=ui.selected.targets[0];
|
||||
|
@ -7655,7 +7665,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return evt&&evt.cards2&&evt.cards2.filter(function(i){
|
||||
return get.name(i,evt.hs.contains(i)?player:false)=='sha';
|
||||
}).length>0;
|
||||
};
|
||||
}
|
||||
if(event.name=='gain'&&event.player==player) return false;
|
||||
var evt=event.getl(player);
|
||||
return evt&&evt.cards2&&evt.cards2.length>0;
|
||||
|
@ -9468,7 +9478,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player:function(player){
|
||||
if(player.hp<3) return false;
|
||||
var mindist=player.hp;
|
||||
if(player.countCards('hs',card=>player.canSave(card,player))) mindist++;
|
||||
if(player.countCards('hs',card=>player.canSaveCard(card,player))) mindist++;
|
||||
if(game.hasPlayer(function(current){
|
||||
return (get.distance(player,current)<=mindist&&
|
||||
player.canUse('sha',current,false)&&
|
||||
|
@ -10743,6 +10753,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
precontent:function(){
|
||||
player.logSkill('reguhuo');
|
||||
player.addTempSkill('reguhuo_guess');
|
||||
var card=event.result.cards[0];
|
||||
event.result.card.suit=get.suit(card);
|
||||
event.result.card.number=get.number(card);
|
||||
|
@ -10766,7 +10777,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
threaten:1.3,
|
||||
},
|
||||
group:['reguhuo_shan','reguhuo_wuxie','reguhuo_guess'],
|
||||
group:['reguhuo_shan','reguhuo_wuxie'],
|
||||
},
|
||||
reguhuo_shan:{
|
||||
enable:['chooseToUse','chooseToRespond'],
|
||||
|
@ -10803,6 +10814,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
precontent:function(){
|
||||
player.logSkill('reguhuo');
|
||||
player.addTempSkill('reguhuo_guess');
|
||||
var card=event.result.cards[0];
|
||||
event.result.card.suit=get.suit(card);
|
||||
event.result.card.number=get.number(card);
|
||||
|
@ -10843,6 +10855,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
precontent:function(){
|
||||
player.logSkill('reguhuo');
|
||||
player.addTempSkill('reguhuo_guess');
|
||||
var card=event.result.cards[0];
|
||||
event.result.card.suit=get.suit(card);
|
||||
event.result.card.number=get.number(card);
|
||||
|
@ -10970,7 +10983,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 1'
|
||||
if(!result.bool) target.loseHp();
|
||||
'step 2'
|
||||
target.addSkill('rechanyuan');
|
||||
target.addSkillLog('rechanyuan');
|
||||
if(targets.length) event.goto(0);
|
||||
},
|
||||
},
|
||||
|
@ -10978,13 +10991,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
reguhuo_phase:{},
|
||||
rechanyuan:{
|
||||
init:function(player,skill){
|
||||
if(player.hp<=1){
|
||||
player.logSkill(skill);
|
||||
player.addSkill('rechanyuan_log');
|
||||
}
|
||||
player.addSkillBlocker(skill);
|
||||
},
|
||||
onremove:function(player,skill){
|
||||
player.removeSkill('rechanyuan_log');
|
||||
player.removeSkillBlocker(skill);
|
||||
},
|
||||
charlotte:true,
|
||||
locked:true,
|
||||
skillBlocker:function(skill,player){
|
||||
return skill!='chanyuan'&&skill!='rechanyuan'&&!lib.skill[skill].charlotte&&player.hp<=1;
|
||||
},
|
||||
|
@ -10997,8 +11013,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
if(list.length) str+=('<br><li>失效技能:'+get.translation(list))
|
||||
return str;
|
||||
},
|
||||
},
|
||||
audio:2,
|
||||
trigger:{player:'changeHp'},
|
||||
filter:function(event,player){
|
||||
return (player.hp<=1)!=(player.hasSkill('rechanyuan_log'));
|
||||
},
|
||||
direct:true,
|
||||
locked:true,
|
||||
content:function(){
|
||||
if(player.hp<=1){
|
||||
player.logSkill('rechanyuan');
|
||||
player.addSkill('rechanyuan_log');
|
||||
}
|
||||
}
|
||||
else player.removeSkill('rechanyuan_log');
|
||||
},
|
||||
subSkill:{
|
||||
log:{charlotte:true},
|
||||
},
|
||||
},
|
||||
botu:{
|
||||
audio:2,
|
||||
|
@ -11158,7 +11191,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(checkx>0) return checkx;
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
}
|
||||
if(attitude>0){
|
||||
return result;
|
||||
}
|
||||
|
@ -11521,7 +11554,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return 1;
|
||||
}
|
||||
else return 4;
|
||||
};
|
||||
}
|
||||
return 3;
|
||||
}).set('logSkill',['new_liyu',trigger.player]);
|
||||
'step 1'
|
||||
|
@ -12033,7 +12066,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(get.attitude(_status.event.player,_status.currentPhase)<0&&_status.currentPhase.needsToDiscard()&&card.name!='du') return -1;
|
||||
for(var i=0;i<ui.selected.cards.length;i++){
|
||||
if(get.type(ui.selected.cards[i])==get.type(card)||(ui.selected.cards[i].name=='du'&&card.name!='du')) return -1;
|
||||
};
|
||||
}
|
||||
if(card.name=='du') return 20;
|
||||
return (_status.event.player.countCards('h')-_status.event.player.hp);
|
||||
},
|
||||
|
@ -12673,7 +12706,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
list.push(['基本','','sha']);
|
||||
}
|
||||
for(var i of lib.inpile_nature){
|
||||
if(lib.filter.cardUsable({name:'sha',nature:i},player,event.getParent('chooseToUse'))&&game.hasPlayer(function(current){
|
||||
if(lib.filter.cardUsable({name:'sha',nature:i},player,event.getParent('chooseToUse'))&&game.hasPlayer(function(current){
|
||||
return player.canUse({name:'sha',nature:i},current);
|
||||
})){
|
||||
list.push(['基本','','sha',i]);
|
||||
|
@ -14312,7 +14345,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(!result.bool&&!event.directbool){
|
||||
//game.cardsDiscard(card);
|
||||
return;
|
||||
};
|
||||
}
|
||||
player.addToExpansion(card,'gain2').gaintag.add('tuntian');
|
||||
},
|
||||
group:'tuntian_dist',
|
||||
|
@ -14931,8 +14964,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
refangzhu_info:'当你受到伤害后,你可以令一名其他角色选择一项:摸X张牌并将武将牌翻面,或弃置X张牌并失去1点体力。(X为你已损失的体力值)',
|
||||
rezaiqi:'再起',
|
||||
rezaiqi_info:'结束阶段开始时,你可以令至多X名角色选择一项:1.摸一张牌,2.令你回复1点体力(X为本回合进入弃牌堆的红色牌数)。',
|
||||
ol_jiangwei:'界姜维',
|
||||
ol_jiangwei_prefix:'界',
|
||||
ol_caiwenji:'界蔡琰',
|
||||
ol_caiwenji_prefix:'界',
|
||||
retuntian:'屯田',
|
||||
|
|
|
@ -38,8 +38,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sb_liubiao:['male','qun',3,['sbzishou','sbzongshi']],
|
||||
sb_zhurong:['female','shu',4,['sblieren','sbjuxiang']],
|
||||
sb_menghuo:['male','shu',4,['sbhuoshou','sbzaiqi']],
|
||||
sb_yl_luzhi:['male','qun',3,['nzry_mingren','sbzhenliang'],['unseen']],
|
||||
sb_xiaoqiao:['female','wu',3,['sbtianxiang','xinhongyan'],['unseen']],
|
||||
sb_yl_luzhi:['male','qun',3,['nzry_mingren','sbzhenliang']],
|
||||
sb_xiaoqiao:['female','wu',3,['sbtianxiang','xinhongyan']],
|
||||
},
|
||||
characterSort:{
|
||||
sb:{
|
||||
|
@ -101,6 +101,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return get.damageEffect(target,player,player);
|
||||
},
|
||||
},
|
||||
combo:'nzry_mingren',
|
||||
},
|
||||
group:'sbzhenliang_draw',
|
||||
subSkill:{
|
||||
|
@ -129,7 +130,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
},
|
||||
ai:{combo:'nzry_mingren'},
|
||||
},
|
||||
//小乔
|
||||
sbtianxiang:{
|
||||
|
@ -1289,7 +1289,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sblianhuan:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
filterCard:{suit:'club'},
|
||||
filter:(event,player)=>player.hasCard(card=>lib.skill.sblianhuan.filterCard(card,player),lib.skill.sblianhuan.position),
|
||||
filterTarget:function(card,player,target){
|
||||
if(player.hasSkill('sblianhuan_blocker')) return false;
|
||||
|
|
|
@ -750,7 +750,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.line(player,trigger.player);
|
||||
player.logSkill('drlt_zhenrong');
|
||||
player.addToExpansion(result.links,trigger.player,'give','log').gaintag.add('drlt_zhenrong');
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
"drlt_hongju":{
|
||||
|
@ -822,11 +822,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var cards=result.links;
|
||||
for(var i=0;i<cards.length;i++){
|
||||
player.storage.drlt_zhenrong.remove(cards[i]);
|
||||
};
|
||||
}
|
||||
player.syncStorage('drlt_zhenrong');
|
||||
player.$throw(cards);
|
||||
player.discardPlayerCard(target,'ej',1,true);
|
||||
};
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:13,
|
||||
|
@ -1117,17 +1117,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 1'
|
||||
switch(result.control){
|
||||
case 'equip1':
|
||||
player.addTempSkill('drlt_jueyan1',{player:'phaseAfter'});
|
||||
player.addTempSkill('drlt_jueyan1');
|
||||
break;
|
||||
case 'equip2':
|
||||
player.draw(3);
|
||||
player.addTempSkill('drlt_jueyan3',{player:'phaseAfter'});
|
||||
player.addTempSkill('drlt_jueyan3');
|
||||
break;
|
||||
case 'equip3_4':
|
||||
player.addTempSkill('drlt_jueyan2',{player:'phaseAfter'});
|
||||
player.addTempSkill('drlt_jueyan2');
|
||||
break;
|
||||
case 'equip5':
|
||||
player.addTempSkill('rejizhi',{player:'phaseAfter'});
|
||||
player.addTempSkill('rejizhi');
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
@ -1146,6 +1146,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
},
|
||||
derivation:'rejizhi',
|
||||
},
|
||||
'drlt_jueyan1':{
|
||||
mod:{
|
||||
|
@ -1268,7 +1269,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
else{
|
||||
player.addTempSkill('drlt_yongsi1',{player:'phaseDiscardAfter'});
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -1482,7 +1483,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var num=1;
|
||||
if(get.type(result.cards[0])=='equip') num=2;
|
||||
player.draw(num);
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
drlt_wanglie:{
|
||||
|
@ -1820,7 +1821,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},'选择一名装备区里牌数大于你的角色').ai=function(target){
|
||||
return -get.attitude(player,target)
|
||||
};
|
||||
};
|
||||
}
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
event.target=result.targets[0];
|
||||
|
@ -1846,7 +1847,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 3'
|
||||
if(result.bool){
|
||||
target.give(result.cards,player);
|
||||
};
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:11,
|
||||
|
@ -1958,14 +1959,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else event._result={index:0};
|
||||
}else{
|
||||
event.finish();
|
||||
};
|
||||
}
|
||||
'step 2'
|
||||
player.logSkill('nzry_yili',target);
|
||||
if(result.index==1){
|
||||
player.removeMark('nzry_huaiju',1);
|
||||
}else{
|
||||
player.loseHp();
|
||||
};
|
||||
}
|
||||
target.addMark('nzry_huaiju',1);
|
||||
target.addSkill('nzry_huaiju_ai');
|
||||
},
|
||||
|
@ -2024,7 +2025,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var num=0;
|
||||
for(var i=0;i<targets.length;i++){
|
||||
num+=targets[i].hp;
|
||||
};
|
||||
}
|
||||
return num+target.hp<=_status.event.num;
|
||||
}).set('ai',function(target){
|
||||
if(ui.selected.targets[0]!=undefined) return -1;
|
||||
|
@ -2043,7 +2044,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.chooseTarget('请选择〖溃诛〗的目标',[1,event.num]).ai=function(target){
|
||||
return get.attitude(player,target);
|
||||
};
|
||||
};
|
||||
}
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var targets=result.targets.sortBySeat();
|
||||
|
@ -2056,7 +2057,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var num=0;
|
||||
for(var i=0;i<targets.length;i++){
|
||||
num+=targets[i].hp;
|
||||
};
|
||||
}
|
||||
if(num<event.num){
|
||||
event.bool=false;
|
||||
event.goto(2);
|
||||
|
@ -2066,11 +2067,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.logSkill('nzry_kuizhu',targets);
|
||||
for(var i=0;i<targets.length;i++){
|
||||
targets[i].damage();
|
||||
};
|
||||
}
|
||||
//if(targets.length>=2) player.loseHp();
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
rechezheng:{
|
||||
|
@ -2122,7 +2123,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(result.bool){
|
||||
player.line(result.targets);
|
||||
player.discardPlayerCard(result.targets[0],'he',1,true);
|
||||
};
|
||||
}
|
||||
},
|
||||
group:'rechezheng',
|
||||
},
|
||||
|
@ -2234,7 +2235,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
player.markSkill('nzry_chenglve');
|
||||
player.addTempSkill('nzry_chenglve1');
|
||||
};
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:2.7,
|
||||
|
@ -2252,13 +2253,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var cards=player.storage.nzry_chenglve1;
|
||||
for(var i=0;i<cards.length;i++){
|
||||
if(cards[i]==get.suit(card)) return Infinity;
|
||||
};
|
||||
}
|
||||
},
|
||||
targetInRange:function(card,player){
|
||||
var cards=player.storage.nzry_chenglve1;
|
||||
for(var i=0;i<cards.length;i++){
|
||||
if(cards[i]==get.suit(card)) return true;
|
||||
};
|
||||
}
|
||||
}
|
||||
},
|
||||
onremove:true,
|
||||
|
@ -2388,7 +2389,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 2'
|
||||
if(result.bool){
|
||||
player.addToExpansion(result.cards[0],player,'give','log').gaintag.add('nzry_mingren');
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
2:{
|
||||
|
@ -2425,7 +2426,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.addToExpansion(result.cards[0],'log','give',player).gaintag.add('nzry_mingren');
|
||||
var card=player.getExpansions('nzry_mingren')[0];
|
||||
if(card) player.gain(card,'gain2');
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -2591,12 +2592,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
else{
|
||||
event.finish();
|
||||
};
|
||||
}
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
player.line(result.targets);
|
||||
result.targets[0].draw(4-result.targets[0].countCards('h'))
|
||||
};
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:1,
|
||||
|
@ -2633,7 +2634,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger.source.storage.nzry_shenshi1=result.cards[0];
|
||||
trigger.source.storage.nzry_shenshi2=player;
|
||||
trigger.source.addSkill('nzry_shenshi1');
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -2654,7 +2655,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(player.getCards('he').contains(card)&&4-pl.countCards('h')>0){
|
||||
pl.draw(4-pl.countCards('h'));
|
||||
pl.logSkill('nzry_shenshi');
|
||||
};
|
||||
}
|
||||
player.removeSkill('nzry_shenshi1');
|
||||
delete player.storage.nzry_shenshi1;
|
||||
delete player.storage.nzry_shenshi2;
|
||||
|
@ -3698,7 +3699,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 2'
|
||||
if(!result.bool&&!event.directbool){
|
||||
return;
|
||||
};
|
||||
}
|
||||
player.addToExpansion(event.card,'gain2').gaintag.add('tuntian');
|
||||
},
|
||||
callback:function(){
|
||||
|
@ -3731,7 +3732,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
},
|
||||
locked:false,
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
|
@ -6233,7 +6233,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
"step 0";
|
||||
player.chooseTarget(get.prompt2('releiji'),function(card,player,target){
|
||||
return target!=player;
|
||||
return target!=player;
|
||||
}).ai=function(target){
|
||||
if(target.hasSkill('hongyan')) return 0;
|
||||
return get.damageEffect(target,_status.event.player,_status.event.player,'thunder');
|
||||
|
@ -7080,7 +7080,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(cards[i]!=card&&get.number(cards[i])==num){
|
||||
player.loseToDiscardpile(card);
|
||||
return;
|
||||
};
|
||||
}
|
||||
}
|
||||
trigger.cancel();
|
||||
trigger.result={bool:true};
|
||||
|
@ -7458,7 +7458,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xinfu_guhuo:{
|
||||
audio:'guhuo_guess',
|
||||
derivation:['chanyuan'],
|
||||
group:['guhuo_guess'],
|
||||
enable:['chooseToUse','chooseToRespond'],
|
||||
hiddenCard:function(player,name){
|
||||
return (lib.inpile.contains(name)&&player.countCards('hs')>0&&!player.hasSkill('guhuo_phase'));
|
||||
|
@ -7554,6 +7553,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
precontent:function(){
|
||||
player.logSkill('xinfu_guhuo');
|
||||
player.addTempSkill('guhuo_guess');
|
||||
var card=event.result.cards[0];
|
||||
event.result.card.suit=get.suit(card);
|
||||
event.result.card.number=get.number(card);
|
||||
|
@ -7709,22 +7709,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
chanyuan:{
|
||||
init:function(player,skill){
|
||||
if(player.hp==1) player.logSkill(skill);
|
||||
player.addSkillBlocker(skill);
|
||||
},
|
||||
onremove:function(player,skill){
|
||||
player.removeSkillBlocker(skill);
|
||||
},
|
||||
charlotte:true,
|
||||
locked:true,
|
||||
skillBlocker:function(skill,player){
|
||||
return skill!='chanyuan'&&skill!='rechanyuan'&&!lib.skill[skill].charlotte&&player.hp==1;
|
||||
},
|
||||
audio:2,
|
||||
trigger:{player:'changeHp'},
|
||||
filter:function(event,player){
|
||||
return event.num<0&&player.hp==1;
|
||||
},
|
||||
content:function(){},
|
||||
mark:true,
|
||||
intro:{
|
||||
content:function(storage,player,skill){
|
||||
|
@ -7734,8 +7727,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
if(list.length) str+=('<br><li>失效技能:'+get.translation(list))
|
||||
return str;
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
audio:2,
|
||||
trigger:{player:'changeHp'},
|
||||
filter:function(event,player){
|
||||
return player.hp==1;
|
||||
},
|
||||
forced:true,
|
||||
content:function(){},
|
||||
},
|
||||
guhuo_phase:{},
|
||||
},
|
||||
|
@ -7765,7 +7765,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
huangzhong:['re_huangzhong','ol_huangzhong','sb_huangzhong','huangzhong','jsrg_huangzhong'],
|
||||
weiyan:['re_weiyan','ol_weiyan','weiyan'],
|
||||
zhoutai:['zhoutai','xin_zhoutai','old_zhoutai'],
|
||||
xiaoqiao:['xiaoqiao','ol_xiaoqiao','re_xiaoqiao','old_xiaoqiao'],
|
||||
xiaoqiao:['xiaoqiao','ol_xiaoqiao','re_xiaoqiao','sb_xiaoqiao','old_xiaoqiao'],
|
||||
yuji:['xin_yuji','re_yuji','yuji'],
|
||||
zhangjiao:['sp_zhangjiao','re_zhangjiao','sb_zhangjiao','zhangjiao'],
|
||||
dianwei:['dianwei','ol_dianwei','re_dianwei'],
|
||||
|
@ -7798,7 +7798,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhugezhan:['zhugezhan','old_zhugezhan'],
|
||||
ol_lusu:['re_lusu','ol_lusu'],
|
||||
zhanghe:['zhanghe','re_zhanghe','sb_zhanghe'],
|
||||
yl_luzhi:['yl_luzhi','tw_yl_luzhi'],
|
||||
yl_luzhi:['yl_luzhi','sb_yl_luzhi','tw_yl_luzhi'],
|
||||
sunliang:['sunliang','xin_sunliang'],
|
||||
},
|
||||
translate:{
|
||||
|
@ -7874,6 +7874,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
drlt_wanglie:"往烈",
|
||||
drlt_wanglie_info:"①出牌阶段,你使用的第一张牌无距离限制。②当你于出牌阶段内使用牌时,你可以令此牌不能被响应,然后你于本阶段内不能再使用牌。",
|
||||
"drlt_xiongluan":"雄乱",
|
||||
drlt_xiongluan1:'雄乱',
|
||||
"drlt_xiongluan_info":"限定技,出牌阶段,你可以废除你的判定区和装备区,然后指定一名其他角色。直到回合结束,你对其使用牌无距离和次数限制,其不能使用和打出手牌。",
|
||||
"drlt_congjian":"从谏",
|
||||
"drlt_congjian_info":"当你成为锦囊牌的目标时,若此牌的目标数大于1,则你可以交给其中一名其他目标角色一张牌,然后摸一张牌,若你给出的是装备牌,改为摸两张牌。",
|
||||
|
|
|
@ -435,6 +435,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
evt.finish();
|
||||
evt._triggered=null;
|
||||
if(evt.name.startsWith('pre_')){
|
||||
var evtx=evt.getParent();
|
||||
evtx.finish();
|
||||
evtx._triggered=null;
|
||||
}
|
||||
var nexts=trigger.next.slice();
|
||||
for(var next of nexts){
|
||||
if(next.name=='judgeCallback') trigger.next.remove(next);
|
||||
|
@ -2053,7 +2058,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(!list.contains(type)){
|
||||
list.push(type);
|
||||
cards.push(ui.cardPile.childNodes[i])
|
||||
};
|
||||
}
|
||||
}
|
||||
player.gain(cards,'gain2').gaintag.add('zhangming');
|
||||
player.addTempSkill('zhangming_keep');
|
||||
|
@ -4860,7 +4865,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(!list.contains(type)){
|
||||
list.push(type);
|
||||
cards.push(ui.cardPile.childNodes[i])
|
||||
};
|
||||
}
|
||||
}
|
||||
player.gain(cards,'gain2');
|
||||
}
|
||||
|
@ -4960,8 +4965,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
onunmark:'throw',
|
||||
},
|
||||
ai:{
|
||||
order:1,
|
||||
result:{target:-1},
|
||||
order:1,
|
||||
result:{target:-1},
|
||||
},
|
||||
subSkill:{
|
||||
equip:{
|
||||
|
@ -6286,10 +6291,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
};
|
||||
if(!targets.length){
|
||||
if(get.attitude(player,target)<0){
|
||||
if(target.countCards('e',function(card){
|
||||
if(target.countCards('e',function(card){
|
||||
return get.value(card,target)<=0;
|
||||
})) return 1;
|
||||
if(game.hasPlayer(function(current){
|
||||
if(game.hasPlayer(function(current){
|
||||
return current.countCards('h',fh)==target.countCards('h',fh)-2;
|
||||
})) return -2;
|
||||
if(game.hasPlayer(function(current){
|
||||
|
|
123
character/sp.js
123
character/sp.js
|
@ -49,7 +49,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
haopu:['male','shu',4,['olzhenying']],
|
||||
ol_mengda:['male','shu',4,['olgoude']],
|
||||
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']],
|
||||
lushi:['female','qun',3,['olzhuyan','olleijie']],
|
||||
zhangshiping:['male','shu',3,['olhongji','olxinggu']],
|
||||
sunhong:['male','wu',3,['olxianbi','olzenrun']],
|
||||
|
@ -1937,17 +1937,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
switch(get.sgn(get.attitude(player,target))){
|
||||
case 0:
|
||||
return 2;
|
||||
break;
|
||||
case 1:
|
||||
if(num1-1>=num2) return 0;
|
||||
if(num1+1<=num2) return 1;
|
||||
return 2;
|
||||
break;
|
||||
case -1:
|
||||
if(num1-2<=num2) return 0;
|
||||
if(num1+3>=num2) return 1;
|
||||
return 2;
|
||||
break;
|
||||
}
|
||||
}).set('prompt',get.prompt('olrunwei',trigger.player));
|
||||
'step 1'
|
||||
|
@ -5690,7 +5687,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var cards1=list[0][1].slice(),cards2=list[1][1].slice();
|
||||
var card1=cards1.sort((a,b)=>get.value(b)-get.value(a))[0];
|
||||
var card2=cards2.sort((a,b)=>get.value(a)-get.value(b))[0];
|
||||
if(get.value(card1)>get.value(card2)){
|
||||
if(card1&&card2&&get.value(card1)>get.value(card2)){
|
||||
cards1.remove(card1);
|
||||
cards2.remove(card2);
|
||||
cards1.push(card2);
|
||||
|
@ -6253,7 +6250,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else used.push(name);
|
||||
}
|
||||
else used.push(name);
|
||||
};
|
||||
}
|
||||
if(info.isRound) break;
|
||||
}
|
||||
var vcards=[];
|
||||
|
@ -7261,7 +7258,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(evt.card.nature) natures.remove(evt.card.nature);
|
||||
}
|
||||
else tricks.remove(name);
|
||||
};
|
||||
}
|
||||
if(info.isRound) break;
|
||||
}
|
||||
var vcards=[];
|
||||
|
@ -11567,11 +11564,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return target.countCards('h')!=ui.selected.targets[0].countCards('h');
|
||||
}).set('complexTarget',true).set('ai',function(target){
|
||||
if(!ui.selected.targets.length){
|
||||
var player=_status.event.player,hs=target.countCards('h');
|
||||
if(game.hasPlayer(function(current){
|
||||
return current!=player&¤t!=target&¤t.countCards('h')>hs&&!current.hasMark('quxi_gain')&&!current.hasMark('quxi_lose');
|
||||
})) return get.attitude(player,target)/(Math.sqrt(1+target.countCards('h')));
|
||||
return 0;
|
||||
var player=_status.event.player,hs=target.countCards('h');
|
||||
if(game.hasPlayer(function(current){
|
||||
return current!=player&¤t!=target&¤t.countCards('h')>hs&&!current.hasMark('quxi_gain')&&!current.hasMark('quxi_lose');
|
||||
})) return get.attitude(player,target)/(Math.sqrt(1+target.countCards('h')));
|
||||
return 0;
|
||||
}
|
||||
if(target.countCards('h')>ui.selected.targets[0].countCards('h')) return -get.attitude(_status.event.player,target);
|
||||
return 0;
|
||||
|
@ -11837,7 +11834,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
silent:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
return player.storage.juguan_draw&&player.storage.juguan_draw.contains(event.source);
|
||||
return player.storage.juguan_draw&&player.storage.juguan_draw.contains(event.source);
|
||||
},
|
||||
content:function(){
|
||||
player.unmarkAuto('juguan_draw',[trigger.source]);
|
||||
|
@ -12689,10 +12686,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return 5-val;
|
||||
}
|
||||
switch(button.link){
|
||||
case 3:return 4.5;break;
|
||||
case 4:return 4.4;break;
|
||||
case 5:return 4.3;break;
|
||||
case 2:return (3-player.hp)*1.5;break;
|
||||
case 3:return 4.5;
|
||||
case 4:return 4.4;
|
||||
case 5:return 4.3;
|
||||
case 2:return (3-player.hp)*1.5;
|
||||
case 1:{
|
||||
if(game.hasPlayer(function(current){
|
||||
return (get.realAttitude||get.attitude)(player,current)<0&&get.distance(player,current)>1;
|
||||
|
@ -12913,7 +12910,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
filterCard:{color:'black'},
|
||||
position:'hes',
|
||||
audio:'niluan',
|
||||
viewAsFilter:function(player){
|
||||
return player.countCards('hes',lib.skill.spniluan.filterCard)>0;
|
||||
},
|
||||
|
@ -13422,7 +13418,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
backup:function(links,player){
|
||||
return {
|
||||
audio:'jingong',
|
||||
filterCard:true,
|
||||
popname:true,
|
||||
position:'hes',
|
||||
viewAs:{name:links[0][2]},
|
||||
|
@ -14707,7 +14702,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
forced:true,
|
||||
popup:false,
|
||||
onremove:true,
|
||||
firstDo:true,
|
||||
init:function(player,skill){
|
||||
player.storage[skill]=0;
|
||||
|
@ -15627,7 +15621,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
backup:function(links,player){
|
||||
return {
|
||||
audio:'jingong',
|
||||
filterCard:true,
|
||||
popname:true,
|
||||
position:'hes',
|
||||
viewAs:{name:links[0][2]},
|
||||
|
@ -17089,16 +17082,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var map={sha:'shan',tao:'jiu',jiu:'tao'}
|
||||
for(var i=0;i<list.length;i++){
|
||||
var name=list[i];
|
||||
if(player.countCards('hs',map[name])>(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){
|
||||
var temp=get.order({name:name});
|
||||
if(temp>max){
|
||||
max=temp;
|
||||
name2=map[name];
|
||||
}
|
||||
}
|
||||
}
|
||||
if(name2==get.name(card,player)) return 1;
|
||||
return 0;
|
||||
if(player.countCards('hs',map[name])>(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){
|
||||
var temp=get.order({name:name});
|
||||
if(temp>max){
|
||||
max=temp;
|
||||
name2=map[name];
|
||||
}
|
||||
}
|
||||
}
|
||||
if(name2==get.name(card,player)) return 1;
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
},
|
||||
|
@ -17123,7 +17116,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
onrespond:function(){return this.onuse.apply(this,arguments)},
|
||||
onuse:function(result,player){
|
||||
player.removeMark('fanghun',1);
|
||||
player.removeMark('fanghun',1);
|
||||
},
|
||||
ai:{
|
||||
respondSha:true,
|
||||
|
@ -17144,13 +17137,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var map={sha:'shan',tao:'jiu',jiu:'tao'}
|
||||
for(var i=0;i<list.length;i++){
|
||||
var name=list[i];
|
||||
if(player.countCards('hs',map[name])>(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){
|
||||
var temp=get.order({name:name});
|
||||
if(temp>max) max=temp;
|
||||
}
|
||||
}
|
||||
if(max>0) max+=((player.storage.refuhan||player.storage.twfuhan)?0.3:-0.3);
|
||||
return max;
|
||||
if(player.countCards('hs',map[name])>(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){
|
||||
var temp=get.order({name:name});
|
||||
if(temp>max) max=temp;
|
||||
}
|
||||
}
|
||||
if(max>0) max+=((player.storage.refuhan||player.storage.twfuhan)?0.3:-0.3);
|
||||
return max;
|
||||
}
|
||||
if(!player) player=_status.event.player;
|
||||
return (player.storage.refuhan||player.storage.twfuhan)?4:1;
|
||||
|
@ -19632,6 +19625,41 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.addSkill('mashu');
|
||||
player.addSkill('nuzhan');
|
||||
player.awakenSkill('danji');
|
||||
},
|
||||
ai:{
|
||||
maixie:true,
|
||||
skillTagFilter:(player,tag,arg)=>{
|
||||
if(tag==='maixie'){
|
||||
if(player.hp<2||player.storage.danji||player.hasSkill('nuzhan')||player.countCards('h')!==player.hp) return false;
|
||||
let zhu=get.zhu(player);
|
||||
if(zhu&&zhu.isZhu){
|
||||
let name=zhu.name;
|
||||
while(name.indexOf('_')!==-1){
|
||||
name=name.slice(name.indexOf('_')+1);
|
||||
}
|
||||
if(name.indexOf('liubei')==0) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
},
|
||||
effect:{
|
||||
target:(card,player,target)=>{
|
||||
let hs=target.countCards('h');
|
||||
if(target.hp<3||target.storage.danji||target.hasSkill('nuzhan')||hs>target.hp+1) return;
|
||||
let zhu=get.zhu(target);
|
||||
if(zhu&&zhu.isZhu){
|
||||
let name=zhu.name;
|
||||
while(name.indexOf('_')!==-1){
|
||||
name=name.slice(name.indexOf('_')+1);
|
||||
}
|
||||
if(name.indexOf('liubei')==0) return;
|
||||
}
|
||||
if(get.tag(card,'draw')) return 1.6;
|
||||
if(get.tag(card,'lose')||get.tag(card,'discard')) return [1,-0.8];
|
||||
if(hs===target.hp&&get.tag(card,'damage')) return [1,target.hp/3];
|
||||
if(hs>target.hp&&target.hp>3&&(card.name==='shan'||card.name==='wuxie')) return 'zeroplayertarget';
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
nuzhan:{
|
||||
|
@ -20721,7 +20749,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
next.set('filterButton',function(button){
|
||||
if(button.link==2){
|
||||
return _status.event.bool1;
|
||||
};
|
||||
}
|
||||
return true;
|
||||
});
|
||||
next.set('bool1',trigger.player.isDamaged());
|
||||
|
@ -21856,12 +21884,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
moukui:{
|
||||
audio:2,
|
||||
audioname:['sp_mushun'],
|
||||
trigger:{player:'useCardToPlayered'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return event.card.name=='sha';
|
||||
},
|
||||
audio:2,
|
||||
content:function(){
|
||||
"step 0"
|
||||
var controls=['draw_card'];
|
||||
|
@ -22600,9 +22629,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"step 0"
|
||||
event.target=player;
|
||||
event.player=trigger.player;
|
||||
var prompt;
|
||||
if(player==event.player) prompt='是否发动【郡兵】摸一张牌?';
|
||||
else prompt=('###是否对'+get.translation(event.target)+'发动【郡兵】?###'+(event.player==event.target?'摸一张牌':'摸一张牌,将所有手牌交给该角色,然后该角色交给你等量的手牌'));
|
||||
var prompt;
|
||||
if(player==event.player) prompt='是否发动【郡兵】摸一张牌?';
|
||||
else prompt=('###是否对'+get.translation(event.target)+'发动【郡兵】?###'+(event.player==event.target?'摸一张牌':'摸一张牌,将所有手牌交给该角色,然后该角色交给你等量的手牌'));
|
||||
event.player.chooseBool(prompt).set('choice',lib.skill.junbing.checkx(event.target,event.player));
|
||||
"step 1"
|
||||
if(!result.bool){event.finish();return}
|
||||
|
@ -22621,7 +22650,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"step 4"
|
||||
target.give(result.cards,player);
|
||||
},
|
||||
audio:2,
|
||||
},
|
||||
xiongyi:{
|
||||
skillAnimation:true,
|
||||
|
@ -24255,7 +24283,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
xionghuo:{
|
||||
marktext:"戾",
|
||||
mark:true,
|
||||
intro:{
|
||||
name:'暴戾',
|
||||
content:"mark",
|
||||
|
@ -25226,7 +25253,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
jin_simazhao:['jin_simazhao','simazhao','sp_simazhao'],
|
||||
jin_wangyuanji:['jin_wangyuanji','wangyuanji','sp_wangyuanji'],
|
||||
wangyun:['wangyun','dc_wangyun','re_wangyun','jsrg_wangyun','old_wangyun','pe_wangyun'],
|
||||
zhangliang:['re_zhangliang','zhangliang'],
|
||||
zhangliang:['xin_zhangliang','re_zhangliang','zhangliang'],
|
||||
lingju:['lingju','old_lingju'],
|
||||
guansuo:['guansuo','dc_guansuo'],
|
||||
zhangxingcai:['zhangxingcai','old_zhangxingcai'],
|
||||
|
@ -25268,6 +25295,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ol_pengyang:['ol_pengyang','sp_pengyang'],
|
||||
ol_luyusheng:['ol_luyusheng','luyusheng'],
|
||||
fanjiangzhangda:['fanjiangzhangda','jsrg_fanjiangzhangda'],
|
||||
simalang:['re_simalang','simalang'],
|
||||
zhugedan:['re_zhugedan','zhugedan'],
|
||||
},
|
||||
translate:{
|
||||
"xinfu_lingren":"凌人",
|
||||
|
|
159
character/sp2.js
159
character/sp2.js
|
@ -6,12 +6,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
character:{
|
||||
star_yuanshu:['male','qun',4,['starcanxi','starpizhi','starzhonggu'],['zhu']],
|
||||
star_caoren:['male','wei',4,['starsujun','starlifeng']],
|
||||
mp_liuling:['male','jin',3,['mpjiusong','mpmaotao','mpbishi'],['doublegroup:wei:qun:jin']],
|
||||
dc_jikang:['male','wei',3,['new_qingxian','dcjuexiang']],
|
||||
dc_jsp_guanyu:['male','wei',4,['new_rewusheng','dcdanji']],
|
||||
dc_mengda:['male','wei',4,['dclibang','dcwujie']],
|
||||
//dc_fuwan:['male','qun',4,['dcmoukui']],
|
||||
guānning:['male','shu',3,['dcxiuwen','dclongsong']],
|
||||
sunhuan:['male','wu',4,['dcniji'],['unseen']],
|
||||
sunhuan:['male','wu',4,['dcniji']],
|
||||
sunlang:['male','shu',4,['dctingxian','dcbenshi']],
|
||||
shiyi:['male','wu',3,['dccuichuan','dczhengxu']],
|
||||
dc_hujinding:['female','shu','3/6',['dcdeshi','dcwuyuan','huaizi']],
|
||||
|
@ -56,7 +57,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dongxie:['female','qun',4,['dcjiaoxia','dchumei']],
|
||||
wangrong:['female','qun',3,['minsi','jijing','zhuide']],
|
||||
ol_dingyuan:['male','qun',4,['cixiao','xianshuai']],
|
||||
xin_baosanniang:['female','shu',3,['decadewuniang','decadexushen']],
|
||||
re_hejin:['male','qun',4,['spmouzhu','spyanhuo']],
|
||||
re_hansui:['male','qun',4,['spniluan','spweiwu']],
|
||||
liuhong:['male','qun',4,['yujue','tuxing']],
|
||||
|
@ -110,7 +110,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_zhongyuan:['re_hucheer','re_zoushi','caoanmin','re_dongcheng'],
|
||||
sp_xiaohu:['haomeng','yanfuren','yanrou','dc_zhuling'],
|
||||
sp_star:['star_caoren','star_yuanshu'],
|
||||
sp_decade:['caobuxing','re_maliang','xin_baosanniang','dc_jikang'],
|
||||
mini_qixian:['mp_liuling'],
|
||||
sp_decade:['caobuxing','re_maliang','dc_jikang'],
|
||||
}
|
||||
},
|
||||
skill:{
|
||||
|
@ -420,6 +421,94 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
},
|
||||
//小程序刘伶
|
||||
mpjiusong:{
|
||||
audio:2,
|
||||
trigger:{global:'useCard'},
|
||||
filter:function(event,player){
|
||||
return event.card.name=='jiu'&&player.countMark('mpjiusong')<3;
|
||||
},
|
||||
forced:true,
|
||||
locked:false,
|
||||
content:function(){
|
||||
player.addMark('mpjiusong');
|
||||
},
|
||||
marktext:'醉',
|
||||
intro:{
|
||||
name:'醉(酒颂/酕醄)',
|
||||
name2:'醉',
|
||||
content:'mark',
|
||||
}
|
||||
},
|
||||
mpmaotao:{
|
||||
audio:2,
|
||||
trigger:{global:'useCardToPlayer'},
|
||||
filter:function(event,player){
|
||||
if(event.targets.length!=1||!event.isFirstTarget) return false;
|
||||
return event.player!=player&&player.countMark('mpjiusong');
|
||||
},
|
||||
prompt2:function(event,player){
|
||||
let list;
|
||||
if(get.type(event.card)!='delay') list=game.filterPlayer(current=>{
|
||||
return lib.filter.targetEnabled2(event.card,event.player,current);
|
||||
});
|
||||
else list=game.filterPlayer(current=>current.canAddJudge(event.card));
|
||||
return `移去1枚“醉”,${list.length>1?`令${get.translation(event.card)}目标改为${get.translation(list)}中的一名随机角色。若新目标与原目标相同,你`:''}获得牌堆中的一张【酒】。`
|
||||
},
|
||||
check:function(event,player){
|
||||
const eff=get.effect(event.target,event.card,player,player);
|
||||
let list;
|
||||
if(get.type(event.card)!='delay') list=game.filterPlayer(current=>{
|
||||
return lib.filter.targetEnabled2(event.card,event.player,current);
|
||||
});
|
||||
else list=game.filterPlayer(current=>current.canAddJudge(event.card));
|
||||
let list2=list.filter(current=>get.effect(current,event.card,player,player)>eff);
|
||||
let list3=list.filter(current=>get.effect(current,event.card,player,player)>0);
|
||||
return list2.length>=list.length/2||player.countMark('mpjiusong')>=2&&list3.length>=list.length/2;
|
||||
},
|
||||
content:function(){
|
||||
player.removeMark('mpjiusong',1);
|
||||
var list,oriTarget=trigger.target;
|
||||
trigger.targets.remove(oriTarget);
|
||||
trigger.getParent().triggeredTargets1.remove(oriTarget);
|
||||
trigger.untrigger();
|
||||
game.delayx();
|
||||
if(get.type(trigger.card)!='delay') list=game.filterPlayer(current=>{
|
||||
return lib.filter.targetEnabled2(trigger.card,trigger.player,current);
|
||||
});
|
||||
else list=game.filterPlayer(current=>current.canAddJudge(trigger.card));
|
||||
if(list.length) target=list.randomGet();
|
||||
trigger.targets.push(target);
|
||||
trigger.player.line(target,'thunder');
|
||||
game.log(trigger.card,'的目标被改为',target);
|
||||
if(target==oriTarget){
|
||||
var card=get.cardPile2('jiu');
|
||||
if(card) player.gain(card,'gain2');
|
||||
else{
|
||||
player.chat('没酒了!');
|
||||
game.log('但是牌堆中已经没有','#y酒','了!');
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
mpbishi:{
|
||||
audio:2,
|
||||
forced:true,
|
||||
trigger:{global:'useCard1'},
|
||||
filter:function(event,player){
|
||||
if(get.type2(event.card)!='trick'||!get.tag(event.card,'damage')) return false;
|
||||
if(!lib.skill.xunshi.isXunshi(event.card)) return false;
|
||||
const targets=event.targets.slice();
|
||||
targets.remove(event.player);
|
||||
return targets.length==game.countPlayer()-2;
|
||||
},
|
||||
content:function*(){},
|
||||
mod:{
|
||||
targetEnabled:function(card){
|
||||
if(get.type2(card)=='trick'&&get.tag(card,'damage')>0) return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
//十周年嵇康
|
||||
dcjuexiang: {
|
||||
derivation: 'dccanyun',
|
||||
|
@ -704,6 +793,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.addSkill('mashu');
|
||||
player.addSkill('dcnuchen');
|
||||
player.awakenSkill('dcdanji');
|
||||
},
|
||||
ai:{
|
||||
maixie:true,
|
||||
skillTagFilter:(player,tag,arg)=>{
|
||||
if(tag==='maixie') return player.hp>=2&&!player.storage.dcdanji&&!player.hasSkill('dcnuchen')&&player.countCards('h')===player.hp;
|
||||
},
|
||||
effect:{
|
||||
target:(card,player,target)=>{
|
||||
let hs=target.countCards('h');
|
||||
if(target.hp<3||target.storage.dcdanji||target.hasSkill('dcnuchen')||hs>target.hp+1) return;
|
||||
if(get.tag(card,'draw')) return 1.6;
|
||||
if(get.tag(card,'lose')||get.tag(card,'discard')) return [1,-0.8];
|
||||
if(hs===target.hp&&get.tag(card,'damage')) return [1,target.hp/3];
|
||||
if(hs>target.hp&&target.hp>3&&(card.name==='shan'||card.name==='wuxie')) return 'zeroplayertarget';
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
dcnuchen:{
|
||||
|
@ -867,7 +972,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
dcwujie:{
|
||||
audio:2,
|
||||
forced:true,
|
||||
trigger:{
|
||||
global:['discardBegin','drawBegin'],
|
||||
},
|
||||
|
@ -946,7 +1050,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(!num) delete player.getStat().skill[skillx];
|
||||
else player.getStat().skill[skillx]=num;
|
||||
var bool3=!(bool1&&!bool2);
|
||||
}catch(e){}
|
||||
} catch (e) {
|
||||
console.trace(e);
|
||||
}
|
||||
if(!bool1&&!bool2&&get.skillInfoTranslation(skill,player).indexOf('出牌阶段限一次')==-1) return false;
|
||||
if((bool1||bool2)&&bool3) return false;
|
||||
}
|
||||
|
@ -2231,7 +2337,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
subSkill:{
|
||||
blocker:{
|
||||
charlotte:true,
|
||||
init:function(player,skill){
|
||||
player.addSkillBlocker(skill);
|
||||
},
|
||||
|
@ -2626,7 +2731,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(eff2>0) return eff1>0;
|
||||
return player.hp>2&&eff2<eff1;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
logTarget:'player',
|
||||
shaRelated:true,
|
||||
|
@ -3717,7 +3821,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
target:1,
|
||||
},
|
||||
},
|
||||
derivation:['releiji','rebiyue','new_retuxi','mingce','xinzhiyan','nhyinbing','nhhuoqi','nhguizhu','nhxianshou','nhlundao','nhguanyue','nhyanzheng'],
|
||||
derivation:['releiji','rebiyue','new_retuxi','remingce','xinzhiyan','nhyinbing','nhhuoqi','nhguizhu','nhxianshou','nhlundao','nhguanyue','nhyanzheng'],
|
||||
subSkill:{
|
||||
clear:{
|
||||
onremove:function(player){
|
||||
|
@ -4044,7 +4148,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var player=_status.event.player,att=get.attitude(player,target);
|
||||
if(att>=0) return 0;
|
||||
if(!target.hasCard(function(card){
|
||||
return get.value(card,target)<=0;
|
||||
return get.value(card,target)<=0;
|
||||
},'he')) return -att/Math.sqrt(target.countCards('he'));
|
||||
return 0;
|
||||
});
|
||||
|
@ -4309,10 +4413,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return 5-val;
|
||||
}
|
||||
switch(num){
|
||||
case 'equip3':return 4.5;break;
|
||||
case 'equip4':return 4.4;break;
|
||||
case 'equip5':return 4.3;break;
|
||||
case 'equip2':return (3-player.hp)*1.5;break;
|
||||
case 'equip3':return 4.5;
|
||||
case 'equip4':return 4.4;
|
||||
case 'equip5':return 4.3;
|
||||
case 'equip2':return (3-player.hp)*1.5;
|
||||
case 'equip1':{
|
||||
if(game.hasPlayer(function(current){
|
||||
return (get.realAttitude||get.attitude)(player,current)<0&&get.distance(player,current)>1;
|
||||
|
@ -4731,7 +4835,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget('请选择【抗歌】的目标','其于回合外摸牌后,你摸等量的牌;其进入濒死状态时,你可令其回复体力至1点;其死亡后,你弃置所有牌并失去1点体力',lib.filter.notMe,true).set('ai',function(target){
|
||||
return get.attitude(_status.event.player,target)>0;
|
||||
return get.attitude(_status.event.player,target);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
|
@ -6273,8 +6377,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
event.num++;
|
||||
if(event.num<targets.length) event.goto(1);
|
||||
else{
|
||||
var cards=[];
|
||||
game.getGlobalHistory('cardMove',function(evt){
|
||||
var cards=[];
|
||||
game.getGlobalHistory('cardMove',function(evt){
|
||||
if(evt.player&&evt.hs&&evt.type=='discard'&&evt.getParent(3)==event){
|
||||
for(var i of evt.hs){
|
||||
if(get.name(i,evt.player)=='sha'&&get.position(i,true)=='d') cards.add(i);
|
||||
|
@ -9143,7 +9247,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
target.$damagepop('K','thunder');
|
||||
event.num=13;
|
||||
};
|
||||
}
|
||||
game.log(target,'选择的点数是','#y'+get.strNumber(event.num));
|
||||
player.storage.xinfu_lveming++;
|
||||
player.judge(function(card){
|
||||
|
@ -9490,7 +9594,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
player.logSkill('xinfu_zhenxing');
|
||||
event.num={一张:1,两张:2,三张:3}[result.control];
|
||||
};
|
||||
}
|
||||
'step 2'
|
||||
event.cards=get.cards(num);
|
||||
player.chooseButton(['【镇行】:请选择要获得的牌',event.cards]).set('filterButton',function(button){
|
||||
|
@ -9528,8 +9632,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var num2=ui.cardPile.childElementCount;
|
||||
var num3=num2;
|
||||
if(num1>num2) num3=0;
|
||||
else if(!player.storage.xinfu_qianxin){}
|
||||
else{
|
||||
else if(player.storage.xinfu_qianxin){
|
||||
for(var i=0;i<num2;i++){
|
||||
if(player.storage.xinfu_qianxin.contains(ui.cardPile.childNodes[i])){
|
||||
num3=0;break;
|
||||
|
@ -9929,7 +10032,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(player.storage.xinfu_dianhu2&&player.storage.xinfu_dianhu2.isIn()){
|
||||
if(event.name=='damage') return event.source==player.storage.xinfu_dianhu2;
|
||||
return true;
|
||||
};
|
||||
}
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
|
@ -10159,9 +10262,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhangwen:'张温(193年—230年),字惠恕,吴郡吴县(今江苏苏州)人。少修节操,容貌奇伟。孙权召拜议郎、选曹尚书,徙太子太傅。黄武三年(224),以辅义中郎将身份出使蜀汉,孙权原先害怕诸葛亮会有意留难张温,但张温不担心。在呈上蜀汉朝廷的文书刻意称颂蜀汉,以表明和解的诚意,重建两国关系。他在蜀汉表现出色,得蜀汉朝廷重视。回东吴后不久,被调进豫章的军队,事业上再无进展。孙权一方面介怀他出使蜀汉时称颂蜀汉,又嫌他声名太盛,恐怕张温不会尽忠地由他任用。当时正好碰上暨艳事件,暨艳是张温引荐的臣子,但他滥用职权,升迁评定等只看自己喜恶。事件被揭发后暨艳及同党徐彪都自杀。孙权见此,于是以张温与暨艳、徐彪等人多有来往而下罪张温,后更将张温发还到家乡吴郡。将军骆统曾上书为张温辩解,但孙权不理会。六年后,张温病逝。',
|
||||
lisu:'李肃(?-192年),五原(治今内蒙古包头西北)人。永汉三年四月,司徒王允、尚书仆射士孙瑞、卓将吕布共谋诛卓。是时,天子有疾新愈,大会未央殿。布使同郡骑都尉肃等、将亲兵十馀人,伪著卫士服守掖门。布怀诏书。卓至,肃等格卓。卓惊呼布所在。布曰“有诏”,遂杀卓,夷三族。后卓女婿中郎将牛辅典兵别屯陕,分遣校尉李傕、郭汜、张济略陈留、颍川诸县。卓死,吕布使李肃至陕,欲以诏命诛辅。辅等逆与肃战,肃败走弘农,布诛肃。',
|
||||
xinpi:'辛毗(生卒年不详),字佐治,颍川阳翟人。三国时期曹魏大臣。原居陇西(郡治在今甘肃临洮县),东汉光武帝建武年间,其先人东迁。当初,辛毗跟随其兄事袁绍。曹操任司空时,征召辛毗,他不受命。官渡战后,辛毗事袁绍的儿子袁谭。公元204年,曹操攻下邺城,上表推荐辛毗任议郎,后为丞相长史。公元220年,曹丕即皇帝位,以辛毗为侍中,赐爵关内侯,后赐广平亭侯。魏明帝即位,封辛毗颍乡侯,食邑三百户,后为卫尉。公元234年,诸葛亮屯兵渭南,司马懿上表魏明帝。魏明帝任辛毗为大将军军师,加使持节号。诸葛亮病逝后,辛毗返回,仍任卫尉。不久,逝世,谥肃侯。',
|
||||
zhangchangpu:"钟会的母亲。《母夫人张氏传》:夫人张氏,字昌蒲,太原兹氏人,太傅定陵成侯之命妇也。",
|
||||
xugong:"许贡是东汉末官吏。先后任吴郡都尉、太守,欲送密信给曹操,要曹操注意孙策,却被孙策发现而被杀。许贡生前招揽了一些门客,当中有三人不忘故主,千方百计想要手刃仇人。建安五年(公元200年),广陵太守陈登派人秘密联系孙策治下的山贼余党,企图颠覆孙策在江东的统治。孙策决定讨伐陈登,行军到丹徒时,许贡门客终于找到了机会。因为孙策有单骑出猎,在野外思考的习惯,三门客趁孙策轻装外出打猎时,放冷箭射中孙策面颊。这些门客后来在与孙策的搏斗中,被赶到的侍卫杀死。孙策此后因为伤口感染,并且俊美的容貌被毁,终于不治身亡,去世时年仅26岁。",
|
||||
mangyachang:"南蛮王孟获的部将,使一口截头大刀,骑一匹黄骠马。率军与蜀军交战,战败王平。后被平北将军马岱斩杀。只出现在《三国演义》里,正史中无此人。",
|
||||
|
||||
liuzan:'字正明,会稽长山人人,曾任左护军,有两子:留略、留平。少为会稽郡吏,曾参与镇压黄巾起义,后被东吴大将凌统所引用,任屯骑校尉。吴五凤二年(公元255年)留赞任左护军,随孙峻征淮南,因病撤军,被魏将蒋班围困于道,力战而死,时年73岁。',
|
||||
zhujun:'朱儁(?-195年),字公伟。会稽郡上虞县(今浙江绍兴上虞区)人。东汉末年名将。朱儁出身寒门,赡养母亲,以好义轻财闻名,受乡里敬重。后被太守徐珪举为孝廉,任兰陵令,颇有治绩。再升任交州刺史,以家兵五千大破叛军,平定交州。战后以功封都亭侯,入朝为谏议大夫。光和七年(184年),黄巾起义爆发,朱儁以右中郎将、持节平定三郡之地,以功进封西乡侯,迁镇贼中郎将。又率军讨平黄巾,“威声满天下”。中平二年(185年),进拜右车骑将军,更封钱塘侯。后为河内太守,击退进逼的张燕。权臣董卓秉政时,想任朱儁为副手,遭其婉拒。其后出逃荆州,更屯军中牟,徐州刺史陶谦等欲推举他为太师,并传檄各州牧伯,相邀讨伐李傕、奉迎天子。但朱儁却奉诏入京任太仆。初平三年(192年),升任太尉、录尚书事。兴平元年(194年),行骠骑将军事,持节镇关东,因故未成行。兴平二年(195年),李傕与郭汜相互攻杀,郭汜扣留朱儁作为人质。朱儁性格刚烈,即日发病而死。',
|
||||
|
@ -10174,7 +10274,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhangmiao:'张邈(?-195年),字孟卓,东平寿张(今山东东平县)人。东汉大臣、名士,“八厨”之一。举孝廉出身,授骑都尉,出任陈留太守。参与讨伐董卓,参加汴水之战,归附于曹操。兴平元年(194年),趁着曹操讨伐徐州牧陶谦,联合陈宫发动叛乱,迎立吕布为兖州牧。受到曹操讨伐,兵败投奔徐州牧刘备。兴平二年,张邈向袁术借兵途中,被部下所杀。',
|
||||
duanwei:'段煨(?~209年),字忠明,武威郡姑臧(今甘肃省武威市)人也。东汉末年将领,东汉太尉段颎同族兄弟,与太尉贾诩、张济、宣威侯张绣乃是同乡。原为董卓帐下将领,奉命屯兵华阴,勤劳农业。兴平二年(195年),迎接汉献帝刘协东归洛阳,供给衣食补给,与护驾将领杨定不和,引发激战十余天,听从汉献帝刘协劝解。东汉建安三年(198年),攻打黄白城,击杀李傕,夷其三族,封为镇远将军、闅乡亭侯、北地太守,累迁大鸿胪、金光禄大夫。建安十四年(209年),寿终正寝。',
|
||||
zhangheng:'张横,生卒年不详,武威郡姑臧人,东汉末年凉州军阀之一。与梁兴、贾诩、段煨乃是同乡。建安三年(198),张横与梁兴、段煨等斩杀李傕。十六年(211),同韩遂、马超联合,起兵反抗曹操,兵败后不知所终。',
|
||||
tangji:'唐姬,会稽太守唐瑁女,弘农怀王刘辩的妃子。刘辩死后,唐姬回归故里,因节烈不愿改嫁他人,后被汉献帝下诏封为弘农王妃。',
|
||||
wenqin:'文钦(?~258年),字仲若,沛国谯郡(今安徽省亳州市)人,三国时期曹魏将领,曹操部将文稷之子。魏明帝太和年间文钦任牙门将、五营校督,后拜庐江太守、冠军将军,嘉平元年(249年),曹爽及其同党在高平陵之变中被杀,文钦心中不安,执政的司马氏集团为了安抚文钦,升其为前将军、扬州刺史,任职期间结交镇东将军毌丘俭。击退吴国太傅诸葛恪进攻,取得一定战果。正元二年(255年),文钦与镇东将军毌丘俭在扬州起兵讨伐司马师,兵败后投奔吴国,被封为镇北大将军、幽州牧,封谯侯。甘露二年(257年),文钦随吴军援救起兵反抗司马氏的诸葛诞,此后因被司马昭大军围困,军情告急,文钦与诸葛诞本就有矛盾,对文钦日益不满的诸葛诞遂将文钦杀死。淮南平定之后,文钦遗体被其二子收敛安葬。',
|
||||
qiuliju:'丘力居,东汉末年的辽西乌丸大人。拉拢中山太守张纯反叛东汉,寇略青、徐、幽、冀四州,杀略吏民。死时认为儿子楼班年幼,于是让从子蹋顿总摄三王部。',
|
||||
liuba:'刘巴(?-222年),字子初,荆州零陵郡烝阳县(今湖南省衡阳县、邵东县一带)人,东汉末年至三国时期蜀汉时期官员、名士。刘巴少知名,荆州牧刘表多次征用推举,刘巴均不应就。曹操征伐荆州,荆州士人多归刘备,刘巴却北上投靠曹操。后受曹操命令招降荆南三郡,不料先为刘备所得,刘巴不能复命曹操,遂远至交趾,又辗转进入益州。刘备平定益州后,刘巴归附刘备,为左将军西曹掾,法正死后接任尚书令。章武二年(222年)去世。刘巴博学多才,为刘备解决入蜀后的财政困难问题,又与诸葛亮等共制蜀汉的法律文件《蜀科》。为人简朴清高,退无私交,曹魏大臣陈群甚敬重之。所著录于《刘令君集》。',
|
||||
|
@ -10204,12 +10303,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
guānning:'关宁,《三国演义》的虚构人物,为关定之子,关平的哥哥,学文。关羽前往冀州寻找刘备时曾居于关定庄,关定命关宁、关平二子出拜。后关羽同刘备回到关定庄时,关羽向刘备介绍关宁、关平二人,关定即提出让关平拜关羽为义父。',
|
||||
mushun:'穆顺,小说《三国演义》中的人物,男,东汉末宦官。献帝欲修书与国舅伏完,共谋图曹公。因顺为宦官中之忠义可托者,乃命顺往送书。顺藏书于发中,潜出禁宫,径至完宅,将书呈上。及完回书付顺,顺乃藏于头髻内,辞完回宫。然公闻信,先于宫门等候,顺回遇公,公喝左右,遍搜身上,并无夹带,放行。忽然风吹落其帽。公又唤回,取帽视之,遍观无物,还帽令戴。顺双手倒戴其帽。公心疑,令左右搜其头发中,搜出伏完书来。公见书大怒,执下顺于密室问之,顺不肯招。当晚将顺、完等宗族二百余口,皆斩于市。',
|
||||
jsp_guanyu:'关羽,字云长。曾水淹七军、擒于禁、斩庞德、威震华夏,吓得曹操差点迁都躲避,但是东吴偷袭荆州,关羽兵败被害。后传说吕蒙因关羽之魂索命而死。',
|
||||
liuling:'刘伶(约221年-约300年),字伯伦,西晋沛国(治今安徽濉溪县西北)人,竹林七贤之一,中国魏晋时期作家,名士。<br>刘伶自幼便失去了父爱,因其父亲身材矮小,及至长大成人后,刘伶身高也不过六尺。魏齐王曹芳正始之末(249年),刘伶已成为当世名重一时的名士,并且常与嵇康、阮籍、阮咸集会于山阳竹林之下,饮酒赋诗,弹琴作歌。晋武帝司马炎泰始初年(265年)前后,曾做过一段时间的建威参军,不久朝廷下诏,入宫中策问。他大谈老庄,强调无为而治,非但没有得到重用,反而连参军之职也被罢免了,从此再无仕进。晋惠帝司马衷永康元年(300年)前后,以寿而终。<br>刘伶有“品酒第一人”的美称,也被酒行业传颂至今,后人以古瀑河边上的井水酿酒,还取刘伶墓地的黄土垒成窖池酿酒,为了纪念刘伶,当地百姓也将“润泉涌”更名为“刘伶醉”。其传世作品仅有《酒德颂》《北芒客舍》两篇,其中《酒德颂》所表现出的藐视一切存在的气概,敌视礼教之士的反抗精神,既高扬了人格的力量,批判了当时的黑暗政治,同时也抒发了压抑的愤世之情,充满了浪漫色彩,气魄豪迈,用辞又骈偶间行,有无意追求而自至的特点,对后代影响极大。',
|
||||
},
|
||||
characterTitle:{
|
||||
chunyuqiong:'#b对决限定武将',
|
||||
sp_xuyou:'#g4v4限定武将',
|
||||
},
|
||||
perfectPair:{},
|
||||
characterFilter:{
|
||||
chunyuqiong:function(mode){
|
||||
return mode!='identity'&&mode!='guozhan';
|
||||
|
@ -10798,6 +10897,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dcjuexiang_info:'当你死亡时,杀死你的角色弃置其装备区内的所有牌并失去1点体力,然后你可以令一名其他角色获得〖残韵〗。',
|
||||
dccanyun:'残韵',
|
||||
dccanyun_info:'每名角色限一次。出牌阶段,你可以弃置一张牌并选择一名其他角色,然后若其装备区里的牌数:小于你,其回复1点体力;大于你,其失去1点体力;等于你,其摸一张牌。若你的体力值为1,你摸一张牌。',
|
||||
mp_liuling:'刘伶',
|
||||
mpjiusong:'酒颂',
|
||||
mpjiusong_info:'当一名角色使用【酒】时,你获得1枚“醉”标记(“醉”数至多为3)。',
|
||||
mpmaotao:'酕醄',
|
||||
mpmaotao_info:'当其他角色使用牌指定唯一目标时,你可以移去1枚“醉”,令此牌的目标改为随机一名合法角色(无距离限制)。若目标角色与原目标相同,你从牌堆中获得一张【酒】。',
|
||||
mpbishi:'避世',
|
||||
mpbishi_info:'锁定技。你不能成为伤害类锦囊牌的目标。',
|
||||
star_caoren:'星曹仁',
|
||||
star_caoren_prefix:'星',
|
||||
starsujun:'肃军',
|
||||
|
@ -10834,6 +10940,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_danqi:'千里单骑',
|
||||
sp_star:'将星系列',
|
||||
sp_decade:'其他新服武将',
|
||||
mini_qixian:'小程序·竹林七贤',
|
||||
},
|
||||
pinyins:{
|
||||
卑弥呼:['Himiko']
|
||||
|
|
|
@ -1114,9 +1114,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
paoxiao:{
|
||||
audio:2,
|
||||
firstDo:true,
|
||||
audioname2:{old_guanzhang:'old_fuhun'},
|
||||
audioname:['re_zhangfei','guanzhang','xiahouba'],
|
||||
audioname2:{
|
||||
audioname2: {
|
||||
old_guanzhang:'old_fuhun',
|
||||
dc_xiahouba:'paoxiao_xiahouba',
|
||||
},
|
||||
trigger:{player:'useCard1'},
|
||||
|
@ -2539,7 +2539,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_zhangliao:['sp_zhangliao','yj_zhangliao','jsrg_zhangliao'],
|
||||
xiahoudun:['xiahoudun','re_xiahoudun','xin_xiahoudun'],
|
||||
liubei:['liubei','re_liubei','sb_liubei','dc_liubei','junk_liubei'],
|
||||
guanyu:['guanyu','re_guanyu','ps_guanyu'],
|
||||
guanyu:['guanyu','re_guanyu','ps_guanyu','old_guanyu'],
|
||||
zhangfei:['zhangfei','re_zhangfei','old_zhangfei','xin_zhangfei','sb_zhangfei','tw_zhangfei','jsrg_zhangfei','yj_zhangfei'],
|
||||
zhaoyun:['zhaoyun','re_zhaoyun','old_zhaoyun','sb_zhaoyun','ps2063_zhaoyun','ps2067_zhaoyun'],
|
||||
sp_zhaoyun:['sp_zhaoyun','jsp_zhaoyun'],
|
||||
|
|
|
@ -5351,7 +5351,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
for(j=0;j<storage[i].handcards2.length;j++){
|
||||
if(storage[i].handcards2[j].parentNode==ui.discardPile||
|
||||
storage[i].handcards2[j].parentNode==ui.cardPile){
|
||||
storage[i].handcards2[j].parentNode==ui.cardPile){
|
||||
player.node.handcards2.appendChild(storage[i].handcards2[j]);
|
||||
}
|
||||
else{
|
||||
|
@ -5360,7 +5360,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
for(j=0;j<storage[i].equips.length;j++){
|
||||
if(storage[i].equips[j].parentNode==ui.discardPile||
|
||||
storage[i].equips[j].parentNode==ui.cardPile){
|
||||
storage[i].equips[j].parentNode==ui.cardPile){
|
||||
storage[i].equips[j].style.transform='';
|
||||
player.$equip(storage[i].equips[j]);
|
||||
}
|
||||
|
|
287
character/tw.js
287
character/tw.js
|
@ -127,8 +127,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
kaisa:["male","western",4,["zhengfu"]],
|
||||
},
|
||||
characterIntro:{
|
||||
xiahousone:'三国杀集换式卡牌游戏《阵面对决》中的裂土系列卡牌。游卡桌游官方原创的三国时期女性角色。',
|
||||
zhangwei:'三国杀集换式卡牌游戏《阵面对决》中的帝畿系列卡牌。游卡桌游官方原创的三国时期女性角色。',
|
||||
xiahousone:'夏侯子萼,游卡桌游《三国杀阵面对决》中虚构的人物。在《阵面对决》中,设定为在貂蝉不在时血婆娑的实际首领。在海外服中,设定为夏侯惇的养女,继承了夏侯紫萼的血婆娑,之后“夏侯紫萼”这个名字就被隐匿于历史之中,而“夏侯子萼”则成为了血婆娑的首领“血蔷薇”的固定名号。',
|
||||
zhangwei:'张葳,游卡桌游《三国杀阵面对决》中虚构的人物。在《阵面对决》中,设定为被夏侯子萼救下后加入的血婆娑成员。在海外服中,设定为张奂的养女,张奂为宦官迫害时与其失散,为神秘女子所救并学得武艺,后与夏侯紫萼一起建立血婆娑。在李儒分成时为了保护百姓而牺牲。',
|
||||
nashime:'难升米(なしめ,或なんしょうまい)是倭国大夫。景初二年六月,受女王卑弥呼之命,与都市牛利出使魏国,被魏国拜为率善中郎将。',
|
||||
jiachong:'贾充(217年—282年),字公闾,平阳襄陵(今山西襄汾)人,三国曹魏至西晋时期大臣,曹魏豫州刺史贾逵之子。西晋王朝的开国元勋。出身平阳贾氏。曾参与镇压淮南二叛和弑杀魏帝曹髦,因此深得司马氏信任,其女儿贾褒(一名荃)及贾南风分别嫁予司马炎弟司马攸及次子司马衷,与司马氏结为姻亲,地位显赫。晋朝建立后,转任车骑将军、散骑常侍、尚书仆射,后升任司空、太尉等要职。更封鲁郡公。咸宁末,为使持节、假黄钺、大都督征讨吴国。吴国平定后,增邑八千户。太康三年(282年),贾充去世。西晋朝廷追赠他为太宰,礼官议谥曰荒,司马炎不采纳,改谥为武。有集五卷。',
|
||||
duosidawang:'朵思大王是《三国演义》中人物,南蛮秃龙洞的元帅,孟获弟弟孟优的朋友,据说是南蛮第一智者。',
|
||||
|
@ -298,9 +298,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
selectTarget:[1,3],
|
||||
multitarget:true,
|
||||
multiline:true,
|
||||
group:'twdanlie_add',
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.addTempSkill('twdanlie_effect');
|
||||
player.chooseToCompare(targets).setContent('chooseToCompareMeanwhile');
|
||||
'step 1'
|
||||
if(result.winner&&result.winner==player){
|
||||
|
@ -325,18 +325,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
subSkill:{
|
||||
effect:{
|
||||
charlotte:true,
|
||||
trigger:{player:'compare'},
|
||||
add:{
|
||||
audio:'twdanlie',
|
||||
trigger:{player:'compare',target:'compare'},
|
||||
filter:function(event,player){
|
||||
return event.getParent().name=='twdanlie'&&!event.iwhile&&player.isDamaged();
|
||||
if(!player.isDamaged()) return false;
|
||||
if(player!=event.target&&event.iwhile) return false;
|
||||
return true;
|
||||
},
|
||||
forced:true,
|
||||
popup:false,
|
||||
locked:false,
|
||||
content:function(){
|
||||
var num=player.getDamagedHp();
|
||||
trigger.num1+=num;
|
||||
if(trigger.num1>13) trigger.num1=13;
|
||||
if(player==trigger.player){
|
||||
trigger.num1+=num;
|
||||
if(trigger.num1>13) trigger.num1=13;
|
||||
}
|
||||
else{
|
||||
trigger.num2+=num;
|
||||
if(trigger.num2>13) trigger.num2=13;
|
||||
}
|
||||
game.log(player,'的拼点牌点数+',num);
|
||||
},
|
||||
},
|
||||
|
@ -397,8 +405,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.when('useCardAfter').filter(evt=>evt==trigger.getParent()).then(()=>{
|
||||
if(player.getHistory('sourceDamage',evt=>evt.card==trigger.card).length){
|
||||
player.draw();
|
||||
player.addTempSkill('shenzhu_more','phaseUseAfter');
|
||||
player.addMark('shenzhu_more',1,false);
|
||||
player.addTempSkill('twhuzhong_sha','phaseUseAfter');
|
||||
player.addMark('twhuzhong_sha',1,false);
|
||||
}
|
||||
else{
|
||||
target.line(player);
|
||||
|
@ -427,6 +435,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
game.log(result.targets,'成为了',trigger.card,'的额外目标');
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
sha:{
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
mod:{
|
||||
cardUsable:function(card,player,num){
|
||||
if(card.name=='sha') return num+player.countMark('twhuzhong_sha');
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
twfenwang:{
|
||||
audio:2,
|
||||
|
@ -500,7 +519,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
subSkill:{
|
||||
effect:{
|
||||
charlotte:true,
|
||||
trigger:{player:'useCard'},
|
||||
trigger:{player:'useCard1'},
|
||||
filter:function(event,player){
|
||||
return get.type(event.card)=='basic'||get.type(event.card)=='trick';
|
||||
},
|
||||
|
@ -514,7 +533,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
name:trigger.card.name,
|
||||
isCard:true,
|
||||
};
|
||||
var targets=trigger.targets.filter(i=>i.isIn());
|
||||
var targets=trigger.targets.filter(i=>i.isIn()&&player.canUse(card,i,false));
|
||||
if(targets.length) player.useCard(card,targets,false);
|
||||
}
|
||||
});
|
||||
|
@ -531,50 +550,65 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{global:'damageEnd'},
|
||||
filter:function(event,player){
|
||||
if(!event.player.isIn()) return false;
|
||||
if(event.player.getHistory('damage').indexOf(event)!=0) return false;
|
||||
return event.player==player||player.inRange(event.player);
|
||||
},
|
||||
usable:1,
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var list=lib.inpile.filter(name=>{
|
||||
var type=get.type2(name);
|
||||
if(type!='basic'&&type!='trick') return false;
|
||||
return !player.getStorage('twshenyi').includes(name);
|
||||
var list=get.inpileVCardList(info=>{
|
||||
return ['basic','trick','delay'].includes(info[0])&&!player.getStorage('twshenyi').includes(info[2]);
|
||||
});
|
||||
var dialog=['###'+get.prompt('twshenyi',trigger.player)+'###选择一个牌名,从牌堆中将此一张此牌名的牌称为“侠义”置于武将牌上',[list,'vcard']];
|
||||
var dialog=[`###${get.prompt('twshenyi',trigger.player)}###<div class="text center">从牌堆中将一张牌作为“侠义”置于武将牌上${player!=trigger.player&&player.countCards('h')?',然后将所有手牌交给其':''}</div>`,[list,'vcard']];
|
||||
player.chooseButton(dialog).set('ai',function(button){
|
||||
var trigger=_status.event.getTrigger();
|
||||
var player=_status.event.player,name=button.link[2];
|
||||
if(get.attitude(player,trigger.player)<=0) return 0;
|
||||
if(!get.cardPile2(card=>card.name==name)) return 0;
|
||||
return get.value({name:name});
|
||||
var value=get.value({name:name});
|
||||
if(['tao','jiu','caochuan','wuxie'].includes(name)&&get.event().getRand()>0.4) return value*2;
|
||||
return value;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var name=result.links[0][2];
|
||||
var name=result.links[0][2],nature=result.links[0][3];
|
||||
var cardx={name:name,nature:nature};
|
||||
player.logSkill('twshenyi',trigger.player);
|
||||
player.popup(name);
|
||||
player.popup(cardx);
|
||||
player.markAuto('twshenyi',[name]);
|
||||
game.log(player,'声明了','#y'+get.translation(name));
|
||||
var card=get.cardPile2(card=>card.name==name);
|
||||
game.log(player,'声明了',`#y${get.translation(cardx)}`);
|
||||
var card=get.cardPile2(card=>get.name(card,false)==name&&get.nature(card,false)==nature);
|
||||
if(card) player.addToExpansion([card],'gain2').gaintag.add('twshenyi');
|
||||
else{
|
||||
player.chat('无牌可得?!');
|
||||
game.log('但是牌堆中已经没有','#y'+get.translation(name),'了!');
|
||||
}
|
||||
if(trigger.player!=player&&player.countCards('h')){
|
||||
game.delayex();
|
||||
var skill='twshenyi_'+player.playerid;
|
||||
if(!lib.skill[skill]){
|
||||
lib.skill[skill]={charlotte:true};
|
||||
lib.translate[skill]='义·'+get.translation(player.name);
|
||||
}
|
||||
game.broadcastAll(lib.skill.twshenyi.createGainTag,skill,player.name);
|
||||
game.addVideo('skill',player,['twshenyi',[skill,player.name]]);
|
||||
player.give(player.getCards('h'),trigger.player).gaintag.add(skill);
|
||||
player.addSkill('twshenyi_draw');
|
||||
}
|
||||
}
|
||||
else player.storage.counttrigger.twshenyi--;
|
||||
},
|
||||
video:(player,info)=>lib.skill.twshenyi.createGainTag(info[0],info[1]),
|
||||
createGainTag:function(skill,name){
|
||||
if(!lib.skill[skill]){
|
||||
lib.skill[skill]={charlotte:true};
|
||||
lib.translate[skill]='义·'+get.translation(name);
|
||||
}
|
||||
if(!_status.postReconnect.twshenyi){
|
||||
_status.postReconnect.twshenyi=[
|
||||
lib.skill.twshenyi.createGainTag,[],[]
|
||||
];
|
||||
}
|
||||
_status.postReconnect.twshenyi[1].add(skill);
|
||||
_status.postReconnect.twshenyi[2].add(name);
|
||||
},
|
||||
marktext:'义',
|
||||
intro:{
|
||||
name:'侠义',
|
||||
|
@ -598,56 +632,31 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return game.hasPlayer(target=>{
|
||||
var evt=event.getl(target);
|
||||
if(!evt||!evt.hs||!evt.hs.length) return false;
|
||||
if(event.name=='lose'){
|
||||
for(var i in event.gaintag_map){
|
||||
if(event.gaintag_map[i].contains(skill)) return true;
|
||||
}
|
||||
return false;
|
||||
for(let i in evt.gaintag_map){
|
||||
if(evt.gaintag_map[i].includes(skill)) return true;
|
||||
}
|
||||
return target.hasHistory('lose',function(evt){
|
||||
if(event!=evt.getParent()) return false;
|
||||
for(var i in evt.gaintag_map){
|
||||
if(evt.gaintag_map[i].contains(skill)) return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
});
|
||||
},
|
||||
forced:true,
|
||||
direct:true,
|
||||
content:function(){
|
||||
var skill='twshenyi_'+player.playerid;
|
||||
var num=0;
|
||||
var targets=game.filterPlayer(target=>{
|
||||
var evt=trigger.getl(target);
|
||||
var numx=0;
|
||||
if(!evt||!evt.hs||!evt.hs.length) return false;
|
||||
if(trigger.name=='lose'){
|
||||
for(var i in trigger.gaintag_map){
|
||||
if(trigger.gaintag_map[i].contains(skill)) return true;
|
||||
}
|
||||
return false;
|
||||
for(var i in evt.gaintag_map){
|
||||
if(evt.gaintag_map[i].includes(skill)) numx++;
|
||||
}
|
||||
return target.hasHistory('lose',function(evt){
|
||||
if(trigger!=evt.getParent()) return false;
|
||||
for(var i in evt.gaintag_map){
|
||||
if(evt.gaintag_map[i].contains(skill)) return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}),num=0;
|
||||
targets.forEach(target=>{
|
||||
var cards=trigger.getl(target).hs;
|
||||
if(trigger.name=='lose'){
|
||||
for(var i in trigger.gaintag_map){
|
||||
if(trigger.gaintag_map[i].contains(skill)) num++;
|
||||
}
|
||||
}
|
||||
else target.getHistory('lose',function(evt){
|
||||
if(trigger!=evt.getParent()) return false;
|
||||
for(var i in evt.gaintag_map){
|
||||
if(evt.gaintag_map[i].contains(skill)) num++;
|
||||
}
|
||||
});
|
||||
if(numx>0) return num+=numx;
|
||||
return false;
|
||||
});
|
||||
if(num>0) player.draw(num);
|
||||
if(num>0){
|
||||
player.logSkill('twshenyi_draw',targets);
|
||||
player.draw(num);
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -659,23 +668,29 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return player.getExpansions('twshenyi').length>game.countPlayer();
|
||||
},
|
||||
check:function(event,player){
|
||||
if(player.hp>=3||(player.countCards('h')>=4&&player.getExpansions('twshenyi').every(card=>!player.hasValueTarget(card)||!get.tag(card,'damage')||!lib.skill.xunshi.isXunshi(card)))) return false;
|
||||
return player.getExpansions('twshenyi').some(card=>player.hasValueTarget(card));
|
||||
},
|
||||
prompt2:function(event,player){
|
||||
return '依次使用武将牌上的“侠义”牌,回合结束时弃置所有手牌并将失去X点体力(X为你的体力值-1且X至少为1)';
|
||||
},
|
||||
direct:true,
|
||||
content:function*(event,map){
|
||||
var player=map.player;
|
||||
while(player.getExpansions('twshenyi').some(card=>player.hasValueTarget(card))){
|
||||
var result=yield player.chooseButton(['兴汉:请选择其中的一张牌使用',player.getExpansions('twshenyi').filter(card=>player.hasValueTarget(card))]).set('ai',function(button){
|
||||
return _status.event.player.getUseValue(button.link);
|
||||
});
|
||||
if(result.bool){
|
||||
player.chooseToUse(true,result.links[0],false);
|
||||
}
|
||||
var result=yield player.chooseBool().set('createDialog',[
|
||||
get.prompt('twxinghan'),
|
||||
`<div class="text center">按顺序使用以下“侠义”牌。但是回合结束时你须弃置所有手牌并失去X点体力(X为你的体力值-1且X至少为1)</div>`,
|
||||
player.getExpansions('twshenyi').filter(card=>player.hasUseTarget(card)).reverse(),
|
||||
'hidden',
|
||||
]).set('choice',lib.skill.twxinghan.check(null,player));
|
||||
if(!result.bool){
|
||||
event.finish();
|
||||
return;
|
||||
}
|
||||
while(true){
|
||||
var cards=player.getExpansions('twshenyi').filter(card=>player.hasUseTarget(card)).reverse();
|
||||
if(!cards.length) break;
|
||||
yield player.chooseUseTarget(true,cards[0],false);
|
||||
}
|
||||
player.when('phaseEnd').then(()=>{
|
||||
if(player.countCards('h')) player.discard(player.getCards('h'));
|
||||
if(player.countCards('h')) player.chooseToDiscard(player.countCards('h'),true);
|
||||
var num=Math.max(1,player.getHp()-1);
|
||||
player.loseHp(num);
|
||||
});
|
||||
|
@ -685,17 +700,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
init:{
|
||||
audio:'twxinghan',
|
||||
trigger:{
|
||||
player:['loseEnd','dying','dyingAfter'],
|
||||
player:['loseEnd','dying','die','dyingAfter'],
|
||||
global:['equipEnd','addJudgeEnd','gainEnd','loseAsyncEnd','addToExpansionEnd'],
|
||||
},
|
||||
filter:function(event,player){
|
||||
return (player.getExpansions('twshenyi').length&&(!player.countCards('h')||player.isDying()))^player.hasSkill('twxinghan_in');
|
||||
return (player.getExpansions('twshenyi').length&&event.name!='die'&&(!player.countCards('h')||player.isDying()))^player.hasSkill('twxinghan_in');
|
||||
},
|
||||
forced:true,
|
||||
firstDo:true,
|
||||
silent:true,
|
||||
forceDie:true,
|
||||
content:function(){
|
||||
if(player.getExpansions('twshenyi').length&&(!player.countCards('h')||player.isDying())){
|
||||
if(player.getExpansions('twshenyi').length&&trigger.name!='die'&&(!player.countCards('h')||player.isDying())){
|
||||
var cards=player.getExpansions('twshenyi');
|
||||
var cardsx=cards.map(card=>{
|
||||
var cardx=ui.create.card();
|
||||
|
@ -972,10 +988,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
switch(get.sgn(att)){
|
||||
case 1:
|
||||
return [cards,[]];
|
||||
break;
|
||||
case 0:
|
||||
return [cardx,cardy];
|
||||
break;
|
||||
case -1:
|
||||
var num=Math.ceil(cards.length/2)+(cards.length%2==0?1:0);
|
||||
if(num>1&&player.hasSkill('twchungang')) num--;
|
||||
|
@ -985,7 +999,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
cardy.sort((a,b)=>get.value(b)-get.value(a));
|
||||
cardx.addArray(cardy.slice(num,cardy.length));
|
||||
return [cardx,cardy.slice(0,num)];
|
||||
break;
|
||||
}
|
||||
}).set('cards',cards);
|
||||
'step 1'
|
||||
|
@ -5736,7 +5749,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return false;
|
||||
});
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var target=lib.skill.twenyuan1.logTarget(trigger,player)[0];
|
||||
|
@ -6018,7 +6030,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
})){
|
||||
event.finish();
|
||||
return;
|
||||
};
|
||||
}
|
||||
player.chooseTarget(get.prompt('twzhengrong'),'将一名其他角色的一张牌置于武将牌上,称为“荣”',function(card,player,target){
|
||||
return target!=player&&target.countCards('he');
|
||||
}).set('ai',function(target){
|
||||
|
@ -6447,7 +6459,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.addToExpansion(result.cards[0],'log','give',player).gaintag.add('twmingren');
|
||||
var card=player.getExpansions('twmingren')[0];
|
||||
if(card) player.gain(card,'gain2');
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -8839,7 +8851,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return 6+get.effect(player,card,target,target);
|
||||
}
|
||||
return get.effect(target,{name:'guohe_copy2'},player,player)/2+get.effect(target,card,player,player);
|
||||
});;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
event.targets=result.targets;
|
||||
|
@ -9761,42 +9773,42 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
mod:{
|
||||
cardEnabled:function(card,player){
|
||||
if(game.hasPlayer(function(current){
|
||||
var list=current.storage.twgongsun_shadow;
|
||||
if(!list) return false;
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(list[i][0]==player&&list[i][1]==card.suit) return true;
|
||||
}
|
||||
return false;
|
||||
var list=current.storage.twgongsun_shadow;
|
||||
if(!list) return false;
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(list[i][0]==player&&list[i][1]==card.suit) return true;
|
||||
}
|
||||
return false;
|
||||
})) return false;
|
||||
},
|
||||
cardSavable:function(card,player){
|
||||
if(game.hasPlayer(function(current){
|
||||
var list=current.storage.twgongsun_shadow;
|
||||
if(!list) return false;
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(list[i][0]==player&&list[i][1]==card.suit) return true;
|
||||
}
|
||||
return false;
|
||||
var list=current.storage.twgongsun_shadow;
|
||||
if(!list) return false;
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(list[i][0]==player&&list[i][1]==card.suit) return true;
|
||||
}
|
||||
return false;
|
||||
})) return false;
|
||||
},
|
||||
cardRespondable:function(card,player){
|
||||
if(game.hasPlayer(function(current){
|
||||
var list=current.storage.twgongsun_shadow;
|
||||
if(!list) return false;
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(list[i][0]==player&&list[i][1]==card.suit) return true;
|
||||
}
|
||||
return false;
|
||||
var list=current.storage.twgongsun_shadow;
|
||||
if(!list) return false;
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(list[i][0]==player&&list[i][1]==card.suit) return true;
|
||||
}
|
||||
return false;
|
||||
})) return false;
|
||||
},
|
||||
cardDiscardable:function(card,player){
|
||||
if(game.hasPlayer(function(current){
|
||||
var list=current.storage.twgongsun_shadow;
|
||||
if(!list) return false;
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(list[i][0]==player&&list[i][1]==card.suit) return true;
|
||||
}
|
||||
return false;
|
||||
var list=current.storage.twgongsun_shadow;
|
||||
if(!list) return false;
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(list[i][0]==player&&list[i][1]==card.suit) return true;
|
||||
}
|
||||
return false;
|
||||
})) return false;
|
||||
},
|
||||
},
|
||||
|
@ -10377,8 +10389,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.logSkill('twfenghan',targets);
|
||||
if(targets.length>1) game.asyncDraw(targets);
|
||||
else{
|
||||
targets[0].draw();
|
||||
event.finish();
|
||||
targets[0].draw();
|
||||
event.finish();
|
||||
}
|
||||
}
|
||||
else{
|
||||
|
@ -10759,20 +10771,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(lib.skill.twfuzuan.filterTarget,get.prompt('twfuzuan'),'变更一名角色的一个转换技的状态').set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.effect(target,'twfuzuan',player,player);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('twfuzuan',target);
|
||||
var next=game.createEvent('twfuzuan');
|
||||
next.player=player;
|
||||
next.target=target;
|
||||
next.setContent(lib.skill.twfuzuan.content);
|
||||
}
|
||||
'step 0'
|
||||
player.chooseTarget(lib.skill.twfuzuan.filterTarget,get.prompt('twfuzuan'),'变更一名角色的一个转换技的状态').set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.effect(target,'twfuzuan',player,player);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('twfuzuan',target);
|
||||
var next=game.createEvent('twfuzuan');
|
||||
next.player=player;
|
||||
next.target=target;
|
||||
next.setContent(lib.skill.twfuzuan.content);
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -11212,7 +11224,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(storage){
|
||||
if(storage){
|
||||
return '经过'+storage[1]+'个“回合结束时”后,若有“示”,则从牌堆中获得'+storage[0]+'张和“示”名称相同的牌';
|
||||
return '经过'+storage[1]+'个“回合结束时”后,若有“示”,则从牌堆中获得'+storage[0]+'张和“示”名称相同的牌';
|
||||
}
|
||||
return '未指定施法效果';
|
||||
},
|
||||
|
@ -11386,7 +11398,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(storage){
|
||||
if(storage){
|
||||
return '经过'+storage[1]+'个“回合结束时”后,回复'+storage[0]+'点体力';
|
||||
return '经过'+storage[1]+'个“回合结束时”后,回复'+storage[0]+'点体力';
|
||||
}
|
||||
return '未指定施法效果';
|
||||
},
|
||||
|
@ -11462,7 +11474,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(storage){
|
||||
if(storage){
|
||||
return '经过'+storage[1]+'个“回合结束时”后,摸'+storage[0]*2+'张牌';
|
||||
return '经过'+storage[1]+'个“回合结束时”后,摸'+storage[0]*2+'张牌';
|
||||
}
|
||||
return '未指定施法效果';
|
||||
},
|
||||
|
@ -11542,7 +11554,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(storage){
|
||||
if(storage){
|
||||
return '经过'+storage[1]+'个“回合结束时”后,获得'+storage[0]+'层“防止一次伤害”的效果';
|
||||
return '经过'+storage[1]+'个“回合结束时”后,获得'+storage[0]+'层“防止一次伤害”的效果';
|
||||
}
|
||||
return '未指定施法效果';
|
||||
},
|
||||
|
@ -11764,7 +11776,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var checkx=get.color(card,player)==get.color(judging);
|
||||
if(checkx>0) return checkx;
|
||||
return 0;
|
||||
};
|
||||
}
|
||||
return result*(attitude>0?1:-1);
|
||||
}).set('judging',trigger.player.judging[0]);
|
||||
'step 1'
|
||||
|
@ -13120,7 +13132,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
}).sortBySeat();
|
||||
for(var i of list){
|
||||
i.discardPlayerCard(player,true,'he').boolline=true;
|
||||
i.discardPlayerCard(player,true,'he').boolline=true;
|
||||
}
|
||||
},
|
||||
},
|
||||
|
@ -14567,6 +14579,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
jiangji:['tw_jiangji','jiangji'],
|
||||
baoxin:['tw_baoxin','baoxin'],
|
||||
yanxiang:['yanxiang','tw_yanxiang'],
|
||||
liwei:['liwei','tw_liwei'],
|
||||
},
|
||||
dynamicTranslate:{
|
||||
twfeifu:function(player){
|
||||
|
@ -15211,7 +15224,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xia_xiahoudun:'侠夏侯惇',
|
||||
xia_xiahoudun_prefix:'侠',
|
||||
twdanlie:'胆烈',
|
||||
twdanlie_info:'出牌阶段限一次,你可以与至多三名其他角色同时拼点,且你此次的拼点牌点数+X(X为你已损失的体力值)。若你赢,你对这些角色各造成1点伤害;若你没赢,你失去1点体力。',
|
||||
twdanlie_info:'①出牌阶段限一次。你可以与至多三名其他角色共同拼点。若你赢,你对没赢的角色依次造成1点伤害;若你没赢,你失去1点体力。②你的拼点牌点数+X(X为你已损失的体力值)。',
|
||||
xia_zhangwei:'张葳',
|
||||
twhuzhong:'护众',
|
||||
twhuzhong_info:'当你于出牌阶段使用无属性【杀】指定唯一目标角色时,你可以选择一项:①弃置一张手牌,然后你可以为此牌额外选择一个目标;②令其弃置一张手牌,此牌结算完毕后,若此牌造成过伤害,则你摸一张牌且本阶段可以额外使用一张【杀】,否则其对你造成1点伤害。',
|
||||
|
@ -15223,9 +15236,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xia_liubei:'侠刘备',
|
||||
xia_liubei_prefix:'侠',
|
||||
twshenyi:'伸义',
|
||||
twshenyi_info:'每回合限一次,当你或你攻击范围内的一名角色受到伤害后,你可以声明一个基本牌或锦囊牌的牌名(每种牌名限一次),然后从牌堆中将一张同名牌称为“侠义”置于武将牌上,然后若受伤角色不为你,则你将所有手牌交给其,且当其失去一张你以此法交给其的牌后,你摸一张牌。',
|
||||
twshenyi_info:'每回合限一次。当你或你攻击范围内的一名角色于一回合内首次受到伤害后,你可以声明一种基本牌或锦囊牌(每种牌名限一次),然后从牌堆中将一张同名牌称为“侠义”置于武将牌上。若受伤角色不为你,则你将所有手牌交给其,且当其失去一张你以此法交给其的牌后,你摸一张牌。',
|
||||
twxinghan:'兴汉',
|
||||
twxinghan_info:'①当你没有手牌时或你处于濒死状态时,你可以如手牌般使用或打出你武将牌上的“侠义”牌。②准备阶段,若你武将牌上的“侠义”牌数大于场上的存活角色数,则你可以依次使用其中所有可以使用的牌,然后于回合结束时弃置所有手牌并失去X点体力(X为你的体力值-1且X至少为1)。',
|
||||
twxinghan_info:'①当你没有手牌时或你处于濒死状态时,你可以如手牌般使用或打出“侠义”牌。②准备阶段,若“侠义”牌数大于存活角色数,则你可以依次使用其中所有可以使用的牌。然后你获得如下效果:回合结束时,你弃置所有手牌并失去X点体力(X为你的体力值-1且X至少为1)。',
|
||||
|
||||
tw_mobile:'海外服·稀有专属',
|
||||
tw_yunchouzhi:'运筹帷幄·智',
|
||||
|
|
|
@ -8,12 +8,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dc_xujing:['male','shu',3,['dcshangyu','dccaixia']],
|
||||
dc_zhaoxiang:['female','shu',4,['refanghun','refuhan']],
|
||||
dc_guansuo:['male','shu',4,['xinzhengnan','xiefang']],
|
||||
xin_baosanniang:['female','shu',3,['decadewuniang','decadexushen']],
|
||||
dc_shixie:['male','qun',3,['rebiluan','ollixia']],
|
||||
dc_sp_machao:['male','qun',4,['zhuiji','dc_olshichou']],
|
||||
old_huangfusong:['male','qun',4,['xinfenyue']],
|
||||
dc_xiahouba:['male','shu',4,['rebaobian']],
|
||||
dc_daxiaoqiao:['female','wu',3,['dcxingwu','dcluoyan']],
|
||||
tianshangyi:['female','wei',3,['dcposuo','dcxiaoren'],['unseen']],
|
||||
tianshangyi:['female','wei',3,['dcposuo','dcxiaoren']],
|
||||
sunlingluan:['female','wu',3,['dclingyue','dcpandi']],
|
||||
dc_wangjun:['male','qun',4,['dctongye','dcchangqu']],
|
||||
zhoubuyi:['male','wei',3,['dcshiji','dcsilun']],
|
||||
|
@ -28,7 +29,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhangjinyun:['female','shu',3,['dchuizhi','dcjijiao']],
|
||||
huanfan:['male','wei',3,['dcjianzheng','dcfumou']],
|
||||
chentai:['male','wei',4,['dcctjiuxian','dcchenyong']],
|
||||
sunyu:['male','wu',3,['dcquanshou','dcshexue'],['unseen']],
|
||||
sunyu:['male','wu',3,['dcquanshou','dcshexue']],
|
||||
xizheng:['male','shu',3,['dcdanyi','dcwencan']],
|
||||
dc_ruiji:['female','wu',4,['dcwangyuan','dclingyin','dcliying']],
|
||||
zerong:['male','qun',4,['dccansi','dcfozong']],
|
||||
|
@ -95,7 +96,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp2_doukou:['re_xinxianying','huaman','xuelingyun','dc_ruiji','duanqiaoxiao','tianshangyi'],
|
||||
sp2_jichu:['zhaoang','dc_liuye','dc_wangyun','yanghong','huanfan','xizheng'],
|
||||
sp2_yuxiu:['dongguiren','dc_tengfanglan','zhangjinyun','zhoubuyi','dc_xujing'],
|
||||
sp2_qifu:['dc_guansuo','dc_zhaoxiang'],
|
||||
sp2_qifu:['dc_guansuo','xin_baosanniang','dc_zhaoxiang'],
|
||||
sp2_gaoshan:['wanglang','liuhui'],
|
||||
sp2_wumiao:['wu_zhugeliang','wu_luxun'],
|
||||
}
|
||||
|
@ -155,7 +156,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(shown.length<cards.length){
|
||||
var num=cards.length-shown.length;
|
||||
player.$draw(num);
|
||||
game.log(player,'从牌堆获得了',num,'张点数为8的牌');
|
||||
game.log(player,'从牌堆获得了',get.cnNumber(num),'张点数为8的牌');
|
||||
}
|
||||
if(shown.length>0){
|
||||
player.$gain2(shown,false);
|
||||
|
@ -1506,7 +1507,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(type=='equip'&&game.hasPlayer(current=>{
|
||||
return current.canEquip(card);
|
||||
})||type=='delay'&&game.hasPlayer(current=>{
|
||||
return !current.storage._disableJudge&&!current.hasJudge(card.name);
|
||||
return current.canAddJudge(card);
|
||||
})) choices.unshift('场上');
|
||||
player.chooseControl(choices).set('prompt','请选择要将'+get.translation(card)+'置于的位置').set('ai',()=>{
|
||||
return _status.event.choice;
|
||||
|
@ -1526,7 +1527,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return _status.event.targets.contains(target);
|
||||
}).set('targets',game.filterPlayer(current=>{
|
||||
if(type=='equip') return current.canEquip(card);
|
||||
if(type=='delay') return !current.storage._disableJudge&&!current.hasJudge(card.name);
|
||||
if(type=='delay') return current.canAddJudge(card);
|
||||
return false;
|
||||
})).set('ai',target=>{
|
||||
var player=_status.event.player;
|
||||
|
@ -1539,7 +1540,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
else{
|
||||
player.$throw(card,1000);
|
||||
var next=player.lose(card,ui.cardPile);
|
||||
var next=player.lose(card,ui.cardPile,'visible');
|
||||
if(result.control=='牌堆顶') next.insert_card=true;
|
||||
game.log(player,'将',card,'置于了','#y'+result.control);
|
||||
}
|
||||
|
@ -1555,7 +1556,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
target.addJudge(card);
|
||||
}
|
||||
}
|
||||
if(event.count<4) event.goto(1);
|
||||
'step 5'
|
||||
game.countPlayer(current=>{
|
||||
var count=current.countCards('e');
|
||||
|
@ -1564,7 +1564,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
current.link(false);
|
||||
current.turnOver(false);
|
||||
}
|
||||
event.equipCount[current.playerid]=count;
|
||||
});
|
||||
if(event.count<4) event.goto(1);
|
||||
}
|
||||
},
|
||||
//杜预
|
||||
|
@ -2806,7 +2808,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
result:{
|
||||
target:function(player,target){
|
||||
if(ui.cardPile.childNodes.length>game.players.length*5&&!player.hasSkill('dcjijiao_risutoa')&&
|
||||
!game.hasPlayer(current=>current.hp<=1)&&game.countPlayer(current=>current.hp===2&¤t.countCards('hes')<3)<=1) return 0;
|
||||
!game.hasPlayer(current=>current.hp<=1)&&game.countPlayer(current=>current.hp===2&¤t.countCards('hes')<3)<=1) return 0;
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
@ -3145,11 +3147,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{global:'phaseBegin'},
|
||||
filter:function(event,player){
|
||||
return event.player.countCards('h')<event.player.maxHp;
|
||||
return event.player.countCards('h')<=event.player.maxHp;
|
||||
},
|
||||
logTarget:'player',
|
||||
check:function(event,player){
|
||||
return get.attitude(player,event.player)>0||event.player.maxHp-event.player.countCards('h')<=2;
|
||||
if(get.attitude(player,event.player)>0) return true;
|
||||
const draw=event.player.maxHp-event.player.countCards('h');
|
||||
return draw<=2&&event.player.getHp(true)-draw>=1;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
|
@ -3161,7 +3165,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var draw=Math.min(5,Math.max(0,trigger.player.maxHp-trigger.player.countCards('h')));
|
||||
if(get.attitude(trigger.player,player)>0){
|
||||
if(draw>=3||trigger.player.getCardUsable('sha')>1) return '选项一';
|
||||
if(draw<=1&&trigger.player.countCards('hs',card=>{
|
||||
if(!draw||draw<=1&&trigger.player.countCards('hs',card=>{
|
||||
return get.name(card)=='sha'&&trigger.player.hasValueTarget(card);
|
||||
})) return '选项二';
|
||||
return '选项一';
|
||||
|
@ -3212,7 +3216,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
popup:false,
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
marktext:'守',
|
||||
marktext:'<span style="text-decoration: line-through;">守</span>',
|
||||
intro:{content:'本回合使用的牌被抵消后,$摸一张牌'},
|
||||
content:function(){
|
||||
var targets=player.getStorage('dcquanshou_respond');
|
||||
|
@ -3232,7 +3236,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{player:'phaseUseBegin'},
|
||||
filter:function(event,player){
|
||||
var card=lib.skill.dcshexue.getLast();
|
||||
return card&&player.hasUseTarget(card);
|
||||
return card&&player.hasUseTarget(card,false);
|
||||
},
|
||||
getLast:function(){
|
||||
for(var current of game.filterPlayer()){
|
||||
|
@ -3258,10 +3262,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var card=lib.skill.dcshexue.getLast();
|
||||
game.broadcastAll(function(card){
|
||||
lib.skill.dcshexue_backup.viewAs=card;
|
||||
lib.skill.dcshexue_backup.prompt='设学:是否将一张牌当做'+get.translation(card)+'使用?';
|
||||
},card);
|
||||
var next=player.chooseToUse();
|
||||
next.set('openskilldialog','设学:是否将一张牌当做'+get.translation(card)+'使用?');
|
||||
next.set('openskilldialog',`###${get.prompt('dcshexue')}###将一张牌当做${get.translation(card.nature)||''}【${get.translation(card.name)}】使用`);
|
||||
next.set('norestore',true);
|
||||
next.set('addCount',false);
|
||||
next.set('_backupevent','dcshexue_backup');
|
||||
|
@ -3277,6 +3280,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filterCard:function(card){
|
||||
return get.itemtype(card)=='card';
|
||||
},
|
||||
filterTarget:lib.filter.targetEnabled,
|
||||
position:'hes',
|
||||
selectCard:1,
|
||||
check:(card)=>6-get.value(card),
|
||||
|
@ -3297,6 +3301,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var card=history[history.length-1].card;
|
||||
return '令下一回合的角色于其出牌阶段开始时选择是否将一张牌当做'+(get.translation(card.nature)||'')+'【'+get.translation(card.name)+'】使用';
|
||||
},
|
||||
check:function(event,player){
|
||||
let evt=event.getParent('phase').getParent();
|
||||
let nextPlayer=player.getNext();
|
||||
if(evt&&evt.next&&evt.next.length){
|
||||
nextPlayer=evt.next[0].player;
|
||||
}
|
||||
return get.attitude(player,nextPlayer)>0;
|
||||
},
|
||||
content:function(){
|
||||
var history=player.getHistory('useCard',evt=>{
|
||||
return evt.getParent('phaseUse')==trigger&&(get.type(evt.card)=='basic'||get.type(evt.card)=='trick');
|
||||
|
@ -3311,7 +3323,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
study:{
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
filter:function(event,player){
|
||||
return player.getStorage('dcshexue_study').some(i=>event.player.hasUseTarget(i));
|
||||
return player.getStorage('dcshexue_study').some(i=>event.player.hasUseTarget(i,false));
|
||||
},
|
||||
onremove:true,
|
||||
charlotte:true,
|
||||
|
@ -3321,13 +3333,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
event.cards=player.getStorage('dcshexue_study');
|
||||
'step 1'
|
||||
var card=cards.pop();
|
||||
if(trigger.player.hasUseTarget(card)){
|
||||
if(trigger.player.hasUseTarget(card,false)){
|
||||
game.broadcastAll(function(card){
|
||||
lib.skill.dcshexue_backup.viewAs=card;
|
||||
lib.skill.dcshexue_backup.prompt='设学:是否将一张牌当做'+get.translation(card)+'使用?';
|
||||
},card);
|
||||
var next=trigger.player.chooseToUse();
|
||||
next.set('openskilldialog','设学:是否将一张牌当做'+get.translation(card)+'使用?');
|
||||
next.set('openskilldialog',`###${get.prompt('dcshexue_study')}###将一张牌当做${get.translation(card.nature)||''}【${get.translation(card.name)}】使用`);
|
||||
next.set('norestore',true);
|
||||
next.set('addCount',false);
|
||||
next.set('_backupevent','dcshexue_backup');
|
||||
|
@ -4141,7 +4153,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var selected=ui.selected.targets;
|
||||
if(!selected.length) return true;
|
||||
for(var i of selected){
|
||||
if(i.getNext()==target||i.getPrevious()==target) return true;
|
||||
if(i.getNext()==target||i.getPrevious()==target) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
@ -4245,7 +4257,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
try{
|
||||
targetsx=game.filterPlayer(current=>player.inRange(current));
|
||||
}
|
||||
catch(e){player.storage.dcyuanmo_range=_tmp};
|
||||
catch(e){
|
||||
player.storage.dcyuanmo_range=_tmp
|
||||
}
|
||||
player.storage.dcyuanmo_range=_tmp;
|
||||
targetsx.removeArray(targets);
|
||||
return targetsx.reduce((p,c)=>{
|
||||
|
@ -6061,7 +6075,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dcshoutan:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
selectCard:-1,
|
||||
position:'h',
|
||||
filter:function(event,player){
|
||||
if(player.hasSkill('dcyaoyi')) return !player.hasSkill('dcshoutan_blocker',null,null,false);
|
||||
|
@ -8052,7 +8065,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var selected=ui.selected.targets;
|
||||
if(!selected.contains(next)&&!selected.contains(prev)) return (target==next||target==prev);
|
||||
for(var i of selected){
|
||||
if(i.getNext()==target||i.getPrevious()==target) return true;
|
||||
if(i.getNext()==target||i.getPrevious()==target) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
@ -8626,20 +8639,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
group:'baoshu_draw',
|
||||
subSkill:{
|
||||
draw:{
|
||||
trigger:{global:'phaseDrawBegin2'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed&&event.player.hasMark('baoshu');
|
||||
},
|
||||
content:function(){
|
||||
var target=trigger.player,num=target.countMark('baoshu');
|
||||
trigger.player.logSkill('baoshu_draw');
|
||||
trigger.num+=num;
|
||||
trigger.player.removeMark('baoshu',num);
|
||||
},
|
||||
},
|
||||
draw:{
|
||||
trigger:{global:'phaseDrawBegin2'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
return !event.numFixed&&event.player.hasMark('baoshu');
|
||||
},
|
||||
content:function(){
|
||||
var target=trigger.player,num=target.countMark('baoshu');
|
||||
trigger.player.logSkill('baoshu_draw');
|
||||
trigger.num+=num;
|
||||
trigger.player.removeMark('baoshu',num);
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//吴范
|
||||
|
@ -8908,7 +8921,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(blacks.length>0){
|
||||
dialog.push('<div class="text center">黑色牌</div>');
|
||||
dialog.push(blacks);
|
||||
};
|
||||
}
|
||||
player.chooseButton(dialog,true).set('ai',function(button){
|
||||
var player=_status.event.player;
|
||||
var color=get.color(button.link),cards=player.getExpansions('syjiqiao');
|
||||
|
@ -9255,7 +9268,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
switch(button.link){
|
||||
case 0:
|
||||
return 2;
|
||||
break;
|
||||
case 1:
|
||||
return Math.max(0.5,player.countCards('hs',function(card){
|
||||
return get.name(card)=='sha'&&player.hasValueTarget(card);
|
||||
|
@ -9264,10 +9276,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}).map(function(target){
|
||||
return get.damageEffect(target,player,player);
|
||||
}));
|
||||
break;
|
||||
case 2:
|
||||
return player.needsToDiscard()/4;
|
||||
break;
|
||||
case 3:
|
||||
var num=0;
|
||||
return 0.8*Math.max.apply(Math,game.filterPlayer(function(current){
|
||||
|
@ -9275,7 +9285,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}).map(function(target){
|
||||
return get.effect(target,{name:'shunshou_copy'},player,player);
|
||||
}));
|
||||
break;
|
||||
case 4:
|
||||
var num=0;
|
||||
game.countPlayer(function(current){
|
||||
|
@ -9285,7 +9294,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
});
|
||||
return num*0.8;
|
||||
break;
|
||||
}
|
||||
});
|
||||
if(player.getDamagedHp()>0) next.set('selectButton',[1,1+player.getDamagedHp()]);
|
||||
|
@ -10230,7 +10238,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
return !player.storage.zunwei||player.storage.zunwei.length<3;
|
||||
let storage=player.getStorage('zunwei');
|
||||
return storage.length<3&&game.hasPlayer(current=>{
|
||||
return player.isDamaged()&¤t.getHp()>player.getHp()&&!storage.includes(0)||
|
||||
current.countCards('h')>player.countCards('h')&&!storage.includes(1)||
|
||||
current.countCards('e')>player.countCards('e')&&!storage.includes(2);
|
||||
});
|
||||
},
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
|
@ -10241,12 +10254,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
];
|
||||
var choiceList=ui.create.dialog('尊位:请选择一项','forcebutton','hidden');
|
||||
choiceList.add([list.map((item,i)=>{
|
||||
if(player.getStorage('zunwei').includes(i)) item=`<span style="text-decoration: line-through;">${item}</span>`;
|
||||
return [i,item];
|
||||
}),'textbutton'])
|
||||
return choiceList;
|
||||
},
|
||||
filter:function(button){
|
||||
return button._filterButton;
|
||||
const player=get.player();
|
||||
if(player.getStorage('zunwei').includes(button.link)) return false;
|
||||
if(button.link==0){
|
||||
if(!player.isDamaged()) return false;
|
||||
return game.hasPlayer(current=>{
|
||||
return current.getHp()>player.getHp();
|
||||
});
|
||||
}
|
||||
if(button.link==1){
|
||||
return game.hasPlayer(current=>{
|
||||
return current.countCards('h')>player.countCards('h');
|
||||
});
|
||||
}
|
||||
if(button.link==2){
|
||||
return game.hasPlayer(current=>{
|
||||
return current.countCards('e')>player.countCards('e');
|
||||
});
|
||||
}
|
||||
},
|
||||
backup:function(links){
|
||||
var next=get.copy(lib.skill.zunwei.backups[links[0]]);
|
||||
|
@ -10256,27 +10287,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return next;
|
||||
},
|
||||
check:function(button){
|
||||
var player=_status.event.player;
|
||||
switch(button.link){
|
||||
case 0:{
|
||||
var target=game.findPlayer(function(current){
|
||||
return current.isMaxHp();
|
||||
});
|
||||
return (Math.min(target.hp,player.maxHp)-player.hp)*2;
|
||||
}
|
||||
case 1:{
|
||||
var target=game.findPlayer(function(current){
|
||||
return current.isMaxHandcard();
|
||||
});
|
||||
return Math.min(5,target.countCards('h')-player.countCards('h'))*0.8;
|
||||
}
|
||||
case 2:{
|
||||
var target=game.findPlayer(function(current){
|
||||
return current.isMaxEquip();
|
||||
});
|
||||
return (target.countCards('e')-player.countCards('e'))*1.4;
|
||||
}
|
||||
}
|
||||
var player=_status.event.player;
|
||||
switch(button.link){
|
||||
case 0:{
|
||||
var target=game.findPlayer(function(current){
|
||||
return current.isMaxHp();
|
||||
});
|
||||
return (Math.min(target.hp,player.maxHp)-player.hp)*2;
|
||||
}
|
||||
case 1:{
|
||||
var target=game.findPlayer(function(current){
|
||||
return current.isMaxHandcard();
|
||||
});
|
||||
return Math.min(5,target.countCards('h')-player.countCards('h'))*0.8;
|
||||
}
|
||||
case 2:{
|
||||
var target=game.findPlayer(function(current){
|
||||
return current.isMaxEquip();
|
||||
});
|
||||
return (target.countCards('e')-player.countCards('e'))*1.4;
|
||||
}
|
||||
}
|
||||
},
|
||||
prompt:function(links){
|
||||
return [
|
||||
|
@ -11041,7 +11072,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
mod:{
|
||||
cardUsable:function(card,player,num){
|
||||
if(card.name=='sha') return num+player.countMark('spzhuilie2');
|
||||
if(card.name=='sha') return num+player.countMark('spzhuilie2');
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -11071,8 +11102,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
frequent:true,
|
||||
content:function(){
|
||||
player.draw();
|
||||
player.addMark('mansi',1,false);
|
||||
player.draw();
|
||||
player.addMark('mansi',1,false);
|
||||
},
|
||||
intro:{content:'已因此技能得到了#张牌'},
|
||||
},
|
||||
|
@ -11852,7 +11883,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
//filter:function(event,player){
|
||||
// return player.storage.gxlianhua&&player.storage.gxlianhua.red+player.storage.gxlianhua.black>0;
|
||||
//},
|
||||
forced:true,
|
||||
content:function(){
|
||||
var cards=[];
|
||||
var cards2=[];
|
||||
|
@ -12308,7 +12338,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return '当你使用或打出'+(player.hasSkill('dczhangcai_all')?'':'点数为8的')+'牌时,你可以摸X张牌(X为你手牌区里'+(player.hasSkill('dczhangcai_all')?'与此牌点数相同':'点数为8')+'的牌数且至少为1)。';
|
||||
},
|
||||
},
|
||||
perfectPair:{},
|
||||
characterReplace:{
|
||||
wenyang:['wenyang','db_wenyang','diy_wenyang'],
|
||||
gexuan:['gexuan','tw_gexuan'],
|
||||
|
@ -12686,9 +12715,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dcchenyong_info:'结束阶段,你可以摸X张牌(X为本回合你使用过的牌的类型数)。',
|
||||
sunyu:'孙瑜',
|
||||
dcquanshou:'劝守',
|
||||
dcquanshou_info:'一名角色的回合开始时,若其手牌数小于其体力上限,你可以令其选择一项:1.将手牌摸至体力上限,然后本回合使用【杀】的次数上限-1(至多摸五张);2.其本回合使用牌被抵消后,你摸一张牌。',
|
||||
dcquanshou_info:'一名角色的回合开始时,若其手牌数不大于其体力上限,你可以令其选择一项:1.将手牌摸至体力上限,然后本回合使用【杀】的次数上限-1(至多摸五张);2.其本回合使用牌被抵消后,你摸一张牌。',
|
||||
dcshexue:'设学',
|
||||
dcshexue_info:'①出牌阶段开始时,你可以将一张牌当做于上回合的角色于其出牌阶段内使用的最后一张基本牌或普通锦囊牌使用。②出牌阶段结束时,你可以令下回合的角色于其出牌阶段开始时可以将一张牌当做你于此阶段内使用的最后一张基本牌或普通锦囊牌使用。',
|
||||
dcshexue_info:'①出牌阶段开始时,你可以将一张牌当做上回合的角色于其出牌阶段内使用的最后一张基本牌或普通锦囊牌使用。②出牌阶段结束时,你可以令下回合的角色于其出牌阶段开始时可以将一张牌当做你于此阶段内使用的最后一张基本牌或普通锦囊牌使用(一名角色因〖设学〗使用的牌均无距离和次数限制)。',
|
||||
xizheng:'郤正',
|
||||
dcdanyi:'耽意',
|
||||
dcdanyi_info:'当你使用牌指定第一个目标后,若此牌的目标与你使用的上一张牌目标相同,你可以摸X张牌(X为此牌目标数)。',
|
||||
|
|
|
@ -811,7 +811,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
limited:true,
|
||||
enable:"phaseUse",
|
||||
filter:function(event,player){;
|
||||
filter:function(event,player){
|
||||
return player.countCards('e')>0;
|
||||
},
|
||||
filterTarget:lib.filter.notMe,
|
||||
|
|
|
@ -1514,7 +1514,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
unlimit:{
|
||||
mod:{
|
||||
cardUsable:function(card,player){
|
||||
var list=lib.skill.lkbushi.getBushi(player);
|
||||
var list=lib.skill.lkbushi.getBushi(player);
|
||||
if(list[0]==get.suit(card)) return Infinity;
|
||||
},
|
||||
},
|
||||
|
@ -2043,6 +2043,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.addTempSkill('paoxiao');
|
||||
}
|
||||
},
|
||||
derivation:['wusheng','paoxiao'],
|
||||
},
|
||||
shiyong:{
|
||||
audio:2,
|
||||
|
@ -2210,7 +2211,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
next.set('filterButton',function(button){
|
||||
if(button.link==0){
|
||||
return _status.event.bool1;
|
||||
};
|
||||
}
|
||||
return true;
|
||||
});
|
||||
next.set('bool1',lib.skill.xinbenxi.filterx(trigger,player));
|
||||
|
@ -3151,7 +3152,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
for(var i=0;i<storage.length;i++){
|
||||
str+='、';
|
||||
str+=get.translation(storage[i]);
|
||||
};
|
||||
}
|
||||
str=str.slice(1);
|
||||
str2+=('<br><li>已对'+str+'发动过〖残韵〗');
|
||||
}
|
||||
|
@ -3304,7 +3305,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
content:function (){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt2('rezhenjun')).ai=function(target){
|
||||
player.chooseTarget(get.prompt2('rezhenjun'),(card,player,target)=>{
|
||||
return target.countCards('he');
|
||||
}).ai=function(target){
|
||||
return -get.attitude(_status.event.player,target)*(target.countCards('e')+1);
|
||||
};
|
||||
'step 1'
|
||||
|
@ -4167,7 +4170,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(!player.storage.juexiang_lie){
|
||||
event.finish();
|
||||
return;
|
||||
};
|
||||
}
|
||||
player.storage.juexiang_lie--;
|
||||
}
|
||||
player.chooseTarget(get.prompt2('juexiang_lie'),function(card,player,target){
|
||||
|
@ -5407,8 +5410,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ai:{
|
||||
skillTagFilter:function(player){
|
||||
if(!player.countCards('hes')||player.hasSkill('taoluan3')) return false;
|
||||
if(!player.storage.taoluan.contains('tao')){}
|
||||
else if(player.isDying()&&!player.storage.taoluan.contains('jiu')){}
|
||||
if(!player.storage.taoluan.contains('tao')){ /* empty */ }
|
||||
else if(player.isDying()&&!player.storage.taoluan.contains('jiu')){ /* empty */ }
|
||||
else return false;
|
||||
},
|
||||
order:4,
|
||||
|
@ -6121,6 +6124,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.popup('更改描述');
|
||||
player.addMark('xindanxin',1,false);
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
maixie:true,
|
||||
effect:{
|
||||
target:(card,player,target)=>{
|
||||
if(!get.tag(card,'damage')) return;
|
||||
if(target.hp<2||player.hasSkillTag('jueqing',false,target)) return -1.5;
|
||||
return [1,1];
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
zongzuo:{
|
||||
|
@ -6461,7 +6474,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return current!=player;
|
||||
}).sortBySeat(player);
|
||||
for(var target of players){
|
||||
if(get.damageEffect(target,player,target,'fire')>=0){num=0;continue};
|
||||
if(get.damageEffect(target,player,target,'fire')>=0){num=0;continue}
|
||||
var shao=false;
|
||||
num++;
|
||||
if(target.countCards('he',function(card){
|
||||
|
@ -8754,10 +8767,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
switch(button.link[2]){
|
||||
case 'tao':return 5;
|
||||
case 'jiu':return 3.01;
|
||||
case 'shan':return 3.01;
|
||||
case 'sha':
|
||||
if(button.link[3]=='fire') return 2.95;
|
||||
else if(button.link[3]=='fire') return 2.92;
|
||||
else if(button.link[3]=='thunder') return 2.92;
|
||||
else return 2.9;
|
||||
case 'shan':return 1;
|
||||
}
|
||||
|
@ -10045,7 +10057,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return false;
|
||||
},
|
||||
filter:function(event,player){
|
||||
return player!=event.player;
|
||||
return player!=event.player;
|
||||
},
|
||||
logTarget:'player',
|
||||
content:function(){
|
||||
|
@ -11060,11 +11072,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
order:10,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
if(player!=target) return 0;
|
||||
if(player.hasSkill('requanji')||(player.countCards('h')+2<=player.hp+player.getExpansions('quanji').length)) return 1;
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
if(player!=target) return 0;
|
||||
if(player.hasSkill('requanji')||(player.countCards('h')+2<=player.hp+player.getExpansions('quanji').length)) return 1;
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
|
@ -13525,7 +13537,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
audioname:['xin_jushou'],
|
||||
check:function(event,player){
|
||||
return player.getHistory('damage').indexOf(event)==0;
|
||||
return player.getHistory('damage').indexOf(event)==0;
|
||||
},
|
||||
content:function(){
|
||||
if(player.getHistory('damage').indexOf(trigger)>0){
|
||||
|
@ -13780,7 +13792,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
forced:true,
|
||||
unique:true,
|
||||
derivation:['zyexin','zzili'],
|
||||
derivation:['zyexin','zzili','zpaiyi'],
|
||||
filter:function(event,player){
|
||||
return player.countCards('e')>=2;
|
||||
},
|
||||
|
|
|
@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
name:'yingbian',
|
||||
connect:true,
|
||||
character:{
|
||||
chengjichengcui:['male','jin',6,['oltousui','olchuming']],
|
||||
wangxiang:['male','jin',3,['bingxin']],
|
||||
jin_jiachong:['male','jin',3,['xiongshu','jianhui']],
|
||||
xuangongzhu:['female','jin',3,['gaoling','qimei','ybzhuiji'],['hiddenSkill']],
|
||||
|
@ -37,6 +38,151 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
skill:{
|
||||
//二成
|
||||
oltousui:{
|
||||
audio:2,
|
||||
enable:'chooseToUse',
|
||||
viewAsFilter:function(player){
|
||||
return player.countCards('he');
|
||||
},
|
||||
viewAs:{
|
||||
name:'sha',
|
||||
suit:'none',
|
||||
number:null,
|
||||
isCard:true,
|
||||
},
|
||||
filterCard:true,
|
||||
selectCard:[1,Infinity],
|
||||
position:'he',
|
||||
check:function(card){
|
||||
const player=get.player();
|
||||
return 4.5+(player.hasSkill('olchuming')?1:0)-1.5*ui.selected.cards.length-get.value(card);
|
||||
},
|
||||
popname:true,
|
||||
ignoreMod:true,
|
||||
precontent:function*(event,map){
|
||||
var player=map.player;
|
||||
var evt=event.getParent();
|
||||
if(evt.dialog&&typeof evt.dialog=='object') evt.dialog.close();
|
||||
player.logSkill('oltousui');
|
||||
delete event.result.skill;
|
||||
var cards=event.result.cards;
|
||||
player.loseToDiscardpile(cards,ui.cardPile,false,'blank').log=false;
|
||||
var shownCards=cards.filter(i=>get.position(i)=='e'),handcardsLength=cards.length-shownCards.length;
|
||||
if(shownCards.length){
|
||||
player.$throw(shownCards,null);
|
||||
game.log(player,'将',shownCards,'置于了牌堆底');
|
||||
}
|
||||
if(handcardsLength>0){
|
||||
player.$throw(handcardsLength,null);
|
||||
game.log(player,'将',get.cnNumber(handcardsLength),'张牌置于了牌堆底');
|
||||
}
|
||||
game.delayex();
|
||||
var viewAs=new lib.element.VCard({name:event.result.card.name,isCard:true});
|
||||
event.result.card=viewAs;
|
||||
event.result.cards=[];
|
||||
event.result._apply_args={
|
||||
shanReq:cards.length,
|
||||
oncard:()=>{
|
||||
var evt=get.event();
|
||||
for(var target of evt.targets){
|
||||
var id=target.playerid;
|
||||
var map=evt.customArgs;
|
||||
if(!map[id]) map[id]={};
|
||||
map[id].shanRequired=evt.shanReq;
|
||||
}
|
||||
}
|
||||
};
|
||||
},
|
||||
ai:{
|
||||
order:function(item,player){
|
||||
return get.order({name:'sha'})+0.1;
|
||||
},
|
||||
result:{player:1},
|
||||
keepdu:true,
|
||||
respondSha:true,
|
||||
skillTagFilter:(player,tag,arg)=>{
|
||||
if(tag=='respondSha'&&arg!='use') return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
olchuming:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
source:'damageBegin1',
|
||||
player:'damageBegin3',
|
||||
},
|
||||
filter:function(event,player){
|
||||
return event.source!=event.player;
|
||||
},
|
||||
forced:true,
|
||||
content:function*(event,map){
|
||||
var player=map.player,trigger=map.trigger;
|
||||
if(!trigger.card||!trigger.cards.length){
|
||||
trigger.num++;
|
||||
event.finish();
|
||||
return;
|
||||
}
|
||||
else{
|
||||
var target=trigger[trigger.source==player?'player':'source'];
|
||||
trigger._olchuming=true;
|
||||
target.addTempSkill('olchuming_effect');
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
player:function(card,player,target){
|
||||
if(!get.tag(card,'damage')) return;
|
||||
if(!lib.card[card.name]||!card.cards||!card.cards.length) return [1,0,1,-1];
|
||||
return [1,-1];
|
||||
},
|
||||
},
|
||||
},
|
||||
subSkill:{
|
||||
effect:{
|
||||
charlotte:true,
|
||||
trigger:{global:'phaseEnd'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
content:function*(event,map){
|
||||
var player=map.player;
|
||||
var mapx={};
|
||||
var history=player.getHistory('damage').concat(player.getHistory('sourceDamage'));
|
||||
history.forEach(evt=>{
|
||||
if(!evt._olchuming) return;
|
||||
var target=evt[evt.source==player?'player':'source'];
|
||||
if(!target.isIn()) return;
|
||||
if(!mapx[target.playerid]) mapx[target.playerid]=[];
|
||||
mapx[target.playerid].addArray(evt.cards.filterInD('d'));
|
||||
});
|
||||
var entries=Object.entries(mapx).map(entry=>{
|
||||
return [(_status.connectMode?lib.playerOL:game.playerMap)[entry[0]],entry[1]];
|
||||
});
|
||||
if(!entries.length){
|
||||
event.finish();
|
||||
return;
|
||||
}
|
||||
player.logSkill('olchuming_effect',entries.map(i=>i[0]));
|
||||
entries.sort((a,b)=>lib.sort.seat(a[0],b[0]));
|
||||
for(var entry of entries){
|
||||
var current=entry[0],cards=entry[1];
|
||||
var list=['jiedao','guohe'].filter(i=>player.canUse(new lib.element.VCard({name:i,cards:cards}),current,false));
|
||||
if(!list.length) return;
|
||||
var result=({});
|
||||
if(list.length==1) result={bool:true,links:[['','',list[0]]]};
|
||||
else result=yield player.chooseButton([`畜鸣:请选择要对${get.translation(current)}使用的牌`,[list,'vcard']],true).set('ai',button=>{
|
||||
var player=get.player();
|
||||
return get.effect(get.event('currentTarget'),{name:button.link[2]},player,player);
|
||||
}).set('currentTarget',current);
|
||||
if(result.bool){
|
||||
var card=get.autoViewAs({name:result.links[0][2]},cards);
|
||||
if(player.canUse(card,current,false)) player.useCard(card,cards,current,false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
bingxin:{
|
||||
audio:2,
|
||||
enable:'chooseToUse',
|
||||
|
@ -295,7 +441,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
},
|
||||
logTarget:'target',
|
||||
marktext:'嫕',
|
||||
intro:{
|
||||
markcount:'expansion',
|
||||
|
@ -531,7 +676,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(trigger.name=='lose'){
|
||||
for(var i in trigger.gaintag_map){
|
||||
if(trigger.gaintag_map[i].contains('huaiyuanx')) num++;
|
||||
};
|
||||
}
|
||||
}
|
||||
else player.getHistory('lose',function(evt){
|
||||
if(trigger!=evt.getParent()) return false;
|
||||
|
@ -588,7 +733,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
return (event.name!='phase'||game.phaseNumber==0)&&player.countCards('h')>0;
|
||||
return (event.name!='phase'||game.phaseNumber==0)&&player.countCards('h')>0;
|
||||
},
|
||||
content:function(){
|
||||
var hs=player.getCards('h');
|
||||
|
@ -2671,7 +2816,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var type=get.type(card);
|
||||
return (type=='basic'||type=='trick');
|
||||
},
|
||||
log:false,
|
||||
visible:true,
|
||||
filterTarget:function(card,player,target){
|
||||
return target!=player&&target.hasZhuSkill('ruilve',player)&&!target.hasSkill('ruilve3');
|
||||
|
@ -3588,9 +3732,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xuangongzhu:'高陵宣公主(?—?)司马氏,晋宣帝司马懿第二女。司马氏下嫁杜预。其侄司马炎登基时,司马氏已经去世。泰始年间(265年—274年)追赠高陵公主。',
|
||||
jin_guohuai:'郭槐(237年-296年),字媛韶,太原阳曲(今山西太原)人,魏晋权臣贾充的妻子。父亲是曹魏城阳郡太守郭配,伯父是曹魏名将郭淮。出身太原郭氏。二十一岁时,嫁贾充作继室,生二女二子,长女贾南风,次女贾午,一子贾黎民。贾南风是西晋惠帝司马衷皇后,干预国政,专权误国,直接导致“八王之乱”和西晋亡国。',
|
||||
wangxiang:'王祥(184年,一作180年-268年4月30日),字休徵。琅邪临沂(今山东省临沂市西孝友村)人。三国曹魏及西晋时大臣。王祥于东汉末隐居二十年,在曹魏,先后任县令、大司农、司空、太尉等职,封爵睢陵侯。西晋建立,拜太保,进封睢陵公。泰始四年四月戊戌日(268年4月30日)去世,年八十五(一作八十九),谥号“元”。有《训子孙遗令》一文传世。王祥侍奉后母朱氏极孝,为传统文化中二十四孝之一“卧冰求鲤”的主人翁。',
|
||||
chengjichengcui:'成倅、成济(?~260年6月21日),扬州丹阳(今安徽省宣城市)人。三国时期曹魏将领。依附于司马氏家族,得到司马昭的心腹贾充指使,刺死魏帝曹髦。司马昭为平息众怒,将成倅、成济兄弟二人杀死。据《魏氏春秋》记载,成济兄弟不服罪,光着身子跑到屋顶,大骂司马昭,被军士从下乱箭射杀。',
|
||||
},
|
||||
characterTitle:{},
|
||||
perfectPair:{},
|
||||
characterFilter:{},
|
||||
dynamicTranslate:{},
|
||||
perfectPair:{
|
||||
|
@ -3805,6 +3949,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
qiaoyan_info:'锁定技,当你于回合外受到其他角色造成的伤害时,若你:有“珠”,则你令伤害来源获得“珠”;没有“珠”,则你防止此伤害,然后摸一张牌,并将一张牌正面朝上置于武将牌上,称为“珠”。',
|
||||
xianzhu:'献珠',
|
||||
xianzhu_info:'锁定技,出牌阶段开始时,你令一名角色A获得“珠”。若A不为你自己,则你选择A攻击范围内的一名角色B,视为A对B使用一张【杀】。',
|
||||
chengjichengcui:'成济成倅',
|
||||
oltousui:'透髓',
|
||||
oltousui_info:'你可以将任意张牌置于牌堆底,视为使用一张需使用等量张【闪】抵消的【杀】。',
|
||||
olchuming:'畜鸣',
|
||||
olchuming_info:'锁定技。当你对其他角色造成伤害时,或当你受到其他角色造成的伤害时,若此伤害的渠道不为牌或没有对应的实体牌,此伤害+1,否则其于本回合结束时将所有以此法造成伤害的牌当【借刀杀人】或【过河拆桥】对你使用。',
|
||||
|
||||
yingbian_pack1:'文德武备·理',
|
||||
yingbian_pack2:'文德武备·备',
|
||||
|
|
|
@ -136,7 +136,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
},
|
||||
content:function(){
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
if(game.players[i].hasSkill('yxs_menshen2')){
|
||||
game.players[i].removeSkill('yxs_menshen2');
|
||||
}
|
||||
|
@ -149,14 +149,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player:"phaseEnd",
|
||||
},
|
||||
priority:15,
|
||||
group:'yxs_menshen3',
|
||||
group:'yxs_menshen3',
|
||||
onremove:true,
|
||||
filter:function (event,player){
|
||||
return game.players.length>1;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.chooseTarget('选择【门神】的目标',lib.translate.yxs_menshen_info,true,function(card,player,target){
|
||||
"step 0"
|
||||
player.chooseTarget('选择【门神】的目标',lib.translate.yxs_menshen_info,true,function(card,player,target){
|
||||
return target!=player;
|
||||
}).set('ai',function(target){
|
||||
return get.attitude(player,target);
|
||||
|
@ -177,7 +177,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
expose:0.5,
|
||||
},
|
||||
},
|
||||
yxs_menshen2:{
|
||||
yxs_menshen2:{
|
||||
audio:2,
|
||||
mark:'character',
|
||||
intro:{
|
||||
|
@ -188,7 +188,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{
|
||||
target:["shaBegin","juedouBegin"],
|
||||
},
|
||||
forced:true,
|
||||
forced:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
return player.isAlive();
|
||||
|
@ -197,10 +197,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var target=player.storage.yxs_menshen2;
|
||||
trigger.player.line(target,'green');
|
||||
trigger.targets.remove(player);
|
||||
trigger.targets.push(target);
|
||||
trigger.targets.push(target);
|
||||
trigger.target = target;
|
||||
},
|
||||
},
|
||||
},
|
||||
guimian:{
|
||||
trigger:{source:'damageEnd'},
|
||||
forced:true,
|
||||
|
|
363
game/game.js
363
game/game.js
|
@ -400,6 +400,52 @@
|
|||
return method;
|
||||
}
|
||||
},
|
||||
handler:{
|
||||
_handlers:{},
|
||||
getHandler:function(name,type){
|
||||
if(!type)type = this.getDefaultHandlerType(name);
|
||||
if(!this._handlers[name])return null;
|
||||
if(!this._handlers[name][type])return null;
|
||||
return this._handlers[name][type];
|
||||
},
|
||||
ensureHandlerList:function(name,type){
|
||||
if(!type)type = this.getDefaultHandlerType(name);
|
||||
if(!this._handlers[name])this._handlers[name] = {};
|
||||
if(!this._handlers[name][type])this._handlers[name][type] = [];
|
||||
return this._handlers[name][type];
|
||||
},
|
||||
removeHandler:function(name,type,func){
|
||||
var list = this.ensureHandlerList(name,type);
|
||||
list.remove(func);
|
||||
if(list.length == 0){
|
||||
delete this._handlers[name][type];
|
||||
if(Object.keys(this._handlers[name]) == 0){
|
||||
delete this._handlers[name];
|
||||
}
|
||||
}
|
||||
},
|
||||
pushHandler:function(name,type){
|
||||
let functions = (typeof type == 'string' ? arguments.slice(2):arguments.slice(1));
|
||||
type = (typeof type == 'string'?type:this.getDefaultHandlerType(name));
|
||||
this.ensureHandlerList(name,type).addArray(functions);
|
||||
},
|
||||
getDefaultHandlerType:(name)=>{
|
||||
return `on${name[0].toUpperCase()}${name.slice(1)}`;
|
||||
},
|
||||
addHandlerToEvent:function(event){
|
||||
if(typeof event.name == 'string'){
|
||||
let handlerMap = this._handlers[event.name];
|
||||
if(handlerMap){
|
||||
Object.keys(handlerMap).forEach((key)=>{
|
||||
let list = handlerMap[key];
|
||||
if(list){
|
||||
list.forEach(handler=>event.pushHandler(key,handler));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
objectURL:new Map(),
|
||||
hookmap:{},
|
||||
imported:{},
|
||||
|
@ -6511,7 +6557,7 @@
|
|||
else{
|
||||
lib.codeMirrorReady(node,editor);
|
||||
}
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
reset_character_three:{
|
||||
|
@ -6603,7 +6649,7 @@
|
|||
else{
|
||||
lib.codeMirrorReady(node,editor);
|
||||
}
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
reset_character_four:{
|
||||
|
@ -7063,7 +7109,7 @@
|
|||
else{
|
||||
lib.codeMirrorReady(node,editor);
|
||||
}
|
||||
};
|
||||
}
|
||||
},
|
||||
},
|
||||
reset_character:{
|
||||
|
@ -7700,9 +7746,9 @@
|
|||
}else if(newMessage.includes("Invalid regular expression flags")){
|
||||
newMessage="无效的正则表达式的标记";
|
||||
}else if(newMessage.includes("missing ) after argument list")){
|
||||
newMessage="参数列表后面缺少 \')\' (丢失运算符或者转义字符等)";
|
||||
newMessage="参数列表后面缺少 ')' (丢失运算符或者转义字符等)";
|
||||
}else if(newMessage.includes("Invalid shorthand property initializer")){
|
||||
newMessage="在定义一个{}对象时,应该使用\':\'而不是\'=\'";
|
||||
newMessage="在定义一个{}对象时,应该使用':'而不是'='";
|
||||
}else if(newMessage.includes("Missing initializer in const declaration")){
|
||||
newMessage="在使用const定义一个对象时,必须指定初始值";
|
||||
}else if(newMessage.includes("Unexpected number")||newMessage.includes("Unexpected string")){
|
||||
|
@ -7729,11 +7775,11 @@
|
|||
}else if(newMessage.includes("Cannot read property")){
|
||||
messageName=newMessage.replace('TypeError: Cannot read property ', '').replace(' of null', '').replace(' of undefined', '');
|
||||
let ofName=newMessage.slice(newMessage.indexOf(" of ")+4);
|
||||
newMessage="无法读取\'"+ofName+"\'的属性值"+messageName;
|
||||
newMessage="无法读取'"+ofName+"'的属性值"+messageName;
|
||||
}else if(newMessage.includes("Cannot read properties")){
|
||||
messageName=newMessage.slice(newMessage.indexOf("reading '")+9,-2);
|
||||
let ofName=newMessage.slice(newMessage.indexOf(" of ")+4,newMessage.indexOf("(")-1);
|
||||
newMessage="无法读取\'"+ofName+"\'的属性值"+messageName;
|
||||
newMessage="无法读取'"+ofName+"'的属性值"+messageName;
|
||||
}else if(newMessage.includes("Property description must be an object")){
|
||||
messageName=newMessage.replace('TypeError: Property description must be an object: ', '');
|
||||
newMessage=messageName+"是非对象类型的值";
|
||||
|
@ -7746,7 +7792,7 @@
|
|||
messageName=newMessage.slice(newMessage.indexOf('\'')+1);
|
||||
messageName=messageName.slice(0,messageName.indexOf('\''));
|
||||
let obj=newMessage.slice(newMessage.indexOf(messageName)+16);
|
||||
newMessage=obj+"不能添加或修改\'"+messageName+"\'属性,任何 Primitive 值都不允许有property";
|
||||
newMessage=obj+"不能添加或修改'"+messageName+"'属性,任何 Primitive 值都不允许有property";
|
||||
}else if(newMessage.includes("Can't add property")&&newMessage.includes("is not extensible")){
|
||||
newMessage="对象不可添加属性(不可扩展)";
|
||||
}else if(newMessage.includes("Cannot redefine property")){
|
||||
|
@ -7816,10 +7862,10 @@
|
|||
code=node.editor.getValue();
|
||||
}else if(node.textarea){
|
||||
code=node.textarea.value;
|
||||
};
|
||||
}
|
||||
//动态绑定文本
|
||||
if(code.length&&change.origin=="+input" &&
|
||||
/{|}|\s|=|;|:|,|,|。|?|!|\!|\?|&|#|%|@|‘|’|;/.test(change.text[0])==false&&
|
||||
/{|}|\s|=|;|:|,|,|。|?|!|!|\?|&|#|%|@|‘|’|;/.test(change.text[0])==false&&
|
||||
change.text.length==1) {
|
||||
//输入了代码,并且不包括空格,{},=, ; , : , 逗号等,才可以自动提示
|
||||
node.editor.showHint();
|
||||
|
@ -7948,7 +7994,7 @@
|
|||
}
|
||||
function javascriptHint(editor,options){
|
||||
return scriptHint(editor,javascriptKeywords,function(e,cur){return e.getTokenAt(cur);},options);
|
||||
};
|
||||
}
|
||||
//覆盖原本的javascript提示
|
||||
CodeMirror.registerHelper("hint","javascript",javascriptHint);
|
||||
const stringProps=Object.getOwnPropertyNames(String.prototype);
|
||||
|
@ -8142,7 +8188,7 @@
|
|||
run:function(time){
|
||||
lib.status.time=time;
|
||||
for(var i=0;i<lib.updates.length;i++){
|
||||
if(!lib.updates[i].hasOwnProperty('_time')){
|
||||
if(!Object.prototype.hasOwnProperty.call(lib.updates[i], '_time')){
|
||||
lib.updates[i]._time=time;
|
||||
}
|
||||
if(lib.updates[i](time-lib.updates[i]._time-lib.status.delayed)===false){
|
||||
|
@ -8531,13 +8577,42 @@
|
|||
}
|
||||
else if(modeimage) src=`image/mode/${modeimage}/character/${name}${ext}`;
|
||||
else if(type=='character'&&lib.config.skin[name]&&arguments[2]!='noskin') src=`image/skin/${name}/${lib.config.skin[name]}${ext}`;
|
||||
else if(type=='character') src=`image/character/${gzbool?'gz_':''}${name}${ext}`;
|
||||
else if(type=='character'){
|
||||
src=`image/character/${gzbool?'gz_':''}${name}${ext}`;
|
||||
}
|
||||
else src=`image/${type}/${subfolder}/${name}${ext}`;
|
||||
}
|
||||
else src=`image/${name}${ext}`;
|
||||
this.setBackgroundImage(src);
|
||||
this.style.backgroundPositionX='center';
|
||||
this.style.backgroundSize='cover';
|
||||
new Promise((resolve,reject)=>{
|
||||
const image=new Image();
|
||||
image.src=`${lib.assetURL}${src}`;
|
||||
image.onload=resolve;
|
||||
if(type=='character') image.onerror=reject;
|
||||
}).then(()=>{
|
||||
this.setBackgroundImage(src);
|
||||
this.style.backgroundPositionX='center';
|
||||
this.style.backgroundSize='cover';
|
||||
}).catch(()=>new Promise((resolve,reject)=>{
|
||||
const nameinfo=get.character(name);
|
||||
const sex=nameinfo[0];
|
||||
src=`image/character/default_silhouette_${sex}${ext}`;
|
||||
const image=new Image();
|
||||
image.src=`${lib.assetURL}${src}`;
|
||||
image.onload=()=>resolve(src);
|
||||
image.onerror=reject;
|
||||
}).catch(()=>new Promise((resolve,reject)=>{
|
||||
const nameinfo=get.character(name);
|
||||
const sex=nameinfo[0];
|
||||
src=`image/character/default_silhouette_${sex=='female'?'female':'male'}${ext}`;
|
||||
const image=new Image();
|
||||
image.src=`${lib.assetURL}${src}`;
|
||||
image.onload=()=>resolve(src);
|
||||
image.onerror=reject;
|
||||
})).then((src)=>{
|
||||
this.setBackgroundImage(src);
|
||||
this.style.backgroundPositionX='center';
|
||||
this.style.backgroundSize='cover';
|
||||
}));
|
||||
return this;
|
||||
}
|
||||
});
|
||||
|
@ -9012,7 +9087,7 @@
|
|||
str+=`\n行号: ${line}`;
|
||||
str+=`\n列号: ${column}`;
|
||||
const version=lib.version||'';
|
||||
const reg=/[^\d\.]/;
|
||||
const reg=/[^\d.]/;
|
||||
const match=version.match(reg)!=null;
|
||||
str+='\n'+`${match?'游戏':'无名杀'}版本: ${version||'未知版本'}`;
|
||||
if(match) str+='\n⚠️您使用的游戏代码不是源于libccy/noname无名杀官方仓库,请自行寻找您所使用的游戏版本开发者反馈!';
|
||||
|
@ -9051,7 +9126,7 @@
|
|||
}
|
||||
str+='\n-------------';
|
||||
if(typeof line=='number'&&(typeof game.readFile=='function'||location.origin!='file://')){
|
||||
function createShowCode(lines){
|
||||
const createShowCode=function(lines){
|
||||
let showCode='';
|
||||
if(lines.length>=10){
|
||||
if(line>4){
|
||||
|
@ -11374,7 +11449,7 @@
|
|||
function Legacy(func){
|
||||
//Remove all comments
|
||||
//移除所有注释
|
||||
let str=func.toString().replace(/((?:(?:^[ \t]*)?(?:\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\/(?:[ \t]*\r?\n(?=[ \t]*(?:\r?\n|\/\*|\/\/)))?|\/\/(?:[^\\]|\\(?:\r?\n)?)*?(?:\r?\n(?=[ \t]*(?:\r?\n|\/\*|\/\/))|(?=\r?\n))))+)|("(?:\\[\s\S]|[^"\\])*"|'(?:\\[\s\S]|[^'\\])*'|(?:\r?\n|[\s\S])[^\/"'\\\s]*)/mg,'$2').trim();
|
||||
let str=func.toString().replace(/((?:(?:^[ \t]*)?(?:\/\*[^*]*\*+(?:[^/*][^*]*\*+)*\/(?:[ \t]*\r?\n(?=[ \t]*(?:\r?\n|\/\*|\/\/)))?|\/\/(?:[^\\]|\\(?:\r?\n)?)*?(?:\r?\n(?=[ \t]*(?:\r?\n|\/\*|\/\/))|(?=\r?\n))))+)|("(?:\\[\s\S]|[^"\\])*"|'(?:\\[\s\S]|[^'\\])*'|(?:\r?\n|[\s\S])[^/"'\\\s]*)/mg,'$2').trim();
|
||||
//获取第一个 { 后的所有字符
|
||||
str=str.slice(str.indexOf('{')+1);
|
||||
//判断代码中是否有debugger
|
||||
|
@ -11498,6 +11573,7 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
// falls through
|
||||
default:
|
||||
return Legacy(item);
|
||||
}
|
||||
|
@ -11508,7 +11584,7 @@
|
|||
}
|
||||
else if(typeof func=='object'){
|
||||
for(var i in func){
|
||||
if(func.hasOwnProperty(i)){
|
||||
if(Object.prototype.hasOwnProperty.call(func, i)){
|
||||
func[i]=lib.init.eval(func[i]);
|
||||
}
|
||||
}
|
||||
|
@ -14475,7 +14551,7 @@
|
|||
event.finish();
|
||||
return;
|
||||
}
|
||||
};
|
||||
}
|
||||
event.doing=event.map.shift();
|
||||
'step 3'
|
||||
event.num=0;
|
||||
|
@ -14594,11 +14670,11 @@
|
|||
event._result={bool:true};
|
||||
event._direct=true;
|
||||
}
|
||||
else if(info.direct){
|
||||
else if(info.direct&&player.isOnline()){
|
||||
event._result={bool:true};
|
||||
event._direct=true;
|
||||
}
|
||||
else if(info.direct&&player.isOnline()){
|
||||
else if(info.direct){
|
||||
event._result={bool:true};
|
||||
event._direct=true;
|
||||
}
|
||||
|
@ -15027,7 +15103,7 @@
|
|||
current.getHistory().isRound=true;
|
||||
current.getStat().isRound=true;
|
||||
}
|
||||
};
|
||||
}
|
||||
if(isRound){
|
||||
game.getGlobalHistory().isRound=true;
|
||||
}
|
||||
|
@ -16191,7 +16267,7 @@
|
|||
result[0].cards=lib.skill[result[0].skill].onCompare(player)
|
||||
}
|
||||
else lose_list.push([player,result[0].cards]);
|
||||
};
|
||||
}
|
||||
for(var j=0; j<targets.length; j++){
|
||||
if(event.list.contains(targets[j])){
|
||||
var i=event.list.indexOf(targets[j]);
|
||||
|
@ -16239,6 +16315,9 @@
|
|||
'step 4'
|
||||
player.$compareMultiple(event.card1,targets,cards);
|
||||
game.log(player,'的拼点牌为',event.card1);
|
||||
event.cardlist.forEach((card,index)=>{
|
||||
game.log(targets[index],'的拼点牌为',card);
|
||||
});
|
||||
player.animate('target');
|
||||
game.delay(0,1000);
|
||||
'step 5'
|
||||
|
@ -16250,7 +16329,6 @@
|
|||
event.target.animate('target');
|
||||
event.card2=event.cardlist[event.iwhile];
|
||||
event.num2=event.getNum(event.card2);
|
||||
game.log(event.target,'的拼点牌为',event.card2);
|
||||
//event.tempplayer.line(event.target);
|
||||
delete event.player;
|
||||
event.trigger('compare');
|
||||
|
@ -16356,7 +16434,7 @@
|
|||
result[0].cards=lib.skill[result[0].skill].onCompare(player)
|
||||
}
|
||||
else lose_list.push([player,result[0].cards]);
|
||||
};
|
||||
}
|
||||
for(var j=0;j<targets.length;j++){
|
||||
if(event.list.contains(targets[j])){
|
||||
var i=event.list.indexOf(targets[j]);
|
||||
|
@ -16547,7 +16625,7 @@
|
|||
}
|
||||
else event.lose_list.push([player,event.resultOL[player.playerid].cards[0]]);
|
||||
event.card1=event.resultOL[player.playerid].cards[0];
|
||||
};
|
||||
}
|
||||
if(!event.card2){
|
||||
if(event.resultOL[target.playerid].skill&&lib.skill[event.resultOL[target.playerid].skill]&&lib.skill[event.resultOL[target.playerid].skill].onCompare){
|
||||
target.logSkill(event.resultOL[target.playerid].skill);
|
||||
|
@ -18687,7 +18765,7 @@
|
|||
next.cards=cards;
|
||||
next.player=player;
|
||||
return;
|
||||
};
|
||||
}
|
||||
var next=game.createEvent(card.name);
|
||||
next.setContent(info.content);
|
||||
next.targets=targets;
|
||||
|
@ -19736,14 +19814,14 @@
|
|||
cards[i].recheck();
|
||||
|
||||
var info=lib.card[cards[i].name];
|
||||
if(cards[i].hasOwnProperty('_destroy')){
|
||||
if(Object.prototype.hasOwnProperty.call(cards[i], '_destroy')){
|
||||
if(cards[i]._destroy){
|
||||
cards[i].delete();
|
||||
cards[i].destroyed=cards[i]._destroy;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if(cards[i].hasOwnProperty('destroyed')){
|
||||
else if(Object.prototype.hasOwnProperty.call(cards[i], 'destroyed')){
|
||||
if(event.getlx!==false&&event.position&&cards[i].willBeDestroyed(event.position.id,null,event)){
|
||||
cards[i].selfDestroy(event);
|
||||
continue;
|
||||
|
@ -20558,7 +20636,7 @@
|
|||
if(event.judge2){
|
||||
var judge2=event.judge2(event.result);
|
||||
if(typeof judge2=='boolean') player.tryJudgeAnimate(judge2);
|
||||
};
|
||||
}
|
||||
if(event.clearArena!=false){
|
||||
game.broadcastAll(ui.clear);
|
||||
}
|
||||
|
@ -21250,9 +21328,9 @@
|
|||
if(type=='horse'||type=='equip3_4'){
|
||||
return player.hasEnabledSlot(3)&&(get.is.mountCombined()||player.hasEnabledSlot(4));
|
||||
}
|
||||
else if(type=='equip3_4'){
|
||||
type='equip3';
|
||||
}
|
||||
// else if(type=='equip3_4'){
|
||||
// type='equip3';
|
||||
// }
|
||||
else if(get.is.mountCombined()&&type=='equip4'){
|
||||
return false;
|
||||
}
|
||||
|
@ -21986,7 +22064,7 @@
|
|||
txy=to.getXY();
|
||||
n=Math.abs(fxy[0]-txy[0])+Math.abs(fxy[1]-txy[1]);
|
||||
}
|
||||
else if(to.isMin(true)||from.isMin(true)){}
|
||||
else if(to.isMin(true)||from.isMin(true)){/* empty */}
|
||||
else{
|
||||
var length=game.players.length;
|
||||
var totalPopulation=game.players.length+game.dead.length+1;
|
||||
|
@ -22254,7 +22332,7 @@
|
|||
default:{
|
||||
this.maxHp=maxHp1+maxHp2-3;
|
||||
this.hp=hp1+hp2-3;
|
||||
};
|
||||
}
|
||||
}
|
||||
if(info2[4].contains('hiddenSkill')&&!this.noclick){
|
||||
if(!this.hiddenSkills) this.hiddenSkills=[];
|
||||
|
@ -24088,19 +24166,19 @@
|
|||
var player=_status.event.player;
|
||||
var event=_status.event.getParent();
|
||||
var getn=function(card){
|
||||
if(player.hasSkill('tianbian')&&get.suit(card)=='heart') return 13*(Boolean(event.small)?-1:1);
|
||||
return get.number(card)*(Boolean(event.small)?-1:1);
|
||||
if(player.hasSkill('tianbian')&&get.suit(card)=='heart') return 13*(event.small?-1:1);
|
||||
return get.number(card)*(event.small?-1:1);
|
||||
}
|
||||
if(source&&source!=player){
|
||||
if(get.attitude(player,source)>1){
|
||||
if(Boolean(event.small)) return getn(card)-get.value(card)/2+addi;
|
||||
if(event.small) return getn(card)-get.value(card)/2+addi;
|
||||
return -getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
if(Boolean(event.small)) return -getn(card)-get.value(card)/2+addi;
|
||||
if(event.small) return -getn(card)-get.value(card)/2+addi;
|
||||
return getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
else{
|
||||
if(Boolean(event.small)) return -getn(card)-get.value(card)/2+addi;
|
||||
if(event.small) return -getn(card)-get.value(card)/2+addi;
|
||||
return getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
}
|
||||
|
@ -24124,7 +24202,7 @@
|
|||
var addi=(get.value(card)>=8&&get.type(card)!='equip')?-6:0;
|
||||
if(card.name=='du') addi-=5;
|
||||
if(player==event.player){
|
||||
if(Boolean(event.small)){
|
||||
if(event.small){
|
||||
return -getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
return getn(card)-get.value(card)/2+addi;
|
||||
|
@ -25352,7 +25430,7 @@
|
|||
}
|
||||
}
|
||||
if(next.animate=='gain2'||next.animate=='draw2'){
|
||||
if(!next.hasOwnProperty('log')){
|
||||
if(!Object.prototype.hasOwnProperty.call(next, 'log')){
|
||||
next.log=true;
|
||||
}
|
||||
}
|
||||
|
@ -25439,7 +25517,7 @@
|
|||
}
|
||||
}
|
||||
if(next.animate=='gain2'||next.animate=='draw2'||next.animate=='give'){
|
||||
if(!next.hasOwnProperty('log')){
|
||||
if(!Object.prototype.hasOwnProperty.call(next, 'log')){
|
||||
next.log=true;
|
||||
}
|
||||
}
|
||||
|
@ -25757,7 +25835,7 @@
|
|||
case 1:this.draw(nodelay?'nodelay':1);break;
|
||||
case 2:this.recover();break;
|
||||
case 3:this.changeHujia();break;
|
||||
case 4:this.tempHide();
|
||||
case 4:this.tempHide();break;
|
||||
case 5:this.discard(this.getCards('j')).delay=(!nodelay);break;
|
||||
case 6:{
|
||||
if(this.isLinked()) this.link();
|
||||
|
@ -26062,7 +26140,7 @@
|
|||
const position=get.position(card,true);
|
||||
return position!='j'&&position!='o';
|
||||
})){
|
||||
game.log(card,'已被移出处理区,无法置入判定区');
|
||||
game.log(card,'已被移出处理区,无法置入判定区');
|
||||
return;
|
||||
}
|
||||
for(let iwhile=0;iwhile<20;iwhile++){
|
||||
|
@ -26243,7 +26321,7 @@
|
|||
}
|
||||
clearTimeout(lib.node.torespondtimeout[this.playerid]);
|
||||
delete lib.node.torespondtimeout[this.playerid];
|
||||
if(!lib.node.torespond.hasOwnProperty(this.playerid)){
|
||||
if(!Object.prototype.hasOwnProperty.call(lib.node.torespond, this.playerid)){
|
||||
return;
|
||||
}
|
||||
var noresume=false;
|
||||
|
@ -26270,7 +26348,7 @@
|
|||
else if(_status.paused&&!noresume) game.resume();
|
||||
}
|
||||
tempUnwait(result){
|
||||
if(!lib.node.torespond.hasOwnProperty(this.playerid)){
|
||||
if(!Object.prototype.hasOwnProperty.call(lib.node.torespond, this.playerid)){
|
||||
return;
|
||||
}
|
||||
var proceed;
|
||||
|
@ -30972,6 +31050,7 @@
|
|||
const type=`onNext${name[0].toUpperCase()}${name.slice(1)}`;
|
||||
if(gameEvent.hasHandler(type)) this.pushHandler(...gameEvent.getHandler(type));
|
||||
}
|
||||
lib.handler.addHandlerToEvent(this);
|
||||
}
|
||||
this.step=0;
|
||||
this.finished=false;
|
||||
|
@ -31295,7 +31374,6 @@
|
|||
parent=parent.parent;
|
||||
if(historys.contains(parent)) return toreturn;
|
||||
}
|
||||
if(!parent) return toreturn;
|
||||
}
|
||||
if(toreturn===null){
|
||||
return null;
|
||||
|
@ -31527,7 +31605,7 @@
|
|||
for(var i=0;i<map.list2.length;i++){
|
||||
if(map.list2[i][0]==toadd[0]&&map.list2[i][1]==toadd[1]) return;
|
||||
}
|
||||
};
|
||||
}
|
||||
for(var i=0;i<map.list.length;i++){
|
||||
if(map.list[i][0]==toadd[0]&&map.list[i][1]==toadd[1]) return;
|
||||
}
|
||||
|
@ -31540,43 +31618,6 @@
|
|||
func(skill[j]);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
removeTrigger(skill,player){
|
||||
if(!player||!skill) return;
|
||||
var evt=this;
|
||||
if(typeof skill=='string') skill=[skill];
|
||||
game.expandSkills(skill);
|
||||
while(true){
|
||||
var evt=evt.getParent('arrangeTrigger');
|
||||
if(!evt||evt.name!='arrangeTrigger'||!evt.map) return;
|
||||
var filter=function(content){
|
||||
if(typeof content=='string') return content==triggername;
|
||||
return content.contains(triggername);
|
||||
};
|
||||
var trigger=evt._trigger;
|
||||
var triggername=evt.triggername;
|
||||
var map=false;
|
||||
if(evt.doing&&evt.doing.player==player) map=evt.doing;
|
||||
else{
|
||||
for(var i=0;i<evt.map.length;i++){
|
||||
if(evt.map[i].player==player){
|
||||
map=evt.map[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!map) return;
|
||||
var func=function(skillx){
|
||||
var toremove=map.list.filter(i=>{
|
||||
return i[0]==skillx&&i[1]==player;
|
||||
});
|
||||
if(toremove.length>0) map.list.removeArray(toremove);
|
||||
}
|
||||
for(var j=0;j<skill.length;j++){
|
||||
func(skill[j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
removeTrigger(skill,player){
|
||||
if(!player||!skill) return;
|
||||
|
@ -31820,7 +31861,7 @@
|
|||
}
|
||||
evt.list=[];
|
||||
if(evt.doing) evt.doing.list=[];
|
||||
};
|
||||
}
|
||||
this._triggered=5;
|
||||
}
|
||||
else if(player){
|
||||
|
@ -37623,7 +37664,7 @@
|
|||
}
|
||||
const blob=zip.generate({
|
||||
type:'blob'
|
||||
}),fileNameToSaveAs=`${exportExtension.replace(/\\|\/|\:|\?|\"|\*|<|>|\|/g,'-')}.zip`;
|
||||
}),fileNameToSaveAs=`${exportExtension.replace(/\\|\/|:|\?|"|\*|<|>|\|/g,'-')}.zip`;
|
||||
|
||||
if(lib.device){
|
||||
const directory=lib.device=='android'?cordova.file.externalDataDirectory:cordova.file.documentsDirectory;
|
||||
|
@ -37669,7 +37710,7 @@
|
|||
const config=game.importedPack.config;
|
||||
Object.keys(config).forEach(value=>{
|
||||
const configObject=config[value];
|
||||
if(configObject&&configObject.hasOwnProperty('init')) game.saveConfig(`extension_${extensionName}_${value}`,configObject.init);
|
||||
if(configObject&&Object.prototype.hasOwnProperty.call(configObject, 'init')) game.saveConfig(`extension_${extensionName}_${value}`,configObject.init);
|
||||
});
|
||||
if(game.download){
|
||||
const files=zip.files,hiddenFileFlags=['.','_'],fileList=Object.keys(files).filter(key=>!files[key].dir&&!hiddenFileFlags.includes(key[0])).reverse();
|
||||
|
@ -37747,7 +37788,7 @@
|
|||
export:function(textToWrite,name){
|
||||
var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
|
||||
var fileNameToSaveAs = name||'noname';
|
||||
fileNameToSaveAs=fileNameToSaveAs.replace(/\\|\/|\:|\?|\"|\*|<|>|\|/g,'.');
|
||||
fileNameToSaveAs=fileNameToSaveAs.replace(/\\|\/|:|\?|"|\*|<|>|\|/g,'.');
|
||||
|
||||
if(lib.device){
|
||||
var directory;
|
||||
|
@ -42109,7 +42150,7 @@
|
|||
config.num=config.num||num||3;
|
||||
config.ratio=config.ratio||ratio||1.2;
|
||||
config.update=config.update||update;
|
||||
if(!config.hasOwnProperty('first')){
|
||||
if(!Object.prototype.hasOwnProperty.call(config, 'first')){
|
||||
if(typeof first=='boolean'){
|
||||
config.first=first;
|
||||
}
|
||||
|
@ -42723,10 +42764,10 @@
|
|||
}
|
||||
if(info.marktext) lib.translate[`${i}_bg`]=info.marktext;
|
||||
if(info.silent){
|
||||
if(!info.hasOwnProperty('forced')) info.forced=true;
|
||||
if(!info.hasOwnProperty('popup')) info.popup=false;
|
||||
if(!Object.prototype.hasOwnProperty.call(info, 'forced')) info.forced=true;
|
||||
if(!Object.prototype.hasOwnProperty.call(info, 'popup')) info.popup=false;
|
||||
}
|
||||
if(!info.hasOwnProperty('_priority')){
|
||||
if(!Object.prototype.hasOwnProperty.call(info, '_priority')){
|
||||
let priority=0;
|
||||
if(info.priority){
|
||||
priority=info.priority*100;
|
||||
|
@ -43145,7 +43186,7 @@
|
|||
game.reload2();
|
||||
reject(event);
|
||||
}
|
||||
};;
|
||||
};
|
||||
record.onsuccess=event=>{
|
||||
if(typeof onSuccess=='function'){
|
||||
_status.dburgent=true;
|
||||
|
@ -43185,7 +43226,7 @@
|
|||
game.reload2();
|
||||
reject(event);
|
||||
}
|
||||
};;
|
||||
};
|
||||
idbRequest.onsuccess=event=>{
|
||||
const result=event.target.result;
|
||||
if(typeof onSuccess=='function'){
|
||||
|
@ -43209,7 +43250,7 @@
|
|||
game.reload2();
|
||||
reject(event);
|
||||
}
|
||||
};;
|
||||
};
|
||||
idbRequest.onsuccess=event=>{
|
||||
const result=event.target.result;
|
||||
if(result){
|
||||
|
@ -43270,7 +43311,7 @@
|
|||
request.onerror=event=>{
|
||||
game.reload2();
|
||||
reject(event);
|
||||
};;
|
||||
};
|
||||
request.onsuccess=event=>{
|
||||
game.reload2();
|
||||
resolve(event);
|
||||
|
@ -45023,7 +45064,7 @@
|
|||
var cfg=copyObj(infoconfig[j]);
|
||||
cfg._name=j;
|
||||
cfg.mode=mode;
|
||||
if(!config.hasOwnProperty(j)){
|
||||
if(!Object.prototype.hasOwnProperty.call(config, j)){
|
||||
game.saveConfig(j,cfg.init,mode);
|
||||
}
|
||||
else{
|
||||
|
@ -45491,7 +45532,7 @@
|
|||
}
|
||||
var cfg=copyObj(info.config[j]);
|
||||
cfg._name=j;
|
||||
if(!config.hasOwnProperty(j)){
|
||||
if(!Object.prototype.hasOwnProperty.call(config, j)){
|
||||
if(cfg.type!='autoskill'&&cfg.type!='banskill'){
|
||||
game.saveConfig(j,cfg.init);
|
||||
}
|
||||
|
@ -45609,7 +45650,7 @@
|
|||
}
|
||||
var link=(game.writeFile?'cdv_':'custom_')+name;
|
||||
if(lib.config.customBackgroundMusic[link]){
|
||||
if(!confirm('已经存在文件名称相同的背景音乐,是否仍然要继续导入?')){_status.music_importing=false;return};
|
||||
if(!confirm('已经存在文件名称相同的背景音乐,是否仍然要继续导入?')){_status.music_importing=false;return}
|
||||
for(var i=1;i<1000;i++){
|
||||
if(!lib.config.customBackgroundMusic[link+'_'+i]){
|
||||
link=link+'_'+i;break;
|
||||
|
@ -47365,7 +47406,7 @@
|
|||
j=mode+'_'+i+'_playpackconfig';
|
||||
}
|
||||
cfg._name=j;
|
||||
if(!lib.config.hasOwnProperty(j)){
|
||||
if(!Object.prototype.hasOwnProperty.call(lib.config, j)){
|
||||
game.saveConfig(j,cfg.init);
|
||||
}
|
||||
else{
|
||||
|
@ -48618,7 +48659,7 @@
|
|||
editnode.classList.add('disabled');
|
||||
delnode.innerHTML='取消';
|
||||
delete delnode.button;
|
||||
container.code='card={\n \n}\n\n\/*\n示例:\ncard={\n type:"basic",\n enable:true,\n filterTarget:true,\n content:function(){\n target.draw()\n },\n ai:{\n order:1,\n result:{\n target:1\n }\n }\n}\n此例的效果为目标摸一张牌\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
|
||||
container.code='card={\n \n}\n\n/*\n示例:\ncard={\n type:"basic",\n enable:true,\n filterTarget:true,\n content:function(){\n target.draw()\n },\n ai:{\n order:1,\n result:{\n target:1\n }\n }\n}\n此例的效果为目标摸一张牌\n导出时本段代码中的换行、缩进以及注释将被清除\n*/';
|
||||
}
|
||||
|
||||
newCard=ui.create.div('.new_character',page);
|
||||
|
@ -48817,7 +48858,7 @@
|
|||
delete window.saveNonameInput;
|
||||
};
|
||||
var editor=ui.create.editor(container,saveInput);
|
||||
container.code='card={\n \n}\n\n\/*\n示例:\ncard={\n type:"basic",\n enable:true,\n filterTarget:true,\n content:function(){\n target.draw()\n },\n ai:{\n order:1,\n result:{\n target:1\n }\n }\n}\n此例的效果为目标摸一张牌\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
|
||||
container.code='card={\n \n}\n\n/*\n示例:\ncard={\n type:"basic",\n enable:true,\n filterTarget:true,\n content:function(){\n target.draw()\n },\n ai:{\n order:1,\n result:{\n target:1\n }\n }\n}\n此例的效果为目标摸一张牌\n导出时本段代码中的换行、缩进以及注释将被清除\n*/';
|
||||
|
||||
var editnode=ui.create.div('.menubutton.large.new_card.disabled','创建卡牌',newCard,function(){
|
||||
var name=page.querySelector('input.new_name').value;
|
||||
|
@ -49168,7 +49209,7 @@
|
|||
editnode.classList.add('disabled');
|
||||
delnode.innerHTML='取消';
|
||||
delete delnode.button;
|
||||
container.code='skill={\n \n}\n\n\/*\n示例:\nskill={\n trigger:{player:"phaseJieshuBegin"},\n frequent:true,\n content:function(){\n player.draw()\n }\n}\n此例为闭月代码\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
|
||||
container.code='skill={\n \n}\n\n/*\n示例:\nskill={\n trigger:{player:"phaseJieshuBegin"},\n frequent:true,\n content:function(){\n player.draw()\n }\n}\n此例为闭月代码\n导出时本段代码中的换行、缩进以及注释将被清除\n*/';
|
||||
if(page.fromchar=='add'){
|
||||
page.fromchar=true;
|
||||
}
|
||||
|
@ -49254,7 +49295,7 @@
|
|||
delete window.saveNonameInput;
|
||||
};
|
||||
var editor=ui.create.editor(container,saveInput);
|
||||
container.code='skill={\n \n}\n\n\/*\n示例:\nskill={\n trigger:{player:"phaseJieshuBegin"},\n frequent:true,\n content:function(){\n player.draw()\n }\n}\n此例为闭月代码\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
|
||||
container.code='skill={\n \n}\n\n/*\n示例:\nskill={\n trigger:{player:"phaseJieshuBegin"},\n frequent:true,\n content:function(){\n player.draw()\n }\n}\n此例为闭月代码\n导出时本段代码中的换行、缩进以及注释将被清除\n*/';
|
||||
|
||||
var citebutton=document.createElement('button');
|
||||
citebutton.innerHTML='引用代码';
|
||||
|
@ -49482,10 +49523,10 @@
|
|||
}
|
||||
}
|
||||
else{
|
||||
dashes.content.node.code='function(config,pack){\n \n}\n\n\/*\n函数执行时机为游戏数据加载之后、界面加载之前\n参数1扩展选项(见选项代码);参数2为扩展定义的武将、卡牌和技能等(可在此函数中修改)\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
|
||||
dashes.precontent.node.code='function(){\n \n}\n\n\/*\n函数执行时机为游戏数据加载之前,且不受禁用扩展的限制\n除添加模式外请慎用\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
|
||||
dashes.config.node.code='config={\n \n}\n\n\/*\n示例:\nconfig={\n switcher_example:{\n name:"示例列表选项",\n init:"3",\n item:{"1":"一","2":"二","3":"三"}\n },\n toggle_example:{\n name:"示例开关选项",\n init:true\n }\n}\n此例中传入的主代码函数的默认参数为{switcher_example:"3",toggle_example:true}\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
|
||||
dashes.help.node.code='help={\n \n}\n\n\/*\n示例:\nhelp={\n "帮助条目":"<ul><li>列表1-条目1<li>列表1-条目2</ul><ol><li>列表2-条目1<li>列表2-条目2</ul>"\n}\n帮助内容将显示在菜单-选项-帮助中\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/';
|
||||
dashes.content.node.code='function(config,pack){\n \n}\n\n/*\n函数执行时机为游戏数据加载之后、界面加载之前\n参数1扩展选项(见选项代码);参数2为扩展定义的武将、卡牌和技能等(可在此函数中修改)\n导出时本段代码中的换行、缩进以及注释将被清除\n*/';
|
||||
dashes.precontent.node.code='function(){\n \n}\n\n/*\n函数执行时机为游戏数据加载之前,且不受禁用扩展的限制\n除添加模式外请慎用\n导出时本段代码中的换行、缩进以及注释将被清除\n*/';
|
||||
dashes.config.node.code='config={\n \n}\n\n/*\n示例:\nconfig={\n switcher_example:{\n name:"示例列表选项",\n init:"3",\n item:{"1":"一","2":"二","3":"三"}\n },\n toggle_example:{\n name:"示例开关选项",\n init:true\n }\n}\n此例中传入的主代码函数的默认参数为{switcher_example:"3",toggle_example:true}\n导出时本段代码中的换行、缩进以及注释将被清除\n*/';
|
||||
dashes.help.node.code='help={\n \n}\n\ns/*\n示例:\nhelp={\n "帮助条目":"<ul><li>列表1-条目1<li>列表1-条目2</ul><ol><li>列表2-条目1<li>列表2-条目2</ul>"\n}\n帮助内容将显示在菜单-选项-帮助中\n导出时本段代码中的换行、缩进以及注释将被清除\n*/';
|
||||
}
|
||||
};
|
||||
var dashes={};
|
||||
|
@ -49591,10 +49632,10 @@
|
|||
}
|
||||
};
|
||||
page.content={}
|
||||
createCode('主','主代码',page,clickCode,'content','function(config,pack){\n \n}\n\n\/*\n函数执行时机为游戏数据加载之后、界面加载之前\n参数1扩展选项(见选项代码);参数2为扩展定义的武将、卡牌和技能等(可在此函数中修改)\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/');
|
||||
createCode('启','启动代码',page,clickCode,'precontent','function(){\n \n}\n\n\/*\n函数执行时机为游戏数据加载之前,且不受禁用扩展的限制\n除添加模式外请慎用\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/');
|
||||
createCode('选','选项代码',page,clickCode,'config','config={\n \n}\n\n\/*\n示例:\nconfig={\n switcher_example:{\n name:"示例列表选项",\n init:"3",\n item:{"1":"一","2":"二","3":"三"}\n },\n toggle_example:{\n name:"示例开关选项",\n init:true\n }\n}\n此例中传入的主代码函数的默认参数为{switcher_example:"3",toggle_example:true}\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/');
|
||||
createCode('帮','帮助代码',page,clickCode,'help','help={\n \n}\n\n\/*\n示例:\nhelp={\n "帮助条目":"<ul><li>列表1-条目1<li>列表1-条目2</ul><ol><li>列表2-条目1<li>列表2-条目2</ul>"\n}\n帮助内容将显示在菜单-选项-帮助中\n导出时本段代码中的换行、缩进以及注释将被清除\n*\/');
|
||||
createCode('主','主代码',page,clickCode,'content','function(config,pack){\n \n}\n\n/*\n函数执行时机为游戏数据加载之后、界面加载之前\n参数1扩展选项(见选项代码);参数2为扩展定义的武将、卡牌和技能等(可在此函数中修改)\n导出时本段代码中的换行、缩进以及注释将被清除\n*/');
|
||||
createCode('启','启动代码',page,clickCode,'precontent','function(){\n \n}\n\n/*\n函数执行时机为游戏数据加载之前,且不受禁用扩展的限制\n除添加模式外请慎用\n导出时本段代码中的换行、缩进以及注释将被清除\n*/');
|
||||
createCode('选','选项代码',page,clickCode,'config','config={\n \n}\n\n/*\n示例:\nconfig={\n switcher_example:{\n name:"示例列表选项",\n init:"3",\n item:{"1":"一","2":"二","3":"三"}\n },\n toggle_example:{\n name:"示例开关选项",\n init:true\n }\n}\n此例中传入的主代码函数的默认参数为{switcher_example:"3",toggle_example:true}\n导出时本段代码中的换行、缩进以及注释将被清除\n*/');
|
||||
createCode('帮','帮助代码',page,clickCode,'help','help={\n \n}\n\n/*\n示例:\nhelp={\n "帮助条目":"<ul><li>列表1-条目1<li>列表1-条目2</ul><ol><li>列表2-条目1<li>列表2-条目2</ul>"\n}\n帮助内容将显示在菜单-选项-帮助中\n导出时本段代码中的换行、缩进以及注释将被清除\n*/');
|
||||
|
||||
return page;
|
||||
}());
|
||||
|
@ -49758,7 +49799,7 @@
|
|||
game.saveConfig('extension_'+extname+'_enable',true);
|
||||
game.saveConfig('extension_'+extname+'_version',that.info.version);
|
||||
for(var i in game.importedPack.config){
|
||||
if(game.importedPack.config[i]&&game.importedPack.config[i].hasOwnProperty('init')){
|
||||
if(game.importedPack.config[i]&&Object.prototype.hasOwnProperty.call(game.importedPack.config[i], 'init')){
|
||||
game.saveConfig('extension_'+extname+'_'+i,game.importedPack.config[i].init);
|
||||
}
|
||||
}
|
||||
|
@ -57023,7 +57064,7 @@
|
|||
if(!information) {
|
||||
resolve(`${lib.assetURL}image/card/${imageName}.png`)
|
||||
return;
|
||||
};
|
||||
}
|
||||
const image=information.image;
|
||||
if(!image) resolve(`${lib.assetURL}image/card/${imageName}.png`);
|
||||
else if(image.startsWith('db:')) game.getDB('image',image.slice(3)).then(resolve,reject);
|
||||
|
@ -58328,6 +58369,26 @@
|
|||
},
|
||||
};
|
||||
const get={
|
||||
/**
|
||||
* 返回 VCard[] 形式的所有牌,用于印卡将遍历
|
||||
* @param {Function} filter
|
||||
* @returns {string[][]}
|
||||
*/
|
||||
inpileVCardList:filter=>{
|
||||
let list=[];
|
||||
for(const name of lib.inpile){
|
||||
const type=get.type(name);
|
||||
const info=[type,'',name];
|
||||
if(!filter||filter(info)) list.push(info);
|
||||
if(name=='sha'){
|
||||
for(const nature of lib.inpile_nature){
|
||||
const info=[type,'',name,nature];
|
||||
if(!filter||filter(info)) list.push(info);
|
||||
}
|
||||
}
|
||||
}
|
||||
return list;
|
||||
},
|
||||
/**
|
||||
* 根据座次数n(从0开始)获取对应的“n+1号位”翻译
|
||||
* @param {number} seat
|
||||
|
@ -58402,7 +58463,7 @@
|
|||
priority:skill=>{
|
||||
const info=get.info(skill);
|
||||
if(!info) return 0;
|
||||
if(info.hasOwnProperty('_priority')) return info._priority;
|
||||
if(Object.prototype.hasOwnProperty.call(info, '_priority')) return info._priority;
|
||||
let priority=0;
|
||||
if(info.priority){
|
||||
priority=info.priority*100;
|
||||
|
@ -58583,6 +58644,38 @@
|
|||
return 0;
|
||||
},
|
||||
is:{
|
||||
/**
|
||||
* 判断是否为进攻坐骑
|
||||
* @param {Card | VCard} card
|
||||
* @param {false | Player} [player]
|
||||
* @returns {boolean}
|
||||
*/
|
||||
attackingMount:(card,player)=>{
|
||||
const subtype=get.subtype(card,player);
|
||||
if(subtype=='equip4') return true;
|
||||
else if(subtype=='equip6'){
|
||||
const info=get.info(card,player),distance=info.distance;
|
||||
if(!distance) return false;
|
||||
if(distance.globalFrom&&!info.notMount) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
/**
|
||||
* 判断是否为防御坐骑
|
||||
* @param {Card | VCard} card
|
||||
* @param {false | Player} [player]
|
||||
* @returns {boolean}
|
||||
*/
|
||||
defendingMount:(card,player)=>{
|
||||
const subtype=get.subtype(card,player);
|
||||
if(subtype=='equip3') return true;
|
||||
else if(subtype=='equip6'){
|
||||
const info=get.info(card,player),distance=info.distance;
|
||||
if(!distance) return false;
|
||||
if(distance.globalTo&&!info.notMount) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
/**
|
||||
* 判断坐骑栏是否被合并
|
||||
*/
|
||||
|
@ -59050,7 +59143,7 @@
|
|||
character:(name,num)=>{
|
||||
let info=lib.character[name];
|
||||
if(!info){
|
||||
const pack=Object.keys(lib.characterPack).find(pack=>lib.characterPack[pack].hasOwnProperty(name));
|
||||
const pack=Object.keys(lib.characterPack).find(pack=>Object.prototype.hasOwnProperty.call(lib.characterPack[pack], name));
|
||||
if(pack) info=lib.characterPack[pack][name];
|
||||
}
|
||||
if(info){
|
||||
|
@ -59249,7 +59342,7 @@
|
|||
}
|
||||
num=Math.floor(num/4);
|
||||
for(i=0;i<num-level;i++){
|
||||
str=str.replace(/\n /g,'\n');
|
||||
str=str.replace(/\n {4}/g,'\n');
|
||||
}
|
||||
}
|
||||
else{
|
||||
|
@ -59422,7 +59515,6 @@
|
|||
case 'purple':return '三对三对二';
|
||||
case 'zhong':return (config.double_character?'双将':'')+'忠胆英杰';
|
||||
case 'stratagem':return get.cnNumber(parseInt(config.number))+'人'+(config.double_character?'双将':'')+'谋攻';
|
||||
debugger
|
||||
default:return `${get.cnNumber(parseInt(config.number))}人${config.double_nei?'双内':''}${config.enable_commoner?'带民':''}${config.double_character?'双将':''}身份`;
|
||||
}
|
||||
}
|
||||
|
@ -60109,7 +60201,7 @@
|
|||
if(card.length==1) return get.suit(card[0],player);
|
||||
return 'none';
|
||||
}
|
||||
else if(!card.hasOwnProperty('suit')&&Array.isArray(card.cards)){
|
||||
else if(!Object.prototype.hasOwnProperty.call(card, 'suit')&&Array.isArray(card.cards)){
|
||||
return get.suit(card.cards,player);
|
||||
}
|
||||
else{
|
||||
|
@ -60161,7 +60253,7 @@
|
|||
if(!card) return;
|
||||
//狗卡你是真敢出啊
|
||||
var number=null;
|
||||
if(card.hasOwnProperty('number')){
|
||||
if(Object.prototype.hasOwnProperty.call(card, 'number')){
|
||||
number=card.number;
|
||||
if(typeof number!='number') number=null;
|
||||
}
|
||||
|
@ -60694,7 +60786,7 @@
|
|||
var result=function(){
|
||||
if(filter==arguments[i]) return true;
|
||||
for(var j in filter){
|
||||
if(filter.hasOwnProperty(j)){
|
||||
if(Object.prototype.hasOwnProperty.call(filter, j)){
|
||||
if(get.itemtype(arguments[i])=='card'){
|
||||
if(j=='name'){
|
||||
if(Array.isArray(filter[j])){
|
||||
|
@ -61141,7 +61233,12 @@
|
|||
for(i=0;i<skills.length;i++){
|
||||
if(lib.skill[skills[i]]&&(lib.skill[skills[i]].nopop||lib.skill[skills[i]].equipSkill)) continue;
|
||||
if(lib.translate[skills[i]+'_info']){
|
||||
translation=lib.translate[skills[i]+'_ab']||get.translation(skills[i]).slice(0,2);
|
||||
if(lib.translate[skills[i]+'_ab']) translation=lib.translate[skills[i]+'_ab'];
|
||||
else{
|
||||
translation=get.translation(skills[i]);
|
||||
if(!lib.skill[skills[i]].nobracket) translation=translation.slice(0,2);
|
||||
}
|
||||
|
||||
if(node.forbiddenSkills[skills[i]]){
|
||||
var forbidstr='<div style="opacity:0.5"><div class="skill">【'+translation+'】</div><div>';
|
||||
if(node.forbiddenSkills[skills[i]].length){
|
||||
|
@ -61225,9 +61322,6 @@
|
|||
intronode.listen(ui.click.skillbutton);
|
||||
}
|
||||
}
|
||||
else if(lib.skill[skills[i]].nobracket){
|
||||
uiintro.add('<div><div class="skilln">'+get.translation(skills[i])+'</div><div>'+get.skillInfoTranslation(skills[i],node)+'</div></div>');
|
||||
}
|
||||
else{
|
||||
uiintro.add('<div><div class="skill">【'+translation+'】</div><div>'+get.skillInfoTranslation(skills[i],node)+'</div></div>');
|
||||
}
|
||||
|
@ -61923,13 +62017,14 @@
|
|||
var skills=infoitem[3];
|
||||
for(i=0;i<skills.length;i++){
|
||||
if(lib.translate[skills[i]+'_info']){
|
||||
translation=lib.translate[skills[i]+'_ab']||get.translation(skills[i]).slice(0,2);
|
||||
if(lib.skill[skills[i]]&&lib.skill[skills[i]].nobracket){
|
||||
uiintro.add('<div><div class="skilln">'+get.translation(skills[i])+'</div><div>'+get.skillInfoTranslation(skills[i])+'</div></div>');
|
||||
}
|
||||
if(lib.translate[skills[i]+'_ab']) translation=lib.translate[skills[i]+'_ab'];
|
||||
else{
|
||||
uiintro.add('<div><div class="skill">【'+translation+'】</div><div>'+get.skillInfoTranslation(skills[i])+'</div></div>');
|
||||
translation=get.translation(skills[i]);
|
||||
if(!lib.skill[skills[i]].nobracket) translation=translation.slice(0,2);
|
||||
}
|
||||
|
||||
uiintro.add('<div><div class="skill">【'+translation+'】</div><div>'+get.skillInfoTranslation(skills[i])+'</div></div>');
|
||||
|
||||
if(lib.translate[skills[i]+'_append']){
|
||||
uiintro._place_text=uiintro.add('<div class="text">'+lib.translate[skills[i]+'_append']+'</div>')
|
||||
}
|
||||
|
|
|
@ -64,6 +64,7 @@ var pinyin_dict_polyphone = {
|
|||
"库特莉亚芙卡": " kǎ",
|
||||
"露娜": "lù ",
|
||||
// 技能名
|
||||
"畜鸣": "chù ",
|
||||
"聆乐": " yuè",
|
||||
"没矢": "mò ",
|
||||
"没欲": "mò ",
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 85 KiB |
Binary file not shown.
After Width: | Height: | Size: 67 KiB |
Binary file not shown.
After Width: | Height: | Size: 70 KiB |
Binary file not shown.
After Width: | Height: | Size: 103 KiB |
Binary file not shown.
After Width: | Height: | Size: 87 KiB |
33
mode/boss.js
33
mode/boss.js
|
@ -2172,21 +2172,21 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
player.chooseToDiscard('he',get.prompt('noda_axe',trigger.target),2,'弃置两张牌,令'+get.translation(trigger.target)+'本回合内不能使用或打出牌且防具技能无效。',function(card,player){
|
||||
return card!=player.getEquip(1);
|
||||
}).set('logSkill',['noda_axe',trigger.target]).set('goon',function(event,player){
|
||||
if(player.hasSkill('noda_axe2')) return false;
|
||||
if(event.getParent().excluded.contains(player)) return false;
|
||||
if(get.attitude(event.player,player)>0){
|
||||
return false;
|
||||
}
|
||||
if(get.type(event.card)=='trick'&&event.player.hasWuxie()) return true;
|
||||
if(get.tag(event.card,'respondSha')){
|
||||
if(!player.hasSha()) return false;
|
||||
return true;
|
||||
}
|
||||
else if(get.tag(event.card,'respondShan')){
|
||||
if(!player.hasShan()) return false;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
if(player.hasSkill('noda_axe2')) return false;
|
||||
if(event.getParent().excluded.contains(player)) return false;
|
||||
if(get.attitude(event.player,player)>0){
|
||||
return false;
|
||||
}
|
||||
if(get.type(event.card)=='trick'&&event.player.hasWuxie()) return true;
|
||||
if(get.tag(event.card,'respondSha')){
|
||||
if(!player.hasSha()) return false;
|
||||
return true;
|
||||
}
|
||||
else if(get.tag(event.card,'respondShan')){
|
||||
if(!player.hasShan()) return false;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}(trigger,trigger.target)).set('ai',function(card){
|
||||
if(_status.event.goon) return 7.5-get.value(card);
|
||||
return 0;
|
||||
|
@ -2268,7 +2268,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
if(current!=player&¤t.countCards('e')){
|
||||
player.line(current);
|
||||
current.discard(current.getCards('e'));
|
||||
};
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
|
@ -8266,7 +8266,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
if(target.classList.contains('turnedover')) return -1;
|
||||
return 5-target.getDamagedHp();
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
|
|
2326
mode/brawl.js
2326
mode/brawl.js
File diff suppressed because it is too large
Load Diff
|
@ -5435,7 +5435,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
init:function(player){
|
||||
for(var i=1;i<6;i++){
|
||||
player.$disableEquip('equip'+i);
|
||||
};
|
||||
}
|
||||
},
|
||||
check:function(card){
|
||||
var player=_status.currentPhase;
|
||||
|
|
|
@ -50,7 +50,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
event.textnode.textContent='正在连接...';
|
||||
clearTimeout(event.timeout);
|
||||
if(e) e.preventDefault();
|
||||
game.saveConfig('last_ip',node.textContent=node.textContent);
|
||||
game.saveConfig('last_ip',node.textContent);
|
||||
game.connect(node.textContent,function(success){
|
||||
if(!success&&event.textnode){
|
||||
alert('连接失败');
|
||||
|
|
|
@ -2103,7 +2103,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
equipSkill:true,
|
||||
filter:function(event,player){
|
||||
return lib.skill.toushiche_skill.logTarget(null,player).length>0;
|
||||
return lib.skill.toushiche_skill.logTarget(null,player).length>0;
|
||||
},
|
||||
logTarget:function(event,player){
|
||||
var hs=player.countCards('h');
|
||||
|
|
|
@ -365,7 +365,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
mode_guozhan:{
|
||||
guozhan_default:["gz_caocao","gz_simayi","gz_xiahoudun","gz_zhangliao","gz_xuzhu","gz_guojia","gz_zhenji","gz_xiahouyuan","gz_zhanghe","gz_xuhuang","gz_caoren","gz_dianwei","gz_xunyu","gz_caopi","gz_yuejin","gz_liubei","gz_guanyu","gz_zhangfei","gz_zhugeliang","gz_zhaoyun","gz_machao","gz_huangyueying","gz_huangzhong","gz_weiyan","gz_pangtong","gz_sp_zhugeliang","gz_liushan","gz_menghuo","gz_zhurong","gz_ganfuren","gz_sunquan","gz_ganning","gz_lvmeng","gz_huanggai","gz_zhouyu","gz_daqiao","gz_luxun","gz_sunshangxiang","gz_sunjian","gz_xiaoqiao","gz_taishici","gz_zhoutai","gz_re_lusu","gz_zhangzhang","gz_dingfeng","gz_huatuo","gz_lvbu","gz_diaochan","gz_re_yuanshao","gz_yanwen","gz_jiaxu","gz_pangde","gz_zhangjiao","gz_caiwenji","gz_mateng","gz_kongrong","gz_jiling","gz_tianfeng","gz_panfeng","gz_zoushi",],
|
||||
guozhan_zhen:["gz_dengai","gz_caohong","gz_jiangfei","gz_jiangwei","gz_xusheng","gz_jiangqing","gz_hetaihou","gz_yuji"],
|
||||
guozhan_shi:[,"gz_re_lidian","gz_zangba","gz_madai","gz_mifuren","gz_sunce","gz_chendong","gz_sp_dongzhuo","gz_zhangren"],
|
||||
guozhan_shi:["gz_re_lidian","gz_zangba","gz_madai","gz_mifuren","gz_sunce","gz_chendong","gz_sp_dongzhuo","gz_zhangren"],
|
||||
guozhan_bian:["gz_liqueguosi","gz_zuoci","gz_bianfuren","gz_xunyou","gz_lingtong","gz_lvfan","gz_masu","gz_shamoke",],
|
||||
guozhan_quan:["gz_cuimao","gz_yujin","gz_wangping","gz_fazheng","gz_wuguotai","gz_lukang","gz_yuanshu","gz_zhangxiu"],
|
||||
guozhan_jun:["gz_jun_caocao","gz_jun_sunquan","gz_jun_liubei","gz_jun_zhangjiao"],
|
||||
|
@ -1485,7 +1485,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
group:'gzgongjian_gain',
|
||||
subSkill:{
|
||||
gain:{
|
||||
audio:'gongjian',
|
||||
audio:'gongjian',
|
||||
trigger:{
|
||||
global:['loseAfter','loseAsyncAfter'],
|
||||
},
|
||||
|
@ -1911,7 +1911,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
return get.suit(card)=='diamond'&&get.type2(card)!='trick'&&player.canUse(get.autoViewAs({name:'lebu'},[card]),event.target);
|
||||
},'he')||player.hasCard(function(card){
|
||||
return get.suit(card)=='club'&&get.type2(card)!='trick'&&player.canUse(get.autoViewAs({name:'bingliang'},[card]),event.target,false);
|
||||
}),'he') return true;
|
||||
},'he')) return true;
|
||||
return false;
|
||||
},
|
||||
check:function(event,player){
|
||||
|
@ -2427,8 +2427,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
mark:{
|
||||
marktext:'祸',
|
||||
intro:{
|
||||
content:'mark',
|
||||
onunmark:true,
|
||||
content:'mark',
|
||||
onunmark:true,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -2809,25 +2809,25 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
if(double) groups=double.slice(0);
|
||||
else groups=[lib.character[character][1]];
|
||||
event.groups=groups;
|
||||
event.videoId=lib.status.videoId++;
|
||||
game.broadcastAll(function(player,id,character){
|
||||
ui.create.dialog(get.translation(player)+'发动了【博览】',[[character],'character']).videoId=id;
|
||||
},player,event.videoId,character);
|
||||
game.delay(3);
|
||||
'step 1'
|
||||
game.broadcastAll('closeDialog',event.videoId);
|
||||
var list1=['wei','shu','wu','qun','jin'],list2=['gzqice','tiaoxin','gzzhiheng','new_chuli','gzsanchen'];
|
||||
var skills=[];
|
||||
for(var i=0;i<list1.length;i++){
|
||||
if(event.groups.contains(list1[i])) skills.push(list2[i]);
|
||||
}
|
||||
if(!skills.length) event.finish();
|
||||
else if(skills.length==1) event._result={control:skills[0]};
|
||||
else player.chooseControl(skills).set('prompt','选择获得一个技能直到回合结束');
|
||||
'step 2'
|
||||
var skill=result.control;
|
||||
player.addTempSkill(skill);
|
||||
game.log(player,'获得了技能','#g【'+get.translation(skill)+'】');
|
||||
event.videoId=lib.status.videoId++;
|
||||
game.broadcastAll(function(player,id,character){
|
||||
ui.create.dialog(get.translation(player)+'发动了【博览】',[[character],'character']).videoId=id;
|
||||
},player,event.videoId,character);
|
||||
game.delay(3);
|
||||
'step 1'
|
||||
game.broadcastAll('closeDialog',event.videoId);
|
||||
var list1=['wei','shu','wu','qun','jin'],list2=['gzqice','tiaoxin','gzzhiheng','new_chuli','gzsanchen'];
|
||||
var skills=[];
|
||||
for(var i=0;i<list1.length;i++){
|
||||
if(event.groups.contains(list1[i])) skills.push(list2[i]);
|
||||
}
|
||||
if(!skills.length) event.finish();
|
||||
else if(skills.length==1) event._result={control:skills[0]};
|
||||
else player.chooseControl(skills).set('prompt','选择获得一个技能直到回合结束');
|
||||
'step 2'
|
||||
var skill=result.control;
|
||||
player.addTempSkill(skill);
|
||||
game.log(player,'获得了技能','#g【'+get.translation(skill)+'】');
|
||||
},
|
||||
derivation:['gzqice','tiaoxin','gzzhiheng','new_chuli','gzsanchen'],
|
||||
ai:{
|
||||
|
@ -4103,9 +4103,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
return '没有“戮”';
|
||||
}
|
||||
},
|
||||
content:function(storage,player){
|
||||
return '共有'+get.cnNumber(storage.length)+'张“戮”';
|
||||
},
|
||||
// content:function(storage,player){
|
||||
// return '共有'+get.cnNumber(storage.length)+'张“戮”';
|
||||
// },
|
||||
},
|
||||
group:'gzshilu_zhiheng',
|
||||
subSkill:{
|
||||
|
@ -4853,7 +4853,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
},
|
||||
selectTarget:-1,
|
||||
filterTarget:function(card,player,target){;
|
||||
filterTarget:function(card,player,target){
|
||||
if(player==target) return true;
|
||||
if(player.identity=='unknown'){
|
||||
var group='shu';
|
||||
|
@ -7806,7 +7806,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
trigger.source.chooseJunlingControl(player,result.junling,result.targets).set('prompt','补益').set('choiceList',choiceList).set('ai',function(){
|
||||
if(get.recoverEffect(trigger.player,player,_status.event.player)>0) return 1;
|
||||
return (get.attitude(trigger.source,trigger.player)<0&&get.junlingEffect(player,result.junling,trigger.source,result.targets,trigger.source)>=-2)?1:0;
|
||||
return 0;
|
||||
});
|
||||
'step 2'
|
||||
if(result.index==0) trigger.source.carryOutJunling(player,event.junling,targets);
|
||||
|
@ -8800,8 +8799,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
game.log(player,'获得了技能','#g【'+get.translation(result.control)+'】');
|
||||
game.delay();
|
||||
},
|
||||
forceaudio:true,
|
||||
audio:['xuanhuo',2],
|
||||
// forceaudio:true,
|
||||
// audio:['xuanhuo',2],
|
||||
ai:{
|
||||
order:8,
|
||||
result:{player:1},
|
||||
|
@ -8809,7 +8808,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
//used:{},
|
||||
},
|
||||
audio:['xuanhuo',2],
|
||||
// audio:['xuanhuo',2],
|
||||
},
|
||||
fz_gzpaoxiao:{
|
||||
audio:true,
|
||||
|
@ -10383,8 +10382,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
case '珠联(桃)': return get.copy(lib.skill._zhulianbihe_mark_tao);
|
||||
case '珠联(摸牌)': return {
|
||||
content:function(){
|
||||
player.draw(2);
|
||||
player.removeMark(player.hasMark('zhulianbihe_mark')?'zhulianbihe_mark':'yexinjia_mark',1);
|
||||
player.draw(2);
|
||||
player.removeMark(player.hasMark('zhulianbihe_mark')?'zhulianbihe_mark':'yexinjia_mark',1);
|
||||
},
|
||||
};
|
||||
case '阴阳鱼': return {
|
||||
|
@ -11132,7 +11131,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
backup:function(links,player){
|
||||
return {
|
||||
filterCard:true,
|
||||
audio:"qice",
|
||||
audio:'qice_backup',
|
||||
selectCard:-1,
|
||||
position:'h',
|
||||
selectTarget:function(){
|
||||
|
@ -11154,7 +11153,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
return lib.filter.filterTarget(card,player,target);
|
||||
},
|
||||
audio:'qice_backup',
|
||||
popname:true,
|
||||
viewAs:{name:links[0][2]},
|
||||
ai1:function(){
|
||||
|
@ -11887,7 +11885,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
return false;
|
||||
})
|
||||
};
|
||||
}
|
||||
if(trigger.name=='lose'){
|
||||
for(var i of trigger.cards){
|
||||
if(i.name=='feilongduofeng'&&get.position(i,true)=='d') cards.push(i);
|
||||
|
@ -12342,7 +12340,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
return player.siege(event.target)&&event.player.siege(event.target);
|
||||
},
|
||||
forced:true,
|
||||
audio:'zniaoxiang',
|
||||
forceaudio:true,
|
||||
logTarget:'target',
|
||||
content:function(){
|
||||
|
@ -12661,7 +12658,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
for(var i=0;i<skills.length;i++){
|
||||
list.add(skills[i]);
|
||||
var info=lib.skill[skills[i]];
|
||||
if(info.charlotte){list.splice(i--);continue};
|
||||
if (info.charlotte) {
|
||||
list.splice(i--);
|
||||
continue;
|
||||
}
|
||||
if(typeof info.derivation=='string'){
|
||||
list.add(info.derivation);
|
||||
}
|
||||
|
@ -14219,13 +14219,13 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
game.me.chooseButtonOL(chosen,function(player,result){
|
||||
if(player==game.me) player.trueIdentity=result.links[0][2].slice(6);
|
||||
}).set('switchToAuto',function(){
|
||||
_status.event.result='ai';
|
||||
}).set('processAI',function(){
|
||||
return {
|
||||
bool:true,
|
||||
links:[_status.event.dialog.buttons.randomGet().link],
|
||||
}
|
||||
});
|
||||
_status.event.result='ai';
|
||||
}).set('processAI',function(){
|
||||
return {
|
||||
bool:true,
|
||||
links:[_status.event.dialog.buttons.randomGet().link],
|
||||
}
|
||||
});
|
||||
}
|
||||
else event._result={};
|
||||
'step 2'
|
||||
|
|
164
mode/identity.js
164
mode/identity.js
|
@ -592,9 +592,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
switch(_status.mode){
|
||||
case 'purple':str2='3v3v2 - '+(game.me.identity.indexOf('r')==0?'暖色':'冷色')+lib.translate[game.me.identity+'2'];break;
|
||||
case 'zhong':str2='忠胆英杰 - '+lib.translate[game.me.identity+'2'];break;
|
||||
case 'stratagem':str2=get.cnNumber(get.playerNumber())+'人谋攻'+'-'+lib.translate[game.me.identity+'2'];
|
||||
default:str2=get.cnNumber(get.playerNumber())+'人'+
|
||||
get.translation(lib.config.mode)+' - '+lib.translate[game.me.identity+'2']
|
||||
case 'stratagem':str2=get.cnNumber(get.playerNumber())+'人谋攻'+'-'+lib.translate[game.me.identity+'2'];break;
|
||||
default:str2=get.cnNumber(get.playerNumber())+'人'+get.translation(lib.config.mode)+' - '+lib.translate[game.me.identity+'2']
|
||||
}
|
||||
}
|
||||
var name=[
|
||||
|
@ -809,24 +808,24 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
players.push(players.shift());
|
||||
}
|
||||
game.broadcastAll(function(players,identityList,list){
|
||||
_status.mode='purple';
|
||||
if(game.online) ui.arena.classList.add('choose-character');
|
||||
for(var i=0;i<players.length;i++){
|
||||
players[i].node.identity.classList.add('guessing');
|
||||
players[i].identity=identityList[i];
|
||||
players[i].setIdentity(list.contains(identityList[i])?'cai2':'cai');
|
||||
if(['rZhu','bZhu'].contains(identityList[i])){
|
||||
game[identityList[i]]=players[i];
|
||||
players[i].setIdentity(identityList[i]);
|
||||
players[i].identityShown=true;
|
||||
players[i].node.identity.classList.remove('guessing');
|
||||
}
|
||||
}
|
||||
game.zhu=game.rZhu;
|
||||
game.rZhu.isZhu=true;
|
||||
game.bZhu.isZhu=true;
|
||||
game.me.setIdentity();
|
||||
game.me.node.identity.classList.remove('guessing');
|
||||
_status.mode='purple';
|
||||
if(game.online) ui.arena.classList.add('choose-character');
|
||||
for(var i=0;i<players.length;i++){
|
||||
players[i].node.identity.classList.add('guessing');
|
||||
players[i].identity=identityList[i];
|
||||
players[i].setIdentity(list.contains(identityList[i])?'cai2':'cai');
|
||||
if(['rZhu','bZhu'].contains(identityList[i])){
|
||||
game[identityList[i]]=players[i];
|
||||
players[i].setIdentity(identityList[i]);
|
||||
players[i].identityShown=true;
|
||||
players[i].node.identity.classList.remove('guessing');
|
||||
}
|
||||
}
|
||||
game.zhu=game.rZhu;
|
||||
game.rZhu.isZhu=true;
|
||||
game.bZhu.isZhu=true;
|
||||
game.me.setIdentity();
|
||||
game.me.node.identity.classList.remove('guessing');
|
||||
},players,identityList,list);
|
||||
players.sortBySeat(game.zhu);
|
||||
for(var i=0;i<players.length;i++){
|
||||
|
@ -889,15 +888,13 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
var players=[game.rZhu,game.bZhu];
|
||||
var list=[];
|
||||
for(var i=0;i<players.length;i++){
|
||||
if(true){
|
||||
var group=event[players[i].identity];
|
||||
var str='选择角色';
|
||||
var list2=event.map[group].randomGets(4);
|
||||
if(event.map_zhu[group]) list2.addArray(event.map_zhu[group].randomGets(2));
|
||||
event.map[players[i].playerid]=list2;
|
||||
list.push([players[i],[str,[list2,'character']],true]);
|
||||
}
|
||||
}
|
||||
var group=event[players[i].identity];
|
||||
var str='选择角色';
|
||||
var list2=event.map[group].randomGets(4);
|
||||
if(event.map_zhu[group]) list2.addArray(event.map_zhu[group].randomGets(2));
|
||||
event.map[players[i].playerid]=list2;
|
||||
list.push([players[i],[str,[list2,'character']],true]);
|
||||
}
|
||||
game.me.chooseButtonOL(list,function(player,result){
|
||||
if(game.online||player==game.me){
|
||||
player.init(result.links[0]);
|
||||
|
@ -935,13 +932,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
var players=game.players.slice(0);
|
||||
players.removeArray([game.rZhu,game.bZhu]);
|
||||
for(var i=0;i<players.length;i++){
|
||||
if(true){
|
||||
var group=event[players[i].identity.slice(0,1)+'Zhu'];
|
||||
var str='选择角色';
|
||||
var list2=event.map[group].randomRemove(event.mapNum[group]);
|
||||
event.map[players[i].playerid]=list2;
|
||||
list.push([players[i],[str,[list2,'character']],true]);
|
||||
}
|
||||
var group=event[players[i].identity.slice(0,1)+'Zhu'];
|
||||
var str='选择角色';
|
||||
var list2=event.map[group].randomRemove(event.mapNum[group]);
|
||||
event.map[players[i].playerid]=list2;
|
||||
list.push([players[i],[str,[list2,'character']],true]);
|
||||
}
|
||||
game.me.chooseButtonOL(list,function(player,result){
|
||||
if(game.online||player==game.me){
|
||||
|
@ -1007,8 +1002,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
game.zhu=game.rZhu;
|
||||
game.rZhu.isZhu=true;
|
||||
game.bZhu.isZhu=true;
|
||||
game.rZhu.isZhu=true;
|
||||
game.bZhu.isZhu=true;
|
||||
game.me.setIdentity();
|
||||
game.me.node.identity.classList.remove('guessing');
|
||||
players.sortBySeat(game.zhu);
|
||||
|
@ -1264,8 +1259,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
result[i]=result[i].links;
|
||||
}
|
||||
if(get.is.double(result[i][0])||
|
||||
lib.character[result[i][0]]&&lib.character[result[i][0]][1]=='shen'&&!lib.character[result[i][0]][4].contains('hiddenSkill')) shen.push(lib.playerOL[i]);
|
||||
if(get.is.double(result[i][0])||lib.character[result[i][0]]&&lib.character[result[i][0]][1]=='shen'&&!lib.character[result[i][0]][4].contains('hiddenSkill')) shen.push(lib.playerOL[i]);
|
||||
}
|
||||
event.result2=result;
|
||||
if(shen.length){
|
||||
|
@ -1286,13 +1280,13 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
game.me.chooseButtonOL(shen,function(player,result){
|
||||
if(player==game.me) player.changeGroup(result.links[0][2].slice(6),false,false);
|
||||
}).set('switchToAuto',function(){
|
||||
_status.event.result='ai';
|
||||
}).set('processAI',function(){
|
||||
return {
|
||||
bool:true,
|
||||
links:[_status.event.dialog.buttons.randomGet().link],
|
||||
}
|
||||
});
|
||||
_status.event.result='ai';
|
||||
}).set('processAI',function(){
|
||||
return {
|
||||
bool:true,
|
||||
links:[_status.event.dialog.buttons.randomGet().link],
|
||||
}
|
||||
});
|
||||
}
|
||||
else event._result={};
|
||||
'step 3'
|
||||
|
@ -1817,7 +1811,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
list3.push(i);
|
||||
}
|
||||
};
|
||||
}
|
||||
var getZhuList=function(){
|
||||
if(stratagemMode){
|
||||
list2.sort(lib.sort.character);
|
||||
|
@ -2446,7 +2440,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
result[i]=result[i].links;
|
||||
}
|
||||
if(get.is.double(result[i][0])||
|
||||
lib.character[result[i][0]]&&lib.character[result[i][0]][1]=='shen'&&!lib.character[result[i][0]][4].contains('hiddenSkill')) shen.push(lib.playerOL[i]);
|
||||
lib.character[result[i][0]]&&lib.character[result[i][0]][1]=='shen'&&!lib.character[result[i][0]][4].contains('hiddenSkill')) shen.push(lib.playerOL[i]);
|
||||
}
|
||||
event.result2=result;
|
||||
if(shen.length){
|
||||
|
@ -2467,13 +2461,13 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
game.me.chooseButtonOL(shen,function(player,result){
|
||||
if(player==game.me) player.changeGroup(result.links[0][2].slice(6),false,false);
|
||||
}).set('switchToAuto',function(){
|
||||
_status.event.result='ai';
|
||||
}).set('processAI',function(){
|
||||
return {
|
||||
bool:true,
|
||||
links:[_status.event.dialog.buttons.randomGet().link],
|
||||
}
|
||||
});
|
||||
_status.event.result='ai';
|
||||
}).set('processAI',function(){
|
||||
return {
|
||||
bool:true,
|
||||
links:[_status.event.dialog.buttons.randomGet().link],
|
||||
}
|
||||
});
|
||||
}
|
||||
else event._result={};
|
||||
"step 5"
|
||||
|
@ -2481,23 +2475,23 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
for(var i in result){
|
||||
if(result[i]&&result[i].links) result[i]=result[i].links[0][2].slice(6);
|
||||
else if(result[i]=='ai') result[i]=function(){
|
||||
var player=lib.playerOL[i];
|
||||
var list=['wei','shu','wu','qun','jin','key'];
|
||||
var player=lib.playerOL[i];
|
||||
var list=['wei','shu','wu','qun','jin','key'];
|
||||
for(var ix=0;ix<list.length;ix++){
|
||||
if(!lib.group.contains(list[ix])) list.splice(ix--,1);
|
||||
}
|
||||
if(_status.mode!='zhong'&&game.zhu&&game.zhu.group){
|
||||
if(['re_zhangjiao','liubei','re_liubei','caocao','re_caocao','sunquan','re_sunquan','zhangjiao','sp_zhangjiao','caopi','re_caopi','liuchen','caorui','sunliang','sunxiu','sunce','re_sunben','ol_liushan','re_liushan','key_akane','dongzhuo','re_dongzhuo','ol_dongzhuo','jin_simashi','caomao'].contains(game.zhu.name)) return game.zhu.group;
|
||||
if(game.zhu.name=='yl_yuanshu'){
|
||||
if(player.identity=='zhong') list.remove('qun');
|
||||
else return 'qun';
|
||||
}
|
||||
if(['sunhao','xin_yuanshao','re_yuanshao','re_sunce','ol_yuanshao','yuanshu','jin_simazhao','liubian'].contains(game.zhu.name)){
|
||||
if(player.identity!='zhong') list.remove(game.zhu.group);
|
||||
else return game.zhu.group;
|
||||
}
|
||||
}
|
||||
return list.randomGet();
|
||||
if(_status.mode!='zhong'&&game.zhu&&game.zhu.group){
|
||||
if(['re_zhangjiao','liubei','re_liubei','caocao','re_caocao','sunquan','re_sunquan','zhangjiao','sp_zhangjiao','caopi','re_caopi','liuchen','caorui','sunliang','sunxiu','sunce','re_sunben','ol_liushan','re_liushan','key_akane','dongzhuo','re_dongzhuo','ol_dongzhuo','jin_simashi','caomao'].contains(game.zhu.name)) return game.zhu.group;
|
||||
if(game.zhu.name=='yl_yuanshu'){
|
||||
if(player.identity=='zhong') list.remove('qun');
|
||||
else return 'qun';
|
||||
}
|
||||
if(['sunhao','xin_yuanshao','re_yuanshao','re_sunce','ol_yuanshao','yuanshu','jin_simazhao','liubian'].contains(game.zhu.name)){
|
||||
if(player.identity!='zhong') list.remove(game.zhu.group);
|
||||
else return game.zhu.group;
|
||||
}
|
||||
}
|
||||
return list.randomGet();
|
||||
}();
|
||||
}
|
||||
var result2=event.result2;
|
||||
|
@ -2665,16 +2659,16 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
if(_status.mode=='stratagem') return;
|
||||
if(_status.mode=='purple'){
|
||||
if(source){
|
||||
if(this.identity=='rZhu'||this.identity=='bZhu'){
|
||||
if(this.identity.slice(0,1)!=source.identity.slice(0,1)) source.recover();
|
||||
}
|
||||
else if(this.identity=='rZhong'||this.identity=='bZhong'){
|
||||
if(this.identity.slice(0,1)!=source.identity.slice(0,1)) source.draw(2);
|
||||
else if(source.identity.indexOf('Zhu')==1) source.discard(source.getCards('h'));
|
||||
}
|
||||
else if(this.identity=='rNei'||this.identity=='bNei'){
|
||||
if(this.identity.slice(0,1)==source.identity.slice(0,1)) source.draw(3);
|
||||
}
|
||||
if(this.identity=='rZhu'||this.identity=='bZhu'){
|
||||
if(this.identity.slice(0,1)!=source.identity.slice(0,1)) source.recover();
|
||||
}
|
||||
else if(this.identity=='rZhong'||this.identity=='bZhong'){
|
||||
if(this.identity.slice(0,1)!=source.identity.slice(0,1)) source.draw(2);
|
||||
else if(source.identity.indexOf('Zhu')==1) source.discard(source.getCards('h'));
|
||||
}
|
||||
else if(this.identity=='rNei'||this.identity=='bNei'){
|
||||
if(this.identity.slice(0,1)==source.identity.slice(0,1)) source.draw(3);
|
||||
}
|
||||
}
|
||||
if(!_status.yeconfirm){
|
||||
_status.yeconfirm=true;
|
||||
|
@ -2686,7 +2680,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
if(player){
|
||||
player.showIdentity();
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -2738,7 +2732,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
if(red.length<=1&&blue.length<=1) game.broadcastAll(game.showIdentity);
|
||||
return;
|
||||
};
|
||||
}
|
||||
if(game.zhu&&game.zhu.isZhu){
|
||||
if((get.population('zhong')+get.population('nei')==0||
|
||||
get.population('zhong')+get.population('fan')==0)&&get.population('commoner')==0){
|
||||
|
@ -3173,7 +3167,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
return x/num;
|
||||
}
|
||||
var real=get.realAttitude(from,to),zhibi=from.storage.zhibi,stratagem_expose=from.storage.stratagem_expose,followCamouflage=true;
|
||||
if(to.ai.shown) return to.ai.shown*(real+(from.identity==to.identity||from.identity=='zhu'&&to.identity=='zhong'||from.identity=='zhong'&&to.identity=='zhu'||(to.identity=='nei'&&get.situation()<=0&&['zhu','zhong'].contains(from.identity)||get.situation()>=3&&from.identity=='fan')?3:-3))
|
||||
if(to.ai.shown) return to.ai.shown*(real+(from.identity==to.identity||from.identity=='zhu'&&to.identity=='zhong'||from.identity=='zhong'&&to.identity=='zhu'||from.identity=='nei'&&to.identity=='zhu'&&get.situation()<=1||(to.identity=='nei'&&get.situation()<=0&&['zhu','zhong'].contains(from.identity)||get.situation()>=3&&from.identity=='fan')?2.9:-2.9))
|
||||
if(from==to||to.identityShown||((stratagem_expose&&stratagem_expose.contains(to))||(zhibi&&zhibi.contains(to)))&&!to.ai.stratagemCamouflage) return real*1.1;
|
||||
if(from.identity=='nei'&&to.ai.stratagemCamouflage) return real*1.1;
|
||||
if(to.identity=='nei'){
|
||||
|
@ -3692,6 +3686,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
case 'commoner':
|
||||
return 2*get.population('fan')-2;
|
||||
}
|
||||
break;
|
||||
case 'commoner':
|
||||
switch(identity2){
|
||||
case 'zhu':
|
||||
|
@ -3716,6 +3711,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
case 'commoner':
|
||||
return from==to?10:(to.hp<=2?-2:0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
},
|
||||
situation:function(absolute){
|
||||
|
|
124
mode/versus.js
124
mode/versus.js
|
@ -612,16 +612,16 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
var str2;
|
||||
if(game.versusVideoName) str2=game.versusVideoName;
|
||||
else{
|
||||
switch(_status.mode){
|
||||
case 'two':str2='欢乐成双';break;
|
||||
case 'endless':str2='无尽模式';break;
|
||||
case 'three':str2='统率三军';break;
|
||||
case 'siguo':str2='同舟共济';break;
|
||||
case 'jiange':str2='守卫剑阁';break;
|
||||
case 'four':str2='对决 - 4v4';break;
|
||||
case 'guandu':str2='官渡之战';break;
|
||||
default:str2='对决 - '+lib.storage.number+'v'+lib.storage.number
|
||||
}
|
||||
switch(_status.mode){
|
||||
case 'two':str2='欢乐成双';break;
|
||||
case 'endless':str2='无尽模式';break;
|
||||
case 'three':str2='统率三军';break;
|
||||
case 'siguo':str2='同舟共济';break;
|
||||
case 'jiange':str2='守卫剑阁';break;
|
||||
case 'four':str2='对决 - 4v4';break;
|
||||
case 'guandu':str2='官渡之战';break;
|
||||
default:str2='对决 - '+lib.storage.number+'v'+lib.storage.number
|
||||
}
|
||||
}
|
||||
return [str,str2];
|
||||
},
|
||||
|
@ -2551,33 +2551,33 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
next.setContent(function(){
|
||||
"step 0"
|
||||
var list=[
|
||||
['zhu','ezhu','ezhong','zhong','ezhong','zhong','zhong','ezhong'],
|
||||
['zhu','ezhong','zhong','ezhu','ezhong','zhong','ezhong','zhong'],
|
||||
['zhu','ezhong','zhong','ezhong','zhong','ezhong','zhong','ezhu'],
|
||||
['zhu','ezhu','zhong','ezhong','zhong','ezhong','zhong','ezhong'],
|
||||
['zhu','ezhong','zhong','ezhong','zhong','ezhu','zhong','ezhong'],
|
||||
].randomGet();
|
||||
['zhu','ezhu','ezhong','zhong','ezhong','zhong','zhong','ezhong'],
|
||||
['zhu','ezhong','zhong','ezhu','ezhong','zhong','ezhong','zhong'],
|
||||
['zhu','ezhong','zhong','ezhong','zhong','ezhong','zhong','ezhu'],
|
||||
['zhu','ezhu','zhong','ezhong','zhong','ezhong','zhong','ezhong'],
|
||||
['zhu','ezhong','zhong','ezhong','zhong','ezhu','zhong','ezhong'],
|
||||
].randomGet();
|
||||
|
||||
var side=true;
|
||||
var num=Math.floor(Math.random()*8);
|
||||
list=list.splice(8-num).concat(list);
|
||||
for(var i=0;i<8;i++){
|
||||
if(list[i][0]=='e'){
|
||||
game.players[i].side=side;
|
||||
game.players[i].identity=list[i].slice(1);
|
||||
}
|
||||
else{
|
||||
game.players[i].side=!side;
|
||||
game.players[i].identity=list[i];
|
||||
}
|
||||
if(game.players[i].identity=='zhu'){
|
||||
game[game.players[i].side+'Zhu']=game.players[i];
|
||||
game.players[i].isZhu=true;
|
||||
}
|
||||
game.players[i].setIdentity(game.players[i].identity);
|
||||
game.players[i].node.identity.dataset.color=get.translation(game.players[i].side+'Color');
|
||||
game.players[i].getId();
|
||||
}
|
||||
var side=true;
|
||||
var num=Math.floor(Math.random()*8);
|
||||
list=list.splice(8-num).concat(list);
|
||||
for(var i=0;i<8;i++){
|
||||
if(list[i][0]=='e'){
|
||||
game.players[i].side=side;
|
||||
game.players[i].identity=list[i].slice(1);
|
||||
}
|
||||
else{
|
||||
game.players[i].side=!side;
|
||||
game.players[i].identity=list[i];
|
||||
}
|
||||
if(game.players[i].identity=='zhu'){
|
||||
game[game.players[i].side+'Zhu']=game.players[i];
|
||||
game.players[i].isZhu=true;
|
||||
}
|
||||
game.players[i].setIdentity(game.players[i].identity);
|
||||
game.players[i].node.identity.dataset.color=get.translation(game.players[i].side+'Color');
|
||||
game.players[i].getId();
|
||||
}
|
||||
|
||||
var side=true;
|
||||
var map={};
|
||||
|
@ -2611,27 +2611,27 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
}
|
||||
game.falseZhu.init('re_caocao');
|
||||
game.trueZhu.init('ol_yuanshao');
|
||||
game.trueZhu.hp++;
|
||||
game.trueZhu.maxHp++;
|
||||
game.falseZhu.hp++;
|
||||
game.falseZhu.maxHp++;
|
||||
game.trueZhu.update();
|
||||
game.falseZhu.update();
|
||||
game.falseZhu.init('re_caocao');
|
||||
game.trueZhu.init('ol_yuanshao');
|
||||
game.trueZhu.hp++;
|
||||
game.trueZhu.maxHp++;
|
||||
game.falseZhu.hp++;
|
||||
game.falseZhu.maxHp++;
|
||||
game.trueZhu.update();
|
||||
game.falseZhu.update();
|
||||
ui.arena.classList.add('choose-character');
|
||||
if(get.is.phoneLayout()){
|
||||
ui.guanduInfo=ui.create.div('.touchinfo.left',ui.window);
|
||||
}
|
||||
else{
|
||||
ui.guanduInfo=ui.create.div(ui.gameinfo);
|
||||
}
|
||||
ui.guanduInfo.innerHTML='当前事件:'+get.translation(evt);
|
||||
var dialog=ui.create.dialog('本局特殊事件:'+get.translation(evt));
|
||||
dialog.addText(get.translation(evt+'_info'),false);
|
||||
setTimeout(function(){
|
||||
dialog.close();
|
||||
},5000)
|
||||
ui.guanduInfo=ui.create.div('.touchinfo.left',ui.window);
|
||||
}
|
||||
else{
|
||||
ui.guanduInfo=ui.create.div(ui.gameinfo);
|
||||
}
|
||||
ui.guanduInfo.innerHTML='当前事件:'+get.translation(evt);
|
||||
var dialog=ui.create.dialog('本局特殊事件:'+get.translation(evt));
|
||||
dialog.addText(get.translation(evt+'_info'),false);
|
||||
setTimeout(function(){
|
||||
dialog.close();
|
||||
},5000)
|
||||
};
|
||||
game.broadcastAll(func,map,evt);
|
||||
_status.firstAct=game.falseZhu;
|
||||
|
@ -2704,12 +2704,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
game.addGlobalSkill(evt);
|
||||
game.broadcastAll(function(evt){
|
||||
if(get.is.phoneLayout()){
|
||||
ui.guanduInfo=ui.create.div('.touchinfo.left',ui.window);
|
||||
}
|
||||
else{
|
||||
ui.guanduInfo=ui.create.div(ui.gameinfo);
|
||||
}
|
||||
ui.guanduInfo.innerHTML='当前事件:'+get.translation(evt);
|
||||
ui.guanduInfo=ui.create.div('.touchinfo.left',ui.window);
|
||||
}
|
||||
else{
|
||||
ui.guanduInfo=ui.create.div(ui.gameinfo);
|
||||
}
|
||||
ui.guanduInfo.innerHTML='当前事件:'+get.translation(evt);
|
||||
},evt);
|
||||
game.me.chooseControl('ok').set('prompt','###本局特殊事件:'+get.translation(evt)+'###'+get.translation(evt+'_info'));
|
||||
'step 1'
|
||||
|
@ -5164,7 +5164,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
"step 0"
|
||||
event.players=game.filterPlayer(function(current){
|
||||
return current.isEnemyOf(player);
|
||||
return current.isEnemyOf(player);
|
||||
});
|
||||
"step 1"
|
||||
if(event.players.length){
|
||||
|
|
Loading…
Reference in New Issue