Misaka Kaori & Misaka Shiori

This commit is contained in:
Spmario233 2020-09-06 14:22:50 +08:00 committed by GitHub
parent 317e18431a
commit 966542c1ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
38 changed files with 55220 additions and 54583 deletions

Binary file not shown.

Binary file not shown.

BIN
audio/die/old_guanzhang.mp3 Normal file

Binary file not shown.

BIN
audio/die/old_madai.mp3 Normal file

Binary file not shown.

BIN
audio/die/old_wangyi.mp3 Normal file

Binary file not shown.

BIN
audio/die/sunshao.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/old_fuhun1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/old_fuhun2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/oldmiji1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/oldmiji2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/oldqianxi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/oldqianxi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/oldzhenlie1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/oldzhenlie2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -5,6 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
connectBanned:['diy_tianyu','diy_yangyi','diy_lukang','ns_huamulan','ns_yuji','ns_duangui','ns_liuzhang'],
character:{
sp_key_yuri:['female','qun',4,['mubing','diaoling']],
ns_zhangwei:['female','wei',3,['nsqiyue','nsxuezhu']],
ns_chendao:['male','shu',4,['nsjianglie']],
yj_caoang:['male','wei',4,['yjxuepin']],
@ -52,6 +53,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_shizuru:['female','key',3,['shizuru_nianli','shizuru_benzhan']],
key_shiorimiyuki:['female','key',3,['shiorimiyuki_banyin','shiorimiyuki_tingxian']],
key_miki:['female','key',3,['miki_shenqiang','miki_huanmeng','miki_zhiluo']],
key_shiori:['female','key','2/3',['shiori_huijuan']],
key_kaori:['female','key','3/4',['kaori_siyuan']],
key_kud:['female','key',3,['kud_qiaoshou','kud_buhui']],
key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']],
@ -146,7 +149,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"ns_huangchengyan","ns_sunchensunjun","ns_yuanxi","ns_caoshuang"],
diy_tieba:["diy_wenyang","ns_zuoci","ns_lvzhi","ns_wangyun","ns_nanhua","ns_nanhua_left","ns_nanhua_right","ns_huamulan","ns_huangzu","ns_jinke","ns_yanliang","ns_wenchou","ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","ns_duangui","ns_zhangbao","ns_masu","ns_zhangxiu","ns_lvmeng","ns_shenpei","ns_yujisp","ns_yangyi","ns_liuzhang","ns_xinnanhua","ns_zhangwei"],
diy_default:["diy_feishi","diy_liuyan","diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji","diy_liufu","diy_xizhenxihong","diy_liuzan","diy_zaozhirenjun","diy_yangyi","diy_tianyu"],
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_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"],
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"],
diy_yongjian:["ns_chendao","yj_caoang"],
},
},
@ -162,6 +165,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。',
},
characterTitle:{
key_kaori:'#bKanon',
key_shiori:'#bKanon',
key_miki:'#bSummer Pockets',
key_shiorimiyuki:'#rAngel Beats!',
key_shizuru:'#bRewrite',
@ -201,6 +206,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_kyousuke:'#bLittle Busters!',
key_yuri:'#rAngel Beats!',
key_haruko:'#bAIR',
sp_key_yuri:'#bAngel Beats!',
key_kud:'#b千夜',
key_misuzu:'#b长发及腰黑长直',
@ -309,6 +315,124 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_lucia:['key_shizuru'],
},
skill:{
kaori_siyuan:{
enable:'phaseUse',
filter:function(event,player){
return player.countCards('he',lib.skill.kaori_siyuan.filterCard);
},
filterCard:function(card){
return ['equip','delay'].contains(get.type(card,false));
},
filterTarget:function(card,player,target){
var card=ui.selected.cards[0];
if(get.type(card,false)=='delay') return target.canAddJudge({name:card.name});
return target.isEmpty(get.subtype(card,false));
},
discard:false,
lose:false,
prepare:'give',
content:function(){
'step 0'
var card=cards[0];
if(get.type(card,false)=='equip') target.equip(card);
else target.addJudge(card);
'step 1'
var list=[];
for(var i of lib.inpile){
var type=get.type(i);
if(type=='basic'||type=='trick') list.push([type,'',i]);
if(i=='sha'){
list.push([type,'',i,'fire']);
list.push([type,'',i,'thunder']);
}
}
player.chooseButton(['是否视为使用一张基本牌或普通锦囊牌?',[list,'vcard']]).set('filterButton',function(button){
return player.hasUseTarget({name:button.link[2],nature:button.link[3],isCard:true});
}).set('ai',function(button){
return player.getUseValue({name:button.link[2],nature:button.link[3],isCard:true});
});
'step 2'
if(result.bool){
player.chooseUseTarget(true,{name:result.links[0][2],nature:result.links[0][3],isCard:true});
}
},
ai:{
basic:{
order:10
},
result:{
target:function(player,target){
var card=ui.selected.cards[0];
if(card) return get.effect(target,card,target,target);
return 0;
},
},
}
},
shiori_huijuan:{
trigger:{global:'phaseJieshuBegin'},
direct:true,
locked:true,
filter:function(event,player){
return event.player!=player&&event.player.getHistory('useCard',function(evt){
return evt.isPhaseUsing()&&['basic','trick'].contains(get.type(evt.card))&&player.hasUseTarget({
name:evt.card.name,
nature:evt.card.nature,
isCard:true,
});
}).length>0;
},
content:function(){
'step 0'
var list=[];
trigger.player.getHistory('useCard',function(evt){
if(!evt.isPhaseUsing()||!['basic','trick'].contains(get.type(evt.card))) return;
if(evt.card.name=='sha'&&evt.card.nature) list.add('sha:'+evt.card.nature);
else list.add(evt.card.name);
});
for(var i=0;i<list.length;i++){
if(list[i].indexOf('sha:')==0) list[i]=['基本','','sha',list[i].slice(4)];
else list[i]=[get.type(list[i]),'',list[i]];
}
player.chooseButton([get.prompt('shiori_huijuan'),[list,'vcard']]).set('filterButton',function(button){
return player.hasUseTarget({name:button.link[2],nature:button.link[3],isCard:true});
}).set('ai',function(button){
return player.getUseValue({name:button.link[2],nature:button.link[3],isCard:true});
});
'step 1'
if(result.bool){
player.logSkill('shiori_huijuan');
player.chooseUseTarget(true,{name:result.links[0][2],nature:result.links[0][3],isCard:true});
player.getStat('skill').shiori_huijuan=1;
}
},
group:'shiori_huijuan_discard',
},
shiori_huijuan_discard:{
trigger:{player:'phaseZhunbeiBegin'},
filter:function(event,player){
var num=0;
var stat=player.stat;
for(var i=stat.length-2;i--;i>=0){
if(stat[i].isMe) break;
if(stat[i].skill&&stat[i].skill.shiori_huijuan) num++;
}
return num>=Math.max(2,game.countPlayer()/2);
},
forced:true,
content:function(){
'step 0'
if(!player.countDiscardableCards(player,'ej')) event._result={bool:false};
else player.discardPlayerCard(player,'ej').set('ai',function(button){
var card=button.link;
var player=_status.event.player;
if(get.position(card)=='j') return 7+Math.random();
return 4+player.needsToDiscard()-get.value(card);
});
'step 1'
if(!result.bool) player.skip('phaseUse');
},
},
miki_shenqiang:{
trigger:{
global:'gameDrawAfter',
@ -541,6 +665,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
player.removeAdditionalSkill('kud_qiaoshou_equip');
delete player.storage.kud_qiaoshou_equip2;
player.addEquipTrigger();
},
},
},
@ -10029,6 +10154,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ns_liuzhang:'刘璋',
ns_xinnanhua:'南华老仙',
sp_key_yuri:'SP仲村由理',
key_lucia:'此花露西娅',
key_kyousuke:'枣恭介',
key_yuri:'仲村由理',
@ -10076,6 +10202,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_shiorimiyuki:'关根诗织&入江美雪',
key_shiorimiyuki_ab:'关根入江',
key_miki:'野村美希',
key_shiori:'美坂栞',
key_kaori:'美坂香里',
lucia_duqu:'毒躯',
lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。',
lucia_zhenren:'振刃',
@ -10303,6 +10431,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
miki_hydrogladiator_skill:'海德洛格拉迪尔特·改',
miki_binoculars:'望远镜',
miki_binoculars_info:'锁定技,其他角色的手牌对你可见。',
shiori_huijuan:'绘卷',
shiori_huijuan_discard:'绘卷',
shiori_huijuan_info:'锁定技其他角色的结束阶段开始时你可以视为使用一张该角色本回合出牌阶段内使用过的基本牌或普通锦囊牌。准备阶段开始时若你自上个回合起以此法使用的牌数不小于X则你选择一项①弃置装备区或判定区内的一张牌。②跳过本回合的出牌阶段。X为场上玩家数的一半且至少为2',
kaori_siyuan:'思愿',
kaori_siyuan_info:'出牌阶段,你可以将一张装备牌或延时锦囊牌置于一名其他角色的装备区内,然后可以视为使用一张基本牌或普通锦囊牌。',
key_kud:'库特莉亚芙卡',
kud_qiaoshou:'巧手',

