v1.9.115.3

This commit is contained in:
Spmario233 2022-10-03 21:56:03 +08:00
parent ce5fdfbb71
commit f3b897ff86
89 changed files with 1666 additions and 120 deletions

BIN
audio/die/dc_jiling.mp3 Normal file

Binary file not shown.

BIN
audio/die/dc_sunru.mp3 Normal file

Binary file not shown.

BIN
audio/die/dc_wangchang.mp3 Normal file

Binary file not shown.

BIN
audio/die/fengfang.mp3 Normal file

Binary file not shown.

BIN
audio/die/jin_jiachong.mp3 Normal file

Binary file not shown.

BIN
audio/die/jin_zhouchu.mp3 Normal file

Binary file not shown.

BIN
audio/die/re_duji.mp3 Normal file

Binary file not shown.

BIN
audio/die/re_zuoci.mp3 Normal file

Binary file not shown.

BIN
audio/die/sp_caiwenji.mp3 Normal file

Binary file not shown.

BIN
audio/die/sp_jiaxu.mp3 Normal file

Binary file not shown.

BIN
audio/die/sp_pangde.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/die/zhangxun.mp3 Normal file

Binary file not shown.

BIN
audio/die/zhaoang.mp3 Normal file

Binary file not shown.

BIN
audio/die/zhaoyǎn.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/dcbihuo1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcbihuo2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcditing1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcditing2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dckaiji1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dckaiji2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcpingxi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcpingxi2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/dcsushou1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcsushou2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dczhongjie1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dczhongjie2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/jianhui1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/jianhui2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/reandong1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/reandong2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/reyingshi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/reyingshi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/shanduan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/shanduan2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/suizheng1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/suizheng2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/tongxie1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/tongxie2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/twwuhun1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/twwuhun2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/xiecui1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xiecui2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xiongshu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xiongshu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/yilie1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/yilie2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/youxu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/youxu2.mp3 Normal file

Binary file not shown.

View File

@ -681,7 +681,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
zhanxiang:'战象',
zhanxiang_info:'锁定技。当你成为〖赠予〗的目标后,你将此次赠予的效果改为“将赠予牌移动至弃牌堆”。',
xinge:'信鸽',
xinge_info:'出牌阶段限一次。你可以将一张牌交给一名其他角色。',
xinge_info:'出牌阶段限一次。你可以将一张牌交给一名其他角色。',
xinge_append:'<span class="text" style="font-family: yuanli">咕咕咕。</span>',
_yongjian_zengyu:'赠予',

View File

