虐鸟时间到

This commit is contained in:
Spmario233 2020-10-30 12:51:00 +08:00
parent 9b2fb77ddf
commit 13f8c13449
23 changed files with 507 additions and 185 deletions

BIN
audio/die/sp_zhangliao.mp3 Normal file

Binary file not shown.

BIN
audio/skill/diaoling1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/diaoling2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/mubing1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/mubing2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/ziqu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/ziqu2.mp3 Normal file

Binary file not shown.

View File

@ -59,6 +59,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_abyusa:['female','key',3,['abyusa_jueqing','abyusa_dunying']],
key_godan:['male','key',6,['godan_yuanyi','godan_feiqu','godan_xiaoyuan']],
key_yuu:['male','key',3,['yuu_lveduo']],
key_ryoichi:['male','key',4,['ryoichi_baoyi','ryoichi_tuipi']],
key_kotori:['female','key',3,['kotori_yumo','kotori_huazhan']],
key_kud:['female','key',3,['kud_qiaoshou','kud_buhui']],
key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']],
@ -132,6 +134,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
// ns_lisu:['male','qun',3,[]],
// ns_sunhao:['male','qun',3,[]],
ns_xinnanhua:['male','qun',3,['ns_xiandao','ns_xiuzheng','ns_chuanshu'],[]],
old_jiakui:['male','wei',4,['tongqu','xinwanlan']],
ol_guohuai:['male','wei',3,['rejingce']],
},
characterFilter:{
key_yuu:function(mode){
@ -157,8 +162,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_tieba:["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"],
diy_fakenews:["diy_wenyang","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_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa","key_godan","key_yuu"],
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa","key_godan","key_yuu","key_ryoichi","key_kotori"],
diy_yongjian:["ns_chendao","yj_caoang"],
diy_trashbin:['old_jiakui','ol_guohuai'],
},
},
characterIntro:{
@ -173,6 +179,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。',
},
characterTitle:{
key_kotori:'#bRewrite',
key_ryoichi:'#bSummer Pockets',
key_yuu:'#bCharlotte',
key_godan:'#rAngel Beats!',
key_abyusa:'#rAngel Beats!',
@ -327,6 +335,353 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_lucia:['key_shizuru'],
},
skill:{
kotori_yumo:{
trigger:{
global:'gameDrawAfter',
player:'enterGame',
},
forced:true,
charlotte:true,
content:function(){
var list=['wei','shu','wu','qun'];
for(var i of list){
if(!player.hasMark('kotori_yumo_'+i)){
player.addMark('kotori_yumo_'+i,1,false);
game.log(player,'获得了一个',lib.translate['kotori_yumo_'+i].replace(/魔物/g,'【魔物】'));
}
}
},
group:['kotori_yumo_damage','kotori_yumo_gain'],
},
kotori_yumo_damage:{
trigger:{global:'damageEnd'},
forced:true,
filter:function(event,player){
var name='kotori_yumo_'+event.player.group;
return lib.skill[name]&&!player.hasMark(name);
},
popup:false,
content:function(){
game.log(player,'对',trigger.player,'发动了','#g【驭魔】');
var group=trigger.player.group;
player.popup('驭魔',get.groupnature(group));
player.addMark('kotori_yumo_'+group,1,false);
game.log(player,'获得了一个',lib.translate['kotori_yumo_'+group].replace(/魔物/g,'【魔物】'));
},
},
kotori_yumo_gain:{
trigger:{player:'phaseBegin'},
direct:true,
filter:function(event,player){
var list=['wei','shu','wu','qun','key'];
for(var i in list){
if(player.hasMark('kotori_yumo_'+list[i])) return true;
}
return false;
},
content:function(){
'step 0'
var list=['wei','shu','wu','qun','key'];
var list2=[];
for(var i of list){
if(player.hasMark('kotori_yumo_'+i)) list2.push('kotori_skill_'+i);
}
list2.push('cancel2');
player.chooseControl(list2).set('prompt','###是否发动【驭魔】?###弃置对应的标记并获得下列技能中的一个,或点取消,不获得技能').set('choice',function(){
if(list2.contains('kotori_skill_shu')&&player.countCards('h',function(card){
return get.name(card,player)=='sha'&&player.getUseValue(card)>0;
})>1) return 'kotori_skill_shu';
if(list2.contains('kotori_skill_key')&&player.hp>1) return 'kotori_skill_key';
if(list2.contains('kotori_skill_qun')&&player.isDamaged()&&player.needsToDiscard()>1) return 'kotori_skill_qun';
return 'cancel2';
}()).set('ai',function(){
return _status.event.choice;
});
'step 1'
if(result.control!='cancel2'){
player.logSkill('kotori_yumo');
var name='kotori_yumo_'+result.control.slice(13);
player.removeMark(name,1,false);game.log(player,'移去了一个',lib.translate[name].replace(/魔物/g,'【魔物】'));
player.addTempSkill(result.control);
game.log(player,'获得了技能',lib.translate[name].replace(/魔物/g,'【'+get.translation(result.control)+'】'));
}
},
},
kotori_skill_wei:{
trigger:{player:'phaseBegin'},
direct:true,
filter:function(event,player){
return player.countCards('he')>0;
},
content:function(){
'step 0'
player.chooseCardTarget({
prompt:get.prompt2(event.name),
filterCard:lib.filter.cardDiscardable,
filterTarget:function(card,player,target){
return player!=target;
},
position:'he',
ai1:function(card){
return 6-get.value(card);
},
ai2:function(target){
return 1/(1+target.countCards('he'))*-get.attitude(_status.event.player,target);
},
});
'step 1'
if(result.bool){
player.logSkill(event.name,result.targets);
player.discard(result.cards);
result.targets[0].chooseToDiscard('弃置一张牌,或令'+get.translation(player)+'摸一张牌','he').ai=lib.skill.zhiheng.check;
}
else event.finish();
'step 2'
if(!result.bool) player.draw();
},
},
kotori_skill_shu:{
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha') return num+1;
},
},
trigger:{player:'phaseUseEnd'},
forced:true,
filter:function(event,player){
return player.getHistory('useCard',function(evt){
return evt.card&&evt.card.name=='sha'&&evt.getParent('phaseUse')==event;
}).length>1;
},
content:function(){player.draw()},
},
kotori_skill_wu:{
trigger:{player:'phaseEnd'},
forced:true,
filter:function(event,player){
return player.countCards('h')!=player.hp;
},
content:function(){player.draw()},
},
kotori_skill_qun:{
trigger:{player:'phaseDiscardBegin'},
forced:true,
filter:function(event,player){
return (player.isDamaged()||player.countCards('h')-player.hp>1);
},
content:function(){
var num=0;
if(player.isDamaged()) num++;
if(player.countCards('h')-player.hp>1) num++;
player.addMark('kotori_qunxin_temp',num,false);
player.addTempSkill('kotori_qunxin_temp','phaseDiscardEnd');
},
},
kotori_skill_key:{
enable:'phaseUse',
usable:1,
content:function(){
"step 0"
player.draw();
"step 1"
player.changeHujia(1);
"step 2"
var evt=event.getParent('phase');
if(evt&&evt.after){
var next=player.loseHp();
event.next.remove(next);
evt.after.push(next);
}
},
ai:{
order:10,
result:{
player:function(player){
return player.hp-1;
},
},
},
},
kotori_qunxin_temp:{
onremove:true,
mod:{
maxHandcard:function(player,num){
return num+player.countMark('kotori_qunxin_temp');
},
},
},
kotori_yumo_wei:{
marktext:'<span class="thundertext">魔</span>',
intro:{name:'<span class="thundertext">魔物</span>',content:'mark'},
},
kotori_yumo_shu:{
marktext:'<span class="firetext">魔</span>',
intro:{name:'<span class="firetext">魔物</span>',content:'mark'},
},
kotori_yumo_wu:{
marktext:'<span class="greentext">魔</span>',
intro:{name:'<span class="greentext">魔物</span>',content:'mark'},
},
kotori_yumo_qun:{
marktext:'<span class="yellowtext">魔</span>',
intro:{name:'<span class="yellowtext">魔物</span>',content:'mark'},
},
kotori_yumo_key:{
marktext:'<span class="legendtext">魔</span>',
intro:{name:'<span class="legendtext">魔物</span>',content:'mark'},
},
kotori_huazhan:{
charlotte:true,
enable:'chooseToUse',
filter:function(event,player){
var bool=false;
var list=['wei','shu','wu','qun','key'];
for(var i of list){
if(player.hasMark('kotori_yumo_'+i)&&!player.getStorage('kotori_huazhan2').contains('kotori_yumo_'+i)){
bool=true;break;
}
}
return bool&&event.filterCard({name:'kaihua',isCard:true},player,event);
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('###花绽###'+lib.translate.kotori_huazhan_info);
},
chooseControl:function(event,player){
var list=['wei','shu','wu','qun','key'];
var list2=[];
for(var i of list){
if(player.hasMark('kotori_yumo_'+i)&&!player.getStorage('kotori_huazhan2').contains('kotori_yumo_'+i)) list2.push('kotori_yumo_'+i);
}
list2.push('cancel2');
return list2;
},
check:function(){
var player=_status.event.player;
var list=['wei','shu','wu','qun','key'];
var list2=[];
for(var i of list){
if(player.hasMark('kotori_yumo_'+i)&&!player.getStorage('kotori_huazhan2').contains('kotori_yumo_'+i)) list2.push('kotori_yumo_'+i);
}
if(list2.contains('kotori_yumo_wei')) return 'kotori_yumo_wei';
if(list2.contains('kotori_yumo_wu')) return 'kotori_yumo_wu';
if(list2.contains('kotori_yumo_qun')) return 'kotori_yumo_qun';
if(list2.contains('kotori_yumo_key')) return 'kotori_yumo_key';
if(list2.contains('kotori_yumo_shu')&&game.hasPlayer(function(current){
return current.group=='shu';
})) return 'kotori_yumo_shu';
return 'cancel2';
},
backup:function(result,player){
return {
markname:result.control,
viewAs:{name:'kaihua',isCard:true},
filterCard:function(){return false},
selectCard:-1,
precontent:function(){
delete event.result.skill;
var name=lib.skill.kotori_huazhan_backup.markname;
if(!player.storage.kotori_huazhan2) player.storage.kotori_huazhan2=[];
player.storage.kotori_huazhan2.push(name);
player.addTempSkill('kotori_huazhan2');
player.popup('花绽',get.groupnature(name.slice(12)));
game.log(player,'发动了技能',lib.translate[name].replace(/魔物/g,'【花绽】'));
player.removeMark(name,1,false);
;game.log(player,'移去了一个',lib.translate[name].replace(/魔物/g,'【魔物】'));
},
}
}
},
ai:{
order:function(item,player){
return get.order({name:'kaihua'})-0.05;
},
result:{
player:function(player){
if(player.countCards('he',function(card){
if(get.type(card)=='equip') return 8-get.value(card);
return 6-get.value(card);
})<2) return -0.5;
return player.getUseValue({name:'kaihua'});
},
},
},
},
kotori_huazhan2:{onremove:true},
ryoichi_baoyi:{
trigger:{
player:'loseAfter',
global:['gainAfter','equipAfter','addJudgeAfter'],
},
filterTarget:function(card,player,target){
return target!=player&&(target.sex=='female'||target.sex=='male'&&target.countCards('hej')>0);
},
filter:function(event,player){
var evt=event.getl(player);
return evt&&evt.es&&evt.es.length>0&&game.hasPlayer(function(target){
return lib.skill.ryoichi_baoyi.filterTarget;
});
},
forced:true,
content:function(){
'step 0'
event.count=trigger.getl(player).es.length;
player.draw(event.count);
'step 1'
event.count--;
player.chooseTarget(true,lib.skill.ryoichi_baoyi.filterTarget,'请选择【爆衣】的目标').set('ai',function(target){
return -get.attitude(_status.event.player,target);
});
'step 2'
if(result.bool){
var target=result.targets[0];
player.line(target,'green');
if(target.sex=='female') target.loseHp();
else player.discardPlayerCard(target,2,'hej',true);
}
else event.finish();
'step 3'
if(event.count&&game.hasPlayer(function(target){
return lib.skill.ryoichi_baoyi.filterTarget;
})) event.goto(1);
},
},
ryoichi_tuipi:{
mod:{
targetEnabled:function(card){
if(card.name=='shunshou'||card.name=='guohe') return false;
},
},
trigger:{player:'phaseDiscardBegin'},
forced:true,
content:function(){
trigger.setContent(lib.skill.ryoichi_tuipi.phaseDiscardContent);
},
phaseDiscardContent:function(){
"step 0"
var num=0;
var hs=player.getCards('he');
num+=hs.length;
for(var i=0;i<hs.length;i++){
if(game.checkMod(hs[i],player,false,'ignoredHandcard',player)==true){
num--;
}
}
num=Math.max(0,num-player.getHandcardLimit());
event.num=num;
if(event.num<=0) event.finish();
else{
if(lib.config.show_phase_prompt){
player.popup('弃牌阶段');
}
}
event.trigger('phaseDiscard');
"step 1"
player.chooseToDiscard(num,true,'he');
"step 2"
event.cards=result.cards;
},
},
yuu_lveduo:{
mod:{
cardEnabled:function(card,player){
@ -4305,8 +4660,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(!player.isDisabled(list[i])) list.splice(i--,1);
else player.enableEquip(list[i]);
}
player.storage.kengo_guidui2=list;
player.addTempSkill('kengo_guidui2');
if(!player.storage.kengo_guidui2) player.storage.kengo_guidui2=[];
player.storage.kengo_guidui2.addArray(list);
//player.addTempSkill('kengo_guidui2');
},
},
kengo_guidui2:{onremove:true},
@ -10496,6 +10852,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_abyusa:'游佐',
key_godan:'松下护騨',
key_yuu:'乙坂有宇',
key_ryoichi:'三谷良一',
key_kotori:'神户小鸟',
lucia_duqu:'毒躯',
lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。',
lucia_zhenren:'振刃',
@ -10551,7 +10909,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_weishang_shan:'伪伤',
kengo_weishang_info:'出牌阶段限一次,你可以废除一个装备栏并摸两张牌。若你的武器栏已废除,则你使用【杀】的次数上限+1且当你使用【杀】指定目标后目标角色弃置一张牌若你的防具栏已废除则你可以将一张牌当做【闪】使用或打出若你的攻击/防御坐骑栏已废除,则你至其他角色的距离-1/其他角色至你的距离-1。',
kengo_guidui:'归队',
kengo_guidui_info:'锁定技,准备阶段,若你有已废除的装备栏,则你恢复这些装备栏,且本回合内发动【伪伤】时不能废除这些装备栏。',
kengo_guidui_info:'锁定技,准备阶段,若你有已废除的装备栏,则你恢复这些装备栏,且本局游戏内发动【伪伤】时不能废除这些装备栏。',
yoshino_jueyi:'决义',
yoshino_jueyi_info:'出牌阶段开始时你可以选择一名其他角色。你摸一张牌并与其猜拳平局则重来。若你赢你对其造成1点伤害。若你没赢你本阶段内使用牌时不能指定其为目标。',
yui_jiang:'激昂',
@ -10747,6 +11105,31 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yuu_lveduo:'掠夺',
yuu_lveduo_info:'每轮限一次,其他角色的回合开始时,若你本局游戏内未对其发动过〖掠夺〗且你的武将牌正面朝上,你可以将武将牌翻面并获得该角色本回合内的控制权。此回合结束时,你将武将牌翻回正面。锁定技,若你的武将牌背面朝上,则你不能使用或打出牌。',
yuu_lveduo_full_info:'每轮限一次其他角色的回合开始时若你本局游戏内未对其发动过〖掠夺〗且你的武将牌正面朝上你可以将武将牌翻面并获得该角色本回合内的控制权。此回合结束时你将武将牌翻回正面获得该角色武将牌上所有的带有「Charlotte」标签的技能且该角色失去这些技能。锁定技若你的武将牌背面朝上则你不能使用或打出牌。',
ryoichi_baoyi:'爆衣',
ryoichi_baoyi_info:'锁定技当你失去装备区内的一张牌后你摸一张牌然后选择一项①弃置一名其他男性角色区域内的两张牌。②令一名其他女性角色失去1点体力。',
ryoichi_tuipi:'褪皮',
ryoichi_tuipi_info:'锁定技,你不是【顺手牵羊】和【过河拆桥】的合法目标。你装备区的牌于弃牌阶段内计入手牌上限。',
kotori_yumo:'驭魔',
kotori_yumo_damage:'驭魔',
kotori_yumo_gain:'驭魔',
kotori_yumo_info:'锁定技,游戏开始时,你获得蓝色、红色、绿色、黄色魔物各一个。当有角色受到伤害后,若你没有对应的标记,你根据其势力获得一个对应魔物:魏:蓝、蜀:红、吴:绿、群:黄、键:紫。回合开始时,你可以弃置一个对应的魔物并获得以下技能之一直到回合结束:蓝:魏业、红:蜀义、绿:吴耀、黄:群心、紫:键魂。',
kotori_skill_wei:'魏业',
kotori_skill_wei_info:'回合开始时,你可以弃置一张牌并指定一名其他角色,该角色须弃置一张牌,否则你摸一张牌。',
kotori_skill_shu:'蜀义',
kotori_skill_shu_info:'你使用【杀】上限+1出牌阶段结束时若你于此阶段使用【杀】次数不少于2摸一张牌。',
kotori_skill_wu:'吴耀',
kotori_skill_wu_info:'回合结束时,若你的手牌数不等于你的体力值,则你摸一张牌。',
kotori_skill_qun:'群心',
kotori_skill_qun_info:'锁定技弃牌阶段开始时若你的手牌数比体力值多2或更多你本回合手牌上限+1若你已损失体力值大于1你手牌上限+1',
kotori_skill_key:'键魂',
kotori_skill_key_info:'出牌阶段限一次你可以摸一张牌并获得1点护甲。若如此做你于当前回合结束时失去1点体力。',
kotori_yumo_wei:'<span class="thundertext">魔物</span>',
kotori_yumo_shu:'<span class="firetext">魔物</span>',
kotori_yumo_wu:'<span class="greentext">魔物</span>',
kotori_yumo_qun:'<span class="yellowtext">魔物</span>',
kotori_yumo_key:'<span class="legendtext">魔物</span>',
kotori_huazhan:'花绽',
kotori_huazhan_info:'每回合每种魔物限一次,你可将一个蓝色/红色/绿色/黄色/紫色魔物当做【树上开花】使用。',
key_kud:'库特莉亚芙卡',
kud_qiaoshou:'巧手',
@ -11051,6 +11434,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_yongjian:'用间篇',
diy_yijiang:'设计比赛2020',
diy_fakenews:'假新闻',
diy_trashbin:'垃圾桶',
old_jiakui:'贾逵重制',
ol_guohuai:'三血郭淮',
},
};
});

View File

@ -13,14 +13,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian"],
mobile_yijiang1:["re_jikang","old_bulianshi","xin_liaohua","xin_caozhang","re_xusheng","xin_chengpu","xin_jianyong","xin_gongsunzan"],
mobile_sp:["old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","re_heqi","liuzan"],
mobile_trashbin:['old_jiakui'],
},
},
character:{
xin_gongsunzan:['male','qun',4,['xinyicong','qiaomeng']],
dingyuan:['male','qun',4,['beizhu']],
xin_jianyong:['male','shu',3,['xinqiaoshui','xinjyzongshi']],
old_jiakui:['male','wei',4,['tongqu','xinwanlan']],
xin_caozhang:['male','wei',4,['rejiangchi']],
xin_liaohua:['male','shu',4,['redangxian','refuli']],
furong:['male','shu',4,['xuewei','liechi']],
@ -348,11 +346,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
});
if(cards.length){
var card=cards.randomRemove(1)[0];
target.useCard(player,false,{
name:'sha',
isCard:true,
cards:[card],
},[card]).card.beizhu=true;
target.useCard(player,false,card).card.beizhu=true;
event.redo();
}
},
@ -6113,8 +6107,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mobile_shenhua:'手杀异构·神话再临',
mobile_yijiang1:'手杀异构·一将成名',
mobile_sp:'手杀异构·SP',
mobile_trashbin:'通厕所的',
old_jiakui:'贾逵重制',
xin_gongsunzan:'手杀公孙瓒',
}
};