View File

@ -1398,17 +1398,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
targetInRange:function(card){
if(get.suit(card)=='heart') return true;
},
cardUsable:function(card){
if(card.name=='sha'&&get.suit(card)=='heart') return Infinity;
}
},
audio:2,
trigger:{player:['useCard1','respond']},
firstDo:true,
trigger:{player:'useCard'},
forced:true,
filter:function(event,player){
return event.card.name=='sha'&&!event.skill&&
event.cards.length==1&&get.suit(event.cards[0])=='heart';
return event.card.name=='sha'&&get.suit(event.card)=='heart';
},
content:function(){
trigger.directHit.addArray(game.players);
},
content:function(){},
ai:{
effect:{
target:function(card,player,target,current){
@ -3310,7 +3313,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
longhun_info:'你可以将同花色的X张牌按下列规则使用或打出红桃当【桃】方块当具火焰伤害的【杀】梅花当【闪】黑桃当【无懈可击】X为你当前的体力值且至少为1',
juejing_info:'锁定技,摸牌阶段,你摸牌的数量改为你已损失的体力值+2你的手牌上限+2。',
wushen:'武神',
wushen_info:'锁定技,你的红桃手牌和判定牌均视为【杀】;锁定技,你使用红桃【杀】无距离限制。',
wushen_info:'锁定技,你的红桃手牌均视为【杀】;锁定技,你使用红桃【杀】无距离和次数限制且不可被响应。',
wuhun:'武魂',
wuhun21:'武魂',
wuhun22:'武魂',

View File

@ -908,7 +908,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.gain(player.storage.zhengjing2,'gain2','log','fromStorage');
delete player.storage.zhengjing2;
player.removeSkill('zhengjing2');
player.addTempSkill('zhengjing3');
//player.addTempSkill('zhengjing3');
player.skip('phaseJudge');
player.skip('phaseDraw');
},
@ -1942,7 +1942,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
zhongzuo:{
audio:2,
trigger:{global:'phaseEnd'},
trigger:{global:'phaseJieshuBegin'},
direct:true,
filter:function(event,player){
return player.getHistory('damage').length>0||player.getHistory('sourceDamage').length>0;
@ -5483,7 +5483,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhiyi:'执义',
zhiyi_info:'锁定技当你于一回合内使用或打出第一张基本牌时你选择一项1.摸一张牌。2.于此牌A若此牌是因响应牌B而使用或打出的则改为牌B的使用或打出流程结算完成后视为使用一张与此牌名称和属性相同的卡牌。',
zhongzuo:'忠佐',
zhongzuo_info:'一名角色的回合结束时,若你于此回合内造成或受到过伤害,则你可以令一名角色摸两张牌。若该角色已受伤,则你摸一张牌。',
zhongzuo_info:'一名角色的结束阶段开始时,若你于此回合内造成或受到过伤害,则你可以令一名角色摸两张牌。若该角色已受伤,则你摸一张牌。',
wanlan:'挽澜',
wanlan_info:'限定技当一名角色进入濒死状态时你可以弃置所有手牌并令其回复体力至1点然后对当前回合角色造成1点伤害。',
re_jikang:"手杀嵇康",
@ -5624,7 +5624,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shuaiyan_info:'弃牌阶段开始时若你的手牌数大于1则你可以展示所有手牌然后你令一名其他角色交给你一张牌。',
zhengxuan:'郑玄',
zhengjing:'整经',
zhengjing_info:'出牌阶段,你可以整理卡牌。然后,你将整理出的卡牌置于一名角色的武将牌上。该角色的准备阶段获得这些牌,跳过此回合的判定和摸牌阶段且本回合内不能发动【整经】。',
zhengjing_info:'出牌阶段,你可以整理卡牌。然后,你将整理出的卡牌置于一名角色的武将牌上。该角色的准备阶段获得这些牌,w且 跳过此回合的判定和摸牌阶段。',
zhengjing2:'整经',
mobile_yijiang:'武将设计征集大赛',

View File

@ -6,12 +6,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old:{
old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","xiaoqiao","pangde"],
old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun","ol_huaxiong"],
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_yijiang1:["masu","xushu","yujin","xin_yujin","old_xusheng","old_lingtong"],
old_yijiang2:["old_zhonghui"],
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_yijiang67:["ol_zhangrang","ol_liuyu"],
old_sp:["old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai","old_huangfusong","ol_maliang","old_wangyun"],
old_mobile:["old_caochun","old_majun","old_jiakui"],
},
@ -39,7 +39,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_caochun:['male','wei',4,['shanjia']],
masu:['male','shu',3,['xinzhan','huilei']],
xushu:['male','shu',3,['wuyan','jujian']],
fazheng:['male','shu',3,['enyuan','xuanhuo']],
liru:['male','qun',3,['juece','mieji','fencheng']],
yujin:['male','wei',4,['yizhong']],
xin_yujin:['male','wei',4,['jieyue']],
@ -49,9 +48,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_xusheng:['male','wu',4,['pojun']],
old_zhuran:['male','wu',4,['olddanshou']],
old_lingtong:['male','wu',4,['oldxuanfeng']],
old_madai:['male','shu',4,['mashu','oldqianxi']],
old_caoxiu:['male','wei',4,['taoxi']],
old_wangyi:['female','wei',3,['oldzhenlie','oldmiji']],
old_caozhen:['male','wei',4,['sidi']],
old_quancong:['male','wu',4,['zhenshan']],
old_lingju:['female','qun',3,['jieyuan','fenxin_old']],
@ -63,10 +60,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_machao:['male','qun',4,['zhuiji','oldcihuai']],
old_zhugezhan:["male","shu",3,["old_zuilun","old_fuyin"]],
zhangliang:["male","qun",4,["old_jijun","old_fangtong"]],
old_guanzhang:['male','shu',4,['old_fuhun']],
ol_xinxianying:['female','wei',3,['caishi','zhongjian']],
ol_zhangrang:['male','qun',3,['xintaoluan']],
ol_yujin:['male','wei',4,['rezhenjun']],
ol_guansuo:['male','shu',4,['zhengnan','xiefang']],
ol_manchong:['male','wei',3,['yuce','junxing']],
ol_liuyu:['male','qun',2,['zongzuo','zhige']],
@ -82,27 +76,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'shenxian',
inherit:'shenxian',
},
old_fuhun:{
audio:'fuhun',
trigger:{player:'phaseDrawBegin1'},
filter:function(event,player){
return !event.numFixed;
},
content:function(){
'step 0'
trigger.changeToZero();
'step 1'
var cards=get.cards(2);
event.cards=cards;
player.showCards(cards);
'step 2'
player.gain(cards,'gain2');
if(get.color(cards[0])!=get.color(cards[1])){
player.addTempSkill('wusheng');
player.addTempSkill('paoxiao');
}
},
},
"old_guhuo":{
group:["old_guhuo_guess","old_guhuo_respond","old_guhuo_wuxie"],
enable:"chooseToUse",
@ -686,98 +659,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
},
oldzhenlie:{
audio:'zhenlie',
trigger:{player:'judge'},
check:function(event,player){
return event.judge(player.judging[0])<0;
},
content:function(){
"step 0"
var card=get.cards()[0];
event.card=card;
game.cardsGotoOrdering(card).relatedEvent=trigger;
"step 1"
player.$throw(card);
card.clone.classList.add('thrownhighlight');
if(trigger.player.judging[0].clone){
trigger.player.judging[0].clone.classList.remove('thrownhighlight');
game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone]));
}
game.cardsDiscard(trigger.player.judging[0]);
trigger.player.judging[0]=card;
game.log(trigger.player,'的判定牌改为',card);
game.delay(2);
},
},
oldmiji:{
trigger:{player:['phaseZhunbeiBegin','phaseJieshuBegin']},
filter:function(event,player){
return player.isDamaged();
},
content:function(){
'step 0'
player.judge(function(card){
return get.color(card)=='black'?1:-1;
});
'step 1'
if(result.bool&&player.maxHp>player.hp){
var cards=get.cards(player.maxHp-player.hp);
event.cards=cards;
var dialog=ui.create.dialog('选择获得卡牌的目标',cards,'hidden');
dialog.classList.add('noselect');
player.chooseTarget(true,dialog).ai=function(target){
return get.attitude(player,target)/Math.sqrt(1+target.countCards('h'));
}
}
else{
event.finish();
}
'step 2'
player.line(result.targets);
result.targets[0].gain(event.cards,'draw');
},
ai:{
effect:{
target:function(card,player,target){
if(get.tag(card,'recover')&&target.hp==target.maxHp-1) return [0,0];
if(target.hasFriend()){
if((get.tag(card,'damage')==1||get.tag(card,'loseHp'))&&target.hp==target.maxHp) return [0,1];
}
}
},
threaten:function(player,target){
if(target.hp==1) return 3;
if(target.hp==2) return 2;
return 1;
},
}
},
oldqianxi:{
trigger:{source:'damageBegin2'},
check:function(event,player){
var att=get.attitude(player,event.player);
if(event.player.hp==event.player.maxHp) return att<0;
if(event.player.hp==event.player.maxHp-1&&
(event.player.maxHp<=3||event.player.hasSkillTag('maixie'))) return att<0;
return att>0;
},
filter:function(event,player){
return event.card&&event.card.name=='sha'&&get.distance(player,event.player)<=1;
},
logTarget:'player',
content:function(){
'step 0'
player.judge(function(card){
return get.suit(card)!='heart'?1:-1;
});
'step 1'
if(result.bool){
trigger.cancel();
trigger.player.loseMaxHp(true);
}
}
},
oldxuanfeng:{
audio:'xuanfeng',
trigger:{player:'loseAfter'},
@ -851,9 +732,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_xusheng:'旧徐盛',
old_lingtong:'旧凌统',
old_zhuran:'旧朱然',
old_madai:'旧马岱',
old_caoxiu:'旧曹休',
old_wangyi:'旧王异',
old_caozhen:'旧曹真',
old_quancong:'旧全琮',
old_lingju:'旧灵雎',
@ -865,13 +744,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_zhugezhan:"旧诸葛瞻",
zhangliang:'SP张梁',
yuji:'旧于吉',
old_guanzhang:'旧关兴张苞',
old_zhangfei:'OL张飞',
old_huatuo:'OL华佗',
jsp_caoren:'☆SP曹仁',
ol_xinxianying:'OL辛宪英',
ol_zhangrang:'旧张让',
ol_yujin:'镇军于禁',
ol_liaohua:'OL廖化',
ol_zhuran:'OL朱然',
ol_guansuo:'OL关索',
@ -887,8 +763,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_zhaoyun:'旧赵云',
ol_huaxiong:'旧华雄',
old_fuhun:'父魂',
old_fuhun_info:'摸牌阶段开始时,你可以放弃摸牌,改为从牌堆顶亮出两张牌并获得之,若亮出的牌颜色不同,你获得技能“武圣”、“咆哮”,直到回合结束。',
"old_guhuo":"蛊惑",
"old_guhuo_info":"你可以说出任何一种基本牌或普通锦囊牌并正面朝下使用或打出一张手牌。体力值不为0的其他角色依次选择是否质疑。若无角色质疑则该牌按你所述之牌结算。若有角色质疑则亮出验明若为真质疑者各失去1点体力若为假质疑者各摸一张牌。无论真假弃置被质疑的牌。仅当被质疑的牌为红桃花色且为真时该牌仍然可以进行结算。",
"old_guhuo_guess":"蛊惑",
@ -910,12 +784,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhenshan_use_backup:'振赡',
zhenshan_info:'每名角色的回合限一次,每当你需要使用或打出一张基本牌时,你可以与一名手牌数少于你的角色交换手牌。若如此做,视为你使用或打出了此牌',
zhenshan_use_info:'每名角色的回合限一次,每当你需要使用或打出一张基本牌时,你可以与一名手牌数少于你的角色交换手牌。若如此做,视为你使用或打出了此牌',
oldzhenlie:'贞烈',
oldzhenlie_info:'在你的判定牌生效前,你可以亮出牌堆顶的一张牌代替之',
oldmiji:'秘计',
oldmiji_info:'准备/结束阶段开始时若你已受伤你可以判定若判定结果为黑色你观看牌堆顶的X张牌X为你已损失的体力值然后将这些牌交给一名角色',
oldqianxi:'潜袭',
oldqianxi_info:'当你使用【杀】对距离为1的目标角色造成伤害时你可以进行一次判定若判定结果不为红桃你防止此伤害令其减1点体力上限',
oldxuanfeng:'旋风',
oldxuanfeng_info:'每当你失去一次装备区里的牌时你可以执行下列两项中的一项1.视为对任意一名其他角色使用一张【杀】此【杀】不计入每回合的使用限制2.对与你距离1以内的一名其他角色造成一点伤害',

View File

@ -9,11 +9,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
refresh_huo:["ol_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"],
refresh_lin:['re_zhurong','re_menghuo','re_dongzhuo','ol_sunjian','re_caopi','re_xuhuang'],
refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce'],
refresh_yijiang:['re_wuguotai','re_gaoshun','re_zhangyi','re_caozhi','re_zhuran','re_wuyi','re_liaohua','re_guohuai','re_zhuran','re_chengpu','re_caozhang','re_quancong','yujin_yujin','re_lingtong','re_handang','re_zhonghui','re_sunluban','re_masu','re_jianyong','xin_xusheng'],
refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_lingtong','re_masu','xin_xusheng','xin_fazheng'],
refresh_yijiang2:['old_madai','wangyi','guanzhang','re_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang'],
refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran'],
refresh_yijiang4:['re_sunluban','re_wuyi'],
refresh_yijiang5:['re_zhangyi','re_quancong'],
},
},
connect:true,
character:{
xin_fazheng:['male','shu',3,['xinenyuan','xinxuanhuo'],['die_audio']],
wangyi:['female','wei',3,['zhenlie','miji']],
old_madai:['male','shu',4,['mashu','qianxi']],
guanzhang:['male','shu',4,['fuhun']],
xin_xusheng:['male','wu',4,['decadepojun']],
re_taishici:['male','wu',4,['tianyi','hanzhan']],
re_masu:['male','shu',3,['resanyao','rezhiman']],
@ -6481,8 +6489,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
if(result.bool){
player.logSkill('refangzhu',result.targets);
event.target=result.targets[0]
event.target.chooseToDiscard('he',player.getDamagedHp()).set('ai',function(card){
event.target=result.targets[0];
if(player.isHealthy()) event._result={bool:false};
else event.target.chooseToDiscard('he',player.getDamagedHp()).set('ai',function(card){
var player=_status.event.player;
if(player.isTurnedOver()||_status.event.getTrigger().player.getDamagedHp()>2) return -1;
return (player.hp*player.hp)-get.value(card);
@ -6494,7 +6503,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.target.loseHp();
}
else{
event.target.draw(player.getDamagedHp());
if(player.isDamaged()) event.target.draw(player.getDamagedHp());
event.target.turnOver();
}
},
@ -7057,14 +7066,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xin_xusheng:'界徐盛',
decadepojun:'破军',
decadepojun2:'破军',
decadepojun_info:'当你使用【杀】指定目标后你可以将其的至多X张牌置于其武将牌上。若这些牌中有装备牌你将这些牌中的一张置于弃牌堆有锦囊牌你摸一张牌。其于回合结束时获得其武将牌上的这些牌。',
decadepojun_info:'当你使用【杀】指定目标后你可以将其的至多X张牌置于其武将牌上X为其体力值。若这些牌中有装备牌你将这些牌中的一张置于弃牌堆有锦囊牌你摸一张牌。其于回合结束时获得其武将牌上的这些牌。',
old_madai:'界马岱',
wangyi:'界王异',
guanzhang:'界关兴张苞',
xin_fazheng:'界法正',
refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风',
refresh_huo:'界限突破·火',
refresh_lin:'界限突破·林',
refresh_shan:'界限突破·山',
refresh_yijiang:'界限突破·将',
refresh_yijiang1:'界限突破·将1',
refresh_yijiang2:'界限突破·将2',
refresh_yijiang3:'界限突破·将3',
refresh_yijiang4:'界限突破·将4',
refresh_yijiang5:'界限突破·将5',
},
};
});

