Merge branch 'PR-Branch' of https://github.com/libccy/noname into PR-Branch
This commit is contained in:
commit
26a86308e5
|
@ -2735,7 +2735,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
if(event.wuxieresult&&event.wuxieresult2&&event.wuxieresult2.skill){
|
||||
var info=get.info(event.wuxieresult2.skill);
|
||||
if(info&&info.precontent&&!game.online){
|
||||
var next=game.createEvent('pre_'+event.wuxieresult2);
|
||||
var next=game.createEvent('pre_'+event.wuxieresult2.skill);
|
||||
next.setContent(info.precontent);
|
||||
next.set('result',event.wuxieresult2);
|
||||
next.set('player',event.wuxieresult);
|
||||
|
|
|
@ -678,7 +678,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
if(event.zhuzhanresult){
|
||||
var target=event.zhuzhanresult;
|
||||
target.line(player,'green');
|
||||
target.discard(event.zhuzhanresult2.cards);
|
||||
target.discard(event.zhuzhanresult2.cards).discarder=target;
|
||||
target.popup('助战','wood');
|
||||
game.log(target,'响应了',player,'发起的助战');
|
||||
target.addExpose(0.2);
|
||||
|
|
|
@ -176,7 +176,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
target:function(player,target){
|
||||
var cards=target.getCards('e'),js=target.getCards('j');
|
||||
var val=get.value(cards,target);
|
||||
for(var card of js) val-=get.effect(target,card.viewAs?{name:card.viewAs}:card,target,target)
|
||||
for(var card of js) val-=get.effect(target,card.viewAs?{name:card.viewAs}:card,target,player);
|
||||
return -val;
|
||||
},
|
||||
},
|
||||
|
@ -422,6 +422,12 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
filterCard:true,
|
||||
position:'h',
|
||||
filterTarget:lib.filter.notMe,
|
||||
check:function(card){
|
||||
var player=_status.event.player;
|
||||
var val=5;
|
||||
if(player.needsToDiscard()) val=15;
|
||||
return val-get.value(card);
|
||||
},
|
||||
discard:false,
|
||||
lose:false,
|
||||
delay:false,
|
||||
|
@ -429,6 +435,17 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
player.give(cards,target);
|
||||
},
|
||||
ai:{
|
||||
expose:0.1,
|
||||
order:1,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
if(!ui.selected.cards.length) return 0;
|
||||
if(get.value(ui.selected.cards[0],false,'raw')<0) return -1;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
qixingbaodao:{
|
||||
trigger:{player:'equipAfter'},
|
||||
|
|
|
@ -1533,7 +1533,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
characterReplace:{
|
||||
wuban:['clan_wuban','wuban'],
|
||||
wuban:['dc_wuban','clan_wuban','wuban'],
|
||||
},
|
||||
characterIntro:{
|
||||
xunshu:'荀淑(83年~149年),字季和,为郎陵侯相,颍川颍阴人(今河南省许昌市)人。汉和帝至汉桓帝时人物,以品行高洁著称。有子八人,号八龙。年轻时有高尚的德行,学问渊博,不喜欢雕章琢句,徒在文字上用功,不注重实际的学识。因此,常常被俗儒看不起。但州里却称他有知人之明。安帝时,征召任为郎中,后来再升当涂长。离职还乡里。他的孙子荀彧是曹操部下著名的谋士。',
|
||||
|
|
|
@ -624,6 +624,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
player.gain(cards,'gain2');
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
combo:'yizhao',
|
||||
}
|
||||
},
|
||||
sanshou:{
|
||||
|
@ -2275,7 +2278,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(event.zhuzhanresult){
|
||||
var target=event.zhuzhanresult;
|
||||
target.line(player,'green');
|
||||
target.discard(event.zhuzhanresult2.cards);
|
||||
target.discard(event.zhuzhanresult2.cards).discarder=target;
|
||||
target.draw(2);
|
||||
target.popup('助战','wood');
|
||||
game.log(target,'响应了',player,'发起的助战');
|
||||
|
|
|
@ -15511,7 +15511,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
player.loseHp();
|
||||
switch(get.type(cards[0],'trick',cards[0].original=='h'?player:false)){
|
||||
case 'basic':player.addTempSkill('xinzhanyi_basic');break;
|
||||
case 'basic':player.addTempSkill('xinzhanyi_basic');player.addMark('xinzhanyi_basic1',1,false);break;
|
||||
case 'equip':player.addTempSkill('xinzhanyi_equip');break;
|
||||
case 'trick':player.addTempSkill('xinzhanyi_trick');player.draw(3);break;
|
||||
}
|
||||
|
@ -15526,15 +15526,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xinzhanyi_basic1:{
|
||||
trigger:{player:"useCard"},
|
||||
filter:function(event,player){
|
||||
return event.skill=='xinzhanyi_basic_backup'&&!player.storage.xinzhanyi_basic1;
|
||||
return get.type(event.card,false)=='basic'&&player.hasMark('xinzhanyi_basic1');
|
||||
},
|
||||
forced:true,
|
||||
silent:true,
|
||||
popup:false,
|
||||
content:function(){
|
||||
if(!trigger.baseDamage) trigger.baseDamage=1;
|
||||
trigger.baseDamage++;
|
||||
player.storage.xinzhanyi_basic1=true;
|
||||
var num=player.countMark('xinzhanyi_basic1');
|
||||
trigger.baseDamage+=num;
|
||||
player.removeMark('xinzhanyi_basic1',num,false);
|
||||
game.log(trigger.card,'的伤害值/回复值','#y+'+num);
|
||||
},
|
||||
},
|
||||
xinzhanyi_basic:{
|
||||
|
@ -15543,31 +15545,29 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
delete p.storage[s+1];
|
||||
},
|
||||
hiddenCard:function(player,name){
|
||||
return ['sha','tao','jiu'].contains(name)&&player.countCards('h',{type:'basic'})>0;
|
||||
return get.type(name)=='basic'&&player.countCards('h',{type:'basic'})>0;
|
||||
},
|
||||
enable:"chooseToUse",
|
||||
filter:function(event,player){
|
||||
if(event.filterCard({name:'sha'},player,event)||
|
||||
event.filterCard({name:'jiu'},player,event)||
|
||||
event.filterCard({name:'tao'},player,event)){
|
||||
return player.hasCard(function(card){
|
||||
return get.type(card)=='basic';
|
||||
},'hs');
|
||||
if(!player.hasCard(function(card){
|
||||
return get.type(card)=='basic';
|
||||
},'hs')) return false;
|
||||
for(var name of lib.inpile){
|
||||
if(get.type(name)!='basic') continue;
|
||||
if(event.filterCard({name:name},player,event)) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
var list=[];
|
||||
if(event.filterCard({name:'sha'},player,event)){
|
||||
list.push(['基本','','sha']);
|
||||
for(var j of lib.inpile_nature) list.push(['基本','','sha',j]);
|
||||
}
|
||||
if(event.filterCard({name:'tao'},player,event)){
|
||||
list.push(['基本','','tao']);
|
||||
}
|
||||
if(event.filterCard({name:'jiu'},player,event)){
|
||||
list.push(['基本','','jiu']);
|
||||
for(var name of lib.inpile){
|
||||
if(get.type(name)!='basic') continue;
|
||||
if(event.filterCard({name:name},player,event)) list.push(['基本','',name]);
|
||||
if(name!='sha') continue;
|
||||
for(var j of lib.inpile_nature){
|
||||
if(event.filterCard({name:name,nature:j},player,event)) list.push(['基本','','sha',j]);
|
||||
}
|
||||
}
|
||||
return ui.create.dialog('战意',[list,'vcard'],'hidden');
|
||||
},
|
||||
|
@ -17924,7 +17924,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sunshao:['sp_sunshao','sunshao'],
|
||||
xunchen:['re_xunchen','xunchen','tw_xunchen','sp_xunchen'],
|
||||
xinpi:['xinpi','sp_xinpi'],
|
||||
duyu:['duyu','sp_duyu'],
|
||||
duyu:['duyu','dc_duyu','sp_duyu','pk_sp_duyu'],
|
||||
zhangwen:['sp_zhangwen','zhangwen'],
|
||||
ol_bianfuren:['ol_bianfuren','tw_bianfuren','sp_bianfuren'],
|
||||
wangshuang:['wangshuang','sp_wangshuang'],
|
||||
|
@ -17946,7 +17946,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
yangbiao:['yangbiao','dc_yangbiao','jsrg_yangbiao'],
|
||||
qiaozhou:['yj_qiaozhou','qiaozhou'],
|
||||
sunhanhua:['dc_qiaozhou','sunhanhua'],
|
||||
duyu:['duyu','sp_duyu','pk_sp_duyu'],
|
||||
kongrong:['sp_kongrong','jsrg_kongrong','kongrong'],
|
||||
mifuren:['dc_mifuren','sp_mifuren'],
|
||||
},
|
||||
|
|
|
@ -178,9 +178,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var go=false,d1=true;
|
||||
var go=false,d1=false;
|
||||
if(get.attitude(player,trigger.player)>0){
|
||||
if(trigger.player.hasSkill('jueqing')||trigger.player.hasSkill('gangzhi')) d1=false
|
||||
d1=true;
|
||||
if(trigger.player.hasSkill('jueqing')||trigger.player.hasSkill('gangzhi')) d1=false;
|
||||
for(var target of trigger.targets){
|
||||
if(!target.mayHaveShan()||trigger.player.hasSkillTag('directHit_ai',true,{
|
||||
target:target,
|
||||
|
|
|
@ -925,6 +925,7 @@ window.noname_character_rank={
|
|||
'vtb_xiaojiu',
|
||||
'ol_zhangzhang',
|
||||
'ol_mengda',
|
||||
'dc_wuban',
|
||||
],
|
||||
b:[
|
||||
'diy_feishi',
|
||||
|
@ -1214,6 +1215,7 @@ window.noname_character_rank={
|
|||
'vtb_xiaoshan',
|
||||
'vtb_xiaotao',
|
||||
'zhangchu',
|
||||
'dc_duyu',
|
||||
],
|
||||
bm:[
|
||||
'diy_xizhenxihong',
|
||||
|
|
|
@ -188,6 +188,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.draw();
|
||||
},
|
||||
discard:false,
|
||||
lose:false,
|
||||
prepare:function(cards,player,targets){
|
||||
player.$give(cards,targets[0],false);
|
||||
},
|
||||
|
|
|
@ -773,7 +773,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ai:{
|
||||
effect:{
|
||||
player:function(card,player,target){
|
||||
if(player!=target&&target&&target.group=='qun') return [1,0.2];
|
||||
if(player!=target&&target&&target.group=='qun'&&card.name!='tao') return [1,0.1];
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
@ -3987,6 +3987,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.draw();
|
||||
},
|
||||
discard:false,
|
||||
lose:false,
|
||||
prepare:function(cards,player,targets){
|
||||
player.$give(cards,targets[0],false);
|
||||
},
|
||||
|
|
|
@ -763,10 +763,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'将势力改为任意一个势力'
|
||||
].map((text,ind)=>{
|
||||
var hint='';
|
||||
if(list.contains(ind+1)){
|
||||
if(list2.contains(ind+1)){
|
||||
return text;
|
||||
}
|
||||
else{
|
||||
else if(!list.contains(ind+1)){
|
||||
hint+='已被执行过且';
|
||||
}
|
||||
if(ind==1&&nochai&&!list2.contains(ind+1)) hint+='无有手牌角色且';
|
||||
|
@ -841,7 +841,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
选项三:function(){
|
||||
player.chooseUseTarget('sha',true,false).set('logSkill','olgoude');
|
||||
player.chooseUseTarget('sha',true,false).set('logSkill','olgoude').set('prompt','苟得:选择【杀】的目标');
|
||||
},
|
||||
选项四:function(){
|
||||
'step 0'
|
||||
|
@ -9994,6 +9994,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}).length>0;
|
||||
},
|
||||
logTarget:'player',
|
||||
check:function(event,player){
|
||||
var list=event.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
|
||||
var info=get.info(skill);
|
||||
return info&&!info.juexingji&&!info.hiddenSkill&&!info.zhuSkill&&!info.charlotte&&!info.limited&&!info.dutySkill;
|
||||
});
|
||||
var negSkill=list.some(function(skill){
|
||||
return get.skillRank(skill,'inout')<=0;
|
||||
});
|
||||
var att=get.sgnAttitude(event.player,player);
|
||||
if(!player.storage.retuogu){
|
||||
if(negSkill&&att<0) return false;
|
||||
return true;
|
||||
}
|
||||
list.sort(function(a,b){
|
||||
return att*(get.skillRank(b,'inout')-get.skillRank(a,'inout'));
|
||||
})[0];
|
||||
return get.skillRank(list[0],'inout')>=get.skillRank(player.storage.retuogu,'inout');
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var list=trigger.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
|
||||
|
@ -10002,7 +10020,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
if(list.length==1) event._result={control:list[0]};
|
||||
else trigger.player.chooseControl(list).set('prompt','选择令'+get.translation(player)+'获得一个技能').set('forceDie',true).set('ai',function(){
|
||||
return list.randomGet();
|
||||
var att=get.sgnAttitude(_status.event.getTrigger().player,player);
|
||||
if(att==0) return list.randomGet();
|
||||
var listx=list.map(function(skill){
|
||||
return [skill,get.skillRank(skill,'inout')];
|
||||
}).sort(function(a,b){
|
||||
return att*(b[1]-a[1]);
|
||||
}).slice(0,2);
|
||||
var listx2=[0];
|
||||
if(Math.abs(listx[0][1]-listx[1][1])<=0.5&&Math.sign(listx[0][1])==Math.sign(listx[1][1])) listx2.push(1);
|
||||
return listx[listx2.randomGet()][0];
|
||||
});
|
||||
'step 1'
|
||||
if(player.storage.retuogu) player.removeSkill(player.storage.retuogu);
|
||||
|
|
439
character/sp2.js
439
character/sp2.js
|
@ -4,6 +4,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
name:'sp2',
|
||||
connect:true,
|
||||
character:{
|
||||
dc_wuban:['male','shu',4,['dcyouzhan'],['clan:陈留吴氏','unseen']],
|
||||
dc_duyu:['male','wei',3,['dcjianguo','dcdyqingshi'],['unseen']],
|
||||
ganfurenmifuren:['female','shu',3,['dcchanjuan','dcxunbie']],
|
||||
dc_ganfuren:['female','shu',3,['dcshushen','dcshenzhi']],
|
||||
dc_mifuren:['female','shu',3,['dcguixiu','dccunsi']],
|
||||
|
@ -252,7 +254,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_jianghu:['guanning','huzhao','dc_huangchengyan','mengjie'],
|
||||
sp_zongheng:['huaxin','luyusheng','re_xunchen','re_miheng','fengxi','re_dengzhi','dc_yanghu','zongyu'],
|
||||
sp_taiping:['guanhai','liupi','peiyuanshao','zhangchu','zhangkai'],
|
||||
sp_yanhan:['dc_liuba','dc_huangquan','furongfuqian','xianglang','dc_huojun','gaoxiang'],
|
||||
sp_yanhan:['dc_liuba','dc_huangquan','furongfuqian','xianglang','dc_huojun','gaoxiang','dc_wuban'],
|
||||
sp_jishi:['dc_jiben','zhenghun','dc_sunhanhua','liuchongluojun'],
|
||||
sp_raoting:['dc_huanghao','dc_sunziliufang','dc_sunchen'],
|
||||
sp_yijun:['gongsundu','mengyou'],
|
||||
|
@ -262,7 +264,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_zhongyuan:['re_hucheer','re_zoushi','caoanmin','re_dongcheng'],
|
||||
sp_zhengyin:['yue_caiwenji'],
|
||||
sp_xiaohu:['haomeng','yanfuren','yanrou','dc_zhuling'],
|
||||
sp2_huben:['wangshuang','wenyang','re_liuzan','dc_huangzu','wulan','leitong','chentai'],
|
||||
sp2_huben:['wangshuang','wenyang','re_liuzan','dc_huangzu','wulan','leitong','chentai','dc_duyu'],
|
||||
sp2_shengun:["puyuan","guanlu","gexuan",'wufan','re_zhangbao','dukui','zhaozhi','zhujianping','dc_zhouxuān','zerong'],
|
||||
sp2_bizhe:['dc_luotong','dc_wangchang','chengbing','dc_yangbiao','ruanji'],
|
||||
sp2_huangjia:['caomao','liubian','dc_liuyu','quanhuijie','dingshangwan','yuanji','xielingyu','sunyu','ganfurenmifuren','dc_ganfuren','dc_mifuren'],
|
||||
|
@ -278,6 +280,246 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
skill:{
|
||||
//吴班
|
||||
dcyouzhan:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
global:['loseAfter','equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(player!=_status.currentPhase) return false;
|
||||
return game.hasPlayer(current=>{
|
||||
if(current==player) return false;
|
||||
var evt=event.getl(current);
|
||||
return evt&&evt.cards2.length;
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var targets=game.filterPlayer(current=>{
|
||||
if(current==player) return false;
|
||||
var evt=trigger.getl(current);
|
||||
return evt&&evt.cards2.length;
|
||||
});
|
||||
event.targets=targets;
|
||||
player.logSkill('dcyouzhan',targets);
|
||||
'step 1'
|
||||
var target=targets.shift();
|
||||
player.draw();
|
||||
target.addTempSkill('dcyouzhan_effect');
|
||||
target.addMark('dcyouzhan_effect',1,false);
|
||||
target.addTempSkill('dcyouzhan_draw');
|
||||
if(targets.length){
|
||||
event.redo();
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
effect:{
|
||||
trigger:{
|
||||
player:'damageBegin3',
|
||||
},
|
||||
filter:function(event,player){
|
||||
return player.hasMark('dcyouzhan_effect');
|
||||
},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
trigger.num+=player.countMark('dcyouzhan_effect');
|
||||
player.removeSkill('dcyouzhan_effect');
|
||||
},
|
||||
mark:true,
|
||||
intro:{
|
||||
content:'本回合下一次受到的伤害+#',
|
||||
},
|
||||
ai:{
|
||||
damageBonus:true,
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
if(get.tag(card,'damage')) return 1+0.5*target.countMark('dcyouzhan_effect');
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
draw:{
|
||||
trigger:{
|
||||
global:'phaseJieshuBegin',
|
||||
},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
return !player.getHistory('damage').length;
|
||||
},
|
||||
content:function(){
|
||||
player.draw(player.getHistory('lose').length);
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
//杜预
|
||||
dcjianguo:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
var dialog=ui.create.dialog('谏国:请选择一项','hidden');
|
||||
dialog.add([[
|
||||
['discard','令一名角色摸一张牌,然后弃置一半手牌'],
|
||||
['draw','令一名角色弃置一张牌,然后摸等同于手牌数一半的牌']
|
||||
],'textbutton']);
|
||||
return dialog;
|
||||
},
|
||||
check:function(button){
|
||||
var player=_status.event.player;
|
||||
if(button.link=='discard'){
|
||||
var discard=Math.max.apply(Math,game.filterPlayer(current=>{
|
||||
return lib.skill.dcjianguo_discard.filterTarget(null,player,current);
|
||||
}).map(current=>{
|
||||
return get.effect(current,'dcjianguo_discard',player,player);
|
||||
}));
|
||||
return discard;
|
||||
}
|
||||
if(button.link=='draw'){
|
||||
var draw=Math.max.apply(Math,game.filterPlayer(current=>{
|
||||
return lib.skill.dcjianguo_draw.filterTarget(null,player,current);
|
||||
}).map(current=>{
|
||||
return get.effect(current,'dcjianguo_draw',player,player);
|
||||
}));
|
||||
return draw;
|
||||
}
|
||||
return 0;
|
||||
},
|
||||
backup:function(links){
|
||||
return get.copy(lib.skill['dcjianguo_'+links[0]]);
|
||||
},
|
||||
prompt:function(links){
|
||||
if(links[0]=='discard') return '令一名角色摸一张牌,然后弃置一半手牌';
|
||||
return '令一名角色弃置一张牌,然后摸等同于手牌数一半的牌';
|
||||
},
|
||||
},
|
||||
ai:{
|
||||
order:10,
|
||||
threaten:2.8,
|
||||
result:{
|
||||
//想让杜预两个技能自我联动写起来太累了,开摆
|
||||
player:1,
|
||||
},
|
||||
},
|
||||
subSkill:{
|
||||
backup:{audio:'dcjianguo'},
|
||||
discard:{
|
||||
audio:'dcjianguo',
|
||||
filterTarget:()=>true,
|
||||
filterCard:()=>false,
|
||||
selectCard:-1,
|
||||
charlotte:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
target.draw();
|
||||
game.delayex();
|
||||
'step 1'
|
||||
var num=Math.floor(target.countCards('h')/2);
|
||||
if(num>0) target.chooseToDiscard(num,true,'谏国:请弃置'+get.cnNumber(num)+'张手牌');
|
||||
},
|
||||
ai:{
|
||||
result:{
|
||||
target:function(player,target){
|
||||
return 1.1-Math.ceil(target.countCards('h')/2);
|
||||
},
|
||||
},
|
||||
tag:{
|
||||
gain:1,
|
||||
loseCard:2,
|
||||
},
|
||||
},
|
||||
},
|
||||
draw:{
|
||||
audio:'dcjianguo',
|
||||
filterTarget:function(card,player,target){
|
||||
return target.countCards('he');
|
||||
},
|
||||
filterCard:()=>false,
|
||||
selectCard:-1,
|
||||
charlotte:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
target.chooseToDiscard('he',true,'谏国:请弃置一张牌');
|
||||
'step 1'
|
||||
var num=Math.floor(target.countCards('h')/2);
|
||||
if(num>0) target.draw(num);
|
||||
},
|
||||
ai:{
|
||||
result:{
|
||||
target:function(player,target){
|
||||
var fix=0;
|
||||
var num=target.countCards('h');
|
||||
if(player==target&&num%2==1&&num>=5) fix+=1;
|
||||
return Math.floor(num/2-0.5)+fix;
|
||||
},
|
||||
},
|
||||
tag:{
|
||||
loseCard:1,
|
||||
gain:2,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
dcdyqingshi:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
player:'useCardToPlayered',
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(player!=_status.currentPhase) return false;
|
||||
if(!event.isFirstTarget) return false;
|
||||
if(event.card.name!='sha'&&get.type(event.card,false)!='trick') return false;
|
||||
if(player.countCards('h')!=player.getHistory('useCard').indexOf(event.getParent())+1) return false;
|
||||
return event.targets.some(target=>{
|
||||
return target!=player&&target.isIn();
|
||||
});
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var targets=trigger.targets.filter(target=>{
|
||||
return target!=player&&target.isIn();
|
||||
});
|
||||
player.chooseTarget(get.prompt('dcdyqingshi'),'对一名不为你的目标角色造成1点伤害',(card,player,target)=>{
|
||||
return _status.event.targets.contains(target);
|
||||
}).set('ai',target=>{
|
||||
var player=_status.event.player;
|
||||
return get.damageEffect(target,player,player);
|
||||
}).set('targets',targets);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('dcdyqingshi',target);
|
||||
target.damage();
|
||||
}
|
||||
},
|
||||
mod:{
|
||||
aiOrder:function(player,card,num){
|
||||
if(_status.currentPhase!=player) return;
|
||||
var cardsh=[];
|
||||
if(Array.isArray(card.cards)){
|
||||
cardsh.addArray(card.cards.filter(card=>{
|
||||
return get.position(card)=='h';
|
||||
}));
|
||||
}
|
||||
var del=player.countCards('h')-cardsh.length-player.getHistory('useCard').length-1;
|
||||
if(del<0) return;
|
||||
if(del>0){
|
||||
if(card.name=='sha'||get.type(card,false)!='trick') return num/3;
|
||||
return num+1;
|
||||
}
|
||||
return num+15;
|
||||
},
|
||||
},
|
||||
},
|
||||
//甘糜
|
||||
dcchanjuan:{
|
||||
audio:2,
|
||||
|
@ -415,7 +657,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
rec:{
|
||||
audio:'guixiu',
|
||||
trigger:{
|
||||
player:'logSkillAfter',
|
||||
player:'logSkill',
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
|
@ -1113,6 +1355,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
discard:false,
|
||||
lose:false,
|
||||
delay:false,
|
||||
skillAnimation:true,
|
||||
animationColor:'metal',
|
||||
check:function(card){
|
||||
if(get.type(card)!='basic'&&get.type(card)!='trick') return 0;
|
||||
return get.value(card)-7.5;
|
||||
|
@ -3155,6 +3399,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filterTarget:function(card,player,target){
|
||||
return player!=target&&!player.getStorage('dcmoyu_clear').contains(target)&&target.countGainableCards(player,'hej');
|
||||
},
|
||||
global:'dcmoyu_ai',
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.addTempSkill('dcmoyu_clear');
|
||||
|
@ -3184,10 +3429,31 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
charlotte:true,
|
||||
onremove:true,
|
||||
},
|
||||
ban:{charlotte:true}
|
||||
ban:{charlotte:true},
|
||||
ai:{
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
if(get.type(card)=='delay'&¤t<0){
|
||||
var currentx=_status.currentPhase;
|
||||
if(!currentx||!currentx.isIn()) return;
|
||||
var list=game.filterPlayer(current=>{
|
||||
if(current==target) return true;
|
||||
if(!current.hasSkill('dcmoyu')) return false;
|
||||
if(current.hasJudge('lebu')) return false;
|
||||
return get.attitude(current,target)>0;
|
||||
});
|
||||
list.sortBySeat(currentx);
|
||||
if(list.indexOf(target)!=0) return 'zerotarget';
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:9,
|
||||
threaten:2.4,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
var eff=get.effect(target,{name:'shunshou'},player,player);
|
||||
|
@ -3222,7 +3488,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
target.chooseToDiscard('集众:弃置三张手牌,或点击“取消”获得“信众”标记',3);
|
||||
}
|
||||
'step 2'
|
||||
target.addMark('dcjizhong',1);
|
||||
if(!result.bool){
|
||||
target.addMark('dcjizhong',1);
|
||||
}
|
||||
},
|
||||
marktext:'信',
|
||||
intro:{
|
||||
|
@ -6912,7 +7180,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.logSkill('dcwumei',target);
|
||||
player.addTempSkill('dcwumei_used','roundStart');
|
||||
target.insertPhase();
|
||||
target.addTempSkill('dcwumei_wake');
|
||||
target.addTempSkill('dcwumei_wake','phaseAfter');
|
||||
var targets=game.filterPlayer();
|
||||
if(!target.storage.dcwumei_wake) target.storage.dcwumei_wake=[[],[]];
|
||||
for(var targetx of targets){
|
||||
|
@ -7474,6 +7742,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filter:function(event,player){
|
||||
return player.getStorage('dclianzhi').contains(event.player);
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var num=Math.max(1,player.countMark('dclingfang'));
|
||||
|
@ -7483,6 +7752,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('dclianzhi_reproach',target);
|
||||
player.addSkillLog('dcshouze');
|
||||
target.addSkillLog('dcshouze');
|
||||
target.addMark('dclingfang',Math.max(1,player.countMark('dclingfang')));
|
||||
|
@ -7494,10 +7764,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dclingfang:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
player:'phaseZhunbeiBegin',
|
||||
global:'useCardAfter',
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(event.name!='useCard') return true;
|
||||
if(get.color(event.card)!='black') return false;
|
||||
if(event.player==player) return !event.targets||!event.targets.contains(player);
|
||||
return event.targets&&event.targets.contains(player);
|
||||
|
@ -7524,6 +7796,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
hiddenCard:function(player,name){
|
||||
var list=player.getStorage('dcfengying');
|
||||
if(player.getStorage('dcfengying_used').contains(name)) return false;
|
||||
return list.contains(name)&&player.hasCard((card)=>(get.number(card)<=player.countMark('dclingfang')),'hs');
|
||||
},
|
||||
chooseButton:{
|
||||
|
@ -7536,7 +7809,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return ui.create.dialog('风影',[list,'vcard']);
|
||||
},
|
||||
filter:function(button,player){
|
||||
return _status.event.getParent().filterCard({name:button.link[2],storage:{dcfengying:true}},player,_status.event.getParent());
|
||||
var card={name:button.link[2],storage:{dcfengying:true}};
|
||||
if(player.getStorage('dcfengying_used').contains(card.name)) return false;
|
||||
return _status.event.getParent().filterCard(card,player,_status.event.getParent());
|
||||
},
|
||||
check:function(button){
|
||||
var player=_status.event.player;
|
||||
|
@ -7565,6 +7840,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
precontent:function(){
|
||||
player.logSkill('dcfengying');
|
||||
player.addTempSkill('dcfengying_used');
|
||||
player.markAuto('dcfengying_used',[event.result.card.name]);
|
||||
event.getParent().addCount=false;
|
||||
delete event.result.skill;
|
||||
}
|
||||
|
@ -7613,7 +7889,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
}
|
||||
},
|
||||
used:{charlotte:true}
|
||||
used:{
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
intro:{
|
||||
content:'已使用过$',
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
dcshouze:{
|
||||
|
@ -13997,14 +14279,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
content:function(){
|
||||
var delta=player.countCards('h')-player.hp;
|
||||
if(delta>0) player.chooseToDiscard('h',3,true);
|
||||
if(delta>0) player.chooseToDiscard('h',4,true);
|
||||
else if(delta==0){
|
||||
player.chooseToDiscard('h',true);
|
||||
player.recover();
|
||||
}
|
||||
else{
|
||||
player.damage('fire','nosource');
|
||||
player.draw(4);
|
||||
player.draw(5);
|
||||
}
|
||||
},
|
||||
ai:{halfneg:true},
|
||||
|
@ -16148,7 +16430,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return event.target!=player&&(event.card.name=='sha'||get.type(event.card,false)=='trick')&&event.target.countCards('he')>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
trigger.target.chooseToDiscard('he',true);
|
||||
'step 1'
|
||||
if(result.bool&&result.cards.length&&get.color(result.cards[0],trigger.target)==get.color(trigger.card)){
|
||||
game.log(trigger.target,'不能响应',trigger.card);
|
||||
trigger.directHit.push(trigger.target);
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -16167,6 +16455,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
player.gainMaxHp();
|
||||
player.recover();
|
||||
},
|
||||
},
|
||||
//冯妤
|
||||
|
@ -18169,7 +18458,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return false;
|
||||
},
|
||||
usable:1,
|
||||
check:()=>false,
|
||||
check:function(event,player){
|
||||
var hs=player.getCards('h'),cards=event.cards.filter(function(i){
|
||||
return (hs.contains(i)&&get.color(i,player)=='red'&&lib.filter.cardDiscardable(i,player,'difa'));
|
||||
});
|
||||
var value=get.value(hs,player);
|
||||
return Array.from(ui.cardPile.childNodes).some(function(card){
|
||||
return get.type2(card,false)=='trick'&&get.value(card,player)>value;
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var hs=player.getCards('h'),cards=trigger.cards.filter(function(i){
|
||||
|
@ -18185,7 +18482,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return get.type2(i,false)=='trick';
|
||||
});
|
||||
if(!list.length) event.finish();
|
||||
else player.chooseButton(['选择获得一种锦囊牌',[list.map((i)=>['锦囊','',i]),'vcard']],true);
|
||||
else player.chooseButton(['选择获得一种锦囊牌',[list.map((i)=>['锦囊','',i]),'vcard']],true).set('ai',function(button){
|
||||
var card={name:button.link[2]};
|
||||
if(!_status.event.list.contains(card.name)) return 0;
|
||||
return _status.event.player.getUseValue(card);
|
||||
}).set('list',Array.from(ui.cardPile.childNodes).filter(function(card){
|
||||
return get.type2(card,false)=='trick';
|
||||
}).map(function(card){
|
||||
return card.name;
|
||||
}).reduce(function(list,name){
|
||||
if(!list.contains(name)) list.add(name);
|
||||
return list;
|
||||
},[]));
|
||||
'step 2'
|
||||
var card=get.cardPile(function(i){
|
||||
return i.name==result.links[0][2]&&!event.cards.contains(i);
|
||||
|
@ -20795,17 +21103,67 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
//杨婉
|
||||
youyan:{
|
||||
audio:2,
|
||||
// trigger:{
|
||||
// player:'loseAfter',
|
||||
// global:'loseAsyncAfter',
|
||||
// },
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
global:'loseAsyncAfter',
|
||||
player:['loseAfter','equipAfter'],
|
||||
global:['loseAsyncAfter','cardsDiscardAfter'],
|
||||
},
|
||||
//usable:1,
|
||||
prompt2:function(event,player){
|
||||
var cards2=[];
|
||||
if(event.name=='cardsDiscard'){
|
||||
var evtx=event.getParent();
|
||||
if(evtx.name!='orderingDiscard') return false;
|
||||
var evtx2=(evtx.relatedEvent||evtx.getParent());
|
||||
if(evtx2.name=='useCard'||evtx2.name=='respond') return false;
|
||||
player.getHistory('lose',evtx3=>{
|
||||
var evtx4=evtx3.relatedEvent||evtx3.getParent();
|
||||
if(evtx2!=evtx4) return false;
|
||||
if(!evtx3.cards2||!evtx3.cards2.length) return false;
|
||||
cards2.addArray(evtx3.cards2.filterInD('d'));
|
||||
});
|
||||
}
|
||||
else if(event.name=='loseAsync'){
|
||||
player.hasHistory('lose',evt=>{
|
||||
if(evt.getParent()!=event||evt.position!=ui.discardPile) return false;
|
||||
cards2.addArray(evt.cards2.filterInD('d'));
|
||||
});
|
||||
}
|
||||
else{
|
||||
cards2.addArray(event.getd(player).filterInD('d'));
|
||||
}
|
||||
return '获得与'+get.translation(cards2)+'花色'+(cards2.length>1?'各':'')+'不相同的牌各一张';
|
||||
},
|
||||
filter:function(event,player){
|
||||
if(event.type!='discard'||event.getlx===false||player!=_status.currentPhase) return false;
|
||||
var evt=event.getl(player);
|
||||
if(!evt||!evt.cards2||!evt.cards2.length) return false;
|
||||
if(player!=_status.currentPhase) return false;
|
||||
var cards2=[];
|
||||
if(event.name=='cardsDiscard'){
|
||||
var evtx=event.getParent();
|
||||
if(evtx.name!='orderingDiscard') return false;
|
||||
var evtx2=(evtx.relatedEvent||evtx.getParent());
|
||||
if(evtx2.name=='useCard'||evtx2.name=='respond') return false;
|
||||
player.getHistory('lose',evtx3=>{
|
||||
var evtx4=evtx3.relatedEvent||evtx3.getParent();
|
||||
if(evtx2!=evtx4) return false;
|
||||
if(!evtx3.cards2||!evtx3.cards2.length) return false;
|
||||
cards2.addArray(evtx3.cards2.filterInD('d'));
|
||||
});
|
||||
}
|
||||
else if(event.name=='loseAsync'){
|
||||
player.hasHistory('lose',evt=>{
|
||||
if(evt.getParent()!=event||evt.position!=ui.discardPile) return false;
|
||||
cards2.addArray(evt.cards2.filterInD('d'));
|
||||
});
|
||||
}
|
||||
else{
|
||||
cards2.addArray(event.getd(player).filterInD('d'));
|
||||
}
|
||||
if(!cards2.length) return false;
|
||||
var list=[];
|
||||
for(var i of evt.cards2){
|
||||
for(var i of cards2){
|
||||
list.add(get.suit(i,player));
|
||||
if(list.length>=lib.suit.length) return false;
|
||||
}
|
||||
|
@ -20823,7 +21181,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(evt) evt.youyaned=true;
|
||||
}
|
||||
var list=[],cards=[];
|
||||
var cards2=trigger.getl(player).cards2;
|
||||
var cards2=[];
|
||||
if(trigger.name=='cardsDiscard'){
|
||||
var evtx=trigger.getParent();
|
||||
if(evtx.name!='orderingDiscard') return false;
|
||||
var evtx2=(evtx.relatedEvent||evtx.getParent());
|
||||
if(evtx2.name=='useCard'||evtx2.name=='respond') return false;
|
||||
player.getHistory('lose',evtx3=>{
|
||||
var evtx4=evtx3.relatedEvent||evtx3.getParent();
|
||||
if(evtx2!=evtx4) return false;
|
||||
if(!evtx3.cards2||!evtx3.cards2.length) return false;
|
||||
cards2.addArray(evtx3.cards2.filterInD('d'));
|
||||
});
|
||||
}
|
||||
else if(trigger.name=='loseAsync'){
|
||||
player.hasHistory('lose',evt=>{
|
||||
if(evt.getParent()!=trigger||evt.position!=ui.discardPile) return false;
|
||||
cards2.addArray(evt.cards2.filterInD('d'));
|
||||
});
|
||||
}
|
||||
else{
|
||||
cards2.addArray(trigger.getd(player).filterInD('d'));
|
||||
}
|
||||
for(var i of cards2){
|
||||
list.add(get.suit(i,player));
|
||||
}
|
||||
|
@ -30137,7 +30516,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
kangge_info:'当你受到除自己和“抗歌”角色以外的角色造成的伤害时,你可以防止此伤害并选择一种花色,然后你失去X点体力,令“抗歌”角色从弃牌堆中随机获得X张此花色的牌(X为伤害值)。',
|
||||
yangwan:'杨婉',
|
||||
youyan:'诱言',
|
||||
youyan_info:'出牌阶段/弃牌阶段各限一次,当你的牌因弃置进入弃牌堆后,你可以从牌堆中获得本次弃牌中没有的花色的牌各一张。',
|
||||
youyan_info:'出牌阶段/弃牌阶段各限一次。当有牌进入弃牌堆后,若其中有你不因使用或打出而失去的牌,你可以从牌堆中获得你本次失去的牌中没有的花色的牌各一张。',
|
||||
zhuihuan:'追还',
|
||||
zhuihuan2:'追还',
|
||||
zhuihuan2_new:'追还',
|
||||
|
@ -30368,9 +30747,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
baoshu_info:'①准备阶段,你可选择Y名角色,这些角色重置武将牌并获得(X-Y+1)个“梳”(X为你的体力上限,Y∈[1, X])。②一名角色的摸牌阶段开始时,若其有“梳”,则其本阶段的额定摸牌数+Z且移去Z个“梳”(Z为其“梳”的数量)。',
|
||||
mamidi:'马日磾',
|
||||
bingjie:'秉节',
|
||||
bingjie_info:'出牌阶段开始时,你可减1点体力上限,然后当你于本阶段内使用【杀】或普通锦囊牌指定其他角色为目标后,其弃置一张牌。',
|
||||
bingjie_info:'出牌阶段开始时,你可减1点体力上限,然后当你于本阶段内使用【杀】或普通锦囊牌指定其他角色为目标后,其弃置一张牌。若其弃置的牌与你使用的牌颜色相同,其无法响应此牌。',
|
||||
zhengding:'正订',
|
||||
zhengding_info:'锁定技。当你于回合外使用或打出牌响应其他角色使用的牌时,若这两张牌颜色相同,则你加1点体力上限。',
|
||||
zhengding_info:'锁定技。当你于回合外使用或打出牌响应其他角色使用的牌时,若这两张牌颜色相同,则你加1点体力上限并回复1点体力。',
|
||||
licaiwei:'李采薇',
|
||||
yijiao:'异教',
|
||||
yijiao_info:'出牌阶段限一次,你可以选择一名没有“异”标记的其他角色并声明一个整数X(X∈[1,4]),该角色获得10X个“异”标记。有“异”标记的角色的结束阶段,其移去“异”标记,且若其本回合使用牌的点数之和:1.小于“异”标记数,其随机弃置至多三张手牌;2.等于“异”标记数,你摸两张牌且该角色本回合结束后进行一个额外的回合;3.大于“异”标记数,你摸三张牌。',
|
||||
|
@ -30444,7 +30823,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
lianzhou:'连舟',
|
||||
lianzhou_info:'锁定技。准备阶段,你横置你的武将牌。然后你可横置任意名体力值等于你的角色。',
|
||||
jinglan:'惊澜',
|
||||
jinglan_info:'锁定技。当你造成伤害后,若你的手牌数:大于体力值,你弃置三张手牌;等于体力值,你弃置一张手牌并回复1点体力;小于体力值,你受到1点无来源火焰伤害并摸四张牌。',
|
||||
jinglan_info:'锁定技。当你造成伤害后,若你的手牌数:大于体力值,你弃置四张手牌;等于体力值,你弃置一张手牌并回复1点体力;小于体力值,你受到1点无来源火焰伤害并摸五张牌。',
|
||||
dc_huangzu:'黄祖',
|
||||
dcjinggong:'精弓',
|
||||
dcjinggong_info:'你可以将一张装备牌当做无距离限制的【杀】使用。当你声明使用此【杀】后,你将此杀的伤害值基数改为X(X为你至此【杀】第一个目标角色的距离且至多为5)。',
|
||||
|
@ -30701,9 +31080,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dclianzhi:'连枝',
|
||||
dclianzhi_info:'①游戏开始时,你选择一名其他角色(仅你可见)。②每回合限一次。当你进入濒死状态时,若〖连枝①〗角色存活,你回复1点体力并与其各摸一张牌。③当〖连枝①〗角色死亡后,你可以与一名其他角色各获得〖受责〗,且其获得与你拥有的等量枚“绞”标记(至少获得1枚)。',
|
||||
dclingfang:'凌芳',
|
||||
dclingfang_info:'锁定技。当其他角色使用黑色牌结算结束后,若你是此牌的目标,或你使用黑色牌结算结束后,若你不是此牌目标,你获得1枚“绞”。',
|
||||
dclingfang_info:'锁定技。准备阶段,或当其他角色使用黑色牌结算结束后,若你是此牌的目标,或你使用黑色牌结算结束后,若你不是此牌目标,你获得1枚“绞”。',
|
||||
dcfengying:'风影',
|
||||
dcfengying_info:'①一名角色的回合开始时,你记录弃牌堆中所有黑色基本牌或黑色普通锦囊牌的牌名。②每回合限一次。你可以将一张点数不大于“绞”数的手牌当做任意一张〖风影①〗记录中的牌使用。',
|
||||
dcfengying_info:'①一名角色的回合开始时,你记录弃牌堆中所有黑色基本牌或黑色普通锦囊牌的牌名。②每回合每种牌名各限一次。你可以将一张点数不大于“绞”数的手牌当做任意一张〖风影①〗记录中的牌使用。',
|
||||
dcshouze:'受责',
|
||||
dcshouze_info:'锁定技。结束阶段,若你有“绞”,你弃1枚“绞”,随机获得弃牌堆中的一张黑色牌,失去1点体力。',
|
||||
sunlang:'孙狼',
|
||||
|
@ -30855,7 +31234,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhangchu:'张楚',
|
||||
dcjizhong:'集众',
|
||||
dcjizhong_info:'出牌阶段限一次。你可以令一名其他角色摸两张牌,然后其选择一项:1.若其没有“信众”标记,其获得“信众”标记;2.弃置三张手牌。',
|
||||
dcrihui:'日慧',
|
||||
dcrihui:'日彗',
|
||||
dcrihui_info:'每回合限一次。当你使用普通锦囊牌或黑色基本牌结算结束后,若此牌的目标数为1且目标不为你,且其:没有“信众”,则所有有“信众”的角色依次视为对其使用一张与此牌牌名和属性相同的牌;有“信众”,则你可以获得其区域里的一张牌。',
|
||||
dcguangshi:'光噬',
|
||||
dcguangshi_info:'锁定技。准备阶段,若所有其他角色均有“信众”,你失去1点体力并摸两张牌。',
|
||||
|
@ -30999,6 +31378,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dcshushen_info:'当你回复1点体力后,你可以选择一名其他角色并选择一项:1.令其回复1点体力;2.你与其各摸一张牌。',
|
||||
dcshenzhi:'神智',
|
||||
dcshenzhi_info:'准备阶段,若你的手牌数大于体力值,你可以弃置一张手牌,然后回复1点体力。',
|
||||
dc_wuban:'吴班',
|
||||
dcyouzhan:'诱战',
|
||||
dcyouzhan_info:'锁定技。当其他角色于你的回合内失去牌后,你摸一张牌,且其获得如下效果:1.其于此回合下一次受到的伤害+1;2.结束阶段,若其于此回合未受到过伤害,其摸X张牌(X为其此回合失去过牌的次数)。',
|
||||
dc_duyu:'杜预',
|
||||
dcjianguo:'谏国',
|
||||
dcjianguo_info:'出牌阶段限一次。你可以选择一名角色并选择一项:1.令其摸一张牌,然后其弃置一半的手牌;2.令其弃置一张牌,然后其摸等同于手牌数一半的牌(均向下取整)。',
|
||||
dcdyqingshi:'倾势',
|
||||
dcdyqingshi_info:'当你于回合内使用【杀】或普通锦囊牌指定第一个目标后,若目标角色包括其他角色且此牌为你本回合使用的第X张牌,你可以对其中一名不为你的目标角色造成1点伤害(X为你的手牌数)。',
|
||||
|
||||
sp_whlw:"文和乱武",
|
||||
sp_zlzy:"逐鹿中原",
|
||||
|
|
|
@ -2170,6 +2170,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var num=0,numx=target.countCards('h',{name:'sha'}),targetx=target;
|
||||
for(var i=0; i<numx; i++){
|
||||
targetx=targetx.next;
|
||||
if(targetx==player) targetx=targetx.next;
|
||||
}
|
||||
var att1=get.attitude(player,target),att2=get.attitude(player,targetx);
|
||||
if(att1>0&&att2<0) num=0.25;
|
||||
|
|
|
@ -4091,7 +4091,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 0'
|
||||
var list=lib.inpile.filter(function(i){
|
||||
if(player.storage.shouxi.contains(i)) return false;
|
||||
var type=get.type(i);
|
||||
var type=get.type2(i);
|
||||
if(type=='basic'||type=='trick') return true;
|
||||
return false;
|
||||
});
|
||||
|
@ -4108,6 +4108,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
event.vcard=result.links;
|
||||
event.cardname=name;
|
||||
player.storage.shouxi.add(name);
|
||||
player.popup(name);
|
||||
game.log(player,'声明了','#y'+get.translation(name));
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
|
|
73
game/game.js
73
game/game.js
|
@ -3625,6 +3625,12 @@
|
|||
name:'显示分享扩展',
|
||||
init:true,
|
||||
unfrequent:true,
|
||||
},
|
||||
show_extensionimage:{
|
||||
name:'显示扩展武将图片',
|
||||
intro:'关闭扩展武将包仍加载扩展武将图片',
|
||||
init:true,
|
||||
unfrequent:true,
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -7099,6 +7105,10 @@
|
|||
else if(lib.character[name]){
|
||||
nameinfo=lib.character[name];
|
||||
}
|
||||
else if(lib.config.show_extensionimage){
|
||||
var pack=Object.keys(lib.characterPack).find(pack => Object.keys(lib.characterPack[pack]).contains(name));
|
||||
if(pack) nameinfo=lib.characterPack[pack][name];
|
||||
}
|
||||
else if(name.indexOf('::')!=-1){
|
||||
name=name.split('::');
|
||||
modeimage=name[0];
|
||||
|
@ -10634,6 +10644,7 @@
|
|||
},
|
||||
changeGroup:function(){
|
||||
'step 0'
|
||||
event.originGroup=player.group;
|
||||
if(!event.group) event.group=player.group;
|
||||
var group=event.group;
|
||||
player.getHistory('custom').push(event);
|
||||
|
@ -11608,7 +11619,7 @@
|
|||
if(subtype=='equip6'&&['equip3','equip4'].contains(event.pos)) return true;
|
||||
return false;
|
||||
});
|
||||
if(cards.length) player.discard(cards).delay=false;
|
||||
if(cards.length) player.loseToDiscardpile(cards).delay=false;
|
||||
game.log(player,'废除了',get.translation(event.pos),'栏');
|
||||
player.$disableEquip(event.pos);
|
||||
}
|
||||
|
@ -16299,6 +16310,7 @@
|
|||
game.log(player,'弃置了',cards);
|
||||
event.done=player.lose(cards,event.position,'visible');
|
||||
event.done.type='discard';
|
||||
if(event.discarder) event.done.discarder=event.discarder;
|
||||
"step 1"
|
||||
event.trigger('discard');
|
||||
},
|
||||
|
@ -23751,7 +23763,7 @@
|
|||
this.addSkill(skill,checkConflict,true,true);
|
||||
|
||||
if(!expire){
|
||||
expire='phaseAfter';
|
||||
expire=['phaseAfter','phaseBefore'];
|
||||
}
|
||||
this.tempSkills[skill]=expire;
|
||||
|
||||
|
@ -29144,6 +29156,19 @@
|
|||
content:function(){
|
||||
player.removeSkill('counttrigger');
|
||||
delete player.storage.counttrigger;
|
||||
},
|
||||
group:'counttrigger_2',
|
||||
subSkill:{
|
||||
2:{
|
||||
trigger:{global:'phaseBefore'},
|
||||
silent:true,
|
||||
charlotte:true,
|
||||
priority:100,
|
||||
content:function(){
|
||||
player.removeSkill('counttrigger');
|
||||
delete player.storage.counttrigger;
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
_recovercheck:{
|
||||
|
@ -47732,10 +47757,10 @@
|
|||
for(var i of game.connectPlayers){
|
||||
if(!i.nickname&&!i.classList.contains('unselectable2')) num++;
|
||||
}
|
||||
// if(num>=lib.configOL.number-1){
|
||||
// alert('至少要有两名玩家才能开始游戏!');
|
||||
// return;
|
||||
// }
|
||||
if(num>=lib.configOL.number-1){
|
||||
alert('至少要有两名玩家才能开始游戏!');
|
||||
return;
|
||||
}
|
||||
game.resume();
|
||||
}
|
||||
button.delete();
|
||||
|
@ -53370,17 +53395,23 @@
|
|||
threaten=info.ai.threaten(player,player);
|
||||
}
|
||||
}
|
||||
if(type=='in'){
|
||||
if(type.indexOf('in')!=-1){
|
||||
if(info.enable=='phaseUse') num+=0.5;
|
||||
if(info.trigger&&info.trigger.player){
|
||||
var list=Array.isArray(info.trigger.player)?info.trigger.player:[info.trigger.player];
|
||||
var add=false;
|
||||
for(var i of list){
|
||||
for(var j of lib.phaseName){
|
||||
if(i.indexOf[j]==0){
|
||||
num+=0.5;
|
||||
add=true;
|
||||
break;
|
||||
if(i.indexOf('phase')==0){
|
||||
num+=0.5;
|
||||
add=true;
|
||||
}
|
||||
else{
|
||||
for(var j of lib.phaseName){
|
||||
if(i.indexOf[j]==0){
|
||||
num+=0.5;
|
||||
add=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(add) break;
|
||||
|
@ -53393,12 +53424,22 @@
|
|||
num+=Math.sqrt(threaten)-1;
|
||||
}
|
||||
}
|
||||
else if(type=='out'){
|
||||
if(type.indexOf('out')!=-1){
|
||||
if(threaten<1){
|
||||
num=1/Math.sqrt(threaten);
|
||||
num*=1/Math.sqrt(threaten);
|
||||
}
|
||||
if(info.trigger){
|
||||
if(info.trigger.global){
|
||||
var list=Array.isArray(info.trigger.global)?info.trigger.global:[info.trigger.global];
|
||||
num+=Math.min(3,list.length)/10;
|
||||
for(var i of list){
|
||||
if(i.indexOf('lose')==0||i.indexOf('use')==0) num+=0.3;
|
||||
if(i.indexOf('cardsDiscard')==0) num+=0.4;
|
||||
}
|
||||
}
|
||||
if(info.trigger.target||(typeof info.trigger.player=='string'&&
|
||||
(info.trigger.player.indexOf('damage')==0||info.trigger.player.indexOf('lose')==0))) num+=0.1;
|
||||
}
|
||||
if(info.trigger&&(info.trigger.global||info.trigger.target||(typeof info.trigger.player=='string'&&
|
||||
(info.trigger.player.indexOf('damage')==0||info.trigger.player.indexOf('lose')==0)))) num+=0.1;
|
||||
if(info.ai){
|
||||
if(info.ai.maixie||info.ai.maixie_hp||info.ai.maixie_defend){
|
||||
num+=0.5;
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 63 KiB |
Binary file not shown.
Before Width: | Height: | Size: 59 KiB |
Binary file not shown.
Before Width: | Height: | Size: 24 KiB |
Binary file not shown.
Before Width: | Height: | Size: 66 KiB |
5334
layout/layout.css
5334
layout/layout.css
File diff suppressed because it is too large
Load Diff
6424
mode/asset.js
6424
mode/asset.js
File diff suppressed because it is too large
Load Diff
1087
mode/boss.js
1087
mode/boss.js
File diff suppressed because it is too large
Load Diff
|
@ -4093,7 +4093,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
}
|
||||
if(info.linked) target.classList.add('linked');
|
||||
if(info.linked) target.classList.add('linked'+(get.is.linked2(target)?'2':''));
|
||||
if(info.turnedover) target.classList.add('turnedover');
|
||||
if(info.position<_status.firstAct.brawlinfo.position) _status.firstAct=target;
|
||||
var hs=[];
|
||||
|
|
|
@ -362,6 +362,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
return Math.random();
|
||||
}).set('dialog',event.videoId);
|
||||
"step 5"
|
||||
game.broadcastAll('closeDialog',event.videoId);
|
||||
game.me.next.init(result.links[0]);
|
||||
_status.characterlist.remove(result.links[0]);
|
||||
game.addRecentCharacter(result.links[0]);
|
||||
|
|
|
@ -1,82 +0,0 @@
|
|||
window.noname_update={
|
||||
version:'1.9.110.9.3.2',
|
||||
update:'1.9.110.9.3.1',
|
||||
changeLog:[
|
||||
'曹安民技能修改',
|
||||
'国战技能预亮机制',
|
||||
'bug修复',
|
||||
],
|
||||
files:[
|
||||
//'card/extra.js',
|
||||
//'card/gujian.js',
|
||||
//'card/guozhan.js',
|
||||
//'card/gwent.js',
|
||||
//'card/huanlekapai.js',
|
||||
//'card/mtg.js',
|
||||
//'card/sp.js',
|
||||
//'card/standard.js',
|
||||
//'card/swd.js',
|
||||
//'card/yunchou.js',
|
||||
//'card/yingbian.js',
|
||||
//'card/zhenfa.js',
|
||||
//'card/zhulu.js',
|
||||
//'character/diy.js',
|
||||
//'character/extra.js',
|
||||
//'character/hearth.js',
|
||||
//'character/gujian.js',
|
||||
//'character/gwent.js',
|
||||
//'character/hearth.js',
|
||||
'character/mobile.js',
|
||||
//'character/mtg.js',
|
||||
//'character/offline.js',
|
||||
//'character/old.js',
|
||||
//'character/ow.js',
|
||||
//'character/rank.js',
|
||||
'character/refresh.js',
|
||||
'character/shenhua.js',
|
||||
'character/sp.js',
|
||||
'character/sp2.js',
|
||||
//'character/tw.js',
|
||||
'character/standard.js',
|
||||
//'character/swd.js',
|
||||
//'character/xianjian.js',
|
||||
'character/xinghuoliaoyuan.js',
|
||||
'character/yingbian.js',
|
||||
'character/yijiang.js',
|
||||
//'character/yxs.js',
|
||||
//'extension/boss/extension.js',
|
||||
//'layout/default/layout.css',
|
||||
//'layout/newlayout/global.css',
|
||||
//'layout/default/menu.css',
|
||||
//'layout/nova/layout.css',
|
||||
//'layout/mobile/equip.css',
|
||||
//'mode/boss.js',
|
||||
//'mode/brawl.js',
|
||||
//'mode/chess.js',
|
||||
//'mode/connect.js',
|
||||
//'mode/doudizhu.js',
|
||||
'mode/guozhan.js',
|
||||
//'mode/identity.js',
|
||||
//'mode/single.js',
|
||||
//'mode/stone.js',
|
||||
//'mode/tafang.js',
|
||||
//'mode/versus.js',
|
||||
'game/game.js',
|
||||
//'game/keyWords.js',
|
||||
//'game/NoSleep.js',
|
||||
//'game/config.js',
|
||||
//'game/package.js',
|
||||
//'game/asset.js',
|
||||
//'game/source.js',
|
||||
//'theme/style/hp/xinglass.css',
|
||||
//'theme/style/hp/xinround.css',
|
||||
//'theme/style/hp/image/xinglass1.png',
|
||||
//'theme/style/hp/image/xinglass2.png',
|
||||
//'theme/style/hp/image/xinglass3.png',
|
||||
//'theme/style/hp/image/xinglass4.png',
|
||||
//'theme/style/hp/image/xinround1.png',
|
||||
//'theme/style/hp/image/xinround2.png',
|
||||
//'theme/style/hp/image/xinround3.png',
|
||||
//'theme/style/hp/image/xinround4.png',
|
||||
]
|
||||
};
|
Loading…
Reference in New Issue