Saya's Song / Haruka Kanata

This commit is contained in:
Spmario233 2020-04-29 13:59:50 +08:00 committed by GitHub
parent d347e1e324
commit 8e17c94001
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
34 changed files with 744 additions and 115 deletions

BIN
audio/die/gaolan.mp3 Normal file

Binary file not shown.

BIN
audio/die/sp_shenpei.mp3 Normal file

Binary file not shown.

BIN
audio/die/sp_zhanghe.mp3 Normal file

Binary file not shown.

BIN
audio/die/xunchen.mp3 Normal file

Binary file not shown.

BIN
audio/skill/beizhan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/beizhan2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/fenglve1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/fenglve2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/gangzhi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/gangzhi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/mouzhi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/mouzhi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xiying1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xiying2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/yuanlve1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/yuanlve2.mp3 Normal file

Binary file not shown.

View File

@ -25,6 +25,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
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']],
key_saya:['female','key',3,['saya_shouji','saya_powei']],
key_harukakanata:['female','key',3,['haruka_shuangche']],
// diy_caocao:['male','wei',4,['xicai','diyjianxiong','hujia']],
// diy_hanlong:['male','wei',4,['siji','ciqiu']],
diy_feishi:['male','shu',3,['shuaiyan','moshou']],
@ -101,7 +103,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
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_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"],
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"],
},
},
characterIntro:{
@ -116,6 +118,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。',
},
characterTitle:{
key_saya:'#bLittle Busters!',
key_harukakanata:'#bLittle Busters!',
key_tsumugi:'#bSummer Pockets',
key_yui:'#rAngel Beats!',
key_yoshino:'#bRewrite',
@ -168,6 +172,233 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yuji:['zuoci']
},
skill:{
saya_powei:{
trigger:{player:'phaseAfter'},
direct:true,
locked:true,
limited:true,
unique:true,
skillAnimation:true,
animationColor:'metal',
filter:function(event,player){
return event.type!='saya_powei'&&game.hasPlayer(function(current){
return current.hp>player.hp;
});
},
content:function(){
'step 0'
player.chooseTarget(get.prompt2('saya_powei'),function(card,saya,kyousuke){
return kyousuke.hp>saya.hp;
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('saya_powei',target);
player.awakenSkill('saya_powei');
game.delay(3);
var next=game.createEvent('saya_powei_loop',false,trigger);
next.playertrue=player;
next.playerfalse=target;
next.setContent(lib.skill.saya_powei.content2);
}
},
content2:function(){
'step 0'
event.count=0;
event.stat=true;
event.current=event['player'+event.stat];
game.countPlayer2(function(current){
if(current!=event.playertrue&&current!=event.playerfalse) current.addSkill('saya_nodis');
});
event.playertrue.addSkill('saya_judge');
'step 1'
event.count++;
event.current.phase().set('type','saya_powei');
'step 2'
if(event.count==9||event.playertrue.isDead()||event.playerfalse.isDead()){
game.countPlayer2(function(current){
current.removeSkill('saya_nodis');
current.removeSkill('saya_judge');
});
}
else{
event.stat=!event.stat;
event.current=event['player'+event.stat];
event.goto(1);
}
}
},
saya_nodis:{
group:'undist',
mark:true,
intro:{content:'不计入距离和座次的计算'},
},
saya_judge:{
trigger:{player:'phaseBegin'},
forced:true,
popup:false,
filter:function(event,player){
return event.type=='saya_powei'&&player==event.getParent().playertrue;
},
content:function(){
'step 0'
player.judge(function(card){
return get.color(card)=='red'?5:0;
});
'step 1'
if(result.bool){
player.line(trigger.getParent().playerfalse);
trigger.getParent().playerfalse.damage();
}
},
},
saya_shouji:{
trigger:{player:'useCardAfter'},
filter:function(event,player){
return !player.getStat('skill').saya_shouji&&event.cards.filterInD().length>0;
},
direct:true,
content:function(){
'step 0'
var goon=function(){
var num=0;
var cards=trigger.cards.filterInD();
for(var i=0;i<cards.length;i++){
num+=player.getUseValue(cards[i]);
}
return player.countCards('h',function(card){
return (card.name!='sha'||!player.countUsed('sha'))&&player.getUseValue(card)>num;
})==0;
}();
player.chooseTarget(get.prompt2('saya_shouji'),lib.filter.notMe).set('ai',function(target){
if(!_status.event.goon) return 0;
var player=_status.event.player;
var cards=_status.event.getTrigger().cards.filterInD();
var att=get.attitude(player,target);
var num=0;
for(var i=0;i<cards.length;i++){
num+=target.getUseValue(cards[i]);
}
return Math.max(num,0.1)*att;
}).set('goon',goon);
'step 1'
if(result.bool){
player.getStat('skill').saya_shouji=1;
event.cards=trigger.cards.filterInD();
var target=result.targets[0];
event.target=target;
player.logSkill('saya_shouji',target);
target.gain(event.cards,'gain2','log');
}
else event.finish();
'step 2'
target.chooseToUse({
cards:cards,
filterCard:function(card){
if(!_status.event.cards.contains(card)) return false;
return lib.filter.filterCard.apply(this,arguments);
},
prompt:'是否使用得到的牌中的一张?',
});
'step 3'
if(result.bool) player.draw();
},
},
haruka_shuangche:{
audio:2,
enable:'phaseUse',
filter:function(event,player){
return player.countCards('he')>0&&!player.hasSkill('haruka_kanata');
},
chooseButton:{
dialog:function(event,player){
var list=[];
for(var i=0;i<lib.inpile.length;i++){
var name=lib.inpile[i];
if(name=='sha'){
list.push(['基本','','sha']);
list.push(['基本','','sha','fire']);
list.push(['基本','','sha','thunder']);
}
else if(get.type(name)=='trick') list.push(['锦囊','',name]);
else if(get.type(name)=='basic') list.push(['基本','',name]);
}
return ui.create.dialog('双掣',[list,'vcard']);
},
filter:function(button,player){
return _status.event.getParent().filterCard({name:button.link[2]},player,_status.event.getParent());
},
check:function(button){
var player=_status.event.player;
if(player.countCards('h',button.link[2])>0) return 0;
if(button.link[2]=='wugu') return 0;
var effect=player.getUseValue(button.link[2]);
if(effect>0) return effect;
return 0;
},
backup:function(links,player){
return {
filterCard:true,
audio:'haruka_shuangche',
selectCard:-1,
filterCard:function(){return false},
popname:true,
check:function(card){
return 6-get.value(card);
},
position:'he',
viewAs:{name:links[0][2],nature:links[0][3],isCard:true},
}
},
prompt:function(links,player){
return '请选择'+(get.translation(links[0][3])||'')+get.translation(links[0][2])+'的目标';
}
},
ai:{
order:4,
result:{
player:function(player){
var cards=player.getCards('he').sort(function(a,b){
return get.value(a)-get.value(b);
});
var num=(player.getStat('skill').haruka_shuangche||0);
if(cards.length>num){
var val=0;
for(var i=0;i<cards.length;i++){
val+=get.value(cards[i]);
}
return 12-val;
}
return 0;
}
},
},
group:'kanata_shuangche',
},
kanata_shuangche:{
trigger:{player:'useCardAfter'},
forced:true,
filter:function(event,player){
return event.skill=='haruka_shuangche_backup';
},
content:function(){
'step 0'
var num=player.getStat('skill').haruka_shuangche||1;
player.chooseToDiscard('###双掣:请选择一项###选择弃置'+get.cnNumber(num)+'张牌或失去1点体力且令〖双掣〗失效至回合结束',num,'he').set('ai',function(card){
var total=12;
for(var i=0;i<ui.selected.cards.length;i++){
total-=get.value(ui.selected.cards[i]);
}
return total-get.value(card);
});
'step 1'
if(!result.bool){
player.addTempSkill('haruka_kanata');
player.loseHp();
}
},
},
haruka_kanata:{},
tsumugi_mugyu:{
audio:5,
trigger:{target:'useCardToTargeted'},
@ -372,10 +603,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
direct:true,
content:function(){
'step 0'
player.chooseTarget(lib.filter.notMe,get.prompt2('yoshino_jueyi')).set('ai',function(){
player.chooseTarget(lib.filter.notMe,get.prompt2('yoshino_jueyi')).set('ai',function(target){
var player=_status.event.player;
if(get.damageEffect(target,player,player)<0) return 0;
var att=get.attitude(player,target);
if(att<0) return 0;
if(att>0) return 0;
if(att==0) return 0.1;
var eff=0;
var hs=player.getCards('h');
@ -1174,6 +1406,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
yuri_xingdong:{
group:'yuri_xingdong_gain',
subSkill:{
mark:{
mark:true,
@ -1182,9 +1415,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:'跳过下个回合的判定阶段和摸牌阶段',
},
},
gain:{
trigger:{player:'phaseUseBegin'},
forced:true,
content:function(){
'step 0'
var card=get.cardPile(function(card){
return card.name=='sha'||get.type(card)=='trick';
});
if(card) player.gain(card,'gain2','log');
'step 1'
game.updateRoundNumber();
},
},
},
enable:'phaseUse',
usable:1,
locked:true,
filter:function(event,player){
return player.countCards('h',lib.skill.yuri_xingdong.filterCard);
},
@ -6159,6 +6406,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_yoshino:'吉野晴彦',
key_yui:'ユイ',
key_tsumugi:'紬文德斯',
key_saya:'朱鹭户沙耶',
key_harukakanata:'三枝二木',
lucia_duqu:'毒躯',
lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。',
lucia_zhenren:'振刃',
@ -6168,7 +6417,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_huanjie:'幻界',
key_huanjie_info:'锁定技,当你进行判定或摸牌时,你改为从牌堆的另一端获取相应的牌。',
yuri_xingdong:'行动',
yuri_xingdong_info:'出牌阶段限一次,你可以将一张【杀】或普通锦囊牌交给一名其他角色,然后该角色选择一项:对除你以外的角色使用此牌并在此牌结算完成后和你各摸一张牌;或跳过下回合的判定阶段和摸牌阶段。',
yuri_xingdong_info:'锁定技,出牌阶段开始时,你获得一张【杀】或普通锦囊牌。出牌阶段限一次,你可以将一张【杀】或普通锦囊牌交给一名其他角色,然后该角色选择一项:对除你以外的角色使用此牌并在此牌结算完成后和你各摸一张牌;或跳过下回合的判定阶段和摸牌阶段。',
yuri_wangxi:'忘隙',
yuri_wangxi_info:'主公技限定技当有角色因你发动的【行动】而死亡后若其身份不为【明忠】则其可以将身份改为忠臣并重新加入游戏然后将势力改为与你相同将体力值回复至2点并摸一张牌。',
haruko_haofang:'豪放',
@ -6230,6 +6479,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tsumugi_huilang2:'回廊',
tsumugi_huilang_info:'回合结束时,不可以将任意张牌扣置于武将牌下(均称为「隐」)。回合开始时,你获得所有「隐」,然后可令等量的角色各摸一张牌。',
//〖回廊〗涉及的所有卡牌移动的结算不会触发〖良姻〗
haruka_shuangche:'双掣',
kanata_shuangche:'双掣',
haruka_shuangche_backup:'双掣',
haruka_shuangche_info:'出牌阶段你可以将一张牌当做任意基本牌或锦囊牌使用。此牌结算完成后你选择一项1.弃置X张牌。2.失去1点体力且本回合内不能再发动〖双掣〗。',
saya_shouji:'授计',
saya_shouji_info:'每回合限一次,当你使用的牌结算完成后,你可以将此牌对应的所有实体牌交给一名其他角色。其可以使用这些牌中的一张,若如此做,你摸一张牌。',
saya_powei:'破围',
saya_powei_info:'限定技回合结束后你可以选择一名体力值大于你的其他角色。你与其交替进行额外回合直到你与其中的一名角色死亡或进行到九个回合。你于回合开始时进行判定若结果为红色则你对其造成1点伤害。此过程中其他角色不计入距离和座次计算。',
saya_judge:'破围',
saya_nodis:'破围',
//〖破围〗不会因为〖铁骑〗无效
ns_zhangwei:'张葳',
nsqiyue:'骑钺',

View File

@ -847,10 +847,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
wushen:{
mod:{
cardname:function(card,player,name){
if(get.position(card)=='h'&&get.suit(card)=='heart') return 'sha';
if(get.suit(card)=='heart') return 'sha';
},
cardnature:function(card,player){
if(get.position(card)=='h'&&get.suit(card)=='heart') return false;
if(get.suit(card)=='heart') return false;
},
targetInRange:function(card){
if(get.suit(card)=='heart') return true;

View File

@ -2004,7 +2004,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
player.loseHp();
switch(get.type(cards[0],'trick')){
switch(get.type(cards[0],'trick',cards[0].original=='h'?player:false)){
case 'basic':player.addTempSkill('xinzhanyi_basic');break;
case 'equip':player.addTempSkill('xinzhanyi_equip');break;
case 'trick':player.addTempSkill('xinzhanyi_trick');player.draw(3);break;

View File

@ -370,7 +370,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 0"
player.chooseToCompare(target);
"step 1"
if(result.player&&(result.player.name=='sha'||player.hasSkill('rejinjiu')&&result.player.name=='jiu')) player.addTempSkill('rexianzhen4');
if(result.player&&get.name(result.player.name,player)=='sha') player.addTempSkill('rexianzhen4');
if(result.bool){
player.storage[event.name]=target;
player.addTempSkill(event.name+2);
@ -2634,7 +2634,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var cards=result.cards;
var type=[];
for(var i=0;i<cards.length;i++){
if(!type.contains(get.type(cards[i],'trick'))) type.push(get.type(cards[i],'trick'));
type.add(get.type(cards[i],'trick',cards[i].original=='h'?player:false));
}
player.storage.new_qingjian++;
player.logSkill('new_qingjian',target);
@ -2975,12 +2975,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
if(result.judge>0){
event.cards.push(result.card);
if(lib.config.autoskilllist.contains('reluoshen')){
player.chooseBool('是否再次发动【洛神】?');
}
else{
event._result={bool:true};
}
player.chooseBool('是否再次发动【洛神】?').set('frequentSkill','reluoshen');
}
else{
for(var i=0;i<event.cards.length;i++){
@ -2988,8 +2983,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.cards.splice(i,1);i--;
}
}
if(event.cards.length){
player.gain(event.cards,'gain2');
player.storage.reluoshen.addArray(event.cards);
}
event.finish();
}
"step 2"

View File

@ -465,13 +465,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
"step 0"
player.chooseTarget(get.prompt2('drlt_zhenggu'),function(card,player,target){
//if(target.storage.drlt_zhenggu_mark&&target.storage.drlt_zhenggu_mark.contains(player)) return false;
return target!=player;
}).ai=function(target){
}).set('ai',function(target){
var player=_status.event.player;
//if(target.storage.drlt_zhenggu_mark&&target.storage.drlt_zhenggu_mark.contains(player)) return 0;
var num=(Math.min(5,player.countCards('h'))-target.countCards('h'));
var att=get.attitude(player,target);
return num*att;
};
});
"step 1"
if(result.bool){
var target=result.targets[0];
@ -504,7 +506,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return event.player.storage.drlt_zhenggu_mark&&event.player.storage.drlt_zhenggu_mark.contains(player);
},
content:function(){
while(trigger.player.storage.drlt_zhenggu_mark.contains(player)){
trigger.player.storage.drlt_zhenggu_mark.remove(player);
}
if(trigger.player.storage.drlt_zhenggu_mark.length==0) trigger.player.unmarkSkill('drlt_zhenggu_mark');
lib.skill.drlt_zhenggu.sync(player,trigger.player);
},
@ -2195,7 +2199,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).set('logSkill',['jianchu',trigger.target]).set('att',get.attitude(player,trigger.target)<=0);
'step 1'
if(result.bool&&result.links&&result.links.length){
if(get.type(result.links[0])=='equip'){
if(get.type(result.links[0],null,result.links[0].original=='h'?player:false)=='equip'){
trigger.getParent().directHit.add(trigger.target);
}
else if(trigger.cards){

View File

@ -18,11 +18,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'],
sp_guozhan:["shamoke","ganfuren","yuejin","hetaihou","dingfeng","panfeng","jianggan"],
sp_guozhan2:["mifuren","mateng","tianfeng","chendong","sp_dongzhuo","jiangfei","jiangqing","kongrong","bianfuren","liqueguosi","lvfan","cuimao","jiling","zangba","zhangren","zoushi"],
sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan"],
sp_single:["hejin","hansui","niujin"],
sp_others:["hanba"],
},
},
character:{
gaolan:['male','qun',4,['xiying']],
sp_shenpei:['male','qun',3,['gangzhi','beizhan']],
xunchen:['male','qun',3,['fenglve','mouzhi']],
sp_zhanghe:['male','qun',4,['yuanlve']],
sunshao:['male','wu',3,['bizheng','yidian'],['unseen']],
wangshuang:['male','wei',5,['spzhuilie'],['unseen']],
sp_gongsunzan:['male','qun',4,['spyicong','sptuji']],
@ -181,6 +186,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//kaisa:["male","western",4,["zhengfu"]],
},
characterIntro:{
gaolan:'高览生卒年不详一名高奂本属袁绍部将后官渡之战淳于琼被曹操击破与张郃一同投降曹操被封为偏将军东莱侯。《三国演义》里曾与许褚、徐晃大战不分胜负。201年刘备败走荆州时高览奉命追杀三合斩刘辟而后被冲阵而来的赵云刺死。',
xunchen:'荀谌,字友若,荀彧之兄(一说荀彧之弟),荀绲之子,颍川人。曾任军阀袁绍的幕僚。帮助袁绍游说韩馥,夺取了冀州。',
sunshao:'孙邵163年225年字长绪青州北海国人今山东潍坊市昌乐县西。原为北海相孔融的功曹被孔融称赞为可任朝廷要职的人才后随刘繇到达江东继而辅佐孙权。孙权称吴王后孙邵成为吴国首任丞相数年后病逝。由于孙邵和当时吴国史官的关系并不是很好因此在史书中并没有详细的记载。',
wangshuang:'王双(?-228年三国时期曹魏将领。蜀汉建兴六年228年诸葛亮出散关攻陈仓后粮尽而退。王双率领骑兵追击蜀军但在与蜀军的交战中被击败王双也被蜀军所斩。在《三国演义》中王双字子全是陇西郡狄道县今甘肃临洮县有万夫不当之勇。在诸葛亮北伐期间被魏延所斩。',
yuantanyuanshang:'袁谭、袁尚分别是袁绍的长子和第三子。袁绍坐拥青州、冀州、幽州、并州,本是北方最强诸侯,却于官渡大败,惭恨而终。虽然袁绍生前偏爱小儿子袁尚,却并未在继承人上有明确表态,这也导致本应以嫡长子身份继承的袁谭因郭图、审配伪立遗令未能如愿。曹操击败袁绍后,进而渡过黄河追击袁家残余势力,袁谭告急,但袁尚仅给他少量兵力。曹操得郭嘉之计退兵坐观其变,恰使两人此前的种种矛盾彻底爆发,袁谭不敌便引狼入室,派辛毗作为使者向曹操求援,让袁尚不得不北逃投奔乌桓。但袁谭也在之后背叛曹操兵败被杀。没多久,乌桓也被平定,袁熙、袁尚二人投奔公孙康后被斩首送还曹操。',
@ -505,6 +512,324 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//官渡之战
xiying:{
trigger:{player:'phaseUseBegin'},
audio:2,
direct:true,
filter:function(event,player){
return player.countCards('he')>0;
},
content:function(){
'step 0'
var list=game.filterPlayer(function(current){
return current!=player;
});
list.sortBySeat();
event.targets=list;
player.chooseToDiscard(get.prompt2('xiying'),'he').set('logSkill',['xiying',list]).set('ai',function(card){
return _status.event.val-get.value(card)
}).set('val',function(){
return 4*Math.sqrt(game.countPlayer(function(current){
return get.attitude(player,current)<0&&current.countCards('he')>0;
}));
}());
'step 1'
if(!result.bool) event.finish();
'step 2'
var target=targets.shift();
event.target=target;
if(target.isAlive()) target.chooseToDiscard('he','弃置一张牌,或本回合内不能使用或打出手牌').set('ai',function(card){
var player=_status.event.player;
var source=_status.event.getTrigger().player;
if(get.attitude(source,player)>0) return -1;
if(_status.event.getRand()>0.5) return 5-get.value(card);
return -1;
});
'step 3'
if(target.isAlive()&&!result.bool) target.addTempSkill('xiying2');
if(targets.length) event.goto(2);
},
},
xiying2:{
mark:true,
intro:{content:'本回合内不能使用或打出牌'},
mod:{
cardEnabled:function(){return false},
cardRespondable:function(){return false},
cardSavable:function(){return false},
},
},
gangzhi:{
audio:2,
trigger:{player:'damageBefore'},
forced:true,
content:function(){
trigger.cancel();
player.loseHp(trigger.num);
},
},
beizhan:{
trigger:{player:'phaseJieshuBegin'},
direct:true,
audio:2,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('beizhan')).set('ai',function(target){
var player=_status.event.player;
var att=get.attitude(player,target);
var hs=target.countCards('h');
var ht=target.maxHp;
if(hs>=ht&&target.isMaxHandcard()) return -att*hs;
if(hs<ht&&game.hasPlayer(function(current){
return current.countCards('h')>ht;
})) return att*2*(ht-hs);
return 0;
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('beizhan',target);
target.drawTo(Math.min(5,target.maxHp))
target.addSkill('beizhan2');
}
},
},
beizhan2:{
trigger:{player:'phaseBegin'},
silent:true,
firstDo:true,
content:function(){
player.removeSkill('beizhan2');
if(player.isMaxHandcard()) player.addTempSkill('zishou2');
},
mark:true,
intro:{content:'回合开始时,若手牌数为全场最多,则回合内不能使用牌指定其他角色为目标'},
},
fenglve:{
audio:2,
trigger:{
player:"phaseUseBegin",
},
direct:true,
content:function (){
'step 0'
var goon=player.hasCard(function(card){
if(get.position(card)!="h") return false;
var val=get.value(card);
if(val<0) return true;
if(val<=5){
return card.number>=12;
}
if(val<=6){
return card.number>=13;
}
return false;
});
player.chooseTarget(get.prompt2('fenglve'),function(card,player,target){
return player.canCompare(target);
}).set('ai',function(target){
if(!_status.event.goon) return 0;
return -get.attitude(player,target)*(1+target.countCards('e'))/(1+target.countCards('j'));
}).set('goon',goon);
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('fenglve',target);
player.chooseToCompare(target);
}
else{
event.finish();
}
'step 2'
if(result.bool){
var num=0;
if(target.countCards('h')) num++;
if(target.countCards('e')) num++;
if(target.countCards('j')) num++;
if(num){
event.gainner=player;
event.giver=target;
target.choosePlayerCard(target,num,'hej',true).set('filterButton',function(button){
for(var i=0;i<ui.selected.buttons.length;i++){
if(get.position(button.link)==get.position(ui.selected.buttons[i].link)) return false;
}
return true;
}).set('prompt','选择交给'+get.translation(event.gainner)+'的牌');
}
else event.finish();
}
else{
if(player.countCards('he')){
event.gainner=target;
event.giver=player;
player.choosePlayerCard(player,true,'he').set('prompt','选择交给'+get.translation(event.gainner)+'的牌');
}
else event.finish();
}
'step 3'
event.gainner.gain(result.links,'giveAuto',event.giver)
},
group:'fenglve2',
},
fenglve2:{
trigger:{player:'chooseToCompareAfter'},
check:function(event,player){
return get.attitude(player,event.target)*get.value(event.card1,event.target,'raw')>0;
},
filter:function(event,player){
return event.getParent().name=='fenglve'&&get.position(event.card1,true)=='o';
},
prompt:function(event){
return '是否令'+get.translation(event.target)+'获得'+get.translation(event.card1)+''
},
logTarget:'target',
content:function(){
trigger.target.gain(trigger.card1,'gain2','log');
},
},
mouzhi:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('h')>0
},
filterCard:true,
filterTarget:function(card,player,target){
//if(target.storage.mouzhi2&&target.storage.mouzhi2.contains(player)) return false;
return target!=player;
},
delay:0,
lose:false,
discard:false,
check:function(card){
if(card.name=='du') return 20;
var player=_status.event.player;
var useval=player.getUseValue(card);
var maxval=0;
game.countPlayer(function(current){
if(current!=player&&!current.hasSkillTag('nogain')&&get.attitude(player,current)>0){
var temp=current.getUseValue(card);
if(temp>maxval) maxval=temp;
}
});
if(maxval>0&&get.tag(card,'damage')) return 15;
if(maxval>useval) return 10;
if(player.needsToDiscard()) return 1/Math.max(0.1,get.value(card));
return -1;
},
content:function(){
target.gain(cards,player,'giveAuto');
target.addTempSkill('mouzhi2',{player:'phaseEnd'});
target.storage.mouzhi2.add(player);
target.storage.mouzhi2.sortBySeat(target);
target.markSkill('mouzhi2');
},
ai:{
order:10,
result:{
target:function(player,target){
if(ui.selected.cards.length){
var card=ui.selected.cards[0];
if(card.name=='du') return target.hasSkill('lucia_duqu')?1:-1;
var t=target.getUseValue(card);
var p=player.getUseValue(card);
if(t>p) return 2;
if(t>0) return 1.5
if(player.needsToDiscard()) return 1;
return 0;
}
return 0;
},
},
},
},
mouzhi2:{
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[];
},
onremove:true,
trigger:{source:'damageSource'},
forced:true,
intro:{
content:'出牌阶段内第一次对一名其他角色造成伤害时,$摸一张牌',
},
filter:function(event,player){
var evt2=event.getParent('phaseUse');
if(!evt2||evt2.player!=player) return false;
var history=event.player.getHistory('damage',function(evt){
return evt.source==player&&evt.getParent('phaseUse')==evt2;
});
return history[0]==event;
},
content:function(){
'step 0'
game.asyncDraw(player.storage.mouzhi2);
'step 1'
game.delay();
},
},
yuanlve:{
enable:'phaseUse',
usable:1,
audio:2,
filter:function(event,player){
return player.countCards('h',function(card){
return get.type(card)!='equip';
})
},
filterCard:function(card){
return get.type(card)!='equip';
},
filterTarget:lib.filter.notMe,
delay:false,
discard:false,
lose:false,
check:function(card){
if(card.name=='du') return 20;
var player=_status.event.player;
var useval=player.getUseValue(card);
var maxval=0;
game.countPlayer(function(current){
if(current!=player&&!current.hasSkillTag('nogain')&&get.attitude(player,current)>0){
var temp=current.getUseValue(card);
if(temp>maxval) maxval=temp;
}
});
if(maxval>useval) return 15;
if(maxval>0) return 10;
if(player.needsToDiscard()) return 1/Math.max(0.1,get.value(card));
return -1;
},
content:function(){
'step 0'
target.gain(cards,player,'giveAuto');
'step 1'
target.chooseUseTarget(cards[0]);
'step 2'
if(result.bool) player.draw();
},
ai:{
order:10,
result:{
target:function(player,target){
if(ui.selected.cards.length){
var card=ui.selected.cards[0];
if(card.name=='du') return target.hasSkill('lucia_duqu')?1:-1;
var t=target.getUseValue(card);
var p=player.getUseValue(card);
if(t>p) return 2;
if(t>0) return 1.5
if(player.needsToDiscard()) return 1;
return 0;
}
return 0;
},
},
},
},
//孙邵
bizheng:{
trigger:{player:'phaseDrawEnd'},
@ -697,9 +1022,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(get.position(card)=='e') return lib.filter.cardDiscardable.apply(this,arguments);
return true;
});
next.set('logSkill',['spmingjian',trigger.player]);
//next.set('logSkill',['spmingjian',trigger.player]);
'step 1'
if(result.bool){
player.logSkill('spmingjian',trigger.player);
var card=result.cards[0];
event.card=card;
if(get.position(card)=='e') event._result={index:0};
@ -2489,22 +2815,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xinlvli:{
audio:'lvli',
trigger:{player:'damageEnd',source:'damageSource'},
filter:function(event,player){
filter:function(event,player,name){
var stat=player.getStat().skill;
if(!stat.xinlvli) stat.xinlvli=0;
if(name=='damageEnd'&&!player.storage.beishui) return false;
if(stat.xinlvli>1) return false;
if(stat.xinlvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false;
if(player.hp==player.countCards('h')) return false;
if(player.hp<player.countCards('h')&&player.isHealthy()) return false;
if(event.source!=player&&!player.storage.beishui) return false;
if(player.storage.lvli>1) return false;
if(player.storage.lvli>0&&(player!=_status.currentPhase||!player.storage.choujue)) return false;
return true;
},
content:function(){
'step 0'
player.storage.lvli++;
var stat=player.getStat().skill;
stat.xinlvli++;
var num=player.hp-player.countCards('h');
if(num>0) player.draw(num);
else player.recover(-num);
},
group:'lvli3',
//group:'lvli3',
},
lvli:{
audio:2,
@ -3949,7 +4277,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var bool=true;
if(result.cards){
for(var i=0;i<result.cards.length;i++){
if(['basic','trick'].contains(get.type(result.cards[i],'trick'))){
if(['basic','trick'].contains(get.type(result.cards[i],'trick',result.cards[i].original=='h'?player:false))){
bool=false;break;
}
}
@ -6497,7 +6825,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.discardPlayerCard(target,true);
'step 1'
if(result.bool){
if(result.cards[0].name=='shan'){
if(get.name(result.cards[0],result.cards[0].original=='h'?player:false)=='shan'){
player.viewHandcards(target);
}
else{
@ -12165,7 +12493,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(event.type!='discard'||event.player==player||_status.currentPhase==player) return false;
if(player.hasSkill('shenxian2')) return false;
for(var i=0;i<event.cards2.length;i++){
if(get.type(event.cards2[i])=='basic'){
if(get.type(event.cards2[i],null,event.hs.contains(event.cards2[i])?event.player:false)=='basic'){
return true;
}
}
@ -12761,7 +13089,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
if(target==player){
for(var i=0;i<cards.length;i++){
if(get.color(cards[i])=='black'){
if(get.color(cards[i],cards[i].original=='h'?player:false)=='black'){
player.loseHp();
break;
}
@ -13391,7 +13719,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(event.type!='discard') return false;
if(event.cards2){
for(var i=0;i<event.cards2.length;i++){
if(get.color(event.cards2[i])=='red') return true;
if(get.color(event.cards2[i],event.hs.contains(event.cards2[i])?player:false)=='red') return true;
}
}
return false;
@ -13402,7 +13730,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(trigger.name=='lose'){
event.count=0;
for(var i=0;i<trigger.cards2.length;i++){
if(get.color(trigger.cards2[i])=='red') event.count++;
if(get.color(trigger.cards2[i],trigger.hs.contains(trigger.cards2[i])?player:false)=='red') event.count++;
}
}
"step 1"
@ -17411,6 +17739,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
bizheng_info:'摸牌阶段结束时,你可以令一名其他角色摸两张牌。然后,若你的手牌数大于体力值,你弃置两张牌。若其的手牌数大于体力值,其弃置两张牌。',
yidian:'佚典',
yidian_info:'当你使用牌选择目标时,若弃牌堆中没有与此牌名称相同的牌,则你可以为此牌增加一个目标(无距离限制)。',
sp_zhanghe:'SP张郃',
yuanlve:'远略',
yuanlve_info:'出牌阶段限一次,你可以将一张非装备牌交给一名角色,然后该角色可以使用该牌并令你摸一张牌。',
xunchen:'荀谌',
fenglve:'锋略',
fenglve2:'锋略',
fenglve_info:'出牌阶段开始时,你可以与一名角色拼点,若你赢,该角色将其区域内的各一张牌交给你;若你没赢,你交给其一张牌。拼点结算后你可以令其获得你拼点的牌。',
mouzhi:'谋识',
mouzhi2:'谋识',
mouzhi_info:'出牌阶段限一次,你可以将一张手牌交给一名角色,若如此做,当其于其下回合的出牌阶段内对一名角色造成伤害后,若是此阶段其第一次对该角色造成伤害,你摸一张牌。',
sp_shenpei:'SP审配',
gangzhi:'刚直',
gangzhi_info:'锁定技,当你即将受到伤害时,你防止此伤害,改为失去等量的体力。',
beizhan:'备战',
beizhan2:'备战',
beizhan_info:'结束阶段你可以令一名角色将手牌摸至体力上限至多为5。其下个回合开始时若其手牌数为全场最多则其此回合内使用的牌不能指定其他角色为目标。',
gaolan:'高览',
xiying:'袭营',
xiying2:'袭营',
xiying_info:'出牌阶段开始时,你可以弃置一张牌,然后令所有其他角色依次选择一项:弃置一张牌,或本回合内不能使用或打出牌。',
sp_default:"常规",
sp_whlw:"文和乱武",
@ -17427,6 +17775,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_single:'新1v1',
sp_guansuo:'花关索传',
sp_sticker:'桌游志·贴纸',
sp_guandu:'官渡之战',
},
};
});

View File

@ -500,12 +500,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
if(result.judge>0){
event.cards.push(result.card);
if(lib.config.autoskilllist.contains('luoshen')){
player.chooseBool('是否再次发动【洛神】?');
}
else{
event._result={bool:true};
}
player.chooseBool('是否再次发动【洛神】?').set('frequentSkill','luoshen');
}
else{
for(var i=0;i<event.cards.length;i++){

View File

@ -579,7 +579,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 2'
target.chooseToUse({
filterCard:function(card){
return card.name=='sha'&&get.color(card)!='black'&&lib.filter.cardEnabled.apply(this,arguments);
return get.name(card)=='sha'&&get.color(card)!='black'&&lib.filter.cardEnabled.apply(this,arguments);
},
prompt:'请使用一张不为黑色的【杀】,否则'+get.translation(player)+'可以对你或你攻击范围内的一名其他角色造成1点伤害',
});
@ -733,7 +733,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 0"
var types=[];
for(var i=0;i<cards.length;i++){
types.add(get.type(cards[i],'trick'));
types.add(get.type(cards[i],'trick',player));
}
target.chooseToDiscard(function(card){
return !_status.event.types.contains(get.type(card,'trick'));
@ -1451,7 +1451,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.num=0;
event.num2=result.cards.length;
for(var i=0;i<result.cards.length;i++){
if(get.type(result.cards[i])!='equip'){
if(get.type(result.cards[i],null,result.cards[i].original=='h'?target:false)!='equip'){
event.num++;
}
}
@ -1715,7 +1715,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.pindi_type=[];
}
player.storage.pindi_target.push(target);
player.storage.pindi_type.push(get.type2(cards[0]));
player.storage.pindi_type.push(get.type2(cards[0],cards[0].original=='h'?player:false));
event.num=player.getStat('skill').pindi;
var evt=_status.event.getParent('phase');
if(evt&&evt.name=='phase'&&!evt.pindi){
@ -2018,7 +2018,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool&&result.cards){
event.card=result.cards[0];
trigger.targets.length=0;
trigger.getParent().triggeredTargets2.length=0;
trigger.getParent().triggeredTargets1.length=0;
}
else{
event.finish();
@ -3478,7 +3478,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
trigger.player.addSkill('xinsidi2');
trigger.player.storage.xinsidi2=get.color(result.cards[0]);
trigger.player.storage.xinsidi2=get.color(result.cards[0],result.cards[0].original=='h'?player:false);
trigger.player.storage.xinsidi4=player;
trigger.player.syncStorage('xinsidi2');
}
@ -4008,7 +4008,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(!result.cards||!result.cards.length) return;
var card=result.cards[0];
if(get.suit(card)=='spade'){
if(get.suit(card,target)=='spade'){
player.turnOver();
target.loseHp();
}
@ -4466,6 +4466,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'gainEnd'},
audio:'fulin',
forced:true,
silent:true,
filter:function(event,player){
return _status.currentPhase==player;
},
@ -4704,7 +4705,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 2'
target.chooseToDiscard('he',true).set('prompt','请弃置一张锦囊牌,或依次弃置两张非锦囊牌。');
'step 3'
if((!result.cards||get.type(result.cards[0],'trick')!='trick')&&target.countCards('he',function(card){
if((!result.cards||get.type(result.cards[0],'trick',result.cards[0].original=='h'?target:false)!='trick')&&target.countCards('he',function(card){
return get.type(card,'trick')!='trick';
})){
target.chooseToDiscard('he',true,function(card){
@ -5270,8 +5271,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event,player){
if(event.type!='discard') return;
for(var i=0;i<event.cards2.length;i++){
if(get.color(event.cards2[i])=='black'&&get.type(event.cards2[i])=='basic'&&
get.position(event.cards2[i])=='d'){
if(get.color(event.cards2[i],event.hs.contains(event.cards2[i])?event.player:false)=='black'&&get.type(event.cards2[i])=='basic'&&
get.position(event.cards2[i],event.hs.contains(event.cards2[i])?event.player:false)=='d'){
return true;
}
}
@ -5282,7 +5283,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
var cards=[];
for(var i=0;i<trigger.cards2.length;i++){
if(get.color(trigger.cards2[i])=='black'&&get.type(trigger.cards2[i])=='basic'&&
if(get.color(trigger.cards2[i],trigger.hs.contains(trigger.cards2[i])?trigger.player:false)=='black'&&get.type(trigger.cards2[i],trigger.hs.contains(trigger.cards2[i])?trigger.player:false)=='basic'&&
get.position(trigger.cards2[i])=='d'){
cards.push(trigger.cards2[i]);
}
@ -7445,7 +7446,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 0"
var types=[];
for(var i=0;i<cards.length;i++){
types.add(get.type(cards[i],'trick'));
types.add(get.type(cards[i],'trick',player));
}
target.chooseToDiscard(function(card){
return !_status.event.types.contains(get.type(card,'trick'));
@ -7615,7 +7616,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.finish();
return;
}
event.color=get.color(result.cards[0]);
event.color=get.color(result.cards[0],result.cards[0].original=='h'?player:false);
player.chooseTarget(function(card,player,target){
return player!=target&&get.distance(player,target)<=1;
},true).set('ai',function(target){
@ -8677,7 +8678,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 0"
player.addTempSkill('gongji2');
"step 1"
if(get.type(cards[0])=='equip'){
if(get.type(cards[0],null,cards[0].original=='h'?player:false)=='equip'){
player.chooseTarget('是否弃置一名角色的一张牌?',function(card,player,target){
return player!=target&&target.countCards('he')>0;
}).set('ai',function(target){
@ -9462,7 +9463,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(event.type!='discard') return false;
if(event.player==player) return false;
for(var i=0;i<event.cards2.length;i++){
if(get.suit(event.cards2[i])=='club'&&get.position(event.cards2[i],true)=='d'){
if(get.suit(event.cards2[i],event.hs.contains(event.cards2[i])?event.player:false)=='club'&&get.position(event.cards2[i],true)=='d'){
return true;
}
}
@ -9471,7 +9472,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
frequent:'check',
check:function(event,player){
for(var i=0;i<event.cards2.length;i++){
if(get.suit(event.cards2[i])=='club'&&get.position(event.cards2[i],true)=='d'){
if(get.suit(event.cards2[i],event.hs.contains(event.cards2[i])?event.player:false)=='club'&&get.position(event.cards2[i],true)=='d'){
if(event.cards2[i].name=='du') return false;
}
}
@ -9483,7 +9484,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
var cards=[];
for(var i=0;i<trigger.cards2.length;i++){
if(get.suit(trigger.cards2[i])=='club'&&get.position(trigger.cards2[i],true)=='d'){
if(get.suit(trigger.cards2[i],trigger.hs.contains(trigger.cards2[i])?trigger.player:false)=='club'&&get.position(trigger.cards2[i],true)=='d'){
cards.push(trigger.cards2[i]);
}
}
@ -10730,9 +10731,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(target.hasSkill('shibei_ai')) return;
if(_status.event.getParent('useCard',true)||_status.event.getParent('_wuxie',true)) return;
if(get.tag(card,'damage')){
if(target.getHistory('damage',function(evt){
return evt!=trigger
}).length>0){
if(target.getHistory('damage').length>0){
return [1,-2];
}
else{

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.98.6',
'v1.9.98.7',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -554,6 +554,10 @@ window.noname_asset_list=[
'audio/die/chendeng.mp3',
'audio/die/yangbiao.mp3',
'audio/die/ol_pangtong.mp3',
'audio/die/gaolan.mp3',
'audio/die/sp_shenpei.mp3',
'audio/die/sp_zhanghe.mp3',
'audio/die/xunchen.mp3',
'audio/skill/anguo1.mp3',
'audio/skill/anguo2.mp3',
@ -2426,7 +2430,18 @@ window.noname_asset_list=[
'audio/skill/tsumugi_mugyu4.mp3',
'audio/skill/tsumugi_mugyu5.mp3',
'audio/skill/xinlianhuan_ol_pangtong1.mp3',
'audio/skill/xinlianhuan_ol_pangtong2.mp3',
'audio/skill/xinlianhuan_ol_pangtong2.mp3','audio/skill/beizhan1.mp3',
'audio/skill/beizhan2.mp3',
'audio/skill/fenglve1.mp3',
'audio/skill/fenglve2.mp3',
'audio/skill/gangzhi1.mp3',
'audio/skill/gangzhi2.mp3',
'audio/skill/mouzhi1.mp3',
'audio/skill/mouzhi2.mp3',
'audio/skill/xiying1.mp3',
'audio/skill/xiying2.mp3',
'audio/skill/yuanlve1.mp3',
'audio/skill/yuanlve2.mp3',
'font/huangcao.ttf',
'font/shousha.ttf',
@ -2938,7 +2953,12 @@ window.noname_asset_list=[
'image/character/ol_pangtong.jpg',
'image/character/key_yui.jpg',
'image/character/key_tsumugi.jpg',
'image/character/key_yoshino.jpg',
'image/character/key_yoshino.jpg','image/character/gaolan.jpg',
'image/character/key_harukakanata.jpg',
'image/character/key_saya.jpg',
'image/character/sp_shenpei.jpg',
'image/character/sp_zhanghe.jpg',
'image/character/xunchen.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -11203,7 +11203,7 @@
});
player.phaseDiscard()
if(!player.noPhaseDelay) game.delayx();
delete player.using;
//delete player.using;
delete player._noSkill;
"step 5"
player.phaseJieshu();
@ -11310,7 +11310,7 @@
delete ui.tempnowuxie;
}
});
delete player.using;
//delete player.using;
},
phaseDiscard:function(){
"step 0"
@ -13483,7 +13483,7 @@
}
}
if(directDiscard.length) game.cardsGotoOrdering(directDiscard);
player.using=cards;
//player.using=cards;
var cardaudio=true;
if(event.skill){
if(lib.skill[event.skill].audio){
@ -13888,7 +13888,7 @@
if(event._result){
event.result=event._result;
}
delete player.using;
//delete player.using;
if(document.getElementsByClassName('thrown').length){
if(event.delayx!==false) game.delayx();
}
@ -24183,6 +24183,7 @@
var outrange=info.outrange;
if(range==undefined&&outrange==undefined) return true;
if(player.hasSkill('undist')||target.hasSkill('undist')) return false;
for(var i in range){
if(i=='attack'){
if(player.inRange(target)) return true;
@ -32195,6 +32196,7 @@
if(card.ai.basic.equipValue==undefined) card.ai.basic.equipValue=1;
}
if(card.ai.basic.value==undefined) card.ai.basic.value=function(card,player,index,method){
if(player.isDisabled(get.subtype(card))) return 0.1;
var value=0;
var info=get.info(card);
var current=player.getEquip(info.subtype);
@ -45527,8 +45529,8 @@
event.result.skill=event.skill;
event.result.card=get.copy(get.info(event.skill).viewAs);
if(event.result.cards.length==1&&event.result.card){
event.result.card.suit=event.result.cards[0].suit;
event.result.card.number=event.result.cards[0].number;
event.result.card.suit=get.suit(event.result.cards[0]);
event.result.card.number=get.number(event.result.cards[0]);
}
if(event.skillDialog&&get.objtype(event.skillDialog)=='div'){
event.skillDialog.close();
@ -48272,16 +48274,16 @@
if(Object.prototype.toString.call(obj) === '[object HTMLTableCellElement]') return 'td';
if(Object.prototype.toString.call(obj) === '[object HTMLBodyElement]') return 'td';
},
type:function(obj,method){
type:function(obj,method,player){
if(typeof obj=='string') obj={name:obj};
if(typeof obj!='object') return;
var name=get.name(obj);
var name=get.name(obj,player);
if(!lib.card[name]) return;
if(method=='trick'&&lib.card[name].type=='delay') return 'trick';
return lib.card[name].type;
},
type2:function(card){
return get.type(card,'trick');
type2:function(card,player){
return get.type(card,'trick',player);
},
subtype:function(obj){
if(typeof obj=='string') obj={name:obj};
@ -48290,22 +48292,22 @@
return lib.card[obj.name].subtype;
},
equiptype:function(card){
var subtype=get.subtype(card);
var subtype=get.subtype(card,player);
if(subtype.indexOf('equip')==0) return parseInt(subtype[5]);
return 0;
},
name:function(card,mod){
if(mod!==false&&!['e','j'].contains(get.position(card))){
var owner=get.owner(card);
name:function(card,player){
if(get.itemtype(player)=='player'||(player!==false&&get.position(card)=='h')){
var owner=player||get.owner(card);
if(owner){
return game.checkMod(card,owner,card.name,'cardname',owner);
}
}
return card.name;
},
suit:function(card){
suit:function(card,player){
if(get.itemtype(card)=='cards'){
if(card.length==1) return get.suit(card[0]);
if(card.length==1) return get.suit(card[0],player);
return 'none';
//var suit=get.suit(card[0])
//for(var i=1;i<card.length;i++){
@ -48314,38 +48316,39 @@
//return suit;
}
else if(get.itemtype(card.cards)=='cards'&&!lib.suit.contains(card.suit)){
return get.suit(card.cards);
return get.suit(card.cards,player);
}
else{
var owner=get.owner(card);
var owner=player||get.owner(card);
if(owner){
return game.checkMod(card,card.suit,'suit',owner);
}
return card.suit;
}
},
color:function(card){
color:function(card,player){
if(get.itemtype(card)=='cards'){
var color=get.color(card[0])
var color=get.color(card[0],player)
for(var i=1;i<card.length;i++){
if(get.color(card[i])!=color) return 'none';
if(get.color(card[i],player)!=color) return 'none';
}
return color;
}
else if(get.itemtype(card.cards)=='cards'&&card.name!='muniu'){
return get.color(card.cards);
else if(get.itemtype(card.cards)=='cards'&&!lib.suit.contains(card.suit)){
return get.color(card.cards,player);
}
else{
if(get.suit(card)=='spade'||get.suit(card)=='club') return 'black';
if(get.suit(card)=='heart'||get.suit(card)=='diamond') return 'red';
if(get.suit(card,player)=='spade'||get.suit(card,player)=='club') return 'black';
if(get.suit(card,player)=='heart'||get.suit(card,player)=='diamond') return 'red';
return 'none';
}
},
number:function(card){
number:function(card,player){
//啥时候狗卡出相关技能我再完善
return card.number;
},
nature:function(card,mod){
if(mod!==false&&!['e','j'].contains(get.position(card))){
nature:function(card,player){
if(get.itemtype(player)=='player'||player!==false){
var owner=get.owner(card);
if(owner){
return game.checkMod(card,owner,card.nature,'cardnature',owner);
@ -48489,13 +48492,13 @@
if(method=='attack') return m;
return n;
},
info:function(item,mod){
info:function(item,player){
if(typeof item=='string'){
return lib.skill[item];
}
if(typeof item=='object'){
var name=item.name;
if(mod!==false) name=get.name(item);
if(player!==false) name=get.name(item,player);
return lib.card[name];
}
},
@ -48932,9 +48935,9 @@
if(game.players[i].getCards('hej').contains(card)) return game.players[i];
if(game.players[i].judging[0]==card&&method!='judge') return game.players[i];
}
for(var i=0;i<game.players.length;i++){
if(game.players[i].using&&game.players[i].using.contains(card)) return game.players[i];
}
//for(var i=0;i<game.players.length;i++){
// if(game.players[i].using&&game.players[i].using.contains(card)) return game.players[i];
//}
},
noSelected:function(){
return (ui.selected.buttons.length+ui.selected.cards.length+ui.selected.targets.length==0)

View File

@ -1,12 +1,12 @@
window.noname_update={
version:'1.9.98.6.1',
update:'1.9.98.6',
version:'1.9.98.7',
update:'1.9.98.6.1',
changeLog:[
'界庞统',
'SP张郃高览荀谌SP审配',
'bug修复',
],
files:[
'card/extra.js',
//'card/extra.js',
//'card/huanlekapai.js',
//'card/sp.js',
//'card/standard.js',
@ -18,37 +18,37 @@ window.noname_update={
//'card/zhenfa.js',
//'card/zhulu.js',
'character/diy.js',
//'character/extra.js',
'character/hearth.js',
'character/extra.js',
//'character/hearth.js',
//'character/gujian.js',
//'character/gwent.js',
//'character/hearth.js',
'character/mobile.js',
//'character/mtg.js',
'character/old.js',
//'character/old.js',
'character/refresh.js',
'character/shenhua.js',
'character/sp.js',
'character/tw.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/guozhan.js',
//'mode/chess.js',
//'mode/tafang.js',
//'mode/single.js',
//'mode/stone.js',
//'mode/brawl.js',
//'mode/versus.js',
//'mode/boss.js',
'mode/boss.js',
'game/game.js',
//'game/NoSleep.js',
//'game/config.js',

BIN
image/character/gaolan.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

BIN
image/character/xunchen.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 KiB

View File

@ -2638,7 +2638,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
filter:function(event,player,name){
if(name=='damageBegin4'){return event.num&&event.num>1;}
return true;
return game.hasPlayer(function(target){
return player!=target&&get.distance(player,target)<=1;
});
},
content:function(){
var name=event.triggername;
@ -2647,7 +2649,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
else{
game.countPlayer(function(target){
if(player!=target&&get.distance(target,player)<=1){
if(player!=target&&get.distance(player,target)<=1){
target.damage(1,player,'fire');
}
});
@ -9326,7 +9328,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
//地藏王:
"boss_dizangwang":"地藏王",
"boss_bufo":"不佛",
"boss_bufo_info":"锁定技,你的回合开始时,你对所有至你距离为1的其他角色造成1点火焰伤害你受到大于等于2的伤害时令此伤害-1。",
"boss_bufo_info":"锁定技,你的回合开始时,你对所有距离为1的其他角色造成1点火焰伤害你受到大于等于2的伤害时令此伤害-1。",
"boss_wuliang":"无量",
"boss_wuliang_info":"锁定技你登场时额外摸3张牌结束阶段开始时你摸两张牌你的回合开始时若你当前体力小于3则回复至3。",
"boss_dayuan":"大愿",