View File

@ -633,6 +633,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player:'linkBegin'
},
forced:true,
filter:function(event,player){
return !player.isLinked();
},
content:function(){
trigger.cancel();
},
@ -1588,7 +1591,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function (event,player){
return (player.getHistory('useCard',function(evt){
return evt.getParent('phaseUse')==event;
}).length<game.countPlayer(function(current){return !current.inRange(player)}))&&game.hasPlayer(function(target){
}).length<game.countPlayer(function(current){return current!=player&&!current.inRange(player)}))&&game.hasPlayer(function(target){
return target!=player&&!target.inRange(player)&&target.countDiscardableCards(player,'he');
});
},
@ -1914,16 +1917,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
usable:1,
delay:false,
filter:function(event,player){
var storage=player.getStorage('nzry_mingren');
if(get.itemtype(storage)!='cards') return false;
var num=player.countCards('he',{color:get.color(player.storage.nzry_mingren[0])});
return game.hasPlayer(function(current){
return current!=player&&
player.inRange(current)&&
player.storage.nzry_mingren!=undefined&&
player.countCards('he',{color:get.color(player.storage.nzry_mingren[0])})>=Math.max(Math.abs(current.hp-player.hp),1);
num>=Math.max(Math.abs(current.hp-player.hp),1);
})&&player.storage.nzry_zhenliang!=true;
},
filterTarget:function(card,player,target){
return player.storage.nzry_mingren!=undefined&&
target!=player&&
return target!=player&&
player.inRange(target)&&
player.countCards('he',{color:get.color(player.storage.nzry_mingren[0])})>=Math.max(Math.abs(target.hp-player.hp),1);
},