View File

@ -752,7 +752,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ol_zhuran:'OL朱然',
ol_guansuo:'OL关索',
ol_manchong:'OL满宠',
ol_guohuai:'OL郭淮',
old_fuhuanghou:'旧伏皇后',
old_caochong:'旧曹冲',
old_guanqiujian:'旧毌丘俭',

View File

@ -2491,14 +2491,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
targetInRange:function(card,player,target){
if(target==player.storage.rexianzhen) return true;
},
cardUsable:function(card,player,num){
if(card.name=='sha'&&typeof num=='number') return num+100;
},
playerEnabled:function(card,player,target){
if(card.name=='sha'&&player.storage.rexianzhen!=target&&!ui.selected.targets.contains(player.storage.rexianzhen)){
var num=player.getCardUsable(card)-100;
if(num<=0) return false;
}
cardUsableTarget:function(card,player,target){
if(target==player.storage.rexianzhen) return true;
}
},
ai:{
@ -3307,8 +3301,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
mark:function(dialog,storage,player){
if(storage&&storage.current) dialog.addSmall([[storage.current],'character']);
if(storage&&storage.current2) dialog.addText('【'+get.translation(storage.current2)+
'】'+lib.translate[storage.current2+'_info']);
if(storage&&storage.current2) dialog.add('<div><div class="skill">【'+get.translation(lib.translate[storage.current2+'_ab']||get.translation(storage.current2).slice(0,2))+'】</div><div>'+get.skillInfoTranslation(storage.current2,player)+'</div></div>');
if(storage&&storage.character.length){
if(player.isUnderControl(true)){
dialog.addSmall([storage.character,'character']);
@ -6480,9 +6473,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
cardEnabled:function(){
return false;
},
cardUsable:function(){
return false;
},
cardRespondable:function(){
return false;
},
@ -6543,6 +6533,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player:["changeHp"],
},
audio:2,
audioname:{gongsunzan:'yicong'},
forced:true,
filter:function(event,player){
return get.sgn(player.hp-2.5)!=get.sgn(player.hp-2.5-event.num);

View File

@ -965,18 +965,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return true;
}
},
cardUsable:function (card,player,num){
if(typeof num=='number'&&game.hasPlayer(function(current){
return current.hasSkill('drlt_xiongluan2');
})) return num+100;
},
playerEnabled:function (card,player,target){
if(game.hasPlayer(function(current){
return current.hasSkill('drlt_xiongluan2');
})&&!target.hasSkill('drlt_xiongluan2')){
var num=player.getCardUsable(card)-100;
if(num<=0) return false;
}
cardUsableTarget:function(card,player,target){
if(target.hasSkill('drlt_xiongluan2')) return true;
},
},
},

View File

@ -848,7 +848,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
card.remove();
card=game.createCard('qibaodao',card.suit,card.number);
}
targets[0].chooseUseTarget(card,true,'nopopup','noanimate');
targets[0].chooseUseTarget(card,true,'nopopup','nothrow');
}
else{
player.chat('没有装备牌了吗');
@ -2440,14 +2440,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
targetInRange:function (card,player,target){
if(target==player.storage.zhengbi_eff1) return true;
},
cardUsable:function (card,player,num){
if(typeof num=='number'&&player.storage.zhengbi_eff1&&player.storage.zhengbi_eff1.isAlive()) return num+100;
},
playerEnabled:function (card,player,target){
if(player.storage.zhengbi_eff1.isAlive()&&player.storage.zhengbi_eff1&&target!=player.storage.zhengbi_eff1){
var num=player.getCardUsable(card)-100;
if(num<=0) return false;
}
cardUsableTarget:function (card,player,target){
if(player.storage.zhengbi_eff1==target) return true;
},
},
onremove:true,
@ -3518,7 +3512,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
equip1=game.createCard2('qibaodao',equip1.suit,equip1.number);
}
target.$draw(equip1);
target.chooseUseTarget(true,equip1,'noanimate','nopopup');
target.chooseUseTarget(true,equip1,'nothrow','nopopup');
game.delay();
'step 2'
game.updateRoundNumber();
@ -10265,11 +10259,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return false;
}
},
cardUsable:function(card,player){
if(player.storage.zuixiang2&&player.storage.zuixiang2.contains(get.type(card,'trick'))){
return false;
}
},
cardRespondable:function(card,player){
if(player.storage.zuixiang2&&player.storage.zuixiang2.contains(get.type(card,'trick'))){
return false;
@ -12151,20 +12140,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:'players'
},
mod:{
cardUsable:function(card,player,num){
if(typeof num=='number') return num+100;
},
playerEnabled:function(card,player,target){
var bool=false;
if(player.storage.huxiao3&&ui.selected.targets.length){
for(var i=0;i<player.storage.huxiao3.length;i++){
if(ui.selected.targets.contains(player.storage.huxiao3[i])){bool=true;break}
}
}
if(!bool&&(!player.storage.huxiao3||!player.storage.huxiao3.contains(target))){
var num=player.getCardUsable(card)-100;
if(num<=0) return false;
}
cardUsableTarget:function(card,player,target){
if(player.storage.huxiao3&&player.storage.huxiao3.contains(target)) return true;
}
}
},
@ -13118,30 +13095,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
chixin:{
group:['chixin1','chixin2'],
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha'){
return num+20;
}
cardUsableTarget:function(card,player,target){
if(card.name=='sha'&&!target.hasSkill('chixin3')&&player.inRange(target)) return true;
},
},
trigger:{player:'shaBefore'},
forced:true,
popup:false,
check:function(event,player){
return player.countCards('h','sha')>0;
},
filter:function(event,player){
return _status.currentPhase==player;
},
trigger:{player:'useCardToPlayered'},
silent:true,
firstDo:true,
content:function(){
var target=trigger.target;
if(target.hasSkill('chixin3')){
target.storage.chixin++;
}
else{
target.storage.chixin=1;
target.addTempSkill('chixin3','phaseUseEnd');
}
trigger.target.addTempSkill('chixin3');
}
},
chixin1:{
@ -13171,23 +13133,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
}
},
chixin3:{
mod:{
targetEnabled:function(card,player,target){
if(card.name!='sha') return;
if(player==_status.currentPhase&&player.hasSkill('chixin')){
var num=player.getCardUsable(card,true)-20;
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i].hasSkill('chixin3')){
num+=1-players[i].storage.chixin;
}
}
return num>1;
}
}
}
},
chixin3:{},
suiren:{
trigger:{player:'phaseZhunbeiBegin'},
skillAnimation:true,
@ -13593,15 +13539,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{
player:"phaseZhunbeiBegin",
},
forced:true,
direct:true,
filter:function (event,player){
filter:function(event,player){
if(player.phaseNumber>1) return false;
return !game.hasPlayer(function(current){
return current.hasSkill('smh_huoji')||current.hasSkill('smh_lianhuan');
});
},
content:function (){
content:function(){
"step 0"
player.chooseTarget('请将「龙印」交给一名角色',true,function(card,player,target){
return target!=player;
@ -13626,7 +13571,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var player=_status.event.player;
return 10+get.attitude(player,target);
});
}else event.finish();
}
else event.finish();
"step 2"
if(result.bool&&result.targets&&result.targets.length){
var target=result.targets[0];

View File

@ -849,6 +849,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
ziqu:{
audio:2,
audioname:['sp_key_yuri'],
trigger:{source:'damageBegin2'},
filter:function(event,player){
return event.player!=player&&!player.getStorage('ziqu').contains(event.player)&&
@ -4658,24 +4660,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"xinfu_tanbei":{
locked:false,
mod:{
targetInRange:function (card,player,target){
targetInRange:function(card,player,target){
if(target.hasSkill('tanbei_effect1')){
return true;
}
},
cardUsable:function (card,player,num){
if(typeof num=='number'&&game.hasPlayer(function(current){
return current.hasSkill('tanbei_effect1');
})) return num+100;
cardUsableTarget:function(card,player,target){
if(target.hasSkill('tanbei_effect1')) return true;
},
playerEnabled:function (card,player,target){
playerEnabled:function(card,player,target){
if(target.hasSkill('tanbei_effect2')) return false;
if(game.hasPlayer(function(current){
return current.hasSkill('tanbei_effect1');
})&&!target.hasSkill('tanbei_effect1')){
var num=player.getCardUsable(card)-100;
if(num<=0) return false;
}
},
},
audio:2,

View File

@ -37,7 +37,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lvbu:['male','qun',4,['wushuang']],
diaochan:['female','qun',3,['lijian','biyue']],
huaxiong:['male','qun',6,['yaowu']],
gongsunzan:['male','qun',4,['yicong']],
gongsunzan:['male','qun',4,['reyicong']],
xf_yiji:["male","shu",3,["xinfu_jijie","xinfu_jiyuan"],[]],
re_yuanshu:['male','qun',4,['rewangzun','retongji']],

View File

@ -1444,10 +1444,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return true;
}
},
cardUsable:function (card,player,num){
if(typeof num=='number'&&player.countCards('j')&&card.name!='jiu'){
return Infinity;
}
cardUsableTarget:function(card,player,target){
if(player.countCards('j')&&player.inRange(target)) return true;
},
aiValue:function(player,card,num){
if(card.name=='zhangba') return 15;

View File

@ -62,7 +62,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
hanhaoshihuan:['male','wei',4,['shenduan','yonglve']],
caorui:['male','wei',3,['huituo','mingjian','xingshuai'],['zhu']],
caoxiu:['male','wei',4,['reqianju','reqingxi']],
caoxiu:['male','wei',4,['qianju','reqingxi']],
zhongyao:['male','wei',3,['huomo','zuoding']],
liuchen:['male','shu',4,['zhanjue','qinwang'],['zhu']],
zhangyi:['male','shu',4,['wurong','shizhi']],
@ -1870,7 +1870,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.type(card)=='equip'&&target.hasUseTarget(card);
});
if(target.isMinEquip()&&equip){
target.chooseUseTarget(equip,'noanimate','nopopup',true);
target.chooseUseTarget(equip,'nothrow','nopopup',true);
event.e=true;
}
'step 3'
@ -1885,9 +1885,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 5'
if(!event.e&&player.isMinEquip()){
var equip=get.cardPile(function(card){
return get.type(card)=='equip'&&target.hasUseTarget(card);
return get.type(card)=='equip'&&player.hasUseTarget(card);
});
if(equip) player.chooseUseTarget(equip,'noanimate','nopopup',true);
if(equip) player.chooseUseTarget(equip,'nothrow','nopopup',true);
}
'step 6'
game.updateRoundNumber();
@ -2398,7 +2398,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.type(card)=='equip'&&!target.isDisabled(get.subtype(card));
});
if(event.card){
target.chooseUseTarget(event.card,'noanimate','nopopup',true);
target.chooseUseTarget(event.card,'nothrow','nopopup',true);
event.goto(3);
}
else{
@ -2477,7 +2477,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.type(card)=='equip';
});
if(card){
trigger.source.chooseUseTarget(card,'noanimate','nopopup',true);
trigger.source.chooseUseTarget(card,'nothrow','nopopup',true);
}
},
ai:{
@ -2527,7 +2527,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.type(card)=='equip';
});
if(card){
target.chooseUseTarget(card,true,'noanimate','nopopup',true);
target.chooseUseTarget(card,true,'nothrow','nopopup',true);
}
}
if(event.triggername=='dyingAfter'&&player.storage.juexiang_lie>0) event.goto(0);
@ -4992,7 +4992,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.directfalse=true;
}
else{
trigger.target.chooseToDiscard(num,'弃置'+get.cnNumber(num)+'张手牌,或令的伤害+1').set('ai',function(card){
trigger.target.chooseToDiscard(num,'弃置'+get.cnNumber(num)+'张手牌,或令'+get.translation(trigger.card)+'的伤害+1').set('ai',function(card){
var player=_status.event.player;
if(player.hp==1){
if(get.type(card)=='basic'){
@ -5016,18 +5016,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(e1){
player.discard(e1,'notBySelf');
}
event.finish();
}
else{
var storage=trigger.target.storage;
var id=trigger.target.playerid;
var map=trigger.customArgs;
if(!map[id]) map[id]={};
if(!map[id].extraDamage) map[id].extraDamage=0;
map[id].extraDamage++;
if(!storage.reqingxi2) storage.reqingxi2=[];
storage.reqingxi2.push(trigger.card);
trigger.target.addTempSkill('reqingxi2');
trigger.target.judge(function(card){
if(get.color(card)=='red') return -1;
return 0;
});
}
'step 2'
if(result.bool===false) trigger.directHit.add(trigger.target);
}
},
reqingxi2:{
@ -5259,15 +5262,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
targetInRange:function(card,player,target){
if(target==player.storage.xinxianzhen) return true;
},
cardUsable:function(card,player,num){
if(typeof num=='number') return num+100;
cardUsableTarget:function(card,player,target){
if(target==player.storage.xinxianzhen) return true;
},
playerEnabled:function(card,player,target){
if(card.name=='sha'&&player.storage.xinxianzhen!=target&&!ui.selected.targets.contains(player.storage.xinxianzhen)){
var num=player.getCardUsable(card)-100;
if(num<=0) return false;
}
}
},
ai:{
unequip:true,
@ -5381,15 +5378,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
targetInRange:function(card,player,target){
if(target==player.storage.xianzhen) return true;
},
cardUsable:function(card,player,num){
if(card.name=='sha'&&typeof num=='number') return num+100;
cardUsableTarget:function(card,player,target){
if(target==player.storage.xianzhen) return true;
},
playerEnabled:function(card,player,target){
if(card.name=='sha'&&player.storage.xianzhen!=target&&!ui.selected.targets.contains(player.storage.xianzhen)){
var num=player.getCardUsable(card)-100;
if(num<=0) return false;
}
}
},
ai:{
unequip:true,
@ -10116,7 +10107,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var card=result[0];
if(get.type(card)=='equip'){
if(!event.target.isDisabled(get.subtype(card))){
event.target.chooseUseTarget(card,true,'noanimate','nopopup');
event.target.chooseUseTarget(card,true,'nopopup');
game.delay();
}
event.bool=true;
@ -10880,12 +10871,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 0"
player.draw();
"step 1"
player.showHandcards();
if(!player.countCards('h')) event.finish();
else player.showHandcards();
"step 2"
if(!trigger.source) return;
var cards=player.getCards('h');
var color=get.color(cards[0],player);
for(var i=1;i<cards.length;i++){
if(get.color(cards[i])!=get.color(cards[0])) return;
if(get.color(cards[i],player)!=color) return;
}
trigger.source.chooseToDiscard(true);
},
@ -12316,7 +12309,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
reqianju:'千驹',
reqianju_info:'锁定技,若你已受伤,你计算与其他角色的距离时-XX为你已损失的体力值且至少为1。',
reqingxi:'倾袭',
reqingxi_info:'当你使用【杀】或【决斗】指定目标后你可以令其选择一项1、弃置X张手牌X为你攻击范围内的角色数且当你装备区内有武器牌/没有武器牌时至多为4/2若如此做其弃置你的此武器牌2、令此牌的伤害值+1且其不能使用或打出与此牌颜色不同的牌或转化的牌直到此牌结算完成。',
reqingxi_info:'当你使用【杀】或【决斗】指定目标后你可以令其选择一项1、弃置X张手牌X为你攻击范围内的角色数且当你装备区内有武器牌/没有武器牌时至多为4/2若如此做其弃置你的此武器牌2、令此牌的伤害值+1且其进行判定,若结果为红色,则其不能响应此牌。',
jieyue:'节钺',
jieyue1:'节钺',
jieyue2:'节钺',

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.105.6.1',
'v1.9.105.7',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -631,6 +631,7 @@ window.noname_asset_list=[
'audio/die/re_manchong.mp3',
'audio/die/re_yufan.mp3',
'audio/die/xin_jianyong.mp3',
'audio/die/sp_zhangliao.mp3',
'audio/skill/anguo1.mp3',
'audio/skill/anguo2.mp3',
@ -2782,6 +2783,12 @@ window.noname_asset_list=[
'audio/skill/yuce_re_manchong2.mp3',
'audio/skill/zhiyan_re_yufan1.mp3',
'audio/skill/zhiyan_re_yufan2.mp3',
'audio/skill/diaoling1.mp3',
'audio/skill/diaoling2.mp3',
'audio/skill/mubing1.mp3',
'audio/skill/mubing2.mp3',
'audio/skill/ziqu1.mp3',
'audio/skill/ziqu2.mp3',
'font/huangcao.ttf',
'font/shousha.ttf',
@ -3420,6 +3427,8 @@ window.noname_asset_list=[
'image/character/sp_zhangliao.jpg',
'image/character/xin_jianyong.jpg',
'image/character/ol_yuanshu.jpg',
'image/character/key_kotori.jpg',
'image/character/key_ryoichi.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -9965,6 +9965,7 @@
if(cards) next.cards=cards.slice(0);
if(event.nopopup) next.nopopup=true;
if(event.animate===false) next.animate=false;
if(event.throw===false) next.throw=false;
if(event.addCount===false) next.addCount=false;
if(event.noTargetDelay) next.targetDelay=false;
if(event.nodelayx) next.delayx=false;
@ -13712,7 +13713,7 @@
player.line(targets,config);
}
}
player.$throw(cards);
if(event.throw!==false) player.$throw(cards);
if(lib.config.sync_speed&&cards[0]&&cards[0].clone){
var waitingForTransition=get.time();
event.waitingForTransition=waitingForTransition;
@ -17844,6 +17845,9 @@
else if(arguments[i]=='noanimate'){
next.animate=false;
}
else if(arguments[i]=='nothrow'){
next.throw=false;
}
else if(arguments[i]=='nodistance'){
next.nodistance=true;
}
@ -22890,8 +22894,9 @@
card=[card.suit,card.number,card.name,card.nature];
}
var cardnum=card[1]||'';
if(parseInt(cardnum)==cardnum) cardnum=parseInt(cardnum);
if([1,11,12,13].contains(cardnum)){
cardnum={'1':'A','11':'J','12':'Q','13':'K'}[cardnum]
cardnum={'1':'A','11':'J','12':'Q','13':'K'}[cardnum];
}
if(!lib.card[card[2]]){
lib.card[card[2]]={};
@ -24442,7 +24447,7 @@
if(mod!='unchanged') return mod;
return true;
},
cardUsable:function(card,player,event){
cardUsable2:function(card,player,event){
card=get.autoViewAs(card,null,player);
var info=get.info(card);
if(info.updateUsable=='phaseUse'){
@ -24457,6 +24462,28 @@
if(typeof num!='number') return true;
else return(player.countUsed(card)<num);
},
cardUsable:function(card,player,event){
card=get.autoViewAs(card,null,player);
var info=get.info(card);
if(info.updateUsable=='phaseUse'){
event=event||_status.event;
if(player!=_status.event.player) return true;
if(event.getParent().name!='phaseUse') return true;
if(event.getParent().player!=player) return true;
}
var num=info.usable;
if(typeof num=='function') num=num(card,player);
num=game.checkMod(card,player,num,'cardUsable',player);
if(typeof num!='number') return true;
if(player.countUsed(card)<num) return true;
if(game.hasPlayer(function(current){
return game.checkMod(card,player,current,false,'cardUsableTarget',player);
})){
_status.event.addCount_extra=true;
return true;
}
return false;
},
cardDiscardable:function(card,player,event){
event=event||_status.event;
var mod=game.checkMod(card,player,event.getParent().name,'unchanged','cardDiscardable',player);
@ -24503,6 +24530,7 @@
},
targetEnabled:function(card,player,target){
if(!card) return false;
if(_status.event.addCount_extra&&!lib.filter.cardUsable2(card,player)&&!game.checkMod(card,player,target,false,'cardUsableTarget',player)) return false;
var info=get.info(card);
var filter=info.filterTarget;
var mod=game.checkMod(card,player,target,'unchanged','playerEnabled',player);

View File

@ -1,8 +1,8 @@
window.noname_update={
version:'1.9.105.6.1',
update:'1.9.105.6',
version:'1.9.105.7',
update:'1.9.105.6.1',
changeLog:[
'新标袁术',
'神户小鸟、三谷良一',
'bug修复',
],
@ -19,7 +19,7 @@ window.noname_update={
//'card/yunchou.js',
//'card/zhenfa.js',
//'card/zhulu.js',
//'character/diy.js',
'character/diy.js',
//'character/extra.js',
//'character/hearth.js',
//'character/gujian.js',
@ -29,14 +29,14 @@ window.noname_update={
//'character/mtg.js',
'character/old.js',
'character/refresh.js',
//'character/shenhua.js',
'character/shenhua.js',
'character/sp.js',
//'character/sp2.js',
'character/sp2.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',
@ -44,13 +44,13 @@ window.noname_update={
//'layout/nova/layout.css',
//'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/versus.js',
//'mode/boss.js',
'game/game.js',
//'game/keyWords.js',

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

View File

@ -1566,13 +1566,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
targetInRange:function (card,player,target){
if(target==player.storage.gzzhengbi_eff1) return true;
},
cardUsable:function (card,player,num){
if(typeof num=='number'&&player.storage.gzzhengbi_eff1.isAlive()&&player.storage.gzzhengbi_eff1.isUnseen()) return num+100;
},
playerEnabled:function (card,player,target){
if(player.storage.gzzhengbi_eff1.isAlive()&&player.storage.gzzhengbi_eff1.isUnseen()&&target!=player.storage.gzzhengbi_eff1){
var num=player.getCardUsable(card)-100;
if(num<=0) return false;
cardUsableTarget:function (card,player,target){
if(target==player.storage.gzzhengbi_eff1&&target.isUnseen()){
return true;
}
},
},