REFLECTION BLUE

This commit is contained in:
Spmario233 2020-07-31 10:16:01 +08:00 committed by GitHub
parent f940028758
commit 49a8d93d13
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 1513 additions and 59 deletions

View File

@ -653,6 +653,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return true;
},
check:function(button){
if(_status.event.getParent().type!='phase') return 1;
if(button.link.name=='du') return 10;
var player=_status.event.player;
if(player.getUseValue(button.link)>0) return get.order(button.link);
@ -660,7 +661,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
backup:function(links,player){
return {
prompt:'选择'+get.translation(links)+'的目标',
filterCard:function(){return false},
selectCard:-1,
viewAs:links[0],
@ -674,6 +674,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
}
},
prompt:function(links){
return '选择'+get.translation(links)+'的目标';
},
},
ai:{
order:function(item,player){

View File

@ -2021,7 +2021,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
if(typeof aiii=='number') return aiii;
}
if(Math.abs(get.attitude(_status.event.player,source))<3) return 0;
if(source.hasSkillTag('guanxing')&&(source!=player||!source.hasSkill('guanxing_fail'))) return 0;
if(source.hasSkillTag('nowuxie_judge')||source.hasSkillTag('guanxing')&&(source!=player||!source.hasSkill('guanxing_fail'))) return 0;
if(name!='lebu'&&name!='bingliang'){
if(source!=_status.event.player){
return 0;

View File

@ -859,7 +859,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
trigger:{target:'shaBefore'},
direct:true,
filter:function(event,player){
return !event.getParent().directHit.contains(player)&&player.hasCard('youdishenru');
return !event.getParent().directHit.contains(player)&&player.hasUsableCard('youdishenru');
},
content:function(){
event.youdiinfo={
@ -880,7 +880,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
if(!event.player.countCards('he')) return false;
if(!lib.filter.targetEnabled({name:'chenhuodajie'},player,event.player)) return false;
if(event._notrigger.contains(event.player)) return false;
return player.hasCard('chenhuodajie');
return player.hasUsableCard('chenhuodajie');
},
content:function(){
player.chooseToUse(get.prompt('chenhuodajie',trigger.player).replace(/发动/,'使用'),function(card,player){

View File

@ -57,6 +57,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']],
key_kamome:['female','key',3,['kamome_yangfan','kamome_huanmeng','kamome_jieban']],
key_nao:['female','key',3,['nao_duyin','nao_wanxin','nao_shouqing']],
ns_huangchengyan:['male','shu',3,['nslongyue','nszhenyin']],
ns_sunchensunjun:['male','wu',5,['nsxianhai','nsxingchu']],
ns_yuanxi:['male','qun',4,['nsshengyan','nsdaizhan']],
ns_caoshuang:['male','wei',4,['nsjiquan','nsfuwei']],
// diy_caocao:['male','wei',4,['xicai','diyjianxiong','hujia']],
// diy_hanlong:['male','wei',4,['siji','ciqiu']],
diy_feishi:['male','shu',3,['shuaiyan','moshou']],
@ -137,7 +142,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterSort:{
diy:{
diy_yijiang:["key_kud","key_misuzu","key_kamome","key_nao"],
diy_yijiang:["key_kud","key_misuzu","key_kamome","key_nao",
"ns_huangchengyan","ns_sunchensunjun","ns_yuanxi","ns_caoshuang"],
diy_tieba:["diy_wenyang","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_zhangwei"],
diy_default:["diy_feishi","diy_liuyan","diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji","diy_liufu","diy_xizhenxihong","diy_liuzan","diy_zaozhirenjun","diy_yangyi","diy_tianyu"],
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_kagari","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki"],
@ -201,6 +207,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_kamome:'#b仿生纱',
key_nao:'#b潮鸣',
ns_huangchengyan:'#g竹邀月',
ns_sunchensunjun:'#gVenusjeu',
ns_yuanxi:'#g食茸二十四',
ns_caoshuang:'#g荬庀芬兰',
diy_wenyang:'#g最粗的梦想XD',
ns_zuoci:'#bskystarwuwei',
ns_lvzhi:'#bskystarwuwei',
@ -502,7 +513,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name2:'诅咒',
content:'mark',
},
marktext:'',
marktext:'',
mod:{
maxHandcard:function(player,num){
return num+player.countMark('misuzu_hengzhou');
@ -4820,6 +4831,434 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
nslongyue:{
trigger:{global:'useCard'},
filter:function(event,player){
return get.type(event.card,'trick')=='trick'&&event.player.getHistory('useCard').indexOf(event)==0;
},
logTarget:'player',
check:function(event,player){
return get.attitude(player,event.player)>0;
},
content:function(){
trigger.player.draw();
},
ai:{
expose:0.2,
},
global:'nslongyue_ai',
},
nslongyue_ai:{
mod:{
aiOrder:function(player,card,num){
if(!player.getHistory('useCard').length&&get.type(card)=='trick'&&game.hasPlayer(function(current){
return current.hasSkill('nslongyue')&&get.attitude(player,current)>=0;
})) return num+6;
},
},
},
nszhenyin:{
trigger:{global:'judge'},
usable:1,
filter:function(event,player){
return _status.currentPhase&&_status.currentPhase.countCards('h')>0;
},
logTarget:function(){
return _status.currentPhase;
},
check:function(event,player){
var target=_status.currentPhase;
var judge=event.judge(event.player.judging[0]);
var max=0;
var hs=target.getCards('h',function(card){
var mod2=game.checkMod(card,target,'unchanged','cardEnabled2',target);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,target,'unchanged','cardRespondable',target);
if(mod!='unchanged') return mod;
return true;
});
for(var i of hs){
var num=event.judge(i)-judge;
if(num>max) max=num;
}
var att=get.attitude(player,target);
if(att>0) return max>0;
if(att<0) return max<=0;
return false;
},
content:function(){
"step 0"
if(!_status.currentPhase.countCards('h',function(card){
var player=_status.currentPhase;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
})){
event.finish();
return;
};
_status.currentPhase.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging[0])+',请打出一张手牌进行改判','h',true,function(card){
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
}).set('ai',function(card){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
var judging=_status.event.judging;
var result=trigger.judge(card)-trigger.judge(judging);
var attitude=get.attitude(player,trigger.player);
if(attitude==0||result==0) return 0;
if(attitude>0){
return result/Math.max(0.1,get.value(card));
}
else{
return -result/Math.max(0.1,get.value(card));
}
}).set('judging',trigger.player.judging[0]);
"step 1"
if(result.bool){
_status.currentPhase.respond(result.cards,'highlight').nopopup=true;
}
else{
event.finish();
}
"step 2"
if(result.bool){
if(trigger.player.judging[0].clone){
trigger.player.judging[0].clone.classList.remove('thrownhighlight');
game.broadcast(function(card){
if(card.clone){
card.clone.classList.remove('thrownhighlight');
}
},trigger.player.judging[0]);
game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone]));
}
game.cardsDiscard(trigger.player.judging[0]);
trigger.player.judging[0]=result.cards[0];
trigger.orderingCards.addArray(result.cards);
game.log(trigger.player,'的判定牌改为',result.cards[0]);
game.delay(2);
}
},
ai:{
rejudge:true,
tag:{
rejudge:1,
}
}
},
nsxianhai:{
trigger:{global:'damageSource'},
filter:function(event,player){
return event.source&&event.source!=player&&event.source.isAlive()&&event.source==_status.currentPhase&&
(event.source.getStat('damage')||0)>(player.getLastStat('damage')||0)&&
!player.hasSkill('nsxianhai_round');
},
check:function(event,player){
return player.maxHp>1&&get.attitude(player,event.source)<-4;
},
logTarget:'source',
content:function(){
'step 0'
player.addTempSkill('nsxianhai_round','roundStart');
player.loseMaxHp();
var list=[];
for(var i=1;i<6;i++){
if(!trigger.source.isDisabled(i)) list.add('equip'+((i==3||i==4)?6:i));
}
if(list.length){
player.chooseControl(list).set('prompt','选择废除'+get.translation(trigger.source)+'的一种装备栏').set('ai',function(){
var target=_status.event.getTrigger().source;
if(list.contains('equip6')&&target.getEquip('equip3')&&target.getEquip('equip4')) return 'equip6';
if(list.contains('equip2')&&target.getEquip(2)&&get.value(target.getEquip(2),target)>0) return 'equip2';
if(list.contains('equip5')&&target.getEquip(5)&&get.value(target.getEquip(5),target)>0) return 'equip5';
return 0;
});
}
else event.goto(2);
'step 1'
if(result.control!='equip6') trigger.source.disableEquip(result.control);
else{
trigger.source.disableEquip(3);
trigger.source.disableEquip(4);
}
'step 2'
if(player.awakenedSkills.contains('nsxingchu')){
var next=game.createEvent('nsxianhai_clear');
event.next.remove(next);
event.getParent('phase').after.push(next);
next.player=player;
next.setContent(function(){
player.restoreSkill('nsxingchu');
});
}
'step 3'
if(trigger.source){
var hs=trigger.source.getCards('h','shan');
if(hs.length) trigger.source.discard(hs);
}
},
},
nsxianhai_round:{},
nsxingchu:{
trigger:{global:'die'},
forceDie:true,
filter:function(event,player){
return player==event.player||player==event.source;
},
limited:true,
skillAnimation:true,
animationColor:'wood',
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('nsxingchu')).set('ai',function(target){
return get.attitude(_status.event.player,target);
}).set('forceDie',true);
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('nsxingchu',target);
player.awakenSkill('nsxingchu');
var he=trigger.player.getCards('he');
if(he.length) target.gain(he,trigger.player,'giveAuto');
target.gainMaxHp();
}
},
},
nsshengyan:{
trigger:{player:'judgeEnd'},
forced:true,
filter:function(event,player){
return _status.currentPhase&&_status.currentPhase.isAlive()&&(!player.storage.nsshengyan2||!player.storage.nsshengyan2.contains(event.result.suit));
},
logTarget:function(){
return _status.currentPhase;
},
content:function(){
player.addTempSkill('nsshengyan2');
if(!player.storage.nsshengyan2) player.storage.nsshengyan2=[];
_status.currentPhase.addTempSkill('nsshengyan3');
player.storage.nsshengyan2.add(trigger.result.suit);
_status.currentPhase.addMark('nsshengyan3',2,false);
},
},
nsshengyan2:{onremove:true},
nsshengyan3:{
mod:{
maxHandcard:function(player,num){
return num+player.countMark('nsshengyan3');
},
},
onremove:true,
intro:{
content:'本回合手牌上限+#',
},
marktext:'筵',
},
nsdaizhan:{
trigger:{player:'phaseZhunbeiBegin'},
direct:true,
filter:function(event,player){
return (!player.hasJudge('lebu')||!player.hasJudge('bingliang'))&&player.countCards('he',function(card){
if(_status.connectMode) return true;
return get.type(card,'trick')!='trick';
});
},
content:function(){
var next=player.chooseToUse();
next.set('norestore',true);
next.set('_backupevent','nsdaizhanx');
next.backup('nsdaizhanx');
},
},
nsdaizhanx:{
chooseButton:{
dialog:function(){
var list=['lebu','bingliang'];
var list2=[];
for(var i of list){
list2.push(['延时锦囊','',i]);
}
return ui.create.dialog(get.prompt('nsdaizhan'),[list2,'vcard'],'hidden');
},
filter:function(button,player){
return !player.hasJudge(button.link[2])
},
check:function(button){
if(button.link[2]=='lebu') return 0;
var player=_status.event.player;
var delta=player.getHandcardLimit()+player.countCards('j')*2+2-player.hp;
if(delta>=2) return 1+Math.random();
if(delta>=0&&!player.countCards('h',function(card){
return player.hasValueTarget(card);
})) return Math.random();
return 0;
},
backup:function(links,player){
return {
filterCard:function(card,player){
return get.type(card,'trick')!='trick'&&player.canAddJudge({name:links[0][2],cards:[card]});
},
filterTarget:function(card,player,target){
return player==target;
},
check:function(card){
return 8-get.value(card);
},
viewAs:{name:links[0][2]},
position:'he',
precontent:function(){
player.addTempSkill('nsdaizhany');
event.result.skill='nsdaizhan';
},
ai:{
result:{
target:1,
},
},
};
},
prompt:function(links){
return '将一张牌当做'+get.translation(links[0][2])+'对自己使用';
},
},
},
nsdaizhany:{
trigger:{player:'phaseEnd'},
forced:true,
popup:false,
filter:function(event,player){
return player.countCards('h')<player.getHandcardLimit();
},
content:function(){
player.drawTo(player.getHandcardLimit());
},
ai:{
nowuxie_judge:true,
},
},
nsjiquan:{
trigger:{
global:['damageEnd','damageSource'],
},
direct:true,
filter:function(event,player,name){
var target=(name=='damageSource'?event.source:event.player);
return target&&target!=player&&get.distance(player,target)<=1&&target.countCards('hej')>0;
},
content:function(){
'step 0'
var target=(event.triggername=='damageSource'?trigger.source:trigger.player);
event.target=target;
player.choosePlayerCard(target,'hej',player.storage.nsfuwei?true:1).set('ai',function(button){
var val=get.buttonValue(button);
if(get.attitude(_status.event.player,get.owner(button.link))>0) return -val;
return val;
});
'step 1'
if(result.bool){
player.logSkill('nsjiquan',target);
target.lose(result.cards,ui.special,'toStorage');
player.markAuto('nsjiquan_mark',result.cards);
target.$give(result.cards,player,false);
}
else event.finish();
'step 2'
game.delayx();
},
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha') return num+player.getStorage('nsjiquan_mark').length;
},
},
},
nsjiquan_mark:{
intro:{
content:'cards',
onunmark:'throw',
},
marktext:'威',
},
nsfuwei:{
trigger:{player:'phaseJieshuBegin'},
forced:true,
unique:true,
juexingji:true,
skillAnimation:true,
filter:function(event,player){
return player.getStorage('nsjiquan_mark').length>4;
},
content:function(){
player.awakenSkill('nsfuwei');
player.storage.nsfuwei=true;
player.addSkill('nsdiemou');
player.addSkill('nszhihuang');
player.gainMaxHp(2);
},
derivation:['nsdiemou','nszhihuang'],
},
nsdiemou:{
trigger:{player:'phaseUseBegin'},
forced:true,
filter:function(event,player){
return player.getStorage('nsjiquan_mark').length>game.players.length;
},
content:function(){
var num=player.getStorage('nsjiquan_mark').length;
player.draw(num);
player.loseMaxHp();
player.unmarkSkill('nsjiquan_mark');
if(num>4) player.turnOver();
},
},
nszhihuang:{
group:'nszhihuang_damage',
trigger:{global:'useCard'},
usable:1,
filter:function(event,player){
return event.player==get.zhu(player)&&player.getStorage('nsjiquan_mark').length>0&&event.cards&&event.cards.filterInD().length>0;
},
prompt2:function(event){
return '移去一张“威”并获得'+get.translation(event.cards.filterInD());
},
check:function(event,player){
if(['equip','delay'].contains(get.type(event.card))) return get.attitude(player,event.player)<0;
return get.value(event.cards.filterInD()>0);
},
logTarget:'player',
content:function(){
'step 0'
var cards=player.getStorage('nsjiquan_mark');
if(cards.length==1) event._result={
bool:true,
links:cards.slice(0),
}
else player.chooseButton(['选择移去一张“威”',cards],true);
'step 1'
player.unmarkAuto('nsjiquan_mark',result.links);
game.cardsDiscard(result.links);
player.gain(trigger.cards.filterInD(),'gain2','log');
},
},
nszhihuang_damage:{
trigger:{source:'damageBegin1'},
forced:true,
filter:function(event,player){
var zhu=get.zhu(player);
return zhu&&player.countCards('h')>zhu.countCards('h')&&event.getParent().type=='card';
},
content:function(){
trigger.num++;
},
},
yjxuepin:{
enable:'phaseUse',
usable:1,
@ -9864,6 +10303,35 @@ game.import('character',function(lib,game,ui,get,ai,_status){
nao_shouqing3:'守情',
nao_shouqing_info:'其他角色的出牌阶段内可以对你使用【桃】。若如此做,其摸一张牌且本局游戏内的手牌上限+1。',
ns_huangchengyan:'黄承彦',
nslongyue:'龙岳',
nslongyue_info:'当一名角色使用锦囊牌时,若此牌是其本回合内使用的第一张牌,则你可令其摸一张牌。',
nszhenyin:'阵引',
nszhenyin_info:'每回合限一次。一名角色的判定牌生效前,你可令当前回合角色打出一张手牌代替之。',
ns_sunchensunjun:'孙綝孙峻',
nsxianhai:'险害',
nsxianhai_info:'每轮限一次当一名其他角色于回合内造成伤害后若其此回合内造成过的伤害总和大于你上一回合内造成的伤害总和则你可以减1点体力上限令其废除一种装备栏并弃置手牌中所有的【闪】。若〖兴黜〗已发动此回合结束后视为该限定技未发动过。',
nsxingchu:'兴黜',
nsxingchu_info:'限定技,当你杀死一名角色/你死亡时,你可以令一名角色获得其/你的所有牌并增加1点体力上限。',
ns_yuanxi:'袁熙',
nsshengyan:'盛筵',
nsshengyan3:'盛筵',
nsshengyan_info:'锁定技,你的判定牌生效后,若结果花色与你本回合内其他判定结果的花色均不同,则你令当前回合角色本回合的手牌上限+2。',
nsdaizhan:'怠战',
nsdaizhany:'怠战',
nsdaizhan_info:'准备阶段,你可以将一张非锦囊牌当做【兵粮寸断】或【乐不思蜀】对自己使用。若如此做,回合结束时,你将手牌摸至手牌上限。',
ns_caoshuang:'曹爽',
nsjiquan:'集权',
nsjiquan_mark:'集权',
nsjiquan_info:'与你距离1以内的其他角色造成或受到伤害后你可以将其区域内的一张牌置于你的武将牌上称为“威”。你使用【杀】的次数上限+XX为“威”数。',
nsfuwei:'附位',
nsfuwei_info:'觉醒技结束阶段开始时若“威”数大于4则你加2点体力上限获得〖喋谋〗和〖制皇〗并将〖集权〗改为锁定技。',
nsdiemou:'喋谋',
nsdiemou_info:'锁定技出牌阶段开始时若“威”大于全场角色数你移去所有“威”减一点体力上限并摸X张牌。若X大于4你翻面。X为移去的“威”数',
nszhihuang:'制皇',
nszhihuang_damage:'制皇',
nszhihuang_info:'每回合限一次,当主公使用牌时,你可以移去一张“威”,然后获得此牌。锁定技,若你的手牌数大于主公,则你使用牌造成的伤害+1。',
yj_caoang:'SP曹昂',
yjxuepin:'血拼',
yjxuepin_info:'出牌阶段限一次你可以选择攻击范围内的一名角色并失去1点体力。你弃置其两张牌。若这两张牌类型相同你回复1点体力。',

View File

@ -2884,11 +2884,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
event.list1=[];
event.list2=[];
if(target.countCards('h')>0){
var chooseButton=player.chooseButton(4,'hidden',['你的手牌',player.getCards('h'),get.translation(target.name)+'的手牌',target.getCards('h'),'hidden']);
if(player.countCards('h')>0){
var chooseButton=player.chooseButton(4,['你的手牌',player.getCards('h'),get.translation(target.name)+'的手牌',target.getCards('h')]);
}
else{
var chooseButton=player.chooseButton(4,'hidden',['你的手牌',player.getCards('h'),'hidden']);
var chooseButton=player.chooseButton(4,[get.translation(target.name)+'的手牌',target.getCards('h')]);
}
chooseButton.set('target',target);
chooseButton.set('ai',function(button){

View File

@ -13,8 +13,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
yj_zhanghe:['male','qun',4,['zhilve']],
yj_xuhuang:['male','qun',4,['xhzhiyan']],
yj_zhangliao:['male','qun',4,['weifeng']],
yj_zhanghe:['male','qun',4,['xinzhilve']],
yj_xuhuang:['male','qun',4,['xinxhzhiyan']],
yj_ganning:['male','qun',4,['gnjinfan','gnsheque']],
re_sunjian:['male','wu',4,['gzyinghun','repolu']],
zhengxuan:['male','qun',3,['zhengjing']],
dengzhi:['male','shu',3,['jimeng','shuaiyan']],
@ -1664,7 +1666,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
zhongzuo:{
audio:2,
trigger:{global:'phaseJieshuBegin'},
trigger:{global:'phaseEnd'},
direct:true,
filter:function(event,player){
return player.getHistory('damage').length>0||player.getHistory('sourceDamage').length>0;
@ -4458,6 +4460,617 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
},
xinzhilve:{
enable:'phaseUse',
usable:1,
chooseButton:{
dialog:function(event,player){
var list=[
'移动场上的一张牌',
'摸一张牌并视为使用一张【杀】',
];
var choiceList=ui.create.dialog('知略失去1点体力并...','forcebutton','hidden');
for(var i=0;i<list.length;i++){
var str='<div class="popup text" style="width:calc(100% - 10px);display:inline-block">';
var bool=lib.skill.xinzhilve.chooseButton.filter({link:i},player);
if(i==0&&!bool) str+='<div style="opacity:0.5">';
str+=list[i];
if(i==0&&!bool) str+='</div>';
str+='</div>';
var next=choiceList.add(str);
next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
next.firstChild.link=i;
for(var j in lib.element.button){
next[j]=lib.element.button[i];
}
choiceList.buttons.add(next.firstChild);
}
return choiceList;
},
filter:function(button,player){
if(button.link==0) return player.canMoveCard();
return player.hasUseTarget({name:'sha',isCard:true},false);
},
check:function(button){
return button.link;
},
backup:function(links){
return lib.skill['xinzhilve_'+['move','use'][links[0]]];
},
prompt:function(){return '请选择【杀】的目标'},
},
ai:{
order:function(item,player){
return get.order({name:'sha'})+0.1;
},
result:{
player:function(player){
if(player.hp>2&&player.hasValueTarget({name:'sha'})) return 1;
return 0;
},
},
},
},
xinzhilve_move:{
filterCard:function(){return false},
selectCard:-1,
delay:false,
content:function(){
'step 0'
event.forceDie=true;
if(!player.canMoveCard(null,event.nojudge)){
event.finish();
return;
}
var next=player.chooseTarget(2,function(card,player,target){
if(ui.selected.targets.length){
var from=ui.selected.targets[0];
var js=from.getCards('j');
for(var i=0;i<js.length;i++){
if(_status.event.nojudge) break;
if(target.canAddJudge(js[i])) return true;
}
if(target.isMin()) return false;
var es=from.getCards('e');
for(var i=0;i<es.length;i++){
if(target.isEmpty(get.subtype(es[i]))) return true;
}
return false;
}
else{
var range='ej';
if(_status.event.nojudge) range='e';
return target.countCards(range)>0;
}
});
next.set('nojudge',event.nojudge||false);
next.set('ai',function(target){
var player=_status.event.player;
var att=get.attitude(player,target);
var sgnatt=get.sgn(att);
if(ui.selected.targets.length==0){
if(att>0){
if(!_status.event.nojudge&&target.countCards('j',function(card){
return game.hasPlayer(function(current){
return current.canAddJudge(card)&&get.attitude(player,current)<0;
})
})) return 14;
if(target.countCards('e',function(card){
return get.value(card,target)<0&&game.hasPlayer(function(current){
return current!=target&&get.attitude(player,current)<0&&current.isEmpty(get.subtype(card))
});
})>0) return 9;
}
else if(att<0){
if(game.hasPlayer(function(current){
if(current!=target&&get.attitude(player,current)>0){
var es=target.getCards('e');
for(var i=0;i<es.length;i++){
if(get.value(es[i],target)>0&&current.isEmpty(get.subtype(es[i]))&&get.value(es[i],current)>0) return true;
}
}
})){
return -att;
}
}
return 0;
}
var es=ui.selected.targets[0].getCards('e');
var i;
var att2=get.sgn(get.attitude(player,ui.selected.targets[0]));
for(i=0;i<es.length;i++){
if(sgnatt!=0&&att2!=0&&
get.sgn(get.value(es[i],ui.selected.targets[0]))==-att2&&
get.sgn(get.value(es[i],target))==sgnatt&&
target.isEmpty(get.subtype(es[i]))){
return Math.abs(att);
}
}
if(i==es.length&&(_status.event.nojudge||!ui.selected.targets[0].countCards('j',function(card){
return target.canAddJudge(card);
}))){
return 0;
}
return -att*get.attitude(player,ui.selected.targets[0]);
});
next.set('multitarget',true);
next.set('targetprompt',_status.event.targetprompt||['被移走','移动目标']);
next.set('prompt',event.prompt||'移动场上的一张牌');
if(event.prompt2) next.set('prompt2',event.prompt2);
if(event.forced) next.set('forced',true);
'step 1'
event.result=result;
if(result.bool){
player.line2(result.targets,'green');
event.targets=result.targets;
}
else{
event.finish();
}
'step 2'
game.delay();
'step 3'
if(targets.length==2){
player.choosePlayerCard('ej',true,function(button){
var player=_status.event.player;
var targets0=_status.event.targets0;
var targets1=_status.event.targets1;
if(get.attitude(player,targets0)>0&&get.attitude(player,targets1)<0){
if(get.position(button.link)=='j') return 12;
if(get.value(button.link,targets0)<0) return 10;
return 0;
}
else{
if(get.position(button.link)=='j') return -10;
return get.equipValue(button.link);
}
},targets[0]).set('nojudge',event.nojudge||false).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){
var targets1=_status.event.targets1;
if(get.position(button.link)=='j'){
if(_status.event.nojudge) return false;
return targets1.canAddJudge(button.link);
}
else{
return targets1.isEmpty(get.subtype(button.link));
}
});
}
else{
event.finish();
}
'step 4'
if(result.bool&&result.links.length){
player.loseHp();
}
'step 5'
if(result.bool&&result.links.length){
var link=result.links[0];
if(get.position(link)=='e'){
event.targets[1].equip(link);
}
else if(link.viewAs){
event.targets[1].addJudge({name:link.viewAs},[link]);
}
else{
event.targets[1].addJudge(link);
}
event.targets[0].$give(link,event.targets[1])
event.result.card=link;
event.result.position=get.position(link);
game.delay();
player.addTempSkill('xinzhilve_mark');
player.addMark('xinzhilve_mark',1,false);
}
},
},
xinzhilve_use:{
filterCard:function(){return false},
selectCard:-1,
filterTarget:function(card,player,target){
return player.canUse({name:'sha',isCard:true},target,false);
},
content:function(){
player.loseHp();
player.draw();
player.useCard({name:'sha',isCard:true},false,target).forceDie=true;
player.addTempSkill('xinzhilve_mark');
player.addMark('xinzhilve_mark',1,false);
},
ai:{
result:{
target:function(player,target){
return get.effect(target,{name:'sha'},player,target);
},
},
},
},
xinzhilve_mark:{
intro:{content:'本回合手牌上限+#'},
onunmark:true,
charlotte:true,
mod:{
maxHandcard:function(player,num){
return num+player.countMark('xinzhilve_mark');
},
},
},
xinxhzhiyan:{
enable:'phaseUse',
filter:function(event,player){
return player.countCards('h')!=player.maxHp&&!player.hasSkill('xinxhzhiyan_'+(player.countCards('h')>player.maxHp));
},
filterCard:true,
selectCard:function(){
var player=_status.event.player;
var num=Math.max(0,player.countCards('h')-player.maxHp);
return [num,num];
},
filterTarget:lib.filter.notMe,
selectTarget:function(){
if(ui.selected.cards.length) return [1,1];
return [0,0];
},
check:function(card){
var player=_status.event.player;
if(player.getUseValue(card)<=0&&game.hasPlayer(function(current){
return current!=player&&get.value(card,current)*get.attitude(player,current)>0;
})) return 1;
return 0;
},
delay:false,
discard:false,
lose:false,
content:function(){
var bool=(player.countCards('h')>player.maxHp);
player.addTempSkill('xinxhzhiyan_'+bool,'phaseUseEnd');
if(!bool){
player.draw(player.maxHp-player.countCards('h'));
}
else{
target.gain(cards,player,'giveAuto');
}
},
ai:{
order:function(obj,player){
if(player.countCards('h')>player.maxHp) return 10;
return 0.5;
},
result:{
player:1,
},
},
},
xinxhzhiyan_true:{},
xinxhzhiyan_false:{
mod:{
playerEnabled:function(card,player,target){
if(player!=target&&(!get.info(card)||!get.info(card).singleCard||!ui.selected.targets.length)) return false;
},
},
mark:true,
intro:{
content:'不能对其他角色使用牌',
},
},
weifeng:{
audio:2,
trigger:{player:'useCardAfter'},
forced:true,
filter:function(event,player){
if(!event.targets||!event.targets.filter(function(target){
return target!=player&&!target.storage.weifeng2;
}).length) return false;
var evt=event.getParent('phaseUse');
if(!evt||evt.player!=player) return false;
if(!get.tag(event.card,'damage')) return false;
if(!['basic','trick'].contains(get.type(event.card))) return false;
return player.getHistory('useCard',function(ev){
return ev.getParent('phaseUse')==evt&&get.tag(ev.card,'damage')&&['basic','trick'].contains(get.type(ev.card));
}).indexOf(event)==0;
},
content:function(){
'step 0'
player.chooseTarget(true,'威风:请选择一个目标,令其获得一个【惧('+get.translation(trigger.card.name)+')】标记',function(card,player,target){
return player!=target&&!target.storage.weifeng2&&_status.event.getTrigger().targets.contains(target);
}).set('ai',function(target){
return -get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
var target=result.targets[0];
target.storage.weifeng2=trigger.card.name;
player.line(target,'green');
game.log(target,'获得了一个','#g【惧('+get.translation(trigger.card.name)+')】','标记')
target.markSkill('weifeng2');
player.addSkill('weifeng3');
}
},
},
weifeng2:{
intro:{
content:'当前“惧”标记名称:$',
onunmark:function(storage,player){
game.log(player,'移去了一个','#g【惧('+get.translation(storage)+')】','标记')
delete player.storage.weifeng2;
},
},
marktext:'惧',
},
weifeng3:{
trigger:{
global:'damageBegin3',
player:['phaseZhunbeiBegin','dieBegin'],
},
forced:true,
popup:false,
filter:function(event,player){
if(event.name!='damage') return true;
return event.player!=player&&typeof event.player.storage.weifeng2=='string';
},
content:function(){
if(trigger.name=='damage'){
player.logSkill('weifeng',trigger.player);
if(trigger.card&&trigger.card.name==trigger.player.storage.weifeng2) trigger.num++;
else if(trigger.player.countGainableCards(player,'he')>0) player.gainPlayerCard(trigger.player,'he',true);
trigger.player.unmarkSkill('weifeng2');
}
else{
game.countPlayer(function(current){
if(current.storage.weifeng2) current.unmarkSkill('weifeng2');
});
player.removeSkill('weifeng3');
}
},
},
gnjinfan:{
trigger:{player:'phaseDiscardBegin'},
direct:true,
filter:function(event,player){
var list=[];
player.getStorage('gnjinfan').filter(function(card){
list.add(get.suit(card));
});
if(list.length>=lib.suit.length) return false;
return player.countCards('h',function(card){
return _status.connectMode||!list.contains(get.suit(card));
})>0;
},
content:function(){
'step 0'
player.chooseCard('h',get.prompt('gnjinfan'),'将任意张手牌当做“铃”置于武将牌上',[1,function(){
var list=[];
var list2=[];
player.getStorage('gnjinfan').filter(function(card){
list.add(get.suit(card));
});
player.getCards('h',function(card){
list2.add(get.suit(card));
});
list2.removeArray(list);
return list2.length;
}()],function(card,player){
var list=player.getStorage('gnjinfan').concat(ui.selected.cards);
return list.filter(function(cardx){
return get.suit(card)==get.suit(cardx);
}).length==0;
}).set('ai',function(card){
var player=_status.event.player;
if(player.hasUseTarget(card)&&!player.hasValueTarget(card)) return 0;
return 1+Math.random();
}).set('complexCard',true);
'step 1'
if(result.bool){
player.logSkill('gnjinfan');
player.markAuto('gnjinfan',result.cards);
player.lose(result.cards,'toStorage',ui.special,'visible');
game.log(player,'将',result.cards,'放到了武将牌上');
}
},
group:['gnjinfan3','gnjinfan4','gnjinfan6','gnjinfan7'],
marktext:'铃',
intro:{
content:'cards',
},
},
gnjinfan3:{
trigger:{player:'chooseToRespondBegin'},
filter:function(event,player){
if(event.responded) return false;
var gnjinfan=player.getStorage('gnjinfan');
if(!gnjinfan) return false;
for(var i=0;i<gnjinfan.length;i++){
if(event.filterCard(gnjinfan[i],player,event)&&lib.filter.cardRespondable(gnjinfan[i],player,event)) return true;
}
return false;
},
direct:true,
content:function(){
"step 0"
player.chooseButton([get.prompt('gnjinfan'),player.getStorage('gnjinfan')]).set('filterButton',function(button){
var evt=_status.event.getTrigger();
if(evt&&evt.filterCard){
return evt.filterCard(button.link,_status.event.player,evt)&&lib.filter.cardRespondable(button.link,_status.event.player,evt);
}
return true;
}).set('ai',function(button){
var evt=_status.event.getTrigger();
if(evt&&evt.ai){
var tmp=_status.event;
_status.event=evt;
var result=evt.ai(button.link,_status.event.player,evt);
_status.event=tmp;
return result;
}
return 1;
});
"step 1"
if(result.bool){
trigger.untrigger();
trigger.responded=true;
trigger.result={
bool:true,
card:result.links[0],
cards:result.links.slice(0),
skill:'gnjinfan3',
}
player.unmarkAuto('gnjinfan',result.links);
}
},
ai:{
order:4,
useful:-1,
value:-1
}
},
gnjinfan4:{
enable:'chooseToUse',
filter:function(event,player){
var gnjinfan=player.getStorage('gnjinfan');
if(!gnjinfan) return false;
for(var i=0;i<gnjinfan.length;i++){
if(event.filterCard(gnjinfan[i],player,event)) return true;
}
return false;
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('锦帆',player.getStorage('gnjinfan'),'hidden');
},
filter:function(button,player){
var evt=_status.event.getParent();
if(evt&&evt.filterCard){
return evt.filterCard(button.link,player,evt);
}
return true;
},
check:function(button){
if(_status.event.getParent().type!='phase') return 1;
if(button.link.name=='du') return 10;
var player=_status.event.player;
if(player.getUseValue(button.link)>0) return get.order(button.link);
return -1;
},
backup:function(links,player){
return {
filterCard:function(){return false},
selectCard:-1,
viewAs:links[0],
onuse:function(result,player){
var gnjinfan=player.getStorage('gnjinfan');
if(gnjinfan){
player.unmarkAuto('gnjinfan',[result.card]);
}
}
}
},
prompt:function(links){
return '选择'+get.translation(links)+'的目标';
},
},
ai:{
order:function(item,player){
var event=_status.event;
if(event.type!='phase') return 4;
if(!player) return -1;
var gnjinfan=player.getStorage('gnjinfan');
if(!gnjinfan) return -1;
var order=0;
for(var i=0;i<gnjinfan.length;i++){
if(player.getUseValue(gnjinfan[i])>0){
var order2=get.order(gnjinfan[i]);
if(order2>order) order=order2
}
}
return order+0.1;
},
result:{
player:function(player){
if(_status.event.dying) return get.attitude(player,_status.event.dying);
return 1;
}
},
useful:-1,
value:-1
}
},
gnjinfan6:{
trigger:{global:'cardsGotoOrderingAfter'},
forced:true,
popup:false,
filter:function(event,player){
var evt=event.getParent();
return evt&&evt.player==player&&evt.skill&&evt.skill.indexOf('gnjinfan')==0;
},
content:function(){
var suit=get.suit(trigger.cards[0]);
var card=get.cardPile2(function(cardx){
return get.suit(cardx)==suit;
});
if(card) player.gain(card,'gain2','log');
},
},
gnjinfan7:{
filter:function(){return false},
hiddenCard:function(player,name){
var gnjinfan=player.getStorage('gnjinfan');
if(!gnjinfan) return false;
for(var i=0;i<gnjinfan.length;i++){
if(gnjinfan[i].name==name) return true;
}
return false;
},
ai:{
save:true,
respondSha:true,
respondShan:true,
skillTagFilter:function(player,tag){
var gnjinfan=player.getStorage('gnjinfan');
for(var i=0;i<gnjinfan.length;i++){
switch(tag){
case 'respondSha':if(gnjinfan[i].name=='sha') return true;break;
case 'respondShan':if(gnjinfan[i].name=='shan') return true;break;
case 'save':{
if(gnjinfan[i].name=='tao'||gnjinfan[i].name=='spell_zhiliaoshui') return true;
if(player==_status.event.dying){
if(gnjinfan[i].name=='jiu'||gnjinfan[i].name=='tianxianjiu') return true;
}
break;
}
}
}
return false;
},
}
},
gnsheque:{
trigger:{global:'phaseZhunbeiBegin'},
direct:true,
filter:function(event,player){
return event.player.isAlive()&event.player.countCards('e')&&
lib.filter.targetEnabled({name:'sha'},player,event.player)&&(player.hasSha()||_status.connectMode&&player.countCards('h')>0);
},
content:function(){
player.chooseToUse(function(card,player,event){
if(get.name(card)!='sha') return false;
return lib.filter.filterCard.apply(this,arguments);
},'射却:是否对'+get.translation(trigger.player)+'使用一张杀?').set('logSkill','gnsheque').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',trigger.player).set('oncard',function(card){
card.gnsheque_tag=true;
});
},
ai:{
unequip:true,
unequip_ai:true,
skillTagFilter:function(player,tag,arg){
if(tag=='unequip_ai'){
if(_status.event.getParent().name!='gnsheque') return false;
}
else if(!arg||!arg.card||!arg.card.gnsheque_tag) return false;
},
},
},
},
translate:{
"re_sp_zhugeliang":"手杀卧龙",
@ -4583,7 +5196,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhiyi:'执义',
zhiyi_info:'锁定技当你于一回合内使用或打出第一张基本牌时你选择一项1.摸一张牌。2.于此牌A若此牌是因响应牌B而使用或打出的则改为牌B的使用或打出流程结算完成后视为使用一张与此牌名称和属性相同的卡牌。',
zhongzuo:'忠佐',
zhongzuo_info:'一名角色的结束阶段开始时,若你于此回合内造成或受到过伤害,则你可以令一名角色摸两张牌。若该角色已受伤,则你摸一张牌。',
zhongzuo_info:'一名角色的回合结束时,若你于此回合内造成或受到过伤害,则你可以令一名角色摸两张牌。若该角色已受伤,则你摸一张牌。',
wanlan:'挽澜',
wanlan_info:'限定技当一名角色进入濒死状态时你可以弃置所有手牌并令其回复体力至1点然后对当前回合角色造成1点伤害。',
re_jikang:"手杀嵇康",
@ -4728,14 +5341,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhengjing2:'整经',
mobile_yijiang:'武将设计征集大赛',
yj_zhanghe:'SP张郃',
yj_zhangliao:'SP张辽',
yj_xuhuang:'SP徐晃',
yj_ganning:'SP甘宁',
yj_zhanghe:'张郃',
yj_zhangliao:'张辽',
yj_xuhuang:'徐晃',
yj_ganning:'甘宁',
xhzhiyan:'治严',
xhzhiyan_info:'出牌阶段,若你的手牌数不等于体力上限,则你可以将手牌摸至/弃至手牌上限,然后本回合不能对其他角色使用牌/可以将弃置的一张牌交给一名其他角色。',
zhilve:'知略',
zhilve_info:'锁定技准备阶段你选择一项1.移动场上装备区的一张牌并失去1点体力。2.移动场上判定区的一张牌并令本回合手牌上限-1。3.本回合摸牌阶段多摸一张牌且使用的第一张【杀】无距离限制且不计入次数限制。',
xinzhilve:'知略',
xinzhilve_backup:'知略',
xinzhilve_mark:'知略',
xinzhilve_info:'出牌阶段限一次你可以失去1点体力并选择一项1.移动场上的一张牌2.视为使用一张无距离限制且不计入次数限制的【杀】并摸一张牌。然后你本回合的手牌上限+1。',
xinxhzhiyan:'治严',
xinxhzhiyan_false:'治严',
xinxhzhiyan_info:'出牌阶段每项各限一次若你的手牌数大于体力上限则你可以将X张手牌交给一名其他角色小于体力上限则你可以摸X张牌且本阶段内不能再对其他角色使用牌。X为你的手牌数与体力上限之差的绝对值',
weifeng:'威风',
weifeng2:'威风',
weifeng3:'威风',
weifeng_info:'锁定技,当你于出牌阶段内使用第一张伤害性基本牌或普通锦囊牌后,你令此牌的一名没有“惧”的其他目标角色获得一枚名称为此牌牌名的“惧”。有“惧”的角色受到伤害时,其移去“惧”,然后若造成伤害的牌名称和“惧”:相同,此伤害+1不同你获得该角色的一张牌。准备阶段开始时或你死亡时你移去场上的所有“惧”。',
gnjinfan:'锦帆',
gnjinfan3:'锦帆',
gnjinfan4:'锦帆',
gnjinfan6:'锦帆',
gnjinfan7:'锦帆',
gnjinfan4_backup:'锦帆',
gnjinfan_info:'弃牌阶段开始时,你可将任意张手牌置于武将牌上,称为“铃”(每种花色的“铃”限一张)。当你需要使用或打出一张手牌时,你可以使用或打出一张“铃”。当有“铃”移动到处理区后,你从牌堆中获得与此次移动到第一张“铃”花色相同的一张牌。',
gnsheque:'射却',
gnsheque_info:'一名其他角色的准备阶段开始时,若其装备区内有牌,则你可以对其使用一张【杀】(无距离关系的限制且无视防具)。',
}
};
});