View File

@ -9136,8 +9136,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'biluan',
trigger:{player:'phaseJieshuBegin'},
checkx:function(player){
var ng=game.countGroup();
if(ng<2) return false;
var ng=Math.min(4,game.countPlayer());
var nai=0;
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player){
@ -9164,7 +9163,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
if(result.bool){
player.addSkill('rebiluan2');
var ng=game.countGroup();
var ng=Math.min(4,game.countPlayer());
player.$damagepop(ng,'unknownx');
player.storage.rebiluan2+=ng;
player.markSkill('rebiluan2');
@ -14689,7 +14688,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lixia_info:'锁定技,其他角色的结束阶段开始时,若你不在其攻击范围内,你摸一张牌或令其摸一张牌。本局内其他角色计算与你的距离时-1。',
rebiluan:'避乱',
rebiluan2:'避乱',
rebiluan_info:'结束阶段开始时若有与你距离不大于1的其他角色你可以弃置一张牌。若如此做本局内其他角色计算与你的距离时+X。X为场上势力数',
rebiluan_info:'结束阶段开始时若有与你距离不大于1的其他角色你可以弃置一张牌。若如此做本局内其他角色计算与你的距离时+X。X为场上角色数且至多为4',
relixia:'礼下',
relixia_info:'锁定技其他角色的结束阶段开始时若你不在其攻击范围内你选择一至两项1.摸一张牌2.其摸两张牌3.其回复1点体力。本局内其他角色计算与你的距离时-XX为你选择的选项数。',
yishe:'义舍',

View File

@ -4,8 +4,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2',
connect:true,
character:{
re_maliang:['male','shu',3,['rexiemu','heli'],['unseen']],
ol_yujin:['male','wei',4,['rezhenjun']],
ol_xinxianying:['female','wei',3,['caishi','zhongjian']],
caobuxing:['male','wu',3,['moying','juanhui'],['unseen']],
//sp_zhangliao:['male','qun',4,['mubing','diaoling']],
sp_key_yuri:['female','qun',4,['mubing','diaoling'],['unseen']],
re_sunluyu:['female','wu',3,['remeibu','remumu']],
liuzan:['male','wu',4,['refenyin','liji']],
wenyang:['male','wei',5,['xinlvli','choujue']],
@ -57,11 +60,431 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_shengun:["puyuan","guanlu","gexuan","xushao"],
sp_baigei:['re_panfeng','xingdaorong'],
sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou"],
sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','liuzan','re_sunluyu'],
sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','liuzan','re_sunluyu','caobuxing','ol_xinxianying','ol_yujin','re_maliang'],
}
},
skill:{
rexiemu:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
direct:true,
filter:function(event,player){
return !game.hasPlayer(function(current){
return current.hasMark('rexiemu');
});
},
content:function(){
'step 0'
player.chooseTarget(get.prompt2('rexiemu'),lib.filter.notMe).set('ai',function(target){
var player=_status.event.player;
return get.attitude(player,target)*Math.sqrt(Math.max(1+player.countCards('h'),1+target.countCards('h')));
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('rexiemu',target);
target.addMark('rexiemu',1);
player.addSkill('rexiemu2');
}
},
intro:{content:'mark'},
ai:{
expose:0.1,
},
},
rexiemu2:{
audio:'rexiemu',
trigger:{global:['loseAfter']},
forced:true,
charlotte:true,
usable:1,
filter:function(event,player){
return (event.player==player||event.player.hasMark('rexiemu'))&&['useCard','respond'].contains(event.getParent().name)&&event.hs&&event.hs.length&&
event.player!=_status.currentPhase&&game.hasPlayer(function(current){
return current.hasMark('rexiemu');
});
},
content:function(){
'step 0'
game.asyncDraw(game.filterPlayer(function(current){
return current==player||current==trigger.player||current.hasMark('rexiemu');
}));
'step 1'
game.delayx();
},
group:'rexiemu3',
},
rexiemu3:{
trigger:{player:'phaseBegin'},
forced:true,
charlotte:true,
silent:true,
firstDo:true,
content:function(){
player.removeSkill('rexiemu2');
game.countPlayer(function(current){
var num=current.countMark('rexiemu');
if(num) current.removeMark('rexiemu',num);
});
},
},
heli:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.hasPlayer(function(current){
return lib.skill.heli.filterTarget(null,player,current);
});
},
filterTarget:function(card,player,target){
return target.countCards('h')<player.countCards('h')
},
content:function(){
'step 0'
if(target.countCards('h')) target.showHandcards();
'step 1'
var list=[];
var cards=[];
for(var i of lib.inpile) list.add(get.type2(i));
for(var i of list){
if(!target.countCards('h',{type:i})){
var card=get.cardPile2(function(card){
return get.type(card,false)==i;
});
if(card) cards.push(card);
}
}
if(cards.length) target.gain(cards,'gain2','log');
else event.finish();
'step 2'
game.updateRoundNumber();
},
ai:{
order:10,
result:{
target:function(player,target){
return 1/Math.sqrt(1+target.countCards('h'))
},
},
},
},
moying:{
audio:2,
trigger:{player:'loseAfter'},
direct:true,
filter:function(event,player){
return player!=_status.currentPhase&&event.getParent().name!='useCard'&&event.cards2&&event.cards2.length==1&&!player.hasSkill('moying2')&&['equip','trick'].contains(get.type2(event.cards2[0],event.hs.contains(event.cards2[0])?player:false));
},
content:function(){
"step 0"
var number=trigger.cards2[0].number;
var numbers=[number-2,number-1,number,number+1,number+2].filter(function(number){
return number>=1&&number<=13;
});
if(player.isUnderControl()){
game.modeSwapPlayer(player);
}
var switchToAuto=function(){
_status.imchoosing=false;
event._result={
bool:true,
suit:lib.suit.randomGet(),
number:numbers.randomGet(),
};
if(event.dialog) event.dialog.close();
if(event.control) event.control.close();
};
var chooseButton=function(player,numbers){
var event=_status.event;
player=player||event.player;
var dialog=ui.create.dialog('是否发动【墨影】?','forcebutton','hidden');
event.dialog=dialog;
dialog.addText('花色');
var table=document.createElement('div');
table.classList.add('add-setting');
table.style.margin='0';
table.style.width='100%';
table.style.position='relative';
var listi=['spade','heart','club','diamond'];
for(var i=0;i<listi.length;i++){
var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode');
td.link=listi[i];
table.appendChild(td);
td.innerHTML='<span>'+get.translation(listi[i])+'</span>';
td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){
if(_status.dragged) return;
if(_status.justdragged) return;
_status.tempNoButton=true;
setTimeout(function(){
_status.tempNoButton=false;
},500);
var link=this.link;
var current=this.parentNode.querySelector('.bluebg');
if(current){
current.classList.remove('bluebg');
}
this.classList.add('bluebg');
event._result.suit=link;
});
}
dialog.content.appendChild(table);
dialog.addText('点数');
var table2=document.createElement('div');
table2.classList.add('add-setting');
table2.style.margin='0';
table2.style.width='100%';
table2.style.position='relative';
for(var i=0;i<numbers.length;i++){
var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode');
td.link=numbers[i];
table2.appendChild(td);
var num=numbers[i];
switch(num){
case 1:num='A';break;
case 11:num='J';break;
case 12:num='Q';break;
case 13:num='K';break;
}
td.innerHTML='<span>'+num+'</span>';
td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){
if(_status.dragged) return;
if(_status.justdragged) return;
_status.tempNoButton=true;
setTimeout(function(){
_status.tempNoButton=false;
},500);
var link=this.link;
var current=this.parentNode.querySelector('.bluebg');
if(current){
current.classList.remove('bluebg');
}
this.classList.add('bluebg');
event._result.number=link;
});
}
dialog.content.appendChild(table2);
dialog.add('  ');
event.dialog.open();
event.switchToAuto=function(){
event._result={
bool:true,
number:numbers.randomGet(),
suit:lib.suit.randomGet(),
};
event.dialog.close();
event.control.close();
game.resume();
_status.imchoosing=false;
};
event.control=ui.create.control('ok','cancel2',function(link){
var result=event._result;
if(link=='cancel2') result.bool=false;
else{
if(!result.number||!result.suit) return;
result.bool=true;
}
event.dialog.close();
event.control.close();
game.resume();
_status.imchoosing=false;
});
for(var i=0;i<event.dialog.buttons.length;i++){
event.dialog.buttons[i].classList.add('selectable');
}
game.pause();
game.countChoose();
};
if(event.isMine()){
chooseButton(player,numbers);
}
else if(event.isOnline()){
event.player.send(chooseButton,event.player,numbers);
event.player.wait();
game.pause();
}
else{
switchToAuto();
}
"step 1"
var map=event.result||result;
if(result.bool){
player.logSkill('moying');
player.addTempSkill('moying2');
var cards=[];
for(var i=0;i<ui.cardPile.childNodes.length;i++){
var card=ui.cardPile.childNodes[i];
if(get.suit(card)==result.suit&&get.number(card)==result.number) cards.push(card);
}
if(cards.length) player.gain(cards,'gain2','log');
}
else event.finish();
"step 2"
game.updateRoundNumber();
},
},
moying2:{},
juanhui:{
audio:2,
charlotte:true,
trigger:{player:'phaseJieshuBegin'},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('juanhui'),lib.filter.notMe).set('ai',function(target){
if(target.isTurnedOver()||target.hasJudge('lebu')) return Math.random();
return (1+target.countCards('h'))*2+Math.random();
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('juanhui',target);
player.storage.juanhui2=target;
player.storage.juanhui3=[];
player.addSkill('juanhui2');
}
},
},
juanhui2:{
mark:true,
intro:{
markcount:function(storage,player){
return player.getStorage('juanhui3').length;
},
mark:function(dialog,storage,player){
dialog.addText('记录目标');
dialog.addSmall([storage]);
var vcard=player.getStorage('juanhui3');
if(vcard.length){
dialog.addText('记录卡牌');
dialog.addAuto([vcard,'vcard']);
}
},
content:function(storage,player){
var str='记录目标:'+get.translation(storage);
var vcard=player.getStorage('juanhui3');
if(vcard.length){
str+='<br>记录卡牌:';
for(var i of vcard){
if(i[2]=='sha'&&i[3]) str+=get.translation(i[3]);
str+=get.translation(i[2]);
str+='、'
}
str=str.slice(0,str.length-1);
}
return str;
},
},
onremove:function(player){
delete player.storage.juanhui2;
delete player.storage.juanhui3;
},
group:'juanhui3',
enable:'phaseUse',
filter:function(event,player){
return player.getStorage('juanhui3').length>0;
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('绢绘',[player.getStorage('juanhui3'),'vcard'],'hidden')
},
filter:function(button,player){
return lib.filter.cardEnabled({
name:button.link[2],
nature:button.link[3],
},player,_status.event.getParent());
},
check:function(button){
var player=_status.event.player;
var card={
name:button.link[2],
nature:button.link[3],
};
if(player.getUseValue(card)>0) return get.order(card);
return -1;
},
backup:function(links,player){
return {
audio:'juanhui',
filterCard:true,
viewAs:{
name:links[0][2],
nature:links[0][3],
},
check:function(card){
return 6-get.value(card);
},
precontent:function(){
var card=event.result.card;
if(card.name=='sha') event.getParent().addCount=false;
var vcard=player.storage.juanhui3;
for(var i=0;i<vcard.length;i++){
if(vcard[i][2]==card.name) vcard.splice(i--,1);
}
if(vcard.length) player.markSkill('juanhui2');
else{
player.unmarkSkill('juanhui2');
event.getParent().juanhui=true;
}
},
}
},
prompt:function(links,player){
return '将一张手牌当做'+(links[0][2]=='sha'&&links[0][3]?get.translation(links[0][3]):'')+get.translation(links[0][2])+'使用';
},
},
ai:{
order:function(item,player){
var muniu=player.getStorage('juanhui3');
var order=0;
for(var i=0;i<muniu.length;i++){
var card={name:muniu[i][2],nature:muniu[i][3]};
if(player.getUseValue(card)>0){
var order2=get.order(card);
if(order2>order) order=order2
}
}
return order+0.1;
},
result:{
player:1,
},
},
},
juanhui3:{
charlotte:true,
firstDo:true,
trigger:{
global:'useCard2',
player:['phaseUseEnd','phaseUseSkipped','useCardAfter'],
},
silent:true,
filter:function(event,player,name){
if(event.name=='phaseUse') return true;
else if(name=='useCardAfter') return event.getParent().juanhui;
return event.player==player.storage.juanhui2&&event.player.isPhaseUsing()&&
['basic','trick'].contains(get.type(event.card))&&player.getStorage('juanhui3').filter(function(vcard){
return vcard[2]==event.card.name;
}).length==0;
},
content:function(){
if(trigger.name=='phaseUse') player.removeSkill('juanhui2');
else if(event.triggername=='useCardAfter'){
player.recover();
player.drawTo(3);
}
else{
var vcard=[get.type(trigger.card),'',trigger.card.name];
if(trigger.card.nature) vcard.push(trigger.card.nature);
player.storage.juanhui3.push(vcard);
player.markSkill('juanhui2');
}
},
},
mubing:{
audio:2,
audioname:['sp_key_yuri'],
trigger:{player:'phaseUseBegin'},
direct:true,
filter:function(event,player){
@ -71,7 +494,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
var num=player.storage.mubing2?3:2;
event.num=num+1;
player.chooseToDiscard(true,[1,num],'he',get.prompt('mubing'),'弃置至多'+get.cnNumber(num)+'张牌,然后展示牌堆顶的'+get.cnNumber(num+1)+'张牌').logSkill='mubing';
player.chooseToDiscard([1,num],'he',get.prompt('mubing'),'弃置至多'+get.cnNumber(num)+'张牌,然后展示牌堆顶的'+get.cnNumber(num+1)+'张牌').set('ai',function(card){
var player=_status.event.player;
if(card.name!='tengjia'&&get.position(card)=='e'&&get.equipValue(card,player)<=0) return 14;
if(!ui.selected.cards.length){
if(card.number<9) return 0;
if(card.number>11) return card.number;
if(!player.countCards('he',function(xcard){
return xcard!=card&&card.number+xcard.number>17;
})) return 0;
return card.number;
}
var num=0;
for(var i of ui.selected.cards){
num+=i.number;
}
if(num+card.number<18) return 0;
return Math.max(5-get.value(card),card.number);
}).logSkill='mubing';
'step 1'
if(!result.bool){
event.finish();return;
@ -136,6 +576,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
diaoling:{
audio:2,
audioname:['sp_key_yuri'],
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
juexingji:true,
@ -145,7 +587,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var num=0;
player.getAllHistory('gain',function(evt){
var evt2=evt.getParent();
if(evt.name=='mubing'&&evt.player==player) num+=evt.cards.filter(function(card){
if(evt2.name=='mubing'&&evt2.player==player) num+=evt.cards.filter(function(card){
return card.name=='sha'||get.subtype(card,false)=='equip1'||(get.type2(card,false)=='trick'&&get.tag({name:card.name},'damage'));
}).length;
});
@ -4961,13 +5403,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
remumu_info:'出牌阶段开始时你可以选择一项1.弃置一名其他角色装备区里的一张牌,然后你本回合可使用【杀】的次数+12.获得一名角色装备区里的一张防具牌,然后你本回合可使用【杀】的次数-1。',
sp_zhangliao:'SP张辽',
//这俩技能给SP仲村由理毫无违和感好吗
sp_key_yuri:'SP仲村由理',
mubing:'募兵',
mubing_info:'出牌阶段开始时,你可以弃置至多两张牌,然后展示牌堆顶的三张牌,并可获得任意张点数之和不大于你弃置的牌点数之和的牌。',
diaoling:'调令',
diaoling_info:'觉醒技,准备阶段,若你已获得了6张或更多的【杀】或武器牌或伤害锦囊牌则你回复1点体力或摸两张牌然后修改【募兵】。',
diaoling_info:'觉醒技,准备阶段,若你已因〖募兵〗获得了6张或更多的【杀】或武器牌或伤害锦囊牌则你回复1点体力或摸两张牌然后修改〖募兵〗。',
mubing_rewrite:'募兵·改',
mubing_rewrite_info:'出牌阶段开始时,你可以弃置至多三张牌,然后展示牌堆顶的四张牌,并可令一名角色获得任意张点数之和不大于你弃置的牌点数之和的牌。',
caobuxing:'曹不兴',
moying:'墨影',
moying_info:'每回合限一次当你于回合外不因使用而失去单一一张锦囊牌或装备牌后你可以选择一个花色和与此牌点数差绝对值不超过2的点数然后获得牌堆中所有与此牌花色点数相同的牌。',
juanhui:'绢绘',
juanhui2:'绢绘',
juanhui2_backup:'绢绘',
juanhui_info:'结束阶段,你可以选择一名其他角色。记录该角色下回合的出牌阶段里使用的基本牌和普通锦囊牌(每种牌名限记一次),你的下回合出牌阶段,可将一张手牌当这些牌里的任意一张牌使用(每张限使用一次,且【杀】不计次数)。当"绢绘"的牌全部用完时你回复1点体力并将手牌摸至三张。',
ol_xinxianying:'OL辛宪英',
ol_yujin:'OL于禁',
re_maliang:'马良',
rexiemu:'协穆',
rexiemu_info:'结束阶段,若全场没有“协穆”标记,你可以选择一名角色获得“协穆”标记直到你的下回合开始。你或该角色在各自的回合外使用或打出手牌时,你与其各摸一张牌(每回合限一次)。',
heli:'贺励',
heli_info:'出牌阶段限一次,你可以选择手牌数比你少的一名其他角色。该角色展示所有手牌,然后每缺少一种类型的牌,便从牌堆中随机获得一张此类型的牌。',
sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原",

View File

@ -919,6 +919,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
wusheng:{
audio:2,
audioname2:{old_guanzhang:'old_fuhun'},
audioname:['re_guanyu','guanzhang','jsp_guanyu','guansuo'],
enable:['chooseToRespond','chooseToUse'],
filterCard:function(card,player){
@ -982,6 +983,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
paoxiao:{
audio:2,
firstDo:true,
audioname2:{old_guanzhang:'old_fuhun'},
audioname:['re_zhangfei','guanzhang','xiahouba'],
trigger:{player:'useCard1'},
forced:true,

View File

@ -6,8 +6,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//connectBanned:['qinmi'],
characterSort:{
yijiang:{
yijiang_2011:['caozhi','re_yujin','zhangchunhua','xin_fazheng','xin_masu','xin_xushu','xusheng','lingtong','wuguotai','chengong','gaoshun'],
yijiang_2012:['wangyi','xunyou','zhonghui','madai','liaohua','guanzhang','bulianshi','handang','chengpu','liubiao','old_huaxiong','caozhang'],
yijiang_2011:['caozhi','re_yujin','zhangchunhua','fazheng','xin_masu','xin_xushu','xusheng','lingtong','wuguotai','chengong','gaoshun'],
yijiang_2012:['old_wangyi','xunyou','zhonghui','madai','liaohua','old_guanzhang','bulianshi','handang','chengpu','liubiao','old_huaxiong','caozhang'],
yijiang_2013:['manchong','guohuai','caochong','guanping','liufeng','jianyong','yufan','panzhangmazhong','zhuran','xin_liru','fuhuanghou'],
yijiang_2014:['hanhaoshihuan','chenqun','caozhen','zhangsong','wuyi','zhoucang','zhuhuan','guyong','sunluban','yj_jushou','caifuren'],
yijiang_2015:['caoxiu','caorui','zhongyao','xiahoushi','liuchen','zhangyi','zhuzhi','quancong','sunxiu','gongsunyuan','guotufengji'],
@ -16,6 +16,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
fazheng:['male','shu',3,['enyuan','xuanhuo']],
old_guanzhang:['male','shu',4,['old_fuhun']],
old_wangyi:['female','wei',3,['oldzhenlie','oldmiji']],
caozhang:['male','wei',4,['jiangchi']],
guohuai:['male','wei',4,['jingce']],
zhangchunhua:['female','wei',3,['jueqing','shangshi']],
@ -24,13 +27,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xunyou:['male','wei',3,['qice','zhiyu']],
xin_xushu:['male','shu',3,['xinwuyan','xinjujian']],
xin_masu:['male','shu',3,['olsanyao','rezhiman']],
xin_fazheng:['male','shu',3,['xinenyuan','xinxuanhuo'],['die_audio']],
zhuran:['male','wu',4,['danshou']],
xusheng:['male','wu',4,['xinpojun']],
wuguotai:['female','wu',3,['ganlu','buyi']],
lingtong:['male','wu',4,['xuanfeng']],
liubiao:['male','qun',3,['zishou','zongshi']],
wangyi:['female','wei',3,['zhenlie','miji']],
yufan:['male','wu',3,['zhiyan','zongxuan']],
chengong:['male','qun',3,['mingce','zhichi']],
bulianshi:['female','wu',3,['old_anxu','zhuiyi']],
@ -38,10 +39,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
fuhuanghou:['female','qun',3,['qiuyuan','zhuikong']],
zhonghui:['male','wei',4,['quanji','zili']],
jianyong:['male','shu',3,['qiaoshui','jyzongshi']],
madai:['male','shu',4,['mashu','qianxi']],
madai:['male','shu',4,['mashu','oldqianxi']],
liufeng:['male','shu',4,['xiansi']],
manchong:['male','wei',3,['xinjunxing','yuce']],
guanzhang:['male','shu',4,['fuhun']],
chenqun:['male','wei',3,['pindi','faen']],
sunluban:['female','wu',3,['chanhui','jiaojin']],
guyong:['male','wu',3,['shenxing','bingyi']],
@ -193,6 +193,123 @@ game.import('character',function(lib,game,ui,get,ai,_status){
fazheng:['liubei'],
},
skill:{
oldzhenlie:{
audio:2,
trigger:{player:'judge'},
check:function(event,player){
return event.judge(player.judging[0])<0;
},
content:function(){
"step 0"
var card=get.cards()[0];
event.card=card;
game.cardsGotoOrdering(card).relatedEvent=trigger;
"step 1"
player.$throw(card);
if(trigger.player.judging[0].clone){
trigger.player.judging[0].clone.classList.remove('thrownhighlight');
game.broadcast(function(card){
if(card.clone){
card.clone.classList.remove('thrownhighlight');
}
},trigger.player.judging[0]);
game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone]));
}
game.cardsDiscard(trigger.player.judging[0]);
trigger.player.judging[0]=card;
game.log(trigger.player,'的判定牌改为',card);
game.delay(2);
},
},
oldmiji:{
trigger:{player:['phaseZhunbeiBegin','phaseJieshuBegin']},
audio:2,
filter:function(event,player){
return player.isDamaged();
},
content:function(){
'step 0'
player.judge(function(card){
return get.color(card)=='black'?1:-1;
});
'step 1'
if(result.bool&&player.maxHp>player.hp){
var cards=get.cards(player.maxHp-player.hp);
event.cards=cards;
player.chooseTarget(true).set('ai',function(target){
return get.attitude(player,target)/Math.sqrt(1+target.countCards('h'));
}).set('createDialog',['请选择一名角色获得这些牌',event.cards]);
}
else{
event.finish();
}
'step 2'
player.line(result.targets);
result.targets[0].gain(event.cards,'draw');
},
ai:{
effect:{
target:function(card,player,target){
if(get.tag(card,'recover')&&target.hp==target.maxHp-1) return [0,0];
if(target.hasFriend()){
if((get.tag(card,'damage')==1||get.tag(card,'loseHp'))&&target.hp==target.maxHp) return [0,1];
}
}
},
threaten:function(player,target){
if(target.hp==1) return 3;
if(target.hp==2) return 2;
return 1;
},
}
},
oldqianxi:{
audio:2,
trigger:{source:'damageBegin2'},
check:function(event,player){
var att=get.attitude(player,event.player);
if(event.player.hp==event.player.maxHp) return att<0;
if(event.player.hp==event.player.maxHp-1&&
(event.player.maxHp<=3||event.player.hasSkillTag('maixie'))) return att<0;
return att>0;
},
filter:function(event,player){
return event.card&&event.card.name=='sha'&&get.distance(player,event.player)<=1;
},
logTarget:'player',
content:function(){
'step 0'
player.judge(function(card){
return get.suit(card)!='heart'?1:-1;
});
'step 1'
if(result.bool){
trigger.cancel();
trigger.player.loseMaxHp(true);
}
}
},
old_fuhun:{
audio:2,
trigger:{player:'phaseDrawBegin1'},
filter:function(event,player){
return !event.numFixed;
},
content:function(){
'step 0'
trigger.changeToZero();
'step 1'
var cards=get.cards(2);
event.cards=cards;
player.showCards(cards,get.translation(player)+'发动了【父魂】');
'step 2'
player.gain(cards,'gain2');
if(get.color(cards[0])!=get.color(cards[1])){
player.addTempSkill('wusheng');
player.addTempSkill('paoxiao');
}
},
},
shiyong:{
audio:2,
trigger:{player:'damageEnd'},
@ -11824,7 +11941,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
translate:{
old_huaxiong:'华雄',
yufan:'虞翻',
wangyi:'王异',
xushu:'旧徐庶',
caozhi:'曹植',
zhangchunhua:'张春华',
@ -11835,8 +11951,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yujin:'毅重于禁',
masu:'旧马谡',
xin_masu:'马谡',
fazheng:'旧法正',
xin_fazheng:'法正',
fazheng:'法正',
wuguotai:'吴国太',
chengong:'陈宫',
xusheng:'徐盛',
@ -11858,7 +11973,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
manchong:'满宠',
liufeng:'刘封',
liru:'旧李儒',
guanzhang:'关兴张苞',
yj_jushou:'沮授',
zhuhuan:'朱桓',
xiahoushi:'夏侯氏',
@ -12366,6 +12480,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
pojun_info:'当你使用【杀】造成伤害后你可以令受到该伤害的角色摸X张牌X为该角色当前的体力值且最多为5然后该角色将其武将牌翻面。',
shiyong:'恃勇',
shiyong_info:'锁定技当你受到一次红色【杀】或【酒】【杀】造成的伤害后须减1点体力上限',
old_guanzhang:'关兴张苞',
old_wangyi:'王异',
oldqianxi:'潜袭',
oldqianxi_info:'当你使用【杀】对距离为1的目标角色造成伤害时你可以进行一次判定若判定结果不为红桃你防止此伤害令其减1点体力上限',
oldzhenlie:'贞烈',
oldzhenlie_info:'在你的判定牌生效前,你可以亮出牌堆顶的一张牌代替之',
oldmiji:'秘计',
oldmiji_info:'准备/结束阶段开始时若你已受伤你可以判定若判定结果为黑色你观看牌堆顶的X张牌X为你已损失的体力值然后将这些牌交给一名角色',
old_fuhun:'父魂',
old_fuhun_info:'摸牌阶段开始时,你可以放弃摸牌,改为从牌堆顶亮出两张牌并获得之,若亮出的牌颜色不同,你获得技能“武圣”、“咆哮”,直到回合结束。',
yijiang_2011:'一将成名2011',
yijiang_2012:'一将成名2012',

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.102.1',
'v1.9.103',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -589,6 +589,10 @@ window.noname_asset_list=[
'audio/die/sp_sufei.mp3',
'audio/die/wulan.mp3',
'audio/die/key_saya.mp3',
'audio/die/old_guanzhang.mp3',
'audio/die/old_madai.mp3',
'audio/die/old_wangyi.mp3',
'audio/die/sunshao.mp3',
'audio/skill/anguo1.mp3',
'audio/skill/anguo2.mp3',
@ -2609,6 +2613,14 @@ window.noname_asset_list=[
'audio/skill/saya_shouji2.mp3',
'audio/skill/saya_powei1.mp3',
'audio/skill/saya_powei2.mp3',
'audio/skill/old_fuhun1.mp3',
'audio/skill/old_fuhun2.mp3',
'audio/skill/oldmiji1.mp3',
'audio/skill/oldmiji2.mp3',
'audio/skill/oldqianxi1.mp3',
'audio/skill/oldqianxi2.mp3',
'audio/skill/oldzhenlie1.mp3',
'audio/skill/oldzhenlie2.mp3',
'font/huangcao.ttf',
'font/shousha.ttf',
@ -3221,6 +3233,8 @@ window.noname_asset_list=[
'image/character/re_jianyong.jpg',
'image/character/sp_key_yuri.jpg',
'image/character/xin_xusheng.jpg',
'image/character/key_kaori.jpg',
'image/character/key_shiori.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -7177,6 +7177,16 @@
game.saveConfig('mousewheel',false);
}
var show_splash=lib.config.show_splash;
if(show_splash=='off'){
show_splash=false;
}
else if(show_splash=='init'){
if(localStorage.getItem('show_splash_off')){
show_splash=false;
}
}
localStorage.removeItem('show_splash_off');
var extensionlist=[];
if(!localStorage.getItem(lib.configprefix+'disable_extension')){
if(lib.config.extensions&&lib.config.extensions.length){
@ -7204,14 +7214,16 @@
}
_status.evaluatingExtension=false;
}
else{
else if(lib.config.mode!='connect'||show_splash){
extensionlist.push(lib.config.extensions[i]);
}
}
}
else{
for(var i=0;i<lib.config.extensions.length;i++){
game.import('extension',{name:lib.config.extensions[i]});
if(lib.config.mode!='connect'||show_splash){
for(var i=0;i<lib.config.extensions.length;i++){
game.import('extension',{name:lib.config.extensions[i]});
}
}
}
var loadPack=function(){
@ -7228,16 +7240,6 @@
}
}
};
var show_splash=lib.config.show_splash;
if(show_splash=='off'){
show_splash=false;
}
else if(show_splash=='init'){
if(localStorage.getItem('show_splash_off')){
show_splash=false;
}
}
localStorage.removeItem('show_splash_off');
if(localStorage.getItem(lib.configprefix+'playback')){
toLoad++;
lib.init.js(lib.assetURL+'mode',lib.config.mode,packLoaded,packLoaded);
@ -7284,7 +7286,7 @@
var styleLoaded=function(){
styleToLoad--;
if(styleToLoad==0){
if(extensionlist.length){
if(extensionlist.length&&(lib.config.mode!='connect'||show_splash)){
var extToLoad=extensionlist.length;
var extLoaded=function(){
extToLoad--;
@ -8561,26 +8563,29 @@
clickedNode=true;
lib.config.mode=this.link;
game.saveConfig('mode',this.link);
if(game.layout!='mobile'&&lib.layoutfixed.indexOf(lib.config.mode)!==-1){
game.layout='mobile';
ui.css.layout.href=lib.assetURL+'layout/'+game.layout+'/layout.css';
}
else if(game.layout=='mobile'&&lib.config.layout!='mobile'&&lib.layoutfixed.indexOf(lib.config.mode)===-1){
game.layout=lib.config.layout;
if(game.layout=='default'){
ui.css.layout.href='';
}
else{
ui.css.layout.href=lib.assetURL+'layout/'+game.layout+'/layout.css';
}
}
splash.delete(1000);
delete window.inSplash;
window.resetGameTimeout=setTimeout(lib.init.reset,5000);
if(this.link=='connect') game.reload();
else{
if(game.layout!='mobile'&&lib.layoutfixed.indexOf(lib.config.mode)!==-1){
game.layout='mobile';
ui.css.layout.href=lib.assetURL+'layout/'+game.layout+'/layout.css';
}
else if(game.layout=='mobile'&&lib.config.layout!='mobile'&&lib.layoutfixed.indexOf(lib.config.mode)===-1){
game.layout=lib.config.layout;
if(game.layout=='default'){
ui.css.layout.href='';
}
else{
ui.css.layout.href=lib.assetURL+'layout/'+game.layout+'/layout.css';
}
}
splash.delete(1000);
delete window.inSplash;
window.resetGameTimeout=setTimeout(lib.init.reset,5000);
this.listenTransition(function(){
lib.init.js(lib.assetURL+'mode',lib.config.mode,proceed);
},500);
this.listenTransition(function(){
lib.init.js(lib.assetURL+'mode',lib.config.mode,proceed);
},500);
}
}
var downNode=function(){
this.classList.add('glow');
@ -20184,8 +20189,10 @@
removeEquipTrigger:function(card){
if(card){
var info=get.info(card);
var skills=this.getSkills(null,false);
if(info.skills){
for(var j=0;j<info.skills.length;j++){
if(skills.contains(info.skills[j])) continue;
this.removeSkillTrigger(info.skills[j]);
}
}
@ -42900,6 +42907,14 @@
}
}
else{
for(var i of game.connectPlayers){
var num=0;
if(!i.nickname&&!i.classList.contains('unselectable2')) i++;
}
if(i>=lib.configOL.number-1){
alert('至少要有两名玩家才能开始游戏!');
return;
}
game.resume();
}
button.delete();

View File

@ -1,10 +1,11 @@
window.noname_update={
version:'1.9.102.1',
update:'1.9.102',
version:'1.9.103.1',
update:'1.9.103',
changeLog:[
'朱鹭户沙耶语音',
'开黑斗地主模式',
'OL张昌蒲、OL士燮、界简雍、界徐盛',
'SP仲村由理',
'美坂栞、美坂香里',
'新神关羽',
'武将分包调整',
'bug修复',
],
@ -16,37 +17,37 @@ window.noname_update={
//'card/swd.js',
//'card/mtg.js',
//'card/gujian.js',
'card/guozhan.js',
//'card/guozhan.js',
//'card/gwent.js',
//'card/yunchou.js',
//'card/zhenfa.js',
//'card/zhulu.js',
'character/diy.js',
//'character/extra.js',
//'character/diy.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/sp.js',
'character/sp2.js',
//'character/old.js',
//'character/refresh.js',
'character/shenhua.js',
//'character/sp.js',
//'character/sp2.js',
//'character/tw.js',
//'character/standard.js',
//'character/swd.js',
//'character/xianjian.js',
//'character/xinghuoliaoyuan.js',
'character/yijiang.js',
//'character/yijiang.js',
//'character/yxs.js',
//'extension/boss/extension.js',
//'layout/default/layout.css',
//'layout/nova/layout.css',
//'mode/identity.js',
'mode/doudizhu.js',
'mode/guozhan.js',
//'mode/doudizhu.js',
//'mode/guozhan.js',
//'mode/chess.js',
//'mode/tafang.js',
//'mode/single.js',

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

View File

@ -1207,7 +1207,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
stone_fennuxiaoji:['male','qun',1,['stone_fennuxiaoji1'],['minskin','stone'],[1,2]],
stone_juxingchanchu:['male','qun',2,['stone_juxingchanchu1'],['minskin','stone'],[2,1]],
stone_wuyi:['male','qun',1,['jijiu'],['minskin','stone'],[2,2]],
stone_wuyi:['male','qun',1,['jijiu'],['minskin','stone','die_audio'],[2,2]],
stone_langren:['male','qun',1,['stone_qianxing'],['minskin','stone'],[1,2]],
stone_shishigui:['male','qun',2,['stone_shishigui1'],['minskin','stone'],[2,1]],