官!渡!之!战!

This commit is contained in:
Spmario233 2020-07-18 06:44:32 +08:00 committed by GitHub
parent ef9e08ba2c
commit 21a77e839b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
79 changed files with 1275 additions and 109 deletions

BIN
audio/die/chunyuqiong.mp3 Normal file

Binary file not shown.

BIN
audio/die/sp_xuyou.mp3 Normal file

Binary file not shown.

BIN
audio/die/xingdaorong.mp3 Normal file

Binary file not shown.

BIN
audio/die/yl_yuanshu.mp3 Normal file

Binary file not shown.

BIN
audio/skill/cangchu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/cangchu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/chenggong1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/chenggong2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/drlt_weidi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/drlt_weidi2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/liangying1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/spshicai1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/spshicai2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sushou1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sushou2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xuxie1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xuxie2.mp3 Normal file

Binary file not shown.

View File

@ -245,21 +245,27 @@ game.import('card',function(lib,game,ui,get,ai,_status){
audio:true, audio:true,
type:'trick', type:'trick',
enable:function(card,player){ enable:function(card,player){
if(get.mode()=='versus') return true;
return game.hasPlayer(function(current){ return game.hasPlayer(function(current){
return current.isMajor(); return current.isMajor();
}); });
}, },
mode:['guozhan'], mode:['guozhan','versus'],
filterTarget:true, filterTarget:true,
chongzhu:true, chongzhu:true,
changeTarget:function(player,targets){ changeTarget:function(player,targets){
var target=targets[0]; var target=targets[0];
game.filterPlayer(function(current){ game.filterPlayer(function(current){
if(get.mode()=='versus') return current.isFriendOf(target);
return current.isMajor()==target.isMajor()&&current!=target&&!current.hasSkill('diaohulishan'); return current.isMajor()==target.isMajor()&&current!=target&&!current.hasSkill('diaohulishan');
},targets); },targets);
}, },
content:function(){ content:function(){
if(target.isLinked()){ if(get.mode()=='versus'){
if(target.isEnemyOf(player)) target.link(true);
else if(target.isLinked()) target.draw();
}
else if(target.isLinked()){
target.draw(); target.draw();
} }
else{ else{
@ -275,6 +281,16 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}, },
result:{ result:{
player:function(player,target){ player:function(player,target){
if(get.mode()=='versus') return game.countPlayer(function(current){
if(target.isFriendOf(current)){
if(current.isFriendOf(player)&&current.isLinked()){
return get.attitude(player,target);
}
else if(current.isEnemyOf(player)&&!current.isLinked()){
return -get.attitude(player,target)*0.6;
}
}
});
return game.countPlayer(function(current){ return game.countPlayer(function(current){
if(target.isMajor()==current.isMajor()){ if(target.isMajor()==current.isMajor()){
if(current.isLinked()){ if(current.isLinked()){
@ -1377,6 +1393,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
shuiyanqijunx_info:'出牌阶段对一名装备区里有牌的其他角色使用。目标角色选择一项1、弃置装备区里的所有牌2、受到你造成的1点雷电伤害', shuiyanqijunx_info:'出牌阶段对一名装备区里有牌的其他角色使用。目标角色选择一项1、弃置装备区里的所有牌2、受到你造成的1点雷电伤害',
lulitongxin:'勠力同心', lulitongxin:'勠力同心',
lulitongxin_info:'出牌阶段,对所有大势力角色或所有小势力角色使用。若目标角色:不处于“连环状态”,其横置;处于“连环状态”,其摸一张牌', lulitongxin_info:'出牌阶段,对所有大势力角色或所有小势力角色使用。若目标角色:不处于“连环状态”,其横置;处于“连环状态”,其摸一张牌',
lulitongxin_info_versus:'出牌阶段,对所有敌方角色或所有己方角色使用。若目标角色:为敌方角色且不处于“连环状态”,其横置;为己方角色且处于“连环状态”,其摸一张牌。',
lianjunshengyan:'联军盛宴', lianjunshengyan:'联军盛宴',
lianjunshengyan_info:'出牌阶段对你和你选择的除你的势力外的一个势力的所有角色。若目标角色为你你选择摸Y张牌并回复X-Y点体力X为该势力的角色数Y∈[0,X]);不为你,其摸一张牌,然后重置。', lianjunshengyan_info:'出牌阶段对你和你选择的除你的势力外的一个势力的所有角色。若目标角色为你你选择摸Y张牌并回复X-Y点体力X为该势力的角色数Y∈[0,X]);不为你,其摸一张牌,然后重置。',
lianjunshengyan_info_boss:'出牌阶段对场上所有角色使用。你摸X张牌X为目存活角色数其他角色依次选择回复1点体力或摸一张牌。', lianjunshengyan_info_boss:'出牌阶段对场上所有角色使用。你摸X张牌X为目存活角色数其他角色依次选择回复1点体力或摸一张牌。',

View File

@ -1682,22 +1682,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){
direct:true, direct:true,
filter:function(event,player){ filter:function(event,player){
if(get.mode()=='guozhan') return false; if(get.mode()=='guozhan') return false;
return player.canUse('sha',event.target,false)&&player.hasSha(); return player.canUse('sha',event.target,false)&&(player.hasSha()||_status.connectMode&&player.countCards('h'));
}, },
content:function(){ content:function(){
"step 0" "step 0"
if(player.hasSkill('jiu')){ player.chooseToUse(get.prompt('qinglong'),function(card,player,event){
game.broadcastAll(function(player){ if(get.name(card)!='sha') return false;
player.removeSkill('jiu'); return lib.filter.filterCard.apply(this,arguments);
},player); },trigger.target,-1).set('addCount',false).logSkill='qinglong_skill';
event.jiu=true;
}
player.chooseToUse(get.prompt('qinglong'),{name:'sha'},trigger.target,-1).set('addCount',false).logSkill='qinglong_skill';
"step 1"
if(result.bool);
else if(event.jiu){
player.addSkill('jiu');
}
} }
}, },
zhangba_skill:{ zhangba_skill:{

View File

@ -1527,7 +1527,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}); });
'step 1' 'step 1'
if(result.bool){ if(result.bool){
player.chooseTarget(lib.filter.notMe,true,'选择一名其他角色对其造成1点雷属性伤害'); player.chooseTarget(lib.filter.notMe,true,'选择一名其他角色对其造成1点雷属性伤害').set('',function(target){
var player=_status.event.player;
return get.damageEffect(target,player,player,'thunder');
});
} }
else event.finish(); else event.finish();
'step 2' 'step 2'
@ -2532,7 +2535,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target.chooseToUse({ target.chooseToUse({
cards:cards, cards:cards,
filterCard:function(card){ filterCard:function(card){
if(!_status.event.cards.contains(card)) return false; if(get.itemtype(card)!='card'||!_status.event.cards||!_status.event.cards.contains(card)) return false;
return lib.filter.filterCard.apply(this,arguments); return lib.filter.filterCard.apply(this,arguments);
}, },
prompt:'是否使用得到的牌中的一张?', prompt:'是否使用得到的牌中的一张?',
@ -8887,7 +8890,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
haruka_shuangche:'双掣', haruka_shuangche:'双掣',
kanata_shuangche:'双掣', kanata_shuangche:'双掣',
haruka_shuangche_backup:'双掣', haruka_shuangche_backup:'双掣',
haruka_shuangche_info:'出牌阶段你可以视为使用任意基本牌或普通锦囊牌。此牌结算完成后你选择一项1.弃置X张牌。2.失去1点体力且本回合内不能再发动〖双掣〗。', haruka_shuangche_info:'出牌阶段你可以视为使用任意基本牌或普通锦囊牌。此牌结算完成后你选择一项1.弃置X张牌。2.失去1点体力且本回合内不能再发动〖双掣〗。X为你于此回合内发动过〖双掣〗的次数',
//你不能以此法使用【回魂】 //你不能以此法使用【回魂】
saya_shouji:'授计', saya_shouji:'授计',
saya_shouji_info:'每回合限一次,当你使用的牌结算完成后,你可以将此牌对应的所有实体牌交给一名其他角色。其可以使用这些牌中的一张,若如此做,你摸一张牌。', saya_shouji_info:'每回合限一次,当你使用的牌结算完成后,你可以将此牌对应的所有实体牌交给一名其他角色。其可以使用这些牌中的一张,若如此做,你摸一张牌。',

View File

@ -612,6 +612,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.cardsGotoSpecial(cards); game.cardsGotoSpecial(cards);
game.log(player,'将',cards,'置于了',target,'的武将牌上'); game.log(player,'将',cards,'置于了',target,'的武将牌上');
} }
"step 4"
game.updateRoundNumber();
}, },
ai:{ ai:{
order:10, order:10,

View File

@ -12,11 +12,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan"], old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan"],
old_yijiang5:["old_caoxiu","old_quancong","old_zhuzhi"], old_yijiang5:["old_caoxiu","old_quancong","old_zhuzhi"],
old_yijiang67:["ol_xinxianying","ol_zhangrang","ol_liuyu"], old_yijiang67:["ol_xinxianying","ol_zhangrang","ol_liuyu"],
old_sp:["old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai","old_huangfusong","ol_maliang","panfeng","old_wangyun"], old_sp:["old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai","old_huangfusong","ol_maliang","panfeng","old_wangyun","sunluyu"],
old_mobile:["old_caochun","old_majun"], old_mobile:["old_caochun","old_majun"],
}, },
}, },
character:{ character:{
sunluyu:['female','wu',3,['new_meibu','new_mumu']],
pangde:['male','qun',4,['mashu','mengjin']], pangde:['male','qun',4,['mashu','mengjin']],
ol_huaxiong:["male","qun",6,["new_reyaowu"]], ol_huaxiong:["male","qun",6,["new_reyaowu"]],
old_wangyun:['male','qun',4,['wylianji','moucheng']], old_wangyun:['male','qun',4,['wylianji','moucheng']],

View File

@ -790,10 +790,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
"drlt_yongsi":{ "drlt_yongsi":{
audio:2,
group:["drlt_yongsi_1","drlt_yongsi_2"], group:["drlt_yongsi_1","drlt_yongsi_2"],
subSkill:{ subSkill:{
'1':{ '1':{
audio:["yongsi1",2], audio:"drlt_yongsi",
trigger:{ trigger:{
player:'phaseDrawBegin2' player:'phaseDrawBegin2'
}, },
@ -806,7 +807,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
'2':{ '2':{
audio:["yongsi2",2], audio:"drlt_yongsi",
trigger:{ trigger:{
player:'phaseUseEnd' player:'phaseUseEnd'
}, },

View File

@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true, connect:true,
characterSort:{ characterSort:{
sp:{ sp:{
sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","wenyang","xujing","yuantanyuanshang","wangshuang","sunshao","liuzan","xingdaorong"], sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","re_sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","wenyang","xujing","yuantanyuanshang","wangshuang","sunshao","liuzan","xingdaorong"],
sp_guansuo:['guansuo','baosanniang','huaman'], sp_guansuo:['guansuo','baosanniang','huaman'],
sp_whlw:["xurong","lijue","zhangji","fanchou","guosi"], sp_whlw:["xurong","lijue","zhangji","fanchou","guosi"],
sp_zlzy:["zhangqiying","lvkai","zhanggong","weiwenzhugezhi","beimihu"], sp_zlzy:["zhangqiying","lvkai","zhanggong","weiwenzhugezhi","beimihu"],
@ -16,14 +16,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_zhongdan:["cuiyan","huangfusong"], sp_zhongdan:["cuiyan","huangfusong"],
sp_star:["sp_xiahoushi","jsp_zhaoyun","huangjinleishi","sp_pangtong","sp_daqiao","sp_ganning","sp_xiahoudun","sp_lvmeng","sp_zhangfei","sp_liubei"], sp_star:["sp_xiahoushi","jsp_zhaoyun","huangjinleishi","sp_pangtong","sp_daqiao","sp_ganning","sp_xiahoudun","sp_lvmeng","sp_zhangfei","sp_liubei"],
sp_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'], sp_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'],
sp_guozhan:["shamoke","ganfuren","yuejin","hetaihou","dingfeng","re_panfeng","jianggan"], sp_guozhan:["zangba","shamoke","ganfuren","yuejin","hetaihou","dingfeng","re_panfeng","jianggan"],
sp_guozhan2:["mifuren","mateng","tianfeng","chendong","sp_dongzhuo","jiangfei","jiangqing","kongrong","bianfuren","liqueguosi","lvfan","cuimao","jiling","zangba","zhangren","zoushi"], sp_guozhan2:["mifuren","mateng","tianfeng","chendong","sp_dongzhuo","jiangfei","jiangqing","kongrong","bianfuren","liqueguosi","lvfan","cuimao","jiling","zhangren","zoushi"],
sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan"], sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou"],
sp_single:["hejin","hansui","niujin"], sp_single:["hejin","hansui","niujin"],
sp_others:["hanba"], sp_others:["hanba"],
}, },
}, },
characterFilter:{
chunyuqiong:function(mode){
return mode!='identity'&&mode!='guozhan';
},
sp_xuyou:function(mode){
return mode=='versus'&&['guandu','4v4','four'].contains(_status.mode);
},
},
character:{ character:{
sp_xuyou:['male','qun',3,['spshicai','spfushi']],
chunyuqiong:['male','qun',5,['cangchu','sushou','liangying']],
lvkuanglvxiang:['male','qun',4,['liehou','qigong']],
xingdaorong:['male','qun','4/6',['xuxie']], xingdaorong:['male','qun','4/6',['xuxie']],
liuzan:['male','wu',4,['refenyin','liji']], liuzan:['male','wu',4,['refenyin','liji']],
re_panfeng:['male','qun',4,['xinkuangfu']], re_panfeng:['male','qun',4,['xinkuangfu']],
@ -117,7 +128,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_zhangfei:['male','shu',4,['jie','dahe']], sp_zhangfei:['male','shu',4,['jie','dahe']],
jsp_guanyu:['male','wei',4,['new_rewusheng','danji']], jsp_guanyu:['male','wei',4,['new_rewusheng','danji']],
jsp_huangyueying:['female','qun',3,['jiqiao','linglong']], jsp_huangyueying:['female','qun',3,['jiqiao','linglong']],
sunluyu:['female','wu',3,['new_meibu','new_mumu']], re_sunluyu:['female','wu',3,['remeibu','remumu']],
hanba:['female','qun',4,['fentian','zhiri']], hanba:['female','qun',4,['fentian','zhiri']],
zumao:['male','wu',4,['yinbing','juedi']], zumao:['male','wu',4,['yinbing','juedi']],
wenpin:['male','wei',4,['zhenwei']], wenpin:['male','wei',4,['zhenwei']],
@ -170,7 +181,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
cuimao:['male','wei',3,['zhengbi','fengying']], cuimao:['male','wei',3,['zhengbi','fengying']],
jiling:['male','qun',4,['shuangren']], jiling:['male','qun',4,['shuangren']],
zangba:['male','wei',4,['hengjiang']], zangba:['male','wei',4,['rehengjiang']],
zhangren:['male','qun',4,['chuanxin','zfengshi']], zhangren:['male','qun',4,['chuanxin','zfengshi']],
zoushi:['female','qun',3,['zhuoshui','zqingcheng']], zoushi:['female','qun',3,['zhuoshui','zqingcheng']],
@ -188,6 +199,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//kaisa:["male","western",4,["zhengfu"]], //kaisa:["male","western",4,["zhengfu"]],
}, },
characterIntro:{ characterIntro:{
chunyuqiong:'淳于琼200年字仲简颍川治今河南禹州人。东汉时期官吏于汉灵帝中平五年188被任命为西园八校尉之一的右校尉与蹇硕、袁绍、鲍鸿、曹操、赵融、冯芳、夏牟同列。为袁绍大将与张郃、高览等人齐名。在官渡之战时镇守乌巢遭到曹操的偷袭而惨败自己也被曹操处斩。',
lvkuanglvxiang:'吕旷(生卒年不详),与吕翔同是袁绍属下,袁绍去世后,为袁尚守东平,后来投降曹操,并被封为列侯。在《三国演义》中,在曹操准备往南准备攻击前,两人跟著大将曹仁和将军李典准备要攻击刘备。但吕旷被赵云刺下马身亡,而吕翔也死于张飞矛下,可以算是出师未捷身先死',
caobuxing:'曹不兴亦名弗兴三国时著名画家。孙吴吴兴今浙江湖州生卒年不详。他在黄武年间222—229年享有很大的声誉。被称为“佛画之祖”。与东晋顾恺之、南朝宋陆探微、南朝梁张僧繇并称“六朝四大家”。又与赵达的算术、严武的弈棋、皇象的草书等号称“吴中八绝”。曹不兴善画龙、虎、马及人物有“落墨为蝇”等传奇故事其佛画成就对后世影响很大相传其所画龙头令谢赫叹服不已。画迹今已不存据《贞观公私画史》载作品有《青溪龙》、《赤盘龙》、《南海监牧进十种马图》、《夷事夷兽样》、《桃源图》等惜早已散佚。 但之后的著名画家卫协直接师承其法。', caobuxing:'曹不兴亦名弗兴三国时著名画家。孙吴吴兴今浙江湖州生卒年不详。他在黄武年间222—229年享有很大的声誉。被称为“佛画之祖”。与东晋顾恺之、南朝宋陆探微、南朝梁张僧繇并称“六朝四大家”。又与赵达的算术、严武的弈棋、皇象的草书等号称“吴中八绝”。曹不兴善画龙、虎、马及人物有“落墨为蝇”等传奇故事其佛画成就对后世影响很大相传其所画龙头令谢赫叹服不已。画迹今已不存据《贞观公私画史》载作品有《青溪龙》、《赤盘龙》、《南海监牧进十种马图》、《夷事夷兽样》、《桃源图》等惜早已散佚。 但之后的著名画家卫协直接师承其法。',
xingdaorong:'邢道荣是《三国演义》中虚构的人物,为零陵太守刘度手下武将,被评价有万夫不当之勇,于《三国演义》第五十二回登场,被赵云刺死。', xingdaorong:'邢道荣是《三国演义》中虚构的人物,为零陵太守刘度手下武将,被评价有万夫不当之勇,于《三国演义》第五十二回登场,被赵云刺死。',
gaolan:'高览生卒年不详一名高奂本属袁绍部将后官渡之战淳于琼被曹操击破与张郃一同投降曹操被封为偏将军东莱侯。《三国演义》里曾与许褚、徐晃大战不分胜负。201年刘备败走荆州时高览奉命追杀三合斩刘辟而后被冲阵而来的赵云刺死。', gaolan:'高览生卒年不详一名高奂本属袁绍部将后官渡之战淳于琼被曹操击破与张郃一同投降曹操被封为偏将军东莱侯。《三国演义》里曾与许褚、徐晃大战不分胜负。201年刘备败走荆州时高览奉命追杀三合斩刘辟而后被冲阵而来的赵云刺死。',
@ -516,6 +529,353 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
skill:{ skill:{
//吕旷吕翔和淳于琼和官渡哔哔机
spshicai:{
audio:2,
enable:'phaseUse',
filter:function(event,player){
return !player.storage.spshicai2||!player.getCards('h').contains(player.storage.spshicai2);
},
filterCard:true,
prompt:function(){
var str='弃置一张牌,然后获得';
if(get.itemtype(_status.pileTop)=='card') str+=get.translation(_status.pileTop);
else str+='牌堆顶的一张牌';
return str;
},
check:function(card){
var player=_status.event.player;
var cardx=_status.pileTop;
if(get.itemtype(cardx)!='card') return 0;
var val=player.getUseValue(cardx,null,true);
if(!val) return 0;
var val2=player.getUseValue(card,null,true);
return (val-val2)/Math.max(0.1,get.value(card));
},
content:function(){
var card=get.cards()[0];
player.storage.spshicai2=card;
player.gain(card,'draw');
game.log(player,'获得了牌堆顶的一张牌');
},
group:'spshicai_mark',
ai:{
order:1,
result:{player:1},
},
},
spshicai_mark:{
trigger:{player:'phaseUseBegin'},
silent:true,
firstDo:true,
content:function(){
player.addTempSkill('spshicai2','phaseUseEnd');
},
},
spshicai2:{
onremove:true,
mark:true,
intro:{
mark:function(dialog,content,player){
if(player!=game.me) return get.translation(player)+'观看牌堆中...';
if(get.itemtype(_status.pileTop)!='card') return '牌堆顶无牌';
dialog.add([_status.pileTop]);
},
},
},
spfushi:{
group:['zezhu','chenggong'],
derivation:['zezhu','chenggong'],
locked:true,
},
zezhu:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
var enemy=0;
var friend=0;
var zhu=0;
for(var i of game.players){
if(i.isEnemyOf(player)) enemy++;
else friend++;
if(i!=player&&i.isZhu) zhu++;
}
return zhu>0&&enemy<friend;
},
filterTarget:function(card,player,target){
return target!=player&&target.isZhu;
},
selectTarget:-1,
multiline:true,
multitarget:true,
content:function(){
'step 0'
event.targets.sortBySeat();
event.targets2=event.targets.slice(0);
'step 1'
var target=event.targets2.shift();
if(target.countGainableCards(player,'he')>0) player.gainPlayerCard(target,'he',true);
else player.draw();
if(event.targets2.length) event.redo();
'step 2'
if(player.countCards('he')>=targets.length){
player.chooseCard('he',true,'依次选择'+get.cnNumber(targets.length)+'张牌,分别交给'+get.translation(targets),targets.length).set('ai',function(card){
var target=_status.event.getParent().targets[ui.selected.cards.length];
var player=_status.event.player;
return get.attitude(player,target)*get.value(card,target);
});
}
else event.finish();
'step 3'
for(var i=0;i<targets.length;i++){
targets[i].gain(result.cards[i],player,'giveAuto');
}
},
ai:{
order:6,
result:{player:1},
},
},
chenggong:{
audio:2,
trigger:{global:'useCardToPlayered'},
filter:function(event,player){
if(!(event.isFirstTarget&&event.targets&&event.targets.length>1&&event.player.isAlive())) return false;
var enemy=0;
var friend=0;
for(var i of game.players){
if(i.isEnemyOf(player)) enemy++;
else friend++;
}
return enemy>friend;
},
check:function(event,player){
return get.attitude(player,event.player)>0;
},
logTarget:'player',
content:function(){
trigger.player.draw();
},
},
cangchu:{
trigger:{
global:'gameDrawAfter',
player:['damageEnd','enterGame'],
},
audio:2,
forced:true,
filter:function(event,player){
if(event.name!='damage') return true;
return event.nature=='fire'&&player.countMark('cangchu')>0;
},
content:function(){
if(trigger.name!='damage') player.addMark('cangchu',3);
else{
player.removeMark('cangchu',Math.min(trigger.num,player.countMark('cangchu')));
if(!player.hasMark('cangchu')) event.trigger('cangchuAwaken');
}
},
marktext:'粮',
intro:{
name2:'粮',
content:'mark',
},
ai:{
threaten:function(player,target){
return 1+target.countMark('cangchu')/2;
},
effect:{
target:function(card,player,target,current){
if(target.hasMark('cangchu')){
if(card.name=='sha'){
if(lib.skill.global.contains('huoshaowuchao')||card.nature=='fire'||player.hasSkill('zhuque_skill')) return 2;
}
if(get.tag(card,'fireDamage')&&current<0) return 2;
}
}
},
},
},
sushou:{
trigger:{player:'phaseDiscardBegin'},
frequent:true,
audio:2,
content:function(){
'step 0'
player.draw(1+player.countMark('cangchu'));
'step 1'
var num=Math.min(player.countCards('h'),game.countPlayer(function(target){
return target!=player&&target.isFriendOf(player);
}));
if(num){
player.chooseCardTarget({
prompt:'是否将任意张手牌交给其他己方角色?',
prompt2:'操作提示:先按顺序选中所有要给出的手牌,然后再按顺序选择等量的目标角色',
selectCard:[1,num],
selectTarget:function(){
return ui.selected.cards.length;
},
filterTarget:function(card,player,target){
return target!=player&&target.isFriendOf(player);
},
complexSelect:true,
ai1:function(card){
if(card.name=='shan') return 1;
return Math.random();
},
ai2:function(target){
return 5-Math.max(4,target.countCards('h'));
},
});
}
else event.finish();
'step 2'
if(result.bool){
while(result.cards.length){
var target=result.targets.shift();
var card=result.cards.shift();
target.gain(card,player);
player.$giveAuto(card,target);
}
event.next.sort(function(a,b){
return lib.sort.seat(a.player,b.player);
});
}
else event.finish();
'step 3'
game.delay();
},
},
liangying:{
trigger:{
global:'phaseDrawBegin2',
player:'cangchuAwaken',
},
forced:true,
audio:1,
logTarget:function(event){
if(event.name=='phaseDraw') return event.player;
return game.filterPlayer(function(current){
return current.isEnemyOf(player);
});
},
filter:function(event,player){
if(event.name=='cangchu') return true;
return player.hasMark('cangchu')&&!event.numFixed&&event.player.isFriendOf(player);
},
content:function(){
'step 0'
if(trigger.name=='cangchu'){
player.loseMaxHp();
var list=game.filterPlayer(function(current){
return current.isEnemyOf(player);
});
if(list.length){
game.asyncDraw(list,2);
}
}
else{
trigger.num++;
event.finish();
}
'step 1'
game.delay();
},
},
liehou:{
enable:'phaseUse',
usable:1,
audio:2,
filterTarget:function(card,player,target){
return player.inRange(target)&&target.countCards('h');
},
content:function(){
'step 0'
target.chooseCard('h',true,'交给'+get.translation(player)+'一张牌');
'step 1'
if(result.bool){
player.gain(result.cards,target,'giveAuto');
}
else event.finish();
'step 2'
if(player.countCards('h')&&game.hasPlayer(function(current){
return current!=target&&player.inRange(target);
})){
player.chooseCardTarget({
position:'h',
filterCard:true,
filterTarget:function(card,player,target){
return target!=_status.event.getParent().target&&player.inRange(target);
},
forced:true,
prompt:'将一张手牌交给一名攻击范围内的其他角色',
ai1:function(card){
var player=_status.event.player;
if(get.name(card)=='du') return 20;
if(game.hasPlayer(function(current){
return current!=_status.event.getParent().target&&player.inRange(current)&&get.attitude(player,current)>0&&current.getUseValue(card)>player.getUseValue(card)&&current.getUseValue(card)>player.getUseValue(card);
})) return 12;
if(game.hasPlayer(function(current){
return current!=player&&get.attitude(player,current)>0;
})){
if(card.name=='wuxie') return 11;
if(card.name=='shan'&&player.countCards('h','shan')>1) return 9
}
return 6/Math.max(1,get.value(card));
},
ai2:function(target){
var player=_status.event.player;
var card=ui.selected.cards[0];
var att=get.attitude(player,target);
if(card.name=='du') return -6*att;
if(att>0){
if(get.position(card)=='h'&&target.getUseValue(card)>player.getUseValue(card)) return 4*att;
if(get.value(card,target)>get.value(card,player)) return 2*att;
return 1.2*att;
}
return -att*Math.min(4,target.countCards('he'))/6;
},
});
}
else event.finish();
'step 3'
if(result.bool) result.targets[0].gain(result.cards,player,'giveAuto')
},
ai:{
order:6,
result:{
target:-1,
},
},
},
qigong:{
trigger:{player:'shaMiss'},
direct:true,
audio:2,
filter:function(event,player){
return player.canUse('sha',event.target,false)&&(player.hasSha()||_status.connectMode&&player.countCards('h'));
},
content:function(){
"step 0"
player.chooseToUse(get.prompt('qigong'),function(card,player,event){
if(get.name(card)!='sha') return false;
return lib.filter.filterCard.apply(this,arguments);
},trigger.target,-1).set('addCount',false).logSkill='qigong';
},
group:'qigong_hit',
},
qigong_hit:{
trigger:{player:'useCard1'},
firstDo:true,
silent:true,
filter:function(event,player){
return event.getParent(2).name=='qigong';
},
content:function(){
trigger.directHit.addArray(game.players);
},
},
//说出吾名吓汝一跳 //说出吾名吓汝一跳
xuxie:{ xuxie:{
audio:2, audio:2,
@ -525,7 +885,32 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.distance(player,current)<=1; return get.distance(player,current)<=1;
}).sortBySeat(); }).sortBySeat();
}, },
check:function(){return false}, check:function(event,player){
if(player.isHealthy()) return false;
var list=game.filterPlayer(function(current){
return get.distance(player,current)<=1;
});
var draw=0;
var discard=0;
var num=2/player.getDamagedHp();
while(list.length){
var target=list.shift();
var att=get.attitude(player,target);
if(att>0){
draw++;
if(target.countDiscardableCards(player,'he')>0) discard--;
}
if(att==0){
draw--;
if(target.countDiscardableCards(player,'he')>0) discard--;
}
if(att<0){
draw--;
if(target.countDiscardableCards(player,'he')>0) discard++;
}
}
return draw>=num||discard>=num;
},
content:function(){ content:function(){
'step 0' 'step 0'
player.loseMaxHp(); player.loseMaxHp();
@ -539,7 +924,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.chooseControl().set('choiceList',[ player.chooseControl().set('choiceList',[
'弃置'+get.translation(targets)+'的各一张牌', '弃置'+get.translation(targets)+'的各一张牌',
'令'+get.translation(targets)+'各摸一张牌', '令'+get.translation(targets)+'各摸一张牌',
]); ]).set('ai',function(){
var player=_status.event.player;
var list=_status.event.getParent().targets.slice(0);
var draw=0;
var discard=0;
while(list.length){
var target=list.shift();
var att=get.attitude(player,target);
if(att>0){
draw++;
if(target.countDiscardableCards(player,'he')>0) discard--;
}
if(att<0){
draw--;
if(target.countDiscardableCards(player,'he')>0) discard++;
}
}
if(draw>discard) return 1;
return 0;
});
} }
'step 2' 'step 2'
event.index=result.index; event.index=result.index;
@ -931,9 +1335,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mark:true, mark:true,
intro:{content:'本回合内不能使用或打出牌'}, intro:{content:'本回合内不能使用或打出牌'},
mod:{ mod:{
cardEnabled:function(){return false}, cardEnabled2:function (card){
cardRespondable:function(){return false}, if(get.position(card)=='h') return false;
cardSavable:function(){return false}, },
}, },
}, },
gangzhi:{ gangzhi:{
@ -1329,7 +1733,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var map=trigger.customArgs; var map=trigger.customArgs;
var id=trigger.target.playerid; var id=trigger.target.playerid;
if(!map[id]) map[id]={}; if(!map[id]) map[id]={};
map[id].baseDamage=trigger.target.hp; if(typeof map[id].extraDamage!='number') map[id].extraDamage=0;
map[id].extraDamage+=trigger.target.hp-1;
} }
else if(result.bool===false) player.loseHp(); else if(result.bool===false) player.loseHp();
}, },
@ -2250,7 +2655,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.expandSkills(list2); game.expandSkills(list2);
for(var k=0;k<list2.length;k++){ for(var k=0;k<list2.length;k++){
var info=lib.skill[list2[k]]; var info=lib.skill[list2[k]];
if(!info||!info.trigger||!info.trigger.player||info.silent) continue; if(!info||!info.trigger||!info.trigger.player||info.silent||info.limited||info.juexingji) continue;
if(info.trigger.player==name2||Array.isArray(info.trigger.player)&&info.trigger.player.contains(name2)){ if(info.trigger.player==name2||Array.isArray(info.trigger.player)&&info.trigger.player.contains(name2)){
list.add(name); list.add(name);
if(!map[name]) map[name]=[]; if(!map[name]) map[name]=[];
@ -2316,7 +2721,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.expandSkills(list2); game.expandSkills(list2);
for(var k=0;k<list2.length;k++){ for(var k=0;k<list2.length;k++){
var info=lib.skill[list2[k]]; var info=lib.skill[list2[k]];
if(!info||!info.enable) continue; if(!info||!info.enable||info.viewAs||info.limited||info.juexingji) continue;
if(info.enable=='phaseUse'||Array.isArray(info.enable)&&info.enable.contains('phaseUse')){ if(info.enable=='phaseUse'||Array.isArray(info.enable)&&info.enable.contains('phaseUse')){
list.add(name); list.add(name);
if(!map[name]) map[name]=[]; if(!map[name]) map[name]=[];
@ -2343,10 +2748,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.draw(); player.draw();
return; return;
} }
player.addTempSkill(result.control,'chooseToUseEnd'); player.storage.pingjian.add(result.control);
player.addTempSkill(result.control,'phaseUseEnd');
player.addTempSkill('pingjian_temp','phaseUseEnd');
player.storage.pingjian_temp=result.control;
event.getParent(2).goto(0); event.getParent(2).goto(0);
}, },
ai:{order:1,result:{player:1}}, ai:{order:10,result:{player:1}},
},
pingjian_temp:{
onremove:true,
trigger:{player:'useSkillAfter'},
silent:true,
firstDo:true,
filter:function(event,player){
return event.skill==player.storage.pingjian_temp;
},
content:function(){
player.removeSkill(trigger.skill);
player.removeSkill('pingjian_temp');
},
}, },
//蒲元 //蒲元
pytianjiang:{ pytianjiang:{
@ -3393,7 +3814,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.popup(trigger.card.name,trigger.name=='useCard'?'metal':'wood'); player.popup(trigger.card.name,trigger.name=='useCard'?'metal':'wood');
'step 1' 'step 1'
var random=0.5+player.countCards('e')*0.1; var random=0.5+player.countCards('e')*0.1;
if(get.isLuckyStar(player)||event.card.name=='wuxie') random=1; if(get.isLuckyStar(player)||trigger.card.name=='wuxie') random=1;
if(random>=Math.random()){ if(random>=Math.random()){
player.popup('洗具'); player.popup('洗具');
} }
@ -5040,6 +5461,123 @@ game.import('character',function(lib,game,ui,get,ai,_status){
cardEnabled:function (card){if(card.name=='sha') return false}, cardEnabled:function (card){if(card.name=='sha') return false},
}, },
}, },
remeibu:{
audio:"meibu",
trigger:{
global:"phaseUseBegin",
},
filter:function (event,player){
return event.player!=player&&event.player.isAlive()&&event.player.inRange(player)&&player.countCards('he')>0;
},
direct:true,
derivation:["rezhixi"],
checkx:function (event,player){
if(get.attitude(player,event.player)>=0) return false;
var e2=player.getEquip(2);
if(e2){
if(e2.name=='tengjia') return true;
if(e2.name=='bagua') return true;
}
return event.player.countCards('h')>event.player.hp;
},
content:function (){
"step 0"
var check=lib.skill.new_meibu.checkx(trigger,player);
player.chooseToDiscard(get.prompt2('remeibu',trigger.player),'he').set('ai',function(card){
if(_status.event.check) return 6-get.value(card);
return 0;
}).set('check',check).set('logSkill',['remeibu',trigger.player]);
"step 1"
if(result.bool){
var target=trigger.player;
var card=result.cards[0];
player.line(target,'green');
target.addTempSkill('rezhixi','phaseUseEnd');
}
},
ai:{
expose:0.2,
},
},
remumu:{
audio:"mumu",
trigger:{
player:"phaseUseBegin",
},
direct:true,
content:function (){
'step 0'
player.chooseTarget(get.prompt('remumu'),'弃置一名角色装备区内的一张牌,或者获得一名角色装备区内的防具牌',function(card,player,target){
if(target==player) return target.getEquip(2)!=undefined;
return target.countCards('e')>0;
}).set('ai',function(target){
var player=_status.event.player;
var att=get.attitude(player,target)
if(target.getEquip(2)&&player.isEmpty(2)){
return -2*att;
}
return -att;
});
'step 1'
if(result.bool&&result.targets&&result.targets.length){
event.target=result.targets[0];
player.logSkill('remumu',event.target);
player.line(event.target,'green');
var e=event.target.getEquip(2);
event.e=e;
if(target==player) event.choice='获得一张防具牌';
else if(e){
player.chooseControl('弃置一张装备牌','获得一张防具牌').set('ai',function(){
if(_status.event.player.getEquip(2)){
return '弃置一张装备牌';
}
return '获得一张防具牌';
});
}
else{
event.choice='弃置一张装备牌';
}
}else event.finish();
'step 2'
var choice=event.choice||result.control;
if(choice=='弃置一张装备牌'){
player.discardPlayerCard(event.target,'e',true);
player.addTempSkill('remumu3');
}
else{
if(event.e){
player.gain(event.e,event.target,'give');
player.addTempSkill('remumu2')
}
}
},
},
remumu2:{
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha') return num-1;
},
},
},
remumu3:{
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha') return num+1;
},
},
},
rezhixi:{
trigger:{
player:"useCard",
},
forced:true,
filter:function(event,player){
return (event.card.name=='sha'||get.type(event.card,'trick')=='trick')&&player.countCards('h')>0;
},
content:function(){
player.chooseToDiscard('h',true);
},
},
qingzhong:{ qingzhong:{
audio:2, audio:2,
}, },
@ -6677,6 +7215,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
hengjiang:{ hengjiang:{
audio:2,
trigger:{player:'damageEnd'}, trigger:{player:'damageEnd'},
check:function(event,player){ check:function(event,player){
return get.attitude(player,_status.currentPhase)<0||!_status.currentPhase.needsToDiscard(2); return get.attitude(player,_status.currentPhase)<0||!_status.currentPhase.needsToDiscard(2);
@ -6684,7 +7223,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event){ filter:function(event){
return _status.currentPhase&&_status.currentPhase.isIn()&&event.num>0; return _status.currentPhase&&_status.currentPhase.isIn()&&event.num>0;
}, },
//logTarget:'source', logTarget:function(){
return _status.currentPhase;
},
content:function(){ content:function(){
var source=_status.currentPhase; var source=_status.currentPhase;
if(source.hasSkill('hengjiang2')){ if(source.hasSkill('hengjiang2')){
@ -6704,6 +7245,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
hengjiang2:{ hengjiang2:{
mark:true, mark:true,
charlotte:true,
intro:{ intro:{
content:'手牌上限-#' content:'手牌上限-#'
}, },
@ -6738,6 +7280,92 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.asyncDraw(player.storage.hengjiang3); game.asyncDraw(player.storage.hengjiang3);
} }
}, },
rehengjiang:{
audio:'hengjiang',
trigger:{player:'damageEnd'},
check:function(event,player){
return get.attitude(player,_status.currentPhase)<0||!_status.currentPhase.needsToDiscard(2);
},
filter:function(event){
return _status.currentPhase&&_status.currentPhase.isIn()&&event.num>0;
},
logTarget:function(){
return _status.currentPhase;
},
content:function(){
"step 0"
event.count=trigger.num;
"step 1"
event.count--;
var source=_status.currentPhase;
if(source.hasSkill('rehengjiang2')){
source.storage.rehengjiang2++;
source.storage.rehengjiang3.push(player);
source.storage.rehengjiang3.sortBySeat(source);
source.updateMarks();
}
else{
source.storage.rehengjiang3=[player];
source.storage.rehengjiang2=1;
source.addTempSkill('rehengjiang2');
}
"step 2"
if(event.count){
player.chooseBool(get.prompt2('rehengjiang',_status.currentPhase)).set('ai',function(){
return lib.skill.rehengjiang.check(_status.event.getTrigger(),_status.event.player);
})
}
else event.finish();
"step 3"
if(result.bool){
player.logSkill('rehengjiang',_status.currentPhase);
event.goto(1);
}
},
ai:{
maixie_defend:true,
}
},
rehengjiang2:{
mark:true,
charlotte:true,
intro:{
content:'手牌上限-#'
},
mod:{
maxHandcard:function(player,num){
return num-player.storage.rehengjiang2;
}
},
onremove:function(player){
delete player.storage.rehengjiang2;
delete player.storage.rehengjiang3;
},
trigger:{player:'phaseDiscardEnd'},
filter:function(event,player){
if(event.cards&&event.cards.length) return false;
var players=player.storage.rehengjiang3;
for(var i=0;i<players.length;i++){
if(players[i].isIn()) return true;
}
return false;
},
forced:true,
popup:false,
content:function(){
var players=player.storage.rehengjiang3;
var list=[];
for(var i=0;i<players.length;i++){
if(!list.contains(players[i])&&players[i].isIn()){
list.push(players[i])
players[i].logSkill('rehengjiang',player);
}
}
game.asyncDraw(list,function(target){
return players.numOf(target);
});
}
},
shuangren:{ shuangren:{
trigger:{player:'phaseUseBegin'}, trigger:{player:'phaseUseBegin'},
direct:true, direct:true,
@ -10775,10 +11403,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.target.lose(result.links,ui.special,'toStorage'); event.target.lose(result.links,ui.special,'toStorage');
player.storage.fentian=player.storage.fentian.concat(result.links); player.storage.fentian=player.storage.fentian.concat(result.links);
player.syncStorage('fentian'); player.syncStorage('fentian');
setTimeout(function(){
player.markSkill('fentian');
},700);
} }
'step 3'
game.delayx();
}, },
mod:{ mod:{
attackFrom:function(from,to,distance){ attackFrom:function(from,to,distance){
@ -11733,19 +12360,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(typeof player.storage.rebiluan!='number') player.storage.rebiluan=0; if(typeof player.storage.rebiluan!='number') player.storage.rebiluan=0;
}, },
checkx:function(player){ checkx:function(player){
var ng=[]; var ng=Math.min(4,game.players.length);
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i].group!='unknown'){
ng.add(players[i].group);
}
}
ng=ng.length;
if(ng<2) return false; if(ng<2) return false;
var nai=0; var nai=0;
for(var i=0;i<players.length;i++){ for(var i=0;i<game.players.length;i++){
if(players[i]!=player){ if(game.players[i]!=player){
var dist=get.distance(players[i],player,'attack'); var dist=get.distance(game.players[i],player,'attack');
if(dist<=1&&dist+ng>1){ if(dist<=1&&dist+ng>1){
nai++; nai++;
} }
@ -11767,15 +12387,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}); });
"step 1" "step 1"
if(result.bool){ if(result.bool){
var ng=[]; var ng=Math.min(4,game.players.length);
var players=game.filterPlayer(); player.$damagepop(ng,'unknownx');
for(var i=0;i<players.length;i++){ player.storage.rebiluan+=ng;
if(players[i].group!='unknown'){
ng.add(players[i].group);
}
}
player.$damagepop(ng.length,'unknownx');
player.storage.rebiluan+=ng.length;
player.markSkill('rebiluan'); player.markSkill('rebiluan');
game.addVideo('storage',player,['rebiluan',player.storage.rebiluan]); game.addVideo('storage',player,['rebiluan',player.storage.rebiluan]);
} }
@ -17701,7 +18315,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lifeng:'李丰', lifeng:'李丰',
jsp_guanyu:'SP关羽', jsp_guanyu:'SP关羽',
zhuling:'朱灵', zhuling:'朱灵',
sunluyu:'孙鲁育', sunluyu:'旧孙鲁育',
re_sunluyu:'孙鲁育',
hanba:'旱魃', hanba:'旱魃',
panfeng:'旧潘凤', panfeng:'旧潘凤',
gz_panfeng:'潘凤', gz_panfeng:'潘凤',
@ -17911,6 +18526,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"new_zhixi_info":"锁定技出牌阶段你至多可使用X张牌你使用了锦囊牌后不能再使用牌X为你的体力值。", "new_zhixi_info":"锁定技出牌阶段你至多可使用X张牌你使用了锦囊牌后不能再使用牌X为你的体力值。",
"new_mumu2":"穆穆", "new_mumu2":"穆穆",
"new_mumu2_info":"锁定技,你不能使用【杀】。", "new_mumu2_info":"锁定技,你不能使用【杀】。",
remeibu:'魅步',
remeibu_info:'其他角色的出牌阶段开始时,若你在其攻击范围内,你可以弃置一张牌,令该角色于本阶段内拥有〖止息〗。',
rezhixi:'止息',
rezhixi_info:'锁定技,当你使用【杀】或普通锦囊牌时,你弃置一张手牌。',
remumu:'穆穆',
remumu_info:'出牌阶段开始时你可以选择一项1.弃置一名其他角色装备区里的一张牌,然后你本回合可使用【杀】的次数+12.获得一名角色装备区里的一张防具牌,然后你本回合可使用【杀】的次数-1。',
"new_xingwu":"星舞", "new_xingwu":"星舞",
"new_xingwu_info":"弃牌阶段开始时你可以将一张手牌置于武将牌上称之为「舞」。然后若你的「舞」中包含三种花色则你须移去三张花色不同的「舞」并选择一名角色该角色受到2点伤害若为女性则改为1点并弃置其装备区的所有牌。", "new_xingwu_info":"弃牌阶段开始时你可以将一张手牌置于武将牌上称之为「舞」。然后若你的「舞」中包含三种花色则你须移去三张花色不同的「舞」并选择一名角色该角色受到2点伤害若为女性则改为1点并弃置其装备区的所有牌。",
"new_luoyan":"落雁", "new_luoyan":"落雁",
@ -18046,6 +18667,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
hengjiang:'横江', hengjiang:'横江',
hengjiang2:'横江', hengjiang2:'横江',
hengjiang_info:'当你受到1点伤害后你可以令当前回合角色本回合的手牌上限-1。然后若其弃牌阶段内没有弃牌则你摸一张牌。', hengjiang_info:'当你受到1点伤害后你可以令当前回合角色本回合的手牌上限-1。然后若其弃牌阶段内没有弃牌则你摸一张牌。',
rehengjiang:'横江',
rehengjiang2:'横江',
rehengjiang_info:'当你受到1点伤害后你可以令当前回合角色本回合的手牌上限-1。然后若其弃牌阶段内没有弃牌则你摸X张牌X为你本回合内对其发动过〖横江〗的次数。',
shuangren:'双刃', shuangren:'双刃',
shuangren_info:'出牌阶段开始时,你可以与一名角色拼点。若你赢,你视为对任意一名角色使用一张【杀】(不计入出牌阶段的次数限制);若你没赢,你结束出牌阶段。', shuangren_info:'出牌阶段开始时,你可以与一名角色拼点。若你赢,你视为对任意一名角色使用一张【杀】(不计入出牌阶段的次数限制);若你没赢,你结束出牌阶段。',
shuangren_info_guozhan:'出牌阶段开始时,你可以与一名角色拼点。若你赢,你视为对其或与其势力相同的另一名角色使用一张【杀】(不计入出牌阶段的次数限制);若你没赢,你结束出牌阶段。', shuangren_info_guozhan:'出牌阶段开始时,你可以与一名角色拼点。若你赢,你视为对其或与其势力相同的另一名角色使用一张【杀】(不计入出牌阶段的次数限制);若你没赢,你结束出牌阶段。',
@ -18237,7 +18861,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lixia:'礼下', lixia:'礼下',
lixia_info:'锁定技,其他角色的结束阶段开始时,若你不在其攻击范围内,你摸一张牌或令其摸一张牌。本局内其他角色计算与你的距离时-1。', lixia_info:'锁定技,其他角色的结束阶段开始时,若你不在其攻击范围内,你摸一张牌或令其摸一张牌。本局内其他角色计算与你的距离时-1。',
rebiluan:'避乱', rebiluan:'避乱',
rebiluan_info:'出牌阶段开始时若有与你距离不大于1的其他角色你可以令自己与本阶段内不能使用【杀】。若如此做本局内其他角色计算与你的距离时+X。X为势力数', rebiluan_info:'结束阶段开始时若有与你距离不大于1的其他角色你可以弃置一张牌。若如此做本局内其他角色计算与你的距离时+X。X为场上人数且至多为4',
relixia:'礼下', relixia:'礼下',
relixia_info:'锁定技,其他角色的结束阶段开始时,若你不在其攻击范围内,你摸一张牌或令其摸两张牌。本局内其他角色计算与你的距离时-1。', relixia_info:'锁定技,其他角色的结束阶段开始时,若你不在其攻击范围内,你摸一张牌或令其摸两张牌。本局内其他角色计算与你的距离时-1。',
yishe:'义舍', yishe:'义舍',
@ -18512,7 +19136,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gaolan:'高览', gaolan:'高览',
xiying:'袭营', xiying:'袭营',
xiying2:'袭营', xiying2:'袭营',
xiying_info:'出牌阶段开始时,你可以弃置一张牌,然后令所有其他角色依次选择一项:弃置一张牌,或本回合内不能使用或打出牌。', xiying_info:'出牌阶段开始时,你可以弃置一张牌,然后令所有其他角色依次选择一项:弃置一张牌,或本回合内不能使用或打出牌。',
re_panfeng:'潘凤', re_panfeng:'潘凤',
xinkuangfu:'狂斧', xinkuangfu:'狂斧',
xinkuangfu_info:'出牌阶段限一次你可选择1弃置装备区里的一张牌你使用无对应实体牌的普【杀】。若此【杀】造成伤害你摸两张牌。2弃置一名其他角色装备区里的一张牌你使用无对应实体牌的普【杀】。若此【杀】未造成伤害你弃置两张牌。', xinkuangfu_info:'出牌阶段限一次你可选择1弃置装备区里的一张牌你使用无对应实体牌的普【杀】。若此【杀】造成伤害你摸两张牌。2弃置一名其他角色装备区里的一张牌你使用无对应实体牌的普【杀】。若此【杀】未造成伤害你弃置两张牌。',
@ -18530,6 +19154,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xingdaorong:'邢道荣', xingdaorong:'邢道荣',
xuxie:'虚猲', xuxie:'虚猲',
xuxie_info:'出牌阶段开始时你可以减1点体力上限并选择所有与你距离为1的角色弃置这些角色的各一张牌或令这些角色各摸一张牌。出牌阶段结束时若你的体力上限为全场最少则你加1点体力上限。', xuxie_info:'出牌阶段开始时你可以减1点体力上限并选择所有与你距离为1的角色弃置这些角色的各一张牌或令这些角色各摸一张牌。出牌阶段结束时若你的体力上限为全场最少则你加1点体力上限。',
lvkuanglvxiang:'吕旷吕翔',
liehou:'列侯',
liehou_info:'出牌阶段限一次,你可以令一名攻击范围内的角色交给你一张手牌,然后你将一张手牌交给攻击范围内的另一名角色。',
qigong:'齐攻',
qigong_info:'当你使用的【杀】被【闪】抵消之后,你可以再对目标角色使用一张【杀】(不可被响应)。',
chunyuqiong:'淳于琼',
sushou:'宿守',
sushou_info:'弃牌阶段开始时你可以摸X+1张牌X为“粮”数然后可以交给任意名友方角色各一张牌。',
cangchu:'仓储',
cangchu_info:'锁定技游戏开始时你获得3枚“粮”标记当你受到1点火焰伤害后你失去一枚“粮”标记。',
liangying:'粮营',
liangying_info:'锁定技,若你有“粮”标记,则友方角色摸牌阶段摸牌数+1当你失去所有“粮”标记后你减1点体力上限然后令敌方角色各摸两张牌。',
sp_xuyou:'SP许攸',
spshicai:'恃才',
spshicai2:'恃才',
spshicai_info:'出牌阶段,牌堆顶的一张牌对你可见。你可以弃置一张牌,然后获得牌堆顶的一张牌,且不能再发动〖恃才〗直到此牌离开你的手牌区。',
spfushi:'附势',
spfushi_info:'锁定技,若己方存活角色数:大于敌方,你视为拥有〖择主〗;小于敌方,你视为拥有〖逞功〗。',
zezhu:'择主',
zezhu_info:'出牌阶段限一次,你可以获得双方主帅的各一张牌(若无牌则改为你摸一张牌),然后交给双方主帅各一张牌。',
chenggong:'逞功',
chenggong_info:'当有角色使用牌指定目标后若此牌对目标数大于1则你可令使用者摸一张牌。',
sp_default:"常规", sp_default:"常规",
sp_whlw:"文和乱武", sp_whlw:"文和乱武",

View File

@ -52,9 +52,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target.chooseToUse({ target.chooseToUse({
prompt:'请使用得到的一张牌,或者受到来自'+get.translation(player)+'的一点伤害', prompt:'请使用得到的一张牌,或者受到来自'+get.translation(player)+'的一点伤害',
filterCard:function(card,player,event){ filterCard:function(card,player,event){
if(!cards.contains(card)) return false; var cards=_status.event.cards;
if(!cards||get.itemtype(card)!='card'||!cards.contains(card)) return false;
return lib.filter.filterCard(card,player,event); return lib.filter.filterCard(card,player,event);
}, },
cards:event.cards,
}); });
'step 2' 'step 2'
if(result.bool){ if(result.bool){

View File

@ -8163,20 +8163,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'phaseUse', enable:'phaseUse',
usable:1, usable:1,
selectCard:function(){ selectCard:function(){
return [Math.max(1,ui.selected.targets.length),game.countPlayer(function(current){ var player=_status.event.player;
return current.isMaxHp(); return [Math.max(1,ui.selected.targets.length),game.countPlayer(function(target){
return target!=player&&!game.hasPlayer(function(current){
return current!=player&&current.hp>target.hp
});
})]; })];
}, },
selectTarget:function(){ selectTarget:function(){
return ui.selected.cards.length; return ui.selected.cards.length;
}, },
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
return target.isMaxHp(); return target!=player&&!game.hasPlayer(function(current){
return current!=player&&current.hp>target.hp
});
}, },
check:function(card){ check:function(card){
var player=_status.event.player; var player=_status.event.player;
if(game.countPlayer(function(current){ if(game.countPlayer(function(target){
return current.isMaxHp()&&get.effect(current,'sanyao',player,player)>0; return target!=player&&!game.hasPlayer(function(current){
return current!=player&&current.hp>target.hp
})&&get.effect(target,'sanyao',player,player)>0;
})<=ui.selected.cards.length) return 0; })<=ui.selected.cards.length) return 0;
return 7-get.value(card); return 7-get.value(card);
}, },
@ -8759,7 +8766,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.chooseTarget(get.prompt2('rechanhui'),function(card,player,target){ player.chooseTarget(get.prompt2('rechanhui'),function(card,player,target){
if(player==target) return false; if(player==target) return false;
var trigger=_status.event; var trigger=_status.event;
return player.canUse(trigger.card,target)&&trigger.targets.contains(target)==false; return player.canUse(trigger.card,target,false)&&trigger.targets.contains(target)==false;
}).set('ai',function(target){ }).set('ai',function(target){
var trigger=_status.event.getTrigger(); var trigger=_status.event.getTrigger();
var player=_status.event.player; var player=_status.event.player;
@ -12071,7 +12078,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
chanhui:'谮毁', chanhui:'谮毁',
chanhui_info:'出牌阶段限一次,当你使用【杀】或黑色普通锦囊牌指定唯一目标时,你可令可以成为此牌目标的另一名其他角色选择一项:交给你一张牌并成为此牌的使用者;或成为此牌的额外目标。', chanhui_info:'出牌阶段限一次,当你使用【杀】或黑色普通锦囊牌指定唯一目标时,你可令可以成为此牌目标的另一名其他角色选择一项:交给你一张牌并成为此牌的使用者;或成为此牌的额外目标。',
rechanhui:'谮毁', rechanhui:'谮毁',
rechanhui_info:'出牌阶段,当你使用【杀】或黑色普通锦囊牌指定唯一目标时,你可令可以成为此牌目标的另一名其他角色选择一项:交给你一张牌并成为此牌的使用者;或成为此牌的额外目标且你本回合内不能再次发动〖谮毁〗。', rechanhui_info:'出牌阶段,当你使用【杀】或黑色普通锦囊牌指定唯一目标时,你可令可以成为此牌目标(无距离限制)的另一名其他角色选择一项:交给你一张牌并成为此牌的使用者;或成为此牌的额外目标且你本回合内不能再次发动〖谮毁〗。',
jiaojin:'骄矜', jiaojin:'骄矜',
jiaojin_info:'当你受到男性角色造成的伤害时,你可以弃置一张装备牌,令此伤害-1。', jiaojin_info:'当你受到男性角色造成的伤害时,你可以弃置一张装备牌,令此伤害-1。',
rejiaojin:'骄矜', rejiaojin:'骄矜',
@ -12192,7 +12199,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhiman_info:'当你对一名其他角色造成伤害时,你可以防止此伤害,然后获得其装备区或判定区的一张牌。', zhiman_info:'当你对一名其他角色造成伤害时,你可以防止此伤害,然后获得其装备区或判定区的一张牌。',
sanyao_info:'出牌阶段限一次,你可以弃置一张牌并指定一名体力值最多(或之一)的角色你对其造成1点伤害。', sanyao_info:'出牌阶段限一次,你可以弃置一张牌并指定一名体力值最多(或之一)的角色你对其造成1点伤害。',
rezhiman_info:'当你对一名其他角色造成伤害时,你可以防止此伤害,然后获得其区域内的一张牌。', rezhiman_info:'当你对一名其他角色造成伤害时,你可以防止此伤害,然后获得其区域内的一张牌。',
resanyao_info:'出牌阶段限一次,你可以弃置任意张牌并指定等量体力值最多(或之一)的角色。你对这些角色依次造成1点伤害。', resanyao_info:'出牌阶段限一次,你可以弃置任意张牌并指定等量除你外体力值最多(或之一)的其他角色。你对这些角色依次造成1点伤害。',
paiyi_info:'出牌阶段限一次你可以移去一张“权”并选择一名角色令其摸两张牌然后若其手牌数大于你你对其造成1伤害。', paiyi_info:'出牌阶段限一次你可以移去一张“权”并选择一名角色令其摸两张牌然后若其手牌数大于你你对其造成1伤害。',
zili_info:'觉醒技准备阶段开始时若“权”的数量不小于3你减1点体力上限然后选择一项1、回复1点体力2、摸两张牌。然后你获得技能“排异”。', zili_info:'觉醒技准备阶段开始时若“权”的数量不小于3你减1点体力上限然后选择一项1、回复1点体力2、摸两张牌。然后你获得技能“排异”。',
quanji_info:'当你受到1点伤害后你可以摸一张牌然后将一张手牌置于武将牌上称为“权”你的手牌上限+XX为“权”的数量。', quanji_info:'当你受到1点伤害后你可以摸一张牌然后将一张手牌置于武将牌上称为“权”你的手牌上限+XX为“权”的数量。',

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[ window.noname_asset_list=[
'v1.9.100.4', 'v1.9.100.4.1',
'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3', 'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3', 'audio/background/aozhan_rewrite.mp3',
@ -575,6 +575,10 @@ window.noname_asset_list=[
'audio/die/zhengxuan.mp3', 'audio/die/zhengxuan.mp3',
'audio/die/ol_sunjian.mp3', 'audio/die/ol_sunjian.mp3',
'audio/die/re_taishici.mp3', 'audio/die/re_taishici.mp3',
'audio/die/chunyuqiong.mp3',
'audio/die/sp_xuyou.mp3',
'audio/die/xingdaorong.mp3',
'audio/die/yl_yuanshu.mp3',
'audio/skill/anguo1.mp3', 'audio/skill/anguo1.mp3',
'audio/skill/anguo2.mp3', 'audio/skill/anguo2.mp3',
@ -2550,6 +2554,21 @@ window.noname_asset_list=[
'audio/skill/zhanshen2.mp3', 'audio/skill/zhanshen2.mp3',
'audio/skill/zhongyi1.mp3', 'audio/skill/zhongyi1.mp3',
'audio/skill/zhongyi2.mp3', 'audio/skill/zhongyi2.mp3',
'audio/skill/cangchu1.mp3',
'audio/skill/cangchu2.mp3',
'audio/skill/chenggong1.mp3',
'audio/skill/chenggong2.mp3',
'audio/skill/drlt_weidi1.mp3',
'audio/skill/drlt_weidi2.mp3',
'audio/skill/drlt_yongsi1.mp3',
'audio/skill/drlt_yongsi2.mp3',
'audio/skill/liangying1.mp3',
'audio/skill/spshicai1.mp3',
'audio/skill/spshicai2.mp3',
'audio/skill/sushou1.mp3',
'audio/skill/sushou2.mp3',
'audio/skill/xuxie1.mp3',
'audio/skill/xuxie2.mp3',
'font/huangcao.ttf', 'font/huangcao.ttf',
'font/shousha.ttf', 'font/shousha.ttf',
@ -3130,6 +3149,10 @@ window.noname_asset_list=[
'image/character/re_sunluban.jpg', 'image/character/re_sunluban.jpg',
'image/character/re_taishici.jpg', 'image/character/re_taishici.jpg',
'image/character/xushao.jpg', 'image/character/xushao.jpg',
'image/character/chunyuqiong.jpg',
'image/character/lvkuanglvxiang.jpg',
'image/character/re_sunluyu.jpg',
'image/character/sp_xuyou.jpg',
'image/character/baiwuchang.jpg', 'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg', 'image/character/baosanniang.jpg',
@ -4051,6 +4074,46 @@ window.noname_asset_list=[
'image/emotion/zhenji_emotion/18.gif', 'image/emotion/zhenji_emotion/18.gif',
'image/emotion/zhenji_emotion/19.gif', 'image/emotion/zhenji_emotion/19.gif',
'image/emotion/zhenji_emotion/20.gif', 'image/emotion/zhenji_emotion/20.gif',
'image/emotion/xiaosha_emotion/1.gif',
'image/emotion/xiaosha_emotion/2.gif',
'image/emotion/xiaosha_emotion/3.gif',
'image/emotion/xiaosha_emotion/4.gif',
'image/emotion/xiaosha_emotion/5.gif',
'image/emotion/xiaosha_emotion/6.gif',
'image/emotion/xiaosha_emotion/7.gif',
'image/emotion/xiaosha_emotion/8.gif',
'image/emotion/xiaosha_emotion/9.gif',
'image/emotion/xiaosha_emotion/10.gif',
'image/emotion/xiaosha_emotion/11.gif',
'image/emotion/xiaosha_emotion/12.gif',
'image/emotion/xiaosha_emotion/13.gif',
'image/emotion/xiaosha_emotion/14.gif',
'image/emotion/xiaosha_emotion/15.gif',
'image/emotion/xiaosha_emotion/16.gif',
'image/emotion/xiaosha_emotion/17.gif',
'image/emotion/xiaosha_emotion/18.gif',
'image/emotion/xiaosha_emotion/19.gif',
'image/emotion/xiaosha_emotion/20.gif',
'image/emotion/xiaotao_emotion/1.gif',
'image/emotion/xiaotao_emotion/2.gif',
'image/emotion/xiaotao_emotion/3.gif',
'image/emotion/xiaotao_emotion/4.gif',
'image/emotion/xiaotao_emotion/5.gif',
'image/emotion/xiaotao_emotion/6.gif',
'image/emotion/xiaotao_emotion/7.gif',
'image/emotion/xiaotao_emotion/8.gif',
'image/emotion/xiaotao_emotion/9.gif',
'image/emotion/xiaotao_emotion/10.gif',
'image/emotion/xiaotao_emotion/11.gif',
'image/emotion/xiaotao_emotion/12.gif',
'image/emotion/xiaotao_emotion/13.gif',
'image/emotion/xiaotao_emotion/14.gif',
'image/emotion/xiaotao_emotion/15.gif',
'image/emotion/xiaotao_emotion/16.gif',
'image/emotion/xiaotao_emotion/17.gif',
'image/emotion/xiaotao_emotion/18.gif',
'image/emotion/xiaotao_emotion/19.gif',
'image/emotion/xiaotao_emotion/20.gif',
'image/mode/boss/card/chixueqingfeng.png', 'image/mode/boss/card/chixueqingfeng.png',
'image/mode/boss/card/chiyanzhenhunqin.png', 'image/mode/boss/card/chiyanzhenhunqin.png',

View File

@ -57,6 +57,8 @@
shibing_emotion:15, shibing_emotion:15,
guojia_emotion:20, guojia_emotion:20,
zhenji_emotion:20, zhenji_emotion:20,
xiaosha_emotion:20,
xiaotao_emotion:20,
}, },
animate:{ animate:{
skill:{}, skill:{},
@ -5062,6 +5064,7 @@
'2v2':'2v2', '2v2':'2v2',
'3v3':'3v3', '3v3':'3v3',
'4v4':'4v4', '4v4':'4v4',
'guandu':'官渡',
}, },
frequent:true frequent:true
}, },
@ -5197,6 +5200,7 @@
four:'对抗', four:'对抗',
three:'统率', three:'统率',
two:'欢乐', two:'欢乐',
guandu:'官渡',
jiange:'剑阁', jiange:'剑阁',
siguo:'四国', siguo:'四国',
standard:'自由' standard:'自由'
@ -9789,6 +9793,8 @@
guojia_emotion:'郭嘉表情', guojia_emotion:'郭嘉表情',
zhenji_emotion:'甄姬表情', zhenji_emotion:'甄姬表情',
shibing_emotion:'士兵表情', shibing_emotion:'士兵表情',
xiaosha_emotion:'小杀表情',
xiaotao_emotion:'小桃表情',
pause:'暂停', pause:'暂停',
config:'选项', config:'选项',
@ -10097,7 +10103,7 @@
cardsGotoSpecial:function(){ cardsGotoSpecial:function(){
game.getGlobalHistory().cardMove.push(event); game.getGlobalHistory().cardMove.push(event);
for(var i=0;i<cards.length;i++){ for(var i=0;i<cards.length;i++){
cards[i].goto(ui.special); ui.special.appendChild(cards[i]);
} }
if(event.notrigger!==true) event.trigger('addCardToStorage'); if(event.notrigger!==true) event.trigger('addCardToStorage');
}, },
@ -10280,7 +10286,16 @@
game.countPlayer2(function(current){ game.countPlayer2(function(current){
current.actionHistory.push({useCard:[],respond:[],skipped:[],lose:[],gain:[],sourceDamage:[],damage:[],custom:[]}); current.actionHistory.push({useCard:[],respond:[],skipped:[],lose:[],gain:[],sourceDamage:[],damage:[],custom:[]});
current.stat.push({card:{},skill:{}}); current.stat.push({card:{},skill:{}});
if(event.parent._roundStart){
current.getHistory().isRound=true;
current.getStat().isRound=true;
}
}); });
player.getHistory().isMe=true;
player.getStat().isMe=true;
if(event.parent._roundStart){
game.getGlobalHistory().isRound=true;
}
if(ui.land&&ui.land.player==player){ if(ui.land&&ui.land.player==player){
game.addVideo('destroyLand'); game.addVideo('destroyLand');
ui.land.destroy(); ui.land.destroy();
@ -13703,18 +13718,18 @@
},event.id); },event.id);
}; };
"step 3" "step 3"
event.sortTarget=function(animate){ event.sortTarget=function(animate,sort){
var info=get.info(card,false); var info=get.info(card,false);
if(num==0&&targets.length>1){ if(num==0&&targets.length>1){
if(!info.multitarget){ if(!info.multitarget){
if(!event.fixedSeat){ if(!event.fixedSeat&&!sort){
targets.sortBySeat(player); targets.sortBySeat(player);
} }
if(animate) for(var i=0;i<targets.length;i++){ if(animate) for(var i=0;i<targets.length;i++){
targets[i].animate('target'); targets[i].animate('target');
} }
} }
else if(animate){ else if(animate){
for(var i=0;i<targets.length;i++){ for(var i=0;i<targets.length;i++){
targets[i].animate('target'); targets[i].animate('target');
} }
@ -13819,6 +13834,9 @@
next.directHit=event.directHit; next.directHit=event.directHit;
next.customArgs=event.customArgs; next.customArgs=event.customArgs;
if(event.forceDie) next.forceDie=true; if(event.forceDie) next.forceDie=true;
if(targets.length==event.triggeredTargets4.length){
event.sortTarget();
}
event.redo(); event.redo();
} }
"step 8" "step 8"
@ -13845,10 +13863,10 @@
} }
"step 9" "step 9"
if(event.all_excluded) return; if(event.all_excluded) return;
if(num==0&&targets.length>1){
event.sortTarget(true);
}
var info=get.info(card,false); var info=get.info(card,false);
if(num==0&&targets.length>1){
event.sortTarget(true,true);
}
if(targets[num]&&targets[num].isDead()) return; if(targets[num]&&targets[num].isDead()) return;
if(targets[num]&&targets[num].isOut()) return; if(targets[num]&&targets[num].isOut()) return;
if(targets[num]&&targets[num].removed) return; if(targets[num]&&targets[num].removed) return;
@ -19736,6 +19754,7 @@
else if(typeof select=='number') range=[select,select]; else if(typeof select=='number') range=[select,select];
else if(get.itemtype(select)=='select') range=select; else if(get.itemtype(select)=='select') range=select;
else if(typeof select=='function') range=select(card,player); else if(typeof select=='function') range=select(card,player);
if(info.singleCard) range=[1,1];
game.checkMod(card,player,range,'selectTarget',player); game.checkMod(card,player,range,'selectTarget',player);
if(!range) return 0; if(!range) return 0;
@ -20932,7 +20951,7 @@
hasZhuSkill:function(skill,player){ hasZhuSkill:function(skill,player){
if(!this.hasSkill(skill)) return false; if(!this.hasSkill(skill)) return false;
var mode=get.mode(); var mode=get.mode();
if(mode=='identity'||(mode=='versus'&&_status.mode=='four')){ if(mode=='identity'||(mode=='versus'&&(_status.mode=='four'||_status.mode=='guandu'))){
if(mode!='identity'){ if(mode!='identity'){
if(player&&this.side!=player.side) return false; if(player&&this.side!=player.side) return false;
} }
@ -24953,6 +24972,7 @@
if((player==_status.roundStart||_status.roundSkipped)&&!trigger.skill){ if((player==_status.roundStart||_status.roundSkipped)&&!trigger.skill){
delete _status.roundSkipped; delete _status.roundSkipped;
game.roundNumber++; game.roundNumber++;
trigger._roundStart=true;
game.updateRoundNumber(); game.updateRoundNumber();
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
if(game.players[i].isOut()&&game.players[i].outCount>0){ if(game.players[i].isOut()&&game.players[i].outCount>0){
@ -25968,6 +25988,7 @@
} }
ui.arena.setNumber(state.number); ui.arena.setNumber(state.number);
_status.mode=state.mode; _status.mode=state.mode;
lib.inpile=_state.inpile;
var pos=state.players[observe||game.onlineID].position; var pos=state.players[observe||game.onlineID].position;
for(var i in state.players){ for(var i in state.players){
var info=state.players[i]; var info=state.players[i];
@ -32066,9 +32087,10 @@
}); });
}, },
updateRoundNumber:function(){ updateRoundNumber:function(){
game.broadcastAll(function(num1,num2){ game.broadcastAll(function(num1,num2,top){
if(ui.cardPileNumber) ui.cardPileNumber.innerHTML=num1+'轮 剩余牌: '+num2; if(ui.cardPileNumber) ui.cardPileNumber.innerHTML=num1+'轮 剩余牌: '+num2;
},game.roundNumber,ui.cardPile.childNodes.length); _status.pileTop=top;
},game.roundNumber,ui.cardPile.childNodes.length,ui.cardPile.firstChild);
}, },
asyncDraw:function(players,num,drawDeck,bottom){ asyncDraw:function(players,num,drawDeck,bottom){
for(var i=0;i<players.length;i++){ for(var i=0;i<players.length;i++){
@ -42970,10 +42992,11 @@
} }
} }
lib.inpile.sort(lib.sort.card); lib.inpile.sort(lib.sort.card);
game.broadcastAll(function(num,pile){ game.broadcastAll(function(num,pile,top){
if(ui.cardPileNumber) ui.cardPileNumber.innerHTML='0轮 剩余牌: '+num; if(ui.cardPileNumber) ui.cardPileNumber.innerHTML='0轮 剩余牌: '+num;
lib.inpile=pile; lib.inpile=pile;
},ui.cardPile.childNodes.length,lib.inpile); _status.pileTop=top;
},ui.cardPile.childNodes.length,lib.inpile,ui.cardPile.firstChild);
}, },
}, },
click:{ click:{
@ -47325,6 +47348,7 @@
isCard:true, isCard:true,
cardid:card.cardid, cardid:card.cardid,
wunature:card.wunature, wunature:card.wunature,
storage:card.storage,
}; };
if(get.itemtype(cards)=='cards'&&!card.cards) next.cards=cards.slice(0); if(get.itemtype(cards)=='cards'&&!card.cards) next.cards=cards.slice(0);
else next.cards=[card]; else next.cards=[card];
@ -47755,6 +47779,7 @@
case '2v2':return '欢乐成双'; case '2v2':return '欢乐成双';
case '3v3':return '血战到底'; case '3v3':return '血战到底';
case '4v4':return '四人对决'; case '4v4':return '四人对决';
case 'guandu':return '官渡之战';
} }
} }
else if(config.mode=='single'){ else if(config.mode=='single'){
@ -47827,7 +47852,8 @@
dying:_status.dying, dying:_status.dying,
servermode:window.isNonameServer, servermode:window.isNonameServer,
roomId:game.roomId, roomId:game.roomId,
over:_status.over over:_status.over,
inpile:lib.inpile,
}; };
for(var i in lib.playerOL){ for(var i in lib.playerOL){
state.players[i]=lib.playerOL[i].getState(); state.players[i]=lib.playerOL[i].getState();
@ -47881,7 +47907,7 @@
if(skill&&!game.zhu.hasSkill(skill)) return null; if(skill&&!game.zhu.hasSkill(skill)) return null;
if(game.zhu.isZhu) return game.zhu; if(game.zhu.isZhu) return game.zhu;
} }
else if(mode=='versus'&&_status.mode=='four'){ else if(mode=='versus'&&(_status.mode=='four'||_status.mode=='guandu')){
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
if(game.players[i].isZhu){ if(game.players[i].isZhu){
if(skill&&!(game.players[i].hasSkill(skill))) continue; if(skill&&!(game.players[i].hasSkill(skill))) continue;
@ -49461,7 +49487,7 @@
} }
} }
for(i=0;i<skills.length;i++){ for(i=0;i<skills.length;i++){
if(lib.skill[skills[i]]&&lib.skill[skills[i]].nopop) continue; if(lib.skill[skills[i]]&&(lib.skill[skills[i]].nopop||lib.skill[skills[i]].equipSkill)) continue;
if(lib.translate[skills[i]+'_info']){ if(lib.translate[skills[i]+'_info']){
translation=lib.translate[skills[i]+'_ab']||get.translation(skills[i]).slice(0,2); translation=lib.translate[skills[i]+'_ab']||get.translation(skills[i]).slice(0,2);
if(node.forbiddenSkills[skills[i]]){ if(node.forbiddenSkills[skills[i]]){

View File

@ -1,8 +1,10 @@
window.noname_update={ window.noname_update={
version:'1.9.100.4', version:'1.9.100.4.1',
update:'1.9.100.3.1', update:'1.9.100.4',
changeLog:[ changeLog:[
'きえええええええええ——!', '官渡之战(对决->官渡)',
'邢道荣,新孙鲁育',
'bug修复',
], ],
files:[ files:[

4
image/character.TXT Normal file
View File

@ -0,0 +1,4 @@
chunyuqiong.jpg
lvkuanglvxiang.jpg
re_sunluyu.jpg
sp_xuyou.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 501 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 558 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 785 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 883 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 603 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 844 KiB

View File

@ -7151,7 +7151,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
game.players[i].identity='unknown'; game.players[i].identity='unknown';
game.players[i].node.name.show(); game.players[i].node.name.show();
game.players[i].node.name2.show(); game.players[i].node.name2.show();
game.players[i]._group=lib.character[game.players[i].name1][1]; game.players[i]._group=lib.character[game.players[i].name2][1];
for(var j=0;j<game.players[i].hiddenSkills.length;j++){ for(var j=0;j<game.players[i].hiddenSkills.length;j++){
game.players[i].addSkillTrigger(game.players[i].hiddenSkills[j],true); game.players[i].addSkillTrigger(game.players[i].hiddenSkills[j],true);
} }
@ -7315,7 +7315,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
game.players[i].identity='unknown'; game.players[i].identity='unknown';
game.players[i].node.name.show(); game.players[i].node.name.show();
game.players[i].node.name2.show(); game.players[i].node.name2.show();
game.players[i]._group=lib.character[game.players[i].name1][1]; game.players[i]._group=lib.character[game.players[i].name2][1];
} }
setTimeout(function(){ setTimeout(function(){
ui.arena.classList.remove('choose-character'); ui.arena.classList.remove('choose-character');

View File

@ -37,6 +37,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
start:function(){ start:function(){
"step 0" "step 0"
_status.mode=get.config('versus_mode'); _status.mode=get.config('versus_mode');
if(_status.connectMode&&lib.configOL.versus_mode=='guandu') _status.mode='guandu';
if(_status.brawl&&_status.brawl.submode){ if(_status.brawl&&_status.brawl.submode){
_status.mode=_status.brawl.submode; _status.mode=_status.brawl.submode;
} }
@ -70,11 +71,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
case '1v1':lib.configOL.number=2;break; case '1v1':lib.configOL.number=2;break;
case '2v2':lib.configOL.number=4;break; case '2v2':lib.configOL.number=4;break;
case '3v3':lib.configOL.number=6;break; case '3v3':lib.configOL.number=6;break;
case '4v4':lib.configOL.number=8;break; case '4v4':case 'guandu':lib.configOL.number=8;break;
} }
}); });
} }
else if(_status.mode=='jiange'||_status.mode=='siguo'||_status.mode=='four'){ else if(_status.mode=='jiange'||_status.mode=='siguo'||_status.mode=='four'||_status.mode=='guandu'){
if(_status.mode=='four'&&!get.config('enable_all_cards_four')){ if(_status.mode=='four'&&!get.config('enable_all_cards_four')){
lib.card.list=lib.cardsFour; lib.card.list=lib.cardsFour;
game.fixedPile=true; game.fixedPile=true;
@ -89,6 +90,16 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
} }
} }
} }
else if(_status.mode=='guandu'){
for(var i=0;i<lib.card.list.length;i++){
switch(lib.card.list[i][2]){
case 'wugu':lib.card.list[i][2]='tunliang';break;
case 'nanman':lib.card.list[i][2]='lulitongxin';break;
case 'taoyuan':case 'shandian':lib.card.list[i][2]='yuanjun';break;
case 'muniu':lib.card.list.splice(i--,1);break;
}
}
}
game.prepareArena(8); game.prepareArena(8);
} }
else if(_status.mode=='two'){ else if(_status.mode=='two'){
@ -158,6 +169,38 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
game.randomMapOL(); game.randomMapOL();
} }
} }
else if(_status.mode=='guandu'){
var list=[
['zhu','ezhu','ezhong','zhong','ezhong','zhong','zhong','ezhong'],
['zhu','ezhong','zhong','ezhu','ezhong','zhong','ezhong','zhong'],
['zhu','ezhong','zhong','ezhong','zhong','ezhong','zhong','ezhu'],
['zhu','ezhu','zhong','ezhong','zhong','ezhong','zhong','ezhong'],
['zhu','ezhong','zhong','ezhong','zhong','ezhu','zhong','ezhong'],
].randomGet();
var side=true;
var num=Math.floor(Math.random()*8);
list=list.splice(8-num).concat(list);
_status.firstAct=game.players[num];
for(var i=0;i<8;i++){
if(list[i][0]=='e'){
game.players[i].side=side;
game.players[i].identity=list[i].slice(1);
}
else{
game.players[i].side=!side;
game.players[i].identity=list[i];
}
if(game.players[i].identity=='zhu'){
game[game.players[i].side+'Zhu']=game.players[i];
game.players[i].isZhu=true;
}
game.players[i].setIdentity(game.players[i].identity);
game.players[i].node.identity.dataset.color=get.translation(game.players[i].side+'Color');
game.players[i].getId();
}
game.chooseCharacterGuandu();
}
else if(_status.mode=='four'){ else if(_status.mode=='four'){
_status.fouralign=[0,1,2,3,4]; _status.fouralign=[0,1,2,3,4];
var list=[ var list=[
@ -322,6 +365,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}); });
game.phaseLoop(firstChoose); game.phaseLoop(firstChoose);
} }
else if(_status.mode=='guandu'){
game.gameDraw(_status.firstAct);
game.phaseLoop(_status.firstAct);
}
else if(_status.mode=='4v4'){ else if(_status.mode=='4v4'){
game.gameDraw(_status.firstAct,function(player){ game.gameDraw(_status.firstAct,function(player){
if(player==_status.firstAct.previousSeat){ if(player==_status.firstAct.previousSeat){
@ -335,7 +382,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
event.finish(); event.finish();
} }
else{ else{
if(_status.mode=='two'){ if(_status.mode=='guandu'){
game.gameDraw(_status.firstAct,4);
game.phaseLoop(_status.firstAct);
}
else if(_status.mode=='two'){
_status.first_less=true; _status.first_less=true;
_status.first_less_forced=true; _status.first_less_forced=true;
var firstChoose=_status.firstAct; var firstChoose=_status.firstAct;
@ -560,6 +611,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
case 'siguo':str2='同舟共济';break; case 'siguo':str2='同舟共济';break;
case 'jiange':str2='守卫剑阁';break; case 'jiange':str2='守卫剑阁';break;
case 'four':str2='对决 - 4v4';break; case 'four':str2='对决 - 4v4';break;
case 'guandu':str2='官渡之战';break;
default:str2='对决 - '+lib.storage.number+'v'+lib.storage.number default:str2='对决 - '+lib.storage.number+'v'+lib.storage.number
} }
} }
@ -2451,8 +2503,201 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
case '2v2':game.chooseCharacterOL2();break; case '2v2':game.chooseCharacterOL2();break;
case '3v3':game.chooseCharacterOL3();break; case '3v3':game.chooseCharacterOL3();break;
case '4v4':game.chooseCharacterOL4();break; case '4v4':game.chooseCharacterOL4();break;
case 'guandu':game.chooseCharacterOLGuandu();break;
} }
}, },
chooseCharacterOLGuandu:function(){
var next=game.createEvent('chooseCharacter',false);
next.setContent(function(){
"step 0"
var list=[
['zhu','ezhu','ezhong','zhong','ezhong','zhong','zhong','ezhong'],
['zhu','ezhong','zhong','ezhu','ezhong','zhong','ezhong','zhong'],
['zhu','ezhong','zhong','ezhong','zhong','ezhong','zhong','ezhu'],
['zhu','ezhu','zhong','ezhong','zhong','ezhong','zhong','ezhong'],
['zhu','ezhong','zhong','ezhong','zhong','ezhu','zhong','ezhong'],
].randomGet();
var side=true;
var num=Math.floor(Math.random()*8);
list=list.splice(8-num).concat(list);
for(var i=0;i<8;i++){
if(list[i][0]=='e'){
game.players[i].side=side;
game.players[i].identity=list[i].slice(1);
}
else{
game.players[i].side=!side;
game.players[i].identity=list[i];
}
if(game.players[i].identity=='zhu'){
game[game.players[i].side+'Zhu']=game.players[i];
game.players[i].isZhu=true;
}
game.players[i].setIdentity(game.players[i].identity);
game.players[i].node.identity.dataset.color=get.translation(game.players[i].side+'Color');
game.players[i].getId();
}
var side=true;
var map={};
var num=Math.floor(Math.random()*8);
list=list.splice(8-num).concat(list);
for(var i=0;i<8;i++){
if(list[i][0]=='e'){
game.players[i].side=side;
game.players[i].identity=list[i].slice(1);
}
else{
game.players[i].side=!side;
game.players[i].identity=list[i];
}
map[game.players[i].playerid]=[game.players[i].side,game.players[i].identity];
}
var evt=['huoshaowuchao','liangcaokuifa','zhanyanliangzhuwenchou','shishengshibai'].randomGet();
game.addGlobalSkill(evt);
var func=function(map,evt){
for(var i in map){
var player=lib.playerOL[i];
if(player){
player.side=map[i][0];
player.identity=map[i][1];
player.setIdentity();
player.node.identity.dataset.color=get.translation(player.side+'Color');
if(player.identity=='zhu'){
game[player.side+'Zhu']=player;
player.isZhu=true;
}
}
}
game.falseZhu.init('re_caocao');
game.trueZhu.init('ol_yuanshao');
game.trueZhu.hp++;
game.trueZhu.maxHp++;
game.falseZhu.hp++;
game.falseZhu.maxHp++;
game.trueZhu.update();
game.falseZhu.update();
ui.arena.classList.add('choose-character');
if(get.is.phoneLayout()){
ui.guanduInfo=ui.create.div('.touchinfo.left',ui.window);
}
else{
ui.guanduInfo=ui.create.div(ui.gameinfo);
}
ui.guanduInfo.innerHTML='当前事件:'+get.translation(evt);
var dialog=ui.create.dialog('本局特殊事件:'+get.translation(evt));
dialog.addText(get.translation(evt+'_info'),false);
setTimeout(function(){
dialog.close();
},5000)
};
game.broadcastAll(func,map,evt);
_status.firstAct=game.falseZhu;
game.delay(0,5000);
"step 1"
event.falseList=['xunyu','xunyou','re_guojia','re_zhangliao','re_xuhuang','yujin_yujin','caohong','jsp_guanyu','liuye','litong','zangba','manchong','hanhaoshihuan','chengyu','caoren'].filter(function(name){
if(!Array.isArray(lib.character[name])) return false;
lib.character[name][1]='wei';
return true;
});
event.trueList=['xunchen','gaolan','sp_zhanghe','sp_xuyou','chenlin','re_liubei','yj_jushou','sp_shenpei','tianfeng','yuantanyuanshang','lvkuanglvxiang','xinpi','guotufengji','chunyuqiong'].filter(function(name){
if(!Array.isArray(lib.character[name])) return false;
lib.character[name][1]='qun';
return true;
});
game.broadcast(function(list1,list2){
while(list1.length){
lib.character[list1.shift()][1]='wei';
}
while(list2.length){
lib.character[list2.shift()][1]='qun';
}
},event.falseList,event.trueList);
event.map={};
var list=[];
game.countPlayer(function(current){
if(current.identity=='zhong'){
var choice=event[current.side+'List'].randomRemove(3);
event.map[current.playerid]=choice;
list.push([current,['请选择武将',[choice,'character']],true]);
}
});
game.me.chooseButtonOL(list,function(player,result){
if(game.online||player==game.me){
player.init(result.links[0]);
}
});
"step 2"
for(var i in result){
if(result[i]=='ai'){
result[i]=event.map[i].randomGet();
}
else result[i]=result[i].links[0];
}
game.broadcastAll(function(result){
for(var i in result){
lib.playerOL[i].init(result[i]);
}
setTimeout(function(){
ui.arena.classList.remove('choose-character');
},500);
},result);
});
},
chooseCharacterGuandu:function(){
var next=game.createEvent('chooseCharacter',false);
next.setContent(function(){
'step 0'
lib.init.onfree();
ui.arena.classList.add('choose-character');
game.falseZhu.init('re_caocao');
game.trueZhu.init('ol_yuanshao');
game.trueZhu.hp++;
game.trueZhu.maxHp++;
game.falseZhu.hp++;
game.falseZhu.maxHp++;
game.trueZhu.update();
game.falseZhu.update();
var evt=['huoshaowuchao','liangcaokuifa','zhanyanliangzhuwenchou','shishengshibai'].randomGet();
game.addGlobalSkill(evt);
game.broadcastAll(function(evt){
if(get.is.phoneLayout()){
ui.guanduInfo=ui.create.div('.touchinfo.left',ui.window);
}
else{
ui.guanduInfo=ui.create.div(ui.gameinfo);
}
ui.guanduInfo.innerHTML='当前事件:'+get.translation(evt);
},evt);
game.me.chooseControl('ok').set('prompt','###本局特殊事件:'+get.translation(evt)+'###'+get.translation(evt+'_info'));
'step 1'
event.falseList=['xunyu','xunyou','re_guojia','re_zhangliao','re_xuhuang','yujin_yujin','caohong','jsp_guanyu','liuye','litong','zangba','manchong','hanhaoshihuan','chengyu','caoren'].filter(function(name){
if(!Array.isArray(lib.character[name])) return false;
lib.character[name][1]='wei';
return true;
});
event.trueList=['xunchen','gaolan','sp_zhanghe','sp_xuyou','chenlin','re_liubei','yj_jushou','sp_shenpei','tianfeng','yuantanyuanshang','lvkuanglvxiang','xinpi','guotufengji','chunyuqiong'].filter(function(name){
if(!Array.isArray(lib.character[name])) return false;
lib.character[name][1]='qun';
return true;
});
'step 2'
if(game.me.identity!='zhu'){
event.choose_me=true;
game.me.chooseButton(['请选择你的武将牌',[event[game.me.side+'List'].randomRemove(3),'character']],true);
}
'step 3'
if(event.choose_me) game.me.init(result.links[0]);
game.countPlayer(function(current){
if(current!=game.me&&current.identity=='zhong') current.init(event[current.side+'List'].randomRemove(2)[0]);
});
setTimeout(function(){
ui.arena.classList.remove('choose-character');
},500);
});
},
chooseCharacterOL4:function(){ chooseCharacterOL4:function(){
var next=game.createEvent('chooseCharacter',false); var next=game.createEvent('chooseCharacter',false);
next.setContent(function(){ next.setContent(function(){
@ -3833,7 +4078,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'panzhangmazhong','yufan','liufeng', 'panzhangmazhong','yufan','liufeng',
'yj_jushou','caifuren','guyong','zhoucang','sunluban', 'yj_jushou','caifuren','guyong','zhoucang','sunluban',
'gongsunyuan','liuchen','xiahoushi','sunxiu',//'quancong', 'gongsunyuan','liuchen','xiahoushi','sunxiu',//'quancong',
'guotupangji', 'guotufengji',
'liyan',//'sundeng','cenhun','guohuanghou', 'liyan',//'sundeng','cenhun','guohuanghou',
'caiyong','wuxian',//'xuecong', 'caiyong','wuxian',//'xuecong',
'liuxie','yuejin','caoang','hetaihou','simalang','mayunlu','zhugejin','sp_machao','zhugeke','sp_caoren', 'liuxie','yuejin','caoang','hetaihou','simalang','mayunlu','zhugejin','sp_machao','zhugeke','sp_caoren',
@ -3975,8 +4220,100 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
tongzhougongji_info:'出牌阶段使用选择一项1.摸X张牌X为你所在势力拥有的龙船至宝数2.你和队友各摸一张牌', tongzhougongji_info:'出牌阶段使用选择一项1.摸X张牌X为你所在势力拥有的龙船至宝数2.你和队友各摸一张牌',
lizhengshangyou:'力争上游', lizhengshangyou:'力争上游',
lizhengshangyou_info:'出牌阶段对所有角色使用若目标角色的势力拥有龙船至宝其回复1点体力若目标角色的势力没有龙船至宝其弃置一张牌', lizhengshangyou_info:'出牌阶段对所有角色使用若目标角色的势力拥有龙船至宝其回复1点体力若目标角色的势力没有龙船至宝其弃置一张牌',
tunliang:'屯粮',
tunliang_info:'出牌阶段,对至多三名角色使用。目标角色各摸一张牌。',
yuanjun:'援军',
yuanjun_info:'出牌阶段对至多两名已受伤的角色使用。目标角色回复1点体力。',
huoshaowuchao:'火烧乌巢',
huoshaowuchao_info:'锁定技,本局游戏内造成的无属性伤害均视为火属性。',
liangcaokuifa:'粮草匮乏',
liangcaokuifa_info:'锁定技,所有角色摸牌阶段的额定摸牌数-1。当一名角色使用的牌结算完成后若其因此牌造成了伤害则其摸一张牌。',
zhanyanliangzhuwenchou:'斩颜良诛文丑',
zhanyanliangzhuwenchou_info:'锁定技一名角色的回合开始时其选择一项视为使用一张不可被【无懈可击】响应的【决斗】或失去1点体力。',
shishengshibai:'十胜十败',
shishengshibai_info:'锁定技,一名角色使用牌时,若此牌是整局游戏使用的第整十张牌且此牌不为延时锦囊牌或装备牌,则此牌所有目标角色再次成为此牌的目标角色。',
}, },
skill:{ skill:{
huoshaowuchao:{
trigger:{global:'damageBefore'},
silent:true,
firstDo:true,
filter:function(event,player){
return !lib.linked.contains(event.nature);
},
content:function(){
trigger.nature='fire';
},
},
liangcaokuifa:{
trigger:{player:['useCardAfter','phaseDrawBegin']},
silent:true,
filter:function(event,player){
if(event.name=='phaseDraw') return true;
return player.getHistory('sourceDamage',function(evt){
return evt.card==event.card;
}).length>0;
},
content:function(){
if(trigger.name=='phaseDraw') trigger.num--;
else player.draw();
},
},
zhanyanliangzhuwenchou:{
trigger:{player:'phaseBegin'},
silent:true,
content:function(){
'step 0'
player.chooseUseTarget({
name:'juedou',
isCard:true,
storage:{nowuxie:true}
},
'选择一名角色,视为对其使用【决斗】','或点【取消】失去1点体力');
'step 1'
if(!result.bool) player.loseHp();
},
},
shishengshibai:{
mod:{
aiOrder:function(player,card,num){
if(_status.shishengshibai&&_status.shishengshibai%10==9){
if(['sha','tao','guohe','shunshou','tunliang','wuzhong','juedou','yuanjun'].contains(card.name)) return num+15;
}
},
},
trigger:{
player:['useCard1','useCardToTargeted'],
},
silent:true,
filter:function(event,player,name){
if(name=='useCard1') return true;
if(!event.parent.shishengshibai||event.targets.length!=event.parent.triggeredTargets4.length) return false;
if(!event.targets||!event.targets.length||['delay','equip'].contains(get.type(event.card))) return false;
return true;
},
content:function(){
if(event.triggername=='useCard1'){
if(!_status.shishengshibai) _status.shishengshibai=0;
_status.shishengshibai++;
game.broadcastAll(function(num){
if(ui.guanduInfo) ui.guanduInfo.innerHTML='当前事件:十胜十败('+num+'';
},_status.shishengshibai);
if(_status.shishengshibai%10==0) trigger.shishengshibai=true;
}
else{
trigger.getParent().targets=trigger.getParent().targets.concat(trigger.targets);
trigger.getParent().triggeredTargets4=trigger.getParent().triggeredTargets4.concat(trigger.targets);
}
},
ai:{
result:{
player:function(card,player,target){
if(_status.shishengshibai&&_status.shishengshibai%10==9&&card.name=='tiesuo') return 'zerotarget';
},
},
},
},
wenji:{ wenji:{
trigger:{global:'phaseUseBegin'}, trigger:{global:'phaseUseBegin'},
filter:function(event,player){ filter:function(event,player){
@ -5216,6 +5553,60 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
} }
}, },
card:{ card:{
tunliang:{
audio:true,
fullskin:true,
type:'trick',
enable:true,
selectTarget:[1,3],
filterTarget:true,
content:function(){
target.draw();
},
ai:{
basic:{
order:7.2,
useful:4.5,
value:9.2
},
result:{
target:1,
},
tag:{
draw:1
}
}
},
yuanjun:{
fullskin:true,
type:'trick',
selectTarget:[1,2],
enable:true,
filterTarget:function(card,player,target){
return target!=player&&target.hp<target.maxHp;
},
content:function(){
target.recover();
},
ai:{
basic:{
order:function(card,player){
if(player.hasSkillTag('pretao')) return 5;
return 2;
},
useful:[6,4],
value:[6,4],
},
result:{
target:function(player,target){
return 2;
},
},
tag:{
recover:1,
}
}
},
zong:{ zong:{
fullskin:true, fullskin:true,
type:'basic', type:'basic',
@ -5809,7 +6200,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
return this; return this;
}, },
dieAfter2:function(source){ dieAfter2:function(source){
if(_status.connectMode){ if(_status.connectMode&&_status.mode!='guandu'){
if(_status.mode=='1v1'||_status.mode=='3v3') return; if(_status.mode=='1v1'||_status.mode=='3v3') return;
else if(_status.mode=='2v2'){ else if(_status.mode=='2v2'){
var friend; var friend;
@ -5858,16 +6249,17 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
} }
} }
else{ else{
if(_status.mode=='four'){ if(_status.mode=='four'||_status.mode=='guandu'){
if(this.identity=='zhu') return; if(this.identity=='zhu') return;
else{ else{
if(source){ if(source){
if(source.side==this.side){ if(source.side==this.side){
if(source.identity=='zhu'){ if(_status.mode=='guandu'||source.identity=='zhu'){
source.discard(source.getCards('he')); source.discard(source.getCards('he'));
} }
} }
else{ else{
if(_status.mode=='guandu') return;
var num1=0,num2=1; var num1=0,num2=1;
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
if(game.players[i].side==source.side){ if(game.players[i].side==source.side){
@ -6022,11 +6414,15 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
game.over(this.side!=game.me.side); game.over(this.side!=game.me.side);
} }
} }
else if(_status.mode=='4v4'){ else if(_status.mode=='4v4'||_status.mode=='guandu'){
if(this.identity=='zhu'){ if(this.identity=='zhu'){
game.over(this.side!=game.me.side); game.over(this.side!=game.me.side);
} }
else{ else{
if(_status.mode=='guandu'&&source&&source.side!=this.side){
var hs=this.getCards('h');
if(hs.length) source.gain(hs,this,'giveAuto');
}
var side1=[],side2=[]; var side1=[],side2=[];
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
if(game.players[i].side){ if(game.players[i].side){
@ -6047,11 +6443,15 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
} }
} }
else{ else{
if(_status.mode=='four'){ if(_status.mode=='four'||_status.mode=='guandu'){
if(this.identity=='zhu'){ if(this.identity=='zhu'){
game.over(this.side!=game.me.side); game.over(this.side!=game.me.side);
} }
else{ else{
if(_status.mode=='guandu'&&source&&source.side!=this.side){
var hs=this.getCards('h');
if(hs.length) source.gain(hs,this,'giveAuto');
}
var side1=[],side2=[]; var side1=[],side2=[];
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
if(game.players[i].side){ if(game.players[i].side){
@ -6225,10 +6625,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(from.side==to.side){ if(from.side==to.side){
if(to.identity=='zhu'){ if(to.identity=='zhu'){
if(_status.connectMode){ if(_status.connectMode){
if(_status.mode=='4v4') return 7; if(_status.mode=='4v4'||_status.mode=='guandu') return 7;
} }
else{ else{
if(lib.storage.main_zhu||_status.mode=='four') return 7; if(lib.storage.main_zhu||_status.mode=='four'||_status.mode=='guandu') return 7;
} }
} }
return 6; return 6;
@ -6308,10 +6708,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
else{ else{
if(to.identity=='zhu'){ if(to.identity=='zhu'){
if(_status.connectMode){ if(_status.connectMode){
if(_status.mode=='4v4') return -10; if(_status.mode=='4v4'||_status.mode=='guandu') return -10;
} }
else{ else{
if(lib.storage.main_zhu||_status.mode=='four') return -10; if(lib.storage.main_zhu||_status.mode=='four'||_status.mode=='guandu') return -10;
} }
} }
return -6; return -6;