一番の宝物 -Yui Final Ver.-

This commit is contained in:
Spmario233 2020-04-25 13:40:05 +08:00 committed by GitHub
parent cba6a9d193
commit d347e1e324
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
38 changed files with 1024 additions and 228 deletions

BIN
audio/die/ol_pangtong.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/olniepan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olniepan2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -652,26 +652,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return true; return true;
}, },
check:function(button){ check:function(button){
if(button.link.name=='du') return 2; if(button.link.name=='du') return 10;
var player=_status.event.player; var player=_status.event.player;
if(button.link.name=='xingjiegoutong'&&player.countCards('h')>1) return -2; if(player.getUseValue(button.link)>0) return get.order(button.link);
if(get.select(get.info(button.link).selectTarget)[1]==-1){
if(get.type(button.link)=='delay') return -1;
if(get.type(button.link)=='equip'){
var current=player.getCards('e',{subtype:get.subtype(button.link)})[0];
if(current&&get.equipValue(current)>=get.equipValue(button.link)) return -1;
return 1;
}
if(get.tag(button.link,'multitarget')) return -1;
if(button.link.name=='huoshaolianying') return -1;
}
if(button.link.name=='jiu'){
if(get.effect(player,{name:'jiu'},player)>0){
return 1;
}
return -1; return -1;
}
return 1;
}, },
backup:function(links,player){ backup:function(links,player){
return { return {
@ -691,7 +675,21 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}, },
}, },
ai:{ ai:{
order:4, order:function(item,player){
var event=_status.event;
if(event.type!='phase') return 4;
if(!player) return -1;
var muniu=player.getEquip('muniu');
if(!muniu||!muniu.cards) return -1;
var order=0;
for(var i=0;i<muniu.cards.length;i++){
if(player.getUseValue(muniu.cards[i])>0){
var order2=get.order(muniu.cards[i]);
if(order2>order) order=order2
}
}
return order+0.1;
},
result:{ result:{
player:function(player){ player:function(player){
if(_status.event.dying) return get.attitude(player,_status.event.dying); if(_status.event.dying) return get.attitude(player,_status.event.dying);

View File

@ -22,6 +22,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_masato:['male','key','4/8',['masato_baoquan']], key_masato:['male','key','4/8',['masato_baoquan']],
key_iwasawa:['female','key',3,['iwasawa_yinhang','iwasawa_mysong']], key_iwasawa:['female','key',3,['iwasawa_yinhang','iwasawa_mysong']],
key_kengo:['male','key',4,['kengo_weishang','kengo_guidui']], key_kengo:['male','key',4,['kengo_weishang','kengo_guidui']],
key_yoshino:['male','key',4,['yoshino_jueyi']],
key_yui:['female','key',3,['yui_jiang','yui_lieyin','yui_takaramono']],
key_tsumugi:['female','key',3,['tsumugi_mugyu','tsumugi_huilang']],
// diy_caocao:['male','wei',4,['xicai','diyjianxiong','hujia']], // diy_caocao:['male','wei',4,['xicai','diyjianxiong','hujia']],
// diy_hanlong:['male','wei',4,['siji','ciqiu']], // diy_hanlong:['male','wei',4,['siji','ciqiu']],
diy_feishi:['male','shu',3,['shuaiyan','moshou']], diy_feishi:['male','shu',3,['shuaiyan','moshou']],
@ -98,7 +101,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy:{ diy:{
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_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_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"], 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"],
}, },
}, },
characterIntro:{ characterIntro:{
@ -113,6 +116,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。', diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。',
}, },
characterTitle:{ characterTitle:{
key_tsumugi:'#bSummer Pockets',
key_yui:'#rAngel Beats!',
key_yoshino:'#bRewrite',
key_kengo:'#bLittle Busters!', key_kengo:'#bLittle Busters!',
key_iwasawa:'#rAngel Beats!', key_iwasawa:'#rAngel Beats!',
key_masato:'#bLittle Busters!', key_masato:'#bLittle Busters!',
@ -162,6 +168,248 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yuji:['zuoci'] yuji:['zuoci']
}, },
skill:{ skill:{
tsumugi_mugyu:{
audio:5,
trigger:{target:'useCardToTargeted'},
frequent:true,
filter:function(event,player){
return player.countCards('h')<player.maxHp;
},
content:function(){
player.draw();
},
},
tsumugi_huilang:{
trigger:{player:'phaseEnd'},
line:{color:[253, 198, 116]},
direct:true,
filter:function(event,player){
return player.countCards('he')>0;
},
content:function(){
'step 0'
player.chooseCard('he',[1,player.countCards('he')],get.prompt2('tsumugi_huilang')).set('ai',function(card){
if(get.position(card)!='h') return -1;
if(!['shan','wuxie','caochuan'].contains(get.name(card))) return 9;
return 5-get.value(card);
});
'step 1'
if(result.bool){
var cards=result.cards;
player.logSkill('tsumugi_huilang');
player.addSkill('tsumugi_huilang2');
player.storage.tsumugi_huilang2.addArray(cards);
player.lose(cards,ui.special);
player.markSkill('tsumugi_huilang2');
}
},
},
tsumugi_huilang2:{
charlotte:true,
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[];
},
marktext:'隐',
intro:{content:'cardCount'},
trigger:{player:'phaseBegin'},
forced:true,
filter:function(event,player){
return player.storage.tsumugi_huilang2.length>0;
},
content:function(){
'step 0'
var cards=player.storage.tsumugi_huilang2;
event.num=cards.length;
player.gain(cards,'draw');
game.log(player,'获得了'+get.cnNumber(cards.length)+'张牌');
cards.length=0;
player.unmarkSkill('tsumugi_huilang2');
'step 1'
player.chooseTarget([1,num],'是否令至多'+get.cnNumber(num)+'名角色各摸一张牌?').set('ai',function(target){
return get.attitude(_status.event.player,target);
});
'step 2'
if(result.bool){
var targets=result.targets;
player.line(targets,lib.skill.tsumugi_huilang.line);
targets.sortBySeat();
game.asyncDraw(targets);
}
else event.finish();
'step 3'
game.delay();
},
},
yui_jiang:{
shaRelated:true,
audio:2,
audioname:['sp_lvmeng','re_sunben','re_sunce'],
trigger:{
player:'useCardToPlayered',
target:'useCardToTargeted',
},
filter:function(event,player){
if(!(event.card.name=='juedou'||(event.card.name=='sha'&&get.color(event.card)=='red'))) return false;
return player==event.target||event.getParent().triggeredTargets3.length==1;
},
frequent:true,
content:function(){
player.draw();
},
ai:{
effect:{
target:function(card,player,target){
if(card.name=='sha'&&get.color(card)=='red') return [1,0.6];
},
player:function(card,player,target){
if(card.name=='sha'&&get.color(card)=='red') return [1,1];
}
}
}
},
yui_lieyin:{
trigger:{player:'phaseUseBegin'},
direct:true,
locked:true,
content:function(){
'step 0'
var list=[];
if(player._ichiban_no_takaramono) list.push('cancel2');
player.chooseControl.apply(player,list).set('choiceList',[
'令此阶段内的所有红色牌视为【杀】',
'令此阶段内的所有【杀】视为【决斗】'
]).set('prompt',player._ichiban_no_takaramono?get.prompt('yui_lieyin'):'烈音:请选择一项').set('ai',function(){
var player=_status.event.player;
var shas=player.countCards('h','sha')
if(shas>0){
if(game.hasPlayer(function(current){
return get.attitude(player,current)<0&&player.canUse('juedou',current)&&!current.hasSha()&&get.effect(current,{name:'juedou'},player,player)>0;
})) return 1;
if(player._ichiban_no_takaramono) return 'cancel2';
}
if(player.countCards('h',function(card){
return get.color(card)=='red'&&card.name!='sha'&&player.hasValueTarget(card);
})==0) return 0;
if(player._ichiban_no_takaramono) return 'cancel2';
return 1;
});
'step 1'
if(result.control!='cancel2'){
player.logSkill('yui_lieyin');
player.addTempSkill('yui_lieyin'+result.index,'phaseUseEnd')
}
},
},
yui_lieyin0:{
mod:{
cardname:function(card){
if(get.color(card)=='red') return 'sha';
},
},
},
yui_lieyin1:{
mod:{
cardname:function(card){
if(card.name=='sha') return 'juedou';
},
},
},
yui_takaramono:{
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
unique:true,
juexingji:true,
skillAnimation:true,
animationColor:'key',
filter:function(event,player){
var num=0;
if(player.hp<=1) num++;
if(game.dead.length>0) num++;
if(num!=1) return num>1;
var draw=0;
player.getAllHistory('gain',function(evt){
if(evt.getParent(2).name=='yui_jiang') draw+=evt.cards.length;
});
return draw>=3;
},
content:function(){
player.awakenSkill('yui_takaramono');
player.addSkill('yui_yinhang');
player._ichiban_no_takaramono=true;
player.gainMaxHp();
player.recover();
},
derivation:'yui_yinhang',
},
yui_yinhang:{
trigger:{player:'changeHp'},
locked:true,
direct:true,
line:{color:[253, 153, 182]},
content:function(){
'step 0'
event.count=Math.abs(trigger.num);
'step 1'
event.count--;
player.chooseTarget([1,2],get.prompt('yui_yinhang'),'令至多两名角色各摸一张牌').set('ai',function(target){
return get.attitude(_status.event.player,target);
});
'step 2'
if(result.bool){
var targets=result.targets;
targets.sortBySeat();
player.logSkill('yui_yinhang',targets,lib.skill.yui_yinhang.line);
game.asyncDraw(targets);
}
else event.finish();
'step 3'
game.delay();
if(event.count>0) event.goto(1);
},
},
yoshino_jueyi:{
trigger:{player:'phaseUseBegin'},
direct:true,
content:function(){
'step 0'
player.chooseTarget(lib.filter.notMe,get.prompt2('yoshino_jueyi')).set('ai',function(){
var player=_status.event.player;
var att=get.attitude(player,target);
if(att<0) return 0;
if(att==0) return 0.1;
var eff=0;
var hs=player.getCards('h');
for(var i=0;i<hs.length;i++){
if(player.canUse(hs[i],target)){
var eff2=get.effect(target,hs[i],player,player);
if(eff2>0) eff+=eff2;
}
}
return -att/(1+eff);
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('yoshino_jueyi',target);
player.draw();
}
else event.finish();
'step 2'
player.chooseToPSS(target);
'step 3'
if(result.tie) event.goto(2);
else if(result.bool) target.damage();
else target.addTempSkill('yoshino_fail','phaseUseEnd');
},
},
yoshino_fail:{
mod:{
targetEnabled:function(card,player,target){
if(player==_status.currentPhase) return false;
},
},
},
kengo_weishang:{ kengo_weishang:{
locked:false, locked:false,
mod:{ mod:{
@ -507,6 +755,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}); });
} }
"step 3" "step 3"
event.index=result.index;
if(result.index==1){ if(result.index==1){
var magic=get.cardPile2(function(card){ var magic=get.cardPile2(function(card){
return get.type(card,'trick')==event.type; return get.type(card,'trick')==event.type;
@ -516,13 +765,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger.player.storage.yukine_magic.add(magic.name); trigger.player.storage.yukine_magic.add(magic.name);
trigger.player.gain(magic,'draw'); trigger.player.gain(magic,'draw');
} }
event.finish(); else event.finish();
} }
else player.chooseCard('he',true,'选择要交给'+get.translation(trigger.player)+'的牌').set('ai',function(card){ else player.chooseCard('he',true,'选择要交给'+get.translation(trigger.player)+'的牌').set('ai',function(card){
return -get.value(card,_status.event.getTrigger().player); return -get.value(card,_status.event.getTrigger().player);
}); });
"step 4" "step 4"
if(result.bool) player.give(result.cards,trigger.player,'giveAuto'); if(event.index==1) game.updateRoundNumber();
else if(result.bool) player.give(result.cards,trigger.player,'giveAuto');
}, },
}, },
yukine_magic:{ yukine_magic:{
@ -5906,6 +6156,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_masato:'井之原真人', key_masato:'井之原真人',
key_iwasawa:'岩泽雅美', key_iwasawa:'岩泽雅美',
key_kengo:'宫泽谦吾', key_kengo:'宫泽谦吾',
key_yoshino:'吉野晴彦',
key_yui:'ユイ',
key_tsumugi:'紬文德斯',
lucia_duqu:'毒躯', lucia_duqu:'毒躯',
lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。', lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。',
lucia_zhenren:'振刃', lucia_zhenren:'振刃',
@ -5919,7 +6172,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yuri_wangxi:'忘隙', yuri_wangxi:'忘隙',
yuri_wangxi_info:'主公技限定技当有角色因你发动的【行动】而死亡后若其身份不为【明忠】则其可以将身份改为忠臣并重新加入游戏然后将势力改为与你相同将体力值回复至2点并摸一张牌。', yuri_wangxi_info:'主公技限定技当有角色因你发动的【行动】而死亡后若其身份不为【明忠】则其可以将身份改为忠臣并重新加入游戏然后将势力改为与你相同将体力值回复至2点并摸一张牌。',
haruko_haofang:'豪放', haruko_haofang:'豪放',
haruko_haofang_info:'锁定技,你不能使用非转化的延时锦囊牌。你可以将一张延时锦囊牌当做【无中生有】使用。', haruko_haofang_info:'锁定技,你的延时锦囊牌视为【无中生有】。',
haruko_zhuishi:'追逝', haruko_zhuishi:'追逝',
haruko_zhuishi_info:'一名角色的判定阶段开始时若其判定区内有牌则你可以失去1点体力然后获得其判定区内的所有牌。', haruko_zhuishi_info:'一名角色的判定阶段开始时若其判定区内有牌则你可以失去1点体力然后获得其判定区内的所有牌。',
kagari_zongsi:'纵丝', kagari_zongsi:'纵丝',
@ -5937,6 +6190,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
komari_xueshang_info:'锁定技,蓄力技,当有角色死亡时,你对自己造成<span class=yellowtext>1</span>点伤害,然后对所有其他角色依次造成<span class=firetext>1</span>点伤害。当有角色因此法进入濒死状态时你加1点体力上限并回复1点体力然后失去此技能并终止此技能的所有后续结算。', komari_xueshang_info:'锁定技,蓄力技,当有角色死亡时,你对自己造成<span class=yellowtext>1</span>点伤害,然后对所有其他角色依次造成<span class=firetext>1</span>点伤害。当有角色因此法进入濒死状态时你加1点体力上限并回复1点体力然后失去此技能并终止此技能的所有后续结算。',
yukine_wenzhou:'问咒', yukine_wenzhou:'问咒',
yukine_wenzhou_info:'一名角色的出牌阶段开始时,其可以交给你一张牌。若如此做,你选择一项:交给其一张牌,或令其从牌堆中获得一张与此牌类型相同的牌,且其于此阶段内使用与此牌牌名相同的牌时无法被响应。', yukine_wenzhou_info:'一名角色的出牌阶段开始时,其可以交给你一张牌。若如此做,你选择一项:交给其一张牌,或令其从牌堆中获得一张与此牌类型相同的牌,且其于此阶段内使用与此牌牌名相同的牌时无法被响应。',
//如果对自己发动【问咒】,则自己可以响应这些牌。但其他角色发动【问咒】时,该角色自己并不能响应
yusa_yanyi:'演艺', yusa_yanyi:'演艺',
yusa_yanyi_info:'出牌阶段限一次你可以指定至多X名与你距离不大于你的体力值的角色。这些角色选择一项①令你摸一张牌。②回复1点体力然后交给你一张牌。X为你的攻击范围且至少为1', yusa_yanyi_info:'出牌阶段限一次你可以指定至多X名与你距离不大于你的体力值的角色。这些角色选择一项①令你摸一张牌。②回复1点体力然后交给你一张牌。X为你的攻击范围且至少为1',
misa_yehuo:'业火', misa_yehuo:'业火',
@ -5959,6 +6213,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
kengo_weishang_info:'出牌阶段限一次,你可以废除一个装备栏并摸两张牌。若你的武器栏已废除,则你使用【杀】的次数上限+1且当你使用【杀】指定目标后目标角色弃置一张牌若你的防具栏已废除则你可以将一张牌当做【闪】使用或打出若你的攻击/防御坐骑栏已废除,则你至其他角色的距离-1/其他角色至你的距离-1。', kengo_weishang_info:'出牌阶段限一次,你可以废除一个装备栏并摸两张牌。若你的武器栏已废除,则你使用【杀】的次数上限+1且当你使用【杀】指定目标后目标角色弃置一张牌若你的防具栏已废除则你可以将一张牌当做【闪】使用或打出若你的攻击/防御坐骑栏已废除,则你至其他角色的距离-1/其他角色至你的距离-1。',
kengo_guidui:'归队', kengo_guidui:'归队',
kengo_guidui_info:'锁定技,准备阶段,若你有已废除的装备栏,则你恢复这些装备栏,且本回合内发动【伪伤】时不能废除这些装备栏。', kengo_guidui_info:'锁定技,准备阶段,若你有已废除的装备栏,则你恢复这些装备栏,且本回合内发动【伪伤】时不能废除这些装备栏。',
yoshino_jueyi:'决义',
yoshino_jueyi_info:'出牌阶段开始时你可以选择一名其他角色。你摸一张牌并与其猜拳平局则重来。若你赢你对其造成1点伤害。若你没赢你本阶段内使用牌时不能指定其为目标。',
yui_jiang:'激昂',
yui_jiang_info:'每当你使用(指定目标后)或被使用(成为目标后)一张【决斗】或红色的【杀】时,你可以摸一张牌。',
yui_lieyin:'烈音',
yui_lieyin_info:'锁定技,出牌阶段开始时,你选择一项:①本阶段内的红色牌均视为【杀】;②本阶段内的【杀】均视为【决斗】。',
yui_takaramono:'珍宝',
yui_takaramono_info:'觉醒技准备阶段若你满足以下条件中的至少两个①体力值不大于1②场上有已死亡的角色③已因〖激昂〗累计获得过至少三张牌则你获得技能〖引吭〗将〖烈音〗描述中的「你选择」改为「你可选择」然后加1点体力上限并回复1点体力。',
//ユイ/孙笨双将组合时,孙笨的【激昂】不计入【珍宝】的次数统计
yui_yinhang:'引吭',
yui_yinhang_info:'锁定技当你的体力值变化1点时你可以令至多两名角色摸一张牌。',
tsumugi_mugyu:'姆啾',
tsumugi_mugyu_info:'当你成为牌的目标后,若你的手牌数小于体力上限,则你可以摸一张牌。',
tsumugi_huilang:'回廊',
tsumugi_huilang2:'回廊',
tsumugi_huilang_info:'回合结束时,不可以将任意张牌扣置于武将牌下(均称为「隐」)。回合开始时,你获得所有「隐」,然后可令等量的角色各摸一张牌。',
//〖回廊〗涉及的所有卡牌移动的结算不会触发〖良姻〗
ns_zhangwei:'张葳', ns_zhangwei:'张葳',
nsqiyue:'骑钺', nsqiyue:'骑钺',

View File

@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
character:{ character:{
hs_jaina:['female','wei',3,['huopu','aoshu','bingjia']], hs_jaina:['female','wei',3,['huopu','aoshu','bingjia']],
hs_lrexxar:['male','shu',4,['yushou']], hs_lrexxar:['male','shu',4,['yushou']],
hs_wuther:['male','qun',4,['fengxian','jieming']], hs_wuther:['male','qun',4,['fengxian','rejieming']],
hs_jgarrosh:['male','shu',4,['zhanhou','qiangxi']], hs_jgarrosh:['male','shu',4,['zhanhou','qiangxi']],
hs_malfurion:['male','wu',4,['jihuo']], hs_malfurion:['male','wu',4,['jihuo']],
hs_guldan:['male','wei',3,['moxie','fuhua','hongxi']], hs_guldan:['male','wei',3,['moxie','fuhua','hongxi']],

View File

@ -7,11 +7,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
characterSort:{ characterSort:{
mobile:{ mobile:{
mobile_default:["miheng","taoqian","liuzan","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng"], mobile_default:["miheng","taoqian","liuzan","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng"],
mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","xin_yuanshao","re_liushan","xin_xiahoudun","re_sp_zhugeliang","re_heqi"], mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","xin_yuanshao","re_liushan","xin_xiahoudun","re_sp_zhugeliang","re_heqi","re_guanqiujian","re_pangtong"],
mobile_sunben:["re_sunben"], mobile_sunben:["re_sunben"],
}, },
}, },
character:{ character:{
re_pangtong:['male','shu',3,['xinlianhuan','niepan'],[]],
re_guanqiujian:['male','wei',4,['rezhengrong','rehongju']],
chendeng:['male','qun',3,['zhouxuan','fengji']], chendeng:['male','qun',3,['zhouxuan','fengji']],
re_heqi:['male','wu',4,['reqizhou','reshanxi']], re_heqi:['male','wu',4,['reqizhou','reshanxi']],
yangbiao:['male','qun',3,['zhaohan','rangjie','yizheng']], yangbiao:['male','qun',3,['zhaohan','rangjie','yizheng']],
@ -266,6 +268,193 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
characterFilter:{}, characterFilter:{},
skill:{ skill:{
rezhengrong:{
trigger:{player:'useCardAfter'},
direct:true,
audio:'drlt_zhenrong',
filter:function(event,player){
if(!event.targets) return false;
if(!event.isPhaseUsing(player)) return false;
var bool=false;
for(var i=0;i<event.targets.length;i++){
if(event.targets[i]!=player){bool=true;break}
}
if(!bool) return false;
return player.getAllHistory('useCard',function(evt){
if(!evt.isPhaseUsing(player)) return false;
for(var i=0;i<evt.targets.length;i++){
if(evt.targets[i]!=player) return true;
}
return false;
}).indexOf(event)%2==1;
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('rezhengrong'),'将一名其他角色的随机一张牌置于你的武将牌上,成为「荣」',function(card,player,target){
return target!=player&&target.countCards('he')>0;
}).set('ai',function(target){
return (1-get.attitude(_status.event.player,target))/target.countCards('he');
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=result.targets[0];
player.logSkill('rezhengrong',target);
var card=target.getCards('he').randomGet();
game.log(player,'选择了',card);
target.$give(card,player,false);
target.lose(card,ui.special,'toStorage');
if(!player.storage.rezhengrong) player.storage.rezhengrong=[];
player.storage.rezhengrong.push(card);
player.markSkill('rezhengrong');
game.delayx();
}
},
marktext:'荣',
intro:{
content:'cards',
onunmark:'throw',
},
},
rehongju:{
trigger:{player:'phaseZhunbeiBegin'},
audio:'drlt_hongju',
forced:true,
unique:true,
juexingji:true,
skillAnimation:true,
animationColor:'thunder',
derivation:'reqingce',
filter:function(event,player){
return player.storage.rezhengrong&&player.storage.rezhengrong.length>=3&&game.dead.length>0;
},
content:function(){
'step 0'
player.awakenSkill('rehongju');
player.draw(player.storage.rezhengrong.length);
'step 1'
if(player.countCards('h')==0) event.goto(3);
else{
var dialog=['请选择要交换的手牌和「荣」,或点「取消」','<div class="text center">「征荣」牌</div>',player.storage.rezhengrong,'<div class="text center">手牌区</div>',player.getCards('h')];
var next=player.chooseButton(dialog);
next.set('filterButton',function(button){
var ss=_status.event.player.storage.rezhengrong;
var hs=_status.event.player.getCards('h');
var sn=0;
var hn=0;
var ub=ui.selected.buttons;
for(var i=0;i<ub.length;i++){
if(ss.contains(ub[i].link)) sn++;
else hn++;
}
return !(sn>=hs.length&&ss.contains(button.link)||hn>=ss.length&&hs.contains(button.link));
});
next.set('selectButton',function(){
if(ui.selected.buttons.length==0) return 2;
var ss=_status.event.player.storage.rezhengrong;
var hs=_status.event.player.getCards('h');
var sn=0;
var hn=0;
var ub=ui.selected.buttons;
for(var i=0;i<ub.length;i++){
if(ss.contains(ub[i].link)) sn++;
else hn++;
}
if(sn!=hn) return 2*Math.max(sn,hn);
else{
if(sn==ss.length||hn==hs.length||sn==hs.length||hn==ss.length) return ub.length;
return [ub.length,ub.length+1];
}
});
next.set('ai',function(){return -1});
}
'step 2'
if(result.bool){
var gains=[];
var pushs=[];
for(var i=0;i<result.links.length;i++){
var card=result.links[i];
if(player.storage.rezhengrong.contains(card)) gains.push(card);
else pushs.push(card);
}
player.lose(pushs,ui.special,'toStorage');
game.log(player,'将',pushs,'放在了武将牌上');
player.gain(gains,'gain2','log','fromStorage');
player.storage.rezhengrong.addArray(pushs);
player.storage.rezhengrong.removeArray(gains);
player.markSkill('rezhengrong');
}
'step 3'
player.addSkill('reqingce');
game.log(player,'获得了技能','#g【清侧】');
player.loseMaxHp();
},
},
reqingce:{
enable:'phaseUse',
audio:'drlt_qingce',
filter:function(event,player){
return player.storage.rezhengrong&&player.storage.rezhengrong.length>0;
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('请选择要移去的「荣」',player.storage.rezhengrong,'hidden');
},
backup:function(links,player){
return {
card:links[0],
filterCard:function(){return false},
selectCard:-1,
filterTarget:function(card,player,target){
return target.countDiscardableCards(player,'ej')>0;
},
delay:false,
audio:'drlt_qingce',
content:lib.skill.reqingce.contentx,
ai:{
result:{
target:function(player,target){
var att=get.attitude(player,target);
if(att>0&&(target.countCards('j')>0||target.countCards('e',function(card){
return get.value(card,target)<0;
}))) return 2;
if(att<0&&target.countCards('e')>0&&!target.hasSkillTag('noe')) return -1;
return 0;
},
},
},
}
},
prompt:function(links,player){
return '弃置一名角色装备区或判定区内的一张牌';
},
},
contentx:function(){
'step 0'
var card=lib.skill.reqingce_backup.card;
player.$throw(card);
game.cardsDiscard(card);
player.storage.rezhengrong.remove(card);
player[player.storage.rezhengrong.length>0?'markSkill':'unmarkSkill']('rezhengrong');
'step 1'
if(target.countDiscardableCards(player,'ej')>0){
player.discardPlayerCard('ej',true,target);
}
},
ai:{
order:8,
result:{
player:function(player){
if(game.hasPlayer(function(current){
var att=get.attitude(player,current);
if((att>0&&current.countCards('j')>0)||(att<0&&current.countCards('e')>0)) return true;
return false;
})) return 1;
return 0;
},
},
},
},
fengji:{ fengji:{
audio:2, audio:2,
trigger:{player:'phaseBegin'}, trigger:{player:'phaseBegin'},
@ -668,6 +857,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var ts=target.getCards('h').sort(function(a,b){ var ts=target.getCards('h').sort(function(a,b){
return b.number-a.number; return b.number-a.number;
}); });
if(!hs.length||!ts.length) return 0;
if(hs[0].number>ts[0].number) return -1; if(hs[0].number>ts[0].number) return -1;
return 0; return 0;
}, },
@ -3801,7 +3991,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhouxuan2:'周旋', zhouxuan2:'周旋',
zhouxuan_info:'结束阶段,你可以弃置一张牌并指定一名角色,然后选择一个基本牌的名称或非基本牌的类型。其使用或打出下一张牌时,若此牌的名称或类型和你选择的相同,则你观看牌堆顶的三张牌,然后将这些牌分配给任意角色。', zhouxuan_info:'结束阶段,你可以弃置一张牌并指定一名角色,然后选择一个基本牌的名称或非基本牌的类型。其使用或打出下一张牌时,若此牌的名称或类型和你选择的相同,则你观看牌堆顶的三张牌,然后将这些牌分配给任意角色。',
fengji:'丰积', fengji:'丰积',
fengji_info:'锁定技,回合结束时,你记录你的手牌数。回合开始时,若你的手牌数不小于你记录的手牌数,则你摸两张牌且本回合手牌上限+X。X为你的体力值', fengji_info:'锁定技,回合结束时,你记录你的手牌数。回合开始时,若你的手牌数不小于你记录的手牌数,则你摸两张牌且本回合手牌上限+X。X为你已损失的体力值',
re_guanqiujian:'手杀毌丘俭',
rezhengrong:'征荣',
rehongju:'鸿举',
reqingce:'清侧',
reqingce_backup:'清侧',
rezhengrong_info:'当你于出牌阶段使用的指定了其他角色为目标的牌结算完成后,若此牌是你本局游戏内于出牌阶段使用的指定了其他角色为目标的第偶数张牌,则你可以将一名其他角色角色的随机一张牌置于你的武将牌上,称为「荣」。',
rehongju_info:'觉醒技准备阶段若你武将牌上「荣」的数量不小于3且有角色死亡则你摸等同于「荣」数量的牌。然后可以用任意数量的手牌交换等量的「荣」。你减1点体力上限并获得技能〖清侧〗。',
reqingce_info:'出牌阶段,你可以将一张「荣」置入弃牌堆,然后弃置场上的一张牌。',
re_pangtong:"手杀庞统",
} }
}; };
}); });

