My Soul, Your Beats!

This commit is contained in:
Spmario233 2020-06-13 12:51:36 +08:00 committed by GitHub
parent 07f4cd9a47
commit 70290798f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 2946 additions and 2002 deletions

View File

@ -1077,7 +1077,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
["diamond",13,"hualiu"],
["club",1,"baiyin"],
["spade",2,"tengjia"],
["club",2,"tengjia",'fire'],
["club",2,"tengjia"],
["spade",1,"guding"],
["diamond",1,"zhuque"],

View File

@ -223,13 +223,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
//range:{global:1},
content:function(){
target.$gain2(cards);
if(target==targets[0]&&cards.length) target.$gain2(cards);
target.storage.mapodoufu=card;
target.storage.mapodoufu_markcount=2;
target.addSkill('mapodoufu');
},
ai:{
order:2,
order:1,
value:5,
result:{
target:function(player,target){
@ -1491,7 +1491,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
mapodoufu:{
mark:'card',
trigger:{player:'phaseEnd'},
trigger:{player:'phaseJieshuBegin'},
forced:true,
popup:false,
nopop:true,

View File

@ -598,7 +598,12 @@ game.import('card',function(lib,game,ui,get,ai,_status){
for(var i=0;i<dialog.buttons.length;i++){
if(dialog.buttons[i].link==card){
button=dialog.buttons[i];
button.querySelector('.info').innerHTML=get.translation(target);
button.querySelector('.info').innerHTML=function(target){
if(target._tempTranslate) return target._tempTranslate;
var name=target.name;
if(lib.translate[name+'_ab']) return lib.translate[name+'_ab'];
return get.translation(name);
}(target);
dialog.buttons.remove(button);
break;
}
@ -619,7 +624,12 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
}
}
},card,dialog.videoId,get.translation(target),capt);
},card,dialog.videoId,function(target){
if(target._tempTranslate) return target._tempTranslate;
var name=target.name;
if(lib.translate[name+'_ab']) return lib.translate[name+'_ab'];
return get.translation(name);
}(target),capt);
}
dialog.content.firstChild.innerHTML=capt;
game.addVideo('dialogCapt',null,[dialog.videoId,dialog.content.firstChild.innerHTML]);
@ -2062,7 +2072,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
if(typeof aiii=='number') return aiii;
}
if(Math.abs(get.attitude(_status.event.player,source))<3) return 0;
return -get.attitude(_status.event.player,source)
return -get.attitude(_status.event.player,source)*state;
}
},
source:target,

View File

@ -114,7 +114,12 @@ game.import('card',function(lib,game,ui,get,ai,_status){
for(var i=0;i<dialog.buttons.length;i++){
if(dialog.buttons[i].link==card){
button=dialog.buttons[i];
button.querySelector('.info').innerHTML=get.translation(target);
button.querySelector('.info').innerHTML=function(target){
if(target._tempTranslate) return target._tempTranslate;
var name=target.name;
if(lib.translate[name+'_ab']) return lib.translate[name+'_ab'];
return get.translation(name);
}(target);
dialog.buttons.remove(button);
break;
}
@ -135,7 +140,12 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
}
}
},card,dialog.videoId,get.translation(target),capt);
},card,dialog.videoId,function(target){
if(target._tempTranslate) return target._tempTranslate;
var name=target.name;
if(lib.translate[name+'_ab']) return lib.translate[name+'_ab'];
return get.translation(name);
}(target),capt);
}
dialog.content.firstChild.innerHTML=capt;
game.addVideo('dialogCapt',null,[dialog.videoId,dialog.content.firstChild.innerHTML]);

View File