View File

@ -5832,10 +5832,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
direct:true,
filter:function(event,player){
return event.player.isAlive()&&event.player.getStat('damage')&&
lib.filter.targetEnabled({name:'sha'},player,event.player)&&player.hasSha();
lib.filter.targetEnabled({name:'sha'},player,event.player)&&(player.hasSha()||_status.connectMode&&player.countCards('h')>0);
},
content:function(){
player.chooseToUse({name:'sha'},'诛害:是否对'+get.translation(trigger.player)+'使用一张杀?').set('logSkill','zhuhai').set('complexSelect',true).set('filterTarget',function(card,player,target){
player.chooseToUse(function(card,player,event){
if(get.name(card)!='sha') return false;
return lib.filter.filterCard.apply(this,arguments);
},'诛害:是否对'+get.translation(trigger.player)+'使用一张杀?').set('logSkill','zhuhai').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',trigger.player);

View File

@ -533,6 +533,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
spshicai:{
audio:2,
enable:'phaseUse',
position:'he',
filter:function(event,player){
return !player.storage.spshicai2||!player.getCards('h').contains(player.storage.spshicai2);
},
@ -800,7 +801,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
else event.finish();
'step 2'
if(player.countCards('h')&&game.hasPlayer(function(current){
return current!=target&&player.inRange(target);
return current!=target&&player.inRange(current);
})){
player.chooseCardTarget({
position:'h',
@ -8594,6 +8595,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhanyi:{
enable:'phaseUse',
usable:1,
audio:2,
filterCard:true,
position:'he',
check:function(card){
@ -10427,6 +10429,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
zhenwei2:{
mark:true,
audio:false,
intro:{
content:'cards',
onunmark:function(storage,player){
@ -13598,7 +13601,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
else{
player.draw(2);
player.storage.liangzhu=player;
if(!player.storage.liangzhu) player.storage.liangzhu=[];
player.storage.liangzhu.add(player);
}
}
}
@ -17888,7 +17892,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
"zhenyi_club":{
log:false,
audio:'xinfu_zhenyi',
enable:"chooseToUse",
filter:function (event,player){
if(!player.isDying()) return false;
@ -17917,6 +17921,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{
source:"damageBegin1",
},
audio:'xinfu_zhenyi',
filter:function (event,player){
return player.hasMark('xinfu_falu_heart');
},
@ -17933,17 +17938,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
logTarget:"player",
content:function (){
"step 0"
player.removeMark('xinfu_falu_heart')
player.judge(function(card){
if(get.color(card)=='black') return 4;
return -1;
});
"step 1"
if(result.bool==true){
trigger.num++;
}
},
"step 0"
player.removeMark('xinfu_falu_heart')
player.judge(function(card){
if(get.color(card)=='black') return 4;
return -1;
});
"step 1"
if(result.bool==true){
trigger.num++;
}
},
},
"xinfu_zhennan":{
audio:2,

View File

@ -649,6 +649,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
});
next.set('complexSelect',true);
'step 1'
if(result.bool){
player.logSkill('xinfu_fangtong');

View File

@ -5745,6 +5745,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
onremove:true,
},
zhongyong:{
audio:2,
trigger:{player:'shaMiss'},
direct:true,
filter:function(event,player){
@ -5863,6 +5864,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
longyin:{
audio:2,
shaRelated:true,
trigger:{global:'useCard'},
direct:true,
@ -5876,6 +5878,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(get.color(trigger.card)=='red'){
go=true;
}
else if(trigger.addCount===false) go=false;
else if(!trigger.player.hasSkill('paoxiao')&&
!trigger.player.hasSkill('tanlin3')&&
!trigger.player.hasSkill('zhaxiang2')&&
@ -5917,7 +5920,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
next.set('go',go);
'step 1'
if(result.bool){
trigger.player.getStat().card.sha--;
if(trigger.addCount!==false){
trigger.addCount=false;
trigger.player.getStat().card.sha--;
}
if(get.color(trigger.card)=='red'){
player.draw();
}
@ -10301,7 +10307,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
trigger:{player:'phaseDrawBegin2'},
check:function(event,player){
return player.countCards('h')<=player.maxHp||player.skipList.contains('phaseUse');
return player.countCards('h')<=(player.hasSkill('zongshi')?player.maxHp:(player.hp-2))||player.skipList.contains('phaseUse');
},
filter:function(event,player){
return !event.numFixed;

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.100.5',
'v1.9.100.6',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -3166,6 +3166,12 @@ window.noname_asset_list=[
'image/character/key_kud.jpg',
'image/character/key_misuzu.jpg',
'image/character/key_nao.jpg',
'image/character/ns_caoshuang.jpg',
'image/character/ns_huangchengyan.jpg',
'image/character/ns_sunchensunjun.jpg',
'image/character/ns_yuanxi.jpg',
'image/character/yj_ganning.jpg',
'image/character/yj_zhangliao.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -13437,7 +13437,7 @@
if(current!=target&&get.attitude(player,current)>0){
var es=target.getCards('e');
for(var i=0;i<es.length;i++){
if(get.value(es[i],target)>0&&current.isEmpty(get.subtype(es[i]))&&get.value(es[i],current)>0) return true;
if(get.value(es[i],target)>0&&current.isEmpty(get.subtype(es[i]))&&get.effect(current,es[i],player,current)>0) return true;
}
}
})){
@ -13452,7 +13452,7 @@
for(i=0;i<es.length;i++){
if(sgnatt!=0&&att2!=0&&
get.sgn(get.value(es[i],ui.selected.targets[0]))==-att2&&
get.sgn(get.value(es[i],target))==sgnatt&&
get.sgn(get.effect(target,es[i],player,target))==sgnatt&&
target.isEmpty(get.subtype(es[i]))){
return Math.abs(att);
}
@ -13488,12 +13488,12 @@
var targets1=_status.event.targets1;
if(get.attitude(player,targets0)>0&&get.attitude(player,targets1)<0){
if(get.position(button.link)=='j') return 12;
if(get.value(button.link,targets0)<0) return 10;
if(get.value(button.link,targets0)<0&&get.effect(targets1,button.link,player,targets1)>0) return 10;
return 0;
}
else{
if(get.position(button.link)=='j') return -10;
return get.equipValue(button.link);
return get.equipValue(button.link)*get.effect(targets1,button.link,player,targets1);
}
},targets[0]).set('nojudge',event.nojudge||false).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){
var targets1=_status.event.targets1;
@ -18132,7 +18132,7 @@
if(withatt){
if(get.sgn(get.value(es[i],current))!=-att) return false;
var att2=get.sgn(get.attitude(player,current2));
if(att2!=get.sgn(get.value(es[i],current2))) return false;
if(att2!=get.sgn(get.effect(current2,es[i],player,current2))) return false;
}
return current!=current2&&!current2.isMin()&&current2.isEmpty(get.subtype(es[i]));
})){
@ -32446,7 +32446,7 @@
var skills=arguments[arguments.length-1];
if(skills.getSkills){
if(name!='cardname') skills=skills.getSkills();
else skills=skills.getSkills(true,false);
else skills=skills.getSkills(null,false);
}
skills=skills.concat(lib.skill.global);
game.expandSkills(skills);
@ -40286,7 +40286,8 @@
}
}
else if(text2.value.indexOf('无天使')!=-1&&(text2.value.indexOf('无神佛')!=-1||text2.value.indexOf('无神')!=-1&&text2.value.indexOf('无佛')!=-1)){
game.print('Welcome to Shinda Sekai Sensen!');
game.print('密码正确!欢迎来到死后世界战线!');
_status.keyVerified=true;
text2.value='';
}
else{

View File

@ -1,56 +1,58 @@
window.noname_update={
version:'1.9.100.5',
update:'1.9.100.4.2',
version:'1.9.100.6',
update:'1.9.100.5',
changeLog:[
'武将技能设计征集比赛2020Key组',
'武将技能设计征集比赛2020三国组',
'星张辽,星甘宁,星徐晃,星张郃',
'两军对垒(乱斗)',
'bug修复',
],
files:[
//'card/extra.js',
'card/extra.js',
//'card/huanlekapai.js',
//'card/sp.js',
//'card/standard.js',
'card/standard.js',
//'card/swd.js',
//'card/mtg.js',
//'card/gujian.js',
'card/guozhan.js',
//'card/guozhan.js',
//'card/gwent.js',
//'card/yunchou.js',
'card/yunchou.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/old.js',
'character/refresh.js',
'character/shenhua.js',
//'character/shenhua.js',
'character/sp.js',
//'character/tw.js',
//'character/standard.js',
//'character/swd.js',
//'character/xianjian.js',
//'character/xinghuoliaoyuan.js',
'character/xinghuoliaoyuan.js',
'character/yijiang.js',
//'character/yxs.js',
//'extension/boss/extension.js',
//'layout/default/layout.css',
//'layout/nova/layout.css',
'mode/identity.js',
//'mode/identity.js',
//'mode/doudizhu.js',
//'mode/guozhan.js',
//'mode/chess.js',
//'mode/tafang.js',
//'mode/single.js',
//'mode/stone.js',
//'mode/brawl.js',
'mode/brawl.js',
//'mode/versus.js',
'mode/boss.js',
//'mode/boss.js',
'game/game.js',
//'game/NoSleep.js',
//'game/config.js',

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

View File

@ -1872,7 +1872,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
['sunquan','zhangzhang','zhouyu'],
['re_yuanshao','guotufengji','yj_jushou']
];
if(_status.forceKey) list.push(['key_yuri','key_yuzuru','sp_key_kanade'])
if(_status.keyVerified) list.push(['key_yuri','key_yuzuru','sp_key_kanade'])
list.randomSort();
var list2=[];
for(var i=0;i<list.length;i++){
@ -1941,7 +1941,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(group&&map[group]) map[group].push(i);
}
for(var i in map){
if(map[i].length<8||(i=='key'&&!_status.forceKey)){
if(map[i].length<8||(i=='key'&&!_status.keyVerified)){
delete map[i];
}
else{
@ -2436,6 +2436,332 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
}
},
liangjunduilei:{
name:'两军对垒',
mode:'versus',
submode:'2v2',
showcase:function(init){
var node=this;
var player1,player2;
var list=[
['re_sp_zhugeliang','yujin_yujin','re_zhangliao','re_lusu'],
['re_huangzhong','re_xiahouyuan','zhanghe','xin_fazheng'],
['re_caocao','xin_yuanshao','guotufengji','re_guojia'],
['chunyuqiong','sp_xuyou','re_xuhuang','gaolan'],
['re_sp_zhugeliang','re_zhangzhang','guyong','re_lusu'],
['yj_jushou','re_caocao','jsp_guanyu','re_yanwen'],
['re_lingtong','re_lidian','re_zhangliao','re_ganning'],
['re_guanyu','caoren','re_lvmeng','guanping'],
].randomGet();
if(_status.keyVerified){
list=[
['caozhen','key_hisako','key_iwasawa','sp_key_kanade'],
].randomGet();
}
if(init){
player1=ui.create.player(null,true).init(list[0]);
player2=ui.create.player(null,true).init(list[1]);
player1.node.marks.remove();
player1.node.hp.remove();
player2.node.marks.remove();
player2.node.hp.remove();
player1.style.left='20px';
player1.style.top='20px';
player1.style.transform='scale(0.9)';
player1.node.count.remove();
player2.style.left='auto';
player2.style.right='20px';
player2.style.top='20px';
player2.style.transform='scale(0.9)';
player2.node.count.remove();
this.appendChild(player1);
this.appendChild(player2);
this.player1=player1;
this.player2=player2;
}
else{
player1=this.player1;
player2=this.player2;
}
var player3,player4;
if(init){
player3=ui.create.player(null,true).init(list[3]);
player4=ui.create.player(null,true).init(list[2]);
player3.node.marks.remove();
player3.node.hp.remove();
player4.node.marks.remove();
player4.node.hp.remove();
player3.style.left='60px';
player3.style.top='120px';
player3.style.transform='scale(0.9)';
player3.node.count.remove();
player4.style.left='auto';
player4.style.right='60px';
player4.style.top='120px';
player4.style.transform='scale(0.9)';
player4.node.count.remove();
this.appendChild(player3);
this.appendChild(player4);
this.player3=player3;
this.player4=player4;
}
else{
player3=this.player3;
player4=this.player4;
}
},
intro:['双方使用特定的武将,搭配特定的技能,还原特定的经典场景'],
content:{
submode:'two',
chooseCharacterBefore:function(){
var list=[
{
name:'草船借箭',
place:[true,false,false,true],
character:['re_sp_zhugeliang','yujin_yujin','re_zhangliao','re_lusu'],
lib:{
character:{
re_sp_zhugeliang:['male','shu',3,['tiaoxin','bazhen','feiying'],[]],
yujin_yujin:['male','wei',4,['jiangchi','danshou'],[]],
re_zhangliao:['male','wei',4,['benxi','tuifeng','qingxi'],[]],
re_lusu:['male','wu',3,['kaikang','shenxian'],[]],
},
translate:{
re_sp_zhugeliang:'诸葛卧龙',
yujin_yujin:'于文则',
re_zhangliao:'张文远',
re_lusu:'鲁子敬',
},
},
},
{
name:'定军山之战',
place:[true,false,false,true],
character:['re_huangzhong','re_xiahouyuan','zhanghe','xin_fazheng'],
lib:{
character:{
re_huangzhong:['male','shu',4,['yingjian','weikui','gzyinghun'],[]],
re_xiahouyuan:['male','wei',4,['benxi','yaowu','dujin','juesi'],[]],
zhanghe:['male','wei',4,['kaikang','xingshang','zhiheng'],[]],
xin_fazheng:['male','shu',4,['zhanji','nzry_chenglve','yiji'],[]],
},
translate:{
re_huangzhong:'定军黄忠',
re_xiahouyuan:'定军妙才',
zhanghe:'定军张郃',
xin_fazheng:'定军法正',
},
},
},
{
name:'官渡追击战',
place:[false,true,true,false],
character:['re_caocao','xin_yuanshao','guotufengji','re_guojia'],
lib:{
character:{
re_caocao:['male','wei',4,['fankui','zhuiji','duanbing'],[]],
xin_yuanshao:['male','qun','3/6',['reluanji','kuanggu','benghuai','weizhong'],[]],
guotufengji:['male','qun',2,['sijian','jigong','shifei','jianying'],[]],
re_guojia:['male','wei',3,['yiji','sanyao','gongxin'],[]],
},
translate:{
re_caocao:'官渡曹操',
xin_yuanshao:'官渡袁绍',
guotufengji:'袁军智囊',
re_guojia:'官渡郭嘉',
},
},
},
{
name:'奇袭乌巢',
place:[true,false,false,true],
character:['chunyuqiong','sp_xuyou','re_xuhuang','gaolan'],
lib:{
character:{
chunyuqiong:['male','qun',8,['ranshang','duliang','jiuchi'],[]],
sp_xuyou:['male','qun',3,['qice','lianying','nzry_jianxiang'],[]],
re_xuhuang:['male','wei',4,['shenduan','xiaoguo','nzry_juzhan'],[]],
gaolan:['male','qun',4,['yuanhu','shensu','benyu','suishi'],[]],
},
translate:{
chunyuqiong:'乌巢淳于琼',
sp_xuyou:'乌巢许攸',
re_xuhuang:'乌巢徐晃',
gaolan:'乌巢高览',
},
},
},
{
name:'舌战群儒',
place:[false,true,false,true],
character:['re_zhangzhang','re_sp_zhugeliang','guyong','re_lusu'],
lib:{
character:{
re_sp_zhugeliang:['male','shu',3,['tianbian','jyzongshi','xinfu_guolun'],[]],
re_zhangzhang:['male','wu',3,['zhuandui','tiaoxin','guzheng'],[]],
guyong:['male','wu',3,['qiaoshui','qicai','bingyi'],[]],
re_lusu:['male','wu',3,['qingzhongx','shuimeng'],[]],
},
translate:{
re_sp_zhugeliang:'诸葛卧龙',
re_zhangzhang:'张子布',
guyong:'顾元叹',
re_lusu:'鲁子敬',
},
},
},
{
name:'武圣战双雄',
place:[true,false,false,true],
character:['yj_jushou','re_caocao','jsp_guanyu','re_yanwen'],
lib:{
character:{
yj_jushou:['male','qun',3,['mingce','jianyan','shibei'],[]],
re_caocao:['male','wei',4,['miji','beige','feiying'],[]],
jsp_guanyu:['male','wei',4,['nuzhan','jianchu','new_rewusheng'],[]],
re_yanwen:['male','qun',4,['shuangxiong','zhanyi','zhichi'],[]],
},
translate:{
yj_jushou:'白马沮授',
re_caocao:'白马曹操',
jsp_guanyu:'武圣关羽',
re_yanwen:'颜文双雄',
},
},
},
{
name:'合肥之战',
place:[true,false,false,true],
character:['re_lingtong','re_lidian','re_zhangliao','re_ganning'],
lib:{
character:{
re_lingtong:['male','wu',4,['xuanfeng','zishou','tiaoxin'],[]],
re_lidian:['male','wei',3,['weijing','wangxi','zhuandui'],[]],
re_zhangliao:['male','wei',3,['retuxi','mashu','reyingzi','xinpojun'],[]],
re_ganning:['male','wu',5,['lizhan','jiang','zhenwei'],[]],
},
translate:{
re_lingtong:'合肥凌统',
re_lidian:'合肥李典',
re_zhangliao:'合肥张辽',
re_ganning:'合肥甘宁',
},
},
},
{
name:'荆州之战',
place:[true,false,false,true],
character:['re_guanyu','caoren','re_lvmeng','guanping'],
lib:{
character:{
re_guanyu:['male','shu',5,['wusheng','zishou','zhongyong'],[]],
caoren:['male','wei',1,['xinjiewei','qiuyuan','gzbuqu','xinjushou'],[]],
re_lvmeng:['male','wu',4,['gongxin','duodao','dujin','huituo'],[]],
guanping:['male','shu',5,['longyin','suishi'],[]],
},
translate:{
re_guanyu:'荆州关羽',
caoren:'樊城曹仁',
re_lvmeng:'江东吕蒙',
guanping:'荆州关平',
},
},
},
];
if(_status.keyVerified) list=[
{
name:'My Song',
place:[false,true,true,false],
character:['caozhen','key_hisako','key_iwasawa','sp_key_kanade'],
lib:{
character:{
caozhen:['male','wei',4,['xinsidi','tuxi']],
key_hisako:['female','key','2/3',['hisako_yinbao','shenzhi','shiorimiyuki_banyin','hisako_zhuanyun'],[]],
key_iwasawa:['female','key','-999/3',['iwasawa_yinhang','iwasawa_mysong','hisako_zhuanyun']],
sp_key_kanade:['female','key',3,['xinwuyan','xinbenxi']],
},
translate:{
caozhen:'突袭教师',
key_hisako:'绝望恶魔',
key_iwasawa:'引吭孤鸦',
sp_key_kanade:'学生会长',
},
},
},
]
game.liangjunduilei=list;
game.chooseCharacterTwo=function(){
var next=game.createEvent('chooseCharacter',false);
next.setContent(function(){
'step 0'
for(var i in lib.skill){
if(lib.skill[i].audio&&!lib.skill[i].equipSkill) lib.skill[i].audio=false;
if(lib.skill[i].changeSeat){
lib.skill[i]={};
if(lib.translate[i+'_info']){
lib.translate[i+'_info']='此模式下不可用';
}
}
}
ui.arena.classList.add('choose-character');
var list=game.liangjunduilei;
var id=lib.status.videoId++;
var choiceList=ui.create.dialog('请选择要游玩的剧情','forcebutton');
choiceList.videoId=id;
for(var i=0;i<list.length;i++){
var str='<div class="popup text center" style="width:calc(100% - 10px);display:inline-block">';
str+=list[i].name;
str+='</div>';
var next=choiceList.add(str);
next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
next.firstChild.link=i;
for(var j in lib.element.button){
next[j]=lib.element.button[i];
}
choiceList.buttons.add(next.firstChild);
}
game.me.chooseButton(true).set('dialog',id).set('onfree',true);
'step 1'
var pack=game.liangjunduilei[result.links[0]];
game.versusVideoName=pack.name;
if(get.is.phoneLayout()){
ui.duileiInfo=ui.create.div('.touchinfo.left',ui.window);
}
else{
ui.duileiInfo=ui.create.div(ui.gameinfo);
}
ui.duileiInfo.innerHTML='当前剧情:'+pack.name;
for(var i in pack.lib){
for(var j in pack.lib[i]){
lib[i][j]=pack.lib[i][j];
}
}
var player=game.players.randomGet();
_status.firstAct=player;
for(var i=0;i<4;i++){
player.init(pack.character[i]);
player.side=pack.place[i];
player=player.next;
}
for(var i=0;i<game.players.length;i++){
if(game.players[i].side==game.me.side){
game.players[i].node.identity.firstChild.innerHTML='友';
}
else{
game.players[i].node.identity.firstChild.innerHTML='敌';
}
game.players[i].node.identity.dataset.color=game.players[i].side+'zhu';
}
game.addVideo('arrangeLib',null,pack.lib);
setTimeout(function(){
ui.arena.classList.remove('choose-character');
},500);
});
};
}
}
},
scene:{
name:'创建场景',
content:{