@ -98,6 +98,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ns_zanghong:['male','qun',4,['nsshimeng']],
ns_ruanji:['male','wei',3,['nsshizui','nsxiaoye']],
ns_limi:['male','jin',3,['nstuilun']],
ns_zhonglimu:['male','wu',4,['nskuanhuai','nsdingbian']],
ns_zhangwei:['female','shu',3,['nsqiyue','nsxuezhu']],
diy_wenyang:['male','wei','4/6',['lvli','choujue']],
@ -199,7 +200,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'],
diy_yijiang3:['ns_ruanji','ns_zanghong','ns_limi','ns_zhonglimu'],
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"],
@ -314,6 +315,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ns_ruanji:'#g伯约的崛起',
ns_zanghong:'#g阿七',
ns_limi:'#g-心若困兽-',
ns_zhonglimu:'#gJG赛文♠7',
ns_luyusheng:'#g猫咪大院 - 魚と水',
ns_caimao:'#gP尔号玩家◆',
@ -521,6 +523,157 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_lucia:['key_shizuru'],
},
skill:{
//钟离牧
nskuanhuai:{
trigger:{player:'phaseUseBegin'},
content:function(){
'step 0'
var card=get.discardPile(function(card){
return get.type(card)!='basic';
});
if(card) player.gain(card,'gain2');
'step 1'
player.addTempSkill('nskuanhuai_blocker','phaseUseAfter');
player.addTempSkill('nskuanhuai_effect');
},
subSkill:{
blocker:{
charlotte:true,
mod:{
cardEnabled:function(card){
if(get.type(card)=='basic') return false;
},
cardSavable:function(card){
if(get.type(card)=='basic') return false;
},
},
},
effect:{
trigger:{player:'phaseDiscardEnd'},
charlotte:true,
direct:true,
filter:function(event,player){
return player.hasHistory('lose',function(evt){
if(evt.type!='discard'||evt.getParent('phaseDiscard')!=event) return false;
for(var i of evt.cards2){
if(get.type(i,false)=='basic'&&get.position(i,true)=='d'&&player.hasUseTarget(i)) return true;
}
return false;
});
},
content:function(){
'step 0'
var cards=[];
player.getHistory('lose',function(evt){
if(evt.type!='discard'||evt.getParent('phaseDiscard')!=trigger) return false;
for(var i of evt.cards2){
if(get.type(i,false)=='basic'&&get.position(i,true)=='d') cards.push(i);
}
return false;
});
event.cards=cards;
'step 1'
var cards2=event.cards.filter(function(i){
return get.position(i,true)=='d'&&player.hasUseTarget(i);
});
if(cards2.length){
player.chooseButton(['宽怀:是否使用其中一张牌?',cards2]);
}
else event.finish();
'step 2'
if(result.bool){
var card=result.links[0];
cards.remove(card);
player.chooseUseTarget(card,true);
if(cards.length>0) event.goto(1);
}
},
},
},
},
nsdingbian:{
trigger:{player:'useCard'},
forced:true,
filter:function(event,player){
if(player!=_status.currentPhase) return false;
return get.type(event.card)!='basic';
},
content:function(){
'step 0'
player.addTempSkill('nsdingbian_mark');
player.addMark('nsdingbian_mark',1,false);
var storage=player.getStorage('nsdingbian_ignore');
var goon=false;
for(var i of lib.inpile){
if(get.type(i)=='basic'&&!storage.contains(i)){
goon=true;
break;
}
}
if(goon) player.chooseControl().set('choiceList',[
'从牌堆中获得一张基本牌',
'令一种基本牌于本回合内不计入手牌上限',
]).set('prompt','定边:请选择一项').set('ai',function(){
var player=_status.event.player;
var list=['tao','shan'],list2=player.getStorage('nsdingbian_ignore');
list.removeArray(list2);
if(!list.length) return 0;
var num1=player.countCards('hs',function(card){
return get.type(card)!='basic'&&player.hasValueTarget(card,null,true);
}),num2=player.getHandcardLimit();
if(player.countCards('h',list)<=num2-num1) return 0;
return 1;
});
else event._result={index:0};
'step 1'
if(result.index==0){
var card=get.cardPile2(function(card){
return get.type(card,false)=='basic';
});
if(card) player.gain(card,'gain2');
event.finish();
}
else{
var list=[],storage=player.getStorage('nsdingbian_ignore');
for(var i of lib.inpile){
if(get.type(i)=='basic'&&!storage.contains(i)){
list.push(i);
}
}
player.chooseButton(['令一种基本牌于本回合内不计入手牌上限',[list,'vcard']],true).set('ai',function(button){
var name=button.link[2],player=_status.event.player;
if(name=='sha') return 0;
var cards=player.getCards('h',name);
if(!cards.length) return 0;
return get.value(cards,player);
});
}
'step 2'
player.markAuto('nsdingbian_ignore',[result.links[0][2]]);
},
subSkill:{
mark:{
onremove:function(player){
delete player.storage.nsdingbian_mark;
delete player.storage.nsdingbian_ignore;
},
mod:{
maxHandcard:(player,num)=>num-player.countMark('nsdingbian_mark'),
ignoredHandcard:function(card,player){
if(player.getStorage('nsdingbian_ignore').contains(get.name(card,player))){
return true;
}
},
cardDiscardable:function(card,player,name){
if(name=='phaseDiscard'&&player.getStorage('nsdingbian_ignore').contains(get.name(card,player))){
return false;
}
},
},
intro:{content:'手牌上限-#'},
},
},
},
//李密
nstuilun:{
trigger:{player:'phaseJieshuBegin'},
@ -16452,6 +16605,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ns_limi:'李密',
nstuilun:'退论',
nstuilun_info:'结束阶段你可以失去任意点体力至多失去至1点并弃置任意张手牌至多弃置至一张。若如此做你获得如下效果直到你下回合开始其他角色的回合开始时若你的体力值小于该角色则你可以令一名角色回复或失去1点体力若你的手牌数小于该角色则你可以令一名角色摸一张牌或弃置一张牌。',
ns_zhonglimu:'钟离牧',
nskuanhuai:'宽怀',
nskuanhuai_info:'出牌阶段开始时,你可以从弃牌堆中获得一张非基本牌。若如此做:你本阶段内不能使用基本牌,且本回合的弃牌阶段结束时,你可以依次使用本阶段内弃置的基本牌。',
nsdingbian:'定边',
nsdingbian_info:'锁定技。当你于回合内使用锦囊牌或装备牌后,你令自己本回合的手牌上限-1且选择一项⒈从牌堆获得一张基本牌。⒉令一种基本牌于本回合内不计入手牌上限。',
junk_zhangrang:'四花张让',
junktaoluan:'滔乱',

View File

@ -17,10 +17,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
extra_ol:['ol_zhangliao','shen_caopi','shen_zhenji','shen_sunquan'],
extra_mobilezhi:['shen_guojia','shen_xunyu'],
extra_mobilexin:['shen_taishici','shen_sunce'],
extra_tw:['tw_shen_guanyu'],
extra_offline:['shen_diaochan','boss_zhaoyun'],
},
},
character:{
tw_shen_guanyu:['male','shen',4,['twwushen','twwuhun'],['shu']],
shen_machao:['male','shen',4,['shouli','hengwu'],['shu']],
shen_sunquan:['male','shen',4,['dili','yuheng'],['wei']],
shen_jiangwei:['male','shen',4,['jiufa','tianren','pingxiang'],['shen']],
@ -60,6 +62,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
characterReplace:{
shen_zhangliao:['shen_zhangliao','ol_zhangliao'],
shen_zhaoyun:['shen_zhaoyun','boss_zhaoyun'],
shen_guanyu:['shen_guanyu','tw_shen_guanyu'],
},
characterFilter:{
shen_diaochan:function(mode){
@ -67,6 +70,142 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
twwushen:{
mod:{
cardname:function(card,player,name){
if(get.suit(card)=='heart') return 'sha';
},
cardnature:function(card,player){
if(get.suit(card)=='heart') return false;
},
targetInRange:function(card){
if(get.suit(card)=='heart') return true;
},
cardUsable:function(card){
if(card.name=='sha'&&get.suit(card)=='heart') return Infinity;
}
},
audio:'wushen',
trigger:{player:'useCard2'},
forced:true,
filter:function(event,player){
return event.card.name=='sha'&&(get.suit(event.card)=='heart'||!player.hasSkill('twwushen_phase',null,null,false));
},
logTarget:function(event,player){
if(get.suit(event.card)=='heart'){
var targets=game.filterPlayer(function(current){
return !event.targets.contains(current)&&current.hasMark('twwuhun')&&lib.filter.targetEnabled(event.card,player,current);
});
if(targets.length){
return targets.sortBySeat();
}
}
return null;
},
content:function(){
if(!player.hasSkill('twwushen_phase',null,null,false)){
trigger.directHit.addArray(game.players);
player.addTempSkill('twwushen_phase',['phaseZhunbeiAfter','phaseJudgeAfter','phaseDrawAfter','phaseUseAfter','phaseDiscardAfter','phaseJieshuAfter'])
}
if(get.suit(trigger.card)=='heart'){
if(trigger.addCount!==false){
trigger.addCount=false;
if(player.stat[player.stat.length-1].card.sha>0){
player.stat[player.stat.length-1].card.sha--;
}
}
var targets=game.filterPlayer(function(current){
return !trigger.targets.contains(current)&&current.hasMark('twwuhun')&&lib.filter.targetEnabled(trigger.card,player,current);
});
if(targets.length){
trigger.targets.addArray(targets.sortBySeat());
game.log(targets,'也成为了',trigger.card,'的目标');
}
}
},
ai:{
directHit_ai:true,
skillTagFilter:function(player,tag,arg){
return arg.card.name=='sha'&&!player.hasSkill('twwushen_phase',null,null,false);
},
},
subSkill:{phase:{charlotte:true}},
shaRelated:true,
},
twwuhun:{
trigger:{player:'die'},
forceDie:true,
skillAnimation:true,
animationColor:'soil',
locked:true,
check:function(event,player){
return game.hasPlayer(function(current){
return current!=player&&current.hasMark('twwuhun')&&get.attitude(player,current)<0;
});
},
content:function(){
'step 0'
player.judge(function(card){
var name=get.name(card,false);
if(name=='tao'||name=='taoyuan') return -25;
return 15;
}).set('forceDie',true).judge2=function(result){
return result.bool;
};
'step 1'
var num=game.countPlayer(function(current){
return current!=player&&current.hasMark('twwuhun');
});
if(result.bool&&num>0){
player.chooseTarget('请选择【武魂】的目标','选择至少一名拥有“梦魇”标记的角色。令这些角色各自失去X点体力X为其“梦魇”标记数',true,[1,num],function(card,player,target){
return target!=player&&target.hasMark('twwuhun');
}).set('forceDie',true).set('ai',function(target){
return -get.attitude(_status.event.player,target);
});
}
else event.finish();
'step 2'
var targets=result.targets.sortBySeat();
player.line(targets,'fire');
event.targets=targets;
'step 3'
var target=targets.shift();
var num=target.countMark('twwuhun');
if(num>0) target.loseHp(num);
if(targets.length>0) event.redo();
},
marktext:'魇',
intro:{
name:'梦魇',
content:'mark',
onunmark:true,
},
group:'twwuhun_gain',
subSkill:{
gain:{
trigger:{
player:'damageEnd',
source:'damageSource',
},
forced:true,
filter:function(event,player,name){
if(event.player==event.source) return false;
var target=lib.skill.twwuhun_gain.logTarget(event,player);
if(!target||!target.isAlive()) return false;
return name=='damageEnd'||target.hasMark('twwuhun');
},
logTarget:function(event,player){
if(player==event.player) return event.source;
return event.player;
},
content:function(){
var target=lib.skill.twwuhun_gain.logTarget(trigger,player);
target.addMark('twwuhun',player==trigger.source?1:trigger.num);
game.delayx();
},
},
},
},
shouli:{
audio:2,
mod:{
@ -799,7 +938,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
jiufa:{
audio:2,
trigger:{player:'useCardAfter'},
trigger:{player:['useCardAfter','respondAfter']},
frequent:true,
filter:function(event,player){
return event.jiufa_counted&&player.getStorage('jiufa').length>=9;
@ -5965,7 +6104,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tianxing_info:'觉醒技准备阶段若你武将牌上的「储」数不小于3则你减1点体力上限并获得所有「储」然后失去技能〖储元〗选择获得以下技能中的一个〖仁德〗/〖制衡〗/〖乱击〗/〖行动〗',
shen_zhenji:'神甄宓',
shenfu:'神赋',
shenfu_info:'回合结束时若你的手牌数为奇数你可对一名其他角色造成1点伤害。若其死亡,你可重复此流程。偶数,你可选择一名角色,你令其摸一张牌或弃置一张手牌。若其手牌数等于体力值,你可重复此流程。',
shenfu_info:'回合结束时若你的手牌数为奇数你可对一名其他角色造成1点雷属性伤害。若其死亡,你可重复此流程。偶数,你可选择一名角色,你令其摸一张牌或弃置一张手牌。若其手牌数等于体力值,你可重复此流程。',
qixian:'七弦',
qixian_info:'锁定技你的手牌上限视为7。',
caopi_xingdong:'行动',
@ -6024,7 +6163,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
pinghe_info:'锁定技。①你的手牌上限基数等于你已损失的体力值。②当你受到其他角色造成的伤害时若你有牌且你的体力上限大于1则你防止此伤害减一点体力上限并将一张手牌交给一名其他角色。然后若你拥有〖英霸〗则伤害来源获得一个“平定”标记。',
shen_jiangwei:'神姜维',
jiufa:'九伐',
jiufa_info:'①当你声明使用牌时,你记录此牌的牌名。②当你使用牌结算结束后,若你的〖九伐〗记录中包含至少⑨种不同的牌名,则你可以展示牌堆顶的⑨张牌,选择并获得其中任意张点数各不相同且{这九张牌中存在未被选择且和已选择的牌点数相同}的牌,清除所有的记录,将其余牌置入弃牌堆。',
jiufa_info:'①当你声明使用牌时,你记录此牌的牌名。②当你使用或打出的牌结算结束后,若你的〖九伐〗记录中包含至少⑨种不同的牌名,则你可以展示牌堆顶的⑨张牌,选择并获得其中任意张点数各不相同且{这九张牌中存在未被选择且和已选择的牌点数相同}的牌,清除所有的记录,将其余牌置入弃牌堆。',
tianren:'天任',
tianren_info:'锁定技。①当有一张基本牌或普通锦囊牌不因使用而进入弃牌堆后你获得一枚“天任”标记。②当你获得“天任”标记或体力上限变化后若你的“天任”数不小于X则你移去X枚“天任”加1点体力上限并摸两张牌X为你的体力上限。',
pingxiang:'平襄',
@ -6082,6 +6221,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
hina_shenshi_info:'神势力技。出牌阶段开始时/结束时,你可摸两张牌,然后将其中一张牌置于牌堆顶。你以此法获得的牌视为拥有全部应变效果,且可以无条件发动。',
hina_xingzhi:'幸凪',
hina_xingzhi_info:'键势力技。每回合限一次,你可以通过“助战”触发一张牌的全部应变效果,且响应助战的角色摸两张牌。',
tw_shen_guanyu:'TW神关羽',
twwushen:'武神',
twwushen_info:'锁定技。①你的♥手牌均视为普【杀】。②你于每阶段使用的第一张【杀】不可被响应。③你使用♥【杀】无距离和次数限制。④当你使用♥【杀】选择目标后,你令所有拥有“梦魇”标记的角色均成为此【杀】的目标。',
twwuhun:'武魂',
twwuhun_info:'锁定技。①当你受到其他角色造成的1点伤害后你令伤害来源获得1枚“梦魇”标记。②当你对有“梦魇”标记的其他角色造成伤害后你令其获得一枚“梦魇”标记。③当你死亡时你可进行判定。若结果不为【桃】或【桃园结义】则你选择至少一名拥有“梦魇”标记的角色。令这些角色各自失去X点体力X为其“梦魇”标记数。',
extra_feng:'神话再临·风',
extra_huo:'神话再临·火',
@ -6095,6 +6239,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
extra_mobilexin:'始计篇·信',
extra_offline:'神话再临·线下',
extra_decade:'十周年服神将',
extra_tw:'海外服神将',
},
};
});

View File

@ -16368,6 +16368,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gaolan:['dc_gaolan','gaolan','sp_gaolan'],
cuiyan:['sp_cuiyan','cuiyan'],
wujing:['tw_wujing','wujing'],
sunru:['dc_sunru','sunru'],
zhouchu:['jin_zhouchu','zhouchu'],
},
translate:{
liuzan:'手杀留赞',
@ -16860,7 +16862,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xunyi2:'殉义',
xunyi3:'殉义',
xunyi_info:'游戏开始时,或当上一个拥有“殉义”效果的角色死亡后,你可以选择一名角色获得如下效果:当其/你对二者之外的角色造成伤害后,你/其摸一张牌;当其/你受到二者之外的角色造成的伤害后,你/其弃置一张牌。',
zhouchu:'周处',
zhouchu:'手杀周处',
xianghai:'乡害',
xianghai_info:'锁定技,其他角色的手牌上限-1。你手牌区的装备牌均视为【酒】。',
chuhai:'除害',

View File

@ -271,6 +271,7 @@ window.noname_character_rank={
'guanning',
'ol_puyuan',
'ns_limi',
'jin_zhouchu',
'key_misuzu',
'key_sunohara',
'key_umi',
@ -521,6 +522,10 @@ window.noname_character_rank={
'dc_gongsunzan',
'ol_xunyu',
'zhangxuan',
'tw_shenguanyu',
'dc_sunru',
'dc_wangchang',
'fengfang',
],
bp:[
'chess_diaochan',
@ -795,6 +800,8 @@ window.noname_character_rank={
'dc_yanghu',
'dc_gongsunzan',
'caohua',
'zhaoang',
'ns_zhonglimu',
],
b:[
'diy_feishi',
@ -1030,6 +1037,8 @@ window.noname_character_rank={
'dc_huangzu',
'dc_liuyu',
'qinyilu',
'zhaoyǎn',
'zhangxun',
],
bm:[
'diy_xizhenxihong',
@ -1385,6 +1394,7 @@ window.noname_character_rank={
'sb_huangzhong',
'shen_sunquan',
'shen_machao',
'tw_shen_guanyu',
'key_tomoya',
'key_masato',
'key_shiorimiyuki',
@ -1585,6 +1595,8 @@ window.noname_character_rank={
'caohua',
'ns_limi',
'ol_xunyu',
'ns_zhonglimu',
'dc_sunru',
'key_kano',
'key_haruko',
'key_akiko',
@ -1991,6 +2003,9 @@ window.noname_character_rank={
're_liuchen',
'dc_liuyu',
'qinyilu',
'dc_jiling',
'dc_wangchang',
'jin_zhouchu',
],
junk:[
'sunshao',

View File

@ -263,7 +263,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var mod2=game.checkMod(hs[i],player,'unchanged','cardEnabled2',player);
if(mod2===false) return false;
}
return true;
return event.filterCard(get.autoViewAs({name:'juedou'},hs))
},
viewAs:{name:'juedou'},
onuse:function(links,player){
@ -3330,9 +3330,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
direct:true,
content:function (){
'step 0'
player.chooseTarget(get.prompt2('decadezhenjun')).ai=function(target){
player.chooseTarget(get.prompt2('decadezhenjun'),function(card,player,target){
return target.countCards('he')>0;
}).set('ai',function(target){
return -get.attitude(_status.event.player,target)*(target.countCards('e')+1);
};
});
'step 1'
if(result.bool){
var target=result.targets[0];

View File

@ -1290,7 +1290,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
},
"nzry_juzhanx":{
nzry_juzhanx:{
mod:{
targetEnabled:function(card,player,target){
if(player.hasSkill('nzry_juzhany')) return false;
@ -1298,14 +1298,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
nzry_juzhany:{},
"nzry_feijun":{
init:function(player){
player.storage.nzry_feijun=[];
},
marktext:"飞",
nzry_feijun:{
intro:{
content:function(storage){
if(!storage.length) return '尚未发动';
if(!storage||!storage.length) return '尚未发动';
var str=get.translation(storage);
return '已对'+str+'发动过〖飞军〗';
},
@ -1316,7 +1312,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
position:"he",
audio:2,
filter:function(event,player){
return game.countPlayer(function(current){return current.countCards('h')>=player.countCards('h')})>0||game.countPlayer(function(current){return current.countCards('e')>player.countCards('e')})>0;
return game.hasPlayer(function(current){
return current.countCards('h')>=player.countCards('h');
})||game.hasPlayer(function(current){
return current.countCards('e')>=player.countCards('e');
})>0;
},
filterCard:true,
check:function(card){
@ -1325,60 +1325,65 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
'step 0'
var list=[];
if(game.countPlayer(function(current){return current.countCards('h')>player.countCards('h')})>0) list.push('令一名手牌数大于你的角色交给你一张牌');
if(game.countPlayer(function(current){return current.countCards('e')>player.countCards('e')})>0) list.push('令一名装备区里牌数大于你的角色弃置一张装备牌');
if(game.hasPlayer(function(current){
return current.countCards('h')>player.countCards('h');
})) list.push('令一名手牌数大于你的角色交给你一张牌');
if(game.hasPlayer(function(current){
return current.countCards('e')>player.countCards('e');
})>0) list.push('令一名装备区内牌数大于你的角色弃置一张装备牌');
if(list.length==0) event.finish();
else if(list.length<2){
if(game.countPlayer(function(current){return current.countCards('h')>player.countCards('h')})>0) event._result={index:0};
if(game.hasPlayer(function(current){
return current.countCards('h')>player.countCards('h');
})) event._result={index:0};
else event._result={index:1};
}
else{
player.chooseControl().set('ai',function(){
if(game.hasPlayer(function(current){
return current.countCards('h')>player.countCards('h')&&get.attitude(player,current)<0
})) return 0;
return 1;
}).set('choiceList',list);
player.chooseControl().set('ai',function(){
if(game.hasPlayer(function(current){
return current.countCards('h')>player.countCards('h')&&get.attitude(player,current)<0
})) return 0;
return 1;
}).set('choiceList',list);
}
'step 1'
event.index=result.index;
if(result.index==0){
event.control='令一名手牌数大于你的角色交给你一张牌';
player.chooseTarget(function(card,player,target){
return target.countCards('h')>player.countCards('h')&&target!=player;
},'请选择【飞军】的目标').ai=function(target){
return target!=player&&target.countCards('h')>player.countCards('h');
},'选择一名手牌数大于你的角色').set('ai',function(target){
return -get.attitude(player,target)
};
}else{
event.control='令一名装备区里牌数大于你的角色弃置一张装备牌';
});
}
else{
player.chooseTarget(function(card,player,target){
return target.countCards('e')>player.countCards('e')&&target!=player;
},'请选择【飞军】的目标').ai=function(target){
},'选择一名装备区里牌数大于你的角色').ai=function(target){
return -get.attitude(player,target)
};
};
'step 2'
if(result.bool){
event.target=result.targets[0];
if(!player.storage.nzry_feijun.contains(event.target)){
if(player.hasSkill('nzry_binglve')){
player.draw(2);
player.logSkill('nzry_binglve');
}
player.storage.nzry_feijun.push(event.target);
player.syncStorage('nzry_feijun');
};
player.line(event.target);
if(event.control=='令一名手牌数大于你的角色交给你一张牌'){
event.target.chooseCard(1,'he',true).set('ai',function(card){
var list=player.getStorage('nzry_feijun');
if(!list.contains(event.target)){
event._nzry_binglve=true;
player.markAuto('nzry_feijun',[event.target]);
}
player.line(event.target,'green');
if(event.index==0){
event.target.chooseCard('he',true,'选择一张牌交给'+get.translation(player)).set('ai',function(card){
return 6-get.value(card);
});
}else{
event.target.chooseToDiscard(1,'he',true,{type:'equip'});
}
else{
event.target.chooseToDiscard('he',true,{type:'equip'},'请弃置一张装备牌');
event.finish();
};
}else{
}
}
else{
event.finish();
};
}
'step 3'
if(result.bool){
player.gain(result.cards,event.target,'giveAuto');
@ -1393,7 +1398,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
},
"nzry_binglve":{audio:2},
nzry_binglve:{
audio:2,
trigger:{player:'nzry_feijunAfter'},
forced:true,
filter:function(event,player){
return event._nzry_binglve==true;
},
content:function(){
player.draw(2)
},
ai:{combo:'nzry_feijun'},
},
nzry_huaiju_ai:{
charlotte:true,
ai:{

View File

@ -6,18 +6,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
characterSort:{
sp:{
sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","ganfuren","ol_bianfuren","qinghegongzhu","tengfanglan","ruiji"],
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'],
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','zhaoyǎn'],
sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun"],
sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu','ol_xinxianying',"daxiaoqiao"],
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","fanjiangzhangda"],
sp_liesi:['mizhu','weizi'],
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'],
sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'],
sp_wanglang:['wanglang'],
sp_tongque:["sp_fuwan","sp_fuhuanghou","sp_jiben"],
sp_zhongdan:["cuiyan","huangfusong"],
sp_guozhan2:["mateng","tianfeng","sp_dongzhuo","liqueguosi","jiling","zhangren","zongyu"],
sp_guozhan2:["mateng","tianfeng","sp_dongzhuo","liqueguosi","zhangren"],
//sp_single:["niujin"],
sp_others:["hanba","caiyang"],
},
@ -28,6 +28,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
jin_zhouchu:['male','jin',4,['shanduan','yilie']],
zhaoyǎn:['male','wei',4,['tongxie']],
ol_puyuan:['male','shu',4,['olshengong','olqisi']],
ruiji:['female','wu',3,['qiaoli','qingliang']],
weizi:['male','qun',3,['yuanzi','liejie']],
@ -56,7 +58,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_jiben:['male','qun',3,['spduanzhi','spduyi']],
sp_fuhuanghou:['female','qun',3,['spcangni','spmixin']],
sp_fuwan:['male','qun',3,['spfengyin','spchizhong']],
zongyu:['male','shu',3,['zyqiao','chengshang']],
ol_xinxianying:['female','wei',3,['xincaishi','xinzhongjian']],
wolongfengchu:['male','shu',4,['youlong','luanfeng']],
sp_zhangliao:['male','qun',4,['mubing','ziqu','diaoling']],
@ -157,7 +158,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//liqueguosi:['male','qun',4,['xiongsuan']],
//cuimao:['male','wei',3,['zhengbi','fengying']],
jiling:['male','qun',4,['shuangren']],
//jiling:['male','qun',4,['shuangren']],
zangba:['male','wei',4,['rehengjiang']],
zhangren:['male','qun',4,['chuanxin','zfengshi']],
@ -171,6 +172,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//kaisa:["male","western",4,["zhengfu"]],
},
characterIntro:{
zhaoyǎn:'赵俨171~245年字伯然颍川阳翟今河南禹州市。东汉末年颍川“四大名士”之一三国时期魏国名臣。熟读经史精明强干。建安二年投靠大将军曹操之后起家朗陵县令历任司空府掾、司空主薄、都督护军、扶风太守等职。魏文帝曹丕继位后历任魏国侍中、驸马都尉、河东太守、典农中郎将、度支尚书封宜土亭侯。魏明帝曹睿时期历任大司农、骠骑将军、大司空等职。正始六年去世时年七十五谥号为穆。',
ruiji:'芮姬,芮玄之女,太子孙登妃,黄武五年卒。',
weizi:'卫兹(?-190年字子许《三国演义》中其名为卫弘当为误记陈留襄邑今河南睢县人。曾举孝廉先后被车骑将军何苗、司徒杨赐等召辟。中平六年189年十二月曹操在陈留己吾募兵而卫兹以家财资助曹操使曹操顺利募得五千士兵。此后卫兹与曹操共同讨伐董卓。初平元年190年卫兹在跟随曹操讨伐董卓途中于荥阳汴水遭遇董卓军徐荣力战终日失利身亡。',
tengfanglan:'滕芳兰生卒年不详北海剧县今山东省寿光市太常滕胤的族女滕牧的女儿吴末帝孙皓的皇后。永安元年258年孙皓为乌程侯时被聘为妃。元兴元年264年孙皓登基后被立为皇后。孙吴灭亡后随孙皓迁居洛阳。',
@ -645,6 +647,482 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//周处
shanduan:{
audio:2,
init:function(player,name){
player.storage[name]=[1,2,3,4];
},
trigger:{player:'phaseBegin'},
forced:true,
locked:false,
popup:false,
content:function(){
trigger._shanduan=(player.storage.shanduan||[1,2,3,4]).slice(0);
player.storage.shanduan=[1,2,3,4]
},
group:['shanduan_draw','shanduan_use','shanduan_discard','shanduan_damage'],
ai:{
notemp:true,
threaten:3.6,
},
subSkill:{
damage:{
audio:'shanduan',
trigger:{player:'damageEnd'},
forced:true,
locked:false,
filter:(event,player)=>player!=_status.currentPhase,
content:function(){
if(!player.storage.shanduan) player.storage.shanduan=[1,2,3,4];
var list=player.storage.shanduan;
for(var i=0;i<list.length;i++){
var num=list[i],add=true;
for(var j=0;j<list.length;j++){
if(list[j]<num){
add=false;
break;
}
}
if(add){
list[i]++;
break;
}
}
game.delayx();
},
},
draw:{
audio:'shanduan',
trigger:{player:'phaseDrawBegin'},
forced:true,
locked:false,
filter:function(event,player){
var list=event.getParent()._shanduan;
return list&&list.length>0;
},
content:function(){
'step 0'
var list=trigger.getParent()._shanduan;
if(list.length==1) event._result={index:0};
else player.chooseControl(list).set('prompt','善断:为摸牌阶段的摸牌数分配一个数值').set('choice',list.indexOf(Math.max.apply(Math,list))).set('ai',()=>_status.event.choice);
'step 1'
var list=trigger.getParent()._shanduan;
var num=list[result.index];
trigger.num=num;
list.remove(num);
game.log(player,'给','#g摸牌阶段的摸牌数','分配的数值是','#y'+num);
},
},
use:{
audio:'shanduan',
trigger:{player:'phaseUseBegin'},
forced:true,
locked:false,
filter:function(event,player){
var list=event.getParent()._shanduan;
return list&&list.length>0;
},
content:function(){
'step 0'
var list=trigger.getParent()._shanduan;
if(list.length==1) event._result={index:0};
else player.chooseControl(list).set('prompt','善断:为攻击范围基数分配一个数值').set('list',list).set('ai',function(){
var player=_status.event.player,list=_status.event.list,card={name:'sha'};
if(player.hasSha()&&(player.hasValueTarget(card,false,true)&&!player.hasValueTarget(card,null,true))){
var range=1;
var equips=player.getCards('e');
for(var i=0;i<equips.length;i++){
var info=get.info(equips[i],false).distance;
if(!info) continue;
if(info.attackFrom){
range-=info.attackFrom;
}
}
var listx=list.slice(0).sort();
for(var i of listx){
if(i<=range) continue;
if(game.hasPlayer(function(current){
var distance=get.distance(player,current,'attack');
if(distance>1&&distance<=(i-range)) return true;
return false;
})) return list.indexOf(i);
}
}
return list.indexOf(Math.min.apply(Math,list));
});
'step 1'
var list=trigger.getParent()._shanduan;
var num=list[result.index];
if(!player.storage.shanduan_effect) player.storage.shanduan_effect={};
player.storage.shanduan_effect.range=num;
player.addTempSkill('shanduan_effect');
list.remove(num);
game.log(player,'给','#g攻击范围的基数','分配的数值是','#y'+num);
if(list.length==0) event.finish();
else if(list.length==1) event._result={index:0};
else player.chooseControl(list).set('prompt','为使用【杀】的次数上限分配一个数值').set('list',list).set('ai',function(){
var player=_status.event.player,list=_status.event.list;
var sha=player.countCards('hs',function(card){
return get.name(card)=='sha'&&player.hasValueTarget(card,null,true);
});
var max=player.getCardUsable('sha');
if(sha<=max){
var listx=list.slice(0).sort();
for(var i of listx){
if(max+i>=sha) return list.indexOf(i);
}
return list.indexOf(Math.max.apply(Math,list))
}
return list.indexOf(Math.min.apply(Math,list));
});
'step 2'
var list=trigger.getParent()._shanduan;
var num=list[result.index];
if(!player.storage.shanduan_effect) player.storage.shanduan_effect={};
player.storage.shanduan_effect.sha=num;
game.log(player,'给','#g使用【杀】的次数上限','分配的数值是','#y'+num);
list.remove(num);
},
},
discard:{
audio:'shanduan',
trigger:{player:'phaseDiscardBegin'},
forced:true,
locked:false,
filter:function(event,player){
var list=event.getParent()._shanduan;
return list&&list.length>0;
},
content:function(){
'step 0'
var list=trigger.getParent()._shanduan;
if(list.length==1) event._result={index:0};
else player.chooseControl(list).set('prompt','善断:为手牌上限基数分配一个数值').set('choice',list.indexOf(Math.max.apply(Math,list))).set('ai',()=>_status.event.choice);
'step 1'
var list=trigger.getParent()._shanduan;
var num=list[result.index];
if(!player.storage.shanduan_effect) player.storage.shanduan_effect={};
player.storage.shanduan_effect.limit=num;
player.addTempSkill('shanduan_effect');
list.remove(num);
game.log(player,'给','#g手牌上限的基数','分配的数值是','#y'+num);
},
},
effect:{
charlotte:true,
onremove:true,
mod:{
attackRangeBase:function(player){
var map=player.storage.shanduan_effect;
if(typeof map.range!='number') return;
var range=1;
var equips=player.getCards('e',function(card){
return !ui.selected.cards||!ui.selected.cards.contains(card);
});
for(var i=0;i<equips.length;i++){
var info=get.info(equips[i],false).distance;
if(!info) continue;
if(info.attackFrom){
range-=info.attackFrom;
}
}
return Math.max(range,map.range);
},
cardUsable:function(card,player,num){
if(card.name=='sha'){
var map=player.storage.shanduan_effect;
if(typeof map.sha!='number') return;
return num-1+map.sha;
}
},
maxHandcardBase:function(player,num){
var map=player.storage.shanduan_effect;
if(typeof map.limit!='number') return;
return map.limit;
},
},
},
},
},
yilie:{
audio:2,
enable:'chooseToUse',
hiddenCard:function(player,name){
if(get.type(name)=='basic'&&lib.inpile.contains(name)&&!player.getStorage('yilie_count').contains(name)){
var hs=player.getCards('hs');
if(hs.length<2) return false;
var bool=false,map={};
for(var card of hs){
var color=get.color(card);
if(!map[color]) map[color]=true;
else{
bool=true;
break;
}
}
return bool;
}
},
filter:function(event,player){
if(event.type=='wuxie') return false;
var list=player.getStorage('yilie_count');
var hs=player.getCards('hs');
if(hs.length<2) return false;
var bool=false,map={};
for(var card of hs){
var color=get.color(card);
if(!map[color]) map[color]=true;
else{
bool=true;
break;
}
}
if(!bool) return false;
for(var name of lib.inpile){
if(get.type(name)!='basic'||list.contains(name)) continue;
var card={name:name};
if(event.filterCard(card,player,event)) return true;
if(name=='sha'){
for(var nature of lib.inpile_nature){
card.nature=nature;
if(event.filterCard(card,player,event)) return true;
}
}
}
return false;
},
chooseButton:{
dialog:function(event,player){
var list=[];
var storage=player.storage.yilie_count;
for(var i of lib.inpile){
if(get.type(i)!='basic') continue;
if(storage&&storage.contains(i)) continue;
var card={name:i,isCard:true};
if(event.filterCard(card,player,event)) list.push(['基本','',i]);
if(i=='sha'){
for(var j of lib.inpile_nature){
card.nature=j;
if(event.filterCard(card,player,event)) list.push(['基本','',i,j]);
}
}
}
return ui.create.dialog('义烈',[list,'vcard'],'hidden')
},
check:function(button){
if(button.link[2]=='shan') return 3;
var player=_status.event.player;
if(button.link[2]=='jiu'){
if(player.getUseValue({name:'jiu'})<=0) return 0;
if(player.countCards('h','sha')) return player.getUseValue({name:'jiu'});
return 0;
}
return player.getUseValue({name:button.link[2],nature:button.link[3]})/4;
},
backup:function(links,player){
return {
audio:'yilie',
selectCard:2,
filterCard:function(card,player){
var color=get.color(card);
if(ui.selected.cards.length) return color==get.color(ui.selected.cards[0]);
return player.hasCard(function(cardx){
return card!=cardx&&get.color(cardx)==color;
},'hs')
},
position:'hs',
complexCard:true,
check:(card)=>8-get.value(card),
popname:true,
viewAs:{
name:links[0][2],
nature:links[0][3],
},
precontent:function(){
var name=event.result.card.name;
player.addTempSkill('yilie_count','roundStart');
player.markAuto('yilie_count',[name]);
},
}
},
prompt:function(links,player){
var name=links[0][2];
var nature=links[0][3];
return '将两张颜色相同的手牌当做'+(get.translation(nature)||'')+get.translation(name)+'使用';
},
},
ai:{
order:function(item,player){
return 2.6;
},
respondShan:true,
respondSha:true,
fireAttack:true,
skillTagFilter:function(player,tag){
var hs=player.getCards('hs');
if(hs.length<2) return false;
var bool=false,map={};
for(var card of hs){
var color=get.color(card);
if(!map[color]) map[color]=true;
else{
bool=true;
break;
}
}
if(!bool) return false;
var storage=player.storage.yilie_count;
var name;
switch(tag){
case 'respondShan':name='shan';break;
default:name='sha';break;
}
if(storage&&storage.contains(name)) return false;
},
result:{
player:function(player){
if(_status.event.dying) return get.attitude(player,_status.event.dying);
return 1;
}
}
},
subSkill:{
count:{charlotte:true,onremove:true},
backup:{audio:'yilie'},
},
},
//赵俨
tongxie:{
audio:2,
trigger:{player:'phaseUseBegin'},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt('tongxie'),'选择至多两名其他角色作为“同协角色”',lib.filter.notMe,[1,2]).set('ai',function(target){
return get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
var targets=result.targets;
targets.add(player);
player.logSkill('tongxie',targets);
player.addTempSkill('tongxie_effect',{player:'phaseBegin'});
player.markAuto('tongxie_effect',targets);
var min=player.countCards('h'),min_player=player;
for(var i of targets){
if(i==player) continue;
var num=i.countCards('h');
if(num<min){
min=num;
min_player=i;
}
else if(num==min) min_player=false;
}
if(min_player) min_player.draw();
else game.delayx();
}
},
subSkill:{
effect:{
audio:'tongxie',
charlotte:true,
trigger:{global:'useCardAfter'},
onremove:true,
forced:true,
popup:false,
filter:function(event,player){
if(event.card.name!='sha'||event.targets.length!=1||!event.targets[0].isIn()) return false;
if(event.getParent(2).name=='tongxie_effect') return false;
var list=player.getStorage('tongxie_effect'),target=event.targets[0];
if(!list.contains(event.player)) return false;
for(var i of list){
if(i==event.player||!i.isIn()) continue;
if(!i.canUse('sha',target,false)) continue;
if(_status.connectMode&&i.countCards('hs')>0) return true;
if(i.hasSha()) return true;
}
return false;
},
content:function(){
'step 0'
event.targets=player.getStorage('tongxie_effect').filter(function(i){
return i!==trigger.player;
}).sortBySeat();
event.target=trigger.targets[0];
'step 1'
var current=targets.shift();
if(current.isIn()&&target.isIn()&&current.canUse('sha',target,false)&&(_status.connectMode||current.hasSha())){
current.chooseToUse(function(card,player,event){
if(get.name(card)!='sha') return false;
return lib.filter.filterCard.apply(this,arguments);
},'同协:是否对'+get.translation(target)+'使用一张杀?').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false;
return lib.filter.targetEnabled.apply(this,arguments);
}).set('sourcex',target).set('logSkill','tongxie_effect').set('addCount',false);
if(targets.length>0) event.redo();
}
},
group:['tongxie_damage','tongxie_count'],
},
damage:{
audio:'tongxie',
charlotte:true,
trigger:{global:'damageBegin4'},
filter:function(event,player){
var list=player.getStorage('tongxie_effect');
if(!list.contains(event.player)) return false;
for(var i of list){
if(i!=event.player&&i.isAlive()&&!i.hasSkill('tongxie_count2',null,null,false)) return true;
}
return false;
},
forced:true,
popup:false,
content:function(){
'step 0'
event.targets=player.getStorage('tongxie_effect').filter(function(i){
return i!=trigger.player&&i.isAlive()&&!i.hasSkill('tongxie_count2',null,null,false);
}).sortBySeat();
event.num=0;
'step 1'
var target=targets[num];
event.num++;
event.target=target;
target.chooseBool('同协:是否为'+get.translation(trigger.player)+'阻挡伤害?','失去1点体力防止'+get.translation(trigger.player)+'即将受到的'+get.cnNumber(trigger.num)+'点伤害').set('ai',function(){
var player=_status.event.player,target=_status.event.getTrigger().player;
var trigger=_status.event.getTrigger();
var eff1=get.damageEffect(target,trigger.source,player,trigger.nature);
if(trigger.num>1) eff1=Math.min(-1,eff1)*trigger.num;
var eff2=get.effect(player,{name:'losehp'},player,player);
return eff2>eff1;
});
'step 2'
if(result.bool){
target.logSkill('tongxie_damage',trigger.player);
trigger.cancel();
target.loseHp();
}
else if(num<targets.length) event.goto(1);
},
},
count:{
trigger:{global:'loseHpEnd'},
charlotte:true,
forced:true,
firstDo:true,
popup:false,
silent:true,
filter:function(event,player){
return player.getStorage('tongxie_effect').contains(event.player);
},
content:function(){
trigger.player.addTempSkill('tongxie_count2');
},
},
count2:{charlotte:true},
},
},
//群马超
olzhuiji:{
mod:{
@ -3323,7 +3801,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
trigger:{player:'dying'},
prompt:'是否弃置“诔”标记?',
prompt2:'减1点体力上限然后回复体力至1点并摸一张牌。',
prompt2:'回复体力至1点并摸一张牌。',
charlotte:true,
onremove:true,
filter:function(event,player){
@ -8515,7 +8993,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
game.asyncDraw(list,function(target){
return players.numOf(target);
return get.numOf(players,target);
});
}
},
@ -8523,6 +9001,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'phaseUseBegin'},
direct:true,
preHidden:true,
filter:function(event,player){
return player.countCards('h')>0&&game.hasPlayer(function(current){
return current!=player&&player.canCompare(current);
})
},
content:function(){
'step 0'
var goon;
@ -8561,15 +9044,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(game.hasPlayer(function(current){
if(target==current) return false;
if(!player.canUse('sha',current,false)) return false;
if(get.mode()=='guozhan'){
return target.isFriendOf(current);
}
return true;
return target.isFriendOf(current);
})){
var str='对一名';
if(get.mode()=='guozhan'){
str+=('与'+get.translation(target)+'势力相同的');
}
var str='对一名与'+get.translation(target)+'势力相同的';
player.chooseTarget(str+'角色使用一张杀',true,function(card,player,target){
if(!player.canUse('sha',target,false)) return false;
if(get.mode()=='guozhan'){
@ -17963,8 +18440,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rehengjiang2:'横江',
rehengjiang_info:'当你受到1点伤害后你可以令当前回合角色本回合的手牌上限-1。然后若其弃牌阶段内没有弃牌则你摸X张牌X为你本回合内对其发动过〖横江〗的次数。',
shuangren:'双刃',
shuangren_info:'出牌阶段开始时,你可以与一名角色拼点。若你赢,你视为对任意一名角色使用一张【杀】(不计入出牌阶段的次数限制);若你没赢,你本回合内不能对其他角色使用牌。',
shuangren_info_guozhan:'出牌阶段开始时,你可以与一名角色拼点。若你赢,你视为对其或与其势力相同的另一名角色使用一张【杀】(不计入出牌阶段的次数限制);若你没赢,你本回合内不能对其他角色使用牌。',
shuangren_info:'出牌阶段开始时,你可以与一名角色拼点。若你赢,你视为对其或与其势力相同的另一名角色使用一张【杀】(不计入出牌阶段的次数限制);若你没赢,你本回合内不能对其他角色使用牌。',
xiashu:'下书',
xiashu_info:'出牌阶段开始时你可以将所有手牌交给一名其他角色然后该角色亮出任意数量的手牌至少一张。你选择一项1.获得其亮出的手牌2.获得其未亮出的手牌。',
kuanshi:'宽释',
@ -18593,6 +19069,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
olqisi_info:'①游戏开始时,你获得两张副类别不同的牌,并将这些牌置入你的装备区。②摸牌阶段开始时,你可以少摸一张牌并声明一种装备牌的副类别,然后从牌堆或弃牌堆中获得一张该副类别的牌。',
olzhuiji:'追击',
olzhuiji_info:'锁定技。①你至体力值不大于你的角色的距离为1。②当你使用【杀】指定距离为1的角色为目标后你令其选择一项⒈弃置一张牌。⒉重铸装备区内的所有牌。',
zhaoyǎn:'赵俨',
tongxie:'同协',
tongxie_info:'出牌阶段开始时你可以选择至多两名其他角色你与这些角色均称为“同协角色”。这些角色中手牌数唯一最少的角色摸一张牌且你获得如下效果直到你下回合开始①当有“同协角色”对唯一目标角色使用的【杀】结算结束后其他“同协角色”可以依次对目标角色使用一张【杀】无距离和次数限制且不能再触发此效果。②当有“同协角色”受到伤害时其他“同协角色”本回合内失去过体力的角色除外可以防止此伤害失去1点体力。',
jin_zhouchu:'周处',
shanduan:'善断',
shanduan_info:'①回合开始时你生成数组R=[1,2,3,4]。②摸牌阶段开始时你从数组R中选择并移除一个数字A。你本阶段的额定摸牌数改为A。③出牌阶段开始时你从数组R中选择并移除两个数字B和C。你将你本阶段内的攻击范围基数最小值和使用【杀】的次数上限基础值改为B和C。④弃牌阶段开始时你从数组R中选择并移除一个数字D。你令你本回合的手牌上限基数改为D。⑤当你于回合外受到伤害后你令下回合生成的R中最小的一个数字+1。',
yilie:'义烈',
yilie_info:'每轮每种牌名限一次。你可以将两张颜色相同的手牌当做任意一种基本牌使用。',
sp_tianji:'天极·皇室宗亲',
sp_sibi:'四弼·辅国文曲',

View File

@ -4,6 +4,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2',
connect:true,
character:{
zhangxun:['male','qun',4,['suizheng']],
zongyu:['male','shu',3,['zyqiao','chengshang']],
fengfang:['male','qun',3,['dcditing','dcbihuo']],
dc_wangchang:['male','wei',3,['dckaiji','dcpingxi']],
zhaoang:['male','wei','3/4',['dczhongjie','dcsushou']],
dc_sunru:['female','wu',3,['xiecui','youxu']],
dc_jiling:['male','qun',4,['dcshuangren']],
caohua:['female','wei',3,['caiyi','guili']],
dc_liuyu:['male','qun',3,['dcsuifu','dcpijing']],
qinyilu:['male','qun',3,['piaoping','tuoxian','chuaili']],
@ -151,7 +158,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_caizijiaren:['re_dongbai','re_sunluyu','heyan','zhaoyan','wangtao','wangyue','zhangxuan','tengyin','zhangyao'],
sp_zhilan:['liuyong','wanniangongzhu','zhanghu','lvlingqi','tenggongzhu','dc_gaolan'],
sp_guixin:['re_kanze','re_chendeng','caimaozhangyun'],
sp_zongheng:['huaxin','luyusheng','re_xunchen','re_miheng','fengxi','re_dengzhi','dc_yanghu'],
sp_zongheng:['huaxin','luyusheng','re_xunchen','re_miheng','fengxi','re_dengzhi','dc_yanghu','zongyu'],
sp_huangjin:['liuhong','zhujun','re_hansui',"xushao"],
sp_fadong:['ol_dingyuan','wangrong','re_quyi','hanfu'],
sp_xuzhou:['re_taoqian','caosong','zhangmiao','qiuliju'],
@ -162,10 +169,625 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp2_huangjia:['caomao','liubian','dc_liuyu'],
sp2_zhangtai:['guozhao','fanyufeng','ruanyu','yangwan','re_panshu'],
sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger'],
sp_decade:['huaman','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','re_dongzhao','zhouyi','mamidi','dc_jiben','dc_luotong','guanning','dc_huangchengyan'],
sp_decade:['huaman','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','re_dongzhao','zhouyi','mamidi','dc_jiben','dc_luotong','guanning','dc_huangchengyan','dc_jiling','dc_sunru','zhaoang','dc_wangchang','fengfang','zhangxun'],
}
},
skill:{
//张勋
suizheng:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt('suizheng'),'令一名角色下回合内获得〖随征〗效果').set('',function(target){
var player=_status.event.player,att=get.attitude(player,target);
if(target.hasJudge('lebu')) return att/2;
return att*get.threaten(target)*Math.sqrt(2+player==target?(player.countCards('h','sha')*2):target.countCards('h'))
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('suizheng',target);
target.addMark('suizheng_effect',1,false);
target.markAuto('suizheng_source',[player]);
target.addTempSkill('suizheng_effect',{player:player==target?'phaseJieshuBefore':'phaseAfter'});
}
},
subSkill:{
effect:{
audio:'suizheng',
charlotte:true,
mod:{
targetInRange:function(card){
if(card.name=='sha') return true;
},
cardUsable:function(card,player,num){
if(card.name=='sha') return num+player.countMark('suizheng_effect');
},
},
trigger:{player:'phaseUseEnd'},
forced:true,
popup:false,
filter:function(event,player){
var list=player.getStorage('suizheng_source');
if(!list.filter((i)=>i.isIn().length)) return false;
return player.hasHistory('sourceDamage',function(evt){
return evt.player.isIn()&&evt.getParent('phaseUse')==event;
});
},
content:function(){
'step 0'
var targets=player.getStorage('suizheng_source').slice(0).sortBySeat();
event.targets=targets;
'step 1'
var target=targets.shift();
event.target=target;
var list=[];
player.getHistory('sourceDamage',function(evt){
if(evt.player.isIn()&&evt.getParent('phaseUse')==trigger) list.add(evt.player);
});
if(!list.length) event.finish();
else if(target.isIn()){
list=list.filter(function(i){
return target.canUse('sha',i,false);
});
if(list.length>0) target.chooseTarget('随征:是否对一名角色使用【杀】?',function(card,player,target){
return _status.event.targets.contains(target);
}).set('targets',list).set('ai',function(target){
var player=_status.event.player;
return get.effect(target,{name:'sha'},player,player);
});
}
else event._result={bool:false};
'step 2'
if(result.bool){
target.useCard({
name:'sha',
isCard:true,
},result.targets,false,'suizheng_effect');
}
if(targets.length>0) event.goto(1);
},
onremove:function(player){
delete player.storage.suizheng_effect;
delete player.storage.suizheng_source;
},
intro:{content:'使用【杀】无距离限制且次数上限+#'},
},
},
},
//冯方
dcditing:{
audio:2,
trigger:{global:'phaseUseBegin'},
logTarget:'player',
filter:function(event,player){
return player.hp>0&&event.player.countCards('h')>0&&event.player.inRange(player);
},
prompt2:(event,player)=>('观看其'+get.cnNumber(Math.min(player.hp,event.player.countCards('h')))+'张手牌并选择其中一张'),
check:function(event,player){
var target=event.player;
if(get.attitude(player,target)>0) return true;
if(Math.min(player.hp,target.countCards('h'))>2) return true;
return false;
},
content:function(){
'step 0'
var target=trigger.player;
var cards=target.getCards('h');
var num=Math.min(cards.length,player.hp),cards2=cards.randomGets(num);
player.chooseButton([get.translation(target)+'的手牌('+num+'/'+cards.length+'',cards2],true).set('ai',function(button){
var player=_status.event.player,target=_status.event.getTrigger().player,card=button.link;
var att=get.attitude(player,target);
var val=target.getUseValue(card,null,true);
if(val<=0) return -get.value(card,target)/2*get.sgn(att-0.05);
if(target.canUse(card,player)&&get.effect(player,card,target,target)>0){
var eff=get.effect(player,card,target,player);
if(eff<0) val-=eff;
}
return val;
});
'step 1'
if(result.bool){
player.addTempSkill('dcditing_effect','phaseUseAfter');
player.storage.dcditing_effect=[trigger.player,result.links[0]];
}
},
subSkill:{
effect:{
audio:'dcditing',
charlotte:true,
trigger:{target:'useCardToTargeted'},
forced:true,
filter:function(event,player){
var list=player.storage.dcditing_effect;
return list&&event.player==list[0]&&event.cards.contains(list[1]);
},
content:function(){
trigger.excluded.add(player);
game.delayx();
},
group:['dcditing_draw','dcditing_gain'],
},
draw:{
audio:'dcditing',
charlotte:true,
trigger:{global:'useCardAfter'},
forced:true,
filter:function(event,player){
var list=player.storage.dcditing_effect;
return list&&event.player==list[0]&&event.cards.contains(list[1])&&!event.targets.contains(player);
},
content:function(){
player.draw(2);
},
},
gain:{
audio:'dcditing',
charlotte:true,
trigger:{global:'phaseUseEnd'},
forced:true,
filter:function(event,player){
var list=player.storage.dcditing_effect;
return list&&event.player==list[0]&&event.player.getCards('h').contains(list[1]);
},
content:function(){
var list=player.storage.dcditing_effect;
player.gain(list[0],list[1],'giveAuto');
},
},
},
},
dcbihuo:{
audio:2,
trigger:{
player:'damageEnd',
source:'damageSource',
},
direct:true,
filter:function(event,player){
return event.source&&event.player!=event.source;
},
content:function(){
'step 0'
event.num=(event.triggername=='damageEnd'?1:-1);
player.chooseTarget(get.prompt('dcbihuo'),'令一名角色下回合的额定摸牌数'+(event.num>0?'+1':'-1')).set('ai',function(target){
var player=_status.event.player,num=_status.event.getParent().num;
var att=get.attitude(player,target);
if(num>0){
if(att<=0) return 0;
if(target.hasJudge('lebu')) return att/10;
return att/Math.sqrt(Math.min(5,1+target.countCards('h')))*Math.sqrt(1+target.hp);
}
if(num<0){
if(att>=0) return 0;
if((target.storage.dcbihuo_effect||0)<=-2) return -att/10;
return -att/Math.sqrt(Math.min(5,1+target.countCards('h')))*Math.sqrt(1+target.hp);
}
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('dcbihuo',target);
if(typeof target.storage.dcbihuo_effect!='number') target.storage.dcbihuo_effect=0;
target.storage.dcbihuo_effect+=event.num;
target.addTempSkill('dcbihuo_effect',{player:'phaseAfter'});
game.delayx();
}
},
subSkill:{
effect:{
charlotte:true,
trigger:{player:'phaseDrawBegin'},
forced:true,
onremove:true,
content:function(){
var num=player.storage.dcbihuo_effect;
trigger.num+=num;
game.log(player,'的额定摸牌数','#g'+(num>=0?'+':'')+num);
},
mark:true,
intro:{
content:(num)=>('额定摸牌数'+(num>=0?'+':'')+num),
},
},
},
},
//王昶
dckaiji:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
if(player.maxHp<=0) return false;
if(!player.storage.dckaiji) return true;
return player.hasCard((card)=>lib.filter.cardDiscardable(card,player,'phaseUse'),'he');
},
filterCard:function(card,player){
if(!player.storage.dckaiji) return false;
return true;
},
position:'he',
selectCard:function(){
var player=_status.event.player;
return player.storage.dckaiji?[1,player.maxHp]:-1;
},
check:function(card){
var player=_status.event.player;
if(!player.hasSkill('dcpingxi')) return 0;
var num=lib.skill.dcpingxi.getNum()+ui.selected.cards.length;
if(num<game.countPlayer(function(current){
if(current==player||current.countCards('he')==0) return false;
return get.effect(target,{name:'guohe_copy2'},player,player)+get.effect(target,{name:'shanduan'},player,player)>0;
})){
if(get.position(card)=='h'&&player.needsToDiscard()>ui.selected.cards.length) return 7+1/Math.max(1,get.value(card));
return 7-get.value(card);
}
return 0;
},
content:function(){
player.changeZhuanhuanji('dckaiji');
if(!cards.length) player.draw(Math.min(player.maxHp,5));
},
zhuanhuanji:true,
mark:true,
marktext:'☯',
intro:{
content:(storage)=>('转换技。出牌阶段限一次,你可以'+(storage?'摸X张牌':'弃置至多X张牌')+'X为你的体力上限且至多为5。'),
},
ai:{
threaten:1.6,
order:function(item,player){
if(player.storage.dckaiji) return 0.1;
return 8;
},
result:{player:1},
},
},
dcpingxi:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
direct:true,
getNum:function(){
var num=0;
game.getGlobalHistory('cardMove',function(evt){
if(evt.name=='lose'&&evt.type=='discard') num+=evt.cards2.length;
});
return num;
},
filter:function(event,player){
return lib.skill.dcpingxi.getNum()>0&&game.hasPlayer(function(current){
return current!=player&&current.countCards('he')>0;
});
},
content:function(){
'step 0'
var num=lib.skill.dcpingxi.getNum();
player.chooseTarget([1,num],function(card,player,target){
return target!=player&&target.countCards('he')>0;
},get.prompt('dcpingxi'),'选择至多'+get.cnNumber(num)+'名有牌的其他角色。弃置这些角色的各一张牌,然后视为对这些角色使用一张【杀】').set('ai',function(target){
var player=_status.event.player;
return get.effect(target,{name:'guohe_copy2'},player,player)+get.effect(target,{name:'sha'},player,player);
});
'step 1'
if(result.bool){
var targets=result.targets.sortBySeat();
event.targets=targets;
player.logSkill('dcpingxi',targets);
event.num=0;
}
else event.finish();
'step 2'
var target=targets[num];
if(target.hasCard(function(card){
return lib.filter.canBeDiscarded(card,player,target);
},'he')) player.discardPlayerCard(target,'he',true);
event.num++;
if(event.num<targets.length) event.redo();
'step 3'
var targetsx=targets.filter(function(target){
return player.canUse('sha',target,false);
});
if(targetsx.length>0) player.useCard({
name:'sha',
isCard:true,
},targetsx);
},
},
//赵昂
dczhongjie:{
audio:2,
round:1,
trigger:{global:'dying'},
logTarget:'player',
filter:function(event,player){
return event.player.hp<1&&event.reason&&event.reason.name=='loseHp';
},
check:function(event,player){
return get.attitude(player,event.player)>2;
},
content:function(){
trigger.player.recover();
trigger.player.draw();
},
},
dcsushou:{
audio:2,
trigger:{global:'phaseUseBegin'},
filter:function(event,player){
return player.hp>0&&event.player.isMaxHandcard(true);
},
logTarget:'player',
check:function(event,player){
var num=player.hp;
if(player.hasSkill('dczhongjie')&&(player.storage.dczhongjie_roundcount||0)<game.roundNumber) num++;
return num>1;
},
content:function(){
'step 0'
player.loseHp();
event.target=trigger.player;
'step 1'
var num=player.getDamagedHp();
if(num>0) player.draw(num);
if(player==target) event.finish();
'step 2'
var ts=target.getCards('h');
if(ts.length<2) event.finish();
else{
var hs=player.getCards('h');
ts=ts.randomGets(Math.floor(ts.length/2));
if(!hs.length){
player.viewCards(get.translation(target)+'的部分手牌');
event.finish();
return;
}
var next=player.chooseToMove('夙守:交换至多'+get.cnNumber(Math.min(hs.length,ts.length,player.getDamagedHp()))+'张牌');
next.set('list',[
[get.translation(target)+'的部分手牌',ts,'dcsushou_tag'],
['你的手牌',hs],
]);
next.set('filterMove',function(from,to,moved){
if(typeof to=='number') return false;
var player=_status.event.player;
var hs=player.getCards('h');
var changed=hs.filter(function(card){
return !moved[1].contains(card);
});
var changed2=moved[1].filter(function(card){
return !hs.contains(card);
});
if(changed.length<player.getDamagedHp()) return true;
var pos1=(moved[0].contains(from.link)?0:1),pos2=(moved[0].contains(to.link)?0:1);
if(pos1==pos2) return true;
if(pos1==0){
if(changed.contains(from.link)) return true;
return changed2.contains(to.link);
}
if(changed2.contains(from.link)) return true;
return changed.contains(to.link);
});
next.set('processAI',function(list){
return [list[0][1],list[1][1]];
});
}
'step 3'
var moved=result.moved;
var hs=player.getCards('h'),ts=target.getCards('h');
var cards1=[],cards2=[];
for(var i of result.moved[0]){
if(!ts.contains(i)) cards1.push(i);
}
for(var i of result.moved[1]){
if(!hs.contains(i)) cards2.push(i);
}
if(cards1.length){
player.swapHandcards(target,cards1,cards2);
}
},
},
//孙茹
xiecui:{
audio:2,
trigger:{global:'damageBegin1'},
filter:function(event,player){
var source=event.source;
if(!source||event.getParent().type!='card') return false;
return !source.hasHistory('sourceDamage',function(evt){
return evt.getParent().type=='card';
});
},
logTarget:'source',
prompt2:function(event,player){
var str=('令'+get.translation(event.player)+'即将受到的');
str+=(''+event.num+'点');
if(lib.linked.contains(event.nature)){
str+=(get.translation(event.nature)+'属性');
}
str+='伤害+1';
if(event.source.group=='wu'){
var cards=event.cards.filterInD();
if(cards.length){
str+=(';然后'+get.translation(event.source)+'获得'+get.translation(cards)+',且本回合的手牌上限+1')
}
}
return str;
},
check:function(event,player){
var att=get.attitude(player,event.player);
if(att<0){
if(event.source.group!='wu'||!event.cards.filterInD().length) return true;
return get.attitude(player,event.source)>0;
}
return false;
},
content:function(){
trigger.num++;
var source=trigger.source;
if(source.group=='wu'){
var cards=trigger.cards.filterInD();
if(cards.length>0){
source.gain(cards,'gain2');
source.addMark('xiecui_effect',1,false);
source.addTempSkill('xiecui_effect');
}
}
},
subSkill:{
effect:{
charlotte:true,
mod:{
maxHandcard:(player,num)=>num+player.countMark('xiecui_effect'),
},
marktext:'翠',
onremove:true,
intro:{content:'手牌上限+#'},
},
},
ai:{threaten:1.75},
},
youxu:{
audio:2,
trigger:{global:'phaseEnd'},
logTarget:'player',
filter:function(event,player){
return event.player.countCards('h')>event.player.hp;
},
check:function(event,player){
if(get.attitude(player,event.player)<=0) return true;
else return game.hasPlayer(function(current){
return current!=event.player&&current.isDamaged()&&current.isMinHp()&&
get.attitude(player,current)>0&&get.recoverEffect(current,player,player)>0;
});
},
content:function(){
'step 0'
if(player==trigger.player){
player.chooseCard('h',true,'请展示一张手牌');
}
else{
player.choosePlayerCard(trigger.player,true,'h');
}
'step 1'
var card=result.cards[0];
event.card=card;
var str=get.translation(player);
if(player!=trigger.player) str+=('对'+get.translation(trigger.player));
str+='发动了【忧恤】';
player.showCards(card,str);
player.chooseTarget('令一名角色获得'+get.translation(card),'若其体力值为全场最少则其回复1点体力',function(card,player,target){
return target!=_status.event.getTrigger().player;
}).set('ai',function(target){
var player=_status.event.player,att=get.attitude(player,target);
if(att<0) return 0;
if(target.isDamaged()&&target.isMinHp&&get.recoverEffect(target,player,player)>0) return 4*att;
return att;
});
'step 2'
var target=result.targets[0];
event.target=target;
player.line(target,'green');
target.gain(card,trigger.player,'give');
'step 3'
if(target.isMinHp()) target.recover();
},
},
//纪灵
dcshuangren:{
audio:2,
trigger:{player:'phaseUseBegin'},
direct:true,
preHidden:true,
filter:function(event,player){
return player.countCards('h')>0&&game.hasPlayer(function(current){
return current!=player&&player.canCompare(current);
})
},
content:function(){
'step 0'
var goon;
if(player.needsToDiscard()>1){
goon=player.hasCard(function(card){
return card.number>10&&get.value(card)<=5;
});
}
else if(player.hasSha()){
goon=player.hasCard(function(card){
return (card.number>=9&&get.value(card)<=5)||get.value(card)<=3;
});
}
else{
goon=player.hasCard(function(card){
return get.value(card)<=5;
});
}
player.chooseTarget(get.prompt2('dcshuangren'),function(card,player,target){
return player.canCompare(target);
}).set('ai',function(target){
var player=_status.event.player;
if(_status.event.goon&&get.attitude(player,target)<0){
return get.effect(target,{name:'sha'},player,player);
}
return 0;
}).set('goon',goon).setHiddenSkill(event.name);
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('dcshuangren',target);
player.chooseToCompare(target);
}
else{
event.finish();
}
'step 2'
if(result.bool){
var target=event.target;
if(game.hasPlayer(function(current){
if(target==current||target.group!=current.group) return false;
return player.canUse('sha',current,false);
})){
var str='请选择视为使用【杀】的目标';
var str2='操作提示选择一名角色B或选择包含A'+get.translation(target)+'在内的两名角色A和BB的势力需为'+get.translation(target.group)+'势力)';
player.chooseTarget([1,2],str,str2,true,function(card,player,target){
if(!player.canUse('sha',target,false)) return false;
var current=_status.event.target;
if(target==current) return true;
if(target.group!=current.group) return false;
if(!ui.selected.targets.length) return true;
return ui.selected.targets[0]==current;
return current==target;
}).set('ai',function(target){
var player=_status.event.player;
return get.effect(target,{name:'sha'},player,player);
}).set('target',target).set('complexTarget',true);
}
else{
player.useCard({name:'sha',isCard:true},target,false);
event.finish();
}
}
else{
player.addTempSkill('dcshuangren_debuff','phaseUseAfter');
event.finish();
}
'step 3'
if(result.bool&&result.targets&&result.targets.length){
player.useCard({name:'sha',isCard:true},result.targets,false);
}
},
subSkill:{
debuff:{
charlotte:true,
mod:{
cardEnabled:function(card){
if(card.name=='sha') return false;
},
},
},
},
},
//蓝曹华
caiyi:{
audio:2,
@ -931,11 +1553,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(num>0) player.discardPlayerCard(target,'h',num,true);
else event.finish();
'step 1'
var color=get.color(trigger.card);
if(result.bool&&color!='none'&&player.countCards('h')>1){
var suit=get.suit(trigger.card);
if(result.bool&&lib.suit.contains(suit)&&player.countCards('h')>1){
var bool=false;
for(var i of result.cards){
if(get.color(i,target)==color){
if(get.suit(i,target)==suit){
bool=true;
break;
}
@ -13876,10 +14498,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
logTarget:'target',
content:function(){
player.addTempSkill('pyzhuren_spade2');
player.addMark('pyzhuren_spade2',1,false);
//trigger.target.gain(trigger.cards.filterInD(),'gain2','log');
trigger.target.loseHp(Math.min(player.countMark('pyzhuren_spade2'),5));//.set('source',player);
var num=player.getHistory('useSkill',function(evt){
return evt.skill=='pyzhuren_spade';
}).length;
trigger.target.loseHp(Math.min(num,5));//.set('source',player);
},
ai:{
jueqing:true,
@ -13892,7 +14514,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
},
pyzhuren_spade2:{onremove:true},
pyzhuren_shandian:{
audio:true,
trigger:{player:'useCardToPlayered'},
@ -15999,6 +16620,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhangxuan:'张嫙,三国时期孙吴将领张布之女,孙皓后妃张媱的姐姐。初为卫尉冯朝之子冯纯的妻子,后为孙皓后妃,册封左夫人。因孙皓诛灭张布,张媱口吐怨言,被暴怒的孙皓下令棒杀。后来孙皓怀念她的容颜,于是询问侍从:“张布还有女儿吗?”侍从回答:“张布的大女儿嫁给了已故卫尉冯朝的儿子冯纯。”于是孙皓夺走了冯纯的妻子张嫙,纳入宫中。孙皓颇为宠爱张嫙,册封其为左夫人。昼夜嬉戏,纸醉金迷,不理朝政。后来张嫙也去世了,孙皓非常悲伤,下令以最高的规格埋葬张嫙。因为悲伤过度,孙皓一度半年都不出宫门,甚至由于葬礼太过奢华被宫外之人认为孙皓已经死了。',
qinyilu:'秦宜禄—200年并州云中郡云中县人今内蒙古自治区呼和浩特市托克托县古城镇。东汉军阀吕布的部将。吕布战败后归降曹操后为张飞所杀。',
caohua:'曹华东汉末年人物曹操之女为汉献帝妃嫔。建安十八年213年曹操进为魏公把曹宪、曹节、曹华三个女儿一齐都送给汉献帝刘协做了妃子皆封为夫人聘以束帛五万匹年龄尚小者在魏公国待年长而聘。',
zhaoang:'赵昂,字伟章(一作伟璋),天水冀人。汉末时曹操部下。初为羌道令,建安中转参军事徒居州治冀城。建安十八年,马超围冀城多天,城中饥困,凉州刺史韦康不愿百姓再受苦而打算投降,赵昂进劝但不为所纳。后马超背信弃义杀韦康并劫其子赵月为人质,把他送至南郑。欲以此要迫使赵昂为己所用。后与梁宽、赵衢、庞恭、杨阜等结谋为康报仇,并举兵讨伐马超。马超兵败遂弃城,投奔张鲁。得张鲁之援后马超于建安十九年复寇,赵昂与妻子王异坚守祁山三十天至夏侯渊的救兵解围,其子赵月终为马超斩杀。自冀城之难,至于祁山,赵昂出九奇策。',
fengfang:'冯方,其字不详,司隶人。初掌校事,监察京师及周边地区,刺探文武百官秘事。十常侍之乱后,董卓进京,掌控朝政。冯方认为他胸怀不臣之心,于是弃官携女儿冯妤至江南避祸。其后董卓果然乱政,京师之地生灵涂炭,更将洛阳付之一炬。冯方因其先见之明得以保全家人。<br>冯妤长大成人后,有倾国之貌。一日袁术登城观景,得见冯妤,心中非常喜欢,于是将其纳为夫人。冯方心忧自家女儿不谙世事,于是将可以让人更显妩媚的家传宝梳交给她,希望能借此使其获得袁术的宠爱。其后果然传来袁术偏爱冯夫人的消息,冯方因此宽心,接受了袁术的征辟,为其效力。然而好景不长,没过多久,冯妤自缢身亡的消息传出,冯方悲愤不已,弃官而走,自此销声匿迹。',
zhangxun:'张勋东汉末年军阀袁术帐下大将袁术称帝后受封大将军。初平四年公元193年袁术引兵入陈留被曹操、袁绍合力击败逃至雍丘。后入九江杀死扬州刺史陈温而自领之并任命张勋、桥蕤为大将。时孙策依附于袁术被表为怀义校尉张勋对其倾心敬服。袁术称帝后任命张勋为大将军攻打吕布大败而还。其后曹操又以袁术称帝为名南下进攻袁术闻之大惊即走度淮留张勋、桥蕤守蕲阳以拒曹。曹操破其军斩桥蕤张勋退走。建安四年公元199年袁术病死张勋率残军欲南投孙策途中被袁术旧部刘勋俘虏其后下落不明。',
},
characterTitle:{
wulan:'#b对决限定武将',
@ -16076,9 +16700,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return '转换技,锁定技。当你使用一张牌时,<span class="bluetext">阴你摸X张牌。</span>阳你弃置X张牌。X为你本阶段内发动过〖漂萍〗的次数且至多等于你的体力值';
},
chuaili:function(player){
if(!player.hasSkill('piaoping',null,null,false)) return '锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你获得一枚“栗”,且令〖栗〗于本回合内失效。';
if(player.storage.piaoping) return '锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:<span class="bluetext">处于阳状态,则你将〖漂萍〗转换至阴状态;</span>处于阴状态,则你获得一枚“栗”,且令〖栗〗于本回合内失效。';
return '锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;<span class="bluetext">处于阴状态,则你获得一枚“栗”,且令〖栗〗于本回合内失效。</span>';
if(!player.hasSkill('piaoping',null,null,false)) return '锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你获得一枚“栗”,且令〖栗〗于本回合内失效。';
if(player.storage.piaoping) return '锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:<span class="bluetext">处于阳状态,则你将〖漂萍〗转换至阴状态;</span>处于阴状态,则你获得一枚“栗”,且令〖栗〗于本回合内失效。';
return '锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;<span class="bluetext">处于阴状态,则你获得一枚“栗”,且令〖栗〗于本回合内失效。</span>';
},
caiyi:function(player){
var current=player.storage.caiyi,list=player.storage.caiyi_info||[[],[]];
@ -16130,6 +16754,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
fengfangnv:['re_fengfangnv','fengfangnv'],
luotong:['luotong','dc_luotong'],
mamidi:['mamidi','xin_mamidi'],
dc_wangchang:['dc_wangchang','tw_wangchang'],
},
translate:{
lijue:"李傕",
@ -16752,7 +17377,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
wangyue:'王悦',
huguan:'护关',
huguan_info:'一名角色于出牌阶段内使用第一张牌时,若此牌为红色,则你可以声明一种花色。该花色的牌不计入其本回合的手牌上限。',
yaopei:'佩',
yaopei:'佩',
yaopei_info:'其他角色的弃牌阶段结束时若其于本阶段内弃置过的牌的集合A不为空集则你可以弃置一张与A中的牌花色均不相同的牌。然后你选择一项①其摸两张牌你回复1点体力。②其回复1点体力你摸两张牌。',
mingluan:'鸣鸾',
mingluan_info:'其他角色的结束阶段开始时若有角色于本回合内回复过体力则你可以弃置一张牌然后摸X张牌X为当前角色的手牌数且至多摸至5张。',
@ -16909,8 +17534,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
piaoping_info:'转换技锁定技。当你使用一张牌时你摸X张牌。阳你弃置X张牌。X为你本阶段内发动过〖漂萍〗的次数且至多等于你的体力值',
tuoxian:'托献',
tuoxian_info:'当你因执行〖漂萍〗的效果而弃置牌后,你可以弃置一枚“栗”并令一名其他角色获得这些牌,然后令该角色选择一项:⒈弃置区域内等量的牌。⒉令你的〖漂萍〗失效直到回合结束。',
chuaili:'栗',
chuaili_info:'锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你获得一枚“栗”,且令〖栗〗于本回合内失效。',
chuaili:'栗',
chuaili_info:'锁定技。当你成为其他角色使用黑色牌的目标后,若你的〖漂萍〗:处于阳状态,则你将〖漂萍〗转换至阴状态;处于阴状态,则你获得一枚“栗”,且令〖栗〗于本回合内失效。',
dc_liuyu:'刘虞',
dcsuifu:'绥抚',
dcsuifu_info:'其他角色的结束阶段开始时若你和一号位本回合内累计受到过的伤害值大于1则你可以将该角色的所有手牌置于牌堆顶然后视为使用一张【五谷丰登】。',
@ -16923,6 +17548,33 @@ game.import('character',function(lib,game,ui,get,ai,_status){
caiyi_info:'转换技。结束阶段你可令一名角色选择并执行一项然后移除此选项。阴⒈回复X点体力。⒉摸X张牌⒊复原武将牌。⒋随机执行一个已经移除过的阴选项⒈受到X点伤害。⒉弃置X张牌。⒊翻面并横置。⒋随机执行一个已经移除过的阳选项。X为该阴阳态剩余选项的数量。',
guili:'归离',
guili_info:'你的第一个回合开始时,你须选择一名其他角色。该角色每轮的第一个回合结束后,若其本回合内未造成过伤害,则你执行一个额外的回合。',
dc_jiling:'纪灵',
dcshuangren:'双刃',
dcshuangren_info:'出牌阶段开始时你可以和一名其他角色A进行拼点。若你赢你选择一名角色B或选择包含A在内的两名角色A和BB的势力需与A相同然后视为对被选择的角色使用一张【杀】不计入次数限制若你没赢则你本阶段内不能使用【杀】。',
dc_sunru:'孙茹',
xiecui:'撷翠',
xiecui_info:'当有角色于回合内第一次因执行牌的效果而造成伤害时,你可以令此伤害+1。若其势力为吴则该角色获得此伤害牌对应的实体牌且其本回合的手牌上限+1。',
youxu:'忧恤',
youxu_info:'一名角色A的回合结束时若其手牌数大于体力值则你可以展示A的一张牌然后将此牌交给另一名角色B。若B的体力值为全场最少则B回复1点体力。',
zhaoang:'赵昂',
dczhongjie:'忠节',
dczhongjie_info:'每轮限一次。当有角色因失去体力而进入濒死状态时你可令其回复1点体力并摸一张牌。',
dcsushou:'夙守',
dcsushou_tag:'对方手牌',
dcsushou_info:'一名角色的出牌阶段开始时若其手牌数为全场唯一最多则你可以失去1点体力并摸X张牌。然后若该角色不是你则你可以观看其一半的手牌向下取整且用至多X张手牌替换其中等量的牌。X为你已损失的体力值',
dc_wangchang:'王昶',
dckaiji:'开济',
dckaiji_info:'转换技。出牌阶段限一次你可以摸X张牌弃置至多X张牌X为你的体力上限且至多为5。',
dcpingxi:'平袭',
dcpingxi_info:'结束阶段若X大于0则你可以选择至多X名其他角色X为本回合内因弃置而进入弃牌堆的牌数。你依次弃置这些角色的各一张牌然后视为对这些角色使用一张【杀】。',
fengfang:'冯方',
dcditing:'谛听',
dcditing_info:'其他角色的出牌阶段开始时若你在该角色的攻击范围内则你可以观看其的X张手牌X为你的体力值并选择其中一张且获得如下效果①当其使用对应实体牌包含此牌的牌指定你为目标后你令此牌对你无效。②当其使用对应实体牌包含此牌的牌结算结束后若你不是此牌的目标则你摸两张牌。③其出牌阶段结束时若此牌位于其的手牌区则你获得此牌。',
dcbihuo:'避祸',
dcbihuo_info:'①当你受到其他角色造成的伤害后,你可令一名角色下回合摸牌阶段的额定摸牌数+1。②当你对其他角色造成伤害后你可令一名角色下回合摸牌阶段的额定摸牌数-1。',
zhangxun:'张勋',
suizheng:'随征',
suizheng_info:'结束阶段,你可以选择一名角色A,获得如下效果直到其下回合结束:①A于下回合出牌阶段内使用【杀】的次数上限+1且无距离限制下回合的出牌阶段结束时你可以选择一名此阶段内受到过造成的伤害的角色视为对使用一张【杀】。',
sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原",

View File

@ -3202,7 +3202,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
'step 0'
event.num=player.storage.fanghun;
var num=Math.max(2,player.storage.fanghun);
num=Math.min(num,8);
event.num=num;
player.removeMark('fanghun',player.storage.fanghun);
player.awakenSkill('twfuhan');
if(_status.characterlist){
@ -4712,7 +4714,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
twchongqi_info:'锁定技。游戏开始时你令所有角色获得〖非服〗。然后你可减1点体力上限令一名其他角色获得〖复纂〗。',
twfeifu:'非服',
twfeifu_info:'转换技。阴:当你成为【杀】的唯一目标后;阳:当你使用【杀】指定唯一目标后;目标角色须交给使用者一张牌。若此牌为装备牌,则使用者可使用此牌。',
tw_wangchang:'王昶',
tw_wangchang:'TW王昶',
twkaiji:'开济',
twkaiji_info:'准备阶段你可令至多X名角色各摸一张牌X为本局游戏内进入过濒死状态的角色数+1。若有角色以此法获得了非基本牌则你摸一张牌。',
twshepan:'慑叛',

View File

@ -1789,9 +1789,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
player.chooseTarget(get.prompt2('zhenjun'),function(card,player,target){
return target.countCards('h')>target.hp;
}).ai=function(target){
}).set('ai',function(target){
return -get.attitude(_status.event.player,target)*(target.countCards('e')+1);
};
});
'step 1'
if(result.bool){
var target=result.targets[0];

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.115.2',
'v1.9.115.3',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -176,7 +176,6 @@ window.noname_asset_list=[
'audio/card/male/yuanjiao.mp3',
'audio/card/male/zhibi.mp3',
'audio/die/baosanniang.mp3',
'audio/die/beimihu.mp3',
'audio/die/bianfuren.mp3',
@ -236,8 +235,11 @@ window.noname_asset_list=[
'audio/die/dc_huangchengyan.mp3',
'audio/die/dc_huangzu.mp3',
'audio/die/dc_jiben.mp3',
'audio/die/dc_jiling.mp3',
'audio/die/dc_liuyu.mp3',
'audio/die/dc_luotong.mp3',
'audio/die/dc_sunru.mp3',
'audio/die/dc_wangchang.mp3',
'audio/die/dc_xushu.mp3',
'audio/die/dc_yanghu.mp3',
'audio/die/dc_zhuling.mp3',
@ -266,6 +268,7 @@ window.noname_asset_list=[
'audio/die/fanyufeng.mp3',
'audio/die/fazheng.mp3',
'audio/die/feiyi.mp3',
'audio/die/fengfang.mp3',
'audio/die/fengfangnv.mp3',
'audio/die/fengxi.mp3',
'audio/die/fuhuanghou.mp3',
@ -366,6 +369,7 @@ window.noname_asset_list=[
'audio/die/jikang.mp3',
'audio/die/jiling.mp3',
'audio/die/jin_guohuai.mp3',
'audio/die/jin_jiachong.mp3',
'audio/die/jin_simashi.mp3',
'audio/die/jin_simayi.mp3',
'audio/die/jin_simazhao.mp3',
@ -374,6 +378,7 @@ window.noname_asset_list=[
'audio/die/jin_yanghu.mp3',
'audio/die/jin_yanghuiyu.mp3',
'audio/die/jin_zhangchunhua.mp3',
'audio/die/jin_zhouchu.mp3',
'audio/die/jinxuandi.mp3',
'audio/die/jsp_guanyu.mp3',
'audio/die/jsp_huangyueying.mp3',
@ -525,6 +530,7 @@ window.noname_asset_list=[
'audio/die/re_dongbai.mp3',
'audio/die/re_dongcheng.mp3',
'audio/die/re_dongzhuo.mp3',
'audio/die/re_duji.mp3',
'audio/die/re_fazheng.mp3',
'audio/die/re_fengfangnv.mp3',
'audio/die/re_fuhuanghou.mp3',
@ -623,6 +629,7 @@ window.noname_asset_list=[
'audio/die/re_zhugeliang.mp3',
'audio/die/re_zhuran.mp3',
'audio/die/re_zhurong.mp3',
'audio/die/re_zuoci.mp3',
'audio/die/ruanhui.mp3',
'audio/die/ruanyu.mp3',
'audio/die/ruiji.mp3',
@ -663,6 +670,7 @@ window.noname_asset_list=[
'audio/die/simazhao.mp3',
'audio/die/simazhou.mp3',
'audio/die/sp_bianfuren.mp3',
'audio/die/sp_caiwenji.mp3',
'audio/die/sp_caohong.mp3',
'audio/die/sp_caoren.mp3',
'audio/die/sp_chendong.mp3',
@ -679,6 +687,7 @@ window.noname_asset_list=[
'audio/die/sp_jiangqing.mp3',
'audio/die/sp_jiangwan.mp3',
'audio/die/sp_jiangwei.mp3',
'audio/die/sp_jiaxu.mp3',
'audio/die/sp_kongrong.mp3',
'audio/die/sp_lvfan.mp3',
'audio/die/sp_maojie.mp3',
@ -686,6 +695,7 @@ window.noname_asset_list=[
'audio/die/sp_mifangfushiren.mp3',
'audio/die/sp_mifuren.mp3',
'audio/die/sp_ol_zhanghe.mp3',
'audio/die/sp_pangde.mp3',
'audio/die/sp_shenpei.mp3',
'audio/die/sp_sufei.mp3',
'audio/die/sp_sunshangxiang.mp3',
@ -746,6 +756,7 @@ window.noname_asset_list=[
'audio/die/tw_gexuan.mp3',
'audio/die/tw_liuhong.mp3',
'audio/die/tw_puyangxing.mp3',
'audio/die/tw_shen_guanyu.mp3',
'audio/die/tw_tianyu.mp3',
'audio/die/tw_wangcan.mp3',
'audio/die/tw_wangchang.mp3',
@ -905,14 +916,17 @@ window.noname_asset_list=[
'audio/die/zhangxingcai.mp3',
'audio/die/zhangxiu.mp3',
'audio/die/zhangxuan.mp3',
'audio/die/zhangxun.mp3',
'audio/die/zhangyao.mp3',
'audio/die/zhangyi.mp3',
'audio/die/zhangyì.mp3',
'audio/die/zhangzhang.mp3',
'audio/die/zhangzhongjing.mp3',
'audio/die/zhaoang.mp3',
'audio/die/zhaotongzhaoguang.mp3',
'audio/die/zhaoxiang.mp3',
'audio/die/zhaoyan.mp3',
'audio/die/zhaoyǎn.mp3',
'audio/die/zhaoyun.mp3',
'audio/die/zhaozhong.mp3',
'audio/die/zhengxuan.mp3',
@ -982,7 +996,6 @@ window.noname_asset_list=[
'audio/effect/tori_no_uta.mp3',
'audio/effect/win.mp3',
'audio/skill/aichen1.mp3',
'audio/skill/aichen2.mp3',
'audio/skill/anguo1.mp3',
@ -1332,24 +1345,36 @@ window.noname_asset_list=[
'audio/skill/dbzhuifeng2.mp3',
'audio/skill/dcanxu1.mp3',
'audio/skill/dcanxu2.mp3',
'audio/skill/dcbihuo1.mp3',
'audio/skill/dcbihuo2.mp3',
'audio/skill/dcdeshao1.mp3',
'audio/skill/dcdeshao2.mp3',
'audio/skill/dcditing1.mp3',
'audio/skill/dcditing2.mp3',
'audio/skill/dcjianying1.mp3',
'audio/skill/dcjianying2.mp3',
'audio/skill/dcjiezhen1.mp3',
'audio/skill/dcjiezhen2.mp3',
'audio/skill/dcjinggong1.mp3',
'audio/skill/dcjinggong2.mp3',
'audio/skill/dckaiji1.mp3',
'audio/skill/dckaiji2.mp3',
'audio/skill/dcmingfa1.mp3',
'audio/skill/dcmingfa2.mp3',
'audio/skill/dcpijing1.mp3',
'audio/skill/dcpijing2.mp3',
'audio/skill/dcpingxi1.mp3',
'audio/skill/dcpingxi2.mp3',
'audio/skill/dcqiaomeng1.mp3',
'audio/skill/dcqiaomeng2.mp3',
'audio/skill/dcshibei1.mp3',
'audio/skill/dcshibei2.mp3',
'audio/skill/dcshuangren1.mp3',
'audio/skill/dcshuangren2.mp3',
'audio/skill/dcsuifu1.mp3',
'audio/skill/dcsuifu2.mp3',
'audio/skill/dcsushou1.mp3',
'audio/skill/dcsushou2.mp3',
'audio/skill/dcxiaojuan1.mp3',
'audio/skill/dcxiaojuan2.mp3',
'audio/skill/dcyinshi1.mp3',
@ -1358,6 +1383,8 @@ window.noname_asset_list=[
'audio/skill/dczecai2.mp3',
'audio/skill/dczhanyi1.mp3',
'audio/skill/dczhanyi2.mp3',
'audio/skill/dczhongjie1.mp3',
'audio/skill/dczhongjie2.mp3',
'audio/skill/dczhuiyi1.mp3',
'audio/skill/dczhuiyi2.mp3',
'audio/skill/dczimu1.mp3',
@ -1893,6 +1920,8 @@ window.noname_asset_list=[
'audio/skill/jiangchi2.mp3',
'audio/skill/jianglue1.mp3',
'audio/skill/jianglue2.mp3',
'audio/skill/jianhui1.mp3',
'audio/skill/jianhui2.mp3',
'audio/skill/jianshu1.mp3',
'audio/skill/jianshu2.mp3',
'audio/skill/jianxiong1.mp3',
@ -2757,6 +2786,8 @@ window.noname_asset_list=[
'audio/skill/ranshang2.mp3',
'audio/skill/ranshang21.mp3',
'audio/skill/ranshang22.mp3',
'audio/skill/reandong1.mp3',
'audio/skill/reandong2.mp3',
'audio/skill/reanjian1.mp3',
'audio/skill/reanjian2.mp3',
'audio/skill/reanxu1.mp3',
@ -3006,6 +3037,8 @@ window.noname_asset_list=[
'audio/skill/reyicong2.mp3',
'audio/skill/reyiji1.mp3',
'audio/skill/reyiji2.mp3',
'audio/skill/reyingshi1.mp3',
'audio/skill/reyingshi2.mp3',
'audio/skill/reyingshui1.mp3',
'audio/skill/reyingshui2.mp3',
'audio/skill/reyingzi_gexuan1.mp3',
@ -3097,6 +3130,8 @@ window.noname_asset_list=[
'audio/skill/sgrenwang2.mp3',
'audio/skill/shameng1.mp3',
'audio/skill/shameng2.mp3',
'audio/skill/shanduan1.mp3',
'audio/skill/shanduan2.mp3',
'audio/skill/shangshi1.mp3',
'audio/skill/shangshi2.mp3',
'audio/skill/shangshix1.mp3',
@ -3364,6 +3399,8 @@ window.noname_asset_list=[
'audio/skill/stianyi2.mp3',
'audio/skill/suishi1.mp3',
'audio/skill/suishi2.mp3',
'audio/skill/suizheng1.mp3',
'audio/skill/suizheng2.mp3',
'audio/skill/sushou1.mp3',
'audio/skill/sushou2.mp3',
'audio/skill/suzi1.mp3',
@ -3456,6 +3493,8 @@ window.noname_asset_list=[
'audio/skill/tongli2.mp3',
'audio/skill/tongqu1.mp3',
'audio/skill/tongqu2.mp3',
'audio/skill/tongxie1.mp3',
'audio/skill/tongxie2.mp3',
'audio/skill/tongyuan1.mp3',
'audio/skill/tongyuan2.mp3',
'audio/skill/tspowei1.mp3',
@ -3523,6 +3562,8 @@ window.noname_asset_list=[
'audio/skill/twsidai2.mp3',
'audio/skill/twsidao1.mp3',
'audio/skill/twsidao2.mp3',
'audio/skill/twwuhun1.mp3',
'audio/skill/twwuhun2.mp3',
'audio/skill/twyangshi1.mp3',
'audio/skill/twyangshi2.mp3',
'audio/skill/twyiju1.mp3',
@ -3708,6 +3749,8 @@ window.noname_asset_list=[
'audio/skill/xibing2.mp3',
'audio/skill/xiechan1.mp3',
'audio/skill/xiechan2.mp3',
'audio/skill/xiecui1.mp3',
'audio/skill/xiecui2.mp3',
'audio/skill/xiemu1.mp3',
'audio/skill/xiemu2.mp3',
'audio/skill/xijue_tuxi1.mp3',
@ -3969,6 +4012,8 @@ window.noname_asset_list=[
'audio/skill/xinzongxuan2.mp3',
'audio/skill/xiongmang1.mp3',
'audio/skill/xiongmang2.mp3',
'audio/skill/xiongshu1.mp3',
'audio/skill/xiongshu2.mp3',
'audio/skill/xiongsuan1.mp3',
'audio/skill/xiongsuan2.mp3',
'audio/skill/xiongyi1.mp3',
@ -4095,6 +4140,8 @@ window.noname_asset_list=[
'audio/skill/yijiao2.mp3',
'audio/skill/yijue1.mp3',
'audio/skill/yijue2.mp3',
'audio/skill/yilie1.mp3',
'audio/skill/yilie2.mp3',
'audio/skill/yimie1.mp3',
'audio/skill/yimie2.mp3',
'audio/skill/yinbing1.mp3',
@ -4183,6 +4230,8 @@ window.noname_asset_list=[
'audio/skill/youdi.mp3',
'audio/skill/youlong1.mp3',
'audio/skill/youlong2.mp3',
'audio/skill/youxu1.mp3',
'audio/skill/youxu2.mp3',
'audio/skill/youyan1.mp3',
'audio/skill/youyan2.mp3',
'audio/skill/yuanchou1.mp3',
@ -5585,6 +5634,16 @@ window.noname_asset_list=[
'image/character/xin_mamidi.jpg',
'image/character/xin_quancong.jpg',
'image/character/zhangxuan.jpg',
'image/character/dc_jiling.jpg',
'image/character/dc_sunru.jpg',
'image/character/dc_wangchang.jpg',
'image/character/fengfang.jpg',
'image/character/jin_zhouchu.jpg',
'image/character/ns_zhonglimu.jpg',
'image/character/tw_shen_guanyu.jpg',
'image/character/zhangxun.jpg',
'image/character/zhaoang.jpg',
'image/character/zhaoyǎn.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -10671,9 +10671,12 @@
buttons.classList.add('guanxing');
buttons._link=i;
if(list[i][1]){
ui.create.buttons(list[i][1],'card',buttons);
var cardsb=ui.create.buttons(list[i][1],'card',buttons);
if(list[i][2]&&typeof list[i][2]=='string'){
for(var ij of cardsb) ij.node.gaintag.innerHTML=get.translation(list[i][2]);
}
}
if(list[i][2]) buttons.textPrompt=list[i][2];
if(list[i][2]&&typeof list[i][2]=='function') buttons.textPrompt=list[i][2];
}
event.dialog.open();
updateButtons();
@ -12302,8 +12305,9 @@
if(lib.card[name].cancel){
var next=game.createEvent(name+'Cancel');
next.setContent(lib.card[name].cancel);
next.card=event.card;
next.cards=[event.card];
if(!event.card.viewAs) next.card=get.autoViewAs(event.card);
else next.card=get.autoViewAs({name:name},next.cards);
next.player=player;
}
}
@ -12311,8 +12315,9 @@
var next=game.createEvent(name);
next.setContent(lib.card[name].effect);
next._result=result;
next.card=event.card;
next.cards=[event.card];
if(!event.card.viewAs) next.card=get.autoViewAs(event.card);
else next.card=get.autoViewAs({name:name},next.cards);
next.player=player;
}
ui.clear();
@ -15719,6 +15724,8 @@
'step 1'
player.gain(event.cards2);
target.gain(event.cards1);
'step 2'
game.delayx();
},
swapHandcardsx:function(){
'step 0'
@ -21375,7 +21382,10 @@
game.cardsDiscard(card);
}
else{
if(card.name!=name){
if(card.cards&&card.cards.length){
target.addJudge(name,card.cards[0]);
}
else if(card.name!=name){
target.addJudge(name,card);
}
else{
@ -21579,7 +21589,7 @@
var checkShow=this.checkShow(name);
if(lib.translate[name]){
this.trySkillAnimate(name,popname,checkShow);
if(typeof targets=='object'&&targets.length){
if(Array.isArray(targets)&&targets.length){
var str;
if(targets[0]==this){
str='#b自己';
@ -34016,7 +34026,7 @@
info=get.info(skills2[i]);
enable=false;
if(typeof info.enable=='function') enable=info.enable(event);
else if(typeof info.enable=='object') enable=info.enable.contains(event.name);
else if(Array.isArray(info.enable)) enable=info.enable.contains(event.name);
else if(info.enable=='phaseUse') enable=(event.type=='phase');
else if(typeof info.enable=='string') enable=(info.enable==event.name);
if(enable){
@ -46692,6 +46702,7 @@
else{
ui.create.div('.name','<span style="opacity:0.6">'+(button.info[i][0]||'无名玩家'),node);
}
//show ID
//ui.create.div('.videostatus',node,button.info[i][5]);
//node.classList.add('videonodestatus');
if(button.info[i][3]){
@ -52754,7 +52765,7 @@
if(filter.hasOwnProperty(j)){
if(get.itemtype(arguments[i])=='card'){
if(j=='name'){
if(typeof filter[j]=='object'){
if(Array.isArray(filter[j])){
if(filter[j].contains(get.name(arguments[i]))==false) return false;
}
else if(typeof filter[j]=='string'){
@ -52762,7 +52773,7 @@
}
}
else if(j=='type'){
if(typeof filter[j]=='object'){
if(Array.isArray(filter[j])){
if(filter[j].contains(get.type(arguments[i]))==false) return false;
}
else if(typeof filter[j]=='string'){
@ -52770,7 +52781,7 @@
}
}
else if(j=='subtype'){
if(typeof filter[j]=='object'){
if(Array.isArray(filter[j])){
if(filter[j].contains(get.subtype(arguments[i]))==false) return false;
}
else if(typeof filter[j]=='string'){
@ -52778,7 +52789,7 @@
}
}
else if(j=='color'){
if(typeof filter[j]=='object'){
if(Array.isArray(filter[j])){
if(filter[j].contains(get.color(arguments[i]))==false) return false;
}
else if(typeof filter[j]=='string'){
@ -52786,7 +52797,7 @@
}
}
else if(j=='suit'){
if(typeof filter[j]=='object'){
if(Array.isArray(filter[j])){
if(filter[j].contains(get.suit(arguments[i]))==false) return false;
}
else if(typeof filter[j]=='string'){
@ -52794,14 +52805,14 @@
}
}
else if(j=='number'){
if(typeof filter[j]=='object'){
if(Array.isArray(filter[j])){
if(filter[j].contains(get.number(arguments[i]))==false) return false;
}
else if(typeof filter[j]=='string'){
if(get.number(arguments[i])!=filter[j]) return false;
}
}
else if(typeof filter[j]=='object'){
else if(Array.isArray(filter[j])){
if(filter[j].contains(arguments[i][j])==false) return false;
}
else if(typeof filter[j]=='string'){
@ -53073,7 +53084,7 @@
return lib.translate[skill+'_info'];
}
case 'cardCount':{
if(typeof content=='object'&&typeof content.length=='number'){
if(Array.isArray(content)){
return '共有'+get.cnNumber(content.length)+'张牌';
}
return false;

View File

@ -1,11 +1,11 @@
window.noname_update={
version:'1.9.115.2.1',
update:'1.9.115.2',
version:'1.9.115.3',
update:'1.9.115.2.1',
changeLog:[
'李密入选稿公布',
'OL界荀彧',
'十周年曹华,刘虞、秦宜禄、张嫙',
'移动版阮慧、马日磾、全琮i',
'钟离牧入选稿公布',
'OL周处、赵俨',
'十周年纪灵、孙茹、王昶、冯芳、张勋、赵昂',
'海外服神关羽',
'技能调整与bug修复',
],
files:[
@ -20,33 +20,33 @@ window.noname_update={
//'card/swd.js',
//'card/yunchou.js',
//'card/yingbian.js',
//'card/yongjian.js',
'card/yongjian.js',
//'card/zhenfa.js',
//'card/zhulu.js',
'character/diy.js',
//'character/extra.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/old.js',
//'character/ow.js',
//'character/rank.js',
//'character/refresh.js',
'character/rank.js',
'character/refresh.js',
//'character/sb.js',
//'character/shenhua.js',
'character/shenhua.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',
//'layout/default/layout.css',

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
image/character/zhaoang.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB