v1.9.117.2
|
@ -596,15 +596,19 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
cardSkill:true,
|
||||
unique:true,
|
||||
trigger:{player:'phaseDrawBegin'},
|
||||
silent:true,
|
||||
popup:false,
|
||||
charlotte:true,
|
||||
forced:true,
|
||||
content:function(){
|
||||
trigger.num--;
|
||||
},
|
||||
group:'caomu_skill2'
|
||||
},
|
||||
caomu_skill2:{
|
||||
cardSkill:true,
|
||||
popup:false,
|
||||
forced:true,
|
||||
trigger:{player:'phaseDrawAfter'},
|
||||
silent:true,
|
||||
content:function(){
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return get.distance(player,current)<=1&&player!=current;
|
||||
|
|
|
@ -2583,11 +2583,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
trigger.neutralize();
|
||||
if(event.guowuxie==true){
|
||||
if(trigger.target.identity!='ye'&&trigger.target.identity!='unknown'){
|
||||
trigger.getParent().excluded.addArray(game.filterPlayer(function(current){
|
||||
return current.identity==trigger.target.identity;
|
||||
}));
|
||||
}
|
||||
trigger.getParent().excluded.addArray(game.filterPlayer(function(current){
|
||||
return current.isFriendOf(trigger.target);
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
262
character/diy.js
|
@ -176,6 +176,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ol_guohuai:['male','wei',3,['rejingce']],
|
||||
junk_zhangrang:['male','qun',3,['junktaoluan']],
|
||||
old_bulianshi:['female','wu',3,['anxu','zhuiyi']],
|
||||
junk_sunquan:['male','shen',4,['junkyuheng','junkdili'],['wei']],
|
||||
},
|
||||
characterFilter:{
|
||||
key_jojiro:function(mode){
|
||||
|
@ -210,7 +211,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
diy_default:["diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji"],
|
||||
diy_noname:['noname'],
|
||||
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa","key_godan","key_yuu","key_ryoichi","key_kotori","key_jojiro","key_shiroha","key_shizuku","key_hiroto","key_sakuya","key_youta","key_rumi","key_chihaya","key_yukito","key_asara","key_kotomi","key_mia","key_kano","db_key_liyingxia","key_erika","key_satomi"],
|
||||
diy_trashbin:['old_jiakui','ol_guohuai','junk_zhangrang','old_bulianshi'],
|
||||
diy_trashbin:['old_jiakui','ol_guohuai','junk_zhangrang','old_bulianshi','junk_sunquan'],
|
||||
},
|
||||
},
|
||||
characterIntro:{
|
||||
|
@ -6368,20 +6369,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
kyoko_juwu:{
|
||||
trigger:{global:['loseAfter','cardsDiscardAfter','loseAsyncAfter']},
|
||||
trigger:{global:['loseAfter','cardsDiscardAfter','loseAsyncAfter','equipAfter']},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(event.name.indexOf('lose')==0&&(event.getlx===false||event.position!=ui.discardPile)) return false;
|
||||
return player!=event.player&&player!=_status.currentPhase&&event.cards&&event.cards.filter(function(card){
|
||||
return get.position(card,true)=='d'&&get.type(card,false)=='equip';
|
||||
}).length>0;
|
||||
if(player==_status.currentPhase) return false;
|
||||
var cards=event.getd();
|
||||
if(!cards.length) return false;
|
||||
cards.removeArray(event.getd(player));
|
||||
for(var card of cards){
|
||||
if(get.position(card,true)=='d'&&get.type(card,null,false)=='equip') return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(trigger.delay==false) game.delay();
|
||||
'step 1'
|
||||
var cards=trigger.cards.filter(function(card){
|
||||
return get.position(card,true)=='d'&&get.type(card,false)=='equip';
|
||||
var cards=trigger.getd();
|
||||
cards.removeArray(trigger.getd(player));
|
||||
cards=cards.filter(function(card){
|
||||
if(get.position(card,true)=='d'&&get.type(card,null,false)=='equip') return true;
|
||||
});
|
||||
player.chooseButton([get.prompt('kyoko_juwu'),cards],[1,cards.length]).set('ai',function(){return 1});
|
||||
'step 2'
|
||||
|
@ -8946,14 +8953,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audioname2:{
|
||||
wufan:'refenyin_wufan',
|
||||
},
|
||||
trigger:{global:['loseAfter','cardsDiscardAfter']},
|
||||
trigger:{global:['loseAfter','cardsDiscardAfter','equipAfter']},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(player!=_status.currentPhase) return false;
|
||||
if(event.name.indexOf('lose')==0&&(event.getlx===false||event.position!=ui.discardPile)) return false;
|
||||
var cards=event.getd();
|
||||
var list=[];
|
||||
for(var i=0;i<event.cards.length;i++){
|
||||
var card=event.cards[i];
|
||||
for(var i=0;i<cards.length;i++){
|
||||
var card=cards[i];
|
||||
list.add(card.suit);
|
||||
}
|
||||
game.getGlobalHistory('cardMove',function(evt){
|
||||
|
@ -8969,8 +8976,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
var list=[];
|
||||
var list2=[];
|
||||
for(var i=0;i<trigger.cards.length;i++){
|
||||
var card=trigger.cards[i];
|
||||
var cards=trigger.getd();
|
||||
for(var i=0;i<cards.length;i++){
|
||||
var card=cards[i];
|
||||
var suit=card.suit;
|
||||
list.add(suit);
|
||||
list2.add(suit);
|
||||
|
@ -16147,6 +16155,214 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
result:{target:-1},
|
||||
},
|
||||
},
|
||||
//比原版更令人难以吐槽的神孙权
|
||||
junkyuheng:{
|
||||
audio:'yuheng',
|
||||
trigger:{player:'phaseBegin'},
|
||||
forced:true,
|
||||
keepSkill:true,
|
||||
filter:function(event,player){
|
||||
return player.hasCard(function(card){
|
||||
return lib.filter.cardDiscardable(card,player,'junkyuheng');
|
||||
},'he');
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseToDiscard('he',true,[1,4],function(card,player){
|
||||
if(!ui.selected.cards.length) return true;
|
||||
var suit=get.suit(card,player);
|
||||
for(var i of ui.selected.cards){
|
||||
if(get.suit(i,player)==suit) return false;
|
||||
}
|
||||
return true;
|
||||
}).set('complexCard',true).set('ai',function(card){
|
||||
if(!player.hasValueTarget(card)) return 5;
|
||||
return 5-get.value(card);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var skills=lib.skill.junkyuheng.derivation.randomGets(result.cards.length);
|
||||
player.addAdditionalSkill('junkyuheng',skills);
|
||||
game.log(player,'获得了以下技能:','#g'+get.translation(skills));
|
||||
}
|
||||
},
|
||||
group:'junkyuheng_remove',
|
||||
derivation:['bingyi','shenxing','xiashu','anxu','rezhiheng','xinanguo','lanjiang','xinfu_guanwei','oldimeng','xindiaodu'],
|
||||
subSkill:{
|
||||
remove:{
|
||||
audio:'yuheng',
|
||||
trigger:{player:'phaseEnd'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return player.additionalSkills.junkyuheng&&player.additionalSkills.junkyuheng.length>0;
|
||||
},
|
||||
content:function(){
|
||||
player.draw(player.additionalSkills.junkyuheng.length);
|
||||
game.log(player,'失去了以下技能:','#g'+get.translation(player.additionalSkills.junkyuheng));
|
||||
player.removeAdditionalSkill('junkyuheng');
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
junkdili:{
|
||||
audio:'dili',
|
||||
trigger:{player:'logSkill'},
|
||||
forced:true,
|
||||
juexingji:true,
|
||||
skillAnimation:true,
|
||||
animationColor:'wood',
|
||||
filter:function(event,player){
|
||||
if(event.skill!='junkyuheng') return false;
|
||||
var skills=player.getSkills(null,false,false).filter(function(i){
|
||||
var info=get.info(i);
|
||||
return info&&!info.charlotte;
|
||||
});
|
||||
return skills.length>player.maxHp;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.awakenSkill('junkdili');
|
||||
player.loseMaxHp();
|
||||
'step 1'
|
||||
var skills=player.getSkills(null,false,false).filter(function(i){
|
||||
if(i=='junkdili') return false;
|
||||
var info=get.info(i);
|
||||
return info&&!info.charlotte;
|
||||
});
|
||||
var list=[];
|
||||
for(var skill of skills){
|
||||
list.push([
|
||||
skill,
|
||||
'<div class="popup text" style="width:calc(100% - 10px);display:inline-block"><div class="skill">【'+get.translation(skill)+'】</div><div>'+lib.translate[skill+'_info']+'</div></div>',
|
||||
])
|
||||
}
|
||||
var next=player.chooseButton([
|
||||
'请选择失去任意个技能',
|
||||
[list,'textbutton'],
|
||||
]);
|
||||
next.set('forced',true);
|
||||
next.set('selectButton',[1,skills.length]);
|
||||
next.set('ai',function(button){
|
||||
var skill=button.link,skills=_status.event.skills.slice(0);
|
||||
skills.removeArray(['xinanguo','lanjiang','rezhiheng','junkyuheng']);
|
||||
switch(ui.selected.buttons.length){
|
||||
case 0:
|
||||
if(skills.contains(skill)) return 2;
|
||||
if(skill=='junkyuheng') return 1;
|
||||
return Math.random();
|
||||
case 1:
|
||||
if(skills.length<2) return 0;
|
||||
if(skills.contains(skill)) return 2;
|
||||
if(skill=='junkyuheng') return 1;
|
||||
return 0
|
||||
case 2:
|
||||
if(skills.contains(skill)) return 2;
|
||||
if(skill=='junkyuheng') return 1;
|
||||
return 0;
|
||||
default: return 0;
|
||||
}
|
||||
});
|
||||
next.set('skills',skills)
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
var skills=result.links;
|
||||
game.log(player,'失去了以下技能:','#g'+get.translation(skills));
|
||||
player.removeSkill(skills.slice(0));
|
||||
}
|
||||
var list=lib.skill.junkdili.derivation;
|
||||
for(var i=0;i<Math.min(skills.length,list.length);i++){
|
||||
player.addSkillLog(list[i]);
|
||||
}
|
||||
},
|
||||
derivation:['junkshengzhi','junkquandao','junkchigang'],
|
||||
},
|
||||
junkshengzhi:{
|
||||
audio:'dili_shengzhi',
|
||||
trigger:{player:['logSkill','useSkillAfter']},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(event.type!='player') return false;
|
||||
var skill=event.sourceSkill||event.skill;
|
||||
if(get.is.locked(skill)) return false;
|
||||
var info=get.info(skill);
|
||||
return !info.charlotte;
|
||||
},
|
||||
content:function(){
|
||||
player.addTempSkill('junkshengzhi_effect');
|
||||
},
|
||||
subSkill:{
|
||||
effect:{
|
||||
mod:{
|
||||
cardUsable:()=>Infinity,
|
||||
targetInRange:()=>true,
|
||||
},
|
||||
trigger:{player:'useCard1'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
popup:false,
|
||||
firstDo:true,
|
||||
content:function(){
|
||||
if(trigger.addCount!==false){
|
||||
trigger.addCount=false;
|
||||
player.getStat().card[trigger.card.name]--;
|
||||
}
|
||||
player.removeSkill('junkshengzhi_effect');
|
||||
},
|
||||
mark:true,
|
||||
intro:{content:'使用下一张牌无距离和次数限制'},
|
||||
},
|
||||
},
|
||||
},
|
||||
junkquandao:{
|
||||
audio:'dili_quandao',
|
||||
trigger:{player:'useCard'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.card.name=='sha'||get.type(event.card,null,false)=='trick';
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var filter1=function(card){
|
||||
return get.name(card)=='sha';
|
||||
},filter2=function(card){
|
||||
return get.type(card)=='trick';
|
||||
};
|
||||
var num1=player.countCards('h',filter1),num2=player.countCards('h',filter2);
|
||||
if(num1!=num2){
|
||||
var delta=num1-num2;
|
||||
player.chooseToDiscard('h',true,Math.abs(delta),delta>0?filter1:filter2,'驭衡:请弃置'+get.cnNumber(Math.abs(delta))+'张'+(delta>0?'【杀】':'普通锦囊牌'));
|
||||
}
|
||||
'step 1'
|
||||
player.draw();
|
||||
},
|
||||
},
|
||||
junkchigang:{
|
||||
audio:'dili_chigang',
|
||||
trigger:{player:'phaseJudgeBefore'},
|
||||
forced:true,
|
||||
zhuanhuanji:true,
|
||||
mark:true,
|
||||
marktext:'☯',
|
||||
content:function(){
|
||||
player.changeZhuanhuanji('junkchigang');
|
||||
trigger.cancel();
|
||||
var next=player[player.storage.junkchigang?'phaseDraw':'phaseUse']();
|
||||
event.next.remove(next);
|
||||
trigger.getParent().next.push(next);
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
if(get.type(card)=='delay') return 'zerotarget';
|
||||
},
|
||||
},
|
||||
},
|
||||
intro:{
|
||||
content:function(storage){
|
||||
return '转换技,锁定技。判定阶段开始前,你取消此阶段。然后你获得一个额外的'+(storage?'出牌阶段':'摸牌阶段')+'。'
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
dynamicTranslate:{
|
||||
nsjiquan:function(player){
|
||||
|
@ -16201,6 +16417,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(player.storage.nstaiping) return '一名角色的判定牌生效前,你可以打出一张牌替换之。';
|
||||
return '一名角色的判定牌生效前,你可以打出一张黑色牌替换之。';
|
||||
},
|
||||
junkchigang:function(player){
|
||||
if(player.storage.junkchigang) return '转换技,锁定技。判定阶段开始前,你取消此阶段。然后你获得一个额外的:阴,摸牌阶段;<span class="bluetext">阳,出牌阶段。</span>';
|
||||
return '转换技,锁定技。判定阶段开始前,你取消此阶段。然后你获得一个额外的:<span class="bluetext">阴,摸牌阶段</span>;阳,出牌阶段。';
|
||||
},
|
||||
},
|
||||
characterReplace:{
|
||||
key_yuri:['key_yuri','sp_key_yuri'],
|
||||
|
@ -17136,6 +17356,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ns_caimao:'蔡瑁',
|
||||
nsdingzhou:'定州',
|
||||
nsdingzhou_info:'出牌阶段限一次,你可以选择一名区域内有牌的其他角色。你随机获得其区域内的一张牌,然后摸一张牌。若你以此法获得了两张颜色不同的牌,则你失去1点体力。',
|
||||
junk_sunquan:'改版神孙权',
|
||||
junk_sunquan_ab:'神孙权',
|
||||
junkyuheng:'驭衡',
|
||||
junkyuheng_info:'锁定技。①回合开始时,你须弃置任意张花色不同的牌,从<span style="font-family: yuanli">东吴命运线·改</span>中随机获得等量的技能。②回合结束时,你失去所有因〖驭衡①〗获得的技能,然后摸等量的牌。',
|
||||
junkdili:'帝力',
|
||||
junkdili_info:'觉醒技。当你发动〖驭衡①〗后,若你拥有的技能数大于你的体力上限,则你减1点体力上限,选择失去任意个其他技能,然后获得以下技能中的前等量个:〖圣质〗/〖权道〗/〖持纲〗。',
|
||||
junkshengzhi:'圣质',
|
||||
junkshengzhi_info:'锁定技。当你发动非锁定技后,你令你本回合使用的下一张牌无距离和次数限制。',
|
||||
junkquandao:'权道',
|
||||
junkquandao_info:'锁定技。当你使用【杀】或普通锦囊牌时,若你手牌中的【杀】或普通锦囊牌的数量之差X不为0,则你弃置X张数量较多的一种牌,然后你摸一张牌。',
|
||||
junkchigang:'持纲',
|
||||
junkchigang_info:'转换技,锁定技。判定阶段开始前,你取消此阶段。然后你获得一个额外的:阴,摸牌阶段;阳,出牌阶段。',
|
||||
ol_guohuai_ab:'郭淮',
|
||||
junk_zhangrang_ab:'张让',
|
||||
old_jiakui_ab:'贾逵',
|
||||
|
@ -17150,7 +17382,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
diy_yijiang2:'设计比赛2021',
|
||||
diy_yijiang3:'设计比赛2022',
|
||||
diy_fakenews:'假新闻',
|
||||
diy_trashbin:'垃圾桶',
|
||||
diy_trashbin:'杀海拾遗',
|
||||
old_jiakui:'贾逵重制',
|
||||
ol_guohuai:'三血郭淮',
|
||||
ns_chengpu:'铁索程普',
|
||||
|
|
|
@ -63,6 +63,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
shen_zhangliao:['shen_zhangliao','ol_zhangliao'],
|
||||
shen_zhaoyun:['shen_zhaoyun','boss_zhaoyun'],
|
||||
shen_guanyu:['shen_guanyu','tw_shen_guanyu'],
|
||||
shen_sunquan:['shen_sunquan','junk_sunquan'],
|
||||
},
|
||||
characterFilter:{
|
||||
shen_diaochan:function(mode){
|
||||
|
@ -4949,66 +4950,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return target!=player&&target.countCards('h');
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
event.videoId=lib.status.videoId++;
|
||||
'step 0'
|
||||
var cards=target.getCards('h');
|
||||
if(player.isOnline2()){
|
||||
player.send(function(cards,id){
|
||||
ui.create.dialog('攻心',cards).videoId=id;
|
||||
},cards,event.videoId);
|
||||
}
|
||||
event.dialog=ui.create.dialog('攻心',cards);
|
||||
event.dialog.videoId=event.videoId;
|
||||
if(!event.isMine()){
|
||||
event.dialog.style.display='none';
|
||||
}
|
||||
player.chooseButton().set('filterButton',function(button){
|
||||
return get.suit(button.link)=='heart';
|
||||
}).set('dialog',event.videoId);
|
||||
"step 1"
|
||||
player.chooseButton(2,[
|
||||
'攻心',
|
||||
cards,
|
||||
[['弃置此牌','置于牌堆顶'],'tdnodes'],
|
||||
]).set('filterButton',function(button){
|
||||
var type=typeof button.link;
|
||||
if(ui.selected.buttons.length&&type==typeof ui.selected.buttons[0].link) return false;
|
||||
return type=='string'||get.suit(button.link)=='heart';
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
event.card=result.links[0];
|
||||
var func=function(card,id){
|
||||
var dialog=get.idDialog(id);
|
||||
if(dialog){
|
||||
for(var i=0;i<dialog.buttons.length;i++){
|
||||
if(dialog.buttons[i].link==card){
|
||||
dialog.buttons[i].classList.add('selectedx');
|
||||
}
|
||||
else{
|
||||
dialog.buttons[i].classList.add('unselectable');
|
||||
}
|
||||
}
|
||||
}
|
||||
if(typeof result.links[0]!='string') result.links.reverse();
|
||||
var card=result.links[1],choice=result.links[0];
|
||||
if(choice=='弃置此牌') target.discard(card);
|
||||
else{
|
||||
player.showCards(card,get.translation(player)+'对'+get.translation(target)+'发动了【攻心】');
|
||||
target.lose(card,ui.cardPile,'visible','insert');
|
||||
}
|
||||
if(player.isOnline2()){
|
||||
player.send(func,event.card,event.videoId);
|
||||
}
|
||||
else if(event.isMine()){
|
||||
func(event.card,event.videoId);
|
||||
}
|
||||
player.chooseControl('gongxin_discard','gongxin_top');
|
||||
}
|
||||
else{
|
||||
if(player.isOnline2()){
|
||||
player.send('closeDialog',event.videoId);
|
||||
}
|
||||
event.dialog.close();
|
||||
event.finish();
|
||||
}
|
||||
"step 2"
|
||||
if(player.isOnline2()){
|
||||
player.send('closeDialog',event.videoId);
|
||||
}
|
||||
event.dialog.close();
|
||||
var card=event.card;
|
||||
if(result.control=='gongxin_top'){
|
||||
player.showCards(card,'置于牌堆顶');
|
||||
target.lose(card,ui.cardPile,'insert','visible');
|
||||
game.log(player,'将',event.card,'置于牌堆顶');
|
||||
}
|
||||
else{
|
||||
target.discard(card);
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
|
|
|
@ -18,7 +18,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai","re_jiangwei","re_zhurong","re_caiwenji","re_xunyu","re_dianwei"],
|
||||
mobile_yijiang1:["re_xusheng","re_lingtong","ol_yujin","re_wuguotai","re_gaoshun"],
|
||||
mobile_yijiang2:["xin_liaohua","xin_caozhang","re_liubiao","re_handang","xin_chengpu","xin_gongsunzan","re_zhonghui","re_bulianshi"],
|
||||
mobile_yijiang3:["xin_jianyong","xin_zhuran","xin_guohuai","xin_panzhangmazhong","xin_fuhuanghou","re_yufan"],
|
||||
mobile_yijiang3:["re_liru","xin_jianyong","xin_zhuran","xin_guohuai","xin_panzhangmazhong","xin_fuhuanghou","re_yufan"],
|
||||
mobile_yijiang4:["xin_zhoucang","xin_caifuren","xin_guyong","xin_sunluban","xin_caozhen","xin_jushou"],
|
||||
mobile_yijiang5:['xin_sunxiu','xin_quancong'],
|
||||
mobile_yijiang67:["re_jikang"],
|
||||
|
@ -26,6 +26,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
character:{
|
||||
re_liru:['male','qun',3,['rejuece','remieji','xinfencheng']],
|
||||
re_dianwei:["male","wei",4,["reqiangxi"]],
|
||||
xin_mamidi:['male','qun',3,['chengye','buxu']],
|
||||
ruanhui:['female','wei',3,['mingcha','jingzhong']],
|
||||
|
@ -643,7 +644,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
return false;
|
||||
},
|
||||
trigger:{global:['useCardAfter','loseAfter','cardsDiscardAfter','loseAsyncAfter']},
|
||||
trigger:{global:['useCardAfter','loseAfter','cardsDiscardAfter','loseAsyncAfter','equipAfter']},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(player==event.player) return false;
|
||||
|
@ -652,14 +653,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var cards=event.cards.filterInD();
|
||||
if(!cards.length) return false;
|
||||
}
|
||||
else if(event.name.indexOf('lose')==0){
|
||||
if(event.getlx===false||event.position!=ui.discardPile) return false;
|
||||
var cards=(event.cards2||event.cards).filter(function(card){
|
||||
if(card.original=='j'||get.position(card,true)!='d') return false;
|
||||
else if(event.name!='cardsDiscard'){
|
||||
var cards=event.getd(null,'cards2').filter(function(card){
|
||||
if(get.position(card,true)!='d') return false;
|
||||
var type=get.type(card,false);
|
||||
return type=='delay'||type=='equip';
|
||||
});
|
||||
cards.removeArray(event.getl(player).cards);
|
||||
cards.removeArray(event.getd(player,'cards2'));
|
||||
if(!cards.length) return false;
|
||||
}
|
||||
else{
|
||||
|
@ -687,13 +687,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(trigger.name=='useCard'){
|
||||
cards=trigger.cards.filterInD();
|
||||
}
|
||||
else if(trigger.name.indexOf('lose')==0){
|
||||
cards=(trigger.cards2|trigger.cards).filter(function(card){
|
||||
if(get.position(card,true)!='d') return false;
|
||||
else if(trigger.name!='cardsDiscard'){
|
||||
cards=trigger.getd().filter(function(card){
|
||||
if(card.original=='j'||get.position(card,true)!='d') return false;
|
||||
var type=get.type(card,false);
|
||||
return type=='delay'||type=='equip';
|
||||
});
|
||||
cards.removeArray(trigger.getl(player).cards);
|
||||
cards.removeArray(trigger.getd(player));
|
||||
}
|
||||
else{
|
||||
cards=trigger.cards.filter(function(card){
|
||||
|
@ -3547,7 +3547,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return card==lib.skill.jibing_backup.card;
|
||||
},
|
||||
selectCard:-1,
|
||||
position:'s',
|
||||
position:'x',
|
||||
viewAs:{name:name},
|
||||
card:card,
|
||||
}
|
||||
|
@ -3633,7 +3633,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
skillAnimation:true,
|
||||
animationColor:'metal',
|
||||
filter:function(event,player){
|
||||
return player.getStorage('jibing').length>=game.countGroup();
|
||||
return player.getExpansions('jibing').length>=game.countGroup();
|
||||
},
|
||||
content:function(){
|
||||
player.awakenSkill('moucuan');
|
||||
|
@ -5967,17 +5967,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
discard:{
|
||||
trigger:{
|
||||
global:['loseAfter','cardsDiscardAfter','loseAsyncAfter'],
|
||||
global:['loseAfter','cardsDiscardAfter','loseAsyncAfter','equipAfter'],
|
||||
},
|
||||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
return player.storage.yizhu&&player.storage.yizhu.length&&(event.name=='cardsDiscard'||(event.position==ui.discardPile&&event.getlx!==false))&&event.cards.filter(function(i){
|
||||
return player.storage.yizhu&&player.storage.yizhu.length&&event.getd().filter(function(i){
|
||||
return player.storage.yizhu.contains(i);
|
||||
}).length>0;
|
||||
},
|
||||
content:function(){
|
||||
var list=trigger.cards.filter(function(i){
|
||||
var list=trigger.getd().filter(function(i){
|
||||
return player.storage.yizhu.contains(i);
|
||||
});
|
||||
player.unmarkAuto('yizhu',list);
|
||||
|
@ -13575,14 +13575,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
rebiaozhao2:{
|
||||
trigger:{
|
||||
global:["loseAfter","cardsDiscardAfter","loseAsyncAfter"],
|
||||
global:["loseAfter","cardsDiscardAfter","loseAsyncAfter",'equipAfter'],
|
||||
},
|
||||
forced:true,
|
||||
audio:"biaozhao",
|
||||
filter:function(event,player){
|
||||
if(event.name.indexOf('lose')==0&&(event.getlx===false||event.position!=ui.discardPile||event.getParent(2).name=='rebiaozhao3')) return false;
|
||||
var cards=player.getExpansions('rebiaozhao');
|
||||
if(!cards.length) return false;
|
||||
var cards=player.getExpansions('rebiaozhao'),cards2=event.getd();
|
||||
if(!cards.length||!cards2.length) return false;
|
||||
var num=get.number(cards[0]);
|
||||
for(var i=0;i<event.cards.length;i++){
|
||||
if(get.number(event.cards[i])==num) return true;
|
||||
|
|
|
@ -1296,25 +1296,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
delete player.storage.xinfu_yanyu2;
|
||||
},
|
||||
trigger:{
|
||||
global:["loseAfter","cardsDiscardAfter","loseAsyncAfter"],
|
||||
global:["loseAfter","cardsDiscardAfter","loseAsyncAfter","equipAfter"],
|
||||
},
|
||||
direct:true,
|
||||
filter:function (event,player){
|
||||
filter:function(event,player){
|
||||
if(player.storage.xinfu_yanyu2>=3) return false;
|
||||
if(event.name.indexOf('lose')==0&&(event.getlx===false||event.position!=ui.discardPile)) return false;
|
||||
var type=player.storage.xinfu_yanyu;
|
||||
var cards=event.cards;
|
||||
var type=player.storage.xinfu_yanyu,cards=event.getd();
|
||||
for(var i=0;i<cards.length;i++){
|
||||
if(get.type(cards[i],'trick')==type&&get.position(cards[i],true)=='d') return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function (){
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.logged=false;
|
||||
event.cards=[];
|
||||
var type=player.storage.xinfu_yanyu;
|
||||
var cards=trigger.cards;
|
||||
var cards=trigger.getd();
|
||||
for(var i=0;i<cards.length;i++){
|
||||
if(get.type(cards[i],'trick')==type&&get.position(cards[i],true)=='d') event.cards.push(cards[i]);
|
||||
}
|
||||
|
|
|
@ -532,6 +532,8 @@ window.noname_character_rank={
|
|||
'fengfang',
|
||||
'prp_zhugeliang',
|
||||
'dukui',
|
||||
'quanhuijie',
|
||||
'yinfuren',
|
||||
],
|
||||
bp:[
|
||||
'chess_diaochan',
|
||||
|
@ -819,6 +821,11 @@ window.noname_character_rank={
|
|||
'zhangfen',
|
||||
'ol_dianwei',
|
||||
'wangyan',
|
||||
'chengui',
|
||||
'dc_huangquan',
|
||||
'dc_huban',
|
||||
'dingshangwan',
|
||||
're_zhuhuan',
|
||||
],
|
||||
b:[
|
||||
'diy_feishi',
|
||||
|
@ -1060,6 +1067,8 @@ window.noname_character_rank={
|
|||
're_sp_taishici',
|
||||
'dc_lvkuanglvxiang',
|
||||
'dengzhong',
|
||||
'dc_liru',
|
||||
'kebineng',
|
||||
],
|
||||
bm:[
|
||||
'diy_xizhenxihong',
|
||||
|
@ -1295,6 +1304,7 @@ window.noname_character_rank={
|
|||
'wangxiang',
|
||||
'duji',
|
||||
'bianxi',
|
||||
'junk_sunquan',
|
||||
],
|
||||
rarity:{
|
||||
legend:[
|
||||
|
@ -1419,6 +1429,7 @@ window.noname_character_rank={
|
|||
'shen_machao',
|
||||
'tw_shen_guanyu',
|
||||
'huojun',
|
||||
'quanhuijie',
|
||||
'key_tomoya',
|
||||
'key_masato',
|
||||
'key_shiorimiyuki',
|
||||
|
@ -2042,6 +2053,10 @@ window.noname_character_rank={
|
|||
'guanhai',
|
||||
'dukui',
|
||||
'ol_dianwei',
|
||||
'chengui',
|
||||
'dingshangwan',
|
||||
're_zhuhuan',
|
||||
'yinfuren',
|
||||
],
|
||||
junk:[
|
||||
'sunshao',
|
||||
|
@ -2065,6 +2080,7 @@ window.noname_character_rank={
|
|||
'duji',
|
||||
'dc_liuba',
|
||||
'bianxi',
|
||||
'junk_sunquan',
|
||||
],
|
||||
}
|
||||
};
|
||||
|
|
|
@ -11,8 +11,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
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_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','xin_yufan','re_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'],
|
||||
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'],
|
||||
|
@ -20,6 +20,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
connect:true,
|
||||
character:{
|
||||
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']],
|
||||
|
@ -55,7 +57,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ol_dengai:['male','wei',4,['oltuntian','olzaoxian']],
|
||||
re_gongsunzan:['male','qun',4,['reqiaomeng','reyicong']],
|
||||
re_manchong:['male','wei',3,['rejunxing','yuce']],
|
||||
re_liru:['male','qun',3,['rejuece','remieji','xinfencheng']],
|
||||
xin_yufan:['male','wu',3,['xinzhiyan','xinzongxuan']],
|
||||
dc_bulianshi:['female','wu',3,['dcanxu','dczhuiyi']],
|
||||
re_hanhaoshihuan:['male','wei',4,['reshenduan','reyonglve']],
|
||||
|
@ -149,6 +150,256 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_xushu:['zhaoyun','sp_zhugeliang'],
|
||||
},
|
||||
skill:{
|
||||
//李儒
|
||||
dcmieji:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
return player.hasCard(lib.skill.dcmieji.filterCard,'eh');
|
||||
},
|
||||
position:'he',
|
||||
filterCard:function(card){
|
||||
if(get.subtype(card)=='equip1') return true;
|
||||
return get.color(card)=='black'&&get.type(card,'trick')=='trick';
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return target!=player&&target.countCards('h')>0;
|
||||
},
|
||||
discard:false,
|
||||
delay:false,
|
||||
check:function(card){
|
||||
return 8-get.value(card);
|
||||
},
|
||||
loseTo:'cardPile',
|
||||
insert:true,
|
||||
visible:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.showCards(cards);
|
||||
'step 1'
|
||||
target.chooseToDiscard('he',true).set('prompt','请弃置一张锦囊牌,或依次弃置两张非锦囊牌。');
|
||||
'step 2'
|
||||
if((!result.cards||get.type(result.cards[0],'trick',result.cards[0].original=='h'?target:false)!='trick')&&target.countCards('he',function(card){
|
||||
return get.type(card,'trick')!='trick';
|
||||
})){
|
||||
target.chooseToDiscard('he',true,function(card){
|
||||
return get.type(card,'trick')!='trick';
|
||||
}).set('prompt','请弃置第二张非锦囊牌');
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:9,
|
||||
result:{
|
||||
target:-1
|
||||
}
|
||||
}
|
||||
},
|
||||
dcfencheng:{
|
||||
skillAnimation:'epic',
|
||||
animationColor:'fire',
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
filterTarget:function(card,player,target){
|
||||
return player!=target;
|
||||
},
|
||||
limited:true,
|
||||
line:'fire',
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.awakenSkill('dcfencheng');
|
||||
event.num=1;
|
||||
event.targets=game.filterPlayer((current)=>current!=player);
|
||||
event.targets.sortBySeat(target);
|
||||
"step 1"
|
||||
if(event.targets.length){
|
||||
var target=event.targets.shift();
|
||||
if(!target.isIn()){
|
||||
event.redo();
|
||||
return;
|
||||
}
|
||||
event.target=target;
|
||||
player.line(target,'fire');
|
||||
var res=get.damageEffect(target,player,target,'fire');
|
||||
target.chooseToDiscard('he','弃置至少'+get.cnNumber(event.num)+'张牌或受到2点火焰伤害',[num,Infinity]).set('ai',function(card){
|
||||
if(ui.selected.cards.length>=_status.event.getParent().num) return -1;
|
||||
if(_status.event.player.hasSkillTag('nofire')) return -1;
|
||||
if(_status.event.res>=0) return 6-get.value(card);
|
||||
if(get.type(card)!='basic'){
|
||||
return 10-get.value(card);
|
||||
}
|
||||
return 8-get.value(card);
|
||||
}).set('res',res);
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
"step 2"
|
||||
if(!result.bool){
|
||||
event.target.damage(2,'fire');
|
||||
event.num=1;
|
||||
}
|
||||
else{
|
||||
event.num=result.cards.length+1;
|
||||
event.goto(1);
|
||||
}
|
||||
"step 3"
|
||||
game.delayx();
|
||||
event.goto(1);
|
||||
},
|
||||
ai:{
|
||||
order:1,
|
||||
result:{
|
||||
player:function(player,target){
|
||||
if(player.hasUnknown(2)) return 0;
|
||||
var num=0,eff=0,players=game.filterPlayer(function(current){
|
||||
return current!=player;
|
||||
}).sortBySeat(target);
|
||||
for(var target of players){
|
||||
if(get.damageEffect(target,player,target,'fire')>=0){num=0;continue};
|
||||
var shao=false;
|
||||
num++;
|
||||
if(target.countCards('he',function(card){
|
||||
if(get.type(card)!='basic'){
|
||||
return get.value(card)<10;
|
||||
}
|
||||
return get.value(card)<8;
|
||||
})<num) shao=true;
|
||||
if(shao){
|
||||
eff-=4*(get.realAttitude||get.attitude)(player,target);
|
||||
num=0;
|
||||
}
|
||||
else eff-=num*(get.realAttitude||get.attitude)(player,target)/4;
|
||||
}
|
||||
if(eff<4) return 0;
|
||||
return eff;
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
//朱桓
|
||||
refenli:{
|
||||
audio:2,
|
||||
group:['refenli_draw','refenli_use','refenli_discard'],
|
||||
subfrequent:['discard'],
|
||||
subSkill:{
|
||||
draw:{
|
||||
audio:'refenli',
|
||||
trigger:{player:'phaseJudgeBefore'},
|
||||
prompt:'是否发动【奋励】跳过判定和摸牌阶段?',
|
||||
filter:function(event,player){
|
||||
return player.isMaxHandcard();
|
||||
},
|
||||
check:function(event,player){
|
||||
if(player.hasJudge('lebu')||player.hasJudge('bingliang')) return true;
|
||||
if(player.getHistory('skipped').length>0) return false;
|
||||
return game.hasPlayer(function(current){
|
||||
return get.attitude(player,current)<0&¤t.hp==1&&get.damageEffect(current,player,player)>0;
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
player.skip('phaseDraw');
|
||||
}
|
||||
},
|
||||
use:{
|
||||
audio:'refenli',
|
||||
trigger:{player:'phaseUseBefore'},
|
||||
prompt:'是否发动【奋励】跳过出牌阶段?',
|
||||
filter:function(event,player){
|
||||
return player.isMaxHp();
|
||||
},
|
||||
check:function(event,player){
|
||||
if(!player.needsToDiscard()||(player.countCards('e')&&player.isMaxEquip())) return true;
|
||||
if(player.getHistory('skipped').length>0) return false;
|
||||
return game.hasPlayer(function(current){
|
||||
return get.attitude(player,current)<0&¤t.hp==1&&get.damageEffect(current,player,player)>0;
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
}
|
||||
},
|
||||
discard:{
|
||||
audio:'refenli',
|
||||
trigger:{player:'phaseDiscardBefore'},
|
||||
prompt:'是否发动【奋励】跳过弃牌阶段?',
|
||||
frequent:true,
|
||||
filter:function(event,player){
|
||||
return player.isMaxEquip()&&player.countCards('e');
|
||||
},
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
}
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
combo:'repingkou'
|
||||
}
|
||||
},
|
||||
repingkou:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseEnd'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.getHistory('skipped').length>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget([1,player.getHistory('skipped').length],get.prompt2('repingkou'),'对至多'+get.cnNumber(num)+'名其他角色各造成1点伤害。若你选择的角色数小于最大角色数,则你可以弃置其中一名目标角色装备区内的一张牌',function(card,player,target){
|
||||
return target!=player;
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.damageEffect(target,player,player);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('repingkou',result.targets);
|
||||
event.targets=result.targets.slice(0).sortBySeat();
|
||||
event.num=0;
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
'step 2'
|
||||
var target=targets[event.num];
|
||||
if(target.isIn()) target.damage();
|
||||
event.num++;
|
||||
if(event.num<targets.length) event.redo();
|
||||
else if(event.num==player.getHistory('skipped').length) event.finish();
|
||||
'step 3'
|
||||
var targets2=targets.filter(function(target){
|
||||
return target.countDiscardableCards(player,'e')>0;
|
||||
});
|
||||
if(targets2.length>0){
|
||||
player.chooseTarget('是否弃置一名目标角色的一张装备牌?',function(card,player,target){
|
||||
return _status.event.targets.contains(target);
|
||||
}).set('targets',targets2).set('ai',function(target){
|
||||
var att=get.attitude(player,target),eff=0;
|
||||
target.getCards('e',function(card){
|
||||
var val=get.value(card,target);
|
||||
eff=Math.max(eff,-val*att);
|
||||
});
|
||||
return eff;
|
||||
});
|
||||
}
|
||||
else event.finish();
|
||||
'step 4'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.line(target,'green');
|
||||
player.discardPlayerCard(target,'e',true);
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
combo:'fenli',
|
||||
effect:{
|
||||
target:function(card){
|
||||
if(card.name=='lebu'||card.name=='bingliang') return 0.5;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
//典韦
|
||||
olqiangxi:{
|
||||
audio:'qiangxi',
|
||||
|
@ -5243,7 +5494,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(event.type!='discard') return false;
|
||||
var evt=event.getl(player);
|
||||
return evt&&evt.cards2&&evt.cards2.filter(function(i){
|
||||
return get.name(i,evt.hs.contains(i)?player:false)==true;
|
||||
return get.name(i,evt.hs.contains(i)?player:false)=='sha';
|
||||
}).length>0;
|
||||
};
|
||||
if(event.name=='gain'&&event.player==player) return false;
|
||||
|
@ -12471,7 +12722,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
decadechunlao:'醇醪',
|
||||
decadechunlao2:'醇醪',
|
||||
decadechunlao_info:'你可以对其他角色使用【酒(使用方法②)】。当你需要使用【酒】时,若你的武将牌未横置,则你可以将武将牌横置,然后视为使用【酒】。当你受到或造成伤害后,若伤害值大于1且你的武将牌横置,则你可以重置武将牌。',
|
||||
re_liru:'界李儒',
|
||||
re_liru:'手杀李儒',
|
||||
rejuece:'绝策',
|
||||
rejuece_info:'结束阶段,你可以对一名本回合内失去过牌的角色造成1点伤害。',
|
||||
remieji:'灭计',
|
||||
|
@ -12701,6 +12952,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
olqiangxi_info:'出牌阶段限两次。你可以弃置一张武器牌或受到1点无来源伤害,然后对一名本回合内未成为过〖强袭〗目标的其他角色造成1点伤害。',
|
||||
olningwu:'狞恶',
|
||||
olningwu_info:'锁定技。当一名角色A于一回合内第二次受到伤害后,若A或伤害来源为你,则你摸一张牌,然后弃置其装备区或判定区内的一张牌。',
|
||||
re_zhuhuan:'界朱桓',
|
||||
refenli:'奋励',
|
||||
refenli_info:'若你的手牌数为全场最多,你可以跳过摸牌阶段和摸牌阶段;若你的体力值为全场最多,你可以跳过出牌阶段;若你的装备区里有牌且数量为全场最多,你可以跳过弃牌阶段。',
|
||||
//破界石不值钱了 就逮着免费突破硬削是吧
|
||||
repingkou:'平寇',
|
||||
repingkou_info:'回合结束时,你可以对至多X名其他角色各造成1点伤害(X为你本回合跳过的阶段数)。若你选择的角色数小于X,则你可以弃置其中一名角色装备区内的一张牌',
|
||||
dc_liru:'界李儒',
|
||||
dcmieji:'灭计',
|
||||
dcmieji_info:'出牌阶段限一次,你可以展示一张武器牌或黑色锦囊牌。你将此牌置于牌堆顶,然后令一名有手牌的其他角色选择一项:⒈弃置一张锦囊牌;⒉依次弃置两张非锦囊牌。',
|
||||
dcfencheng:'焚城',
|
||||
dcfencheng_info:'限定技。出牌阶段,你可以指定一名其他角色,令从其开始的其他角色依次选择一项:⒈弃置至少X张牌(X为上一名角色弃置的牌数+1)。⒉你对其造成2点伤害。',
|
||||
|
||||
refresh_standard:'界限突破·标',
|
||||
refresh_feng:'界限突破·风',
|
||||
|
|
|
@ -657,6 +657,85 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
skill:{
|
||||
//吕范
|
||||
xindiaodu:{
|
||||
audio:"diaodu",
|
||||
group:'xindiaodu_use',
|
||||
frequent:true,
|
||||
preHidden:true,
|
||||
isFriendOf:function(player,target){
|
||||
if(get.mode()=='guozhan') return player.isFriendOf(target);
|
||||
return player.group==target.group;
|
||||
},
|
||||
subSkill:{
|
||||
temp:{},
|
||||
use:{
|
||||
trigger:{
|
||||
global:"useCard",
|
||||
},
|
||||
filter:function(event,player){
|
||||
return get.type(event.card)=='equip'&&event.player.isAlive()&&
|
||||
lib.skill.xindiaodu.isFriendOf(player,event.player)&&(player==event.player||player.hasSkill('xindiaodu'))&&!event.player.hasSkill('xindiaodu_temp');
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var next=trigger.player.chooseBool('是否发动【调度】摸一张牌?');
|
||||
if(player.hasSkill('xindiaodu')) next.set('frequentSkill','xindiaodu');
|
||||
if(player==trigger.player) next.setHiddenSkill('xindiaodu');
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('xindiaodu',trigger.player);
|
||||
trigger.player.draw('nodelay');
|
||||
trigger.player.addTempSkill('xindiaodu_temp');
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
trigger:{
|
||||
player:"phaseUseBegin",
|
||||
},
|
||||
filter:function(event,player){
|
||||
return game.hasPlayer(function(current){
|
||||
return lib.skill.xindiaodu.isFriendOf(current,player)&¤t.countGainableCards(player,'e')>0;
|
||||
});
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt2('xindiaodu'),function(card,player,current){
|
||||
return lib.skill.xindiaodu.isFriendOf(current,player)&¤t.countGainableCards(player,'e')>0;
|
||||
}).setHiddenSkill(event.name).ai=function(target){
|
||||
var num=1;
|
||||
if(target.hasSkill('gzxiaoji')) num+=2.5;
|
||||
if(target.isDamaged()&&target.getEquip('baiyin')) num+=2.5;
|
||||
if(target.hasSkill('xuanlve')) num+=2;
|
||||
return num;
|
||||
};
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
event.target1=result.targets[0];
|
||||
player.logSkill('xindiaodu',event.target1);
|
||||
player.line(event.target1,'xindiaodu');
|
||||
player.gainPlayerCard(event.target1,'e',true);
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
if(result.bool&&player.getCards('h').contains(result.cards[0])){
|
||||
event.card=result.cards[0];
|
||||
player.chooseTarget('是否将'+get.translation(event.card)+'交给一名其他角色?',function(card,player,current){
|
||||
return current!=player&¤t!=_status.event.target1&&lib.skill.xindiaodu.isFriendOf(current,player)
|
||||
}).set('target1',event.target1);
|
||||
}
|
||||
else event.finish();
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.line(target,'green');
|
||||
target.gain(card,player,'give');
|
||||
}
|
||||
},
|
||||
},
|
||||
//夏侯玄
|
||||
olhuanfu:{
|
||||
audio:2,
|
||||
|
@ -775,7 +854,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
for(var i=0;i<result.length;i++){
|
||||
var current=event.list[i],card=result[i].cards[0];
|
||||
lose_list.push([current,result[i].cards]);
|
||||
card.classList.remove('glow');
|
||||
cards.push(card);
|
||||
}
|
||||
var type=get.type2(cards[0]);
|
||||
|
@ -4729,7 +4807,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else event.finish();
|
||||
'step 3'
|
||||
event.count--;
|
||||
if(player.canUse('sha',target,false)) player.useCard({name:'sha',isCard:true},target,false);
|
||||
if(target.isIn()&&player.canUse('sha',target,false)) player.useCard({name:'sha',isCard:true},target,false);
|
||||
if(event.count>0) event.redo();
|
||||
else if(event.num<targets.length) event.goto(1);
|
||||
},
|
||||
|
@ -20183,6 +20261,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
olqingyi_info:'①出牌阶段限一次,你可以选择至多两名有牌的其他角色。你和这些角色同时弃置一张牌,然后若这些牌类型均相同,则你重复此流程。②结束阶段开始时,若你本回合内发动〖清议①〗弃置的牌包含两种颜色,则你获得每种颜色的牌各一张。',
|
||||
olzeyue:'迮阅',
|
||||
olzeyue_info:'限定技。准备阶段,你可以选择一名于你的上个回合结束后对你造成过伤害的角色A及其武将牌上的一个非锁定技B,令A的B失效。然后每轮游戏开始时,A依次视为对你使用X张【杀】(X为B失效状态下经过的完整轮数)。当你因这些【杀】受到伤害后,你令A恢复技能B。',
|
||||
xindiaodu:"调度",
|
||||
xindiaodu_info:"①每回合限一次,与你势力相同的角色使用装备牌时,其可以摸一张牌。②出牌阶段开始时,你可以获得与你势力相同的一名角色装备区内的一张牌,然后你可以将此牌交给另一名与你势力相同的其他角色。",
|
||||
|
||||
sp_tianji:'天极·皇室宗亲',
|
||||
sp_sibi:'四弼·辅国文曲',
|
||||
|
|
1168
character/sp2.js
|
@ -500,7 +500,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return targets1.isEmpty(get.subtype(button.link));
|
||||
}
|
||||
}).set('ai',function(button){
|
||||
var player=_status.event.player,target=_status.event.targets1,source=_status.event.targets[0];
|
||||
var player=_status.event.player,target=_status.event.targets1,source=_status.event.targets0;
|
||||
var att=get.attitude(player,source);
|
||||
if(get.position(card)=='e'){
|
||||
var val=get.value(card);
|
||||
|
@ -749,7 +749,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
twcongji:{
|
||||
audio:2,
|
||||
trigger:{player:'loseAfter'},
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
global:'loseAsyncAfter',
|
||||
},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(player==_status.currentPhase||event.type!='discard'||event.getlx===false||!game.hasPlayer((current)=>current!=player)) return false;
|
||||
|
@ -761,7 +764,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var cards=[],cards2=trigger.getl(player);
|
||||
var cards=[],cards2=trigger.getl(player).cards2;
|
||||
for(var i of cards2){
|
||||
if(get.color(i,player)=='red'&&get.position(i,true)=='d') cards.push(i);
|
||||
}
|
||||
|
|
|
@ -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'],
|
||||
yijiang_2022:['lukai','kebineng'],
|
||||
},
|
||||
},
|
||||
character:{
|
||||
kebineng:['male','qun',4,['kousheng']],
|
||||
lukai:['male','wu',4,['lkbushi','lkzhongzhuang']],
|
||||
xin_fazheng:['male','shu',3,['xinenyuan','xinxuanhuo'],['die_audio']],
|
||||
old_guanzhang:['male','shu',4,['old_fuhun']],
|
||||
|
@ -101,6 +102,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
yujin:["male","wei",4,["yizhong"],[]],
|
||||
},
|
||||
characterIntro:{
|
||||
kebineng:'轲比能(?~235年),为中国三国时期的鲜卑首领之一。轲比能出身鲜卑支部,因他作战勇敢,执法公平,不贪财物,所以被鲜卑民众推举为大人。轲比能因其部落近塞,所以他抓住有利条件积极学习汉族先进技术和文化,促进了鲜卑族的进步和北方的民族融合。轲比能统率下的部众,战守有法,战斗力相当强大。自曹操北征后向曹氏进贡表示效忠。魏文帝时,轲比能受封附义王。轲比能在进行部落统一战争时,受魏国干涉,受沉重打击,于是对魏怀贰,献书魏帝表忠,以麻痹魏庭,使之放松警惕。此后,轲比能的部众变得强盛,控弦十余万骑,为害魏国边境。每次钞略得财物,轲比能都公开透明地均平分配,所以得部众死力,各部大人都敬畏之。实力强大后,他继续部落统一战争,于是威行诸部落,建立起强大的鲜卑族政权。深感威胁的魏国幽州刺史王雄派刺客韩龙将其刺杀,其政权立刻崩溃,鲜卑民族再次陷入混战。',
|
||||
lukai:'陆凯(198-269年),字敬风,吴郡吴县(今江苏省苏州市)人。三国时期吴国重臣,丞相陆逊的族侄,大司马陆抗的族兄。黄武年间,举孝廉出身,曾任永兴县长、诸暨县长,颇有治绩。拜建武都尉、儋耳太守,与聂友率军讨伐朱崖和儋耳,迁建武校尉。五凤二年(255年),讨斩零陵山贼陈毖,拜偏将军、巴丘督,册封都乡侯。迁武昌右部督,随军进入寿春。后拜荡魏将军,加号绥远将军。吴景帝孙休继位,拜征北将军、假节、领豫州牧。孙皓即位,迁任镇西大将军,都督巴丘,又领荆州牧,进封嘉兴侯。宝鼎元年(266年),迁左丞相。以正直及屡次劝谏孙皓而闻名。建衡元年(269年),去世,时年七十二。',
|
||||
caozhi:'字子建,沛国谯人,三国曹魏著名文学家,建安文学代表人物。魏武帝曹操之子,魏文帝曹丕之弟,生前曾为陈王,去世后谥号“思”,因此又称陈思王。南朝宋文学家谢灵运更有“天下才有一石,曹子建独占八斗”的评价。王士祯尝论汉魏以来二千年间诗家堪称“仙才”者,曹植、李白、苏轼三人耳。',
|
||||
gaoshun:'中国东汉末年将领,吕布帐下中郎将。史载高顺为人清白有威严,不好饮酒,所统率的部队精锐非常,号称“陷阵营”。屡进忠言于吕布,吕布虽知其忠而不能用。曹操击破吕布后,高顺被曹操所杀。',
|
||||
|
@ -197,6 +199,113 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhonghui:['jiangwei'],
|
||||
},
|
||||
skill:{
|
||||
//轲比能
|
||||
kousheng:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.countCards('h')>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseCard('h',[1,player.countCards('h')],get.prompt('kousheng'),'你可以选择任意张手牌,这些手牌于本回合内视为无次数限制的【杀】。但当有角色受到这些【杀】的伤害后,其可以用所有手牌交换剩余的牌。').set('standard',player.getUseValue({name:'sha'},null,true)).set('ai',function(card){
|
||||
var player=_status.event.player,standard=_status.event.standard;
|
||||
if(standard<=0) return 0;
|
||||
var eff=player.getUseValue(card,null,true);
|
||||
if(eff<=standard) return standard-eff+0.1;
|
||||
return 0;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('kousheng');
|
||||
player.addGaintag(result.cards,'kousheng');
|
||||
player.addTempSkill('kousheng_effect');
|
||||
game.delayx();
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
effect:{
|
||||
audio:'kousheng',
|
||||
trigger:{player:'useCard1'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
firstDo:true,
|
||||
filter:function(event,player){
|
||||
if(event.card.name!='sha') return false;
|
||||
return player.hasHistory('lose',function(evt){
|
||||
if(evt.getParent()!=event) return false;
|
||||
for(var i in evt.gaintag_map){
|
||||
if(evt.gaintag_map[i].contains('kousheng')) return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
if(!trigger.card.storage) trigger.card.storage={};
|
||||
trigger.card.storage.kousheng=true;
|
||||
if(trigger.addCount!==false){
|
||||
trigger.addCount=false;
|
||||
player.getStat('card').sha--;
|
||||
}
|
||||
},
|
||||
onremove:function(player){
|
||||
player.removeGaintag('kousheng');
|
||||
},
|
||||
mod:{
|
||||
cardUsable:function(card,player,target){
|
||||
if(card.name!='sha'||!card.cards) return;
|
||||
for(var i of card.cards){
|
||||
if(i.hasGaintag('kousheng')) return Infinity;
|
||||
}
|
||||
},
|
||||
cardname:function(card){
|
||||
if(card.hasGaintag('kousheng')) return 'sha';
|
||||
},
|
||||
cardnature:function(card){
|
||||
if(card.hasGaintag('kousheng')) return false;
|
||||
},
|
||||
},
|
||||
group:'kousheng_damage',
|
||||
},
|
||||
damage:{
|
||||
audio:'kousheng',
|
||||
trigger:{source:'damageSource'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(!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');
|
||||
},'h');
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var target=trigger.player;
|
||||
event.target=target;
|
||||
var cards=player.getCards('h',function(card){
|
||||
return card.hasGaintag('kousheng');
|
||||
});
|
||||
event.cards=cards;
|
||||
var str=get.translation(player);
|
||||
player.showCards(cards,str+'的【寇胜】牌');
|
||||
if(target.countCards('h')>0) target.chooseBool('是否交换“寇胜”牌?','用你的所有手牌交换'+str+'的下列“寇胜”牌:'+get.translation(cards)).set('ai',function(){
|
||||
var player=_status.event.player,target=_status.event.getParent().player;
|
||||
if(player.hasShan()||player.countCards('hs',{name:['tao','jiu']})>0||get.attitude(player,target)>=0) return false;
|
||||
var hs1=player.getCards('h'),hs2=_status.event.getParent().cards;
|
||||
if(hs2.length>=player.hp) return true;
|
||||
if(get.value(hs1,player)>=get.value(hs2,target)) return false;
|
||||
return true;
|
||||
});
|
||||
else event.finish();
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.swapHandcards(target,cards,target.getCards('h'));
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//陆凯
|
||||
lkbushi:{
|
||||
audio:2,
|
||||
|
@ -946,42 +1055,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
event.videoId=lib.status.videoId++;
|
||||
var func=function(card,id,bool){
|
||||
var list=[
|
||||
'为XXX多指定一个目标',
|
||||
'令XXX无视防具',
|
||||
'令XXX不可被抵消',
|
||||
'当XXX造成伤害时摸一张牌',
|
||||
];
|
||||
var choiceList=ui.create.dialog('【奔袭】:请选择一至两项','forcebutton');
|
||||
choiceList.videoId=id;
|
||||
for(var i=0;i<list.length;i++){
|
||||
list[i]=list[i].replace(/XXX/g,card);
|
||||
var str='<div class="popup text" style="width:calc(100% - 10px);display:inline-block">';
|
||||
if(i==0&&!bool) str+='<div style="opacity:0.5">';
|
||||
str+=list[i];
|
||||
if(i==0&&!bool) str+='</div>';
|
||||
str+='</div>';
|
||||
var next=choiceList.add(str);
|
||||
next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
|
||||
next.firstChild.link=i;
|
||||
for(var j in lib.element.button){
|
||||
next[j]=lib.element.button[j];
|
||||
}
|
||||
choiceList.buttons.add(next.firstChild);
|
||||
}
|
||||
return choiceList;
|
||||
};
|
||||
if(player.isOnline2()){
|
||||
player.send(func,get.translation(trigger.card),event.videoId,lib.skill.xinbenxi.filterx(trigger,player));
|
||||
var list=[
|
||||
'为XXX多选择一个目标',
|
||||
' 令XXX无视防具牌 ',
|
||||
' 令XXX不可被抵消 ',
|
||||
'当XXX造成伤害时摸牌',
|
||||
],card=get.translation(trigger.card);
|
||||
for(var i=0;i<list.length;i++){
|
||||
list[i]=[i,list[i].replace(/XXX/g,card)];
|
||||
}
|
||||
event.dialog=func(get.translation(trigger.card),event.videoId,lib.skill.xinbenxi.filterx(trigger,player));
|
||||
if(player!=game.me||_status.auto){
|
||||
event.dialog.style.display='none';
|
||||
}
|
||||
var next=player.chooseButton();
|
||||
next.set('dialog',event.videoId);
|
||||
var next=player.chooseButton([
|
||||
'奔袭:请选择一至两项',
|
||||
[list.slice(0,2),'tdnodes'],
|
||||
[list.slice(2,4),'tdnodes'],
|
||||
]);
|
||||
next.set('forced',true);
|
||||
next.set('selectButton',[1,2]);
|
||||
next.set('filterButton',function(button){
|
||||
|
@ -1028,10 +1115,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
});
|
||||
"step 1"
|
||||
if(player.isOnline2()){
|
||||
player.send('closeDialog',event.videoId);
|
||||
}
|
||||
event.dialog.close();
|
||||
var map=[
|
||||
function(trigger,player,event){
|
||||
player.chooseTarget('请选择'+get.translation(trigger.card)+'的额外目标',true,function(card,player,target){
|
||||
|
@ -5221,6 +5304,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
xinjuece:{
|
||||
audio:'juece',
|
||||
audioname:['dc_liru'],
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
|
@ -5230,7 +5314,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('xinjuece'),'对一名没有手牌的其他角色造成1点伤害',function(card,player,target){
|
||||
player.chooseTarget(get.prompt('xinjuece'),'对一名没有手牌的角色造成1点伤害',function(card,player,target){
|
||||
return target.countCards('h')==0;
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
|
@ -10321,7 +10405,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
check:function(trigger,player){
|
||||
if(trigger.getParent(3).name!='phaseDiscard'||!game.hasPlayer(function(current){
|
||||
return current.isDamaged()&&get.recoverEffect(current,player,player)>0;
|
||||
}))
|
||||
})) return false;
|
||||
var evt=trigger.getl(player);
|
||||
for(var i=0;i<evt.cards2.length;i++){
|
||||
if(get.position(evt.cards2[i],true)=='d'&&get.type(evt.cards2[i],false)=='equip'){
|
||||
|
@ -12382,7 +12466,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
panzhangmazhong:['xin_panzhangmazhong','re_panzhangmazhong','panzhangmazhong'],
|
||||
yufan:['xin_yufan','re_yufan','yufan'],
|
||||
zhuran:['re_zhuran','xin_zhuran','zhuran','old_zhuran'],
|
||||
liru:['re_liru','xin_liru','liru'],
|
||||
liru:['re_liru','dc_liru','xin_liru','liru'],
|
||||
fuhuanghou:['re_fuhuanghou','xin_fuhuanghou','fuhuanghou','old_fuhuanghou'],
|
||||
chenqun:['chenqun','re_chenqun','old_chenqun'],
|
||||
hanhaoshihuan:['re_hanhaoshihuan','hanhaoshihuan'],
|
||||
|
@ -13002,6 +13086,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
lkbushi_info:'①你使用♠牌无次数限制。②当你使用或打出♥牌后,你摸一张牌。③当你成为♣牌的目标后,你可以弃置一张牌,令此牌对你无效。④结束阶段开始时,你从牌堆或弃牌堆获得一张♦牌。⑤准备阶段开始时,你可调整此技能中四种花色的对应顺序。',
|
||||
lkzhongzhuang:'忠壮',
|
||||
lkzhongzhuang_info:'锁定技。当你因执行【杀】的效果而造成伤害时,若你的攻击范围:大于3,则此伤害+1;小于3,则此伤害改为1。',
|
||||
kebineng:'轲比能',
|
||||
kousheng:'寇胜',
|
||||
kousheng_info:'①出牌阶段开始时,你可以选择任意张手牌,这些牌称为“寇胜”直到回合结束。②你的“寇胜”均视为【杀】且无次数限制。③当你因执行对应实体牌包含“寇胜”的【杀】的效果而造成伤害后,你展示所有“寇胜”牌,然后目标角色可以用所有手牌交换这些牌。',
|
||||
|
||||
yijiang_2011:'一将成名2011',
|
||||
yijiang_2012:'一将成名2012',
|
||||
|
|
|
@ -160,7 +160,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('zhefu'),'令一名有手牌的其他角色弃置一张【'+get.translation(trigger.card.name)+'】,否则受到你造成的1点伤害。',function(card,player,target){
|
||||
return target!=player&&target.countCards('he')>0;
|
||||
return target!=player&&target.countCards('h')>0;
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.damageEffect(target,player,player)/Math.sqrt(target.countCards('h'));
|
||||
|
@ -369,13 +369,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{global:'phaseUseBegin'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player!=event.player&&event.player.countCards('he')>0&&player.countCards('he')>=player.countMark('xiongshu_count');
|
||||
return player!=event.player&&event.player.countCards('h')>0&&player.countCards('he')>=player.countMark('xiongshu_count');
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.target=trigger.player;
|
||||
var num=player.countMark('xiongshu_count');
|
||||
if(num>0) player.chooseToDiscard('he',num,get.prompt('xiongshu',trigger.player),'弃置'+get.cnNumber(num)+'张牌并展示其一张牌').set('goon',get.attitude(player,event.target)<0).set('ai',function(card){
|
||||
if(num>0) player.chooseToDiscard('he',num,get.prompt('xiongshu',trigger.player),'弃置'+get.cnNumber(num)+'张牌并展示其一张手牌').set('goon',get.attitude(player,event.target)<0).set('ai',function(card){
|
||||
if(!_status.event.goon) return 0;
|
||||
return 6-_status.event.player.countMark('xiongshu_count')-get.value(card);
|
||||
}).logSkill=['xiongshu',trigger.player];
|
||||
|
@ -388,8 +388,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.addTempSkill('xiongshu_count','roundStart');
|
||||
player.addMark('xiongshu_count',1,false);
|
||||
}
|
||||
if(result.bool&&target.countCards('he')>0){
|
||||
player.choosePlayerCard(target,true,'he');
|
||||
if(result.bool&&target.countCards('h')>0){
|
||||
player.choosePlayerCard(target,true,'h');
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
|
@ -3685,10 +3685,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dezhang:'德彰',
|
||||
dezhang_info:'觉醒技。准备阶段,若你没有“绥”,则你减1点体力上限并获得〖卫戍〗。',
|
||||
weishu:'卫戍',
|
||||
weishu_info:'锁定技。①当你于摸牌阶段外不因〖卫戊①〗而摸牌后,你令一名角色摸一张牌。②当你于弃牌阶段外不因〖卫戊②〗而弃置牌后,你弃置一名其他角色的一张牌。',
|
||||
weishu_info:'锁定技。①当你于摸牌阶段外不因〖卫戍①〗而摸牌后,你令一名角色摸一张牌。②当你于弃牌阶段外不因〖卫戍②〗而弃置牌后,你弃置一名其他角色的一张牌。',
|
||||
jin_jiachong:'贾充',
|
||||
xiongshu:'凶竖',
|
||||
xiongshu_info:'其他角色的出牌阶段开始时,你可弃置X张牌(X为你本轮内此前已发动过此技能的次数,为0则不弃)并展示其一张牌,然后你预测“其本阶段内是否会使用与展示牌牌名相同的牌”。此阶段结束时,若你的预测正确,则你对其造成1点伤害;否则你获得展示牌。',
|
||||
xiongshu_info:'其他角色的出牌阶段开始时,你可弃置X张牌(X为你本轮内此前已发动过此技能的次数,为0则不弃)并展示其一张手牌,然后你预测“其本阶段内是否会使用与展示牌牌名相同的牌”。此阶段结束时,若你的预测正确,则你对其造成1点伤害;否则你获得展示牌。',
|
||||
jianhui:'奸回',
|
||||
jianhui_info:'锁定技。当你造成伤害后,若受伤角色为A,则你摸一张牌;当你受到伤害后,若伤害来源为A,则A弃置一张牌。(A为除本次伤害外最近一次对你造成过伤害的角色)',
|
||||
xinxuanbei:'选备',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
window.noname_asset_list=[
|
||||
'v1.9.117',
|
||||
'v1.9.117.2',
|
||||
'audio/background/aozhan_chaoming.mp3',
|
||||
'audio/background/aozhan_online.mp3',
|
||||
'audio/background/aozhan_rewrite.mp3',
|
||||
|
@ -194,6 +194,15 @@ window.noname_asset_list=[
|
|||
'audio/die/wangyan.mp3',
|
||||
'audio/die/xiahouxuan.mp3',
|
||||
'audio/die/zhangfen.mp3',
|
||||
'audio/die/chengui.mp3',
|
||||
'audio/die/dc_huangquan.mp3',
|
||||
'audio/die/dc_huban.mp3',
|
||||
'audio/die/dc_liru.mp3',
|
||||
'audio/die/dingshangwan.mp3',
|
||||
'audio/die/kebineng.mp3',
|
||||
'audio/die/quanhuijie.mp3',
|
||||
'audio/die/re_zhuhuan.mp3',
|
||||
'audio/die/yinfuren.mp3',
|
||||
|
||||
'audio/die/baosanniang.mp3',
|
||||
'audio/die/beimihu.mp3',
|
||||
|
@ -1093,6 +1102,42 @@ window.noname_asset_list=[
|
|||
'audio/skill/sanku2.mp3',
|
||||
'audio/skill/yangkuang1.mp3',
|
||||
'audio/skill/yangkuang2.mp3',
|
||||
'audio/skill/dcchongyi1.mp3',
|
||||
'audio/skill/dcchongyi2.mp3',
|
||||
'audio/skill/dccongshi1.mp3',
|
||||
'audio/skill/dccongshi2.mp3',
|
||||
'audio/skill/dcfencheng1.mp3',
|
||||
'audio/skill/dcfencheng2.mp3',
|
||||
'audio/skill/dcfengyan1.mp3',
|
||||
'audio/skill/dcfengyan2.mp3',
|
||||
'audio/skill/dcfudao1.mp3',
|
||||
'audio/skill/dcfudao2.mp3',
|
||||
'audio/skill/dchuishu1.mp3',
|
||||
'audio/skill/dchuishu2.mp3',
|
||||
'audio/skill/dcligong1.mp3',
|
||||
'audio/skill/dcligong2.mp3',
|
||||
'audio/skill/dcmieji1.mp3',
|
||||
'audio/skill/dcmieji2.mp3',
|
||||
'audio/skill/dcquanjian1.mp3',
|
||||
'audio/skill/dcquanjian2.mp3',
|
||||
'audio/skill/dctujue1.mp3',
|
||||
'audio/skill/dctujue2.mp3',
|
||||
'audio/skill/dcyingtu1.mp3',
|
||||
'audio/skill/dcyingtu2.mp3',
|
||||
'audio/skill/dcyingyu1.mp3',
|
||||
'audio/skill/dcyingyu2.mp3',
|
||||
'audio/skill/dcyishu1.mp3',
|
||||
'audio/skill/dcyishu2.mp3',
|
||||
'audio/skill/dcyongbi1.mp3',
|
||||
'audio/skill/dcyongbi2.mp3',
|
||||
'audio/skill/juece_dc_liru1.mp3',
|
||||
'audio/skill/juece_dc_liru2.mp3',
|
||||
'audio/skill/kousheng1.mp3',
|
||||
'audio/skill/kousheng2.mp3',
|
||||
'audio/skill/refenli1.mp3',
|
||||
'audio/skill/refenli2.mp3',
|
||||
'audio/skill/repingkou1.mp3',
|
||||
'audio/skill/repingkou2.mp3',
|
||||
|
||||
'audio/skill/aichen1.mp3',
|
||||
'audio/skill/aichen2.mp3',
|
||||
|
@ -5771,6 +5816,16 @@ window.noname_asset_list=[
|
|||
'image/character/wangyan.jpg',
|
||||
'image/character/xiahouxuan.jpg',
|
||||
'image/character/zhangfen.jpg',
|
||||
'image/character/chengui.jpg',
|
||||
'image/character/dc_huangquan.jpg',
|
||||
'image/character/dc_huban.jpg',
|
||||
'image/character/dc_liru.jpg',
|
||||
'image/character/dingshangwan.jpg',
|
||||
'image/character/junk_sunquan.jpg',
|
||||
'image/character/kebineng.jpg',
|
||||
'image/character/quanhuijie.jpg',
|
||||
'image/character/re_zhuhuan.jpg',
|
||||
'image/character/yinfuren.jpg',
|
||||
|
||||
'image/character/baiwuchang.jpg',
|
||||
'image/character/baosanniang.jpg',
|
||||
|
|
371
game/game.js
|
@ -13090,8 +13090,12 @@
|
|||
var evt=event;
|
||||
if(evt.animate!=false){
|
||||
evt.discardid=lib.status.videoId++;
|
||||
game.broadcastAll(function(list,id){
|
||||
game.broadcastAll(function(list,id,cards){
|
||||
for(var i of list){
|
||||
for(var j of i[1]){
|
||||
j.classList.remove('glow');
|
||||
j.classList.remove('glows');
|
||||
}
|
||||
i[0].$throw(i[1],null,'nobroadcast');
|
||||
}
|
||||
var cardnodes=[];
|
||||
|
@ -13105,7 +13109,7 @@
|
|||
}
|
||||
}
|
||||
ui.todiscard[id]=cardnodes;
|
||||
},event.lose_list,evt.discardid);
|
||||
},event.lose_list,evt.discardid,cards);
|
||||
if(lib.config.sync_speed&&cards[0]&&cards[0].clone){
|
||||
if(evt.delay!=false){
|
||||
var waitingForTransition=get.time();
|
||||
|
@ -15586,6 +15590,8 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
event.sourceSkill=logInfo.sourceSkill;
|
||||
event.type=logInfo.type;
|
||||
player.getHistory('useSkill').push(logInfo);
|
||||
"step 1"
|
||||
var info=get.info(event.skill);
|
||||
|
@ -20923,6 +20929,17 @@
|
|||
}
|
||||
}
|
||||
next.setContent('gain');
|
||||
next.getd=function(player,key,position){
|
||||
if(!position) position=ui.discardPile;
|
||||
if(!key) key='cards';
|
||||
var cards=[],event=this;
|
||||
game.getGlobalHistory('cardMove',function(evt){
|
||||
if(evt.name!='lose'||evt.position!=position||evt.getParent()!=event) return;
|
||||
if(player&&player!=evt.player) return;
|
||||
cards.addArray(evt[key]);
|
||||
});
|
||||
return cards;
|
||||
};
|
||||
next.getl=function(player){
|
||||
var that=this;
|
||||
var map={
|
||||
|
@ -20990,6 +21007,17 @@
|
|||
}
|
||||
}
|
||||
next.setContent('addToExpansion');
|
||||
next.getd=function(player,key,position){
|
||||
if(!position) position=ui.discardPile;
|
||||
if(!key) key='cards';
|
||||
var cards=[],event=this;
|
||||
game.getGlobalHistory('cardMove',function(evt){
|
||||
if(evt.name!='lose'||evt.position!=position||evt.getParent()!=event) return;
|
||||
if(player&&player!=evt.player) return;
|
||||
cards.addArray(evt[key]);
|
||||
});
|
||||
return cards;
|
||||
};
|
||||
next.getl=function(player){
|
||||
var that=this;
|
||||
var map={
|
||||
|
@ -21070,6 +21098,12 @@
|
|||
next.cards=next.cards.slice(0);
|
||||
}
|
||||
next.setContent('lose');
|
||||
next.getd=function(player,key,position){
|
||||
if(!position) position=ui.discardPile;
|
||||
if(!key) key='cards';
|
||||
if(this.getlx===false||this.position!=position||(player&&this.player!=player)||!Array.isArray(this[key])) return [];
|
||||
return this[key].slice(0);
|
||||
};
|
||||
next.getl=function(player){
|
||||
if(this.getlx!==false&&this.player==player) return this;
|
||||
return {
|
||||
|
@ -21449,6 +21483,17 @@
|
|||
next.setContent(lib.element.content.equip);
|
||||
if(get.is.object(next.card)&&next.card.cards) next.card=next.card.cards[0];
|
||||
next.cards=[next.card];
|
||||
next.getd=function(player,key,position){
|
||||
if(!position) position=ui.discardPile;
|
||||
if(!key) key='cards';
|
||||
var cards=[],event=this;
|
||||
game.getGlobalHistory('cardMove',function(evt){
|
||||
if(evt.name!='lose'||evt.position!=position||evt.getParent()!=event) return;
|
||||
if(player&&player!=evt.player) return;
|
||||
cards.addArray(evt[key]);
|
||||
});
|
||||
return cards;
|
||||
};
|
||||
next.getl=function(player){
|
||||
var that=this;
|
||||
var map={
|
||||
|
@ -21492,6 +21537,17 @@
|
|||
}
|
||||
next.player=this;
|
||||
next.setContent('addJudge');
|
||||
next.getd=function(player,key,position){
|
||||
if(!position) position=ui.discardPile;
|
||||
if(!key) key='cards';
|
||||
var cards=[],event=this;
|
||||
game.getGlobalHistory('cardMove',function(evt){
|
||||
if(evt.name!='lose'||evt.position!=position||evt.getParent()!=event) return;
|
||||
if(player&&player!=evt.player) return;
|
||||
cards.addArray(evt[key]);
|
||||
});
|
||||
return cards;
|
||||
};
|
||||
next.getl=function(player){
|
||||
var that=this;
|
||||
var map={
|
||||
|
@ -21860,6 +21916,17 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
var next=game.createEvent('logSkill',false),evt=_status.event;
|
||||
next.player=player;
|
||||
next.forceDie=true;
|
||||
evt.next.remove(next);
|
||||
if(evt.logSkill) evt=evt.getParent();
|
||||
for(var i in logInfo){
|
||||
if(i=='event') next.log_event=logInfo[i];
|
||||
else next[i]=logInfo[i];
|
||||
}
|
||||
evt.after.push(next);
|
||||
next.setContent('emptyEvent');
|
||||
player.getHistory('useSkill').push(logInfo);
|
||||
}
|
||||
if(this._hookTrigger){
|
||||
|
@ -22823,9 +22890,12 @@
|
|||
game.broadcastAll(function(player,skill){
|
||||
player.skills.remove(skill);
|
||||
player.hiddenSkills.remove(skill);
|
||||
delete player.tempSkills[skill];
|
||||
for(var i in player.additionalSkills){
|
||||
player.additionalSkills[i].remove(skill);
|
||||
}
|
||||
},this,skill);
|
||||
this.checkConflict(skill);
|
||||
delete this.tempSkills[skill];
|
||||
if(info){
|
||||
if(info.onremove){
|
||||
if(typeof info.onremove=='function'){
|
||||
|
@ -26486,6 +26556,9 @@
|
|||
if(zoom) buttons.classList.add('smallzoom');
|
||||
this.buttons=this.buttons.concat(ui.create.buttons(item,'player',buttons,noclick));
|
||||
}
|
||||
else if(item[1]=='textbutton'){
|
||||
ui.create.textbuttons(item[0],this,noclick);
|
||||
}
|
||||
else{
|
||||
var buttons=ui.create.div('.buttons',this.content);
|
||||
if(zoom) buttons.classList.add('smallzoom');
|
||||
|
@ -29376,6 +29449,17 @@
|
|||
},
|
||||
loseAsync:function(arg){
|
||||
var next=game.createEvent('loseAsync');
|
||||
next.getd=function(player,key,position){
|
||||
if(!position) position=ui.discardPile;
|
||||
if(!key) key='cards';
|
||||
var cards=[],event=this;
|
||||
game.getGlobalHistory('cardMove',function(evt){
|
||||
if(evt.name!='lose'||evt.position!=position||evt.getParent()!=event) return;
|
||||
if(player&&player!=evt.player) return;
|
||||
cards.addArray(evt[key]);
|
||||
});
|
||||
return cards;
|
||||
};
|
||||
next.getl=function(player){
|
||||
var that=this;
|
||||
var map={
|
||||
|
@ -29431,6 +29515,9 @@
|
|||
var next=game.createEvent('cardsDiscard');
|
||||
next.cards=type=='cards'?cards.slice(0):[cards];
|
||||
next.setContent('cardsDiscard');
|
||||
next.getd=function(player,key,position){
|
||||
return this.cards.slice(0);
|
||||
};
|
||||
return next;
|
||||
},
|
||||
cardsGotoOrdering:function(cards){
|
||||
|
@ -33770,151 +33857,152 @@
|
|||
}
|
||||
},
|
||||
loop:function(){
|
||||
var event=_status.event;
|
||||
var step=event.step;
|
||||
var source=event.source;
|
||||
var player=event.player;
|
||||
var target=event.target;
|
||||
var targets=event.targets;
|
||||
var card=event.card;
|
||||
var cards=event.cards;
|
||||
var skill=event.skill;
|
||||
var forced=event.forced;
|
||||
var num=event.num;
|
||||
var trigger=event._trigger;
|
||||
var result=event._result;
|
||||
if(_status.paused2||_status.imchoosing){
|
||||
if(!lib.status.dateDelaying){
|
||||
lib.status.dateDelaying=new Date();
|
||||
while(true){
|
||||
var event=_status.event;
|
||||
var step=event.step;
|
||||
var source=event.source;
|
||||
var player=event.player;
|
||||
var target=event.target;
|
||||
var targets=event.targets;
|
||||
var card=event.card;
|
||||
var cards=event.cards;
|
||||
var skill=event.skill;
|
||||
var forced=event.forced;
|
||||
var num=event.num;
|
||||
var trigger=event._trigger;
|
||||
var result=event._result;
|
||||
if(_status.paused2||_status.imchoosing){
|
||||
if(!lib.status.dateDelaying){
|
||||
lib.status.dateDelaying=new Date();
|
||||
}
|
||||
}
|
||||
}
|
||||
if(_status.paused||_status.paused2||_status.over){
|
||||
return;
|
||||
}
|
||||
if(_status.paused3){
|
||||
_status.paused3='paused';
|
||||
return;
|
||||
}
|
||||
if(lib.status.dateDelaying){
|
||||
lib.status.dateDelayed+=lib.getUTC(new Date())-lib.getUTC(lib.status.dateDelaying);
|
||||
delete lib.status.dateDelaying;
|
||||
}
|
||||
if(event.next.length>0){
|
||||
var next=event.next.shift();
|
||||
if(next.player&&next.player.skipList.contains(next.name)){
|
||||
event.trigger(next.name+'Skipped');
|
||||
next.player.skipList.remove(next.name);
|
||||
if(lib.phaseName.contains(next.name)) next.player.getHistory('skipped').add(next.name);
|
||||
if(_status.paused||_status.paused2||_status.over){
|
||||
return;
|
||||
}
|
||||
else{
|
||||
next.parent=event;
|
||||
_status.event=next;
|
||||
if(_status.paused3){
|
||||
_status.paused3='paused';
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if(event.finished){
|
||||
if(event._triggered==1){
|
||||
if(event.type=='card') event.trigger('useCardToOmitted');
|
||||
event.trigger(event.name+'Omitted');
|
||||
event._triggered=4;
|
||||
if(lib.status.dateDelaying){
|
||||
lib.status.dateDelayed+=lib.getUTC(new Date())-lib.getUTC(lib.status.dateDelaying);
|
||||
delete lib.status.dateDelaying;
|
||||
}
|
||||
else if(event._triggered==2){
|
||||
if(event.type=='card') event.trigger('useCardToEnd');
|
||||
event.trigger(event.name+'End');
|
||||
event._triggered=3;
|
||||
}
|
||||
else if(event._triggered==3){
|
||||
if(event.type=='card') event.trigger('useCardToAfter');
|
||||
event.trigger(event.name+'After');
|
||||
event._triggered++;
|
||||
}
|
||||
else if(event.after&&event.after.length){
|
||||
var next=event.after.shift();
|
||||
if(event.next.length>0){
|
||||
var next=event.next.shift();
|
||||
if(next.player&&next.player.skipList.contains(next.name)){
|
||||
event.trigger(next.name+'Skipped');
|
||||
next.player.skipList.remove(next.name);
|
||||
if(lib.phaseName.contains(next.name)) next.player.getHistory('skipped').add(next.name)
|
||||
if(lib.phaseName.contains(next.name)) next.player.getHistory('skipped').add(next.name);
|
||||
}
|
||||
else{
|
||||
next.parent=event;
|
||||
_status.event=next;
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(event.parent){
|
||||
if(event.result){
|
||||
event.parent._result=event.result;
|
||||
}
|
||||
_status.event=event.parent;
|
||||
else if(event.finished){
|
||||
if(event._triggered==1){
|
||||
if(event.type=='card') event.trigger('useCardToOmitted');
|
||||
event.trigger(event.name+'Omitted');
|
||||
event._triggered=4;
|
||||
}
|
||||
else{
|
||||
return;
|
||||
else if(event._triggered==2){
|
||||
if(event.type=='card') event.trigger('useCardToEnd');
|
||||
event.trigger(event.name+'End');
|
||||
event._triggered=3;
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(event._triggered==0){
|
||||
if(event.type=='card') event.trigger('useCardToBefore');
|
||||
event.trigger(event.name+'Before');
|
||||
event._triggered++;
|
||||
}
|
||||
else if(event._triggered==1){
|
||||
if(event.type=='card') event.trigger('useCardToBegin');
|
||||
if(event.name=='phase'&&!event._begun){
|
||||
var next=game.createEvent('phasing',false,event);
|
||||
next.player=event.player;
|
||||
next.skill=event.skill;
|
||||
next.setContent('phasing');
|
||||
event._begun=true;
|
||||
}
|
||||
else{
|
||||
event.trigger(event.name+'Begin');
|
||||
else if(event._triggered==3){
|
||||
if(event.type=='card') event.trigger('useCardToAfter');
|
||||
event.trigger(event.name+'After');
|
||||
event._triggered++;
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(player&&player.classList.contains('dead')&&!event.forceDie&&event.name!='phaseLoop'){
|
||||
game.broadcastAll(function(){
|
||||
while(_status.dieClose.length){
|
||||
_status.dieClose.shift().close();
|
||||
}
|
||||
});
|
||||
if(event._oncancel){
|
||||
event._oncancel();
|
||||
else if(event.after&&event.after.length){
|
||||
var next=event.after.shift();
|
||||
if(next.player&&next.player.skipList.contains(next.name)){
|
||||
event.trigger(next.name+'Skipped');
|
||||
next.player.skipList.remove(next.name);
|
||||
if(lib.phaseName.contains(next.name)) next.player.getHistory('skipped').add(next.name)
|
||||
}
|
||||
event.finish();
|
||||
}
|
||||
else if(player&&player.removed&&event.name!='phaseLoop'){
|
||||
event.finish();
|
||||
}
|
||||
else if(player&&player.isOut()&&event.name!='phaseLoop'&&!event.includeOut){
|
||||
if(event.name=='phase'&&player==_status.roundStart&&!event.skill){
|
||||
_status.roundSkipped=true;
|
||||
else{
|
||||
next.parent=event;
|
||||
_status.event=next;
|
||||
}
|
||||
event.finish();
|
||||
}
|
||||
else{
|
||||
if(_status.withError||lib.config.compatiblemode||(_status.connectMode&&!lib.config.debug)){
|
||||
try{
|
||||
if(event.parent){
|
||||
if(event.result){
|
||||
event.parent._result=event.result;
|
||||
}
|
||||
_status.event=event.parent;
|
||||
}
|
||||
else{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(event._triggered==0){
|
||||
if(event.type=='card') event.trigger('useCardToBefore');
|
||||
event.trigger(event.name+'Before');
|
||||
event._triggered++;
|
||||
}
|
||||
else if(event._triggered==1){
|
||||
if(event.type=='card') event.trigger('useCardToBegin');
|
||||
if(event.name=='phase'&&!event._begun){
|
||||
var next=game.createEvent('phasing',false,event);
|
||||
next.player=event.player;
|
||||
next.skill=event.skill;
|
||||
next.setContent('phasing');
|
||||
event._begun=true;
|
||||
}
|
||||
else{
|
||||
event.trigger(event.name+'Begin');
|
||||
event._triggered++;
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(player&&player.classList.contains('dead')&&!event.forceDie&&event.name!='phaseLoop'){
|
||||
game.broadcastAll(function(){
|
||||
while(_status.dieClose.length){
|
||||
_status.dieClose.shift().close();
|
||||
}
|
||||
});
|
||||
if(event._oncancel){
|
||||
event._oncancel();
|
||||
}
|
||||
event.finish();
|
||||
}
|
||||
else if(player&&player.removed&&event.name!='phaseLoop'){
|
||||
event.finish();
|
||||
}
|
||||
else if(player&&player.isOut()&&event.name!='phaseLoop'&&!event.includeOut){
|
||||
if(event.name=='phase'&&player==_status.roundStart&&!event.skill){
|
||||
_status.roundSkipped=true;
|
||||
}
|
||||
event.finish();
|
||||
}
|
||||
else{
|
||||
if(_status.withError||lib.config.compatiblemode||(_status.connectMode&&!lib.config.debug)){
|
||||
try{
|
||||
event.content(event,step,source,player,target,targets,
|
||||
card,cards,skill,forced,num,trigger,result,
|
||||
_status,lib,game,ui,get,ai);
|
||||
}
|
||||
catch(e){
|
||||
game.print('游戏出错:'+event.name);
|
||||
game.print(e.toString());
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
else{
|
||||
event.content(event,step,source,player,target,targets,
|
||||
card,cards,skill,forced,num,trigger,result,
|
||||
_status,lib,game,ui,get,ai);
|
||||
}
|
||||
catch(e){
|
||||
game.print('游戏出错:'+event.name);
|
||||
game.print(e.toString());
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
else{
|
||||
event.content(event,step,source,player,target,targets,
|
||||
card,cards,skill,forced,num,trigger,result,
|
||||
_status,lib,game,ui,get,ai);
|
||||
}
|
||||
event.step++;
|
||||
}
|
||||
event.step++;
|
||||
}
|
||||
}
|
||||
game.loop();
|
||||
},
|
||||
pause:function(){
|
||||
clearTimeout(_status.timeout);
|
||||
|
@ -45952,6 +46040,18 @@
|
|||
},
|
||||
button:function(item,type,position,noclick,node){
|
||||
switch(type){
|
||||
case 'tdnodes':
|
||||
node=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode.tdnodes',position);
|
||||
if(Array.isArray(item)){
|
||||
node.innerHTML='<span>'+(item[1])+'</span>';
|
||||
node.link=item[0];
|
||||
}
|
||||
else{
|
||||
node.innerHTML='<span>'+(item)+'</span>';
|
||||
node.link=item;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'blank':
|
||||
node=ui.create.div('.button.card',position);
|
||||
node.link=item;
|
||||
|
@ -46170,18 +46270,6 @@
|
|||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'text':
|
||||
node=ui.create.div('.button.text',position);
|
||||
node.link=item;
|
||||
node.innerHTML=item;
|
||||
break;
|
||||
|
||||
case 'textButton':
|
||||
node=ui.create.div('.caption',position);
|
||||
node.link=item;
|
||||
node.innerHTML=item;
|
||||
break;
|
||||
}
|
||||
if(!noclick){
|
||||
node.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
|
||||
|
@ -46223,6 +46311,27 @@
|
|||
}
|
||||
return buttons;
|
||||
},
|
||||
textbuttons:function(list,dialog,noclick){
|
||||
for(var item of list){
|
||||
var str,link;
|
||||
if(Array.isArray(item)){
|
||||
str=item[1];
|
||||
link=item[0];
|
||||
}
|
||||
else{
|
||||
str=item;
|
||||
link=item;
|
||||
}
|
||||
if(str.indexOf('<div')!=0) str='<div class="popup text textbutton">'+str+'</div>';
|
||||
var next=dialog.add(str);
|
||||
if(!noclick) next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
|
||||
next.firstChild.link=link;
|
||||
for(var j in lib.element.button){
|
||||
next[j]=lib.element.button[j];
|
||||
}
|
||||
dialog.buttons.add(next.firstChild)
|
||||
}
|
||||
},
|
||||
player:function(position,noclick){
|
||||
var node=ui.create.div('.player',position);
|
||||
node.node={
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
window.noname_update={
|
||||
version:'1.9.117.1',
|
||||
update:'1.9.117',
|
||||
version:'1.9.117.2',
|
||||
update:'1.9.117.1',
|
||||
changeLog:[
|
||||
'露娜Q',
|
||||
'OL界典韦、邓忠、王衍、夏侯玄',
|
||||
'十周年刘徽、蔡阳、吕旷吕翔、杜夔、张奋',
|
||||
'其他技能调整和bug修复',
|
||||
'players://["dc_caiyang","dc_lvkuanglvxiang","dengzhong","dukui","key_kiyu","liuhui","ol_dianwei","wangyan","xiahouxuan","zhangfen"]',
|
||||
'新的dialog Button',
|
||||
'OL神孙权',
|
||||
'十周年界李儒、界朱桓、陈珪、黄权、胡班、丁尚涴、柯比能、全惠解、尹夫人',
|
||||
'其他技能调整和bug修复', 'players://["chengui","dc_huangquan","dc_huban","dc_liru","dingshangwan","junk_sunquan","kebineng","quanhuijie","re_zhuhuan","yinfuren"]',
|
||||
],
|
||||
files:[
|
||||
//'card/extra.js',
|
||||
|
@ -15,43 +14,43 @@ window.noname_update={
|
|||
//'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/diy.js',
|
||||
//'character/extra.js',
|
||||
'character/diy.js',
|
||||
'character/extra.js',
|
||||
//'character/hearth.js',
|
||||
//'character/gujian.js',
|
||||
//'character/gwent.js',
|
||||
//'character/hearth.js',
|
||||
//'character/mobile.js',
|
||||
'character/mobile.js',
|
||||
//'character/mtg.js',
|
||||
//'character/offline.js',
|
||||
'character/offline.js',
|
||||
//'character/old.js',
|
||||
//'character/ow.js',
|
||||
//'character/rank.js',
|
||||
'character/rank.js',
|
||||
'character/refresh.js',
|
||||
//'character/sb.js',
|
||||
//'character/shenhua.js',
|
||||
//'character/sp.js',
|
||||
//'character/sp2.js',
|
||||
'character/sp.js',
|
||||
'character/sp2.js',
|
||||
//'character/standard.js',
|
||||
//'character/tw.js',
|
||||
'character/tw.js',
|
||||
//'character/swd.js',
|
||||
//'character/xianjian.js',
|
||||
//'character/xinghuoliaoyuan.js',
|
||||
//'character/yingbian.js',
|
||||
//'character/yijiang.js',
|
||||
'character/yingbian.js',
|
||||
'character/yijiang.js',
|
||||
//'character/yxs.js',
|
||||
//'extension/boss/extension.js',
|
||||
//'font/suits.ttf',
|
||||
//'layout/default/layout.css',
|
||||
//'layout/default/menu.css',
|
||||
'layout/default/layout.css',
|
||||
'layout/default/menu.css',
|
||||
//'layout/long2/layout.css',
|
||||
//'layout/mobile/equip.css',
|
||||
//'layout/mobile/layout.css',
|
||||
|
@ -62,13 +61,13 @@ window.noname_update={
|
|||
//'mode/chess.js',
|
||||
//'mode/connect.js',
|
||||
//'mode/doudizhu.js',
|
||||
//'mode/guozhan.js',
|
||||
'mode/guozhan.js',
|
||||
//'mode/identity.js',
|
||||
//'mode/single.js',
|
||||
//'mode/stone.js',
|
||||
//'mode/tafang.js',
|
||||
//'mode/versus.js',
|
||||
//'game/game.js',
|
||||
'game/game.js',
|
||||
//'game/keyWords.js',
|
||||
//'game/NoSleep.js',
|
||||
//'game/config.js',
|
||||
|
|
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 66 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 66 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 100 KiB |
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 107 KiB |
|
@ -1448,10 +1448,13 @@ div:not(.handcards)>.card>.info>span,
|
|||
.button.card.button>.intro {
|
||||
top: 69px;
|
||||
}
|
||||
.buttons {
|
||||
width: 100%;
|
||||
}
|
||||
.buttons.guanxing {
|
||||
min-height: 106px;
|
||||
width: 90%;
|
||||
margin: 0px;
|
||||
width: 90%;
|
||||
}
|
||||
.buttons.smallzoom {
|
||||
display: block;
|
||||
|
@ -1733,7 +1736,8 @@ div:not(.handcards)>.card>.info>span,
|
|||
margin: 8px;
|
||||
}
|
||||
.content>.caption + .buttons:not(*:last-child){
|
||||
margin: 0
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.content>.config {
|
||||
height: 20px;
|
||||
|
@ -1770,6 +1774,7 @@ div:not(.handcards)>.card>.info>span,
|
|||
display: block;
|
||||
width: 100%;
|
||||
font-size: 0px;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.content>*{
|
||||
font-size: 16px;
|
||||
|
@ -3473,6 +3478,8 @@ div:not(.handcards)>.card>.info>span,
|
|||
#arena.selecting:not(.video) #me .card:not(.selectable)>.gaintag,
|
||||
#arena.selecting:not(.video) #me .card:not(.selectable)>.addinfo,
|
||||
#arena.selecting:not(.video) .dialog:not(.noselect) .button:not(.selectable):not(.noclick):not(.replaceButton),
|
||||
#arena.selecting:not(.video) .dialog:not(.noselect) .textbutton:not(.selectable):not(.noclick):not(.replaceButton),
|
||||
#arena.selecting:not(.video) .dialog:not(.noselect) .tdnodes:not(.selectable):not(.noclick):not(.replaceButton),
|
||||
.dead,.likedead {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
@ -4569,7 +4576,7 @@ div[data-decoration="bronze"]::after{
|
|||
opacity: 1;
|
||||
}
|
||||
|
||||
.selected:not(.player):not(.card):not(.button),.selectedx {
|
||||
.selected:not(.tdnodes):not(.text):not(.player):not(.card):not(.button),.selectedx {
|
||||
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px,rgba(255, 0, 0, 0.4) 0 0 5px, rgba(255, 0, 0, 0.4) 0 0 12px, rgba(255, 0, 0, 0.8) 0 0 15px !important;
|
||||
}
|
||||
|
||||
|
|
|
@ -1083,6 +1083,8 @@ input.fileinput::-webkit-file-upload-button {
|
|||
.menubutton.blue{
|
||||
background-image: linear-gradient(rgba(47,101,150,1), rgba(43, 90, 132,1));
|
||||
}
|
||||
.tdnodes.selected,
|
||||
.text.selected,
|
||||
.bluebg{
|
||||
background-image: linear-gradient(rgba(47,101,150,1), rgba(43, 90, 132,1)) !important;
|
||||
}
|
||||
|
|
|
@ -993,7 +993,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
for(var i of result.cards) list.add(get.type2(i));
|
||||
if(list.length==result.cards.length){
|
||||
target.draw();
|
||||
player.getStat('skill').sanchen--;
|
||||
player.getStat('skill').gzsanchen--;
|
||||
player.addMark('gzsanchen',1);
|
||||
}
|
||||
}
|
||||
|
@ -1630,7 +1630,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
trigger:{source:'damageBegin1'},
|
||||
filter:function(event,player){
|
||||
return event.card&&(event.card.name=='sha'||event.card.name=='juedou')
|
||||
return event.card&&(event.card.name=='sha'||event.card.name=='juedou')&&event.getParent().type=='card';
|
||||
},
|
||||
content:function(){
|
||||
trigger.num++;
|
||||
|
@ -5196,6 +5196,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
var next=trigger.player.chooseBool('是否对'+get.translation(player)+'发动【米道】?','令该角色修改'+get.translation(trigger.card)+'的花色和伤害属性');
|
||||
next.set('ai',()=>false);
|
||||
if(player==next.player) next.setHiddenSkill(event.name);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
|
@ -5878,80 +5879,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
},
|
||||
xindiaodu:{
|
||||
audio:"diaodu",
|
||||
group:'xindiaodu_use',
|
||||
frequent:true,
|
||||
preHidden:true,
|
||||
subSkill:{
|
||||
temp:{},
|
||||
use:{
|
||||
trigger:{
|
||||
global:"useCard",
|
||||
},
|
||||
filter:function(event,player){
|
||||
return get.type(event.card)=='equip'&&event.player.isAlive()&&
|
||||
event.player.isFriendOf(player)&&(player==event.player||player.hasSkill('xindiaodu'))&&!event.player.hasSkill('xindiaodu_temp');
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var next=trigger.player.chooseBool('是否发动【调度】摸一张牌?');
|
||||
if(player.hasSkill('xindiaodu')) next.set('frequentSkill','xindiaodu');
|
||||
if(player==trigger.player) next.setHiddenSkill('xindiaodu');
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('xindiaodu',trigger.player);
|
||||
trigger.player.draw('nodelay');
|
||||
trigger.player.addTempSkill('xindiaodu_temp');
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
trigger:{
|
||||
player:"phaseUseBegin",
|
||||
},
|
||||
filter:function(event,player){
|
||||
return game.hasPlayer(function(current){
|
||||
return current.isFriendOf(player)&¤t.countGainableCards(player,'e')>0;
|
||||
});
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt2('xindiaodu'),function(card,player,current){
|
||||
return current.isFriendOf(player)&¤t.countGainableCards(player,'e')>0;
|
||||
}).setHiddenSkill(event.name).ai=function(target){
|
||||
var num=1;
|
||||
if(target.hasSkill('gzxiaoji')) num+=2.5;
|
||||
if(target.isDamaged()&&target.getEquip('baiyin')) num+=2.5;
|
||||
if(target.hasSkill('xuanlve')) num+=2;
|
||||
return num;
|
||||
};
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
event.target1=result.targets[0];
|
||||
player.logSkill('xindiaodu',event.target1);
|
||||
player.line(event.target1,'xindiaodu');
|
||||
player.gainPlayerCard(event.target1,'e',true);
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
if(result.bool&&player.getCards('h').contains(result.cards[0])){
|
||||
event.card=result.cards[0];
|
||||
player.chooseTarget('是否将'+get.translation(event.card)+'交给一名其他角色?',function(card,player,current){
|
||||
return current!=player&¤t!=_status.event.target1&¤t.isFriendOf(player);
|
||||
}).set('target1',event.target1);
|
||||
}
|
||||
else event.finish();
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.line(target,'green');
|
||||
target.gain(card,player,'give');
|
||||
}
|
||||
},
|
||||
},
|
||||
gzbuyi:{
|
||||
trigger:{global:'dyingAfter'},
|
||||
usable:1,
|
||||
|
@ -12566,9 +12493,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
huibian_info:'出牌阶段限一次,你可以选择一名魏势力角色和另一名已受伤的魏势力角色。若如此做,你对前者造成一点伤害,然后其摸两张牌,然后后者回复一点体力。',
|
||||
gzzongyu:'总御',
|
||||
gzzongyu_info:'当【六龙骖驾】进入其他角色的装备区后,你可以将你装备区内所有坐骑牌(至少一张)与【六龙骖驾】交换位置。锁定技,当你使用坐骑牌后,若场上或弃牌堆中有【六龙骖驾】,则将【六龙骖驾】置入你的装备区。',
|
||||
|
||||
xindiaodu:"调度",
|
||||
"xindiaodu_info":"每回合限一次,与你势力相同的角色使用装备牌时,其可以摸一张牌;出牌阶段开始时,你可以获得与你势力相同的一名角色装备区内的一张牌,然后你可以将此牌交给另一名与你势力相同的其他角色。",
|
||||
|
||||
yigui:"役鬼",
|
||||
"yigui_info":"当你首次明置此武将牌时,你将剩余武将牌堆的两张牌扣置于游戏外,称为“魂”;你可以展示一张“魂”并将其置入剩余武将牌堆,视为使用了一张本回合内未以此法使用过的基本牌或普通锦囊牌。(此牌需指定目标,且目标须为未确定势力的角色或野心家或与此“魂”势力相同的角色)",
|
||||
"yigui_init":"役鬼",
|
||||
|
|