@ -44,6 +44,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_tomoya:['male','key',4,['tomoya_shangxian','tomoya_wangjin']],
key_nagisa:['female','key',3,['nagisa_tiandu','nagisa_fuxin']],
key_ayato:['male','key',3,['ayato_jianshen','ayato_zonghuan']],
key_ao:['female','key',3,['ao_xishi','ao_kuihun','ao_shixin']],
key_yuzuru:['male','key',5,['yuzuru_wuxin','yuzuru_deyi']],
sp_key_kanade:['female','key',3,['kanade_mapo','kanade_benzhan']],
// diy_caocao:['male','wei',4,['xicai','diyjianxiong','hujia']],
// diy_hanlong:['male','wei',4,['siji','ciqiu']],
diy_feishi:['male','shu',3,['shuaiyan','moshou']],
@ -126,7 +129,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","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato"],
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_kagari","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade"],
diy_yongjian:["ns_chendao","yj_caoang"],
},
},
@ -142,6 +145,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。',
},
characterTitle:{
sp_key_kanade:'#rAngel Beats!',
key_yuzuru:'#rAngel Beats!',
key_tsumugi:'#bSummer Pockets',
key_ayato:'#rAngel Beats!',
key_nagisa:'#gClannad',
key_tomoya:'#gClannad',
@ -207,9 +213,411 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ns_liuzhang:'#r矮子剑薄荷糖',
},
perfectPair:{
yuji:['zuoci']
yuji:['zuoci'],
key_riki:['key_rin','key_saya','key_kyousuke'],
key_komari:['key_rin','key_sasami'],
key_masato:['key_kengo'],
key_yuiko:['key_harukakanata'],
key_doruji:['key_rin'],
key_tomoya:['key_nagisa','key_sunohara'],
key_ao:['key_inari'],
key_yuzuru:['key_hinata','key_kanade','key_ayato'],
key_yuri:['key_kanade'],
key_hinata:['key_yui'],
key_iwasawa:['key_hisako'],
},
skill:{
kanade_mapo:{
derivation:'mapodoufu',
enable:'chooseToUse',
viewAs:{name:'mapodoufu'},
filterCard:{suit:'heart'},
viewAsFilter:function(player){
return player.countCards('he',{suit:'heart'})>0;
},
position:'he',
mod:{
selectTarget:function(card,player,range){
if(card.name=='mapodoufu'&&range[1]!=-1) range[1]++;
},
},
check:function(card){
var player=_status.event.player;
if(game.countPlayer(function(current){
return player.canUse('mapodoufu',current)&&get.effect(current,{name:'mapodoufu'},player,player)>0;
})>1) return 6-get.value(card);
return 4-get.value(card);
},
},
kanade_benzhan:{
trigger:{global:['useCard','respond']},
direct:true,
filter:function(event,player){
return Array.isArray(event.respondTo)&&event.respondTo[0]!=event.player&&[event.respondTo[0],event.player].contains(player);
},
content:function(){
'step 0'
event.type=get.type(trigger.card)=='basic';
var prompt=event.type?'令一名角色摸两张牌或弃置两张牌':'令一名角色回复1点体力或对其造成1点伤害';
player.chooseTarget(get.prompt('kanade_benzhan'),prompt).set('ai',function(target){
var player=_status.event.player;
if(_status.event.getParent().type){
var att=get.attitude(player,target);
if(target.hasSkillTag('nogain')) return -att;
if(target.countCards('he')==1&&att<0) att/=2;
return Math.abs(att)*(1+0.1*(Math.min(0,5-target.countCards('h'))))
}
return Math.max(get.recoverEffect(target,player,player),get.damageEffect(target,player,player))
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('kanade_benzhan',target,'thunder');
var trans=get.translation(target);
var list;
if(event.type){
if(!target.countCards('h')) event._result={index:0};
else list=['令'+trans+'摸两张牌','令'+trans+'弃置两张牌'];
}
else{
if(target.isHealthy()) event._result={index:1};
else list=['令'+trans+'回复1点体力','对'+trans+'造成1点伤害'];
}
player.chooseControl().set('choiceList',list).set('choice',function(){
if(event.type) return (get.attitude(player,target)>0)?0:1;
return (get.recoverEffect(target,player,player)>get.damageEffect(target,player,player))?0:1;
}()).set('ai',function(){
return _status.event.choice;
});
}
else event.finish();
'step 2'
player.addExpose(0.2);
if(event.type){
if(result.index==0) target.draw(2);
else target.chooseToDiscard(2,'he',true);
}
else{
if(result.index==0) target.recover();
else target.damage();
}
},
},
yuzuru_wuxin:{
trigger:{player:'phaseJieshuBegin'},
direct:true,
content:function(){
'step 0'
player.chooseCardTarget({
filterTarget:function(){
if(ui.selected.cards.length) return false;
return true;
},
filterCard:function(){
if(ui.selected.targets.length) return false;
return lib.filter.cardDiscardable.apply(this,arguments);
},
selectTarget:function(){
if(!ui.selected.cards.length) return [1,1];
return [0,1];
},
selectCard:function(){
if(!ui.selected.cards.length) return [0,2];
return [2,2];
},
prompt:get.prompt2('yuzuru_wuxin'),
ai1:function(card){
var player=_status.event.player;
if(player.hp>3) return 0;
return player.getDamagedHp()*2-get.value(card);
},
ai2:function(target){
if(player.hp<4||target.hasSkillTag('nogain')) return 0;
return get.attitude(_status.event.player,target);
},
});
'step 1'
if(result.bool){
if(result.cards.length){
player.logSkill('yuzuru_wuxin');
player.discard(result.cards);
player.recover();
}
else{
var target=result.targets[0];
player.logSkill('yuzuru_wuxin',target,{color:[194,117,92]});
player.loseHp();
target.draw(2);
}
}
},
},
yuzuru_deyi:{
derivation:['yuzuru_kunfen','yuzuru_quji','yuzuru_wangsheng','yuzuru_kunfen_rewrite','yuzuru_quji_rewrite'],
trigger:{global:'dieAfter'},
forced:true,
unique:true,
juexingji:true,
skillAnimation:true,
animationColor:'orange',
content:function(){
player.awakenSkill('yuzuru_deyi');
player.removeSkill('yuzuru_wuxin');
player.addSkillLog('yuzuru_kunfen');
player.addSkillLog('yuzuru_quji');
player.addSkillLog('yuzuru_wangsheng');
player.loseMaxHp();
player.recover();
},
},
yuzuru_kunfen:{
trigger:{player:'phaseJieshuBegin'},
forced:true,
content:function(){
'step 0'
if(!player._yuzuru_sss) player.loseHp();
player.draw(2);
'step 1'
if(player.countCards('he')<2) event.finish();
else{
player.chooseCardTarget({
selectCard:2,
filterTarget:lib.filter.notMe,
prompt:'是否交给一名其他角色两张牌?',
position:'he',
ai1:function(card){
var player=_status.event.player;
if(player.maxHp-player.hp==1&&card.name=='du') return 30;
var check=player.countCards('h')-2;
if(check<1) return 0;
if(player.hp>1&&check<2) return 0;
return get.unuseful(card)+9;
},
ai2:function(target){
var att=get.attitude(_status.event.player,target);
if(ui.selected.cards.length==1&&ui.selected.cards[0].name=='du') return 1-att;
return att-2;
},
});
}
'step 2'
if(result.bool) result.targets[0].gain(result.cards,player,'giveAuto');
},
},
yuzuru_quji:{
audio:2,
enable:'phaseUse',
usable:1,
position:'he',
filterCard:true,
selectCard:function(){
var player=_status.event.player;
return player.getDamagedHp();
},
filterTarget:function(card,player,target){
return target!=player&&target.hp<target.maxHp;
},
filter:function(event,player){
return player.hp<player.maxHp;
},
selectTarget:function(){
return [1,ui.selected.cards.length];
},
complexSelect:true,
check:function(card){
if(!player._yuzuru_sss&&get.color(card)=='black') return -1;
return 9-get.value(card);
},
line:{color:[194,117,92]},
content:function(){
"step 0"
target.recover();
"step 1"
if(target==targets[targets.length-1]&&!player._yuzuru_sss){
for(var i=0;i<cards.length;i++){
if(get.color(cards[i],player)=='black'){
player.loseHp();
break;
}
}
}
},
ai:{
result:{
target:1
},
order:6
}
},
yuzuru_wangsheng:{
trigger:{player:'dieBegin'},
forced:true,
juexingji:true,
unique:true,
skillAnimation:true,
animationColor:'soil',
content:function(){
'step 0'
trigger.cancel();
player.awakenSkill('yuzuru_wangsheng');
player._yuzuru_sss=true;
if(player.countCards('he')>0){
player.chooseCardTarget({
selectCard:[1,Infinity],
filterTarget:lib.filter.notMe,
prompt:'将任意张牌交给一名其他角色,或点【取消】。',
position:'he',
ai1:function(card){
var player=_status.event.player;
if(get.suit(card,false)=='heart'&&game.hasPlayer(function(current){
return current.hasSkill('kanade_mapo')&&get.attitude(player,current)>0;
})) return 1;
return 0;
},
ai2:function(kanade){
if(kanade.hasSkill('kanade_mapo')&&get.attitude(_status.event.player,kanade)>0) return 2;
return 0;
},
});
}
else event.goto(2);
'step 1'
if(result.bool) result.targets[0].gain(result.cards,player,'giveAuto');
'step 2'
player.loseMaxHp();
'step 3'
if(player.hp<2) player.recover(2-player.hp);
},
},
ao_xishi:{
trigger:{
player:['useCard','respond'],
target:'useCardToTargeted',
},
forced:true,
filter:function(event,player,name){
return (name=='useCard'||name=='respond'||event.player!=player)&&get.suit(event.card)=='diamond';
},
content:function(){player.draw()},
},
ao_kuihun:{
trigger:{global:'dying'},
logTarget:'player',
line:'thunder',
filter:function(event,player){
return player!=event.player;
},
content:function(){
'step 0'
player.draw();
'step 1'
if(!trigger.player.countCards('h')) event.finish();
else player.chooseButton(['选择一张牌作为「蝶」',trigger.player.getCards('h')]).set('ai',function(button){
var val=get.buttonValue(button);
if(get.attitude(_status.event.player,get.owner(button.link))>0) return -val;
return val;
});
'step 2'
if(result.bool){
trigger.player.lose(result.links,ui.special,'visible','toStorage');
trigger.player.$give(result.links,player,false);
player.markAuto('ao_diegui',result.links);
game.log(result.links,'飞向了',player);
}
},
locked:false,
mod:{
targetInRange:function(card,player){
var list=player.getStorage('ao_diegui');
for(var i=0;i<list.length;i++){
if(get.suit(list[i],false)==get.suit(card,false)) return true;
}
},
cardUsable:function(card,player){
var list=player.getStorage('ao_diegui');
for(var i=0;i<list.length;i++){
if(get.suit(list[i],false)==get.suit(card,false)) return Infinity;
}
},
maxHandcard:function(player,num){
return num+player.getStorage('ao_diegui').length;
},
},
},
ao_shixin:{
derivation:'ao_diegui',
trigger:{player:'phaseZhunbeiBegin'},
juexingji:true,
forced:true,
skillAnimation:true,
animationColor:'key',
unique:true,
filter:function(event,player){
var list=player.getStorage('ao_diegui');
var list2=[];
for(var i=0;i<list.length;i++){
list2.add(get.suit(list[i],false));
}
return list2.length>2;
},
content:function(){
player.awakenSkill('ao_shixin');
player.removeSkill('ao_kuihun');
player.addSkill('ao_diegui');
player.gainMaxHp();
player.recover();
},
},
ao_diegui:{
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.getStorage('ao_diegui').length>0;
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('蝶归',player.storage.ao_diegui,'hidden');
},
backup:function(links,player){
return {
card:links,
filterCard:function(){return false},
selectCard:-1,
filterTarget:true,
delay:false,
content:lib.skill.ao_diegui.contentx,
line:'thunder',
ai:{
result:{
target:function(player,target){
if(target!=player&&target.hasSkillTag('nogain')) return 0;
var num=1;
if(target.isTurnedOver()) num+=2;
if(target.isLinked()) num+=0.5;
return num;
},
}
},
}
},
prompt:function(links,player){
return '选择一名角色,令其获得'+get.translation(links[0])+',摸两张牌并将武将牌复原。'
},
},
contentx:function(){
'step 0'
target.gain(lib.skill.ao_diegui_backup.card,player,'give','fromStorage');
player.unmarkAuto('ao_diegui',lib.skill.ao_diegui_backup.card);
target.draw(2);
'step 1'
target.link(false);
'step 2'
target.turnOver(false);
},
intro:{name:'七影蝶',content:'cards',onunmark:'throw'},
ai:{order:1,result:{player:1}},
},
ayato_jianshen:{
mod:{
cardnature:function(card,player){
@ -7846,6 +8254,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_tomoya:'冈崎朋也',
key_nagisa:'古河渚',
key_ayato:'直井文人',
key_ao:'空门苍',
key_yuzuru:'音无结弦',
sp_key_kanade:'SP立华奏',
lucia_duqu:'毒躯',
lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。',
lucia_zhenren:'振刃',
@ -8009,6 +8420,33 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ayato_jianshen_info:'锁定技,你手牌中的【杀】均视为神属性。',
ayato_zonghuan:'纵幻',
ayato_zonghuan_info:'出牌阶段限一次,你可以观看一名其他角色的手牌,然后选择一项:将其中的一张牌置入弃牌堆,或以该角色的视角使用其中的一张,然后摸一张牌。',
ao_xishi:'习事',
ao_xishi_info:'锁定技,当你使用或打出♦牌时,或其他角色使用♦牌指定你为目标后,你摸一张牌。',
ao_kuihun:'窥魂',
ao_kuihun_info:'其他角色进入濒死状态时,你可以摸一张牌,然后观看其手牌并将其中一张牌置于你的武将牌上,称为「蝶」。你使用与一张「蝶」花色相同的牌时无距离和次数限制。你的手牌上限+XX为蝶数。',
ao_shixin:'释心',
ao_shixin_info:'觉醒技准备阶段若你的「蝶」中包含至少三种花色则你加1点体力上限并回复1点体力失去〖窥魂〗并获得〖蝶归〗。',
ao_diegui:'蝶归',
ao_diegui_backup:'蝶归',
ao_diegui_info:'出牌阶段限一次,你可以将一张「蝶」交给一名角色,该角色摸两张牌并复原武将牌。',
yuzuru_wuxin:'无心',
yuzuru_wuxin_info:'结束阶段你可以选择一项失去1点体力并令一名角色摸两张牌或弃置两张牌并回复1点体力。',
yuzuru_deyi:'得义',
yuzuru_deyi_info:'觉醒技当有其他角色死亡后你减1点体力上限并回复1点体力失去技能〖无心〗获得技能〖往生〗〖困奋〗和〖去疾〗。',
yuzuru_wangsheng:'往生',
yuzuru_wangsheng_info:'觉醒技当你即将死亡时你防止此次死亡。你可以将任意张牌交给一名其他角色然后减1点体力上限并将体力回复至2点修改技能〖困奋〗和〖去疾〗。',
yuzuru_kunfen:'困奋',
yuzuru_kunfen_info:'锁定技结束阶段你失去1点体力并摸两张牌。然后你可以将两张牌交给一名其他角色。',
yuzuru_quji:'去疾',
yuzuru_quji_info:'出牌阶段限一次你可以弃置X张牌并选择至多等量已受伤的其他角色这些角色各回复1点体力。若你以此法弃置了黑色牌则你失去1点体力。X为你已损失的体力值',
yuzuru_kunfen_rewrite:'困奋·改',
yuzuru_kunfen_rewrite_info:'锁定技,结束阶段,你摸两张牌。然后你可以将两张牌交给一名其他角色。',
yuzuru_quji_rewrite:'去疾·改',
yuzuru_quji_rewrite_info:'出牌阶段限一次你可以弃置X张牌并选择至多等量已受伤的其他角色这些角色各回复1点体力。X为你已损失的体力值',
kanade_mapo:'麻婆',
kanade_mapo_info:'你可以将一张♥牌当做【麻婆豆腐】使用。你使用的【麻婆豆腐】可以多指定一个目标。',
kanade_benzhan:'奔战',
kanade_benzhan_info:'当你使用或打出牌响应其他角色或其他角色使用或打出牌响应你后若此牌为基本牌你可令一名角色弃置两张牌或令一名角色摸两张牌非基本牌你可对一名角色造成1点伤害或令一名其他角色回复1点体力。',
yj_caoang:'SP曹昂',

View File

@ -5,18 +5,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
characterSort:{
old:{
old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","xiaoqiao"],
old_refresh:["old_zhangfei","old_huatuo"],
old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun"],
old_yijiang1:["masu","xushu","fazheng","yujin","xin_yujin","old_xusheng","old_lingtong","ol_yujin"],
old_yijiang2:["old_madai","old_zhonghui","old_wangyi","old_guanzhang"],
old_yijiang3:["liru","old_zhuran","ol_manchong","old_fuhuanghou","old_caochong"],
old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan"],
old_yijiang5:["old_caoxiu","old_quancong","old_zhuzhi"],
old_yijiang67:["ol_xinxianying","ol_zhangrang","ol_liuyu"],
old_sp:["old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai","old_huangfusong","ol_maliang","panfeng"],
old_sp:["old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai","old_huangfusong","ol_maliang","panfeng","old_wangyun"],
old_mobile:["old_caochun","old_majun"],
},
},
character:{
old_wangyun:['male','qun',4,['wylianji','moucheng']],
panfeng:['male','qun',4,['kuangfu']],
xiaoqiao:['female','wu',3,['tianxiang','hongyan']],
weiyan:['male','shu',4,['kuanggu']],
@ -29,7 +30,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_caochong:['male','wei',3,['oldrenxin','oldchengxiang']],
yuji:['male','qun',3,['old_guhuo'],['forbidai']],
zhangjiao:['male','qun',3,['leiji','guidao','huangtian'],['zhu']],
old_zhangfei:['male','shu',4,['paoxiao','retishen']],
old_zhangfei:['male','shu',4,['paoxiao','new_tishen']],
old_zhaoyun:['male','shu',4,['longdan','new_yajiao']],
old_huatuo:['male','qun',3,['jijiu','chulao']],
jsp_caoren:['male','wei',4,['kuiwei','yanzheng']],
old_caochun:['male','wei',4,['shanjia']],
@ -878,6 +880,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_huangfusong:'旧皇甫嵩',
ol_maliang:'旧马良',
ol_liuyu:'OL刘虞',
old_wangyun:'旧王允',
old_zhaoyun:'旧赵云',
old_fuhun:'父魂',
old_fuhun_info:'摸牌阶段开始时,你可以放弃摸牌,改为从牌堆顶亮出两张牌并获得之,若亮出的牌颜色不同,你获得技能“武圣”、“咆哮”,直到回合结束。',

View File

@ -36,8 +36,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_zhangliao:['male','wei',4,['new_retuxi']],
re_xuzhu:['male','wei',4,['new_reluoyi']],
re_xiahoudun:['male','wei',4,['reganglie','new_qingjian']],
re_zhangfei:['male','shu',4,['new_repaoxiao','new_tishen']],
re_zhaoyun:['male','shu',4,['longdan','new_yajiao']],
re_zhangfei:['male','shu',4,['olpaoxiao','oltishen']],
re_zhaoyun:['male','shu',4,['ollongdan','olyajiao']],
re_guanyu:['male','shu',4,['new_rewusheng','new_yijue']],
re_machao:['male','shu',4,['mashu','retieji']],
re_xushu:['male','shu',4,['zhuhai','qianxin']],
@ -103,6 +103,278 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sunben:['zhouyu','taishici','daqiao'],
},
skill:{
ollongdan:{
audio:'longdan_sha',
audioname:['re_zhaoyun','sp_zhaoyun'],
enable:['chooseToUse','chooseToRespond'],
prompt:'将杀当做闪,或将闪当做杀,或将桃当做酒,或将酒当做桃使用或打出',
viewAs:function(cards,player){
var name=false;
switch(get.name(cards[0],player)){
case 'sha':name='shan';break;
case 'shan':name='sha';break;
case 'tao':name='jiu';break;
case 'jiu':name='tao';break;
}
if(name) return {name:name};
return null;
},
check:function(card){
var player=_status.event.player;
if(_status.event.type=='phase'){
var max=0;
var name2;
var list=['sha','tao','jiu'];
var map={sha:'shan',tao:'jiu',jiu:'tao'}
for(var i=0;i<list.length;i++){
var name=list[i];
if(player.countCards('h',map[name])>(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){
var temp=get.order({name:name});
if(temp>max){
max=temp;
name2=map[name];
}
}
}
if(name2==get.name(card,player)) return 1;
return 0;
}
return 1;
},
filterCard:function(card,player,event){
event=event||_status.event;
var filter=event._backup.filterCard;
var name=get.name(card,player);
if(name=='sha'&&filter({name:'shan',cards:[card]},player,event)) return true;
if(name=='shan'&&filter({name:'sha',cards:[card]},player,event)) return true;
if(name=='tao'&&filter({name:'jiu',cards:[card]},player,event)) return true;
if(name=='jiu'&&filter({name:'tao',cards:[card]},player,event)) return true;
return false;
},
filter:function(event,player){
var filter=event.filterCard;
if(filter({name:'sha'},player,event)&&player.countCards('h','shan')) return true;
if(filter({name:'shan'},player,event)&&player.countCards('h','sha')) return true;
if(filter({name:'tao'},player,event)&&player.countCards('h','jiu')) return true;
if(filter({name:'jiu'},player,event)&&player.countCards('h','tao')) return true;
return false;
},
ai:{
respondSha:true,
respondShan:true,
save:true,
skillTagFilter:function(player,tag){
var name;
switch(tag){
case 'respondSha':name='shan';break;
case 'respondShan':name='sha';break;
case 'save':name='jiu';break;
}
if(!player.countCards('h',name)) return false;
},
order:function(item,player){
if(player&&_status.event.type=='phase'){
var max=0;
var list=['sha','tao','jiu'];
var map={sha:'shan',tao:'jiu',jiu:'tao'}
for(var i=0;i<list.length;i++){
var name=list[i];
if(player.countCards('h',map[name])>(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){
var temp=get.order({name:name});
if(temp>max) max=temp;
}
}
if(max>0) max+=0.3;
return max;
}
return 4;
},
},
},
olyajiao:{
audio:'yajiao',
trigger:{player:'loseAfter'},
frequent:true,
filter:function(event,player){
return player!=_status.currentPhase&&event.hs&&event.hs.length>0&&['useCard','respond'].contains(event.getParent().name);
},
content:function(){
"step 0"
event.card=get.cards()[0];
game.cardsGotoOrdering(event.card);
event.videoId=lib.status.videoId++;
var judgestr=get.translation(player)+'发动了【涯角】';
game.addVideo('judge1',player,[get.cardInfo(event.card),judgestr,event.videoId]);
game.broadcastAll(function(player,card,str,id,cardid){
var event;
if(game.online){
event={};
}
else{
event=_status.event;
}
if(game.chess){
event.node=card.copy('thrown','center',ui.arena).animate('start');
}
else{
event.node=player.$throwordered(card.copy(),true);
}
if(lib.cardOL) lib.cardOL[cardid]=event.node;
event.node.cardid=cardid;
event.node.classList.add('thrownhighlight');
ui.arena.classList.add('thrownhighlight');
event.dialog=ui.create.dialog(str);
event.dialog.classList.add('center');
event.dialog.videoId=id;
},player,event.card,judgestr,event.videoId,get.id());
game.log(player,'展示了',event.card);
game.delay(2);
if(get.type(event.card,'trick')==get.type(trigger.getParent().card,'trick')){
player.chooseTarget('选择获得此牌的角色').set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(_status.event.du){
if(target.hasSkillTag('nodu')) return 0;
return -att;
}
if(att>0){
return att+Math.max(0,5-target.countCards('h'));
}
return att;
}).set('du',event.card.name=='du');
}
else{
event.disbool=true;
player.chooseTarget('是否弃置攻击范围内包含你的一名角色区域内的一张牌?',function(card,player,target){
return target.inRange(player)&&target.countDiscardableCards(player,'hej')>0;
}).set('ai',function(target){
var player=_status.event.player;
return get.effect(target,{name:'guohe'},player,player);
});
}
"step 1"
if(event.disbool){
if(result.bool){
player.line(result.targets[0],'green');
player.discardPlayerCard(result.targets[0],'hej',true);
}
event.dialog.close();
game.addVideo('judge2',null,event.videoId);
game.addVideo('deletenode',player,[get.cardInfo(event.node)]);
event.node.delete();
game.broadcast(function(id,card){
var dialog=get.idDialog(id);
if(dialog){
dialog.close();
}
if(card.clone){
card.clone.delete();
}
ui.arena.classList.remove('thrownhighlight');
},event.videoId,event.card);
ui.arena.classList.remove('thrownhighlight');
}
else if(result.targets){
event.dialog.close();
game.addVideo('judge2',null,event.videoId);
player.line(result.targets,'green');
result.targets[0].gain(event.card,'log');
event.node.moveDelete(result.targets[0]);
game.addVideo('gain2',result.targets[0],[get.cardInfo(event.node)]);
ui.arena.classList.remove('thrownhighlight');
game.broadcast(function(card,target,id){
var dialog=get.idDialog(id);
if(dialog){
dialog.close();
}
ui.arena.classList.remove('thrownhighlight');
if(card.clone){
card.clone.moveDelete(target);
}
},event.card,result.targets[0],event.videoId);
}
else{
game.addVideo('deletenode',player,[get.cardInfo(event.node)]);
event.node.delete();
game.broadcast(function(id){
var dialog=get.idDialog(id);
if(dialog){
dialog.close();
}
if(card.clone){
card.clone.delete();
}
ui.arena.classList.remove('thrownhighlight');
},event.videoId,event.card);
event.dialog.close();
game.addVideo('judge2',null,event.videoId);
ui.arena.classList.remove('thrownhighlight');
}
},
ai:{
effect:{
target:function(card,player){
if(get.tag(card,'respond')&&player.countCards('h')>1) return [1,0.2];
}
}
}
},
olpaoxiao:{
audio:"paoxiao",
audioname:['re_zhangfei','guanzhang','xiahouba'],
trigger:{player:'shaMiss'},
forced:true,
content:function(){
player.addTempSkill('olpaoxiao2');
player.addMark('olpaoxiao2',1,false);
},
mod:{
cardUsable:function (card,player,num){
if(card.name=='sha') return Infinity;
},
},
},
olpaoxiao2:{
trigger:{source:'damageBegin1'},
forced:true,
audio:'paoxiao',
audioname:['re_zhangfei','guanzhang','xiahouba'],
filter:function(event,player){
return player.countMark('olpaoxiao2')>0;
},
onremove:true,
content:function(){
trigger.num+=player.countMark('olpaoxiao2');
player.removeSkill('olpaoxiao2');
},
intro:{content:'本回合内下一次使用【杀】造成伤害时令伤害值+#'},
},
oltishen:{
audio:'retishen',
unique:true,
mark:true,
skillAnimation:true,
animationColor:'soil',
limited:true,
trigger:{player:'phaseZhunbeiBegin'},
filter:function(event,player){
if(player.storage.oltishen) return false;
return player.isDamaged();
},
check:function(event,player){
if(player.hp<=2||player.getDamagedHp()>2) return true;
if(player.getDamagedHp()<=1) return false;
return player.getDamagedHp()<game.roundNumber;
},
content:function(){
player.awakenSkill('oltishen');
player.recover(player.maxHp-player.hp);
player.draw(player.maxHp-player.hp);
},
intro:{
content:'limited'
},
},
rexuanfeng:{
audio:'xuanfeng',
audioname:['boss_lvbu3','re_heqi','re_lingtong'],
@ -6408,6 +6680,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_lingtong:'界凌统',
rexuanfeng:'旋风',
rexuanfeng_info:'当你失去装备区内的牌时,或于弃牌阶段弃置了两张或更多的手牌后,你可以依次弃置一至两名其他角色的共计两张牌,或将一名其他角色装备区内的一张牌移动到另一名其他角色的装备区内。',
olpaoxiao:'咆哮',
olpaoxiao2:'咆哮',
olpaoxiao_info:'锁定技,你使用【杀】无次数限制。若你使用的【杀】被【闪】抵消,你本回合下一次使用【杀】造成伤害时,此伤害+1。',
oltishen:'替身',
oltishen_info:'限定技准备阶段你可以将体力回复至上限然后摸X张牌X为你回复的体力值。',
ollongdan:'龙胆',
ollongdan_info:'你可以将一张【杀】当做【闪】、【闪】当做【杀】、【酒】当做【桃】、【桃】当做【酒】使用或打出。',
ollongdan_jiu:'龙胆(酒)',
olyajiao:'涯角',
olyajiao_info:'当你于回合外因使用或打出而失去手牌后,你可以展示牌堆顶的一张牌。若这两张牌的类别相同,你可以将展示的牌交给一名角色;若类别不同,你可弃置攻击范围内包含你的角色区域里的一张牌。',
refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风',

View File

@ -173,7 +173,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhangren:['male','qun',4,['chuanxin','zfengshi']],
zoushi:['female','qun',3,['zhuoshui','zqingcheng']],
wangyun:['male','qun',4,['wylianji','moucheng']],
wangyun:['male','qun',4,['xinlianji','xinmoucheng']],
sunqian:['male','shu',3,['qianya','shuimeng']],
xizhicai:['male','wei',3,['tiandu','xianfu','chouce']],
quyi:['male','qun',4,['fuqi','jiaozi']],
@ -513,6 +513,168 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//新王允
xinlianji:{
enable:'phaseUse',
audio:'wylianji',
usable:1,
check:function(card){
return 5-get.value(card);
},
filterTarget:function(card,player,target){
if(ui.selected.targets.length) return true;
return target!=player;
},
filterCard:true,
selectTarget:2,
multitarget:true,
targetprompt:['打人','被打'],
content:function(){
'step 0'
player.addMark('xinlianji',1,false);
var card=get.cardPile2(function(card){
return get.subtype(card)=='equip1'&&targets[0].hasUseTarget(card);
});
if(card){
if(card.name=='qinggang'&&!lib.inpile.contains('qibaodao')){
card.remove();
card=game.createCard('qibaodao',card.suit,card.number);
}
targets[0].chooseUseTarget(card,true,'nopopup','noanimate');
}
else{
player.chat('没有装备牌了吗');
game.log('但是牌堆里已经没有装备牌了!');
}
'step 1'
game.updateRoundNumber();
targets[0].chooseToUse('对'+get.translation(targets[1])+'使用一张杀,或将装备区里的武器牌交给一名其他角色',
{name:'sha'}).set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false;
return lib.filter.filterTarget.apply(this,arguments);
}).set('sourcex',targets[1]).set('addCount',false);
'step 2'
var card=targets[0].getEquip(1);
if(!result.bool&&card){
event.card=card;
targets[0].chooseTarget(true,'将'+get.translation(card)+'交给一名其他角色',lib.filter.notMe).set('ai',function(target){
var card=_status.event.getParent().card;
return (target.hasSkillTag('nogain')?0:get.attitude(_status.event.player,target))*Math.max(0.1,target.getUseValue(card));
});
}
else event.finish();
'step 3'
result.targets[0].gain(card,targets[0],'give');
},
ai:{
order:4,
result:{
target:function(player,target){
if(ui.selected.targets.length){
var pretarget=ui.selected.targets[0];
if(pretarget.hasSha()&&pretarget.canUse({name:'sha'},target)) return get.effect(target,{name:'sha'},pretarget,target);
return Math.random();
}
if(!target.getEquip(1)){
if(game.hasPlayer(function(current){
return current!=target&&!current.hasSkillTag('nogain')&&get.attitude(current,target)>0;
})) return 3;
return -3;
}
if(!game.hasPlayer(function(current){
return current!=target&&!current.hasSkillTag('nogain')&&get.attitude(current,target)>0;
})) return -6;
return 4-get.value(target.getEquip(1));
},
},
},
},
xinmoucheng:{
trigger:{player:'phaseZhunbeiBegin'},
audio:'moucheng',
forced:true,
juexingji:true,
skillAnimation:true,
animationColor:'gray',
derivation:'xinjingong',
unique:true,
filter:function(event,player){
return player.countMark('xinlianji')>2;
},
content:function(){
player.awakenSkill('xinmoucheng');
player.addSkill('xinjingong');
player.removeSkill('xinlianji');
},
},
xinjingong:{
audio:'jingong',
enable:'phaseUse',
filter:function(event,player){
return player.countCards('he',function(card){
return card.name=='sha'||get.type(card)=='equip';
});
},
delay:false,
usable:1,
content:function(){
'step 0'
var list=get.inpile('trick').randomGets(2);
if(Math.random()<0.5){
list.push('wy_meirenji');
}
else{
list.push('wy_xiaolicangdao');
}
for(var i=0;i<list.length;i++){
list[i]=['锦囊','',list[i]];
}
player.chooseButton(['矜功',[list,'vcard']]).set('filterButton',function(button,player){
return game.hasPlayer(function(current){
return player.canUse(button.link[2],current,true,false);
});
}).set('ai',function(button){
var player=_status.event.player;
return player.getUseValue(button.link[2]);
});
'step 1'
if(result.bool){
var name=result.links[0][2];
event.fakecard={name:name};
player.chooseCardTarget({
filterCard:function(card){
return card.name=='sha'||get.type(card)=='equip';
},
position:'he',
filterTarget:lib.filter.filterTarget,
selectTarget:lib.filter.selectTarget,
ai1:function(card){
return 7-get.value(card);
},
ai2:function(target){
var card=_status.event.fakecard;
var player=_status.event.player;
return get.effect(target,card,player,player);
},
_get_card:event.fakecard,
prompt:'将一张装备牌或【杀】当作'+get.translation(name)+'使用'
}).set('fakecard',event.fakecard);
}
else{
event.finish();
}
'step 2'
if(result.bool){
player.useCard(event.fakecard,result.cards,result.targets);
}
},
ai:{
order:2,
result:{
player:1
}
}
},
//新岩泽(划掉)留赞
refenyin:{
audio:'fenyin',
@ -5662,6 +5824,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
wylianji:{
enable:'phaseUse',
audio:2,
usable:1,
filter:function(event,player){
return player.hasCard(lib.skill.wylianji.filterCard);
@ -5703,7 +5866,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
if(equip1.name=='qinggang'&&!lib.inpile.contains('qibaodao')){
equip1.remove();
equip1=game.createCard('qibaodao',equip1.suit,equip1.number);
equip1=game.createCard2('qibaodao',equip1.suit,equip1.number);
}
target.$draw(equip1);
target.chooseUseTarget(true,equip1,'noanimate','nopopup');
@ -5896,6 +6059,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
jingong:{
audio:2,
enable:'phaseUse',
filter:function(event,player){
return player.countCards('he',function(card){
@ -13291,9 +13455,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 0"
target.recover();
"step 1"
if(target==player){
if(target==targets[targets.length-1]){
for(var i=0;i<cards.length;i++){
if(get.color(cards[i],cards[i].original=='h'?player:false)=='black'){
if(get.color(cards[i],player)=='black'){
player.loseHp();
break;
}
@ -14226,7 +14390,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
list.push('retiaoxin');
}
if(player.hp<=2){
list.push('new_repaoxiao');
list.push('olpaoxiao');
}
if(player.hp<=1){
list.push('xinshensu');
@ -14235,7 +14399,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.addAdditionalSkill('baobian',list);
}
},
derivation:['retiaoxin','new_repaoxiao','xinshensu'],
derivation:['retiaoxin','olpaoxiao','xinshensu'],
content:function(){
player.removeAdditionalSkill('baobian');
var list=[];
@ -14244,7 +14408,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
list.push('retiaoxin');
}
if(player.hp<=2){
list.push('new_repaoxiao');
list.push('olpaoxiao');
}
if(player.hp<=1){
list.push('xinshensu');
@ -17988,6 +18152,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
refenyin_info:'锁定技,你的回合内,当一张牌进入弃牌堆后,若本回合内没有过与此牌花色相同的卡牌进入过弃牌堆,则你摸一张牌。',
liji:'力激',
liji_info:'出牌阶段限X次你可以弃置一张牌并对一名其他角色造成1点伤害。X为本回合内进入过弃牌堆的卡牌数除以8若场上人数小于5则改为除以4向下取整',
xinlianji:'连计',
xinlianji_info:'出牌阶段限一次,你可以弃置一张手牌,令其使用牌堆中的一张随机武器牌,然后选择一项:对你指定的一名角色使用【杀】,或将其装备区里的武器牌交给任意角色。',
xinmoucheng:'谋逞',
xinmoucheng_info:'觉醒技准备阶段若你已经发动了3次以上的〖连计〗则你失去〖连计〗并获得〖矜功〗。',
xinjingong:'矜功',
xinjingong_info:'出牌阶段限一次,你可以将一张【杀】或装备牌当做三张随机锦囊牌中的一张使用。',
sp_default:"常规",
sp_whlw:"文和乱武",

View File

@ -1779,12 +1779,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
else return event.cards.filterInD('od').length>0;
},
logTarget:'player',
check:function(event,player){
if(get.attitude(player,event.player)>=0) return true;
if(player.hasSkill('funan_jiexun')) return true;
if(event.cards.length>1) return true;
return get.value(event.cards[0])>get.value(event.respondTo[1]);
},
content:function(){
'step 0'
if(!player.hasSkill('funan_jiexun')){
@ -7282,7 +7276,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
selectCard:2,
position:'h',
audio:2,
derivation:['new_rewusheng','new_repaoxiao'],
derivation:['new_rewusheng','olpaoxiao'],
viewAs:{name:'sha'},
prompt:'将两张手牌当杀使用或打出',
check:function(card){
@ -7297,7 +7291,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
respondSha:true,
order:function(item,player){
if(player.hasSkill('new_rewusheng')&&player.hasSkill('new_repaoxiao')){
if(player.hasSkill('new_rewusheng')&&player.hasSkill('olpaoxiao')){
return 1;
}
if(player.countCards('h')<4){
@ -7317,7 +7311,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
player.addTempSkill('new_rewusheng');
player.addTempSkill('new_repaoxiao');
player.addTempSkill('olpaoxiao');
player.addTempSkill('fuhun3');
}
},

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.99.3',
'v1.9.100',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -3045,6 +3045,11 @@ window.noname_asset_list=[
'image/character/key_ayato.jpg',
'image/character/key_nagisa.jpg',
'image/character/key_tomoya.jpg',
'image/character/key_ao.jpg',
'image/character/key_yuzuru.jpg',
'image/character/old_wangyun.jpg',
'image/character/old_zhaoyun.jpg',
'image/character/sp_key_kanade.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -15468,7 +15468,7 @@
game.expandSkills(skills);
for(var i=0;i<skills.length;i++){
var ifo=get.info(skills[i]);
if(ifo.viewAs&&ifo.viewAs.name==name){
if(ifo.viewAs&&typeof ifo.viewAs!='function'&&ifo.viewAs.name==name){
if(!ifo.viewAsFilter||ifo.viewAsFilter(player)){
return true;
}
@ -21021,7 +21021,7 @@
game.expandSkills(skills);
for(var i=0;i<skills.length;i++){
var ifo=get.info(skills[i]);
if(ifo.viewAs&&ifo.viewAs.name=='wuxie'){
if(ifo.viewAs&&typeof ifo.viewAs!='function'&&ifo.viewAs.name=='wuxie'){
if(!ifo.viewAsFilter||ifo.viewAsFilter(this)){
return true;
}
@ -23283,7 +23283,40 @@
var info=get.info(skill);
this.skill=skill;
this._aiexclude=[];
if(info.viewAs){
if(typeof info.viewAs=='function'){
if(info.filterButton!=undefined) this.filterButton=get.filter(info.filterButton);
if(info.selectButton!=undefined) this.selectButton=info.selectButton;
if(info.filterTarget!=undefined) this.filterTarget=get.filter(info.filterTarget);
if(info.selectTarget!=undefined) this.selectTarget=info.selectTarget;
if(info.filterCard!=undefined){
if(info.ignoreMod) this.ignoreMod=true;
this.filterCard2=get.filter(info.filterCard);
this.filterCard=function(card,player,event){
var evt=event||_status.event;
if(!evt.ignoreMod&&player){
var mod=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod!='unchanged') return mod;
if(evt._backup&&evt._backup.filterCard){
var cardx2=lib.skill[evt.skill].viewAs(ui.selected.cards.concat([card]),player);
if(get.is.object(cardx2)){
var cardx=get.autoViewAs(cardx2,ui.selected.cards.concat([card]));
if(!get.filter(evt._backup.filterCard)(cardx,player,evt)) return false;
}
}
}
return get.filter(evt.filterCard2).apply(this,arguments);
};
}
if(info.selectCard!=undefined) this.selectCard=info.selectCard;
if(info.position!=undefined) this.position=info.position;
if(info.forced!=undefined) this.forced=info.forced;
if(info.complexSelect!=undefined) this.complexSelect=info.complexSelect;
if(info.complexCard!=undefined) this.complexCard=info.complexCard;
if(info.complexTarget!=undefined) this.complexTarget=info.complexTarget;
if(info.ai1!=undefined) this.ai1=info.ai1;
if(info.ai2!=undefined) this.ai2=info.ai2;
}
else if(info.viewAs){
if(info.filterButton!=undefined) this.filterButton=get.filter(info.filterButton);
if(info.selectButton!=undefined) this.selectButton=info.selectButton;
if(info.filterTarget!=undefined) this.filterTarget=get.filter(info.filterTarget);
@ -30883,8 +30916,8 @@
if(enable){
if(info.noHidden&&!game.expandSkills(player.getSkills()).contains(skills2[i])) enable=false;
if(info.filter&&!info.filter(event,player)) enable=false;
if(info.viewAs&&event.filterCard&&!event.filterCard(info.viewAs,player,event)) enable=false;
if(info.viewAs&&info.viewAsFilter&&info.viewAsFilter(player)==false) enable=false;
if(info.viewAs&&typeof info.viewAs!='function'&&event.filterCard&&!event.filterCard(info.viewAs,player,event)) enable=false;
if(info.viewAs&&typeof info.viewAs!='function'&&info.viewAsFilter&&info.viewAsFilter(player)==false) enable=false;
if(info.usable&&get.skillCount(skills2[i])>=info.usable) enable=false;
if(info.chooseButton&&_status.event.noButton) enable=false;
if(info.round&&(info.round-(game.roundNumber-player.storage[skills2[i]+'_roundcount'])>0)) enable=false;
@ -30950,7 +30983,7 @@
if(skillinfo&&skillinfo.multitarget&&!skillinfo.multiline){
_status.multitarget=true;
}
if((skillinfo&&skillinfo.viewAs)||!_status.event.skill){
if((skillinfo&&skillinfo.viewAs&&typeof skillinfo.viewAs!='function')||!_status.event.skill){
var cardinfo=get.info(get.card());
if(cardinfo&&cardinfo.multitarget&&!cardinfo.multiline){
_status.multitarget=true;
@ -32100,7 +32133,7 @@
}
return;
}
if(info.viewAs){
if(info.viewAs&&typeof info.viewAs!='function'){
if(typeof info.viewAs=='string'){
info.viewAs={name:info.viewAs};
}
@ -45636,7 +45669,8 @@
}
if(event.skill){
event.result.skill=event.skill;
event.result.card=get.copy(get.info(event.skill).viewAs);
if(typeof get.info(event.skill).viewAs=='function') event.result.card=get.info(event.skill).viewAs(event.result.cards,event.player);
else event.result.card=get.copy(get.info(event.skill).viewAs);
if(event.result.cards.length==1&&event.result.card){
event.result.card.suit=get.suit(event.result.cards[0]);
event.result.card.number=get.number(event.result.cards[0]);
@ -47819,6 +47853,7 @@
if(skill&&!zhu.hasSkill(skill)) return null;
return zhu;
}
if(!game.zhu) return null;
if(skill&&!game.zhu.hasSkill(skill)) return null;
if(game.zhu.isZhu) return game.zhu;
}
@ -48626,6 +48661,7 @@
card:function(original){
if(_status.event.skill){
var card=get.info(_status.event.skill).viewAs;
if(typeof card=='function') card=card(ui.selected.cards,_status.event.player);
if(card){
return get.autoViewAs(card,ui.selected.cards,_status.event.player);
}

View File

@ -1,32 +1,35 @@
window.noname_update={
version:'1.9.99.3',
update:'1.9.99.2',
version:'1.9.100',
update:'1.9.99.3',
changeLog:[
'新界赵云,界张飞,王允',
'立华奏,音无结弦',
'bug修复',
],
files:[
//'card/extra.js',
'card/extra.js',
//'card/huanlekapai.js',
'card/sp.js',
//'card/sp.js',
'card/standard.js',
//'card/swd.js',
//'card/mtg.js',
'card/gujian.js',
//'card/guozhan.js',
//'card/gwent.js',
//'card/yunchou.js',
//'card/zhenfa.js',
//'card/zhulu.js',
'card/zhulu.js',
'character/diy.js',
'character/extra.js',
//'character/extra.js',
//'character/hearth.js',
//'character/gujian.js',
//'character/gwent.js',
//'character/hearth.js',
'character/mobile.js',
//'character/mobile.js',
//'character/mtg.js',
'character/old.js',
'character/refresh.js',
'character/shenhua.js',
//'character/shenhua.js',
'character/sp.js',
//'character/tw.js',
//'character/standard.js',
@ -43,10 +46,10 @@ window.noname_update={
//'mode/guozhan.js',
//'mode/chess.js',
//'mode/tafang.js',
//'mode/single.js',
'mode/single.js',
//'mode/stone.js',
'mode/brawl.js',
'mode/versus.js',
//'mode/brawl.js',
//'mode/versus.js',
//'mode/boss.js',
'game/game.js',
//'game/NoSleep.js',

BIN
image/character/key_ao.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

View File

@ -3,24 +3,16 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
return {
name:'single',
changbanCharacter:[
"key_kyousuke",
"xf_yiji","caozhang","sunquan",
"re_caocao","re_guojia","re_xuzhu","re_zhangliao","re_xiahoudun","re_simayi","re_lidian",
"re_zhangfei","re_zhaoyun","re_zhouyu","re_ganning","re_lvbu","re_gongsunzan","re_diaochan",
"re_xiahouyuan","re_huangzhong","re_weiyan","re_dianwei","re_pangde","re_yanwen","pangtong",
"re_zhurong","sunjian","jiaxu","dengai","jiangwei","sunce",
"wangji","kuailiangkuaiyue","wangping","yl_luzhi","chendao","lukang",
"xin_masu","lingtong","xusheng","wangyi","xunyou","madai","handang",
"guohuai","caochong","guanping","liufeng","zhuran","xin_liru",
"hanhaoshihuan","wuyi","guyong","caoxiu","liuchen","sunxiu","gongsunyuan",
"guohuanghou","xinxianying","qinmi","xushi","xuezong","ol_yujin",
"lvdai","wangcan","zhoufang","guosi","zhangji","fanchou",
"zhanggong","shamoke","mangyachang","huangfusong","xf_huangquan","xf_tangzi","xf_sufei","liuqi",
"lifeng","lingcao","sunru","re_jikang","zhuling",
"sp_caiwenji","caoang","sp_caoren","fuwan","guanyinping","jsp_guanyu","huangjinleishi",
"sp_jiangwei","litong","mayunlu","sp_pangde","wanglang","xiahouba",
"yuanshu","yuejin","sp_zhangfei","zhugejin","panfeng","chenlin",
"jiling","mateng","tw_dingfeng","kaisa",
"key_rei","key_yoshino","key_noda","key_nagisa",
"re_caocao","re_caozhang","re_diaochan","re_ganning","re_gongsunzan","re_guojia","re_huangyueying","re_lidian","re_lvbu",
"re_simayi","sunquan","re_xiahoudun","re_xushu","yuanshu","xf_yiji","re_zhangfei","re_zhangliao","re_xuzhu",
"re_zhaoyun","re_zhouyu","re_zhugeliang","ol_xiahouyuan","re_huangzhong","re_weiyan","dianwei","te_yanwen","re_pangde",
"re_zhurong","re_sunjian","jiaxu","dengai","re_jiangwei","re_sunben","wangji","wangping","guanqiujian","chendao","ol_yujin",
"re_caozhi","xin_masu","re_lingtong","xusheng","re_gaoshun","xunyou","guanzhang","madai","handang","caochong",
"re_guohuai","guanping","liufeng","re_zhuran","xin_liru","hanhaoshihuan","guyong","zhuhuan","caoxiu","liuchen","re_zhangyi",
"re_quancong","sunxiu","sundeng","guohuanghou","re_jikang","xuezong","qinmi","lvdai","re_zhangliang","lingcao",
"sunru","zhuling","sp_caoren","fanchou","fuwan","sp_ganning","guanyinping","guosi","heqi","sp_jiangwei","litong",
"re_panfeng","sp_pangde","xf_sufei","xf_tangzi","xiahouba","xujing","yuejin","sp_zhangfei","zhangji","zhangyì","dongcheng",
],
singlePile:[
['spade',5,'sha'],