v1.9.120
|
@ -520,7 +520,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
ai:{
|
||||
canLink:function(player,target,card){
|
||||
if(!target.isLinked()||player.hasSkill('jueqing')||target.hasSkill('gangzhi')||target.hasSkill('gangzhi')) return false;
|
||||
if(!target.isLinked()||player.hasSkill('jueqing')||target.hasSkill('gangzhi')||player.hasSkill('gangzhi')) return false;
|
||||
var es=target.countCards('e');
|
||||
if(!es) return true;
|
||||
if(target.hp>=3&&es>=2){
|
||||
|
|
12
card/sp.js
|
@ -155,7 +155,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
toself:true,
|
||||
judge:function(card){
|
||||
if(get.suit(card)=='spade') return -6;
|
||||
return 0;
|
||||
return 6;
|
||||
},
|
||||
judge2:function(result){
|
||||
if(result.bool==false) return true;
|
||||
return false;
|
||||
},
|
||||
cardPrompt:function(card){
|
||||
var str='出牌阶段,对你使用。你将【浮雷】置入判定区。若判定结果为♠,则目标角色受到X点雷电伤害(X为此牌判定结果为♠的次数)。判定完成后,将此牌移动到下家的判定区里。';
|
||||
|
@ -383,9 +387,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
return (lib.filter.judge(card,player,target)&&player!=target);
|
||||
},
|
||||
judge:function(card){
|
||||
if(get.suit(card)=='club') return 0;
|
||||
if(get.suit(card)=='club') return 1;
|
||||
return -3;
|
||||
},
|
||||
judge2:function(result){
|
||||
if(result.bool==false) return true;
|
||||
return false;
|
||||
},
|
||||
effect:function(){
|
||||
if(result.bool==false){
|
||||
player.addTempSkill('caomu_skill');
|
||||
|
|
|
@ -2642,13 +2642,22 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
event.wuxieresult=player;
|
||||
event.wuxieresult2=result;
|
||||
game.broadcast('cancel',id);
|
||||
if(_status.event.id==id&&_status.event.name=='chooseToUse'&&_status.paused){
|
||||
return (function(){
|
||||
event.resultOL=_status.event.resultOL;
|
||||
if(_status.event.id==id&&_status.event.name=='chooseToUse'&&_status.paused) event.resultOL=_status.event.resultOL;
|
||||
if(_status.event._parent_id==id){
|
||||
ui.click.cancel();
|
||||
if(ui.confirm) ui.confirm.close();
|
||||
});
|
||||
}
|
||||
if(_status.event.id==id){
|
||||
if(_status.event._backup) ui.click.cancel();
|
||||
ui.click.cancel();
|
||||
if(ui.confirm){
|
||||
ui.confirm.close();
|
||||
}
|
||||
if(_status.event.result){
|
||||
_status.event.result.id=id;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
else{
|
||||
if(_status.event.id==id&&_status.event.name=='chooseToUse'&&_status.paused){
|
||||
|
@ -2703,6 +2712,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
game.players[i].hideTimer();
|
||||
}
|
||||
'step 8'
|
||||
if(event.wuxieresult2._sendskill) lib.skill[event.wuxieresult2._sendskill[0]]=event.wuxieresult2._sendskill[1];
|
||||
if(event.wuxieresult&&event.wuxieresult2&&event.wuxieresult2.skill){
|
||||
var info=get.info(event.wuxieresult2.skill);
|
||||
if(info&&info.precontent&&!game.online){
|
||||
|
|
|
@ -7,13 +7,582 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
character:{
|
||||
clan_wuxian:['female','shu',3,['clanyirong','clanguixiang','clanmuyin'],['clan:陈留吴氏']],
|
||||
clan_wuban:['male','shu',4,['clanzhanding','clanmuyin'],['clan:陈留吴氏']],
|
||||
clan_xunshu:['male','qun',3,['clanshenjun','clanbalong','clandaojie'],['clan:颍川荀氏']],
|
||||
clan_xunchen:['male','qun',3,['clansankuang','clanbeishi','clandaojie'],['clan:颍川荀氏']],
|
||||
clan_xuncai:['female','qun',3,['clanlieshi','clandianzhan','clanhuanyin','clandaojie'],['clan:颍川荀氏']],
|
||||
clan_xuncan:['male','wei',3,['clanyunshen','clanshangshen','clanfenchai','clandaojie'],['clan:颍川荀氏']],
|
||||
},
|
||||
characterSort:{
|
||||
clan:{
|
||||
clan_wu:['clan_wuxian','clan_wuban'],
|
||||
clan_xun:['clan_xunshu','clan_xunchen','clan_xuncai','clan_xuncan']
|
||||
},
|
||||
},
|
||||
skill:{
|
||||
//族荀谌
|
||||
clansankuang:{
|
||||
audio:2,
|
||||
trigger:{player:'useCardAfter'},
|
||||
direct:true,
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
var card=event.card,type=get.type2(card);
|
||||
for(var i=player.actionHistory.length-1; i>=0; i--){
|
||||
var history=player.actionHistory[i].useCard;
|
||||
for(var evt of history){
|
||||
if(evt==event) continue;
|
||||
if(get.type2(evt.card)==type) return false;
|
||||
}
|
||||
if(player.actionHistory[i].isRound) break;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
getNum:function(player){
|
||||
return (player.countCards('ej')>0)+(player.isDamaged())+(Math.max(0,player.hp)<player.countCards('h'));
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget('三恇:选择一名其他角色','令其交给你至少X张牌,然后其获得'+get.translation(trigger.cards.filterInD('ejod'))+'(X为以下条件中其满足的项数:场上有牌、已受伤、体力值小于手牌数)',true,lib.filter.notMe).set('ai',target=>{
|
||||
var att=get.attitude(player,target);
|
||||
if(_status.event.goon) return -att;
|
||||
return -Math.sqrt(Math.abs(att))-lib.skill.clansankuang.getNum(target);
|
||||
}).set('goon',Math.max.apply(Math,trigger.cards.map(i=>get.value(i)))<=5||trigger.cards.filterInD('ejod').length==0)
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0],num=lib.skill.clansankuang.getNum(target),num2=target.countCards('he');
|
||||
event.target=target;
|
||||
player.logSkill('clansankuang',target);
|
||||
if(num2==0) event._result={bool:false};
|
||||
else if(num2<=num) event._result={bool:true,cards:target.getCards('he')};
|
||||
target.chooseCard('he',true,[num,Infinity]).set('ai',get.unuseful);
|
||||
}else event.finish();
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
var cards=result.cards;
|
||||
target.give(cards,player);
|
||||
game.delayx();
|
||||
}
|
||||
'step 3'
|
||||
if(trigger.cards.filterInD('ej').length) target.gain(trigger.cards.filterInD('ej'),player,'giveAuto','bySelf');
|
||||
else if(trigger.cards.filterInD('od').length) target.gain(trigger.cards.filterInD('od'),'gain2','bySelf');
|
||||
},
|
||||
ai:{
|
||||
reverseOrder:true,
|
||||
skillTagFilter:function(player){
|
||||
if(player.getHistory('useCard',evt=>get.type(evt.card)=='equip').length>0) return false;
|
||||
},
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
if(player==target&&get.type(card)=='equip'&&!player.getHistory('useCard',evt=>get.type(evt.card)=='equip').length==0) return [1,3];
|
||||
},
|
||||
},
|
||||
threaten:1.6,
|
||||
},
|
||||
},
|
||||
clanbeishi:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
global:['loseAfter','equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
var history=player.getAllHistory('useSkill',evt=>evt.skill=='clansankuang');
|
||||
if(!history.length) return false;
|
||||
var target=history[0].targets[0];
|
||||
if(target.countCards('h')) return false;
|
||||
var evt=event.getl(target);
|
||||
return evt&&evt.hs&&evt.hs.length;
|
||||
},
|
||||
content:function(){
|
||||
player.recover();
|
||||
}
|
||||
},
|
||||
//族荀淑
|
||||
clanshenjun:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
global:'useCard',
|
||||
},
|
||||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
return (event.card.name=='sha'||get.type(event.card)=='trick')&&player.countCards('h',event.card.name)>0;
|
||||
},
|
||||
content:function(){
|
||||
var cards=player.getCards('h',trigger.card.name);
|
||||
player.showCards(cards,get.translation(player)+'发动了【神君】');
|
||||
player.addGaintag(cards,'clanshenjun');
|
||||
for(var name of lib.phaseName){
|
||||
var evt=_status.event.getParent(name);
|
||||
if(!evt||evt.name!=name) continue;
|
||||
player.addTempSkill('clanshenjun_viewAs',name+'After');
|
||||
break;
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
viewAs:{
|
||||
trigger:{player:['phaseZhunbeiEnd','phaseJudgeEnd','phaseDrawEnd','phaseUseEnd','phaseDiscardEnd','phaseJieshuEnd']},
|
||||
filter:function(event,player){
|
||||
return player.countCards('h',card=>card.hasGaintag('clanshenjun'))>0;
|
||||
},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var cards=player.getCards('h',card=>card.hasGaintag('clanshenjun'));
|
||||
var list=[],names=[];
|
||||
for(var card of cards){
|
||||
var name=get.name(card),nature=get.nature(card);
|
||||
var namex=name+(nature?nature:'');
|
||||
if(names.contains(namex)) continue;
|
||||
if(nature) list.push([get.type(card),'',name,nature]);
|
||||
else list.push([get.type(card),'',name]);
|
||||
names.push(namex);
|
||||
}
|
||||
list.sort((a,b)=>{
|
||||
return 100*(lib.inpile.indexOf(a[2])-lib.inpile.indexOf(b[2]))+lib.inpile_nature.indexOf(a[3])-lib.inpile_nature.indexOf(b[3]);
|
||||
})
|
||||
player.chooseButton(['是否将'+get.cnNumber(cards.length)+'张牌当下列一张牌使用?',[list,'vcard']]).set('ai',function(button){
|
||||
return _status.event.player.getUseValue({name:button.link[2],nature:button.link[3]});
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var name=result.links[0][2],nature=result.links[0][3];
|
||||
debugger;
|
||||
var cards=player.getCards('h',card=>card.hasGaintag('clanshenjun'));
|
||||
game.broadcastAll(function(num,card){
|
||||
lib.skill.clanshenjun_backup.selectCard=num;
|
||||
lib.skill.clanshenjun_backup.viewAs=card;
|
||||
},cards.length,{name:name,nature:nature});
|
||||
var next=player.chooseToUse();
|
||||
next.set('openskilldialog','将'+get.cnNumber(cards.length)+'张牌当做'+(nature?get.translation(nature):'')+'【'+get.translation(name)+'】使用');
|
||||
next.set('norestore',true);
|
||||
next.set('addCount',false);
|
||||
next.set('_backupevent','clanshenjun_backup');
|
||||
next.set('custom',{
|
||||
add:{},
|
||||
replace:{window:function(){}}
|
||||
});
|
||||
next.backup('clanshenjun_backup');
|
||||
}
|
||||
}
|
||||
},
|
||||
backup:{
|
||||
filterCard:function(card){
|
||||
return get.itemtype(card)=='card';
|
||||
},
|
||||
position:'hes',
|
||||
filterTarget:lib.filter.targetEnabled,
|
||||
check:(card)=>6-get.value(card),
|
||||
log:false,
|
||||
precontent:function(){
|
||||
delete event.result.skill;
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
clanbalong:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
player:['damageEnd','recoverEnd','loseHpEnd'],
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(game.getGlobalHistory('changeHp',evt=>evt.player==player&&evt.getParent()==event).length!=1) return false;
|
||||
var cards=player.getCards('h'),map={};
|
||||
if(!cards.length) return false;
|
||||
for(var card of cards){
|
||||
var type=get.type2(card);
|
||||
if(typeof map[type]!='number') map[type]=0;
|
||||
map[type]++;
|
||||
}
|
||||
var list=[];
|
||||
for(var i in map){
|
||||
if(map[i]>0) list.push([i,map[i]]);
|
||||
}
|
||||
list.sort((a,b)=>b[1]-a[1]);
|
||||
return list[0][0]=='trick'&&(list.length==1||list[0][1]>list[1][1]);
|
||||
},
|
||||
content:function(){
|
||||
player.showHandcards(get.translation(player)+'发动了【八龙】');
|
||||
player.drawTo(game.countPlayer());
|
||||
}
|
||||
},
|
||||
//族荀粲
|
||||
clanyunshen:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filterTarget:function(card,player,target){
|
||||
return player!=target&&target.isDamaged();
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
target.recover();
|
||||
'step 1'
|
||||
var name=get.translation(target);
|
||||
player.chooseControl().set('choiceList',[name+'视为对你使用一张冰【杀】','你视为对'+name+'使用一张冰【杀】']).set('prompt','熨身:请选择一项').set('ai',()=>_status.event.choice).set('choice',function(){
|
||||
var card={name:'sha',nature:'ice',isCard:true};
|
||||
var eff=get.effect(player,card,target,player),eff2=get.effect(target,card,player,player);
|
||||
if(eff>eff2) return '选项一';
|
||||
else return '选项二';
|
||||
}());
|
||||
'step 2'
|
||||
var players=[target,player];
|
||||
if(result.control=='选项二') players.reverse();
|
||||
players[0].useCard({name:'sha',nature:'ice',isCard:true},players[1],false,'noai');
|
||||
},
|
||||
ai:{
|
||||
order:2,
|
||||
expose:0.2,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
var eff=get.recoverEffect(target,player,player);
|
||||
if(eff>0) return 1;
|
||||
else if(get.effect(target,{name:'sha',nature:'ice',isCard:true},player,player)>eff) return -1;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
clanshangshen:{
|
||||
audio:2,
|
||||
trigger:{global:'damageEnd'},
|
||||
filter:function(event,player){
|
||||
if(!event.nature) return false;
|
||||
return game.countPlayer2(current=>{
|
||||
return current.hasHistory('damage',evt=>{
|
||||
return evt.nature&&evt!=event;
|
||||
});
|
||||
})==0;
|
||||
},
|
||||
logTarget:'player',
|
||||
check:function(event,player){
|
||||
if(get.attitude(player,event.player)<=2) return false;
|
||||
if(event.player.countCards('h')>=4) return false;
|
||||
return true;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.judgestr=get.translation('shandian');
|
||||
player.judge(lib.card.shandian.judge,event.judgestr).judge2=lib.card.shandian.judge2;
|
||||
game.delayx(1.5);
|
||||
'step 1'
|
||||
trigger.player.drawTo(4);
|
||||
},
|
||||
ai:{expose:0.25}
|
||||
},
|
||||
clanfenchai:{
|
||||
audio:2,
|
||||
init:function(player){
|
||||
if(player.getStorage('clanfenchai').length>0) return;
|
||||
var history=player.getHistory('useSkill',evt=>{
|
||||
if(evt.type!='player') return false;
|
||||
var skill=evt.sourceSkill||evt.skill,targets=evt.targets;
|
||||
var info=get.info(skill);
|
||||
if(!info||info.charlotte) return false;
|
||||
if(targets&&targets.length){
|
||||
if(targets.filter(i=>player.differentSexFrom(i)).length>0) return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
if(history.length){
|
||||
var evt=history[0],targets=evt.targets;
|
||||
player.markAuto('clanfenchai',targets.filter(i=>player.differentSexFrom(i)));
|
||||
}
|
||||
},
|
||||
trigger:{
|
||||
player:['logSkill','useSkillAfter'],
|
||||
},
|
||||
forced:true,
|
||||
silent:true,
|
||||
onremove:true,
|
||||
marktext:'钗',
|
||||
intro:{
|
||||
content:(storage,player)=>'对象:'+get.translation(storage),
|
||||
},
|
||||
group:'clanfenchai_audio',
|
||||
filter:function(event,player){
|
||||
if(event.type!='player') return false;
|
||||
var targets=event.targets;
|
||||
if(!targets||!targets.length) return false;
|
||||
var info=get.info(event.sourceSkill||event.skill);
|
||||
if(!info||info.charlotte) return false;
|
||||
if(player.getStorage('clanfenchai').length!=0) return false;
|
||||
return targets.filter(i=>player.differentSexFrom(i)).length>0;
|
||||
},
|
||||
content:function(){
|
||||
player.markAuto('clanfenchai',trigger.targets.filter(i=>player.differentSexFrom(i)));
|
||||
},
|
||||
subSkill:{
|
||||
audio:{
|
||||
audio:'clanfenchai',
|
||||
forced:true,
|
||||
trigger:{player:'judge'},
|
||||
content:function(){}
|
||||
}
|
||||
},
|
||||
mod:{
|
||||
suit:function(card,suit){
|
||||
var player=get.owner(card)||_status.event.player;
|
||||
if(!player||!player.judging||player.judging[0]!=card) return;
|
||||
return player.getStorage('clanfenchai').filter(i=>i.isIn()).length>0?'heart':'spade';
|
||||
}
|
||||
}
|
||||
},
|
||||
//族荀采
|
||||
clanlieshi:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
filter:function(event,player){
|
||||
return !player.storage._disableJudge||player.countCards('h',card=>['sha','shan'].contains(get.name(card)))>0;
|
||||
},
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
var dialog=ui.create.dialog('烈誓:选择一项','hidden');
|
||||
dialog.add([lib.skill.clanlieshi.choices.slice(),'textbutton']);
|
||||
return dialog;
|
||||
},
|
||||
filter:function(button,player){
|
||||
var link=button.link;
|
||||
if(link=='damage') return !player.storage._disableJudge;
|
||||
var num=player.countCards('h',link);
|
||||
return num>0&&num==player.getDiscardableCards(player,'h').filter(i=>get.name(i)==link).length;
|
||||
},
|
||||
check:function(button){
|
||||
var player=_status.event.player;
|
||||
switch (button.link){
|
||||
case 'damage':
|
||||
if(get.damageEffect(player,player,player,'fire')>=0) return 10;
|
||||
if(player.hp>=Math.max(2,3-player.getFriends().length)&&game.countPlayer(current=>get.attitude(player,current)<0&¤t.countCards('h',card=>['sha','shan'].contains(get.name(card))))) return 0.8+Math.random();
|
||||
return 0;
|
||||
case 'shan':
|
||||
if(player.countCards('h','shan')==1) return 8+Math.random();
|
||||
return 1+Math.random();
|
||||
case 'sha':
|
||||
if(player.countCards('h','sha')==1) return 8+Math.random();
|
||||
return 0.9+Math.random();
|
||||
}
|
||||
},
|
||||
backup:function(links){
|
||||
var next=get.copy(lib.skill['clanlieshi_backupx']);
|
||||
next.choice=links[0];
|
||||
return next;
|
||||
},
|
||||
prompt:function(links){
|
||||
if(links[0]=='damage') return '废除判定区并受到1点火焰伤害';
|
||||
return '弃置所有【'+get.translation(links[0])+'】';
|
||||
},
|
||||
},
|
||||
choices:[
|
||||
['damage','废除判定区并受到1点火焰伤害'],
|
||||
['shan','弃置所有【闪】'],
|
||||
['sha','弃置所有【杀】'],
|
||||
],
|
||||
ai:{
|
||||
order:function(item,player){
|
||||
if(!player) return;
|
||||
var eff=get.damageEffect(player,player,player,'fire'),disabled=!player.storage._disableJudge;
|
||||
if((player.countCards('h','sha')==1||player.countCards('h','shan')==1)&&eff<0&&!disabled) return 8;
|
||||
else if(eff>=0&&!disabled) return 5.8;
|
||||
if(!disabled&&!player.countCards('h',card=>['sha','shan'].contains(get.name(card)))){
|
||||
if((!player.hasSkill('clanhuanyin')||!player.canSave(player))&&player.hp<=1) return 0;
|
||||
if(player.canSave(player)&&player.hp==1&&player.countCards('h')<=1) return 2.6;
|
||||
if(player.hp<Math.max(2,3-player.getFriends().length)||!game.countPlayer(current=>get.attitude(player,current)<0&¤t.countCards('h',card=>['sha','shan'].contains(get.name(card))))) return 0;
|
||||
}
|
||||
return 2.5;
|
||||
},
|
||||
expose:0.2,
|
||||
result:{player:1},
|
||||
},
|
||||
subSkill:{
|
||||
backup:{},
|
||||
backupx:{
|
||||
audio:'clanlieshi',
|
||||
selectCard:-1,
|
||||
selectTarget:-1,
|
||||
filterCard:()=>false,
|
||||
filterTarget:()=>false,
|
||||
multitarget:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var choice=lib.skill.clanlieshi_backup.choice;
|
||||
event.choice=choice;
|
||||
if(choice=='damage'){
|
||||
player.damage('fire');
|
||||
if(!player.storage._disableJudge) player.disableJudge();
|
||||
}else{
|
||||
var cards=player.getCards('h',choice);
|
||||
if(cards.length) player.discard(cards);
|
||||
}
|
||||
'step 1'
|
||||
if(!player.isIn()) event.finish();
|
||||
else player.chooseTarget('烈誓:令一名其他角色选择另一项',lib.filter.notMe,true).set('ai',target=>{
|
||||
var player=_status.event.player,chosen=_status.event.getParent().choice,att=get.attitude(player,target);
|
||||
if(chosen=='damage'){
|
||||
if(att>0) return 0;
|
||||
return -att/2+target.countCards('h',card=>['sha','shan'].contains(get.name(card)));
|
||||
}
|
||||
return get.damageEffect(target,player,player,'fire');
|
||||
});
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
player.line(target,'fire');
|
||||
var list=[],choice=event.choice;
|
||||
var choiceList=lib.skill.clanlieshi.choices.slice();
|
||||
choiceList=choiceList.map((link,ind,arr)=>{
|
||||
link=link[1];
|
||||
var ok=true;
|
||||
if(arr[ind][0]==choice){
|
||||
link+='('+get.translation(player)+'已选)';
|
||||
ok=false;
|
||||
}
|
||||
if(ind==0){
|
||||
if(target.storage._disableJudge) ok=false;
|
||||
}
|
||||
else if(ind>0){
|
||||
var name=ind==1?'shan':'sha';
|
||||
if(!target.countCards('h',name)) ok=false;
|
||||
}
|
||||
if(!ok) link='<span style="opacity:0.5">'+link+'</span>';
|
||||
else list.push('选项'+get.cnNumber(ind+1,true));
|
||||
return link;
|
||||
});
|
||||
if(!list.length){event.finish(); return;}
|
||||
target.chooseControl(list).set('choiceList',choiceList).set('ai',()=>{
|
||||
var controls=_status.event.controls.slice(),player=_status.event.player,user=_status.event.getParent().player;
|
||||
if(controls.length==1) return controls[0];
|
||||
if(controls.contains('选项一')&&get.damageEffect(player,user,player,'fire')>=0) return '选项一';
|
||||
if(controls.contains('选项一')&&player.hp<=2&&player.countCards('h',card=>['sha','shan'].contains(get.name(card)))<=3) controls.remove('选项一');
|
||||
if(controls.length==1) return controls[0];
|
||||
if(player.getCards('h','sha').reduce((p,c)=>p+get.value(c,player),0)>player.getCards('h','sha').reduce((p,c)=>p+get.value(c,player),0)){
|
||||
if(controls.contains('选项三')) return '选项三';
|
||||
}
|
||||
else if(controls.contains('选项二')) return '选项二';
|
||||
return controls.randomGet();
|
||||
});
|
||||
} else event.finish();
|
||||
'step 3'
|
||||
if(result.control=='选项一'){
|
||||
if(!target.storage._disableJudge) target.disableJudge();
|
||||
target.damage('fire');
|
||||
}else{
|
||||
var cards=target.getCards('h',result.control=='选项二'?'shan':'sha');
|
||||
if(cards.length) target.discard(cards);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
clandianzhan:{
|
||||
audio:2,
|
||||
trigger:{player:'useCardAfter'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(!lib.suit.contains(get.suit(event.card))) return false;
|
||||
var card=event.card,suit=get.suit(card);
|
||||
for(var i=player.actionHistory.length-1; i>=0; i--){
|
||||
var history=player.actionHistory[i].useCard;
|
||||
for(var evt of history){
|
||||
if(evt==event) continue;
|
||||
if(get.suit(evt.card)==suit) return false;
|
||||
}
|
||||
if(player.actionHistory[i].isRound) break;
|
||||
}
|
||||
return event.targets&&event.targets.length==1&&!event.targets[0].isLinked()||
|
||||
player.getCards('h',card=>get.suit(card)==get.suit(event.card)).filter(card=>{
|
||||
var mod=game.checkMod(card,player,'unchanged','cardChongzhuable',player);
|
||||
if(mod!='unchanged') return true;
|
||||
return false;
|
||||
}).length==0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(trigger.targets&&trigger.targets.length==1){
|
||||
trigger.targets[0].link(true);
|
||||
}
|
||||
var cards=player.getCards('h',card=>get.suit(card)==get.suit(trigger.card));
|
||||
if(cards.filter(card=>{
|
||||
var mod=game.checkMod(card,player,'unchanged','cardChongzhuable',player);
|
||||
if(mod!='unchanged') return false;
|
||||
return true;
|
||||
}).length==0){
|
||||
player.loseToDiscardpile(cards);
|
||||
player.draw(cards.length);
|
||||
}
|
||||
'step 1'
|
||||
player.draw();
|
||||
}
|
||||
},
|
||||
clanhuanyin:{
|
||||
audio:2,
|
||||
trigger:{player:'dying'},
|
||||
forced:true,
|
||||
check:()=>true,
|
||||
filter:function(event){
|
||||
return event.player.countCards('h')<4;
|
||||
},
|
||||
content:function(){
|
||||
player.drawTo(4);
|
||||
}
|
||||
},
|
||||
clandaojie:{
|
||||
audio:2,
|
||||
audioname:['clan_xunshu','clan_xunchen','clan_xuncai','clan_xuncan'],
|
||||
trigger:{player:'useCardAfter'},
|
||||
filter:function(event,player){
|
||||
return player.getHistory('useCard',evt=>{
|
||||
return get.type(evt.card)=='trick'&&!get.tag(evt.card,'damage');
|
||||
}).indexOf(event)==0;
|
||||
},
|
||||
forced:true,
|
||||
clanSkill:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var skills=player.getSkills(null,false,false).filter(skill=>{
|
||||
var info=get.info(skill);
|
||||
if(!info||info.charlotte||!get.is.locked(skill)||get.skillInfoTranslation(skill,player).length==0) return false;
|
||||
return true;
|
||||
});
|
||||
player.chooseControl(skills,'cancel2').set('choiceList',skills.map(i=>{
|
||||
return '<div class="skill">【'+get.translation(lib.translate[i+'_ab']||get.translation(i).slice(0,2))+'】</div><div>'+get.skillInfoTranslation(i,player)+'</div>';
|
||||
})).set('displayIndex',false).set('prompt','蹈节:失去一个锁定技,或点“取消”失去1点体力').set('ai',()=>{
|
||||
var player=_status.event.player,choices=_status.event.controls.slice();
|
||||
var negs=choices.filter(i=>{
|
||||
var info=get.info(i);
|
||||
if(!info||!info.ai) return false;
|
||||
return info.ai.neg||info.ai.halfneg;
|
||||
});
|
||||
if(negs.length) return negs.randomGet();
|
||||
if(get.effect(player,{name:'losehp'},player,player)>=0) return 'cancel2';
|
||||
if(player.hp>3) return 'cancel2';
|
||||
return Math.random()<0.75?'clandaojie':choices.randomGet();
|
||||
});
|
||||
'step 1'
|
||||
if(result.control!='cancel2'){
|
||||
player.removeSkill(result.control);
|
||||
player.popup(result.control);
|
||||
game.log(player,'失去了技能','#g【'+get.translation(result.control)+'】');
|
||||
}
|
||||
else{
|
||||
player.loseHp();
|
||||
}
|
||||
'step 2'
|
||||
var targets=game.filterPlayer(current=>current==player||current.hasClan('颍川荀氏'));
|
||||
if(targets.length==1) event._result={bool:true,targets:targets};
|
||||
else player.chooseTarget('蹈节:将'+get.translation(trigger.cards.filterInD())+'交给一名颍川荀氏角色',true,(card,player,target)=>{
|
||||
return target==player||target.hasClan('颍川荀氏')
|
||||
}).set('ai',target=>get.attitude(_status.event.player,target));
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.line(target,'green');
|
||||
target.gain(trigger.cards.filterInD(),player,'gain2');
|
||||
}
|
||||
},
|
||||
},
|
||||
//族吴班
|
||||
clanzhanding:{
|
||||
audio:2,
|
||||
|
@ -181,6 +750,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
clanmuyin:{
|
||||
audio:2,
|
||||
clanSkill:true,
|
||||
audioname:['clan_wuxian','clan_wuban'],
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
isMax:function(player){
|
||||
|
@ -245,6 +815,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
characterReplace:{
|
||||
wuban:['clan_wuban','wuban'],
|
||||
},
|
||||
characterIntro:{
|
||||
xunshu:'荀淑(83年~149年),字季和,为郎陵侯相,颍川颍阴人(今河南省许昌市)人。汉和帝至汉桓帝时人物,以品行高洁著称。有子八人,号八龙。年轻时有高尚的德行,学问渊博,不喜欢雕章琢句,徒在文字上用功,不注重实际的学识。因此,常常被俗儒看不起。但州里却称他有知人之明。安帝时,征召任为郎中,后来再升当涂长。离职还乡里。他的孙子荀彧是曹操部下著名的谋士。',
|
||||
xuncai:'荀采(生卒年不详),字女荀,颍川人,东汉名士荀爽之女。荀采聪慧敏捷而有才艺。十七岁时,荀采嫁给阴瑜。两年后阴瑜去世。荀采不愿意改嫁,但荀爽答应把荀采嫁给同郡人郭奕。荀采趁着旁人没有防备,用粉在门上写下:“尸还阴”,而后自缢而死。',
|
||||
xuncan:'荀粲(210年—238年),字奉倩,颍川郡颍阴县(今河南省许昌市)人。三国时期曹魏大臣、玄学家,太尉荀彧幼子。个性简贵,不轻易交接常人,所交之辈皆一时俊杰。聪颖过人,善谈玄理,名噪一时。娶大将军曹洪之女为妻,生活美满。景初二年,面对妻子去世,悲痛过度而死,时年二十九,成语“荀令伤神”与之有关。',
|
||||
},
|
||||
translate:{
|
||||
clan_wuxian:'族吴苋',
|
||||
clanyirong:'移荣',
|
||||
|
@ -257,8 +832,35 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
clan_wuban:'族吴班',
|
||||
clanzhanding:'斩钉',
|
||||
clanzhanding_info:'你可以将任意张牌当做【杀】使用。你以此法使用的【杀】结算结束后,你令你的手牌上限-1,然后若你因此【杀】造成过伤害,则你将手牌摸至手牌上限(至多摸五张),否则你令此【杀】不计入次数限制。',
|
||||
clan_xunshu:'族荀淑',
|
||||
clanshenjun:'神君',
|
||||
clanshenjun_info:'当一名角色使用【杀】或普通锦囊牌时,若你手牌中有该牌名的牌,你展示之,且这些牌称为“神君”。然后本阶段结束时,你可以将等同于你“神君”数张牌当做一张“神君”牌使用。',
|
||||
clanbalong:'八龙',
|
||||
clanbalong_info:'锁定技。当你回复体力后或受到伤害后或失去体力后,若你手牌中唯一最多的类别为锦囊牌,你展示所有手牌并摸至角色数张。',
|
||||
clandaojie:'蹈节',
|
||||
clandaojie_info:'宗族技,锁定技。当你每回合第一次使用非伤害类普通锦囊牌后,你须失去一个锁定技或失去1点体力,令一名颍川荀氏角色获得此牌对应的所有实体牌。',
|
||||
clan_xuncai:'族荀采',
|
||||
clanlieshi:'烈誓',
|
||||
clanlieshi_info:'出牌阶段,你可以选择一项:1.废除判定区并受到你造成的1点火焰伤害;2.弃置所有【闪】;3.弃置所有【杀】。然后令一名其他角色从你未选择的选项中选择一项。',
|
||||
clandianzhan:'点盏',
|
||||
clandianzhan_info:'锁定技。当你每轮第一次使用一种花色的牌后:若此牌的目标数为1,你横置此牌目标;若你有此花色的手牌,你重铸这些牌。然后你摸一张牌。',
|
||||
clanhuanyin:'还阴',
|
||||
clanhuanyin_info:'锁定技。当你进入濒死状态时,将手牌补至四张。',
|
||||
clan_xunchen:'族荀谌',
|
||||
clansankuang:'三恇',
|
||||
clansankuang_info:'锁定技。当你每轮第一次使用一种类别的牌后,你令一名其他角色交给你至少X张牌,然后于场上或弃牌堆内或处理区内获得你使用的牌对应的所有实体牌(X为以下条件中其满足的项数:场上有牌、已受伤、体力值小于手牌数)。',
|
||||
clanbeishi:'卑势',
|
||||
clanbeishi_info:'锁定技。当一名角色失去最后的手牌后,若其是你首次发动〖三恇〗的目标角色,你回复1点体力。',
|
||||
clan_xuncan:'族荀粲',
|
||||
clanyunshen:'熨身',
|
||||
clanyunshen_info:'出牌阶段限一次。你可以令一名其他角色回复1点体力,然后选择一项:1.你视为对其使用一张冰【杀】;2.其视为对你使用一张冰【杀】。',
|
||||
clanshangshen:'伤神',
|
||||
clanshangshen_info:'当一名角色受到属性伤害后,若本回合此前没有角色或已死亡的角色受到过属性伤害,你可以进行目标角色为你的【闪电】的特殊的使用流程,然后其将手牌摸至四张。',
|
||||
clanfenchai:'分钗',
|
||||
clanfenchai_info:'锁定技。若你首次发动技能指定的目标角色中:存在存活角色,你的判定牌视为♥;不存在存活角色,你的判定牌视为♠。',
|
||||
|
||||
clan_wu:'陈留·吴氏',
|
||||
clan_xun:'颍川·荀氏',
|
||||
},
|
||||
};
|
||||
});
|
||||
|
|
149
character/diy.js
|
@ -87,7 +87,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
key_kyou:['female','key',3,['kyou_zhidian','kyou_duanfa']],
|
||||
key_seira:['female','key',3,['seira_xinghui','seira_yuanying']],
|
||||
key_kiyu:['female','key',3,['kiyu_yuling','kiyu_xianyu']],
|
||||
//key_tomoyo:['female','key',4,['tomoyo_wuwei','tomoyo_yingshou']],
|
||||
key_tomoyo:['female','key',4,['tomoyo_wuwei','tomoyo_zhengfeng']],
|
||||
|
||||
ns_huangchengyan:['male','shu',3,['nslongyue','nszhenyin']],
|
||||
ns_sunchensunjun:['male','wu',5,['nsxianhai','nsxingchu']],
|
||||
|
@ -205,7 +205,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"ns_huangchengyan","ns_sunchensunjun","ns_yuanxi","ns_caoshuang"],
|
||||
diy_yijiang2:["key_yuuki","key_tenzen","key_kyouko","key_kotarou","key_kyou",
|
||||
"ns_chentai","ns_huangwudie","ns_sunyi","ns_zhangning","ns_yanghu"],
|
||||
diy_yijiang3:['ns_ruanji','ns_zanghong','ns_limi','ns_zhonglimu','prp_zhugeliang','key_seira','key_kiyu'],
|
||||
diy_yijiang3:['ns_ruanji','ns_zanghong','ns_limi','ns_zhonglimu','prp_zhugeliang','key_seira','key_kiyu','key_tomoyo'],
|
||||
diy_tieba:["ns_zuoci","ns_lvzhi","ns_wangyun","ns_nanhua","ns_nanhua_left","ns_nanhua_right","ns_huamulan","ns_huangzu","ns_jinke","ns_yanliang","ns_wenchou","ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","ns_duangui","ns_zhangbao","ns_masu","ns_zhangxiu","ns_lvmeng","ns_shenpei","ns_yujisp","ns_yangyi","ns_liuzhang","ns_xinnanhua","ns_luyusheng"],
|
||||
diy_fakenews:["diy_wenyang","ns_zhangwei","ns_caimao","ns_chengpu"],
|
||||
diy_xushi:["diy_feishi","diy_hanlong","diy_liufu","diy_liuyan","diy_liuzan","diy_tianyu","diy_xizhenxihong","diy_yangyi","diy_zaozhirenjun"],
|
||||
|
@ -547,6 +547,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var storage=player.getStorage('tomoyo_wuwei_mark');
|
||||
return !storage.contains(get.suit(card));
|
||||
},
|
||||
check:function(card){
|
||||
return 5-get.value(card);
|
||||
},
|
||||
onuse:function(result,player){
|
||||
player.markAuto('tomoyo_wuwei_mark',[get.suit(result.card,false)]);
|
||||
player.addTempSkill('tomoyo_wuwei_mark');
|
||||
|
@ -565,10 +568,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{global:'useCardAfter'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.inRangeOf(event.player)&&player.canUse('sha',event.player,false);
|
||||
return event.card.name=='shan'&&player.inRangeOf(event.player)&&player.canUse('sha',event.player,false);
|
||||
},
|
||||
content:function(){
|
||||
player.chooseToUse(get.prompt('tomoyo_wuwei',trigger.target),'对该角色使用一张【杀】',function(card,player,event){
|
||||
player.chooseToUse('武威:是否对'+get.translation(trigger.player)+'使用一张【杀】?',function(card,player,event){
|
||||
if(get.name(card)!='sha') return false;
|
||||
return lib.filter.filterCard.apply(this,arguments);
|
||||
},trigger.player,-1).set('addCount',false).logSkill='tomoyo_wuwei_combo';
|
||||
|
@ -576,8 +579,136 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
},
|
||||
tomoyo_yingshou:{},
|
||||
tomoyo_changshi:{},
|
||||
tomoyo_zhengfeng:{
|
||||
dutySkill:true,
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return game.hasPlayer((current)=>player.inRange(current));
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('tomoyo_zhengfeng'),'令一名攻击范围内的角色进行判定。其于你的下回合开始前使用与判定结果颜色相同的牌时,你摸一张牌。',function(card,player,target){
|
||||
return player.inRange(target);
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
if(player.hp<=1&&!player.countCards('h')) return 0;
|
||||
var hs=target.countCards('h'),thr=get.threaten(target);
|
||||
if(target.hasJudge('lebu')) return 0;
|
||||
return Math.sqrt(1+hs)*Math.sqrt(Math.max(1,1+thr));
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
player.logSkill('tomoyo_zhengfeng',target);
|
||||
target.judge();
|
||||
}
|
||||
'step 2'
|
||||
player.addTempSkill('tomoyo_zhengfeng_tomoyo',{player:'phaseBeginStart'});
|
||||
player.markAuto('tomoyo_zhengfeng_tomoyo',[{
|
||||
target:target,
|
||||
color:result.color,
|
||||
}]);
|
||||
},
|
||||
group:'tomoyo_zhengfeng_after',
|
||||
subSkill:{
|
||||
tomoyo:{
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
mod:{
|
||||
inRangeOf:function(source,player){
|
||||
var list=player.getStorage('tomoyo_zhengfeng_tomoyo');
|
||||
for(var obj of list){
|
||||
if(obj.target==source) return true;
|
||||
}
|
||||
},
|
||||
},
|
||||
trigger:{global:'useCard'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
var color=get.color(event.card);
|
||||
if(color=='none') return false;
|
||||
var list=player.getStorage('tomoyo_zhengfeng_tomoyo');
|
||||
for(var obj of list){
|
||||
if(obj.target==event.player&&color==obj.color) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
player.draw();
|
||||
},
|
||||
intro:{
|
||||
mark:function(dialog,students,player){
|
||||
if(!students||!students.length) return '全校风纪良好!';
|
||||
var str='';
|
||||
for(var i of students){
|
||||
if(str.length>0) str+='<br>';
|
||||
str+=get.translation(i.target);
|
||||
str+=':';
|
||||
str+=get.translation(i.color);
|
||||
}
|
||||
dialog.addText(str);
|
||||
},
|
||||
},
|
||||
},
|
||||
after:{
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
filter:function(event,player){
|
||||
return !player.hasHistory('useSkill',function(evt){
|
||||
return evt.skill=='tomoyo_zhengfeng';
|
||||
});
|
||||
},
|
||||
prompt:'整风:是否放弃使命?',
|
||||
prompt2:'你可以减1点体力上限并失去〖武威〗,摸两张牌并回复1点体力,然后获得技能〖长誓〗。',
|
||||
skillAnimation:true,
|
||||
animationColor:'gray',
|
||||
check:function(event,player){
|
||||
return (player.hp*1.1+player.countCards('h'))<3;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
game.log(player,'放弃了身为学生会长的使命');
|
||||
player.awakenSkill('tomoyo_zhengfeng');
|
||||
player.loseMaxHp();
|
||||
'step 1'
|
||||
player.removeSkill('tomoyo_wuwei');
|
||||
'step 2'
|
||||
player.draw(2);
|
||||
player.recover();
|
||||
'step 3'
|
||||
player.addSkill('tomoyo_changshi');
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
tomoyo_changshi:{
|
||||
trigger:{
|
||||
global:['gainAfter','loseAsyncAfter'],
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return game.hasPlayer(function(current){
|
||||
return current!=player&&event.getg(current).length>1&&player.inRangeOf(current);
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
player.draw();
|
||||
},
|
||||
group:'tomoyo_changshi_recover',
|
||||
subSkill:{
|
||||
recover:{
|
||||
trigger:{global:'recoverAfter'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.player.isAlive()&&player.inRangeOf(event.player);
|
||||
},
|
||||
content:function(){
|
||||
player.changeHujia(1);
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//天宫希优
|
||||
kiyu_yuling:{
|
||||
mod:{
|
||||
|
@ -17144,10 +17275,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
key_tomoyo:'坂上智代',
|
||||
tomoyo_wuwei:'武威',
|
||||
tomoyo_wuwei_info:'①每回合每种花色限一次。你可以将一张手牌当做【杀】使用或打出。②当有角色使用【闪】后,若你在其攻击范围内,你可以对其使用一张【杀】(无距离限制)。',
|
||||
/*tomoyo_yingshou:'樱守',
|
||||
tomoyo_yingshou_info:'',
|
||||
tomoyo_zhengfeng:'整风',
|
||||
tomoyo_zhengfeng_info:'使命技。①准备阶段,你可以令攻击范围内的一名角色进行判定。若如此做,你获得如下效果直到下回合开始:你视为在该角色的攻击范围内,且当该角色使用与判定牌颜色相同的牌时,你摸一张牌。②失败:结束阶段,若你于本回合内未发动过〖整风①〗,则你可以减1点体力上限。你失去〖武威〗,摸两张牌并回复1点体力,然后获得〖长誓〗。',
|
||||
tomoyo_changshi:'长誓',
|
||||
tomoyo_changshi_info:'',*/
|
||||
tomoyo_changshi_info:'锁定技。一名攻击范围内包含你的角色回复体力后,你获得1点护甲;一名攻击范围内包含你的角色一次性获得至少两张牌后,你摸一张牌。',
|
||||
|
||||
noname:"小无",
|
||||
noname_zhuyuan:"祝愿",
|
||||
|
|
|
@ -13,7 +13,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
extra_yin:['shen_liubei','shen_luxun'],
|
||||
extra_lei:['shen_ganning','shen_zhangliao'],
|
||||
extra_key:['key_kagari','key_shiki','db_key_hina'],
|
||||
extra_decade:['shen_jiangwei','shen_machao','shen_zhangfei'],
|
||||
extra_decade:['shen_jiangwei','shen_machao','shen_zhangfei','shen_zhangjiao'],
|
||||
extra_ol:['ol_zhangliao','shen_caopi','shen_zhenji','shen_sunquan'],
|
||||
extra_mobilezhi:['shen_guojia','shen_xunyu'],
|
||||
extra_mobilexin:['shen_taishici','shen_sunce'],
|
||||
|
@ -22,6 +22,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
character:{
|
||||
shen_zhangjiao:['male','shen',3,['yizhao','sijun','sanshou','tianjie'],['qun']],
|
||||
shen_zhangfei:['male','shen',4,['shencai','xunshi'],['shu']],
|
||||
tw_shen_guanyu:['male','shen',4,['twwushen','twwuhun'],['shu']],
|
||||
shen_machao:['male','shen',4,['shouli','hengwu'],['shu']],
|
||||
|
@ -72,6 +73,148 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
skill:{
|
||||
//神张角
|
||||
yizhao:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
player:['useCard','respond']
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return typeof get.number(event.card)=='number';
|
||||
},
|
||||
marktext:'黄',
|
||||
intro:{
|
||||
name:'黄(异兆/肆军)',
|
||||
name2:'黄',
|
||||
content:'mark',
|
||||
markcount:function(storage,player){
|
||||
return storage.toString().slice(-2);
|
||||
},
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.num=player.countMark('yizhao');
|
||||
player.addMark('yizhao',get.number(trigger.card));
|
||||
'step 1'
|
||||
var num=Math.floor(num/10)%10,num2=Math.floor(player.countMark('yizhao')/10)%10;
|
||||
if(num!=num2){
|
||||
var card=get.cardPile2(card=>{
|
||||
return get.number(card,false)==num2;
|
||||
});
|
||||
if(card) player.gain(card,'gain2');
|
||||
}
|
||||
},
|
||||
mod:{
|
||||
aiOrder:function(player,card,num){
|
||||
if(get.number(card)+player.countMark('yizhao')%10>10) return num+10;
|
||||
},
|
||||
},
|
||||
ai:{
|
||||
threaten:1.5,
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,0.1];
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
sijun:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
filter:function(event,player){
|
||||
return player.countMark('yizhao')>ui.cardPile.childNodes.length;
|
||||
},
|
||||
check:()=>true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.removeMark('yizhao',player.countMark('yizhao'));
|
||||
'step 1'
|
||||
var total=0,cards=[];
|
||||
for(var i=0;i<36;i++){
|
||||
var card=get.cardPile(card=>{
|
||||
if(cards.contains(card)) return false;
|
||||
var num=get.number(card,false);
|
||||
if(total+num>36) return false;
|
||||
return true;
|
||||
});
|
||||
if(card){
|
||||
total+=get.number(card,false);
|
||||
cards.push(card);
|
||||
}
|
||||
if(total==36) break;
|
||||
}
|
||||
if(cards.length) player.gain(cards,'gain2');
|
||||
}
|
||||
},
|
||||
sanshou:{
|
||||
audio:2,
|
||||
trigger:{player:'damageBegin4'},
|
||||
check:function(event,player){
|
||||
return get.damageEffect(player,event.source,event.source,event.nature)<=0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var cards=game.cardsGotoOrdering(get.cards(3)).cards;
|
||||
event.cards=cards;
|
||||
player.showCards(cards,get.translation(player)+'发动了【三首】');
|
||||
'step 1'
|
||||
var types=[];
|
||||
types.addArray(game.getGlobalHistory('useCard').map(evt=>get.type2(evt.card)));
|
||||
if(cards.filter(card=>!types.contains(get.type2(card))).length){
|
||||
trigger.cancel();
|
||||
}
|
||||
game.delayx();
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
if(card.name=='shandian'||card.name=='fulei') return [0,0.1];
|
||||
if(!get.tag(card,'damage')) return;
|
||||
var types=[],bool=0;
|
||||
types.addArray(game.getGlobalHistory('useCard').map(evt=>get.type2(evt.card)));
|
||||
if(!types.contains(get.type2(card))) bool=1;
|
||||
if(types.length<2) return Math.min(1,0.4+(types.length+bool)*0.2);
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
tianjie:{
|
||||
audio:2,
|
||||
trigger:{global:'phaseEnd'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.hasSkill('tianjie_shuffled');
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('tianjie_effect'),'选择至多三名其他角色,依次对这些角色造成X点雷电伤害(X为其手牌中【闪】的数量,至少为1)',[1,3]).set('ai',target=>{
|
||||
var player=_status.event.player;
|
||||
return get.damageEffect(target,player,player,'thunder')*Math.sqrt(Math.max(1,target.countCards('h','shan')));
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var targets=result.targets;
|
||||
player.logSkill('tianjie_effect',targets);
|
||||
for(var target of targets){
|
||||
var num=Math.max(1,target.countCards('h','shan'));
|
||||
target.damage(num,'thunder');
|
||||
}
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
effect:{
|
||||
trigger:{global:'washCard'},
|
||||
forced:true,
|
||||
silent:true,
|
||||
charlotte:true,
|
||||
content:function(){
|
||||
player.addTempSkill('tianjie_shuffled');
|
||||
},
|
||||
},
|
||||
shuffled:{charlotte:true},
|
||||
}
|
||||
},
|
||||
shencai:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
|
@ -6529,6 +6672,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
shencai_info:'①出牌阶段限一次,你可以令一名其他角色进行判定。你获得此判定牌,然后若此判定牌:包含以下要素中的任意一个,则其失去已有的下列效果,并获得对应的效果:{⒈体力:当其受到伤害后,其失去等量的体力、⒉武器:其不能使用牌响应杀、⒊打出:当其失去手牌后,其再随机弃置一张手牌(不嵌套触发)、⒋距离:其的结束阶段开始时,其翻面};若均不包含,你获得其一张牌,其获得一枚“死”并获得如下效果:其的角色手牌上限-X、其的回合结束时,若X大于场上存活人数,则其死亡(X为其“死”标记数)。',
|
||||
xunshi:'巡使',
|
||||
xunshi_info:'锁定技。①你手牌区内所有的多目标锦囊牌均视为花色为none的普【杀】。②你使用颜色为none的牌无距离和次数限制。③当你使用无颜色的牌选择目标后,你令你的〖神裁〗的发动次数上限+1(至多为5),然后可以为此牌增加任意个目标。',
|
||||
shen_zhangjiao:'神张角',
|
||||
yizhao:'异兆',
|
||||
yizhao_info:'锁定技。当你使用或打出牌后,你获得等同于此牌点数枚“黄”标记。然后若“黄”的十位数发生变化,你获得牌堆中一张点数为你“黄”的十位数的牌。',
|
||||
sijun:'肆军',
|
||||
sijun_info:'准备阶段,若“黄”数大于牌堆的牌数,你可以移去所有“黄”,然后随机获得任意张点数之和为36的牌。',
|
||||
sanshou:'三首',
|
||||
sanshou_info:'当你受到伤害时,你可以亮出牌堆顶三张牌。若其中有本回合未被使用过的牌的类型,防止此伤害。',
|
||||
tianjie:'天劫',
|
||||
tianjie_info:'一名角色的回合结束时,若本回合牌堆洗过牌,你可以选择至多三名其他角色。你依次对每名目标角色造成X点雷电伤害(X为其手牌中【闪】的数量,至少为1)。',
|
||||
|
||||
|
||||
extra_feng:'神话再临·风',
|
||||
extra_huo:'神话再临·火',
|
||||
|
|
1221
character/mobile.js
|
@ -1909,9 +1909,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return player.canEquip(card,true);
|
||||
});
|
||||
if(cards.length){
|
||||
player.$give(card,player,false);
|
||||
player.$give(cards[0],player,false);
|
||||
game.delay(0.5);
|
||||
player.equip(card);
|
||||
player.equip(cards[0]);
|
||||
event.redo();
|
||||
}
|
||||
'step 1'
|
||||
|
|
|
@ -41,6 +41,7 @@ window.noname_character_rank={
|
|||
'key_sakuya',
|
||||
'boss_zhaoyun',
|
||||
'noname',
|
||||
'sb_machao',
|
||||
],
|
||||
ap:[
|
||||
'gjqt_aruan',
|
||||
|
@ -104,6 +105,8 @@ window.noname_character_rank={
|
|||
'liuhui',
|
||||
'luyi',
|
||||
'shen_zhangfei',
|
||||
'clan_xuncai',
|
||||
'zhujianping',
|
||||
'key_kamome',
|
||||
'key_yukine',
|
||||
'key_inari',
|
||||
|
@ -278,6 +281,10 @@ window.noname_character_rank={
|
|||
'jin_zhouchu',
|
||||
'huojun',
|
||||
'xiahouxuan',
|
||||
'ol_liuba',
|
||||
'wanglie',
|
||||
'zhaozhi',
|
||||
'shen_zhangjiao',
|
||||
'key_misuzu',
|
||||
'key_sunohara',
|
||||
'key_umi',
|
||||
|
@ -295,6 +302,7 @@ window.noname_character_rank={
|
|||
'key_nao',
|
||||
'key_kotarou',
|
||||
'key_kyou',
|
||||
'key_tomoyo',
|
||||
],
|
||||
am:[
|
||||
'diy_caiwenji',
|
||||
|
@ -538,6 +546,10 @@ window.noname_character_rank={
|
|||
'yinfuren',
|
||||
'dc_zhaoyǎn',
|
||||
'clan_wuxian',
|
||||
'clan_xunchen',
|
||||
'chenjiao',
|
||||
'chengbing',
|
||||
'sb_caosong',
|
||||
],
|
||||
bp:[
|
||||
'chess_diaochan',
|
||||
|
@ -830,8 +842,15 @@ window.noname_character_rank={
|
|||
'dc_huban',
|
||||
'dingshangwan',
|
||||
're_zhuhuan',
|
||||
'xin_zhuhuan',
|
||||
'dc_liuye',
|
||||
'zhugeshang',
|
||||
're_xunyou',
|
||||
'liwan',
|
||||
'ol_furong',
|
||||
'shiyi',
|
||||
'gongsundu',
|
||||
'yuanji',
|
||||
],
|
||||
b:[
|
||||
'diy_feishi',
|
||||
|
@ -883,6 +902,7 @@ window.noname_character_rank={
|
|||
're_zhangchunhua',
|
||||
'xunyou',
|
||||
'yufan',
|
||||
're_chengong',
|
||||
'chengong',
|
||||
'bulianshi',
|
||||
'dc_bulianshi',
|
||||
|
@ -920,6 +940,7 @@ window.noname_character_rank={
|
|||
'wulan',
|
||||
're_sunben',
|
||||
'hujinding',
|
||||
'dc_hujinding',
|
||||
'dongcheng',
|
||||
'taoqian',
|
||||
'chendeng',
|
||||
|
@ -956,6 +977,7 @@ window.noname_character_rank={
|
|||
'ns_chengpu',
|
||||
're_sunluban',
|
||||
're_caoxiu',
|
||||
'xin _caoxiu',
|
||||
'sunluyu',
|
||||
'sp_diaochan',
|
||||
'liuxie',
|
||||
|
@ -1028,6 +1050,7 @@ window.noname_character_rank={
|
|||
'xin_caozhen',
|
||||
'ol_dengzhi',
|
||||
'sundeng',
|
||||
're_sundeng',
|
||||
're_duji',
|
||||
'sp_chendong',
|
||||
'sp_zongyu',
|
||||
|
@ -1076,6 +1099,12 @@ window.noname_character_rank={
|
|||
'dc_liru',
|
||||
'kebineng',
|
||||
'wangwei',
|
||||
'zhangzhi',
|
||||
'clan_xuncan',
|
||||
'clan_xunshu',
|
||||
'sunlang',
|
||||
'yangfu',
|
||||
'sp_pengyang',
|
||||
],
|
||||
bm:[
|
||||
'diy_xizhenxihong',
|
||||
|
@ -1226,6 +1255,7 @@ window.noname_character_rank={
|
|||
'sp_zhangwen',
|
||||
're_zoushi',
|
||||
'yuejiu',
|
||||
'dc_yuejiu',
|
||||
'xin_sunluban',
|
||||
'ol_bianfuren',
|
||||
'sp_ol_zhanghe',
|
||||
|
@ -1240,6 +1270,11 @@ window.noname_character_rank={
|
|||
'xin_mamidi',
|
||||
'xin_quancong',
|
||||
'dc_caiyang',
|
||||
're_caiyong',
|
||||
'liyixiesheng',
|
||||
'panghui',
|
||||
'leibo',
|
||||
'dongguiren',
|
||||
],
|
||||
c:[
|
||||
'xiahoudun',
|
||||
|
@ -1288,6 +1323,7 @@ window.noname_character_rank={
|
|||
'sp_huaxin',
|
||||
'sp_xujing',
|
||||
'caimaozhangyun',
|
||||
'ahuinan',
|
||||
'mushun',
|
||||
],
|
||||
d:[
|
||||
|
@ -1314,6 +1350,9 @@ window.noname_character_rank={
|
|||
'bianxi',
|
||||
'junk_sunquan',
|
||||
'clan_wuban',
|
||||
'wangjun',
|
||||
'xin_wuyi',
|
||||
'xin_zhuzhi',
|
||||
],
|
||||
rarity:{
|
||||
legend:[
|
||||
|
@ -1442,6 +1481,13 @@ window.noname_character_rank={
|
|||
'clan_wuxian',
|
||||
'luyi',
|
||||
'shen_zhangfei',
|
||||
'clan_xuncai',
|
||||
'wanglie',
|
||||
'zhujianping',
|
||||
'zhaozhi',
|
||||
'liuhui',
|
||||
'shen_zhangjiao',
|
||||
'sb_machao',
|
||||
'key_tomoya',
|
||||
'key_masato',
|
||||
'key_shiorimiyuki',
|
||||
|
@ -1464,6 +1510,7 @@ window.noname_character_rank={
|
|||
'key_satomi',
|
||||
'key_seira',
|
||||
'key_kiyu',
|
||||
'key_tomoyo',
|
||||
'noname',
|
||||
],
|
||||
epic:[
|
||||
|
@ -1649,6 +1696,10 @@ window.noname_character_rank={
|
|||
'zhangfen',
|
||||
'xiahouxuan',
|
||||
'prp_zhugeliang',
|
||||
'zhangzhi',
|
||||
'ol_liuba',
|
||||
'shiyi',
|
||||
'yuanji',
|
||||
'key_kano',
|
||||
'key_haruko',
|
||||
'key_akiko',
|
||||
|
@ -1763,6 +1814,7 @@ window.noname_character_rank={
|
|||
'key_kyoko',
|
||||
'jiakui',
|
||||
'hujinding',
|
||||
'dc_hujinding',
|
||||
'zhangyì',
|
||||
'lingcao',
|
||||
'sunru',
|
||||
|
@ -2068,10 +2120,19 @@ window.noname_character_rank={
|
|||
'chengui',
|
||||
'dingshangwan',
|
||||
're_zhuhuan',
|
||||
'xin_zhuhuan',
|
||||
'yinfuren',
|
||||
'dc_liuye',
|
||||
'dc_zhaoyǎn',
|
||||
'zhugeshang',
|
||||
're_xunyou',
|
||||
'liwan',
|
||||
'furong',
|
||||
'clan_xunchen',
|
||||
'sunlang',
|
||||
'chengbing',
|
||||
'gongsundu',
|
||||
'xin_caoxiu',
|
||||
],
|
||||
junk:[
|
||||
'sunshao',
|
||||
|
@ -2097,6 +2158,12 @@ window.noname_character_rank={
|
|||
'bianxi',
|
||||
'junk_sunquan',
|
||||
'clan_wuban',
|
||||
'ahuinan',
|
||||
'sp_caosong',
|
||||
'yangfu',
|
||||
'wangjun',
|
||||
'xin_wuyi',
|
||||
'xin_zhuzhi',
|
||||
],
|
||||
}
|
||||
};
|
||||
|
|
|
@ -9,23 +9,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
refresh_huo:["ol_sp_zhugeliang","ol_xunyu","ol_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"],
|
||||
refresh_lin:['re_menghuo','ol_sunjian','re_caopi','ol_xuhuang','ol_dongzhuo','ol_zhurong','re_jiaxu','ol_lusu'],
|
||||
refresh_shan:['ol_jiangwei','ol_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai','re_zhanghe'],
|
||||
refresh_yijiang1:['xin_wuguotai','xin_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua','dc_xushu'],
|
||||
refresh_yijiang2:['re_madai','re_wangyi','guanzhang','xin_handang','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','dc_bulianshi','xin_liubiao'],
|
||||
refresh_yijiang1:['xin_wuguotai','xin_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua','dc_xushu','re_chengong'],
|
||||
refresh_yijiang2:['re_madai','re_wangyi','guanzhang','xin_handang','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','dc_bulianshi','xin_liubiao','re_xunyou'],
|
||||
refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','xin_yufan','dc_liru','re_manchong','re_fuhuanghou','re_guanping','re_liufeng'],
|
||||
refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan','re_caozhen','re_zhoucang','re_chenqun','re_caifuren','re_guyong','re_jushou','re_zhuhuan'],
|
||||
refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu','re_gongsunyuan','re_guotufengji','re_xiahoushi','re_liuchen'],
|
||||
refresh_yijiang6:['re_guohuanghou'],
|
||||
refresh_xinghuo:['re_duji','dc_gongsunzan','re_sp_taishici'],
|
||||
refresh_yijiang6:['re_guohuanghou','re_sundeng'],
|
||||
refresh_xinghuo:['re_duji','dc_gongsunzan','re_sp_taishici','re_caiyong'],
|
||||
},
|
||||
},
|
||||
connect:true,
|
||||
character:{
|
||||
re_sundeng:['male','wu',4,['rekuangbi']],
|
||||
re_caiyong:['male','qun',3,['rebizhuan','retongbo']],
|
||||
re_chengong:['male','qun',3,['remingce','zhichi']],
|
||||
re_xunyou:['male','wei',3,['reqice','rezhiyu'],['clan:颍川荀氏']],
|
||||
dc_liru:['male','qun',3,['xinjuece','dcmieji','dcfencheng']],
|
||||
re_zhuhuan:['male','wu',4,['refenli','repingkou']],
|
||||
ol_dianwei:['male','wei',4,['olqiangxi','olningwu']],
|
||||
re_sp_taishici:['male','qun',4,['rejixu']],
|
||||
re_liufeng:['male','shu',4,['rexiansi']],
|
||||
ol_xunyu:['male','wei',3,['quhu','oljieming']],
|
||||
ol_xunyu:['male','wei',3,['quhu','oljieming'],['clan:颍川荀氏']],
|
||||
re_liuchen:['male','shu',4,['rezhanjue','reqinwang'],['zhu']],
|
||||
dc_gongsunzan:['male','qun',4,['reyicong','dcqiaomeng']],
|
||||
re_duji:['male','wei',3,['reandong','reyingshi']],
|
||||
|
@ -150,6 +154,419 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_xushu:['zhaoyun','sp_zhugeliang'],
|
||||
},
|
||||
skill:{
|
||||
//十周年孙登
|
||||
rekuangbi:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt2('rekuangbi'),(card,player,target) => {
|
||||
return target.countCards('he')>0&&target!=player;
|
||||
}).set('ai',target=>{
|
||||
var player=_status.event.player;
|
||||
if(_status.event.goon) return get.attitude(player,target)*Math.sqrt(target.countCards('he'));
|
||||
return -get.attitude(player,target)/(target.countCards('he')+1)*10;
|
||||
}).set('goon',player.countCards('hs',card=>player.hasValueTarget(card))>=2);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
player.logSkill('rekuangbi',target);
|
||||
target.chooseCard('匡弼:将至多三张牌置于'+get.translation(player)+'的武将牌上','he',[1,3],true).set('ai',card=>{
|
||||
if(get.attitude(_status.event.player,_status.event.getParent().player)>0){
|
||||
return 7-get.value(card);
|
||||
}
|
||||
return -get.value(card);
|
||||
});
|
||||
}else event.finish();
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
player.addToExpansion(result.cards,target,'give').gaintag.add('rekuangbi_effect');
|
||||
player.addTempSkill('rekuangbi_effect','phaseUseEnd');
|
||||
player.markAuto('rekuangbi_effect',[target]);
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
effect:{
|
||||
trigger:{player:'useCard'},
|
||||
charlotte:true,
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return player.getExpansions('rekuangbi_effect').length>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var cards=player.getExpansions('rekuangbi_effect');
|
||||
var suit=get.suit(trigger.card),cardsx=cards.filter(card=>get.suit(card)==suit);
|
||||
var len=cardsx.length;
|
||||
if(len>1){
|
||||
player.chooseButton(['匡弼:移去一张同花色的“匡弼”牌',cards],true).set('filterButton',button=>{
|
||||
return get.suit(button.link)==_status.event.suit;
|
||||
}).set('suit',suit);
|
||||
}
|
||||
else if(len==1){
|
||||
event._result={bool:true,links:cardsx};
|
||||
}
|
||||
else{
|
||||
event._result={bool:false,links:[cards.randomGet()]};
|
||||
}
|
||||
'step 1'
|
||||
if(result.links&&result.links.length){
|
||||
player.loseToDiscardpile(result.links);
|
||||
game.delayx();
|
||||
}
|
||||
if(result.bool){
|
||||
player.draw('nodelay');
|
||||
var target=player.getStorage('rekuangbi_effect')[0];
|
||||
if(target&&target.isIn()) target.draw();
|
||||
}
|
||||
else{
|
||||
player.draw();
|
||||
}
|
||||
},
|
||||
intro:{
|
||||
content:'expansion',
|
||||
markcount:'expansion',
|
||||
},
|
||||
onremove:function(player,skill){
|
||||
var cards=player.getExpansions(skill);
|
||||
if(cards.length) player.loseToDiscardpile(cards);
|
||||
delete player.storage[skill];
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
//十周年蔡邕
|
||||
rebizhuan:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
player:'useCard',
|
||||
target:'useCardToTargeted',
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(event.name!='useCard'&&event.player==event.target) return false;
|
||||
var num=4+Math.min(player.countMark('retongbo'),game.countPlayer());
|
||||
if(player.getExpansions('rebizhuan').length>=num) return false;
|
||||
return get.suit(event.card)=='spade';
|
||||
},
|
||||
marktext:'书',
|
||||
intro:{
|
||||
name:'辟撰(书)',
|
||||
name2:'书',
|
||||
content:'expansion',
|
||||
markcount:'expansion',
|
||||
},
|
||||
frequent:true,
|
||||
locked:false,
|
||||
content:function(){
|
||||
player.addToExpansion(get.cards(),'gain2').gaintag.add('rebizhuan');
|
||||
},
|
||||
mod:{
|
||||
maxHandcard:function(player,num){
|
||||
return num+player.getExpansions('rebizhuan').length;
|
||||
}
|
||||
}
|
||||
},
|
||||
retongbo:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseDrawAfter'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.getExpansions('rebizhuan').length>0&&player.countCards('he')>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var next=player.chooseToMove('通博:是否交换“书”和手牌?');
|
||||
next.set('list',[
|
||||
[get.translation(player)+'(你)的“书”',player.getExpansions('rebizhuan')],
|
||||
['你的牌',player.getCards('he')],
|
||||
]);
|
||||
next.set('filterMove',function(from,to){
|
||||
return typeof to!='number';
|
||||
});
|
||||
next.set('processAI',function(list){
|
||||
var player=_status.event.player,cards=list[0][1].concat(list[1][1]),cards2=[];
|
||||
cards.sort((a,b)=>{
|
||||
return get.useful(a)-get.useful(b);
|
||||
});
|
||||
cards2=cards.splice(0,player.getExpansions('rebizhuan').length);
|
||||
return [cards2,cards];
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var pushs=result.moved[0],gains=result.moved[1];
|
||||
pushs.removeArray(player.getExpansions('rebizhuan'));
|
||||
gains.removeArray(player.getCards('he'));
|
||||
if(!pushs.length||pushs.length!=gains.length){
|
||||
event.finish();
|
||||
return;
|
||||
}
|
||||
player.logSkill('retongbo');
|
||||
player.addToExpansion(pushs,'give',player).gaintag.add('rebizhuan');
|
||||
player.gain(gains,'gain2');
|
||||
}
|
||||
'step 2'
|
||||
event.cards=player.getExpansions('rebizhuan').slice(0);
|
||||
if(event.cards.length<4) event.finish();
|
||||
else {
|
||||
event.given=[];
|
||||
var list=[];
|
||||
event.cards.forEach(i=>list.add(get.suit(i)));
|
||||
if(list.length>=4&&player.hp<=2) event.four=true;
|
||||
}
|
||||
'step 3'
|
||||
if(event.given.length<4){
|
||||
player.chooseCardButton('是否将'+get.cnNumber(4-event.given.length)+'张“书”交给任意名其他角色?',event.cards,[1,4-event.given.length],event.given.length>0).set('ai',function(button){
|
||||
if(!_status.event.goon) return 0;
|
||||
var four=_status.event.getParent().four,given=_status.event.getParent().given;
|
||||
if(four) return get.value(button.link)+(given.map(i=>get.suit(i)).contains(get.suit(button.link))?0:10);
|
||||
if(ui.selected.buttons.length==0) return get.value(button.link);
|
||||
return 0;
|
||||
}).set('goon',game.hasPlayer(current=>get.attitude(player,current)>0));
|
||||
}
|
||||
else{
|
||||
event.goto(6);
|
||||
}
|
||||
'step 4'
|
||||
if(result.bool){
|
||||
for(var i=0;i<result.links.length;i++){
|
||||
event.cards.remove(result.links[i]);
|
||||
}
|
||||
event.togive=result.links.slice(0);
|
||||
event.given.addArray(event.togive);
|
||||
player.chooseTarget('将'+get.translation(result.links)+'交给一名其他角色',true,function(card,player,target){
|
||||
return target!=player;
|
||||
}).set('ai',function(target){
|
||||
var att=get.attitude(_status.event.player,target);
|
||||
if(_status.event.enemy){
|
||||
return -att;
|
||||
}
|
||||
else if(att>0){
|
||||
return att/(1+target.countCards('h'));
|
||||
}
|
||||
else{
|
||||
return att/100;
|
||||
}
|
||||
}).set('enemy',get.value(event.togive[0],player,'raw')<0);
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
'step 5'
|
||||
if(result.targets.length){
|
||||
result.targets[0].gain(event.togive,'draw').giver=player;
|
||||
player.line(result.targets[0],'green');
|
||||
game.log(result.targets[0],'获得了'+get.cnNumber(event.togive.length)+'张','#g“书”');
|
||||
if(event.given.length<4) event.goto(3);
|
||||
}
|
||||
'step 6'
|
||||
if(event.given.length==4){
|
||||
var suits=lib.suit.slice(0);
|
||||
event.given.forEach(i=>suits.remove(get.suit(i,player)));
|
||||
if(suits.length==0){
|
||||
player.recover();
|
||||
player.addMark('retongbo',1,false);
|
||||
}
|
||||
}
|
||||
},
|
||||
marktext:'博',
|
||||
intro:{
|
||||
content:function(storage,player){
|
||||
var num=4+Math.min(storage,game.countPlayer());
|
||||
return '“书”的上限+'+num;
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
combo:'rebizhuan',
|
||||
}
|
||||
},
|
||||
//十周年陈宫
|
||||
remingce:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
audio:2,
|
||||
position:'he',
|
||||
filterCard:function(card){
|
||||
return get.name(card)=='sha'||get.type(card)=='equip';
|
||||
},
|
||||
filter:function(event,player){
|
||||
return player.countCards('h','sha')>0||player.countCards('he',{type:'equip'})>0;
|
||||
},
|
||||
check:function(card){return 8-get.value(card)},
|
||||
selectTarget:2,
|
||||
multitarget:true,
|
||||
discard:false,
|
||||
lose:false,
|
||||
targetprompt:['得到牌','出杀目标'],
|
||||
filterTarget:function(card,player,target){
|
||||
if(ui.selected.targets.length==0){
|
||||
return player!=target;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
delay:false,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.give(cards,targets[0],'visible');
|
||||
'step 1'
|
||||
if(!targets[0].canUse({name:'sha',isCard:true},targets[1],false,false)) event._result={control:'选项二'};
|
||||
else targets[0].chooseControl().set('ai',function(){
|
||||
var player=_status.event.player,target=_status.event.target;
|
||||
return get.effect(target,{name:'sha',isCard:true},player,player)>0?0:1;
|
||||
}).set('choiceList',['视为对'+get.translation(targets[1])+'使用一张【杀】,若此杀造成伤害则执行选项二','你与'+get.translation(player)+'各摸一张牌']).set('target',targets[1]).set('prompt','对'+get.translation(targets[1])+'使用一张杀,或摸一张牌');
|
||||
'step 2'
|
||||
if(result.control=='选项二'){
|
||||
game.asyncDraw([player,targets[0]]);
|
||||
event.finish();
|
||||
}
|
||||
else{
|
||||
targets[0].useCard({name:'sha',isCard:true},targets[1]);
|
||||
}
|
||||
'step 3'
|
||||
if(targets[0].hasHistory('useCard',evt=>{
|
||||
return evt.getParent()==event&&targets[0].hasHistory('sourceDamage',evtx=>evt.card==evtx.card);
|
||||
})){
|
||||
game.asyncDraw([player,targets[0]]);
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
result:{
|
||||
player:function(player){
|
||||
var players=game.filterPlayer();
|
||||
for(var i=0;i<players.length;i++){
|
||||
if(players[i]!=player&&get.attitude(player,players[i])>1&&get.attitude(players[i],player)>1){
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
},
|
||||
target:function(player,target){
|
||||
if(ui.selected.targets.length){
|
||||
return -0.1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
},
|
||||
order:8.5,
|
||||
expose:0.2
|
||||
}
|
||||
},
|
||||
// 界荀攸
|
||||
reqice:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
filter:function(event,player){
|
||||
var hs=player.getCards('h');
|
||||
if(!hs.length) return false;
|
||||
if((player.getStat('skill').reqice||0) >= player.countMark('reqice_mark')+1) return false;
|
||||
for(var i=0; i<hs.length; i++){
|
||||
var mod2=game.checkMod(hs[i],player,'unchanged','cardEnabled2',player);
|
||||
if(mod2===false) return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
chooseButton:{
|
||||
dialog:function(player){
|
||||
var list=[];
|
||||
for(var i=0; i<lib.inpile.length; i++){
|
||||
if(get.type(lib.inpile[i])=='trick') list.push(['锦囊','',lib.inpile[i]]);
|
||||
}
|
||||
return ui.create.dialog(get.translation('reqice'),[list,'vcard']);
|
||||
},
|
||||
filter:function(button,player){
|
||||
return lib.filter.filterCard({name:button.link[2]},player,_status.event.getParent());
|
||||
},
|
||||
check:function(button){
|
||||
var player=_status.event.player;
|
||||
var effect=player.getUseValue(button.link[2]);
|
||||
if(player.countCards('hs',button.link[2])>0) return 0;
|
||||
if((player.getStat('skill').reqice||0)<player.countMark('reqice_mark')+1){
|
||||
if(['draw','gain'].some(i=>get.tag(button.link[2],i) >= 1)) return effect*2;
|
||||
}
|
||||
if(effect>0) return effect;
|
||||
return 0;
|
||||
},
|
||||
backup:function(links,player){
|
||||
return {
|
||||
filterCard:true,
|
||||
selectCard:-1,
|
||||
position:'h',
|
||||
audio:'reqice',
|
||||
popname:true,
|
||||
viewAs:{name:links[0][2]},
|
||||
}
|
||||
},
|
||||
prompt:function(links,player){
|
||||
return '将所有手牌当【'+get.translation(links[0][2])+'】使用';
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:1,
|
||||
result:{
|
||||
player:function(player){
|
||||
var num=0;
|
||||
var cards=player.getCards('h');
|
||||
if(cards.length >= 3&&player.hp >= 3&&player.countMark('reqice_mark')<2) return 0;
|
||||
for(var i=0; i<cards.length; i++){
|
||||
num+=Math.max(0,get.value(cards[i],player,'raw'));
|
||||
}
|
||||
num/=cards.length;
|
||||
num/=(player.countMark('reqice_mark')+1)*1.3;
|
||||
num*=Math.min(cards.length,player.hp);
|
||||
return 13-num;
|
||||
}
|
||||
},
|
||||
threaten:1.7,
|
||||
},
|
||||
subSkill:{
|
||||
bakcup:{},
|
||||
mark:{
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
intro:{
|
||||
name2:'奇策',
|
||||
content:'mark',
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
rezhiyu:{
|
||||
audio:2,
|
||||
trigger:{player:'damageEnd'},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.draw();
|
||||
'step 1'
|
||||
if(!player.countCards('h')) event.finish();
|
||||
else player.showHandcards();
|
||||
'step 2'
|
||||
if(!trigger.source||!trigger.source.isIn()) event._result={bool:false,cards:[]};
|
||||
else trigger.source.chooseToDiscard('智愚:请弃置一张手牌',true);
|
||||
'step 3'
|
||||
var cards=player.getCards('h');
|
||||
var color=get.color(cards[0],player);
|
||||
var bool=true;
|
||||
for(var i=1; i<cards.length; i++){
|
||||
if(get.color(cards[i],player)!=color){
|
||||
bool=false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(bool){
|
||||
var cards=result.cards.filterInD('d');
|
||||
if(cards.length){
|
||||
player.gain(cards,'gain2');
|
||||
}
|
||||
player.addMark('reqice_mark',1);
|
||||
player.addTempSkill('reqice_mark',{player:'phaseAfter'});
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
maixie_defend:true,
|
||||
threaten:0.85
|
||||
}
|
||||
},
|
||||
oljiang:{
|
||||
audio:'jiang',
|
||||
inherit:'jiang',
|
||||
|
@ -4094,7 +4511,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
target.judge(function(card){
|
||||
var evt=_status.event.getParent('redingpin'),suit=get.suit(card);
|
||||
switch(suit){
|
||||
case 'club': case 'spade':return evt.target.hp;
|
||||
case 'club':case 'spade':return evt.target.hp;
|
||||
case 'diamond':return get.sgn(get.attitude(evt.target,evt.player))*-3;
|
||||
}
|
||||
return 0;
|
||||
|
@ -4104,7 +4521,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
};
|
||||
'step 1'
|
||||
switch(result.suit){
|
||||
case 'spade': case 'club':
|
||||
case 'spade':case 'club':
|
||||
if(target.hp>0) target.draw(Math.min(3,target.hp));
|
||||
target.addTempSkill('redingpin2');
|
||||
break;
|
||||
|
@ -5595,7 +6012,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
target.chooseToDiscard(cards.length,'弃置'+get.cnNumber(cards.length)+'张手牌并失去1点体力,或点取消将武将牌翻面并摸'+get.cnNumber(cards.length)+'张牌').set('ai',function(card){
|
||||
target.chooseToDiscard(cards.length,'弃置'+get.cnNumber(cards.length)+'张牌并失去1点体力,或点取消将武将牌翻面并摸'+get.cnNumber(cards.length)+'张牌','he').set('ai',function(card){
|
||||
var player=_status.event.player;
|
||||
if(player.isTurnedOver()) return -1;
|
||||
return (player.hp*player.hp)-get.value(card);
|
||||
|
@ -9420,7 +9837,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 2'
|
||||
player.chooseCardTarget({
|
||||
filterCard:function(card){
|
||||
return !card.hasGaintag('reyiji_tag');
|
||||
return get.itemtype(card)=='card'&&!card.hasGaintag('reyiji_tag');
|
||||
},
|
||||
filterTarget:lib.filter.notMe,
|
||||
selectCard:[1,event.num],
|
||||
|
@ -9688,16 +10105,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
},
|
||||
"new_yijue2":{
|
||||
new_yijue2:{
|
||||
trigger:{
|
||||
player:"damageBegin1",
|
||||
},
|
||||
filter:function(event){
|
||||
return event.source&&event.source.hasSkill('new_yijue')&&event.card&&event.card.name=='sha'&&get.suit(event.card)=='heart'&&event.notLink();
|
||||
return event.source&&event.source==_status.currentPhase&&event.card.name=='sha'&&get.suit(event.card)=='heart'&&event.notLink();
|
||||
},
|
||||
silent:true,
|
||||
popup:false,
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
content:function(){
|
||||
trigger.num++;
|
||||
},
|
||||
|
@ -12503,7 +12920,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xinleiji_misa:'雷击',
|
||||
xinguidao:'鬼道',
|
||||
xinleiji_info:'①当你使用或打出【闪】或【闪电】时,你可以进行判定。②当你的判定的判定牌生效后,若结果为:黑桃,你可对一名其他角色造成2点雷电伤害;梅花:你回复1点体力并可对一名其他其他角色造成1点雷电伤害。',
|
||||
xinleiji_append:'<span style="font-family: yuanli">不能触发〖雷击〗的判定:〖暴虐〗、〖助祭〗、<br>〖弘仪〗、〖孤影〗。</span>',
|
||||
xinleiji_append:'<span style="font-family:yuanli">不能触发〖雷击〗的判定:〖暴虐〗、〖助祭〗、<br>〖弘仪〗、〖孤影〗。</span>',
|
||||
xinleiji_faq:'不能触发〖雷击〗的判定',
|
||||
xinleiji_faq_info:'<br>董卓/界董卓〖暴虐〗<br>黄巾雷使〖助祭〗<br>羊徽瑜〖弘仪〗<br>鸣濑白羽〖孤影〗',
|
||||
xinguidao_info:'一名角色的判定牌生效前,你可以打出一张黑色牌作为判定牌并获得原判定牌。若你以此法打出的牌为黑桃2-9,则你摸一张牌。',
|
||||
|
@ -12943,7 +13360,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
reweimu_info:'锁定技。①你不能成为黑色锦囊牌的目标。②当你于回合内受到伤害时,你防止此伤害并摸2X张牌(X为伤害值)。',
|
||||
ol_lusu:'界鲁肃',
|
||||
olhaoshi:'好施',
|
||||
olhaoshi_info:'摸牌阶段开始时,你可以多摸两张牌。然后摸牌阶段结束时,若你的手牌数大于5,则你将手牌数的一半(向下取整)交给一名手牌最少其他角色并获得如下效果直到你下回合开始:当你成为【杀】或普通锦囊牌的目标后,其可以交给你一张手 牌。',
|
||||
olhaoshi_info:'摸牌阶段开始时,你可以多摸两张牌。然后摸牌阶段结束时,若你的手牌数大于5,则你将手牌数的一半(向下取整)交给一名手牌最少其他角色并获得如下效果直到你下回合开始:当你成为【杀】或普通锦囊牌的目标后,其可以交给你一张手牌。',
|
||||
oldimeng:'缔盟',
|
||||
oldimeng_info:'出牌阶段限一次,你可令两名满足X≤Y的其他角色交换手牌并获得如下效果:出牌阶段结束时,你弃置X张牌(X为这两名角色手牌数之差的绝对值;Y为你的手牌数)。',
|
||||
|
||||
|
@ -13058,6 +13475,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dcfencheng_info:'限定技。出牌阶段,你可以指定一名其他角色,令从其开始的其他角色依次选择一项:⒈弃置至少X张牌(X为上一名角色弃置的牌数+1)。⒉你对其造成2点伤害。',
|
||||
oljiang:'激昂',
|
||||
oljiang_info:'①当你使用【决斗】或红色【杀】指定第一个目标后,或成为【决斗】或红色【杀】的目标后,你可以摸一张牌。②当有【决斗】或红色【杀】于每回合内首次因弃置而进入弃牌堆后,你可以失去1点体力并获得这些牌。',
|
||||
re_xunyou:'界荀攸',
|
||||
reqice:'奇策',
|
||||
reqice_info:'出牌阶段限X次(X为你的“奇策”数+1),你可以将所有手牌当做任意一张普通锦囊牌使用。',
|
||||
rezhiyu:'智愚',
|
||||
rezhiyu_info:'当你受到伤害后,你可以摸一张牌,然后展示所有手牌,令伤害来源弃置一张手牌。若你展示的牌颜色均相同,你获得1枚“奇策”直到下回合结束且获得来源弃置的牌。',
|
||||
re_caiyong:'界蔡邕',
|
||||
rebizhuan:'辟撰',
|
||||
rebizhuan_bg:'书',
|
||||
rebizhuan_info:'①当你使用♠牌时,或成为其他角色使用♠牌的目标后,你可以将牌堆顶的一张牌置于武将牌上,称为“书”(你至多拥有四张“书”)。②你的手牌上限+X(X为“书”数)。',
|
||||
retongbo:'通博',
|
||||
retongbo_info:'摸牌阶段结束时,你可以用任意手牌交换等量“书”。然后若“书”数至少为4,你可以将四张“书”任意交给其他角色。若你交出的牌花色各不相同,你回复1点体力且“书”的上限+1(至多增加等同存活角色数的上限)。',
|
||||
re_chengong:'界陈宫',
|
||||
remingce:'明策',
|
||||
remingce_info:'出牌阶段限一次。你可以将一张【杀】或装备牌交给一名其他角色,其选择一项:1.视为对你选择的另一名角色使用一张【杀】,且若此牌造成伤害,则执行选项2;2.你与其各摸一张牌。',
|
||||
re_sundeng:'界孙登',
|
||||
rekuangbi:'匡弼',
|
||||
rekuangbi_info:'出牌阶段开始时,你可以令一名其他角色将至多三张牌置于你的武将牌上直到此阶段结束。然后当你使用牌时,若你:有与此牌花色相同的“匡弼”牌,你移去其中一张并与其各摸一张牌;没有与此牌花色相同的“匡弼”牌,你随机移去一张“匡弼”牌并摸一张牌。',
|
||||
|
||||
refresh_standard:'界限突破·标',
|
||||
refresh_feng:'界限突破·风',
|
||||
|
|
1918
character/sb.js
563
character/sp.js
|
@ -7,11 +7,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp:{
|
||||
sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","ganfuren","ol_bianfuren","qinghegongzhu","tengfanglan","ruiji",'caoxiancaohua'],
|
||||
sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi','ol_dongzhao','ol_chendeng','jin_yanghu','wangyan','xiahouxuan'],
|
||||
sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda"],
|
||||
sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda","ahuinan"],
|
||||
sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu','ol_xinxianying',"daxiaoqiao","jin_guohuai"],
|
||||
sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','ol_puyuan'],
|
||||
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong'],
|
||||
sp_liesi:['mizhu','weizi'],
|
||||
sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','ol_puyuan','zhangzhi'],
|
||||
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong','ol_furong'],
|
||||
sp_liesi:['mizhu','weizi','ol_liuba'],
|
||||
sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe','sp_menghuo'],
|
||||
sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'],
|
||||
sp_wanglang:['wanglang'],
|
||||
|
@ -28,6 +28,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
character:{
|
||||
zhangzhi:['male','qun',3,['olbixin','olximo']],
|
||||
ol_liuba:['male','shu',3,['oltongduo','olzhubi']],
|
||||
ol_furong:['male','shu',4,['olxiaosi']],
|
||||
ahuinan:['male','qun',4,['jueman']],
|
||||
jin_guohuai:['female','jin',3,['zhefu','yidu']],
|
||||
xiahouxuan:['male','wei',3,['olhuanfu','olqingyi','olzeyue']],
|
||||
dengzhong:['male','wei',4,['dzkanpo','dzgengzhan']],
|
||||
|
@ -178,6 +182,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
//kaisa:["male","western",4,["zhengfu"]],
|
||||
},
|
||||
characterIntro:{
|
||||
zhangzhi:'张芝(?—192年),字伯英,敦煌郡渊泉县(今甘肃省瓜州县)人。东汉书法家、“草书之祖”,大司农张奂的儿子。出身名门,拒绝朝廷征召,潜心研习书法。擅长草书中的章草,将古代当时字字区别、笔画分离的草法,改为上下牵连富于变化的新写法,富有独创性,在当时影响很大。李志敏评价:“张芝创造了草书问世以来的第一座高峰,精熟神妙,兼善章今”。 没有真迹传世,仅存《八月帖》等刻帖。汉献帝初平三年,去世于家中,著有《笔心论》,与钟繇、王羲之和王献之并称“书中四贤”。',
|
||||
ahuinan:'阿会喃,小说《三国演义》及其衍生作品中的角色,南蛮王孟获属下大将,第三洞元帅;与董荼那等人一起担任孟获的援军出征,但是被俘虏,又被诸葛亮释放,再次出战时,被唾骂不知羞耻,面红耳赤的退军。后同董荼那共同绑架孟获献于蜀军,却被诸葛亮在其二人与孟获的重要性间权衡后出卖了他们,放走了孟获,使其为孟获所杀。',
|
||||
xiahouxuan:'夏侯玄(209年~254年),字泰初(《三国志》等作太初),沛国谯县(今安徽省亳州市)人。三国时期曹魏大臣、思想家、文学家,征南大将军夏侯尚之子,大将军曹爽的表弟。夏侯玄少年有名望,仪表出众,时人称为“朗朗如日月之入怀”。魏文帝黄初六年(225年),袭封昌陵乡侯。魏明帝时,历任散骑黄门侍郎、羽林监。少帝曹芳继位后,拜散骑常侍、中护军,保卫皇宫。后任征西将军,任内与曹爽策划骆谷之役,大失人心。高平陵政变后,被夺去兵权,改任大鸿胪、太常卿。嘉平六年(254年),中书令李丰与外戚张缉密谋杀死大将军司马师,改以夏侯玄执政。事泄被杀,夷灭三族,夏侯玄死时年仅四十六岁。著有文集三卷,如今已佚。政治上,提出了“审官择人”、“除重官”、“改服制”等制度,被太傅司马懿评价“皆大善”。博学多识,才华出众,精通玄学,成为“四聪”之一,与何晏等人开创了魏晋玄学的先河,是早期的玄学领袖人物。',
|
||||
dengzhong:'邓忠(不详-264年),三国时期曹魏名将邓艾之子。景元五年(264年),钟会谋反事败,士兵哗变,钟会被杀,邓艾部将想追还邓艾父子,但卫瓘却派田续追邓艾,于绵竹西相遇,将邓艾和邓忠等人杀死。直至泰始九年(273年)才恢复名节。',
|
||||
wangyan:'王衍(256年~311年),字夷甫,琅邪郡临沂县(今山东省临沂市)人。西晋末年重臣,玄学清谈领袖,曹魏幽州刺史王雄之孙、平北将军王乂之子、司徒王戎堂弟。王衍出身琅琊王氏。外表清明俊秀,风姿安详文雅,笃好老庄学说,颇有时名。步入仕途后,历任黄门侍郎、中领军、尚书令、尚书仆射等职。光熙元年(307年),升任司空。次年,又任司徒。王衍位高权重,却不思为国,为保全自己,还让弟弟王澄、族弟王敦分任荆州、青州刺史,遭时人鄙夷。王弥进攻洛阳时,王衍率军抵抗。其后转任太尉兼尚书令,又兼领太傅军司。永嘉五年(311年),东海王司马越去世,王衍奉其灵柩返回东海,途中为羯人石勒所俘获。王衍在与石勒交谈时,仍推脱责任,并劝其称帝,石勒大怒,将其与西晋旧臣一同活埋,时年五十六岁。王衍工书法,尤擅行书,《宣和书谱》有其作品《尊夫人帖》。',
|
||||
|
@ -657,6 +663,522 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
skill:{
|
||||
//刘巴
|
||||
oltongduo:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt2('oltongduo'),function(card,player,target){
|
||||
return target!=player&&target.countCards('h')>0;
|
||||
}).set('ai',function(target){
|
||||
var att=get.attitude(_status.event.player,target);
|
||||
if(att>0) return Math.sqrt(att)/10;
|
||||
return 5-att;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
player.logSkill('oltongduo',target);
|
||||
target.chooseCard('h',true,'统度:将一张手牌交给'+get.translation(player)+',然后其于此阶段结束时将此牌置于牌堆顶');
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
player.addTempSkill('oltongduo_put');
|
||||
event.target.give(result.cards,player,true).gaintag.add('oltongduo');
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
put:{
|
||||
trigger:{player:'phaseUseEnd'},
|
||||
charlotte:true,
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return player.hasCard(card=>card.hasGaintag('oltongduo'),'h');
|
||||
},
|
||||
content:function(){
|
||||
var cards=player.getCards('h',card=>card.hasGaintag('oltongduo'));
|
||||
player.lose(cards,ui.cardPile,'insert');
|
||||
game.log(player,'将',get.cnNumber(cards.length)+'张牌','置于牌堆顶');
|
||||
game.broadcastAll(function(player){
|
||||
var cardx=ui.create.card();
|
||||
cardx.classList.add('infohidden');
|
||||
cardx.classList.add('infoflip');
|
||||
player.$throw(cardx,1000,'nobroadcast');
|
||||
},player);
|
||||
},
|
||||
onremove:function(player){
|
||||
player.removeGaintag('oltongduo');
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
olzhubi:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
group:'olzhubi_replace',
|
||||
filter:function(event,player){
|
||||
return (player.getStat('skill').olzhubi||0)<player.maxHp;
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return target.countCards('he')>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
target.chooseCard('he',true,'铸币:请重铸一张牌',(card,player,target)=>{
|
||||
var mod=game.checkMod(card,player,'unchanged','cardChongzhuable',player);
|
||||
if(mod!='unchanged') return mod;
|
||||
return true;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var cards=result.cards;
|
||||
target.loseToDiscardpile(cards);
|
||||
target.draw().gaintag=['olzhubi_tag'];
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:6,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
if(target.hasCard(card=>card.hasGaintag('olzhubi_tag'),'h')) return 0.5;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
replace:{
|
||||
trigger:{global:'phaseJieshuBegin'},
|
||||
filter:function(event,player){
|
||||
return event.player.hasCard(card=>card.hasGaintag('olzhubi_tag'),'h');
|
||||
},
|
||||
forced:true,
|
||||
locked:false,
|
||||
logTarget:'player',
|
||||
content:function(){
|
||||
'step 0'
|
||||
var cards=get.bottomCards(5);
|
||||
event.cards2=cards;
|
||||
game.cardsGotoOrdering(cards);
|
||||
var next=player.chooseToMove('铸币:用任意“币”交换牌堆底等量张牌');
|
||||
var hs=player.getCards('h',card=>card.hasGaintag('olzhubi_tag'));
|
||||
next.set('filterMove',function(from,to){
|
||||
return typeof to!='number';
|
||||
});
|
||||
next.set('list',[
|
||||
['牌堆底',cards],
|
||||
['你的手牌',hs,'olzhubi_tag']
|
||||
]);
|
||||
next.set('processAI',function(list){
|
||||
var all=list[0][1].concat(list[1][1]),cards=all.slice(0);
|
||||
var num=_status.event.num;
|
||||
cards.sort(function(a,b){
|
||||
return get.value(b)-get.value(a);
|
||||
});
|
||||
return [cards.slice(num),cards.slice(0,num)];
|
||||
});
|
||||
next.set('num',hs.length);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
event.forceDie=true;
|
||||
var cards=result.moved[0];
|
||||
event.cards=cards;
|
||||
var hs=player.getCards('h');
|
||||
var lose=[],gain=event.cards2;
|
||||
for(var i of cards){
|
||||
if(hs.contains(i)) lose.push(i);
|
||||
else gain.remove(i);
|
||||
}
|
||||
if(lose.length) player.lose(lose,ui.cardPile);
|
||||
if(gain.length) player.gain(gain,'draw');
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
for(var i of cards){
|
||||
if(!(('hejsdx').includes(get.position(i,true)))){
|
||||
i.fix();
|
||||
ui.cardPile.appendChild(i);
|
||||
}
|
||||
}
|
||||
game.updateRoundNumber();
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
//傅肜
|
||||
olxiaosi:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filterTarget:function(card,player,target){
|
||||
return target.countCards('h')>0&&player!=target;
|
||||
},
|
||||
filterCard:function(card,player,target){
|
||||
return get.type(card)=='basic';
|
||||
},
|
||||
check:function(card){
|
||||
var player=_status.event.player;
|
||||
if(player.hasValueTarget(card)) return 10-get.value(card);
|
||||
return 0.1;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(target.countCards('h',card=>{
|
||||
return get.type(card)=='basic'&&lib.filter.cardDiscardable(card,target,'olxiaosi');
|
||||
})==0) event.draw=true;
|
||||
else{
|
||||
target.chooseToDiscard('h',true,'效死:弃置一张基本牌',{type:'basic'});
|
||||
}
|
||||
'step 1'
|
||||
var cards2=cards.filterInD('d');
|
||||
if(result.bool){
|
||||
cards2=cards2.addArray(result.cards.filterInD('d'));
|
||||
}
|
||||
event.cards2=cards2;
|
||||
'step 2'
|
||||
if (!event.cards2.length) event.finish();
|
||||
else player.chooseButton(['效死:是否使用其中的一张牌?',event.cards2]).set('filterButton',button=>{
|
||||
return _status.event.player.hasUseTarget(button.link,false,false);
|
||||
}).set('ai',button=>{
|
||||
if(button.link.name=='jiu') return 10;
|
||||
return _status.event.player.getUseValue(button.link);
|
||||
});
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var card=result.links[0];
|
||||
event.cards2.remove(card);
|
||||
player.$gain2(card,false);
|
||||
game.delayx();
|
||||
player.chooseUseTarget(true,card,false,'nodistance');
|
||||
}
|
||||
'step 4'
|
||||
if(event.cards2.filter(i=>player.hasUseTarget(i,false,false)).length) event.goto(2);
|
||||
'step 5'
|
||||
if(event.draw) player.draw();
|
||||
},
|
||||
ai:{
|
||||
order:4.5,
|
||||
result:{
|
||||
player:1,
|
||||
target:-1
|
||||
}
|
||||
}
|
||||
},
|
||||
//阿会喃
|
||||
jueman:{
|
||||
audio:2,
|
||||
trigger:{global:'phaseEnd'},
|
||||
forced:true,
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
var history=game.getGlobalHistory('useCard',evt=>{
|
||||
return get.type(evt.card)=='basic';
|
||||
});
|
||||
if(history.length<2) return false;
|
||||
var users=history.slice(0,2).map(i=>i.player);
|
||||
var list=users.filter(user=>user==player);
|
||||
if(list.length==1) return true;
|
||||
if(list.length==0){
|
||||
var evtx=history[2];
|
||||
if(evtx){
|
||||
var name=evtx.card.name,nature=evtx.card.nature;
|
||||
if(evtx&&player.hasUseTarget({name:name,nature:nature,isCard:true})) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var history=game.getGlobalHistory('useCard',evt=>{
|
||||
return get.type(evt.card)=='basic';
|
||||
});
|
||||
var list=history.slice(0,2).map(i=>i.player).filter(user=>user==player);
|
||||
if(list.length==1) {
|
||||
player.logSkill('jueman');
|
||||
player.draw();
|
||||
}
|
||||
else if(list.length==0){
|
||||
var evtx=history[2],name=evtx.card.name,nature=evtx.card.nature;
|
||||
player.chooseUseTarget({name:name,nature:nature,isCard:true},true).set('logSkill','jueman');
|
||||
}
|
||||
}
|
||||
},
|
||||
//张芝
|
||||
olbixin:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
global:['phaseZhunbeiBegin','phaseJieshuBegin'],
|
||||
},
|
||||
direct:true,
|
||||
onremove:['olbixin','olbixin_basic','olbixin_trick','olbixin_equip'],
|
||||
group:'olbixin_full',
|
||||
map:{基本:'basic',锦囊:'trick',装备:'equip'},
|
||||
filter:function(event,player){
|
||||
var count=player.countMark('olbixin');
|
||||
if(count>0&&event.player!=player) return false;
|
||||
if(count>1&&event.name=='phaseZhunbei') return false;
|
||||
if(count>2) return false;
|
||||
var num=count>=3?3:1;
|
||||
var types=['basic','trick','equip'].filter(type=>{
|
||||
return player.countMark('olbixin_'+type)<num;
|
||||
});
|
||||
if(!types.length) return false;
|
||||
return lib.skill.olbixin.getList(player).length>0;
|
||||
},
|
||||
getList:function(player,event){
|
||||
var natures=lib.inpile_nature.slice(0),used=[];
|
||||
var history=player.actionHistory;
|
||||
for(var i=history.length-1;i>=0;i--){
|
||||
var info=history[i];
|
||||
for(var evt of info.useCard){
|
||||
var name=evt.card.name;
|
||||
if(get.type(name)!='basic') continue;
|
||||
if(name=='sha'){
|
||||
if(evt.card.nature) natures.remove(evt.card.nature);
|
||||
else used.push(name);
|
||||
}
|
||||
else used.push(name);
|
||||
};
|
||||
if(info.isRound) break;
|
||||
}
|
||||
var vcards=[];
|
||||
for(var name of lib.inpile){
|
||||
if(get.type(name)!='basic') continue;
|
||||
if(!event){
|
||||
if(name=='sha'){
|
||||
if(!used.contains('sha')&&player.hasUseTarget({name:'sha'})) vcards.push(['基本','','sha']);
|
||||
for(var nature of natures) {
|
||||
if(player.hasUseTarget({name:'sha',nature:nature})) vcards.push(['基本','','sha',nature]);
|
||||
}
|
||||
}
|
||||
else if(!used.contains(name)&&player.hasUseTarget({name:name})) vcards.push(['基本','',name]);
|
||||
}
|
||||
else{
|
||||
if(name=='sha'){
|
||||
if(!used.contains('sha')&&event.filterCard({name:'sha'},player,event)) vcards.push(['基本','','sha']);
|
||||
for(var nature of natures) {
|
||||
if(event.filterCard({name:'sha',nature:nature},player,event)) vcards.push(['基本','','sha',nature]);
|
||||
}
|
||||
}
|
||||
else if(!used.contains(name)&&event.filterCard({name:name},player,event)) vcards.push(['基本','',name]);
|
||||
}
|
||||
}
|
||||
return vcards;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var types=['basic','trick','equip'];
|
||||
var list=lib.skill.olbixin.getList(player);
|
||||
if(list.length){
|
||||
var dialog=['###'+get.prompt('olbixin')+'###<div class="text center">摸'+get.cnNumber(player.countMark('olbixin')>=3?1:3)+'张牌,然后将所有指定类型的手牌当一张基本牌使用</div>'];
|
||||
dialog.push([types.map(i=>get.translation(i)),'tdnodes']);
|
||||
dialog.push([list,'vcard']);
|
||||
player.chooseButton(dialog,2).set('filterButton',button=>{
|
||||
var player=_status.event.player,count=player.countMark('olbixin'),num=count>=3?3:1;
|
||||
var type=typeof button.link;
|
||||
if(ui.selected.buttons.length&&type==typeof ui.selected.buttons[0].link) return false;
|
||||
if(type=='string'&&player.countMark('olbixin_'+lib.skill.olbixin.map[button.link])>=num) return false;
|
||||
if(type!='string'&&!player.hasUseTarget({name:button.link[2],nature:button.link[3]})) return false;
|
||||
return true;
|
||||
}).set('ai',button=>{
|
||||
var list=_status.event.list;
|
||||
var type=typeof button.link;
|
||||
if(type=='string') return (1.2-list.indexOf(lib.skill.olbixin.map[button.link]))*10;
|
||||
return _status.event.player.getUseValue({name:button.link[2],nature:button.link[3]});
|
||||
}).set('list',types.map(i=>[i,player.getCards('h',{type:i}).map(i=>get.value(i)).reduce((p,c)=>p+c,0)]).sort((a,b)=>a[1]-b[1]).map(i=>i[0]));
|
||||
}else event.finish();
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
if(typeof result.links[0]!='string') result.links.reverse();
|
||||
var type=result.links[0],name=result.links[1][2],nature=result.links[1][3];
|
||||
player.logSkill('olbixin');
|
||||
game.log(player,'声明了',type+'牌');
|
||||
type=lib.skill.olbixin.map[type];
|
||||
event.type=type;
|
||||
event.card={name:name,nature:nature};
|
||||
player.addMark('olbixin_'+type,1,false);
|
||||
player.draw(player.countMark('olbixin')>=3?1:3);
|
||||
game.delayx();
|
||||
}else event.finish();
|
||||
'step 2'
|
||||
if(player.hasCard(card=>get.type2(card)==event.type,'h')){
|
||||
var cards=player.getCards('h',card=>get.type2(card)==event.type);
|
||||
var cardx=get.autoViewAs(card,cards);
|
||||
if(player.hasUseTarget(cardx,true,false)){
|
||||
player.chooseUseTarget(cardx,cards,true,false).set('prompt','选择'+get.translation(cardx)+'('+get.translation(cards)+')的目标');
|
||||
}
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
full:{
|
||||
enable:'chooseToUse',
|
||||
filter:function(event,player){
|
||||
if(event.olbixin) return false;
|
||||
var count=player.countMark('olbixin');
|
||||
if(count<=2) return false;
|
||||
var num=count>=3?3:1;
|
||||
var types=['basic','trick','equip'].filter(type=>{
|
||||
return player.countMark('olbixin_'+type)<num;
|
||||
});
|
||||
if(!types.length) return false;
|
||||
return lib.skill.olbixin.getList(player,event).length>0;
|
||||
},
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
var list=lib.skill.olbixin.getList(player,event);
|
||||
var types=['basic','trick','equip'];
|
||||
return ui.create.dialog(
|
||||
'###笔心###<div class="text center">摸一张牌,然后将所有指定类型的手牌当一张基本牌使用</div>',
|
||||
[types.map(i=>get.translation(i)),'tdnodes'],
|
||||
[list,'vcard']
|
||||
);
|
||||
},
|
||||
filter:function(button,player){
|
||||
var player=_status.event.player,count=player.countMark('olbixin'),num=count>=3?3:1;
|
||||
var type=typeof button.link;
|
||||
if(ui.selected.buttons.length&&type==typeof ui.selected.buttons[0].link) return false;
|
||||
if(type=='string'&&player.countMark('olbixin_'+lib.skill.olbixin.map[button.link])>=num) return false;
|
||||
if(type!='string'&&!_status.event.getParent().filterCard({name:button.link[2],nature:button.link[3]},player,_status.event.getParent())) return false;
|
||||
return true;
|
||||
},
|
||||
select:2,
|
||||
check:function(button){
|
||||
var types=['basic','trick','equip'];
|
||||
var type=typeof button.link;
|
||||
var player=_status.event.player;
|
||||
var list=types.map(i=>[i,player.getCards('h',{type:i}).map(i=>get.value(i)).reduce((p,c)=>p+c,0)]).sort((a,b)=>a[1]-b[1]).map(i=>i[0]);
|
||||
if(type=='string') return (1.2-list.indexOf(button.link)+Math.sqrt(3-player.countMark('olbixin_'+lib.skill.olbixin.map[button.link])))*10;
|
||||
if(_status.event.getParent().type!='phase') return 1;
|
||||
return player.getUseValue({name:button.link[2],nature:button.link[3]});
|
||||
},
|
||||
backup:function(links,player){
|
||||
if(typeof links[0]!='string') links.reverse();
|
||||
return {
|
||||
popname:true,
|
||||
position:'h',
|
||||
filterCard:()=>false,
|
||||
selectCard:-1,
|
||||
type:lib.skill.olbixin.map[links[0]],
|
||||
viewAs:{name:links[1][2],nature:links[1][3]},
|
||||
precontent:function(){
|
||||
'step 0'
|
||||
player.logSkill('olbixin');
|
||||
var type=lib.skill.olbixin_full_backup.type;
|
||||
game.log(player,'声明了',type,'牌');
|
||||
delete event.result.skill;
|
||||
player.addMark('olbixin_'+type,1,false);
|
||||
player.draw(player.countMark('olbixin')>=3?1:3);
|
||||
'step 1'
|
||||
var cards=player.getCards('h',card=>get.type2(card)==lib.skill.olbixin_full_backup.type);
|
||||
var cardsx=cards.filter(i=>game.checkMod(i,player,'unchanged','cardEnabled2',player)!==false);
|
||||
if(cardsx.length&&cardsx.length==cards.length){
|
||||
event.result.cards=cards;
|
||||
game.delayx();
|
||||
}
|
||||
else{
|
||||
event.cancel();
|
||||
event.getParent().set('olbixin',true);
|
||||
event.getParent().goto(0);
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
prompt:function(links,player){
|
||||
return '摸一张牌,然后将所有'+get.translation(links[0])+'牌当做'+(get.translation(links[1][3])||'')+get.translation(links[1][2])+'使用';
|
||||
}
|
||||
},
|
||||
hiddenCard:function(player,name){
|
||||
var count=player.countMark('olbixin');
|
||||
if(!lib.inpile.contains(name)||get.type(name)!='basic'||count<3) return false;
|
||||
var types=['basic','trick','equip'].filter(type=>{
|
||||
return player.countMark('olbixin_'+type)<3;
|
||||
});
|
||||
return types.length;
|
||||
},
|
||||
ai:{
|
||||
fireAttack:true,
|
||||
respondSha:true,
|
||||
respondShan:true,
|
||||
skillTagFilter:function(player){
|
||||
var count=player.countMark('olbixin');
|
||||
if(count<3) return;
|
||||
var types=['basic','trick','equip'].filter(type=>{
|
||||
return player.countMark('olbixin_'+type)<3;
|
||||
});
|
||||
if(types.length) return true;
|
||||
},
|
||||
order:1,
|
||||
result:{
|
||||
player:function(player){
|
||||
if(_status.event.dying) return get.attitude(player,_status.event.dying);
|
||||
return 1;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
full_backup:{},
|
||||
}
|
||||
},
|
||||
olximo:{
|
||||
audio:2,
|
||||
trigger:{player:'logSkill'},
|
||||
derivation:'olfeibai',
|
||||
filter:function(event,player){
|
||||
return event.skill=='olbixin'&&player.countMark('olbixin')<3;
|
||||
},
|
||||
forced:true,
|
||||
content:function(){
|
||||
player.addMark('olbixin',1,false);
|
||||
game.log(player,'删除了','#g【笔心】','描述的前五个字符');
|
||||
if(player.countMark('olbixin')==3){
|
||||
game.log(player,'交换了','#g【笔心】','方括号中的两个数字');
|
||||
player.removeSkill('olximo');
|
||||
game.log(player,'失去了技能','#g【洗墨】');
|
||||
player.addSkillLog('olfeibai');
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
combo:'olbixin',
|
||||
}
|
||||
},
|
||||
olfeibai:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
source:'damageBegin1',
|
||||
player:'recoverBegin',
|
||||
},
|
||||
filter:function(event,player){
|
||||
var storage=player.storage.olfeibai;
|
||||
var evt=event.getParent(),card=event.card;
|
||||
if(evt.player!=player||!card) return false;
|
||||
if(storage&&event.name=='recover'){
|
||||
return get.color(card)!='red';
|
||||
}
|
||||
if(!storage&&event.name=='damage'){
|
||||
return get.color(card)!='black';
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
player.changeZhuanhuanji('olfeibai');
|
||||
trigger.num++;
|
||||
},
|
||||
zhuanhuanji:true,
|
||||
forced:true,
|
||||
mark:true,
|
||||
marktext:'☯',
|
||||
intro:{
|
||||
content:function(storage,player){
|
||||
if(storage) return '转换技。当你因执行你使用的非红色牌的效果而回复体力时,此回复值+1。';
|
||||
return '转换技。当你因执行你使用的非黑色牌的效果而造成伤害时,此伤害值+1。';
|
||||
},
|
||||
},
|
||||
},
|
||||
//新诸葛瑾
|
||||
olhuanshi:{
|
||||
audio:'huanshi',
|
||||
|
@ -7632,7 +8154,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
else event.finish();
|
||||
'step 3'
|
||||
targets[0].gain(card,result.targets[0],'give');
|
||||
result.targets[0].gain(card,result.targets[0],'give').giver=player;
|
||||
},
|
||||
ai:{
|
||||
order:4,
|
||||
|
@ -19496,6 +20018,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(num<4) str+='</span>';
|
||||
return str;
|
||||
},
|
||||
olbixin:function(player){
|
||||
var count=player.countMark('olbixin');
|
||||
if(count<3) return lib.translate.olbixin_info.slice(count*5);
|
||||
return '你可以声明一种牌的类型(每种类型限[3]次),并选择一种你本轮未使用过且有合法目标的的基本牌。你摸[1]张牌,然后若你有此类型的手牌,你将所有此类型的手牌当此基本牌使用。';
|
||||
},
|
||||
olfeibai:function(player){
|
||||
if(player.storage.olfeibai) return '转换技,锁定技。阴:当你因执行你使用的非黑色牌的效果而造成伤害时,此伤害值+1;<span class="bluetext">阳:当你因执行你使用的非红色牌的效果而回复体力时,此回复值+1。</span>';
|
||||
return '转换技,锁定技。<span class="bluetext">阴:当你因执行你使用的非黑色牌的效果而造成伤害时,此伤害值+1;</span>阳:当你因执行你使用的非红色牌的效果而回复体力时,此回复值+1。'
|
||||
},
|
||||
},
|
||||
characterReplace:{
|
||||
caoshuang:['caoshuang','ns_caoshuang'],
|
||||
|
@ -19537,6 +20068,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
huangzu:['dc_huangzu','huangzu'],
|
||||
huojun:['huojun','tw_huojun'],
|
||||
zhaoyǎn:['dc_zhaoyǎn','zhaoyǎn'],
|
||||
furong:['ol_furong','furong'],
|
||||
},
|
||||
translate:{
|
||||
"xinfu_lingren":"凌人",
|
||||
|
@ -20535,11 +21067,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xindiaodu:"调度",
|
||||
xindiaodu_info:"①每回合限一次,与你势力相同的角色使用装备牌时,其可以摸一张牌。②出牌阶段开始时,你可以获得与你势力相同的一名角色装备区内的一张牌,然后你可以将此牌交给另一名与你势力相同的其他角色。",
|
||||
olhuanshi:'缓释',
|
||||
olhuanshi_info:'一名角色的判定牌生效前,你可以令其观看你的牌并其中的一张牌,你打出此牌代替判定牌。然后你可以重铸任意张牌(每回合限重铸一次)。',
|
||||
olhuanshi_info:'一名角色的判定牌生效前,你可以令其观看你的牌并选择其中的一张牌,你打出此牌代替判定牌。然后你可以重铸任意张牌(每回合限重铸一次)。',
|
||||
olhongyuan:'弘援',
|
||||
olhongyuan_info:'每阶段限一次。当你一次性获得至少两张牌以后,你可以将至多两张牌交给等量名角色。',
|
||||
olmingzhe:'明哲',
|
||||
olmingzhe_info:'锁定技。当你于出牌阶段外失去红色牌后,你展示这些牌中所有背面朝上移动的牌(没有则不展示),然后摸一张牌。',
|
||||
ahuinan:'阿会喃',
|
||||
jueman:'蟨蛮',
|
||||
jueman_info:'锁定技。一名角色的回合结束时,若本回合被使用过的基本牌数不小于2,且前两张基本牌的使用者:均不为你,你视为使用本回合被使用的第三张基本牌;有且仅有其中之一为你,你摸一张牌。',
|
||||
ol_liuba:'刘巴',
|
||||
oltongduo:'统度',
|
||||
oltongduo_info:'准备阶段,你可以令一名角色交给你一张手牌,然后出牌阶段结束时,你将此牌置于牌堆顶。',
|
||||
olzhubi:'铸币',
|
||||
olzhubi_tag:'币',
|
||||
olzhubi_info:'①出牌阶段限X次(X为你的体力上限)。你可以令一名角色重铸一张牌,以此法获得的牌称为“币”。②一名角色的结束阶段,若其有“币”,其观看牌堆底的五张牌,然后可以用任意“币”交换其中等量张牌。',
|
||||
ol_furong:'傅肜',
|
||||
olxiaosi:'效死',
|
||||
olxiaosi_info:'出牌阶段限一次。你可以选择一名有手牌的其他角色并弃置一张基本牌。若其有可被弃置的基本牌,其弃置一张基本牌。然后你可以以任意顺序使用你与其以此法弃置的牌(无距离和次数限制)。最后若其未以此法弃置牌,你摸一张牌。',
|
||||
zhangzhi:'张芝',
|
||||
olbixin:'笔心',
|
||||
olbixin_info:'一名角色的准备阶段或结束阶段,你可以声明一种牌的类型(每种类型限[1]次),并选择一种你本轮未使用过且有合法目标的的基本牌。你摸[3]张牌,然后若你有此类型的手牌,你将所有此类型的手牌当此基本牌使用。',
|
||||
olximo:'洗墨',
|
||||
olximo_info:'锁定技。当你发动〖笔心〗后,你移除其描述的前五个字符。若你已发动三次〖笔心〗,交换中括号中的两个数字,失去〖洗墨〗并获得〖飞白〗。',
|
||||
olfeibai:'飞白',
|
||||
olfeibai_info:'转换技,锁定技。阴:当你因执行你使用的非黑色牌的效果而造成伤害时,此伤害值+1;阳:当你因执行你使用的非红色牌的效果而回复体力时,此回复值+1。',
|
||||
|
||||
sp_tianji:'天极·皇室宗亲',
|
||||
sp_sibi:'四弼·辅国文曲',
|
||||
|
|
2139
character/sp2.js
|
@ -775,6 +775,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
locked:false,
|
||||
audio:2,
|
||||
audioname:['sb_zhenji'],
|
||||
enable:['chooseToRespond','chooseToUse'],
|
||||
filterCard:function(card){
|
||||
return get.color(card)=='black';
|
||||
|
@ -2420,10 +2421,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(event.name=='dying') return true;
|
||||
if(event.giver!=player) return false;
|
||||
if(event.name=='gain'){
|
||||
return event.getg(event.player).length>0;
|
||||
return event.player!=player&&event.getg(event.player).length>0;
|
||||
}
|
||||
return game.hasPlayer(function(current){
|
||||
return event.getg(current).length>0;
|
||||
return current!=player&&event.getg(current).length>0;
|
||||
});
|
||||
},
|
||||
direct:true,
|
||||
|
@ -2431,7 +2432,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 0'
|
||||
if(trigger.name!='loseAsync') event.targets=[trigger.player];
|
||||
else event.targets=game.filterPlayer(function(current){
|
||||
return trigger.getg(current).length>0;
|
||||
return current!=player&&trigger.getg(current).length>0;
|
||||
});
|
||||
'step 1'
|
||||
var target=event.targets.shift();
|
||||
|
|
|
@ -889,7 +889,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
order:10,
|
||||
result:{
|
||||
player:1,
|
||||
player:function(player){
|
||||
if(_status.event.dying) return get.attitude(player,_status.event.dying)>0;
|
||||
return 1;
|
||||
},
|
||||
},
|
||||
},
|
||||
group:['twyingji_wuxie'],
|
||||
|
|
|
@ -1529,7 +1529,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"weilu_effect2":"威虏",
|
||||
"weilu_effect2_info":"",
|
||||
"xinfu_zengdao":"赠刀",
|
||||
"xinfu_zengdao_info":"限定技,出牌阶段,你可以将装备牌内的任意张牌置于一名其他角色的武将牌旁,称之为「刀」。该角色造成伤害时,其须移去一张「刀」,然后此伤害+1。",
|
||||
"xinfu_zengdao_info":"限定技,出牌阶段,你可以将装备区内的任意张牌置于一名其他角色的武将牌旁,称之为“刀”。该角色造成伤害时,其须移去一张“刀”,然后此伤害+1。",
|
||||
"xinfu_zengdao2":"赠刀",
|
||||
"xinfu_zengdao2_info":"",
|
||||
"xinfu_guanwei":"观微",
|
||||
|
|
|
@ -13,10 +13,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
yijiang_2015:['caoxiu','caorui','zhongyao','xiahoushi','liuchen','zhangyi','zhuzhi','quancong','sunxiu','gongsunyuan','guotufengji'],
|
||||
yijiang_2016:['guohuanghou','sunziliufang','huanghao','liyan','sundeng','cenhun','zhangrang','liuyu'],
|
||||
yijiang_2017:['xinxianying','jikang','wuxian','qinmi','xuezong','xushi','caiyong','caojie'],
|
||||
yijiang_2022:['lukai','kebineng','zhugeshang'],
|
||||
yijiang_2022:['lukai','kebineng','zhugeshang','liwan'],
|
||||
},
|
||||
},
|
||||
character:{
|
||||
liwan:['female','wei',3,['liandui','biejun']],
|
||||
zhugeshang:['male','shu',3,['sangu','yizu']],
|
||||
kebineng:['male','qun',4,['kousheng']],
|
||||
lukai:['male','wu',4,['lkbushi','lkzhongzhuang']],
|
||||
|
@ -28,7 +29,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhangchunhua:['female','wei',3,['jueqing','shangshi']],
|
||||
caozhi:['male','wei',3,['luoying','jiushi']],
|
||||
caochong:['male','wei',3,['chengxiang','renxin']],
|
||||
xunyou:['male','wei',3,['qice','zhiyu']],
|
||||
xunyou:['male','wei',3,['qice','zhiyu'],['clan:颍川荀氏']],
|
||||
xin_xushu:['male','shu',3,['xinwuyan','xinjujian']],
|
||||
xin_masu:['male','shu',3,['olsanyao','rezhiman']],
|
||||
zhuran:['male','wu',4,['danshou']],
|
||||
|
@ -103,6 +104,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
yujin:["male","wei",4,["yizhong"],[]],
|
||||
},
|
||||
characterIntro:{
|
||||
liwan:'李婉(生卒年不详),字淑文,里居不详,贾充之妻,魏晋时期才女,约景元年间(260年前后)在世。著有《典戒》。《隋书·经籍志》载李婉有文集一卷,今失传。',
|
||||
zhugeshang:'诸葛尚(244年2月-263年11月),琅琊阳都(今山东沂南)人,诸葛瞻长子,诸葛亮之孙。诸葛尚博览兵书且精通武艺。炎兴元年(公元263年),出任先锋,抗拒魏国大将邓艾,与其父诸葛瞻同战死于绵竹,时年十九岁。',
|
||||
kebineng:'轲比能(?~235年),为中国三国时期的鲜卑首领之一。轲比能出身鲜卑支部,因他作战勇敢,执法公平,不贪财物,所以被鲜卑民众推举为大人。轲比能因其部落近塞,所以他抓住有利条件积极学习汉族先进技术和文化,促进了鲜卑族的进步和北方的民族融合。轲比能统率下的部众,战守有法,战斗力相当强大。自曹操北征后向曹氏进贡表示效忠。魏文帝时,轲比能受封附义王。轲比能在进行部落统一战争时,受魏国干涉,受沉重打击,于是对魏怀贰,献书魏帝表忠,以麻痹魏庭,使之放松警惕。此后,轲比能的部众变得强盛,控弦十余万骑,为害魏国边境。每次钞略得财物,轲比能都公开透明地均平分配,所以得部众死力,各部大人都敬畏之。实力强大后,他继续部落统一战争,于是威行诸部落,建立起强大的鲜卑族政权。深感威胁的魏国幽州刺史王雄派刺客韩龙将其刺杀,其政权立刻崩溃,鲜卑民族再次陷入混战。',
|
||||
lukai:'陆凯(198-269年),字敬风,吴郡吴县(今江苏省苏州市)人。三国时期吴国重臣,丞相陆逊的族侄,大司马陆抗的族兄。黄武年间,举孝廉出身,曾任永兴县长、诸暨县长,颇有治绩。拜建武都尉、儋耳太守,与聂友率军讨伐朱崖和儋耳,迁建武校尉。五凤二年(255年),讨斩零陵山贼陈毖,拜偏将军、巴丘督,册封都乡侯。迁武昌右部督,随军进入寿春。后拜荡魏将军,加号绥远将军。吴景帝孙休继位,拜征北将军、假节、领豫州牧。孙皓即位,迁任镇西大将军,都督巴丘,又领荆州牧,进封嘉兴侯。宝鼎元年(266年),迁左丞相。以正直及屡次劝谏孙皓而闻名。建衡元年(269年),去世,时年七十二。',
|
||||
|
@ -201,6 +203,131 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhonghui:['jiangwei'],
|
||||
},
|
||||
skill:{
|
||||
//李婉
|
||||
liandui:{
|
||||
audio:2,
|
||||
trigger:{global:'useCard'},
|
||||
filter:function(event,player){
|
||||
var history=game.getAllGlobalHistory('useCard');
|
||||
var index=history.indexOf(event);
|
||||
if(index<=0) return false;
|
||||
var previous=history[index-1].player;
|
||||
if(event.player==player&&previous!=player&&previous.isIn()) return true;
|
||||
if(event.player!=player&&previous==player) return true;
|
||||
return false;
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var history=game.getAllGlobalHistory('useCard');
|
||||
var index=history.indexOf(trigger);
|
||||
var previous=history[index-1].player;
|
||||
var user=trigger.player,target=previous;
|
||||
event.user=user;event.target=target;
|
||||
if(user){
|
||||
user.chooseBool('是否对'+get.translation(target)+'发动【联对】?','令'+get.translation(target)+'摸两张牌').set('ai',()=>_status.event.bool).set('bool',get.effect(target,{name:'wuzhong'},user,user)>0);
|
||||
}
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
event.user.logSkill('liandui',target);
|
||||
target.draw(2);
|
||||
}
|
||||
}
|
||||
},
|
||||
biejun:{
|
||||
audio:2,
|
||||
global:'biejun_give',
|
||||
trigger:{player:'damageBegin4'},
|
||||
filter:function(event,player){
|
||||
return !player.hasSkill('biejun_used')&&player.countCards('h',card=>{
|
||||
return card.hasGaintag('biejun');
|
||||
})==0;
|
||||
},
|
||||
prompt2:'翻面并防止此伤害',
|
||||
check:function(event,player){
|
||||
return player.isTurnedOver()||event.num>=player.hp||get.distance(_status.currentPhase,player,'absolute')>=3;
|
||||
},
|
||||
content:function(){
|
||||
player.addTempSkill('biejun_used');
|
||||
player.turnOver();
|
||||
trigger.cancel();
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
|
||||
if(get.tag(card,'damage')){
|
||||
if(player.getNext()==target&&lib.skill.biejun.filter(null,target)&&target.isTurnedOver()) return [0,1];
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
used:{charlotte:true},
|
||||
give:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
if(!player.countCards('h')) return false;
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return current!=player&¤t.hasSkill('biejun');
|
||||
});
|
||||
if(!targets.length) return false;
|
||||
return true;
|
||||
},
|
||||
selectCard:1,
|
||||
filterCard:true,
|
||||
filterTarget:function(card,player,target){
|
||||
return target.hasSkill('biejun');
|
||||
},
|
||||
selectTarget:function(){
|
||||
var player=_status.event.player;
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return current!=player&¤t.hasSkill('biejun');
|
||||
});
|
||||
return targets.length>1?1:-1;
|
||||
},
|
||||
complexSelect:true,
|
||||
prompt:function(){
|
||||
var player=_status.event.player;
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return current!=player&¤t.hasSkill('biejun');
|
||||
});
|
||||
return '将一张手牌交给'+get.translation(targets)+(targets.length>1?'中的一人':'');
|
||||
},
|
||||
position:'h',
|
||||
discard:false,
|
||||
lose:false,
|
||||
delay:false,
|
||||
check:function(card){
|
||||
var player=_status.event.player;
|
||||
if(game.hasPlayer(function(current){
|
||||
return lib.skill.biejun_give.filterTarget(null,player,current)&&get.attitude(player,current)>0;
|
||||
})){
|
||||
return 5-get.value(card);
|
||||
}
|
||||
return -get.value(card);
|
||||
},
|
||||
content:function(){
|
||||
game.trySkillAudio('biejun',target);
|
||||
player.give(cards,target).gaintag.add('biejun');
|
||||
target.addTempSkill('biejun_tag');
|
||||
},
|
||||
ai:{
|
||||
order:2,
|
||||
result:{target:1},
|
||||
},
|
||||
},
|
||||
tag:{
|
||||
charlotte:true,
|
||||
forced:true,
|
||||
onremove:function(player){
|
||||
player.removeGaintag('biejun');
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
//诸葛尚
|
||||
sangu:{
|
||||
audio:2,
|
||||
|
@ -469,7 +596,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{source:'damageSource'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(!event.card.storage||!event.card.storage.kousheng||event.getParent().type!='card') return false;
|
||||
if(!event.card||!event.card.storage||!event.card.storage.kousheng||event.getParent().type!='card') return false;
|
||||
var target=event.player;
|
||||
return target.isIn()&&player.hasCard(function(card){
|
||||
return card.hasGaintag('kousheng');
|
||||
|
@ -2337,11 +2464,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
fenli:{
|
||||
audio:2,
|
||||
audioname:['xin_zhuhuan'],
|
||||
group:['fenli_draw','fenli_use','fenli_discard'],
|
||||
subfrequent:['discard'],
|
||||
subSkill:{
|
||||
draw:{
|
||||
audio:'fenli',
|
||||
audioname:['xin_zhuhuan'],
|
||||
trigger:{player:'phaseDrawBefore'},
|
||||
prompt:'是否发动【奋励】跳过摸牌阶段?',
|
||||
filter:function(event,player){
|
||||
|
@ -2359,6 +2488,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
use:{
|
||||
audio:'fenli',
|
||||
audioname:['xin_zhuhuan'],
|
||||
trigger:{player:'phaseUseBefore'},
|
||||
prompt:'是否发动【奋励】跳过出牌阶段?',
|
||||
filter:function(event,player){
|
||||
|
@ -2377,6 +2507,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
discard:{
|
||||
audio:'fenli',
|
||||
audioname:['xin_zhuhuan'],
|
||||
trigger:{player:'phaseDiscardBefore'},
|
||||
prompt:'是否发动【奋励】跳过弃牌阶段?',
|
||||
frequent:true,
|
||||
|
@ -10554,6 +10685,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhichi:{
|
||||
audio:2,
|
||||
trigger:{player:'damageEnd'},
|
||||
audioname:['re_chengong'],
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return _status.currentPhase!=player;
|
||||
|
@ -12672,13 +12804,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
caozhen:['re_caozhen','xin_caozhen','caozhen','old_caozhen'],
|
||||
wuyi:['re_wuyi','wuyi'],
|
||||
sunluban:['re_sunluban','xin_sunluban','sunluban'],
|
||||
zhuhuan:['re_zhuhuan','zhuhuan','old_zhuhuan'],
|
||||
zhuhuan:['re_zhuhuan','xin_zhuhuan','zhuhuan','old_zhuhuan'],
|
||||
caoxiu:['re_caoxiu','caoxiu','old_caoxiu'],
|
||||
xiahoushi:['re_xiahoushi','xiahoushi'],
|
||||
zhangyi:['re_zhangyi','zhangyi'],
|
||||
quancong:['old_quancong','re_quancong','xin_quancong','quancong'],
|
||||
sunxiu:['re_sunxiu','xin_sunxiu','sunxiu'],
|
||||
zhuzhi:['zhuzhi','old_zhuzhi'],
|
||||
zhuzhi:['zhuzhi','xin_zhuzhi','old_zhuzhi'],
|
||||
liuyu:['dc_liuyu','liuyu','ol_liuyu'],
|
||||
zhangrang:['zhangrang','ol_zhangrang','junk_zhangrang'],
|
||||
jikang:['re_jikang','jikang'],
|
||||
|
@ -12693,6 +12825,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
guohuanghou:['re_guohuanghou','guohuanghou'],
|
||||
liuchen:['re_liuchen','liuchen'],
|
||||
liufeng:['re_liufeng','liufeng'],
|
||||
sundeng:['re_sundeng','sundeng'],
|
||||
caiyong:['re_caiyong','caiyong'],
|
||||
chengong:['re_chengong','chengong'],
|
||||
},
|
||||
translate:{
|
||||
old_huaxiong:'华雄',
|
||||
|
@ -13293,6 +13428,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sangu_info:'出牌阶段结束时,你可以选择至多三个{【杀】或不为notarget或singleCard的普通锦囊牌}中的牌名,然后令一名其他角色记录这些牌名。该角色的下个出牌阶段开始时,其的手牌均视为其记录中的第一张牌直到此阶段结束,且当其使用或打出牌时,移除这些牌中的第一张牌。若你以此法选择过的牌名中包含你本阶段内未使用过的牌名,则你失去1点体力。',
|
||||
yizu:'轶祖',
|
||||
yizu_info:'锁定技。每回合限一次,当你成为【杀】或【决斗】的目标后,若你的体力值不大于使用者的体力值,则你回复1点体力。',
|
||||
liwan:'李婉',
|
||||
liandui:'联对',
|
||||
liandui_info:'①当你使用牌时,若本局游戏内上一张被使用的牌的使用者不为你,你可以令其摸两张牌。②其他角色使用牌时,若本局游戏内上一张被使用的牌的使用者为你,其可以令你摸两张牌。',
|
||||
biejun:'别君',
|
||||
biejun_info:'①其他角色的出牌阶段限一次。其可以将一张手牌交给你。②每回合限一次。当你受到伤害时,若你手牌中没有本回合因〖别君①〗获得的牌,你可以翻面并防止此伤害。',
|
||||
|
||||
yijiang_2011:'一将成名2011',
|
||||
yijiang_2012:'一将成名2012',
|
||||
|
|
1622
game/asset.js
150
game/game.js
|
@ -26,6 +26,7 @@
|
|||
cardMove:[],
|
||||
custom:[],
|
||||
useCard:[],
|
||||
changeHp:[],
|
||||
}],
|
||||
cardtag:{
|
||||
yingbian_zhuzhan:[],
|
||||
|
@ -7163,9 +7164,6 @@
|
|||
}
|
||||
return list;
|
||||
};
|
||||
Array.prototype.find=function(item){
|
||||
return this.indexOf(item);
|
||||
};
|
||||
Array.prototype.contains=function(item){
|
||||
return this.indexOf(item)!=-1;
|
||||
};
|
||||
|
@ -7189,7 +7187,7 @@
|
|||
for(var i=0;i<item.length;i++) this.remove(item[i]);
|
||||
return;
|
||||
}
|
||||
var pos=this.find(item);
|
||||
var pos=this.indexOf(item);
|
||||
if(pos==-1){
|
||||
return false;
|
||||
}
|
||||
|
@ -7662,7 +7660,7 @@
|
|||
}
|
||||
var extcontent=localStorage.getItem(lib.configprefix+'extension_'+lib.config.extensions[i]);
|
||||
if(extcontent){
|
||||
var backup_onload=lib.init.onload;
|
||||
//var backup_onload=lib.init.onload;
|
||||
_status.evaluatingExtension=true;
|
||||
try{
|
||||
eval(extcontent);
|
||||
|
@ -7670,7 +7668,7 @@
|
|||
catch(e){
|
||||
console.log(e);
|
||||
}
|
||||
lib.init.onload=backup_onload;
|
||||
//lib.init.onload=backup_onload;
|
||||
_status.evaluatingExtension=false;
|
||||
}
|
||||
else if(lib.config.mode!='connect'||(!localStorage.getItem(lib.configprefix+'directstart')&&show_splash)){
|
||||
|
@ -10388,6 +10386,12 @@
|
|||
zhengsu_leijin_info:'回合内所有于出牌阶段使用的牌点数递增且不少于三张。',
|
||||
zhengsu_bianzhen_info:'回合内所有于出牌阶段使用的牌花色相同且不少于两张。',
|
||||
zhengsu_mingzhi_info:'回合内所有于弃牌阶段弃置的牌花色均不相同且不少于两张。',
|
||||
db_atk:'策略',
|
||||
db_atk1:'全军出击',
|
||||
db_atk2:'分兵围城',
|
||||
db_def:'策略',
|
||||
db_def1:'奇袭粮道',
|
||||
db_def2:'开城诱敌',
|
||||
},
|
||||
element:{
|
||||
content:{
|
||||
|
@ -10925,12 +10929,22 @@
|
|||
},
|
||||
chooseToDuiben:function(){
|
||||
'step 0'
|
||||
game.log(player,'对',target,'发起了','#y对策');
|
||||
if(!event.namelist) event.namelist=['全军出击','分兵围城','奇袭粮道','开城诱敌'];
|
||||
game.broadcastAll(function(list){
|
||||
var list2=['db_atk1','db_atk2','db_def1','db_def2'];
|
||||
for(var i=0;i<4;i++){
|
||||
lib.card[list2[i]].image='card/'+list2[i]+(list[0]=='全军出击'?'':'_'+list[i]);
|
||||
lib.translate[list2[i]]=list[i];
|
||||
}
|
||||
},event.namelist);
|
||||
if(!event.title) event.title='对策';
|
||||
game.log(player,'向',target,'发起了','#y'+event.title);
|
||||
if(!event.ai) event.ai=function(){return 1+Math.random()};
|
||||
if(_status.connectMode){
|
||||
player.chooseButtonOL([
|
||||
[player,['对策:请选择一种防御对策',[[['','','db_def2'],['','','db_def1']],'vcard']],true],
|
||||
[target,['对策:请选择一种进攻之策',[[['','','db_atk1'],['','','db_atk2']],'vcard']],true]
|
||||
],function(){},function(){return 1+Math.random()}).set('switchToAuto',function(){
|
||||
[player,[event.title+':请选择一种策略',[[['','','db_def2'],['','','db_def1']],'vcard']],true],
|
||||
[target,[event.title+':请选择一种策略',[[['','','db_atk1'],['','','db_atk2']],'vcard']],true]
|
||||
],function(){},event.ai).set('switchToAuto',function(){
|
||||
_status.event.result='ai';
|
||||
}).set('processAI',function(){
|
||||
var buttons=_status.event.dialog.buttons;
|
||||
|
@ -10947,11 +10961,11 @@
|
|||
event.goto(4);
|
||||
}
|
||||
else{
|
||||
player.chooseButton(['对策:请选择一种防御对策',[[['','','db_def2'],['','','db_def1']],'vcard']],true).ai=function(){return 1+Math.random()};
|
||||
player.chooseButton([event.title+':请选择一种策略',[[['','','db_def2'],['','','db_def1']],'vcard']],true).ai=event.ai;
|
||||
}
|
||||
'step 2'
|
||||
event.mes=result.links[0][2];
|
||||
target.chooseButton(['对策:请选择一种进攻之策',[[['','','db_atk1'],['','','db_atk2']],'vcard']],true).ai=function(){return 1+Math.random()};
|
||||
target.chooseButton([event.title+':请选择一种策略',[[['','','db_atk1'],['','','db_atk2']],'vcard']],true).ai=event.ai;
|
||||
'step 3'
|
||||
event.tes=result.links[0][2];
|
||||
'step 4'
|
||||
|
@ -10961,27 +10975,29 @@
|
|||
ui.arena.classList.add('thrownhighlight');
|
||||
game.addVideo('thrownhighlight1');
|
||||
target.$compare(game.createCard(event.tes,'',''),player,game.createCard(event.mes,'',''));
|
||||
game.log(target,'选择的进攻之策为','#g'+get.translation(event.tes));
|
||||
game.log(player,'选择的防御对策为','#g'+get.translation(event.mes));
|
||||
game.log(target,'选择的策略为','#g'+get.translation(event.tes));
|
||||
game.log(player,'选择的策略为','#g'+get.translation(event.mes));
|
||||
game.delay(0,1500);
|
||||
'step 5'
|
||||
var mes=event.mes.slice(6);
|
||||
var tes=event.tes.slice(6);
|
||||
var str;
|
||||
if(mes==tes){
|
||||
str=get.translation(player)+'对策成功';
|
||||
str=get.translation(player)+event.title+'成功';
|
||||
player.popup('胜','wood');
|
||||
target.popup('负','fire');
|
||||
game.log(player,'#g胜');
|
||||
event.result={bool:true};
|
||||
}
|
||||
else{
|
||||
str=get.translation(player)+'对策失败';
|
||||
str=get.translation(player)+event.title+'失败';
|
||||
target.popup('胜','wood');
|
||||
player.popup('负','fire');
|
||||
game.log(target,'#g胜');
|
||||
event.result={bool:false};
|
||||
}
|
||||
event.result.player=event.mes;
|
||||
event.result.target=event.tes;
|
||||
game.broadcastAll(function(str){
|
||||
var dialog=ui.create.dialog(str);
|
||||
dialog.classList.add('center');
|
||||
|
@ -11304,24 +11320,6 @@
|
|||
}
|
||||
}
|
||||
player.ai.tempIgnore=[];
|
||||
_status.globalHistory.push({
|
||||
cardMove:[],
|
||||
custom:[],
|
||||
useCard:[],
|
||||
});
|
||||
game.countPlayer2(function(current){
|
||||
current.actionHistory.push({useCard:[],respond:[],skipped:[],lose:[],gain:[],sourceDamage:[],damage:[],custom:[],useSkill:[]});
|
||||
current.stat.push({card:{},skill:{}});
|
||||
if(event.parent._roundStart){
|
||||
current.getHistory().isRound=true;
|
||||
current.getStat().isRound=true;
|
||||
}
|
||||
});
|
||||
player.getHistory().isMe=true;
|
||||
player.getStat().isMe=true;
|
||||
if(event.parent._roundStart){
|
||||
game.getGlobalHistory().isRound=true;
|
||||
}
|
||||
if(ui.land&&ui.land.player==player){
|
||||
game.addVideo('destroyLand');
|
||||
ui.land.destroy();
|
||||
|
@ -12490,7 +12488,9 @@
|
|||
if(event.type=='phase'){
|
||||
if(event.isMine()){
|
||||
event.endButton=ui.create.control('结束回合','stayleft',function(){
|
||||
if(_status.event.skill){
|
||||
var evt=_status.event;
|
||||
if(evt.name!='chooseToUse'||evt.type!='phase') return;
|
||||
if(evt.skill){
|
||||
ui.click.cancel();
|
||||
}
|
||||
ui.click.cancel();
|
||||
|
@ -16721,6 +16721,8 @@
|
|||
player.update();
|
||||
},
|
||||
changeHp:function(){
|
||||
//add to GlobalHistory
|
||||
game.getGlobalHistory().changeHp.push(event);
|
||||
//changeHujia moved here
|
||||
if(num<0&&player.hujia>0&&event.getParent().name=='damage'&&!player.hasSkillTag('nohujia')){
|
||||
event.hujia=Math.min(-num,player.hujia);
|
||||
|
@ -22691,12 +22693,14 @@
|
|||
if(this.skills.contains(skill)) return;
|
||||
var info=lib.skill[skill];
|
||||
if(!info) return;
|
||||
if(!addToSkills){
|
||||
this.skills.add(skill);
|
||||
if(!nobroadcast){
|
||||
game.broadcast(function(player,skill){
|
||||
player.skills.add(skill);
|
||||
},this,skill);
|
||||
}
|
||||
if(!addToSkills) this.skills.add(skill);
|
||||
}
|
||||
this.addSkillTrigger(skill);
|
||||
if(this.awakenedSkills.contains(skill)){
|
||||
this.awakenSkill(skill);
|
||||
|
@ -23047,9 +23051,7 @@
|
|||
},
|
||||
addTempSkill:function(skill,expire,checkConflict){
|
||||
if(this.hasSkill(skill)&&this.tempSkills[skill]==undefined) return;
|
||||
var noremove=this.skills.contains(skill);
|
||||
this.addSkill(skill,checkConflict,true);
|
||||
if(!noremove) this.skills.remove(skill);
|
||||
this.addSkill(skill,checkConflict,true,true);
|
||||
|
||||
if(!expire){
|
||||
expire='phaseAfter';
|
||||
|
@ -23088,16 +23090,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
for(var i in expire){
|
||||
if(typeof expire[i]=='string'){
|
||||
lib.hookmap[expire[i]]=true;
|
||||
}
|
||||
else if(Array.isArray(expire[i])){
|
||||
for(var j=0;j<expire.length;j++){
|
||||
lib.hookmap[expire[i][j]]=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return skill;
|
||||
},
|
||||
attitudeTo:function(target){
|
||||
|
@ -26502,7 +26494,7 @@
|
|||
allbool=true;
|
||||
};
|
||||
var totalPopulation=game.players.length+game.dead.length+1;
|
||||
var player=start;;
|
||||
var player=start;
|
||||
var globalskill='global_'+name;
|
||||
var map=_status.connectMode?lib.playerOL:game.playerMap;
|
||||
for(var iwhile=0;iwhile<totalPopulation;iwhile++){
|
||||
|
@ -26518,7 +26510,7 @@
|
|||
if(j.indexOf('hidden:')!=0) notemp.addArray(player.additionalSkills[j]);
|
||||
}
|
||||
for(var j in player.tempSkills){
|
||||
if(notemp.contains(j)) return;
|
||||
if(notemp.contains(j)) continue;
|
||||
var expire=player.tempSkills[j];
|
||||
if(expire===name||
|
||||
(Array.isArray(expire)&&expire.contains(name))||
|
||||
|
@ -27025,6 +27017,23 @@
|
|||
group_qun:{fullskin:true},
|
||||
group_key:{fullskin:true},
|
||||
group_jin:{fullskin:true},
|
||||
|
||||
db_atk1:{
|
||||
type:'db_atk',
|
||||
fullimage:true,
|
||||
},
|
||||
db_atk2:{
|
||||
type:'db_atk',
|
||||
fullimage:true,
|
||||
},
|
||||
db_def1:{
|
||||
type:'db_def',
|
||||
fullimage:true,
|
||||
},
|
||||
db_def2:{
|
||||
type:'db_def',
|
||||
fullimage:true,
|
||||
},
|
||||
},
|
||||
filter:{
|
||||
all:function(){
|
||||
|
@ -28180,8 +28189,9 @@
|
|||
else{
|
||||
player.phaseSkipped=false;
|
||||
}
|
||||
var isRound=false;
|
||||
if(!trigger.skill){
|
||||
var isRound=_status.roundSkipped;
|
||||
isRound=_status.roundSkipped;
|
||||
if(_status.seatNumSettled){
|
||||
var seatNum=player.getSeatNum();
|
||||
if(seatNum!=0){
|
||||
|
@ -28206,6 +28216,25 @@
|
|||
event.trigger('roundStart');
|
||||
}
|
||||
}
|
||||
_status.globalHistory.push({
|
||||
cardMove:[],
|
||||
custom:[],
|
||||
useCard:[],
|
||||
changeHp:[],
|
||||
});
|
||||
game.countPlayer2(function(current){
|
||||
current.actionHistory.push({useCard:[],respond:[],skipped:[],lose:[],gain:[],sourceDamage:[],damage:[],custom:[],useSkill:[]});
|
||||
current.stat.push({card:{},skill:{}});
|
||||
if(isRound){
|
||||
current.getHistory().isRound=true;
|
||||
current.getStat().isRound=true;
|
||||
}
|
||||
});
|
||||
player.getHistory().isMe=true;
|
||||
player.getStat().isMe=true;
|
||||
if(isRound){
|
||||
game.getGlobalHistory().isRound=true;
|
||||
}
|
||||
},
|
||||
},
|
||||
_usecard:{
|
||||
|
@ -29440,10 +29469,11 @@
|
|||
}
|
||||
},
|
||||
cancel:function(id){
|
||||
if(_status.event._parent_id==id&&_status.event.isMine()&&_status.paused&&_status.imchoosing){
|
||||
if(_status.event._parent_id==id){
|
||||
ui.click.cancel();
|
||||
}
|
||||
if(_status.event.id==id&&_status.event.isMine()&&_status.paused&&_status.imchoosing){
|
||||
if(_status.event.id==id){
|
||||
if(_status.event._backup) ui.click.cancel();
|
||||
ui.click.cancel();
|
||||
if(ui.confirm){
|
||||
ui.confirm.close();
|
||||
|
@ -30414,9 +30444,10 @@
|
|||
},
|
||||
import:function(type,content){
|
||||
if(type=='extension'){
|
||||
var backup_onload=lib.init.onload;
|
||||
//Anti-Cheat system updated, no need to work here
|
||||
//var backup_onload=lib.init.onload;
|
||||
game.loadExtension(content);
|
||||
lib.init.onload=backup_onload;
|
||||
//lib.init.onload=backup_onload;
|
||||
}
|
||||
else{
|
||||
if(!lib.imported[type]){
|
||||
|
@ -45162,6 +45193,7 @@
|
|||
var hidden=false;
|
||||
var notouchscroll=false;
|
||||
var forcebutton=false;
|
||||
var noforcebutton=false;
|
||||
var dialog=ui.create.div('.dialog');
|
||||
dialog.contentContainer=ui.create.div('.content-container',dialog);
|
||||
dialog.content=ui.create.div('.content',dialog.contentContainer);
|
||||
|
@ -45176,6 +45208,7 @@
|
|||
else if(arguments[i]=='hidden') hidden=true;
|
||||
else if(arguments[i]=='notouchscroll') notouchscroll=true;
|
||||
else if(arguments[i]=='forcebutton') forcebutton=true;
|
||||
else if(arguments[i]=='noforcebutton') noforcebutton=true;
|
||||
else dialog.add(arguments[i]);
|
||||
}
|
||||
if(!hidden){
|
||||
|
@ -45188,7 +45221,10 @@
|
|||
dialog.contentContainer.style.WebkitOverflowScrolling='touch';
|
||||
dialog.ontouchstart=ui.click.dragtouchdialog;
|
||||
}
|
||||
if(forcebutton){
|
||||
if(noforcebutton){
|
||||
dialog.noforcebutton=true;
|
||||
}
|
||||
else if(forcebutton){
|
||||
dialog.forcebutton=true;
|
||||
dialog.classList.add('forcebutton');
|
||||
}
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
window.noname_update={
|
||||
version:'1.9.119',
|
||||
update:'1.9.118.0.1',
|
||||
version:'1.9.120',
|
||||
update:'1.9.119',
|
||||
changeLog:[
|
||||
'联机欢乐成双模式:选将机制修改',
|
||||
'穆顺',
|
||||
'整合@copcap 编写的48个武将',
|
||||
'技能设计比赛入选稿:坂上智代',
|
||||
'其他技能调整和bug修复',
|
||||
'players://["mushun"]',
|
||||
'players://["ahuinan","chengbing","chenjiao","clan_xuncai","clan_xuncan","clan_xunchen","clan_xunshu","dc_hujinding","dc_yuejiu","dongguiren","gongsundu","key_tomoyo","leibo","liwan","liyixiejing","ol_furong","ol_liuba","panghui","re_caiyong","re_chengong","re_sundeng","re_xunyou","sb_caocao","sb_caoren","sb_ganning","sb_huanggai","sb_lvmeng","sb_machao","sb_sunquan","sb_sunshangxiang","sb_xiahoushi","sb_xuhuang","sb_zhangjiao","sb_zhenji","sb_zhouyu","shen_zhangjiao","shiyi","sp_caosong","sp_pengyang","sunlang","wangjun","wanglie","xin_caoxiu","xin_wuyi","xin_zhuzhi","yangfu","yuanji","zhangzhi","zhaozhi","zhujianping"]',
|
||||
],
|
||||
files:[
|
||||
//'card/extra.js',
|
||||
//'card/gujian.js',
|
||||
//'card/guozhan.js',
|
||||
'card/guozhan.js',
|
||||
//'card/gwent.js',
|
||||
//'card/huanlekapai.js',
|
||||
//'card/mtg.js',
|
||||
//'card/sp.js',
|
||||
//'card/standard.js',
|
||||
'card/sp.js',
|
||||
'card/standard.js',
|
||||
//'card/swd.js',
|
||||
//'card/yunchou.js',
|
||||
//'card/yingbian.js',
|
||||
//'card/yongjian.js',
|
||||
//'card/zhenfa.js',
|
||||
//'card/zhulu.js',
|
||||
//'character/clan.js',
|
||||
//'character/diy.js',
|
||||
'character/clan.js',
|
||||
'character/diy.js',
|
||||
'character/extra.js',
|
||||
//'character/hearth.js',
|
||||
//'character/gujian.js',
|
||||
|
@ -36,21 +36,21 @@ window.noname_update={
|
|||
//'character/ow.js',
|
||||
'character/rank.js',
|
||||
'character/refresh.js',
|
||||
//'character/sb.js',
|
||||
'character/shenhua.js',
|
||||
'character/sb.js',
|
||||
//'character/shenhua.js',
|
||||
'character/sp.js',
|
||||
'character/sp2.js',
|
||||
//'character/standard.js',
|
||||
//'character/tw.js',
|
||||
//'character/swd.js',
|
||||
//'character/xianjian.js',
|
||||
//'character/xinghuoliaoyuan.js',
|
||||
'character/xinghuoliaoyuan.js',
|
||||
'character/yijiang.js',
|
||||
'character/yingbian.js',
|
||||
//'character/yingbian.js',
|
||||
//'character/yxs.js',
|
||||
//'extension/boss/extension.js',
|
||||
//'font/suits.ttf',
|
||||
//'layout/default/layout.css',
|
||||
'layout/default/layout.css',
|
||||
//'layout/default/menu.css',
|
||||
//'layout/long2/layout.css',
|
||||
//'layout/mobile/equip.css',
|
||||
|
@ -67,7 +67,7 @@ window.noname_update={
|
|||
//'mode/single.js',
|
||||
//'mode/stone.js',
|
||||
//'mode/tafang.js',
|
||||
'mode/versus.js',
|
||||
//'mode/versus.js',
|
||||
'game/game.js',
|
||||
//'game/keyWords.js',
|
||||
//'game/NoSleep.js',
|
||||
|
|
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 109 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 29 KiB |
|
@ -1452,9 +1452,9 @@ div:not(.handcards)>.card>.info>span,
|
|||
width: 100%;
|
||||
}
|
||||
.buttons.guanxing {
|
||||
min-height: 106px;
|
||||
min-height: 106px !important;
|
||||
margin: 0px;
|
||||
width: 90%;
|
||||
width: 90% !important;
|
||||
}
|
||||
.buttons.smallzoom {
|
||||
display: block;
|
||||
|
|
|
@ -6518,7 +6518,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
player.line(result.targets,'green');
|
||||
if(result.cards.length){
|
||||
event.cards=result.cards;
|
||||
player.give(result.cards,result.cards[0]);
|
||||
player.give(result.cards,result.targets[0]);
|
||||
}
|
||||
else{
|
||||
player.storage.gzzhengbi_eff1=result.targets[0];
|
||||
|
@ -10114,7 +10114,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
global:['useCardToPlayered','useCardToTargeted'],
|
||||
},
|
||||
preHidden:true,
|
||||
frequent:true,
|
||||
//frequent:true,
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(event.card.name!='sha') return false;
|
||||
|
|