View File

@ -750,20 +750,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
} }
}, },
shiyong:{
audio:2,
trigger:{player:'damageEnd'},
forced:true,
check:function(){
return false;
},
filter:function(event,player){
return event.card&&event.card.name=='sha'&&(get.color(event.card)=='red'||event.getParent(2).jiu==true);
},
content:function(){
player.loseMaxHp();
}
},
oldqianxi:{ oldqianxi:{
trigger:{source:'damageBegin2'}, trigger:{source:'damageBegin2'},
check:function(event,player){ check:function(event,player){
@ -922,8 +908,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
oldzhenlie_info:'在你的判定牌生效前,你可以亮出牌堆顶的一张牌代替之', oldzhenlie_info:'在你的判定牌生效前,你可以亮出牌堆顶的一张牌代替之',
oldmiji:'秘计', oldmiji:'秘计',
oldmiji_info:'准备/结束阶段开始时若你已受伤你可以判定若判定结果为黑色你观看牌堆顶的X张牌X为你已损失的体力值然后将这些牌交给一名角色', oldmiji_info:'准备/结束阶段开始时若你已受伤你可以判定若判定结果为黑色你观看牌堆顶的X张牌X为你已损失的体力值然后将这些牌交给一名角色',
shiyong:'恃勇',
shiyong_info:'锁定技当你受到一次红色【杀】或【酒】【杀】造成的伤害后须减1点体力上限',
oldqianxi:'潜袭', oldqianxi:'潜袭',
oldqianxi_info:'当你使用【杀】对距离为1的目标角色造成伤害时你可以进行一次判定若判定结果不为红桃你防止此伤害令其减1点体力上限', oldqianxi_info:'当你使用【杀】对距离为1的目标角色造成伤害时你可以进行一次判定若判定结果不为红桃你防止此伤害令其减1点体力上限',
oldxuanfeng:'旋风', oldxuanfeng:'旋风',

View File

@ -6,7 +6,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
refresh:{ refresh:{
refresh_standard:["re_caocao","re_simayi","re_guojia","re_lidian","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_xushu","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_gongsunzan","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong"], refresh_standard:["re_caocao","re_simayi","re_guojia","re_lidian","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_xushu","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_gongsunzan","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong"],
refresh_feng:['caoren','ol_xiahouyuan','re_huangzhong','re_weiyan','re_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji'], refresh_feng:['caoren','ol_xiahouyuan','re_huangzhong','re_weiyan','re_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji'],
refresh_huo:["ol_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","re_pangtong","ol_yuanshao","re_pangde"], refresh_huo:["ol_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","re_pangde"],
refresh_lin:['re_zhurong','re_menghuo','re_dongzhuo','re_sunjian','re_caopi','re_xuhuang'], refresh_lin:['re_zhurong','re_menghuo','re_dongzhuo','re_sunjian','re_caopi','re_xuhuang'],
refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce'], refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce'],
refresh_yijiang:['re_xusheng','re_wuguotai','re_gaoshun','re_zhangyi'], refresh_yijiang:['re_xusheng','re_wuguotai','re_gaoshun','re_zhangyi'],
@ -14,6 +14,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
connect:true, connect:true,
character:{ character:{
ol_pangtong:['male','shu',3,['xinlianhuan','olniepan'],[]],
re_zhangyi:['male','shu',4,['rewurong','shizhi']], re_zhangyi:['male','shu',4,['rewurong','shizhi']],
re_xusheng:['male','wu',4,['repojun']], re_xusheng:['male','wu',4,['repojun']],
re_wuguotai:['female','wu',3,['reganlu','buyi']], re_wuguotai:['female','wu',3,['reganlu','buyi']],
@ -64,7 +65,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_xunyu:["male","wei",3,["quhu","rejieming"],[]], re_xunyu:["male","wei",3,["quhu","rejieming"],[]],
re_dianwei:["male","wei",4,["reqiangxi"],[]], re_dianwei:["male","wei",4,["reqiangxi"],[]],
re_yanwen:["male","qun",4,["reshuangxiong"],[]], re_yanwen:["male","qun",4,["reshuangxiong"],[]],
re_pangtong:['male','shu',3,['xinlianhuan','niepan'],[]],
ol_yuanshao:['male','qun',4,['olluanji','olxueyi'],['zhu']], ol_yuanshao:['male','qun',4,['olluanji','olxueyi'],['zhu']],
re_zhurong:['female','shu',4,['juxiang','relieren']], re_zhurong:['female','shu',4,['juxiang','relieren']],
re_menghuo:['male','shu',4,['huoshou','rezaiqi']], re_menghuo:['male','shu',4,['huoshou','rezaiqi']],
@ -93,6 +93,70 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sunben:['zhouyu','taishici','daqiao'], sunben:['zhouyu','taishici','daqiao'],
}, },
skill:{ skill:{
olniepan:{
audio:2,
unique:true,
enable:'chooseToUse',
mark:true,
skillAnimation:true,
animationStr:'涅盘',
limited:true,
animationColor:'orange',
init:function(player){
player.storage.olniepan=false;
},
filter:function(event,player){
if(player.storage.olniepan) return false;
if(event.type=='dying'){
if(player!=event.dying) return false;
return true;
}
return false;
},
content:function(){
'step 0'
player.awakenSkill('olniepan');
player.storage.olniepan=true;
player.discard(player.getCards('hej'));
'step 1'
player.link(false);
'step 2'
player.turnOver(false);
'step 3'
player.draw(3);
'step 4'
if(player.hp<3){
player.recover(3-player.hp);
}
'step 5'
player.chooseControl('bazhen','rehuoji','rekanpo').set('prompt','选择获得一个技能').ai=function(){
return ['rehuoji','bazhen'].randomGet();
};
'step 6'
player.addSkillLog(result.control);
},
ai:{
order:1,
skillTagFilter:function(player){
if(player.storage.olniepan) return false;
if(player.hp>0) return false;
},
save:true,
result:{
player:function(player){
if(player.hp<=0) return 10;
if(player.hp<=2&&player.countCards('he')<=1) return 10;
return 0;
}
},
threaten:function(player,target){
if(!target.storage.olniepan) return 0.6;
}
},
intro:{
content:'limited'
}
},
rewurong:{ rewurong:{
enable:'phaseUse', enable:'phaseUse',
usable:1, usable:1,
@ -1786,7 +1850,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rehuoji:{ rehuoji:{
position:"he", position:"he",
audio:2, audio:2,
audioname:['ol_sp_zhugeliang'], audioname:['ol_sp_zhugeliang','ol_pangtong'],
enable:"chooseToUse", enable:"chooseToUse",
filterCard:function (card){ filterCard:function (card){
return get.color(card)=='red'; return get.color(card)=='red';
@ -1806,60 +1870,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
return 4-get.value(card) return 4-get.value(card)
}, },
ai:{
basic:{
order:4,
value:[3,1],
useful:1,
},
wuxie:function (target,card,player,current,state){
if(get.attitude(current,player)>=0&&state>0) return false;
},
result:{
player:function (player){
var nh=player.countCards('h');
if(nh<=player.hp&&nh<=4&&_status.event.name=='chooseToUse'){
if(typeof _status.event.filterCard=='function'&&
_status.event.filterCard({name:'huogong'})){
return -10;
}
if(_status.event.skill){
var viewAs=get.info(_status.event.skill).viewAs;
if(viewAs=='huogong') return -10;
if(viewAs&&viewAs.name=='huogong') return -10;
}
}
return 0;
},
target:function (player,target){
if(target.hasSkill('huogong2')||target.countCards('h')==0) return 0;
if(player.countCards('h')<=1) return 0;
if(target==player){
if(typeof _status.event.filterCard=='function'&&
_status.event.filterCard({name:'huogong'})){
return -1.5;
}
if(_status.event.skill){
var viewAs=get.info(_status.event.skill).viewAs;
if(viewAs=='huogong') return -1.5;
if(viewAs&&viewAs.name=='huogong') return -1.5;
}
return 0;
}
return -1.5;
},
},
tag:{
damage:1,
fireDamage:1,
natureDamage:1,
norepeat:1,
},
},
}, },
rekanpo:{ rekanpo:{
audio:2, audio:2,
audioname:['ol_sp_zhugeliang'], audioname:['ol_sp_zhugeliang','ol_pangtong'],
position:"he", position:"he",
enable:"chooseToUse", enable:"chooseToUse",
filterCard:function (card){ filterCard:function (card){
@ -1873,17 +1887,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
prompt:"将一张黑色手牌当无懈可击使用", prompt:"将一张黑色手牌当无懈可击使用",
check:function (card){return 8-get.value(card)}, check:function (card){return 8-get.value(card)},
threaten:1.2,
ai:{
basic:{
useful:[6,4],
value:[6,4],
},
result:{
player:1,
},
expose:0.2,
},
}, },
rejieming:{ rejieming:{
audio:2, audio:2,
@ -5115,7 +5118,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var player=_status.event.player; var player=_status.event.player;
if(player.isTurnedOver()||_status.event.getTrigger().player.getDamagedHp()>2) return -1; if(player.isTurnedOver()||_status.event.getTrigger().player.getDamagedHp()>2) return -1;
return (player.hp*player.hp)-get.value(card); return (player.hp*player.hp)-get.value(card);
}).set('prompt','弃置'+get.cnNumber(player.getDamagedHp())+'张牌并失去一点体力;或选择不弃置,将武将牌翻面并摸'+get.cnNumber(player.getDamagedHp())+'张牌。'); }).set('prompt','弃置'+get.cnNumber(player.getDamagedHp())+'张牌并失去一点体力;或选择不弃置,将武将牌翻面并摸'+get.cnNumber(player.getDamagedHp())+'张牌。');
} }
else event.finish(); else event.finish();
"step 2" "step 2"
@ -5371,7 +5374,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"re_xunyu":"界荀彧", "re_xunyu":"界荀彧",
"re_dianwei":"界典韦", "re_dianwei":"界典韦",
"re_yanwen":"界颜良文丑", "re_yanwen":"界颜良文丑",
re_pangtong:"界庞统",
xin_yuanshao:"手杀袁绍", xin_yuanshao:"手杀袁绍",
re_zhangjiao:'界张角', re_zhangjiao:'界张角',
re_sunce:'界孙策', re_sunce:'界孙策',
@ -5617,6 +5619,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_zhangyi:'界张嶷', re_zhangyi:'界张嶷',
rewurong:'怃戎', rewurong:'怃戎',
rewurong_info:'出牌阶段限一次你可以令一名其他角色与你同时展示一张手牌若你展示的是【杀】且该角色展示的不是【闪】则你对其造成1点伤害若你展示的不是【杀】且该角色展示的是【闪】则你获得其一张牌', rewurong_info:'出牌阶段限一次你可以令一名其他角色与你同时展示一张手牌若你展示的是【杀】且该角色展示的不是【闪】则你对其造成1点伤害若你展示的不是【杀】且该角色展示的是【闪】则你获得其一张牌',
ol_pangtong:'界庞统',
olniepan:'涅槃',
olniepan_info:'限定技当你处于濒死状态时你可以弃置你区域内的所有牌并复原你的武将牌然后摸三张牌并将体力回复至3点。然后你选择获得以下技能中的一个〖八阵〗/〖火计〗/〖看破〗',
refresh_standard:'界限突破·标', refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风', refresh_feng:'界限突破·风',

View File

@ -294,7 +294,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
prompt:function(links,player){ prompt:function(links,player){
return '选择弃置一张牌,获得'+get.translation(links[0])+'并弃置一名角色装备区或判定区内的一张牌'; return '选择弃置一牌,获得'+get.translation(links[0])+'并弃置一名角色装备区或判定区内的一张牌';
}, },
}, },
contentx:function(){ contentx:function(){
@ -2418,15 +2418,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
xinlianhuan:{ xinlianhuan:{
audio:2, audio:2,
audioname:['ol_pangtong'],
group:['lianhuan3','lianhuan5','lianhuan4'], group:['lianhuan3','lianhuan5','lianhuan4'],
}, },
lianhuan5:{ lianhuan5:{
inherit:'lianhuan2', inherit:'lianhuan2',
audioname:['ol_pangtong'],
audio:['xinlianhuan',2], audio:['xinlianhuan',2],
}, },
lianhuan3:{ lianhuan3:{
audio:['xinlianhuan',1], audio:['xinlianhuan',1],
audioname:['xinlianhuan'], audioname:['ol_pangtong'],
enable:'chooseToUse', enable:'chooseToUse',
filter:function(event,player){ filter:function(event,player){
return player.countCards('h',{suit:'club'})>0; return player.countCards('h',{suit:'club'})>0;
@ -2439,7 +2441,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lianhuan4:{ lianhuan4:{
mod:{ mod:{
selectTarget:function(card,player,range){ selectTarget:function(card,player,range){
if(card.name=='tiesuo'&&player.hasSkill('xinlianhuan')&&range[1]<3&&range[1]!=-1) range[1]=3; if(card.name=='tiesuo'&&range[1]!=-1) range[1]++;
}, },
}, },
}, },
@ -4888,7 +4890,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
bazhen:{ bazhen:{
audio:2, audio:2,
audioname:['re_sp_zhugeliang','ol_sp_zhugeliang'], audioname:['re_sp_zhugeliang','ol_sp_zhugeliang','ol_pangtong'],
equipSkill:true, equipSkill:true,
noHidden:true, noHidden:true,
inherit:'bagua_skill', inherit:'bagua_skill',
@ -7355,7 +7357,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
luanji:'乱击', luanji:'乱击',
xueyi:'血裔', xueyi:'血裔',
mengjin:'猛进', mengjin:'猛进',
xinlianhuan_info:' 你可以将一张♣手牌当【铁索连环】使用或重铸。你使用的【铁索连环】可以指定至多3个目标。', xinlianhuan_info:' 你可以将一张♣手牌当【铁索连环】使用或重铸。你使用【铁索连环】选择目标的上限数+1。',
huoji_info:'出牌阶段,你可以将你的任意一张红色手牌当作【火攻】使用。', huoji_info:'出牌阶段,你可以将你的任意一张红色手牌当作【火攻】使用。',
bazhen_info:'锁定技,若你的防具栏内没有牌且没有被废除,则你视为装备着【八卦阵】。', bazhen_info:'锁定技,若你的防具栏内没有牌且没有被废除,则你视为装备着【八卦阵】。',
kanpo_info:'你可以将你的任意一张黑色手牌当做【无懈可击】使用。', kanpo_info:'你可以将你的任意一张黑色手牌当做【无懈可击】使用。',

View File

@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true, connect:true,
characterSort:{ characterSort:{
sp:{ sp:{
sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","wenyang","xujing","yuantanyuanshang","wangshuang"], sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","wenyang","xujing","yuantanyuanshang","wangshuang","sunshao"],
sp_guansuo:['guansuo','baosanniang','huaman'], sp_guansuo:['guansuo','baosanniang','huaman'],
sp_whlw:["xurong","lijue","zhangji","fanchou","guosi"], sp_whlw:["xurong","lijue","zhangji","fanchou","guosi"],
sp_zlzy:["zhangqiying","lvkai","zhanggong","weiwenzhugezhi","beimihu"], sp_zlzy:["zhangqiying","lvkai","zhanggong","weiwenzhugezhi","beimihu"],
@ -23,6 +23,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
character:{ character:{
sunshao:['male','wu',3,['bizheng','yidian'],['unseen']],
wangshuang:['male','wei',5,['spzhuilie'],['unseen']], wangshuang:['male','wei',5,['spzhuilie'],['unseen']],
sp_gongsunzan:['male','qun',4,['spyicong','sptuji']], sp_gongsunzan:['male','qun',4,['spyicong','sptuji']],
sp_simazhao:['male','wei',3,['spzhaoxin','splanggu']], sp_simazhao:['male','wei',3,['spzhaoxin','splanggu']],
@ -180,6 +181,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//kaisa:["male","western",4,["zhengfu"]], //kaisa:["male","western",4,["zhengfu"]],
}, },
characterIntro:{ characterIntro:{
sunshao:'孙邵163年225年字长绪青州北海国人今山东潍坊市昌乐县西。原为北海相孔融的功曹被孔融称赞为可任朝廷要职的人才后随刘繇到达江东继而辅佐孙权。孙权称吴王后孙邵成为吴国首任丞相数年后病逝。由于孙邵和当时吴国史官的关系并不是很好因此在史书中并没有详细的记载。',
wangshuang:'王双(?-228年三国时期曹魏将领。蜀汉建兴六年228年诸葛亮出散关攻陈仓后粮尽而退。王双率领骑兵追击蜀军但在与蜀军的交战中被击败王双也被蜀军所斩。在《三国演义》中王双字子全是陇西郡狄道县今甘肃临洮县有万夫不当之勇。在诸葛亮北伐期间被魏延所斩。', wangshuang:'王双(?-228年三国时期曹魏将领。蜀汉建兴六年228年诸葛亮出散关攻陈仓后粮尽而退。王双率领骑兵追击蜀军但在与蜀军的交战中被击败王双也被蜀军所斩。在《三国演义》中王双字子全是陇西郡狄道县今甘肃临洮县有万夫不当之勇。在诸葛亮北伐期间被魏延所斩。',
yuantanyuanshang:'袁谭、袁尚分别是袁绍的长子和第三子。袁绍坐拥青州、冀州、幽州、并州,本是北方最强诸侯,却于官渡大败,惭恨而终。虽然袁绍生前偏爱小儿子袁尚,却并未在继承人上有明确表态,这也导致本应以嫡长子身份继承的袁谭因郭图、审配伪立遗令未能如愿。曹操击败袁绍后,进而渡过黄河追击袁家残余势力,袁谭告急,但袁尚仅给他少量兵力。曹操得郭嘉之计退兵坐观其变,恰使两人此前的种种矛盾彻底爆发,袁谭不敌便引狼入室,派辛毗作为使者向曹操求援,让袁尚不得不北逃投奔乌桓。但袁谭也在之后背叛曹操兵败被杀。没多久,乌桓也被平定,袁熙、袁尚二人投奔公孙康后被斩首送还曹操。', yuantanyuanshang:'袁谭、袁尚分别是袁绍的长子和第三子。袁绍坐拥青州、冀州、幽州、并州,本是北方最强诸侯,却于官渡大败,惭恨而终。虽然袁绍生前偏爱小儿子袁尚,却并未在继承人上有明确表态,这也导致本应以嫡长子身份继承的袁谭因郭图、审配伪立遗令未能如愿。曹操击败袁绍后,进而渡过黄河追击袁家残余势力,袁谭告急,但袁尚仅给他少量兵力。曹操得郭嘉之计退兵坐观其变,恰使两人此前的种种矛盾彻底爆发,袁谭不敌便引狼入室,派辛毗作为使者向曹操求援,让袁尚不得不北逃投奔乌桓。但袁谭也在之后背叛曹操兵败被杀。没多久,乌桓也被平定,袁熙、袁尚二人投奔公孙康后被斩首送还曹操。',
huaman:'花鬘,古典戏曲《龙凤巾》(一名《化外奇缘》)中的人物,身份为三国时期南蛮王孟获与祝融夫人的女儿,关索的夫人之一。在关于关三小姐·关银屏的民间传说中,其名字为“花中秀”,与关索其他几位夫人鲍三娘、王桃、王悦都被关索之姐关银屏编入自己的女兵营中。花鬘在《三国志》,《三国演义》均未有提及,只是戏曲中的虚构人物。其形象并非一般君主家中闺秀,而是与其母祝融相似,是一个可以披甲上阵,善于刀枪作战的女武将。戏曲中在诸葛亮平定南蛮时,花鬘曾与关索作战,失败被俘,两人互生爱意,南蛮王孟获降服后二人成婚。近些年,花鬘接连在各类三国题材的游戏中登场,更广被人知晓。', huaman:'花鬘,古典戏曲《龙凤巾》(一名《化外奇缘》)中的人物,身份为三国时期南蛮王孟获与祝融夫人的女儿,关索的夫人之一。在关于关三小姐·关银屏的民间传说中,其名字为“花中秀”,与关索其他几位夫人鲍三娘、王桃、王悦都被关索之姐关银屏编入自己的女兵营中。花鬘在《三国志》,《三国演义》均未有提及,只是戏曲中的虚构人物。其形象并非一般君主家中闺秀,而是与其母祝融相似,是一个可以披甲上阵,善于刀枪作战的女武将。戏曲中在诸葛亮平定南蛮时,花鬘曾与关索作战,失败被俘,两人互生爱意,南蛮王孟获降服后二人成婚。近些年,花鬘接连在各类三国题材的游戏中登场,更广被人知晓。',
@ -503,6 +505,80 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
skill:{ skill:{
//孙邵
bizheng:{
trigger:{player:'phaseDrawEnd'},
direct:true,
audio:2,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('bizheng'),lib.filter.notMe).set('ai',function(target){
var player=_status.event.player;
if(player.countCards('h')>player.hp) return 0;
var att=get.attitude(player,target);
if(att<=0||target.hasSkillTag('nogain')) return false;
if(target.hp-target.countCards('h')>=2) return att;
return att/2;
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('bizheng',target);
target.draw(2);
}
else event.finish();
'step 2'
if(player.countCards('h')>player.hp) player.chooseToDiscard(2,'he',true);
'step 3'
if(target.countCards('h')>target.hp) target.chooseToDiscard(2,'he',true);
},
},
yidian:{
trigger:{player:'useCard2'},
filter:function(event,player){
var info=get.info(event.card);
if(info.allowMultiple==false) return false;
if(event.targets&&!info.multitarget){
for(var i=0;i<ui.discardPile.childElementCount;i++){
if(ui.discardPile.childNodes[i].name==event.card.name) return false;
}
if(game.hasPlayer(function(current){
return lib.filter.targetEnabled2(event.card,player,current)&&!event.targets.contains(current);
})){
return true;
}
}
return false;
},
direct:true,
content:function(){
'step 0'
var prompt2='为'+get.translation(trigger.card)+'增加一个目标'
player.chooseTarget(get.prompt('yidian'),function(card,player,target){
var player=_status.event.player;
if(_status.event.targets.contains(target)) return false;
return lib.filter.targetEnabled2(_status.event.card,player,target);
}).set('prompt2',prompt2).set('ai',function(target){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
return get.effect(target,trigger.card,player,player);
}).set('targets',trigger.targets).set('card',trigger.card);
'step 1'
if(result.bool){
if(!event.isMine()) game.delayx();
event.targets=result.targets;
}
else{
event.finish();
}
'step 2'
if(event.targets){
player.logSkill('yidian',event.targets);
trigger.targets.addArray(event.targets);
}
}
},
//王双 //王双
spzhuilie:{ spzhuilie:{
mod:{ mod:{
@ -4534,6 +4610,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
content:function(){ content:function(){
trigger.targets.remove(player); trigger.targets.remove(player);
trigger.getParent().triggeredTargets2.remove(player);
game.delay(); game.delay();
trigger.player.removeMark('zongkui_mark'); trigger.player.removeMark('zongkui_mark');
} }
@ -6564,10 +6641,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//}, //},
prompt:function(event,player){ prompt:function(event,player){
var num=Math.max(2,player.storage.fanghun2||0); var num=Math.max(2,player.storage.fanghun2||0);
var mode=get.mode(); num=Math.min(num,8);
if(mode!='chess'&&mode!='tafang'&&mode!='stone'){
num=Math.min(num,game.players.length+game.dead.length);
}
return get.prompt('fuhan')+'(体力上限:'+num+''; return get.prompt('fuhan')+'(体力上限:'+num+'';
}, },
check:function(event,player){ check:function(event,player){
@ -6613,10 +6687,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).set('createDialog',['将武将牌替换为一名角色',[list.randomGets(5),'character']]); }).set('createDialog',['将武将牌替换为一名角色',[list.randomGets(5),'character']]);
player.awakenSkill('fuhan'); player.awakenSkill('fuhan');
'step 1' 'step 1'
var mode=get.mode(); event.num=Math.min(event.num,8);
if(mode!='chess'&&mode!='tafang'&&mode!='stone'){
event.num=Math.min(event.num,game.players.length+game.dead.length);
}
player.reinit('zhaoxiang',result.links[0],false); player.reinit('zhaoxiang',result.links[0],false);
if(_status.characterlist){ if(_status.characterlist){
_status.characterlist.add('zhaoxiang'); _status.characterlist.add('zhaoxiang');
@ -8622,7 +8693,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).logSkill='jiqiao'; }).logSkill='jiqiao';
'step 1' 'step 1'
if(result.bool){ if(result.bool){
event.cards=get.cards(3*result.cards.length); event.cards=get.cards(2*result.cards.length);
player.showCards(event.cards); player.showCards(event.cards);
} }
else{ else{
@ -8632,7 +8703,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var gained=[]; var gained=[];
var tothrow=[]; var tothrow=[];
for(var i=0;i<event.cards.length;i++){ for(var i=0;i<event.cards.length;i++){
if(get.type(event.cards[i],'trick')=='trick'){ if(get.type(event.cards[i])!='equip'){
gained.push(event.cards[i]); gained.push(event.cards[i]);
} }
else{ else{
@ -8667,6 +8738,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
mod:{ mod:{
cardUsable:function(card,player,num){
if(card.name=='sha'&&!player.getEquip(1)) return num+1;
},
maxHandcard:function(player,num){ maxHandcard:function(player,num){
if(player.getEquip(3)||player.getEquip(4)||player.getEquip(6)) return; if(player.getEquip(3)||player.getEquip(4)||player.getEquip(6)) return;
return num+1; return num+1;
@ -8827,6 +8901,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.control=='转移'){ if(result.control=='转移'){
player.draw(); player.draw();
trigger.getParent().targets.remove(trigger.target); trigger.getParent().targets.remove(trigger.target);
trigger.getParent().triggeredTargets2.remove(trigger.target);
trigger.getParent().targets.push(player); trigger.getParent().targets.push(player);
trigger.untrigger(); trigger.untrigger();
trigger.player.line(player); trigger.player.line(player);
@ -8847,6 +8922,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//event.trigger("addCardToStorage"); //event.trigger("addCardToStorage");
} }
trigger.targets.length=0; trigger.targets.length=0;
trigger.getParent().triggeredTargets2.length=0;
} }
game.delay(); game.delay();
}, },
@ -10327,7 +10403,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}); });
'step 1' 'step 1'
if(result.bool){ if(result.bool){
player.addTempSkill('chenqing2',{player:'phaseZhunbeiBegin'}); player.addTempSkill('chenqing2','roundStart');
event.target=result.targets[0]; event.target=result.targets[0];
event.target.draw(4); event.target.draw(4);
player.logSkill('chenqing',event.target); player.logSkill('chenqing',event.target);
@ -12158,7 +12234,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2, audio:2,
trigger:{global:'phaseUseBegin'}, trigger:{global:'phaseUseBegin'},
filter:function(event,player){ filter:function(event,player){
return (get.mode()!='guozhan'||event.player!=player)&&player.countCards('h')>0; return /*(get.mode()!='guozhan'||event.player!=player)&&*/player.countCards('h')>0;
}, },
direct:true, direct:true,
content:function(){ content:function(){
@ -12208,19 +12284,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return player.getStat('kill')>0; return player.getStat('kill')>0;
}, },
content:function(){ content:function(){
if(get.mode()=='guozhan'){ //if(get.mode()=='guozhan'){
player.draw(3); // player.draw(3);
} //}
else{ //else{
player.draw(3*player.getStat('kill')); player.draw(3*player.getStat('kill'));
} //}
}, },
subSkill:{ subSkill:{
draw:{ draw:{
trigger:{global:'dieAfter'}, trigger:{global:'dieAfter'},
frequent:true, frequent:true,
filter:function(event,player){ filter:function(event,player){
return get.mode()!='guozhan'&&player!=event.source; return /*get.mode()!='guozhan'&&*/player!=event.source;
}, },
content:function(){player.draw()}, content:function(){player.draw()},
}, },
@ -16926,7 +17002,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
fanghun:'芳魂', fanghun:'芳魂',
fanghun_info:'当你使用【杀】造成伤害或受到【杀】的伤害后你获得X个“梅影”标记X为伤害点数你可以移去1个“梅影”标记来发动〖龙胆〗并摸一张牌。', fanghun_info:'当你使用【杀】造成伤害或受到【杀】的伤害后你获得X个“梅影”标记X为伤害点数你可以移去1个“梅影”标记来发动〖龙胆〗并摸一张牌。',
fuhan:'扶汉', fuhan:'扶汉',
fuhan_info:'限定技,回合开始时,你可以移去所有“梅影”标记并摸等量的牌,随机观看五名未登场的蜀势力角色,将武将牌替换为其中一名角色,并将体力上限数调整为本局游戏中移去“梅影”标记的数量(至多为游戏开始时的角色数然后回复1点体力。', fuhan_info:'限定技,回合开始时,你可以移去所有“梅影”标记并摸等量的牌,随机观看五名未登场的蜀势力角色,将武将牌替换为其中一名角色,并将体力上限数调整为本局游戏中移去“梅影”标记的数量(至少为2至多为8然后回复1点体力。',
yjixi:'觊玺', yjixi:'觊玺',
yjixi_info:'觉醒技结束阶段若你连续三回合没有因〖庸肆〗而失去过体力则你增加1点体力上限并回复1点体力然后选择一项获得技能〖妄尊〗摸两张牌并获得当前主公的主公技。', yjixi_info:'觉醒技结束阶段若你连续三回合没有因〖庸肆〗而失去过体力则你增加1点体力上限并回复1点体力然后选择一项获得技能〖妄尊〗摸两张牌并获得当前主公的主公技。',
xinyongsi:'庸肆', xinyongsi:'庸肆',
@ -17002,9 +17078,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mouduan:'谋断', mouduan:'谋断',
mouduan_info:'游戏开始时你获得标记“武”并获得技能〖激昂〗和〖谦逊〗。当你失去手牌后若手牌数不大于2你须将你的标记变为“文”将这两项技能改为〖英姿〗和〖克己〗。一名角色的回合开始前你可弃一张牌将标记翻回。', mouduan_info:'游戏开始时你获得标记“武”并获得技能〖激昂〗和〖谦逊〗。当你失去手牌后若手牌数不大于2你须将你的标记变为“文”将这两项技能改为〖英姿〗和〖克己〗。一名角色的回合开始前你可弃一张牌将标记翻回。',
jiqiao:'机巧', jiqiao:'机巧',
jiqiao_info:'出牌阶段开始时,你可以弃置任意张装备牌,然后亮出牌堆顶三倍数量的牌并获得其中的锦囊牌。', jiqiao_info:'出牌阶段开始时,你可以弃置任意张装备牌,然后亮出牌堆顶两倍数量的牌并获得其中的非装备牌。',
linglong:'玲珑', linglong:'玲珑',
linglong_info:'锁定技,若你的装备区没有防具牌,视为你装备着【八卦阵】;若你的装备区没有坐骑牌,你的手牌上限+1若你的装备区没有宝物牌则你视为拥有技能〖奇才〗。', linglong_info:'锁定技,若你的装备区没有武器牌,则你使用【杀】的次数上限+1若你的装备区没有防具牌,视为你装备着【八卦阵】;若你的装备区没有坐骑牌,你的手牌上限+1若你的装备区没有宝物牌则你视为拥有技能〖奇才〗。',
fenyong:'愤勇', fenyong:'愤勇',
fenyong2:'愤勇', fenyong2:'愤勇',
fenyong2_bg:'勇', fenyong2_bg:'勇',
@ -17256,9 +17332,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shenxian_info:'每名角色的回合限一次,你的回合外,当有其他角色因弃置而失去基本牌时,你可以摸一张牌。', shenxian_info:'每名角色的回合限一次,你的回合外,当有其他角色因弃置而失去基本牌时,你可以摸一张牌。',
oldshenxian_info:'你的回合外,每当有其他角色因弃置而失去基本牌时,你可以摸一张牌。', oldshenxian_info:'你的回合外,每当有其他角色因弃置而失去基本牌时,你可以摸一张牌。',
qiluan_info:'一名角色的回合结束时你可以摸3X张牌X为你本回合内杀死过的角色数。一名其他角色死亡后若其不是你杀死的则你可以摸一张牌。', qiluan_info:'一名角色的回合结束时你可以摸3X张牌X为你本回合内杀死过的角色数。一名其他角色死亡后若其不是你杀死的则你可以摸一张牌。',
qiluan_info_guozhan:'一名角色的回合结束时,若你于回合内杀死过角色,则你可以摸三张牌。', //qiluan_info_guozhan:'一名角色的回合结束时,若你于回合内杀死过角色,则你可以摸三张牌。',
zhendu_info:'一名角色的出牌阶段开始时,你可以弃置一张手牌,视为该角色使用了一张【酒】。若该角色不是你,你对其造成一点伤害。', zhendu_info:'一名角色的出牌阶段开始时,你可以弃置一张手牌,视为该角色使用了一张【酒】。若该角色不是你,你对其造成一点伤害。',
zhendu_info_guozhan:'其他角色的出牌阶段开始时,你可以弃置一张手牌,视为该角色使用了一张【酒】。若如此做,你对其造成一点伤害。', //zhendu_info_guozhan:'其他角色的出牌阶段开始时,你可以弃置一张手牌,视为该角色使用了一张【酒】。若如此做,你对其造成一点伤害。',
shangyi_info:'出牌阶段限一次,你可以观看一名其他角色的手牌,然后弃置其中的一张黑色牌。', shangyi_info:'出牌阶段限一次,你可以观看一名其他角色的手牌,然后弃置其中的一张黑色牌。',
zniaoxiang_info:'锁定技,当你使用【杀】指定目标后,你令目标角色响应此【杀】所需要使用的【闪】的数目+1。', zniaoxiang_info:'锁定技,当你使用【杀】指定目标后,你令目标角色响应此【杀】所需要使用的【闪】的数目+1。',
shoucheng_info:'当一名其他角色于其回合外失去手牌时,若其没有手牌,则你可令该角色摸一张牌。', shoucheng_info:'当一名其他角色于其回合外失去手牌时,若其没有手牌,则你可令该角色摸一张牌。',
@ -17330,6 +17406,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
spzhuilie:'追猎', spzhuilie:'追猎',
spzhuilie2:'追猎', spzhuilie2:'追猎',
spzhuilie_info:'锁定技你使用【杀】无距离限制当你使用【杀】指定目标后若其不在你的攻击范围内此【杀】不计入使用次数限制且你判定。若判定结果为装备牌此【杀】的伤害基数改为XX为其体力值锦囊牌你失去1点体力。', spzhuilie_info:'锁定技你使用【杀】无距离限制当你使用【杀】指定目标后若其不在你的攻击范围内此【杀】不计入使用次数限制且你判定。若判定结果为装备牌此【杀】的伤害基数改为XX为其体力值锦囊牌你失去1点体力。',
sunshao:'孙邵',
bizheng:'弼政',
bizheng_info:'摸牌阶段结束时,你可以令一名其他角色摸两张牌。然后,若你的手牌数大于体力值,你弃置两张牌。若其的手牌数大于体力值,其弃置两张牌。',
yidian:'佚典',
yidian_info:'当你使用牌选择目标时,若弃牌堆中没有与此牌名称相同的牌,则你可以为此牌增加一个目标(无距离限制)。',
sp_default:"常规", sp_default:"常规",
sp_whlw:"文和乱武", sp_whlw:"文和乱武",

View File

@ -1913,11 +1913,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
position:'he', position:'he',
filterCard:lib.filter.cardDiscardable, filterCard:lib.filter.cardDiscardable,
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
var trigger=_status.event.getTrigger(); var trigger=_status.event;
if(trigger.targets.contains(target)) return false; if(player.inRange(target)&&target!=trigger.source){
if(player.inRange(target)&& if(lib.filter.targetEnabled(trigger.card,trigger.source,target)) return true;
target!=trigger.player){
if(player.canUse(trigger.card,target)) return true;
} }
return false; return false;
}, },
@ -1941,6 +1939,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
prompt:get.prompt('liuli'), prompt:get.prompt('liuli'),
prompt2:'弃置一张牌,将此【杀】转移给攻击范围内的一名其他角色', prompt2:'弃置一张牌,将此【杀】转移给攻击范围内的一名其他角色',
source:trigger.player,
card:trigger.card,
}); });
"step 1" "step 1"
if(result.bool){ if(result.bool){
@ -1948,6 +1948,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.logSkill(event.name,target); player.logSkill(event.name,target);
player.discard(result.cards); player.discard(result.cards);
var evt=trigger.getParent(); var evt=trigger.getParent();
evt.triggeredTargets2.remove(player);
evt.targets.remove(player); evt.targets.remove(player);
evt.targets.push(target); evt.targets.push(target);
} }

View File

@ -262,7 +262,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
twxiaolian:{ twxiaolian:{
audio:2, audio:2,
trigger:{global:'useCardToPlayer'}, trigger:{global:'useCardToTarget'},
logTarget:'target', logTarget:'target',
filter:function(event,player){ filter:function(event,player){
return event.card&&event.card.name=='sha'&&event.player!=player&& return event.card&&event.card.name=='sha'&&event.player!=player&&
@ -274,6 +274,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){ content:function(){
trigger.getParent().twxiaolian=trigger.targets[0]; trigger.getParent().twxiaolian=trigger.targets[0];
trigger.targets.length=0; trigger.targets.length=0;
trigger.getParent().triggeredTargets2.length=0;
trigger.targets.push(player); trigger.targets.push(player);
}, },
group:'twxiaolian_damage', group:'twxiaolian_damage',
@ -337,6 +338,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){ content:function(){
'step 0' 'step 0'
trigger.targets.length=0; trigger.targets.length=0;
trigger.getParent().triggeredTargets1.length=0;
trigger.targets.push(player); trigger.targets.push(player);
var next=game.createEvent('twtijin_discard',null,trigger.getParent(2)); var next=game.createEvent('twtijin_discard',null,trigger.getParent(2));
next.player=player; next.player=player;

View File

@ -1177,6 +1177,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
audio:"xinfu_guanchao", audio:"xinfu_guanchao",
forced:true, forced:true,
mod:{
aiOrder:function(player,card,num){
if(typeof card.number!='number') return;
var history=player.getHistory('useCard',function(evt){
return evt.isPhaseUsing();
});
if(history.length==0) return num+10*(14-card.number);
var num=get.number(history[0].card);
if(!num) return;
for(var i=1;i<history.length;i++){
var num2=get.number(history[i].card);
if(!num2||num2<=num) return;
num=num2;
}
if(card.number>num) return num+10*(14-card.number);
},
},
filter:function (event,player){ filter:function (event,player){
var history=player.getHistory('useCard',function(evt){ var history=player.getHistory('useCard',function(evt){
return evt.isPhaseUsing(); return evt.isPhaseUsing();
@ -1213,6 +1230,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
audio:"xinfu_guanchao", audio:"xinfu_guanchao",
forced:true, forced:true,
mod:{
aiOrder:function(player,card,num){
if(typeof card.number!='number') return;
var history=player.getHistory('useCard',function(evt){
return evt.isPhaseUsing();
});
if(history.length==0) return num+10*card.number;
var num=get.number(history[0].card);
if(!num) return;
for(var i=1;i<history.length;i++){
var num2=get.number(history[i].card);
if(!num2||num2>=num) return;
num=num2;
}
if(card.number<num) return num+10*card.number;
},
},
filter:function (event,player){ filter:function (event,player){
var history=player.getHistory('useCard',function(evt){ var history=player.getHistory('useCard',function(evt){
return evt.isPhaseUsing(); return evt.isPhaseUsing();

View File

@ -192,6 +192,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
fazheng:['liubei'], fazheng:['liubei'],
}, },
skill:{ skill:{
shiyong:{
audio:2,
trigger:{player:'damageEnd'},
forced:true,
check:function(){
return false;
},
filter:function(event,player){
return event.card&&event.card.name=='sha'&&(get.color(event.card)=='red'||event.getParent(2).jiu==true);
},
content:function(){
player.loseMaxHp();
}
},
xindanshou:{ xindanshou:{
audio:'danshou', audio:'danshou',
trigger:{ trigger:{
@ -2003,7 +2017,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1" "step 1"
if(result.bool&&result.cards){ if(result.bool&&result.cards){
event.card=result.cards[0]; event.card=result.cards[0];
trigger.getParent().targets=[]; trigger.targets.length=0;
trigger.getParent().triggeredTargets2.length=0;
} }
else{ else{
event.finish(); event.finish();
@ -4162,6 +4177,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.broadcastAll(function(name){ game.broadcastAll(function(name){
lib.skill.jiaozhao2.viewAs=fakecard; lib.skill.jiaozhao2.viewAs=fakecard;
},fakecard); },fakecard);
var next=game.createEvent('jiaozhao3');
event.next.remove(next);
event.getParent(3).after.push(next);
next.player=player;
next.setContent(lib.skill.jiaozhao3.content);
}, },
ai:{ ai:{
order:9, order:9,
@ -4179,7 +4199,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
} }
}, },
group:['jiaozhao2','jiaozhao3'] group:['jiaozhao2']
}, },
jiaozhao2:{ jiaozhao2:{
enable:'phaseUse', enable:'phaseUse',
@ -4188,7 +4208,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(!player.storage.jiaozhao) return false; if(!player.storage.jiaozhao) return false;
var name=player.storage.jiaozhao_card.name; var name=player.storage.jiaozhao_card.name;
if(name=='tao'||name=='shan'||name=='wuzhong'||name=='jiu') return false; if(name=='tao'||name=='shan'||name=='wuzhong'||name=='jiu') return false;
return player.getCards('h').contains(player.storage.jiaozhao); return player.getCards('h').contains(player.storage.jiaozhao)&&game.checkMod(player.storage.jiaozhao,player,'unchanged','cardEnabled2',player)!==false;
}, },
filterCard:function(card,player){ filterCard:function(card,player){
return card==player.storage.jiaozhao; return card==player.storage.jiaozhao;
@ -6275,7 +6295,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterCard:true, filterCard:true,
selectCard:-1, selectCard:-1,
filter:function(event,player){ filter:function(event,player){
if(player.storage.zhanjue>=2) return false; if(player.getStat().skill.zhanjue_draw&&player.getStat().skill.zhanjue_draw>=2) return false;
var hs=player.getCards('h'); var hs=player.getCards('h');
if(!hs.length) return false; if(!hs.length) return false;
for(var i=0;i<hs.length;i++){ for(var i=0;i<hs.length;i++){
@ -6285,7 +6305,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return true; return true;
}, },
viewAs:{name:'juedou'}, viewAs:{name:'juedou'},
group:['zhanjue2','zhanjue3','zhanjue4'], group:['zhanjue4'],
ai:{ ai:{
damage:true, damage:true,
order:1, order:1,
@ -6329,20 +6349,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return event.skill=='zhanjue'; return event.skill=='zhanjue';
}, },
content:function(){ content:function(){
var num=1; "step 0"
if(player.hasSkill('zhanjue5')) num++; var stat=player.getStat().skill;
if(!stat.zhanjue_draw) stat.zhanjue_draw=0;
stat.zhanjue_draw++;
player.draw('nodelay');
var list=game.filterPlayer(function(current){ var list=game.filterPlayer(function(current){
var bool=(current==player||current.hasSkill('zhanjue5')); if(current.getHistory('damage',function(evt){
if(bool) current.removeSkill('zhanjue5'); return evt.card==trigger.card;
return bool; }).length>0){
}); if(current==player){
if(typeof player.storage.zhanjue!='number'){ stat.zhanjue_draw++;
player.storage.zhanjue=0;
} }
player.storage.zhanjue+=num; return true;
game.asyncDraw(list,function(current){ }
return current==player?num:1; return false;
}); });
if(list.length){
list.sortBySeat();
game.asyncDraw(list);
}
"step 1"
game.delay();
} }
}, },
zhanjue5:{}, zhanjue5:{},
@ -6578,8 +6606,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
huomo_count2:{ huomo_count2:{
trigger:{player:['useCard']}, trigger:{player:['useCard1']},
silent:true, silent:true,
firstDo:true,
filter:function(event){ filter:function(event){
return get.type(event.card)=='basic'; return get.type(event.card)=='basic';
}, },
@ -6641,6 +6670,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
backup:function(links,player){ backup:function(links,player){
return { return {
check:function(card){
return 1/Math.max(0.1,get.value(card));
},
filterCard:function(card){ filterCard:function(card){
return get.type(card)!='basic'&&get.color(card)=='black'; return get.type(card)!='basic'&&get.color(card)=='black';
}, },
@ -6657,7 +6689,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.log(player,'将',card,'置于牌堆顶'); game.log(player,'将',card,'置于牌堆顶');
event.result.card={name:event.result.card.name,nature:event.result.card.nature}; event.result.card={name:event.result.card.name,nature:event.result.card.nature};
event.result.cards=[]; event.result.cards=[];
player.lose(card,ui.special); player.lose(card,ui.special,'visible');
'step 1' 'step 1'
game.delay(); game.delay();
'step 2' 'step 2'
@ -8547,6 +8579,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.gain(result.cards,event.target,'give'); player.gain(result.cards,event.target,'give');
if(get.name(result.cards[0])!='shan'){ if(get.name(result.cards[0])!='shan'){
trigger.getParent().targets.push(event.target); trigger.getParent().targets.push(event.target);
trigger.getParent().triggeredTargets2.push(event.target);
game.log(event.target,'成为了额外目标'); game.log(event.target,'成为了额外目标');
} }
game.delay(); game.delay();
@ -8590,6 +8623,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
else{ else{
trigger.getParent().targets.push(event.target); trigger.getParent().targets.push(event.target);
trigger.getParent().triggeredTargets2.push(event.target);
game.log(event.target,'成为了额外目标'); game.log(event.target,'成为了额外目标');
} }
}, },
@ -10666,23 +10700,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'damageEnd'}, trigger:{player:'damageEnd'},
forced:true, forced:true,
audio:2, audio:2,
check:function(event,player){
return player.getHistory('damage',function(evt){
return evt!=event
}).length==0;
},
content:function(){ content:function(){
if(player.hasSkill('shibei_damaged')){ if(player.getHistory('damage',function(evt){
return evt!=trigger
}).length>0){
player.loseHp(); player.loseHp();
} }
else{ else{
player.recover(); player.recover();
} }
}, },
group:'shibei_mark',
subSkill:{ subSkill:{
mark:{
trigger:{player:'damageAfter'},
silent:true,
content:function(){
player.addTempSkill('shibei_damaged');
}
},
damaged:{}, damaged:{},
ai:{} ai:{}
}, },
@ -10697,7 +10730,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(target.hasSkill('shibei_ai')) return; if(target.hasSkill('shibei_ai')) return;
if(_status.event.getParent('useCard',true)||_status.event.getParent('_wuxie',true)) return; if(_status.event.getParent('useCard',true)||_status.event.getParent('_wuxie',true)) return;
if(get.tag(card,'damage')){ if(get.tag(card,'damage')){
if(target.hasSkill('shibei_damaged')){ if(target.getHistory('damage',function(evt){
return evt!=trigger
}).length>0){
return [1,-2]; return [1,-2];
} }
else{ else{
@ -11529,6 +11564,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhichi_info:'锁定技,当你于回合外受到伤害后,所有【杀】或普通锦囊牌对你无效直到回合结束。', zhichi_info:'锁定技,当你于回合外受到伤害后,所有【杀】或普通锦囊牌对你无效直到回合结束。',
zhichi2_info:'智迟已发动', zhichi2_info:'智迟已发动',
pojun_info:'当你使用【杀】造成伤害后你可以令受到该伤害的角色摸X张牌X为该角色当前的体力值且最多为5然后该角色将其武将牌翻面。', pojun_info:'当你使用【杀】造成伤害后你可以令受到该伤害的角色摸X张牌X为该角色当前的体力值且最多为5然后该角色将其武将牌翻面。',
shiyong:'恃勇',
shiyong_info:'锁定技当你受到一次红色【杀】或【酒】【杀】造成的伤害后须减1点体力上限',
yijiang_2011:'一将成名2011', yijiang_2011:'一将成名2011',
yijiang_2012:'一将成名2012', yijiang_2012:'一将成名2012',

View File

@ -553,6 +553,7 @@ window.noname_asset_list=[
'audio/die/ol_xiahouyuan.mp3', 'audio/die/ol_xiahouyuan.mp3',
'audio/die/chendeng.mp3', 'audio/die/chendeng.mp3',
'audio/die/yangbiao.mp3', 'audio/die/yangbiao.mp3',
'audio/die/ol_pangtong.mp3',
'audio/skill/anguo1.mp3', 'audio/skill/anguo1.mp3',
'audio/skill/anguo2.mp3', 'audio/skill/anguo2.mp3',
@ -2411,7 +2412,21 @@ window.noname_asset_list=[
'audio/skill/zhaohan1.mp3', 'audio/skill/zhaohan1.mp3',
'audio/skill/zhaohan2.mp3', 'audio/skill/zhaohan2.mp3',
'audio/skill/zhouxuan1.mp3', 'audio/skill/zhouxuan1.mp3',
'audio/skill/zhouxuan2.mp3', 'audio/skill/zhouxuan2.mp3', 'audio/skill/bazhen_ol_pangtong1.mp3',
'audio/skill/bazhen_ol_pangtong2.mp3',
'audio/skill/olniepan1.mp3',
'audio/skill/olniepan2.mp3',
'audio/skill/rehuoji_ol_pangtong1.mp3',
'audio/skill/rehuoji_ol_pangtong2.mp3',
'audio/skill/rekanpo_ol_pangtong1.mp3',
'audio/skill/rekanpo_ol_pangtong2.mp3',
'audio/skill/tsumugi_mugyu1.mp3',
'audio/skill/tsumugi_mugyu2.mp3',
'audio/skill/tsumugi_mugyu3.mp3',
'audio/skill/tsumugi_mugyu4.mp3',
'audio/skill/tsumugi_mugyu5.mp3',
'audio/skill/xinlianhuan_ol_pangtong1.mp3',
'audio/skill/xinlianhuan_ol_pangtong2.mp3',
'font/huangcao.ttf', 'font/huangcao.ttf',
'font/shousha.ttf', 'font/shousha.ttf',
@ -2919,6 +2934,11 @@ window.noname_asset_list=[
'image/character/re_heqi.jpg', 'image/character/re_heqi.jpg',
'image/character/re_zhangyi.jpg', 'image/character/re_zhangyi.jpg',
'image/character/yangbiao.jpg', 'image/character/yangbiao.jpg',
'image/character/re_guanqiujian.jpg',
'image/character/ol_pangtong.jpg',
'image/character/key_yui.jpg',
'image/character/key_tsumugi.jpg',
'image/character/key_yoshino.jpg',
'image/character/baiwuchang.jpg', 'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg', 'image/character/baosanniang.jpg',

View File

@ -6660,6 +6660,13 @@
return this.childNodes[row].childNodes[col]; return this.childNodes[row].childNodes[col];
} }
}; };
Array.prototype.numOf=function(item){
var num=0;
for(var i=0;i<this.length;i++){
if(this[i]==item) num++;
}
return num;
};
Array.prototype.filterInD=function(pos){ Array.prototype.filterInD=function(pos){
if(!pos) pos='o'; if(!pos) pos='o';
var list=[]; var list=[];
@ -13605,19 +13612,6 @@
} }
} }
} }
event.trigger('useCard1');
"step 1"
event.trigger('useCard2');
"step 2"
event.trigger('useCard');
event._oncancel=function(){
game.broadcastAll(function(id){
if(ui.tempnowuxie&&ui.tempnowuxie._origin==id){
ui.tempnowuxie.close();
delete ui.tempnowuxie;
}
},event.id);
};
if(true){ if(true){
var str=''; var str='';
if(targets.length){ if(targets.length){
@ -13651,6 +13645,19 @@
game.logv(player,[card,cards],targets); game.logv(player,[card,cards],targets);
} }
} }
event.trigger('useCard1');
"step 1"
event.trigger('useCard2');
"step 2"
event.trigger('useCard');
event._oncancel=function(){
game.broadcastAll(function(id){
if(ui.tempnowuxie&&ui.tempnowuxie._origin==id){
ui.tempnowuxie.close();
delete ui.tempnowuxie;
}
},event.id);
};
"step 3" "step 3"
event.sortTarget=function(animate){ event.sortTarget=function(animate){
var info=get.info(card,false); var info=get.info(card,false);
@ -13674,7 +13681,7 @@
event.getTriggerTarget=function(list1,list2){ event.getTriggerTarget=function(list1,list2){
var listx=list1.slice(0).sortBySeat(); var listx=list1.slice(0).sortBySeat();
for(var i=0;i<listx.length;i++){ for(var i=0;i<listx.length;i++){
if(!list2.contains(listx[i])) return listx[i]; if(list2.numOf(listx[i])<listx.numOf(listx[i])) return listx[i];
} }
return null; return null;
} }
@ -14626,6 +14633,7 @@
damage:function(){ damage:function(){
"step 0" "step 0"
event.forceDie=true; event.forceDie=true;
if(event.source&&event.source.isDead()) delete event.source;
if(num<=0){ if(num<=0){
event.trigger('damageZero'); event.trigger('damageZero');
event.finish(); event.finish();
@ -14633,6 +14641,7 @@
} }
else event.trigger('damageBegin1'); else event.trigger('damageBegin1');
"step 1" "step 1"
if(event.source&&event.source.isDead()) delete event.source;
if(num<=0){ if(num<=0){
event.trigger('damageZero'); event.trigger('damageZero');
event.finish(); event.finish();
@ -14640,6 +14649,7 @@
} }
else event.trigger('damageBegin2'); else event.trigger('damageBegin2');
"step 2" "step 2"
if(event.source&&event.source.isDead()) delete event.source;
if(num<=0){ if(num<=0){
event.trigger('damageZero'); event.trigger('damageZero');
event.finish(); event.finish();
@ -14647,6 +14657,7 @@
} }
else event.trigger('damageBegin3'); else event.trigger('damageBegin3');
"step 3" "step 3"
if(event.source&&event.source.isDead()) delete event.source;
if(num<=0){ if(num<=0){
event.trigger('damageZero'); event.trigger('damageZero');
event.finish(); event.finish();
@ -14654,6 +14665,7 @@
} }
else event.trigger('damageBegin4'); else event.trigger('damageBegin4');
"step 4" "step 4"
if(event.source&&event.source.isDead()) delete event.source;
if(num>0&&player.hujia&&!player.hasSkillTag('nohujia')){ if(num>0&&player.hujia&&!player.hasSkillTag('nohujia')){
if(num>=player.hujia){ if(num>=player.hujia){
event.hujia=player.hujia; event.hujia=player.hujia;
@ -14668,6 +14680,7 @@
} }
event.num=num; event.num=num;
"step 5" "step 5"
if(event.source&&event.source.isDead()) delete event.source;
if(lib.config.background_audio){ if(lib.config.background_audio){
game.playAudio('effect','damage'+(num>1?'2':'')); game.playAudio('effect','damage'+(num>1?'2':''));
} }
@ -14728,6 +14741,7 @@
} }
} }
"step 6" "step 6"
if(event.source&&event.source.isDead()) delete event.source;
if(player.hp<=0&&player.isAlive()){ if(player.hp<=0&&player.isAlive()){
game.delayx(); game.delayx();
player.dying(event); player.dying(event);
@ -14773,6 +14787,7 @@
} }
} }
"step 7" "step 7"
if(event.source&&event.source.isDead()) delete event.source;
if(!event.notrigger) event.trigger('damageSource'); if(!event.notrigger) event.trigger('damageSource');
}, },
recover:function(){ recover:function(){
@ -18642,6 +18657,7 @@
if(next.card==undefined&&!nocard) next.card=event.card; if(next.card==undefined&&!nocard) next.card=event.card;
if(next.cards==undefined&&!nocard) next.cards=event.cards; if(next.cards==undefined&&!nocard) next.cards=event.cards;
if(next.source==undefined&&!nosource) next.source=event.player; if(next.source==undefined&&!nosource) next.source=event.player;
if(next.source&&next.source.isDead()) delete next.source;
if(next.num==undefined) next.num=1; if(next.num==undefined) next.num=1;
if(next.nature=='poison') delete next._triggered; if(next.nature=='poison') delete next._triggered;
next.setContent('damage'); next.setContent('damage');
@ -20297,6 +20313,25 @@
return history; return history;
} }
}, },
getAllHistory:function(key,filter){
var list=[];
var all=this.actionHistory;
for(var j=0;j<all.length;j++){
if(!key||!all[j][key]){
list.push(all[j]);
}
else{
if(!filter) list.addArray(all[j][key]);
else{
var history=all[j][key].slice(0);
for(var i=0;i<history.length;i++){
if(filter(history[i])) list.push(history[i]);
}
}
}
}
return list;
},
getLastUsed:function(num){ getLastUsed:function(num){
if(typeof num!='number') num=0; if(typeof num!='number') num=0;
var history=this.getHistory('useCard'); var history=this.getHistory('useCard');

View File

@ -1,16 +1,15 @@
window.noname_update={ window.noname_update={
version:'1.9.98.6', version:'1.9.98.6.1',
update:'1.9.98.5.1', update:'1.9.98.6',
changeLog:[ changeLog:[
'杨彪,陈登,界张嶷', '界庞统',
'地藏王,孟婆',
'bug修复', 'bug修复',
], ],
files:[ files:[
'card/extra.js', 'card/extra.js',
//'card/huanlekapai.js', //'card/huanlekapai.js',
//'card/sp.js', //'card/sp.js',
'card/standard.js', //'card/standard.js',
//'card/swd.js', //'card/swd.js',
//'card/mtg.js', //'card/mtg.js',
//'card/guozhan.js', //'card/guozhan.js',
@ -20,28 +19,28 @@ window.noname_update={
//'card/zhulu.js', //'card/zhulu.js',
'character/diy.js', 'character/diy.js',
//'character/extra.js', //'character/extra.js',
//'character/hearth.js', 'character/hearth.js',
//'character/gujian.js', //'character/gujian.js',
//'character/gwent.js', //'character/gwent.js',
//'character/hearth.js', //'character/hearth.js',
'character/mobile.js', 'character/mobile.js',
//'character/mtg.js', //'character/mtg.js',
//'character/old.js', 'character/old.js',
'character/refresh.js', 'character/refresh.js',
'character/shenhua.js', 'character/shenhua.js',
'character/sp.js', 'character/sp.js',
//'character/tw.js', 'character/tw.js',
'character/standard.js', 'character/standard.js',
//'character/swd.js', //'character/swd.js',
//'character/xianjian.js', //'character/xianjian.js',
//'character/xinghuoliaoyuan.js', 'character/xinghuoliaoyuan.js',
'character/yijiang.js', 'character/yijiang.js',
//'character/yxs.js', //'character/yxs.js',
//'extension/boss/extension.js', //'extension/boss/extension.js',
//'layout/default/layout.css', //'layout/default/layout.css',
//'layout/nova/layout.css', //'layout/nova/layout.css',
//'mode/identity.js', 'mode/identity.js',
'mode/doudizhu.js', //'mode/doudizhu.js',
'mode/guozhan.js', 'mode/guozhan.js',
//'mode/chess.js', //'mode/chess.js',
//'mode/tafang.js', //'mode/tafang.js',
@ -49,22 +48,22 @@ window.noname_update={
//'mode/stone.js', //'mode/stone.js',
//'mode/brawl.js', //'mode/brawl.js',
//'mode/versus.js', //'mode/versus.js',
'mode/boss.js', //'mode/boss.js',
'game/game.js', 'game/game.js',
//'game/NoSleep.js', //'game/NoSleep.js',
//'game/config.js', //'game/config.js',
//'game/package.js', //'game/package.js',
//'game/asset.js', //'game/asset.js',
//'game/source.js', //'game/source.js',
'theme/style/hp/xinglass.css', //'theme/style/hp/xinglass.css',
'theme/style/hp/xinround.css', //'theme/style/hp/xinround.css',
'theme/style/hp/image/xinglass1.png', //'theme/style/hp/image/xinglass1.png',
'theme/style/hp/image/xinglass2.png', //'theme/style/hp/image/xinglass2.png',
'theme/style/hp/image/xinglass3.png', //'theme/style/hp/image/xinglass3.png',
'theme/style/hp/image/xinglass4.png', //'theme/style/hp/image/xinglass4.png',
'theme/style/hp/image/xinround1.png', //'theme/style/hp/image/xinround1.png',
'theme/style/hp/image/xinround2.png', //'theme/style/hp/image/xinround2.png',
'theme/style/hp/image/xinround3.png', //'theme/style/hp/image/xinround3.png',
'theme/style/hp/image/xinround4.png', //'theme/style/hp/image/xinround4.png',
] ]
}; };

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 KiB

BIN
image/character/key_yui.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

View File

@ -440,10 +440,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if((!event.filterCard({name:'tao'},player,event)||storage.used.contains('tao'))&& if((!event.filterCard({name:'tao'},player,event)||storage.used.contains('tao'))&&
(!event.filterCard({name:'jiu'},player,event)||storage.used.contains('jiu'))) return false; (!event.filterCard({name:'jiu'},player,event)||storage.used.contains('jiu'))) return false;
var target=event.dying; var target=event.dying;
if(target.group=='unknown') return true; if(target.identity=='unknown'||target.identity=='ye') return true;
for(var i=0;i<storage.character.length;i++){ for(var i=0;i<storage.character.length;i++){
var group=lib.character[storage.character[i]][1]; var group=lib.character[storage.character[i]][1];
if(target.group==group) return true; if(target.identity==group) return true;
} }
return false; return false;
} }
@ -490,7 +490,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(!['tao','juedou','guohe','shunshou','wuzhong','xietianzi','yuanjiao','taoyuan','wugu','wanjian','nanman','huoshaolianying'].contains(name)) return 0; if(!['tao','juedou','guohe','shunshou','wuzhong','xietianzi','yuanjiao','taoyuan','wugu','wanjian','nanman','huoshaolianying'].contains(name)) return 0;
if(['taoyuan','wugu','wanjian','nanman','huoshaolianying'].contains(name)){ if(['taoyuan','wugu','wanjian','nanman','huoshaolianying'].contains(name)){
var list=game.filterPlayer(function(current){ var list=game.filterPlayer(function(current){
return (current.group=='unknown'||current.group==group)&&player.canUse({name:name},current); return (current.identity=='unknown'||current.identity=='ye'||current.identity==group)&&player.canUse({name:name},current);
}); });
var num=0; var num=0;
for(var i=0;i<list.length;i++){ for(var i=0;i<list.length;i++){
@ -507,8 +507,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(!ui.selected.buttons.length){ if(!ui.selected.buttons.length){
if(typeof button.link!='string') return false; if(typeof button.link!='string') return false;
if(evt.type=='dying'){ if(evt.type=='dying'){
if(evt.dying.group=='unknown') return true; if(evt.dying.identity=='unknown'||evt.dying.identity=='ye') return true;
return evt.dying.group==lib.character[button.link][1]; return evt.dying.identity==lib.character[button.link][1];
} }
return true; return true;
} }
@ -535,7 +535,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
var targets=[list[i]]; var targets=[list[i]];
info.changeTarget(player,targets); info.changeTarget(player,targets);
for(var j=0;j<targets.length;j++){ for(var j=0;j<targets.length;j++){
if(targets[j].group!='unknown'&&targets[j].group!=group){ if(targets[j].identity!='unknown'&&targets[j].identity!='ye'&&targets[j].identity!=group){
giveup=true; giveup=true;
break; break;
} }
@ -546,7 +546,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
return false; return false;
} }
else return game.hasPlayer(function(current){ else return game.hasPlayer(function(current){
return evt.filterTarget(card,player,current)&&(current.group=='unknown'||current.group==group); return evt.filterTarget(card,player,current)&&(current.identity=='unknown'||current.identity=='ye'||current.identity==group);
}); });
} }
}, },
@ -576,12 +576,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
var evt=_status.event; var evt=_status.event;
var group=xx.group; var group=xx.group;
var info=get.info(card); var info=get.info(card);
if((!(info.singleCard&&ui.selected.targets.length))&&target.group!='unknown'&&target.group!=group) return false; if((!(info.singleCard&&ui.selected.targets.length))&&target.identity!='unknown'&&target.identity!='ye'&&target.identity!=group) return false;
if(info.changeTarget){ if(info.changeTarget){
var targets=[target]; var targets=[target];
info.changeTarget(player,targets); info.changeTarget(player,targets);
for(var i=0;i<targets.length;i++){ for(var i=0;i<targets.length;i++){
if(targets[i].group!='unknown'&&targets[i].group!=group) return false; if(targets[i].identity!='unknown'&&targets[i].identity!='ye'&&targets[i].identity!=group) return false;
} }
} }
//if(evt.type=='dying') return target==evt.dying; //if(evt.type=='dying') return target==evt.dying;
@ -609,7 +609,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
return '移除「'+get.translation(character)+'」并视为使用'+(get.translation(nature)||'')+get.translation(name); return '移除「'+get.translation(character)+'」并视为使用'+(get.translation(nature)||'')+get.translation(name);
}, },
}, },
group:["yigui_init","yigui_refrain"], group:["yigui_init","yigui_refrain","yigui_shan","yigui_wuxie"],
ai:{ ai:{
save:true, save:true,
order:function(){ order:function(){
@ -678,6 +678,130 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
player.storage.yigui.used=[]; player.storage.yigui.used=[];
}, },
}, },
yigui_shan:{
enable:"chooseToUse",
filter:function (event,player){
if(event.type!='respondShan') return false;
var storage=player.storage.yigui;
if(!storage||!storage.character.length||storage.used.contains('shan')) return false;
return event.filterCard({name:'shan'},player,event);
},
chooseButton:{
dialog:function (event,player){
var dialog=ui.create.dialog('役鬼','hidden');
dialog.add([player.storage.yigui.character,'character']);
return dialog;
},
check:function(button){
return 1/(1+game.countPlayer(function(current){
return current.identity==button.link;
}));
},
backup:function(links,player){
var character=links[0];
var next={
character:character,
filterCard:function(){
return false;
},
selectCard:-1,
complexCard:true,
check:function(){return 1},
popname:true,
audio:"huashen1",
viewAs:{
name:'shan',
isCard:true,
},
onuse:function(result,player){
player.logSkill('yigui');
var character=lib.skill.yigui_shan_backup.character;
player.flashAvatar('yigui',character);
player.storage.yigui.character.remove(character);
_status.characterlist.add(character);
game.log(player,'从「魂」中移除了','#g'+get.translation(character));
player.syncStorage('yigui');
player.updateMarks('yigui');
player.storage.yigui.used.add(result.card.name);
},
};
return next;
},
},
ai:{
respondShan:true,
skillTagFilter:function(player){
var storage=player.storage.yigui;
if(!storage||!storage.character.length||storage.used.contains('shan')) return false;
},
order:0.1,
result:{
player:1,
},
},
},
yigui_wuxie:{
hiddenCard:function(player,name){
var storage=player.storage.yigui;
if(!storage||!storage.character.length||storage.used.contains('wuxie')) return false;
return name=='wuxie';
},
enable:"chooseToUse",
filter:function (event,player){
if(event.type!='wuxie') return false;
var storage=player.storage.yigui;
if(!storage||!storage.character.length||storage.used.contains('wuxie')) return false;
return event.filterCard({name:'wuxie'},player,event);
},
chooseButton:{
dialog:function (event,player){
var dialog=ui.create.dialog('役鬼','hidden');
dialog.add([player.storage.yigui.character,'character']);
return dialog;
},
check:function(button){
return 1/(1+game.countPlayer(function(current){
return current.identity==button.link;
}));
},
backup:function(links,player){
var character=links[0];
var next={
character:character,
filterCard:function(){
return false;
},
selectCard:-1,
complexCard:true,
check:function(){return 1},
popname:true,
audio:"huashen1",
viewAs:{
name:'wuxie',
isCard:true,
},
onuse:function(result,player){
player.logSkill('yigui');
var character=lib.skill.yigui_wuxie_backup.character;
player.flashAvatar('yigui',character);
player.storage.yigui.character.remove(character);
_status.characterlist.add(character);
game.log(player,'从「魂」中移除了','#g'+get.translation(character));
player.syncStorage('yigui');
player.updateMarks('yigui');
player.storage.yigui.used.add(result.card.name);
},
};
return next;
},
},
ai:{
order:0.1,
result:{
player:1,
},
},
},
jihun:{ jihun:{
trigger:{ trigger:{
player:'damageEnd', player:'damageEnd',
@ -1053,7 +1177,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
trigger.source.gain(result.cards,player,'giveAuto'); trigger.source.gain(result.cards,player,'giveAuto');
if(event.players.length==1) event.target=event.players[0]; if(event.players.length==1) event.target=event.players[0];
else if(event.players.length) player.chooseTarget('附敌</br></br><div class="center text">对'+get.translation(event.players)+'中的一名角色造成一点伤害</div>',function(card,player,target){ else if(event.players.length) player.chooseTarget('附敌</br></br><div class="center text">对'+get.translation(event.players)+'中的一名角色造成一点伤害</div>',function(card,player,target){
return target.isFriendOf(trigger.source)&&target.hp>=player.hp return target.isFriendOf(_status.event.getTrigger().source)&&target.hp>=player.hp&&!game.hasPlayer(function(current){
return current.isFriendOf(target)&&current.hp>target.hp;
})
},true).set('ai',function(target){return get.damageEffect(target,player,player)}); },true).set('ai',function(target){return get.damageEffect(target,player,player)});
else event.finish(); else event.finish();
} }
@ -2864,7 +2990,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
var player=_status.event.player; var player=_status.event.player;
if(player.isTurnedOver()) return -1; if(player.isTurnedOver()) return -1;
return (player.hp*player.hp)-Math.max(1,get.value(card)); return (player.hp*player.hp)-Math.max(1,get.value(card));
}).set('prompt','弃置一张牌并失去一点体力;或选择不弃置,将武将牌翻面并摸'+(player.getDamagedHp())+'张牌。'); }).set('prompt','弃置一张牌并失去一点体力;或选择不弃置,将武将牌翻面并摸'+(player.getDamagedHp())+'张牌。');
} }
else event.finish(); else event.finish();
"step 2" "step 2"
@ -7137,11 +7263,13 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
xindiaodu:"调度", xindiaodu:"调度",
"xindiaodu_info":"当与你势力相同的角色使用装备牌时,其可以摸一张牌;出牌阶段开始时,你可以获得与你势力相同的一名角色装备区内的一张牌,然后你可以将此牌交给另一名与你势力相同的其他角色。", "xindiaodu_info":"当与你势力相同的角色使用装备牌时,其可以摸一张牌;出牌阶段开始时,你可以获得与你势力相同的一名角色装备区内的一张牌,然后你可以将此牌交给另一名与你势力相同的其他角色。",
yigui:"役鬼", yigui:"役鬼",
"yigui_info":"当首次明置此武将牌时,你将剩余武将牌堆的两张牌扣置于游戏外,称为“魂”;你可以展示一张“魂”并将其置入剩余武将牌堆,视为使用了一张本回合内未以此法使用过的基本牌或普通锦囊牌(此牌目标须为与此“魂”势力相同或未确定势力的角色)", "yigui_info":"当首次明置此武将牌时,你将剩余武将牌堆的两张牌扣置于游戏外,称为“魂”;你可以展示一张“魂”并将其置入剩余武将牌堆,视为使用了一张本回合内未以此法使用过的基本牌或普通锦囊牌此牌需指定目标,则目标须为未确定势力的角色或野心家或与此“魂”势力相同的角色)",
"yigui_init":"役鬼", "yigui_init":"役鬼",
"yigui_init_info":"", "yigui_init_info":"",
"yigui_refrain":"役鬼", "yigui_refrain":"役鬼",
"yigui_refrain_info":"", "yigui_refrain_info":"",
yigui_shan:'役鬼',
yigui_wuxie:'役鬼',
jihun:"汲魂", jihun:"汲魂",
jihun_info:"当你受到伤害后,或与你势力不同的角色脱离濒死状态后,你可以将剩余武将牌堆的一张牌当做“魂”扣置于游戏外。", jihun_info:"当你受到伤害后,或与你势力不同的角色脱离濒死状态后,你可以将剩余武将牌堆的一张牌当做“魂”扣置于游戏外。",

View File

@ -1079,13 +1079,13 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
list.remove('shen'); list.remove('shen');
if(list.length) player.group=function(){ if(list.length) player.group=function(){
if(_status.mode!='zhong'&&game.zhu&&game.zhu.group){ if(_status.mode!='zhong'&&game.zhu&&game.zhu.group){
if(['re_zhangjiao','liubei','re_liubei','caocao','re_caocao','sunquan','re_sunquan','zhangjiao','sp_zhangjiao','caopi','re_caopi','liuchen','caorui','sunliang','sunxiu','sunce','re_sunben','old_liushan','old_yuanshao'].contains(game.zhu.name)) return game.zhu.group; if(['re_zhangjiao','liubei','re_liubei','caocao','re_caocao','sunquan','re_sunquan','zhangjiao','sp_zhangjiao','caopi','re_caopi','liuchen','caorui','sunliang','sunxiu','sunce','re_sunben','ol_liushan','re_liushan'].contains(game.zhu.name)) return game.zhu.group;
if(game.zhu.name=='sunhao'&&player.identity=='zhong') return 'wu'; if(game.zhu.name=='sunhao'&&player.identity=='zhong') return 'wu';
if(game.zhu.name=='yl_yuanshu'){ if(game.zhu.name=='yl_yuanshu'){
if(player.identity=='zhong') list.remove('qun'); if(player.identity=='zhong') list.remove('qun');
else return 'qun'; else return 'qun';
} }
if(['sunhao','xin_yuanshao','re_yuanshao','re_sunce'].contains(game.zhu.name)){ if(['sunhao','xin_yuanshao','re_yuanshao','re_sunce','ol_yuanshao','yuanshu'].contains(game.zhu.name)){
if(player.identity!='zhong') list.remove(game.zhu.group); if(player.identity!='zhong') list.remove(game.zhu.group);
else return game.zhu.group; else return game.zhu.group;
} }