diff --git a/audio/die/fengfangnv.mp3 b/audio/die/fengfangnv.mp3 new file mode 100644 index 000000000..2bfaafba0 Binary files /dev/null and b/audio/die/fengfangnv.mp3 differ diff --git a/audio/die/hanmeng.mp3 b/audio/die/hanmeng.mp3 new file mode 100644 index 000000000..bfd489821 Binary files /dev/null and b/audio/die/hanmeng.mp3 differ diff --git a/audio/die/sp_cuiyan.mp3 b/audio/die/sp_cuiyan.mp3 new file mode 100644 index 000000000..376343148 Binary files /dev/null and b/audio/die/sp_cuiyan.mp3 differ diff --git a/audio/die/sp_jiangqing.mp3 b/audio/die/sp_jiangqing.mp3 new file mode 100644 index 000000000..70cc84879 Binary files /dev/null and b/audio/die/sp_jiangqing.mp3 differ diff --git a/audio/die/sp_jiangwan.mp3 b/audio/die/sp_jiangwan.mp3 new file mode 100644 index 000000000..1bcd4f91e Binary files /dev/null and b/audio/die/sp_jiangwan.mp3 differ diff --git a/audio/die/sp_zhangchangpu.mp3 b/audio/die/sp_zhangchangpu.mp3 new file mode 100644 index 000000000..590d4afe3 Binary files /dev/null and b/audio/die/sp_zhangchangpu.mp3 differ diff --git a/audio/die/sunhanhua.mp3 b/audio/die/sunhanhua.mp3 new file mode 100644 index 000000000..d8d16cb58 Binary files /dev/null and b/audio/die/sunhanhua.mp3 differ diff --git a/audio/die/xinping.mp3 b/audio/die/xinping.mp3 new file mode 100644 index 000000000..e93a29a2c Binary files /dev/null and b/audio/die/xinping.mp3 differ diff --git a/audio/effect/tori_no_uta.mp3 b/audio/effect/tori_no_uta.mp3 new file mode 100644 index 000000000..ad8e3a7ec Binary files /dev/null and b/audio/effect/tori_no_uta.mp3 differ diff --git a/audio/skill/chongxu1.mp3 b/audio/skill/chongxu1.mp3 new file mode 100644 index 000000000..37b666c03 Binary files /dev/null and b/audio/skill/chongxu1.mp3 differ diff --git a/audio/skill/chongxu2.mp3 b/audio/skill/chongxu2.mp3 new file mode 100644 index 000000000..29e823b08 Binary files /dev/null and b/audio/skill/chongxu2.mp3 differ diff --git a/audio/skill/chuiti1.mp3 b/audio/skill/chuiti1.mp3 new file mode 100644 index 000000000..5fe4bfec7 Binary files /dev/null and b/audio/skill/chuiti1.mp3 differ diff --git a/audio/skill/chuiti2.mp3 b/audio/skill/chuiti2.mp3 new file mode 100644 index 000000000..0caa9df4e Binary files /dev/null and b/audio/skill/chuiti2.mp3 differ diff --git a/audio/skill/fuyuan1.mp3 b/audio/skill/fuyuan1.mp3 new file mode 100644 index 000000000..9974193ba Binary files /dev/null and b/audio/skill/fuyuan1.mp3 differ diff --git a/audio/skill/fuyuan2.mp3 b/audio/skill/fuyuan2.mp3 new file mode 100644 index 000000000..935d59302 Binary files /dev/null and b/audio/skill/fuyuan2.mp3 differ diff --git a/audio/skill/jieliang1.mp3 b/audio/skill/jieliang1.mp3 new file mode 100644 index 000000000..50dc5d840 Binary files /dev/null and b/audio/skill/jieliang1.mp3 differ diff --git a/audio/skill/jieliang2.mp3 b/audio/skill/jieliang2.mp3 new file mode 100644 index 000000000..824367c32 Binary files /dev/null and b/audio/skill/jieliang2.mp3 differ diff --git a/audio/skill/miaojian1.mp3 b/audio/skill/miaojian1.mp3 new file mode 100644 index 000000000..76729af68 Binary files /dev/null and b/audio/skill/miaojian1.mp3 differ diff --git a/audio/skill/miaojian2.mp3 b/audio/skill/miaojian2.mp3 new file mode 100644 index 000000000..7090f4167 Binary files /dev/null and b/audio/skill/miaojian2.mp3 differ diff --git a/audio/skill/quanjiu1.mp3 b/audio/skill/quanjiu1.mp3 new file mode 100644 index 000000000..1c0504d9e Binary files /dev/null and b/audio/skill/quanjiu1.mp3 differ diff --git a/audio/skill/quanjiu2.mp3 b/audio/skill/quanjiu2.mp3 new file mode 100644 index 000000000..a83a46e8f Binary files /dev/null and b/audio/skill/quanjiu2.mp3 differ diff --git a/audio/skill/shhlianhua1.mp3 b/audio/skill/shhlianhua1.mp3 new file mode 100644 index 000000000..42be88069 Binary files /dev/null and b/audio/skill/shhlianhua1.mp3 differ diff --git a/audio/skill/shhlianhua2.mp3 b/audio/skill/shhlianhua2.mp3 new file mode 100644 index 000000000..c3a398a13 Binary files /dev/null and b/audio/skill/shhlianhua2.mp3 differ diff --git a/audio/skill/spdifei1.mp3 b/audio/skill/spdifei1.mp3 new file mode 100644 index 000000000..1176764b3 Binary files /dev/null and b/audio/skill/spdifei1.mp3 differ diff --git a/audio/skill/spdifei2.mp3 b/audio/skill/spdifei2.mp3 new file mode 100644 index 000000000..e1b40101b Binary files /dev/null and b/audio/skill/spdifei2.mp3 differ diff --git a/audio/skill/spjianyi1.mp3 b/audio/skill/spjianyi1.mp3 new file mode 100644 index 000000000..0c17b8a4d Binary files /dev/null and b/audio/skill/spjianyi1.mp3 differ diff --git a/audio/skill/spjianyi2.mp3 b/audio/skill/spjianyi2.mp3 new file mode 100644 index 000000000..8feb93ccd Binary files /dev/null and b/audio/skill/spjianyi2.mp3 differ diff --git a/audio/skill/spjincui1.mp3 b/audio/skill/spjincui1.mp3 new file mode 100644 index 000000000..28043bc44 Binary files /dev/null and b/audio/skill/spjincui1.mp3 differ diff --git a/audio/skill/spjincui2.mp3 b/audio/skill/spjincui2.mp3 new file mode 100644 index 000000000..67af393ca Binary files /dev/null and b/audio/skill/spjincui2.mp3 differ diff --git a/audio/skill/spshangyi1.mp3 b/audio/skill/spshangyi1.mp3 new file mode 100644 index 000000000..290d0bf0e Binary files /dev/null and b/audio/skill/spshangyi1.mp3 differ diff --git a/audio/skill/spshangyi2.mp3 b/audio/skill/spshangyi2.mp3 new file mode 100644 index 000000000..58462cf5c Binary files /dev/null and b/audio/skill/spshangyi2.mp3 differ diff --git a/audio/skill/spyajun1.mp3 b/audio/skill/spyajun1.mp3 new file mode 100644 index 000000000..9b26d8752 Binary files /dev/null and b/audio/skill/spyajun1.mp3 differ diff --git a/audio/skill/spyajun2.mp3 b/audio/skill/spyajun2.mp3 new file mode 100644 index 000000000..08a61382a Binary files /dev/null and b/audio/skill/spyajun2.mp3 differ diff --git a/audio/skill/spyanjiao1.mp3 b/audio/skill/spyanjiao1.mp3 new file mode 100644 index 000000000..a959139f2 Binary files /dev/null and b/audio/skill/spyanjiao1.mp3 differ diff --git a/audio/skill/spyanjiao2.mp3 b/audio/skill/spyanjiao2.mp3 new file mode 100644 index 000000000..b757293a8 Binary files /dev/null and b/audio/skill/spyanjiao2.mp3 differ diff --git a/audio/skill/spzhenting1.mp3 b/audio/skill/spzhenting1.mp3 new file mode 100644 index 000000000..69863c603 Binary files /dev/null and b/audio/skill/spzhenting1.mp3 differ diff --git a/audio/skill/spzhenting2.mp3 b/audio/skill/spzhenting2.mp3 new file mode 100644 index 000000000..4e7408f21 Binary files /dev/null and b/audio/skill/spzhenting2.mp3 differ diff --git a/audio/skill/spzundi1.mp3 b/audio/skill/spzundi1.mp3 new file mode 100644 index 000000000..cf27edbf9 Binary files /dev/null and b/audio/skill/spzundi1.mp3 differ diff --git a/audio/skill/spzundi2.mp3 b/audio/skill/spzundi2.mp3 new file mode 100644 index 000000000..1ec29cfdd Binary files /dev/null and b/audio/skill/spzundi2.mp3 differ diff --git a/audio/skill/yongdi_xinping1.mp3 b/audio/skill/yongdi_xinping1.mp3 new file mode 100644 index 000000000..15b58c861 Binary files /dev/null and b/audio/skill/yongdi_xinping1.mp3 differ diff --git a/audio/skill/yongdi_xinping2.mp3 b/audio/skill/yongdi_xinping2.mp3 new file mode 100644 index 000000000..d3118b762 Binary files /dev/null and b/audio/skill/yongdi_xinping2.mp3 differ diff --git a/audio/skill/zhongjie1.mp3 b/audio/skill/zhongjie1.mp3 new file mode 100644 index 000000000..e2083b4ed Binary files /dev/null and b/audio/skill/zhongjie1.mp3 differ diff --git a/audio/skill/zhongjie2.mp3 b/audio/skill/zhongjie2.mp3 new file mode 100644 index 000000000..a27182d9b Binary files /dev/null and b/audio/skill/zhongjie2.mp3 differ diff --git a/audio/skill/zhuangshu1.mp3 b/audio/skill/zhuangshu1.mp3 new file mode 100644 index 000000000..a55bd690c Binary files /dev/null and b/audio/skill/zhuangshu1.mp3 differ diff --git a/audio/skill/zhuangshu2.mp3 b/audio/skill/zhuangshu2.mp3 new file mode 100644 index 000000000..2f185945b Binary files /dev/null and b/audio/skill/zhuangshu2.mp3 differ diff --git a/card/yingbian.js b/card/yingbian.js index d9386bcb7..f648a0b00 100644 --- a/card/yingbian.js +++ b/card/yingbian.js @@ -690,6 +690,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ trigger:{player:'useCard2'}, forced:true, popup:false, + charlotte:true, filter:function(event,player){ if(event.yingbian_removeTarget&&event.targets&&event.targets.length>1) return true; if(!event.yingbian_addTarget) return false; diff --git a/character/extra.js b/character/extra.js index 0aa0816c3..ab803de6f 100755 --- a/character/extra.js +++ b/character/extra.js @@ -309,7 +309,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ locked:false, global:'yingba_mark', mod:{ - cardUsableTarget:function(card,player,target){ + targetInRange:function(card,player,target){ if(target.hasMark('yingba_mark')) return true; }, }, @@ -354,7 +354,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ trigger.directHit.add(trigger.target); }, - group:['scfuhai_die','scfuhai_usea'], + group:['scfuhai_die'], ai:{ directHit_ai:true, skillTagFilter:function(player,tag,arg){ @@ -405,18 +405,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return player.getDamagedHp(); }, }, - locked:false, trigger:{player:'damageBegin2'}, - direct:true, + forced:true, filter:function(event,player){ return event.source&&event.source!=player&&player.maxHp>1&&player.countCards('h')>0; }, content:function(){ 'step 0' player.chooseCardTarget({ - prompt:get.prompt('pinghe'), + prompt:'请选择【冯河】的牌和目标', prompt2:'将一张手牌交给一名其他角色并防止伤害'+(player.hasSkill('yingba')?',然后令伤害来源获得一个“平定”标记':''), filterCard:true, + forced:true, filterTarget:lib.filter.notMe, ai1:function(card){ if(get.tag(card,'recover')&&!game.hasPlayer(function(current){ @@ -433,7 +433,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 1' if(result.bool){ var target=result.targets[0]; - player.logSkill('pinghe',target); + //player.logSkill('pinghe',target); + player.line(target,'green'); target.gain(result.cards,player,'giveAuto'); trigger.cancel(); player.loseMaxHp(); @@ -4861,11 +4862,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dinghan_info:'①当你成为未记录过的锦囊牌的目标时,你记录此牌名并取消之。②准备阶段,你可在〖定汉①〗的记录中添加或减少一种锦囊牌的牌名。', shen_sunce:'神孙策', yingba:'英霸', - yingba_info:'①出牌阶段限一次,你可令一名体力上限大于1的其他角色减少1点体力上限并获得“平定”标记,然后你减少1点体力上限。②你对拥有“平定”标记的角色使用牌没有次数限制。③拥有“平定”标记的角色的手牌上限+X(X为其“平定”数)。', + yingba_info:'①出牌阶段限一次,你可令一名体力上限大于1的其他角色减少1点体力上限并获得“平定”标记,然后你减少1点体力上限。②你对拥有“平定”标记的角色使用牌没有距离限制。③拥有“平定”标记的角色的手牌上限+X(X为其“平定”数)。', scfuhai:'覆海', - scfuhai_info:'锁定技。①当你使用牌指定目标后,若目标角色有“平定”标记,则其不可响应此牌。②当你使用牌结算结束后,你移除所有目标角色的“平定”标记并增加等量的体力上限。③拥有“平定”标记的角色死亡时,你增加X点体力上限并摸X张牌。(X为其拥有的“平定”标记数)。', + scfuhai_info:'锁定技。①当你使用牌指定目标后,若目标角色有“平定”标记,则其不可响应此牌。②拥有“平定”标记的角色死亡时,你增加X点体力上限并摸X张牌。(X为其拥有的“平定”标记数)。', pinghe:'冯河', - pinghe_info:'①你的手牌上限基数等于你已损失的体力值。②当你受到其他角色造成的伤害时,若你有牌且你的体力上限大于1,则你可以防止此伤害,减少一点体力上限并将一张手牌交给一名其他角色。然后若你拥有〖英霸〗,则伤害来源获得一个“平定”标记。', + pinghe_info:'锁定技。①你的手牌上限基数等于你已损失的体力值。②当你受到其他角色造成的伤害时,若你有牌且你的体力上限大于1,则你防止此伤害,减一点体力上限并将一张手牌交给一名其他角色。然后若你拥有〖英霸〗,则伤害来源获得一个“平定”标记。', key_kagari:'篝', kagari_zongsi:'纵丝', diff --git a/character/mobile.js b/character/mobile.js index c6f3ed529..4df618b80 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -6,12 +6,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, characterSort:{ mobile:{ - mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu"], + mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua"], mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning"], mobile_shijizhi:["sp_wangcan","sp_chenzhen","sp_sunshao","sp_xunchen","luotong","sp_duyu","sp_bianfuren","feiyi"], mobile_shijixin:['wujing','sp_mifuren','sp_xinpi','wangling','wangfuzhaolei','zhouchu','sp_kongrong','sp_yanghu'], mobile_shijiren:['caizhenji','xiangchong','sp_huaxin','sp_xujing','zhangzhongjing','sp_zhangwen','liuzhang','qiaogong'], mobile_shijiyong:['db_wenyang','sp_chendong','yuanhuan','sp_zongyu','sp_wangshuang','sunyi','sp_gaolan','sp_huaman'], + mobile_shijiyan:['sp_cuiyan','sp_zhangchangpu','sp_jiangwan','sp_jiangqing'], mobile_sunben:["re_sunben"], mobile_standard:["xin_xiahoudun","xin_zhangfei"], mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai","re_jiangwei","re_zhurong"], @@ -24,7 +25,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ - sp_huaman:['female','shu',3,['spxiangzhen','spfangzong','spxizhan']], + sunhanhua:['female','wu',3,['chongxu','miaojian','shhlianhua']], + sp_jiangqing:['male','wu',4,['spjianyi','spshangyi']], + sp_jiangwan:['male','shu',3,['spzhenting','spjincui']], + sp_zhangchangpu:['female','wei',3,['spdifei','spyanjiao']], + sp_cuiyan:['male','wei',3,['spyajun','spzundi']], + sp_huaman:['female','shu',4,['spxiangzhen','spfangzong','spxizhan']], sp_gaolan:['male','qun',4,['spjungong','spdengli']], sunyi:['male','wu',4,['zaoli']], sp_wangshuang:['male','wei',4,['yiyong','shanxie']], @@ -147,6 +153,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_sunben:['male','wu',4,['jiang','rehunzi','zhiba'],['zhu']], }, characterIntro:{ + jiangwan:'蒋琬(?-246年),字公琰。零陵郡湘乡县人。三国时期蜀汉政治家,与诸葛亮、董允、费祎合称“蜀汉四相”。蒋琬最初随刘备入蜀,为广都县长。因其不理政事,惹怒刘备,在诸葛亮的劝说下才免于一死。后重获启用,受到诸葛亮的悉心培养,累官丞相长史兼抚军将军。建兴十二年(234年),诸葛亮去世,蒋琬继其执政,拜尚书令,又加行都护、假节,领益州刺史,再迁大将军,录尚书事,封安阳亭侯。延熙元年(238年),受命开府,加大司马,总揽蜀汉军政。曾制定由水路进攻曹魏的计划,但未被采纳。延熙九年(246年),蒋琬病逝,谥号为恭。', + sunhanhua:'孙寒华,三国时女仙。梁·陶弘景《真诰》卷一三、五代·杜光庭《墉城集仙录》卷七:其父孙贲为孙权堂兄,寒华少时与杜契有私情,后从杜契受玄白之要,颜容日少。周旋吴越诸山十馀年,得道仙去。《鉴后集》卷四:一云即吴大帝孙权之女。于茅山修道,道成,冲虚而去,因号其山为华姥山。山在茅山崇禧观前。《神异典》卷二五九人于明代,误。', yanpu:'阎圃,生卒年不详,是益州巴西安汉(今四川省南充市)人。张鲁割据巴、汉,就以阎圃为功曹。东汉末年人物,本为张鲁部下谋士,后随张鲁一同投降曹操,封平乐乡侯。', mayuanyi:'马元义(?—184年6月7日),东汉末年黄巾之乱的组织者之一,是黄巾大方首领。光和六年(183年),马元义奉黄巾军首领张角之命,筹划起事的准备工作。马元义聚集荆州、扬州信徒数万人约定于邺城相会,并收买中常侍封谞、徐奉等为内应,准备于次年(甲子年)三月初五(戊申日)内外同时起事。由于张角弟子济南人唐周的告密,马元义于于中平元年(184年)正月在河内郡山阳县被捕,送往洛阳车裂,同时被杀的还有教众近千人。由于马元义的被杀,迫使张角提前于二月起兵发动叛乱。', simafu:'司马孚(180年-272年4月3日),字叔达。河内郡温县(今河南温县)人。三国曹魏至西晋初年重臣,西晋宗室,东汉京兆尹司马防第三子,晋宣帝司马懿之弟。自曹操时代起,司马孚就任文学掾,而后历仕魏国五代皇帝,累迁至太傅。司马孚在“高平陵事变”之际,协助司马懿控制京师,诛杀曹爽一党。后又督军成功防御吴、蜀的进攻,为司马氏政权的稳固多有功劳。但他性格十分谨慎,自司马懿执掌大权起,便逐渐引退,更未直接参与司马氏废立魏帝的谋划。西晋代魏后,司马孚进拜太宰,封安平王。晋武帝司马炎对他十分尊宠,但他并不以此为荣,至死仍以魏臣自称。泰始八年二月壬辰日(272年4月3日),司马孚去世,年九十三。武帝为其举哀三日,葬礼规格比照东汉东平献王刘苍,赐谥献王。', @@ -586,6 +594,622 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //孙寒华 + chongxu:{ + enable:'phaseUse', + usable:1, + content:function(){ + 'step 0' + player.chooseToPlayBeatmap({ + //歌曲名称 + name:'鳥の詩', + //歌曲文件名(默认在audio/effect文件夹下 若要重定向到扩展 请写为'ext:扩展名称'的格式 并将文件名重命名为和上面的歌曲名称相同) + filename:'tori_no_uta', + //每个音符的开始时间点(毫秒,相对未偏移的开始播放时间) + timeleap:[1047,3012,4978,5469,5961,6452,6698,7435,8909,10875,12840], + //开始播放时间的偏移量(毫秒) + current:-546, + //判定栏高度(相对整个对话框高度比例) + judgebar_height:0.14, + //Good/Great/Prefect的位置判定范围(百分比,相对于整个对话框。以滑条的底部作为判定基准) + range1:[86,110], + range2:[92,104], + range3:[96,100], + //滑条每相对于整个对话框下落1%所需的时间(毫秒) + speed:25, + }); + 'step 1' + var score=Math.floor(Math.min(5,result.accuracy/17)); + event.score=score; + game.log(player,'的演奏评级为','#y'+result.rank[0],',获得积分点数','#y'+score,'分'); + if(score<3){ + if(score>2) player.draw(); + event.finish(); + return; + } + var list=[]; + if(player.countMark('miaojian')<2&&player.hasSkill('miaojian')) list.push('修改【妙剑】'); + if(player.countMark('shhlianhua')<2&&player.hasSkill('shhlianhua')) list.push('修改【莲华】'); + if(list.length){ + list.push('全部摸牌'); + player.chooseControl(list).set('prompt','冲虚:修改技能'+(score==5?'并摸一张牌':'')+';或摸'+Math.floor(score/2)+'张牌'); + } + else event._result={control:'全部摸牌'}; + 'step 2' + var score=event.score; + if(result.control!='全部摸牌'){ + score-=3; + var skill=result.control=='修改【妙剑】'?'miaojian':'shhlianhua'; + player.addMark(skill,1,false); + game.log(player,'修改了技能','#g【'+get.translation(skill)+'】'); + } + if(score>1) player.draw(Math.floor(score/2)); + }, + ai:{ + order:10, + result:{ + player:1, + }, + }, + }, + miaojian:{ + audio:2, + enable:'phaseUse', + usable:1, + filter:function(event,player){ + var level=player.countMark('miaojian'); + if(event.filterCard({name:'sha',nature:'stab'},player,event)){ + if(level==2) return true; + if(level==1&&player.hasCard(function(card){ + return get.type2(card)=='basic'; + },'hs')) return true; + if(level==0&&player.hasCard(function(card){ + return get.name(card)=='sha'; + },'hs')) return true; + } + if(event.filterCard({name:'wuzhong'},player,event)){ + if(level==2) return true; + if(level==1&&player.hasCard(function(card){ + return get.type2(card)!='basic'; + },'hes')) return true; + if(level==0&&player.hasCard(function(card){ + return get.type2(card)=='trick'; + },'hs')) return true; + } + return false; + }, + chooseButton:{ + dialog:function(){ + return ui.create.dialog('妙剑',[[ + ['基本','','sha','stab'], + ['锦囊','','wuzhong'], + ],'vcard']); + }, + filter:function(button,player){ + var event=_status.event.getParent(),level=player.countMark('miaojian'); + if(button.link[2]=='sha'){ + if(!event.filterCard({name:'sha',nature:'stab'},player,event)) return false; + if(level==2) return true; + if(level==1) return player.hasCard(function(card){ + return get.type2(card)=='basic'; + },'hs'); + return level==0&&player.hasCard(function(card){ + return get.name(card)=='sha'; + },'hs'); + } + if(button.link[2]=='wuzhong'){ + if(!event.filterCard({name:'wuzhong'},player,event)) return false; + if(level==2) return true; + if(level==1) return player.hasCard(function(card){ + return get.type2(card)!='basic'; + },'hes'); + return level==0&&player.hasCard(function(card){ + return get.type2(card)=='trick'; + },'hs'); + } + }, + check:function(button){ + var card={name:button.link[2],nature:button.link[3]},player=_status.event.player; + return get.value(card,player)*get.sgn(player.getUseValue(card)); + }, + backup:function(links,player){ + var index=(links[0][2]=='sha'?0:1),level=player.countMark('miaojian'); + var next={ + audio:'miaojian', + filterCard:[[ + function(card){ + return get.name(card)=='sha'; + }, + function(card){ + return get.type(card)=='basic'; + }, + ()=>false, + ],[ + function(card){ + return get.type2(card)=='trick'; + }, + function(card){ + return get.type(card)!='basic'; + }, + ()=>false, + ]][index][level], + position:'hes', + check:function(card){ + if(card) return 6.5-get.value(card); + return 1; + }, + viewAs:[{ + name:'sha', + nature:'stab', + },{ + name:'wuzhong', + }][index], + } + if(level==2){ + next.selectCard=-1; + next.viewAs.isCard=true; + } + return next; + }, + prompt:function(links,player){ + var index=(links[0][2]=='sha'?0:1),level=player.countMark('miaojian'); + return [[ + '将一张【杀】当做刺【杀】使用', + '将一张基本牌当做刺【杀】使用', + '请选择刺【杀】的目标', + ],[ + '将一张锦囊牌当做【无中生有】使用', + '将一张非基本牌当做【无中生有】使用', + '请选择【无中生有】的目标', + ]][index][level]; + }, + }, + onremove:true, + derivation:['miaojian1','miaojian2'], + subSkill:{backup:{audio:'miaojian'}}, + ai:{ + order:7, + result:{player:1}, + }, + }, + shhlianhua:{ + audio:2, + derivation:['shhlianhua1','shhlianhua2'], + trigger:{target:'useCardToTargeted'}, + forced:true, + locked:false, + filter:(event)=>event.card.name=='sha', + content:function(){ + 'step 0' + player.draw(); + var level=player.countMark('shhlianhua'); + if(!level) event.finish(); + else if(level==2) event.goto(2); + else player.judge(function(result){ + return get.suit(result)=='spade'?1:-1; + }).set('judge2',(result)=>result.bool); + 'step 1' + if(result.bool) trigger.excluded.add(player); + event.finish(); + 'step 2' + var eff=get.effect(player,trigger.card,trigger.player,trigger.player); + trigger.player.chooseToDiscard('he','弃置一张牌,或令'+get.translation(trigger.card)+'对'+get.translation(player)+'无效').set('ai',function(card){ + if(_status.event.eff>0){ + return 10-get.value(card); + } + return 0; + }).set('eff',eff); + 'step 3' + if(result.bool==false){ + trigger.getParent().excluded.add(player); + } + }, + ai:{ + effect:{ + target:function(card,player,target,current){ + if(card.name=='sha'&¤t<0) return 0.7; + } + }, + }, + }, + //蒋钦 + spjianyi:{ + audio:2, + trigger:{global:'phaseEnd'}, + forced:true, + filter:function(event,player){ + return player!=event.player&&game.getGlobalHistory('cardMove',function(evt){ + if(evt.name!='lose'||evt.type!='discard') return false; + for(var i of evt.cards){ + if(get.subtype(i,false)=='equip2') return true; + } + return false; + }).length>0; + }, + content:function(){ + 'step 0' + var cards=[]; + game.getGlobalHistory('cardMove',function(evt){ + if(evt.name!='lose'||evt.type!='discard') return false; + for(var i of evt.cards){ + if(get.subtype(i,false)=='equip2') cards.push(i); + } + }); + player.chooseButton(['俭衣:获得一张防具牌',cards],true).set('ai',function(button){ + return get.value(button.link,_status.event.player); + }); + 'step 1' + if(result.bool) player.gain(result.links,'gain2'); + }, + }, + spshangyi:{ + audio:2, + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.countCards('he')>0&&game.hasPlayer((current)=>lib.skill.spshangyi.filterTarget(null,player,current)); + }, + filterCard:true, + position:'he', + check:function(card){ + return 6-get.value(card); + }, + filterTarget:function(card,player,target){ + return target!=player&&target.countCards('h')>0; + }, + content:function(){ + target.viewHandcards(player); + player.gainPlayerCard(target,'h',true,'visible'); + }, + ai:{ + order:6, + result:{ + player:0.5, + target:function(player,target){ + if(target.hasSkillTag('noh')) return 0; + return -1; + }, + }, + }, + }, + //蒋琬 + spzhenting:{ + audio:2, + trigger:{global:'useCardToTarget'}, + usable:1, + filter:function(event,player){ + return (event.card.name=='sha'||get.type(event.card,false)=='delay')&& + event.player!=player&&!event.targets.contains(player)&&player.inRange(event.target); + }, + logTarget:'target', + check:function(event,player){ + var target=event.target,source=event.player; + var eff2=get.effect(player,event.card,source,player); + if(eff2>=0) return true; + var eff1=get.effect(target,event.card,source,player); + if(eff1>=0) return false; + if(eff1) + if(event.card.name=='sha'){ + if(player.hasShan()) return true; + if(eff1>eff2) return false; + if(player.hp>2) return true; + if(player.hp==2) return eff2>eff1/3; + return false; + } + if(event.card.name=='shandian'||event.card.name=='bingliang') return true; + if(event.card.name=='lebu') return !player.needsToDiscard()&&target.needsToDiscard(); + return false; + }, + content:function(){ + 'step 0' + var target=trigger.target,evt=trigger.getParent(); + evt.triggeredTargets2.remove(target); + evt.targets.remove(target); + evt.triggeredTargets2.add(player); + evt.targets.add(player); + game.log(trigger.card,'的目标被改为了',player); + trigger.untrigger(); + 'step 1' + if(!trigger.player.countDiscardableCards(player,'h')) event._result={index:0}; + else player.chooseControl().set('choiceList',[ + '摸一张牌', + '弃置'+get.translation(trigger.player)+'的一张手牌', + ]); + 'step 2' + if(result.index==0) player.draw(); + else{ + player.line(trigger.player,'fire'); + player.discardPlayerCard(trigger.player,true,'h'); + } + }, + ai:{ + threaten:1.4, + }, + }, + spjincui:{ + audio:2, + enable:'phaseUse', + usable:1, + limited:true, + skillAnimation:true, + animationColor:'orange', + filterTarget:lib.filter.notMe, + content:function(){ + 'step 0' + player.awakenSkill('spjincui'); + game.broadcastAll(function(target1,target2){ + game.swapSeat(target1,target2); + },player,target); + 'step 1' + if(player.hp>0) player.loseHp(player.hp); + }, + ai:{ + order:5, + result:{ + player:function(player,target){ + if(player.hasUnknown()) return 0; + if(!player.countCards('h',{name:['tao','jiu']})) return 0; + var num=0,current=player.next; + while(true){ + num-=get.sgn(get.attitude(player,current)); + if(current==target) break; + current=current.next; + } + if(nummap[i]); + list.push('cancel2'); + return list; + }, + check:function(event,player){ + var map={},hs=player.getCards('h'),min=Infinity,min_suit=null; + for(var i of hs){ + var suit=get.suit(i,player); + if(!map[suit]) map[suit]=0; + map[suit]+=get.value(i); + } + for(var i in map){ + if(map[i]5||get.value(ui.selected.cards,player)>5) return 0; + return get.damageEffect(target,player,target); + }, + }, + }, + } + }, + prompt:()=>'请选择【严教】的目标', + }, + subSkill:{ + draw:{ + onremove:true, + trigger:{player:'phaseBegin'}, + forced:true, + charlotte:true, + content:function(){ + player.draw(player.countMark('spyanjiao_draw')); + player.removeSkill('spyanjiao_draw'); + }, + mark:true, + intro:{content:'下回合开始时摸#张牌'}, + }, + backup:{audio:'spyanjiao'}, + }, + ai:{ + order:1, + result:{player:1}, + }, + }, + //崔琰 + spyajun:{ + audio:2, + trigger:{player:'phaseUseBegin'}, + direct:true, + filter:function(event,player){ + var hs=player.getCards('h'); + return hs.length>0&&!player.hasSkillTag('noCompareSource')&&player.hasHistory('gain',function(evt){ + for(var i of evt.cards){ + if(hs.contains(i)) return true; + } + return false; + })&&game.hasPlayer(function(current){ + return current!=player&&player.canCompare(current); + }); + }, + content:function(){ + 'step 0' + var cards=[],hs=player.getCards('h'); + player.getHistory('gain',function(evt){ + cards.addArray(evt.cards); + }); + cards=cards.filter(function(i){ + return hs.contains(i); + }); + player.chooseCardTarget({ + prompt:get.prompt('spyajun'), + prompt2:'操作提示:选择一张本回合新获得的牌作为拼点牌,然后选择一名拼点目标', + cards:cards, + filterCard:function(card){ + return _status.event.cards.contains(card); + }, + filterTarget:function(card,player,target){ + return player.canCompare(target); + }, + ai1:function(card){ + return get.number(card)-get.value(card); + }, + ai2:function(target){ + return -get.attitude(_status.event.player,target)*Math.sqrt(5-Math.min(4,target.countCards('h')))*(target.hasSkillTag('noh')?0.5:1); + }, + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('spyajun',target); + var next=player.chooseToCompare(target); + if(!next.fixedResult) next.fixedResult={}; + next.fixedResult[player.playerid]=result.cards[0]; + } + else event.finish(); + 'step 2' + if(result.bool){ + var cards=[result.player,result.target].filterInD('d'); + if(cards.length){ + player.chooseButton(['是否将一张牌置于牌堆顶?',cards]).set('ai',function(button){ + if(get.color(button.link)=='black') return 1; + return 0; + }); + } + else event.finish(); + } + else{ + player.addMark('spyajun_less',1,false); + player.addTempSkill('spyajun_less'); + event.finish(); + } + 'step 3' + if(result.bool){ + var card=result.links[0]; + card.fix(); + ui.cardPile.insertBefore(card,ui.cardPile.firstChild); + game.updateRoundNumber(); + game.log(player,'将',card,'置于牌堆顶'); + } + }, + group:'spyajun_draw', + subSkill:{ + draw:{ + audio:'spyajun', + trigger:{player:'phaseDrawBegin2'}, + forced:true, + locked:false, + filter:function(event,player){ + return !event.numFixed; + }, + content:function(){ + trigger.num++; + }, + }, + less:{ + onremove:true, + charlotte:true, + intro:{content:'手牌上限-#'}, + mod:{ + maxHandcard:function(player,num){ + return num-player.countMark('spyajun_less'); + } + }, + }, + }, + }, + spzundi:{ + audio:2, + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.countCards('h')>0; + }, + filterCard:true, + filterTarget:true, + check:function(card){ + return 7-get.value(card); + }, + content:function(){ + 'step 0' + player.judge(); + 'step 1' + if(result.color=='black') target.draw(3); + else target.moveCard(); + }, + ai:{ + order:8, + result:{ + target:function(player,target){ + if(target.canMoveCard(true)) return 3; + return 1; + }, + }, + }, + }, //花蔓 spxiangzhen:{ trigger:{target:'useCardToBefore'}, @@ -930,7 +1554,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{global:'phaseDrawBefore'}, direct:true, filter:function(event,player){ - return player.countCards('he')>0&&player.inRange(event.player); + return player.countCards('he')>0&&!player.hasSkill('huantu_round')&&player.inRange(event.player); }, checkx:function(event,player){ var target=event.player; @@ -944,6 +1568,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }).set('checkx',lib.skill.huantu.checkx(trigger,player)); 'step 1' if(result.bool){ + player.addTempSkill('huantu_round','roundStart'); player.logSkill('huantu',trigger.player); trigger.player.gain(result.cards,player,'giveAuto'); trigger.cancel(); @@ -951,6 +1576,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, subSkill:{ + round:{ + charlotte:true, + mark:true, + intro:{content:'本轮已发动'}, + }, effect:{ audio:'huantu', trigger:{global:'phaseJieshuBegin'}, @@ -1239,13 +1869,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ 'step 0' player.judge().set('callback',function(){ - if(event.judgeResult.number<7){ + if(event.judgeResult.number>5){ var player=event.getParent(2)._trigger.player; if(get.position(card,true)=='o') player.gain(card,'gain2'); } }); 'step 1' - if(result.number>5){ + if(result.number<7){ var source=trigger.source; if(source&&source.isIn()&&source.countCards('h')>0){ player.line(source); @@ -1408,9 +2038,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var getn=function(group){ return game.countPlayer(function(current){ if(current.group!=group) return false; - if(get.attitude(current,player)>0) return 1.5; - if(current.inRange(player)) return 0.5; - return -0.3; + if(player==current) return 2; + if(get.attitude(current,player)>0) return 1; + return 1.3; }); } list.sort(function(a,b){ @@ -1436,7 +2066,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ gain:{ audio:'yinlang', trigger:{global:'phaseUseBegin'}, - direct:true, + forced:true, + locked:false, filter:function(event,player){ return event.player!=player&&event.player.group==player.storage.yaohu&&event.player.isIn()&&player.getStorage('jutu').length>0; }, @@ -1445,48 +2076,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 0' var target=trigger.player; event.target=target; - target.chooseBool('是否响应'+get.translation(player)+'的【邀虎】?','获得其武将牌上的一张“生”').set('goon',function(){ - if(get.attitude(target,player)>0) return true; - if(player.hasSha()&&!game.hasPlayer(function(current){ - return player.inRange(current)&&get.effect(current,{name:'sha'},player,player)<=0; - })) return true; - if(!player.hasCard(function(card){ - if(!get.tag(card,'damage')) return false; - var eff1=player.getUseValue(card); - _status._yaohu_ai_judging=true; - var eff2=player.getUseValue(card); - delete _status._yaohu_ai_judging; - if(eff1>0&&eff2<=0) return true; - return false; - }),'h') return true; - return false; - }()).set('ai',function(){return _status.event.goon}); + target.chooseButton(['选择获得一张“生”',player.storage.jutu],true).set('ai',function(button){ + return get.value(button.link,player); + }); 'step 1' - if(result.bool){ - player.logSkill('yaohu',target); - target.chooseButton(['选择获得一张“生”',player.storage.jutu],true).set('ai',function(button){ - return get.value(button.link,player); - }); - } - else event.finish(); - 'step 2' if(result.bool){ player.unmarkAuto('jutu',result.links); - target.gain(result.links,'gain2'); + target.gain(result.links,'gain2','fromStorage'); } - 'step 3' + 'step 2' if(game.hasPlayer(function(current){ - return current!=player&¤t.inRangeOf(target); + return current!=player&¤t!=target; })){ player.chooseTarget(true,'选择'+get.translation(target)+'使用【杀】的目标',function(card,player,target){ - return target!=player&&_status.event.source.inRange(target); + return target!=player&&target!=_status.event.source; }).set('source',target).set('ai',function(target){ var evt=_status.event; return get.effect(target,{name:'sha'},evt.source,evt.player); }); } else event.finish(); - 'step 4' + 'step 3' var target2=result.targets[0]; player.line(target2,'green'); target.chooseToUse(function(card,player,event){ @@ -1494,51 +2104,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return lib.filter.filterCard.apply(this,arguments); },'对'+get.translation(target2)+'使用一张杀,否则本回合对'+get.translation(player)+'使用伤害牌时,需交给其两张牌才能生效').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){ if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false; - return lib.filter.filterTarget.apply(this,arguments); + return lib.filter.targetEnabled.apply(this,arguments); }).set('sourcex',target2).set('addCount',false); - 'step 5' + 'step 4' if(!result.bool){ - target.markAuto('yaohu_give',[player]); - target.addTempSkill('yaohu_give','phaseUseEnd'); + var hs=target.getCards('he'); + if(!hs.length) event.finish(); + else if(hs.length<=2) event._result={bool:true,cards:hs}; + else target.chooseCard(2,true,'交给'+get.translation(player)+'两张牌','he'); } - }, - ai:{ - effect:{ - target:function(card,player,target){ - if(_status._yaohu_ai_judging&&typeof card=='object'&&card.name.indexOf('damage')==-1&&get.tag(card,'damage')) return 'zerotarget'; - }, - }, - }, - }, - give:{ - trigger:{player:'useCardToPlayer'}, - forced:true, - onremove:true, - charlotte:true, - filter:function(event,player){ - return player.getStorage('yaohu_give').contains(event.target)&&get.tag(event.card,'damage')>0; - }, - logTarget:'target', - content:function(){ - 'step 0' - if(player.countCards('he')<2) event._result={bool:false}; - else player.chooseCard('he',2,'交给'+get.translation(trigger.target)+'两张牌,否则令'+get.translation(trigger.card)+'对其无效'); - 'step 1' - if(result.bool){ - trigger.target.gain(result.cards,player,'giveAuto'); - } - else{ - trigger.targets.remove(trigger.target); - trigger.getParent().triggeredTargets1.remove(trigger.target); - trigger.untrigger(); - } - }, - ai:{ - effect:{ - player:function(card,player,target){ - if(typeof card=='object'&&card.name.indexOf('damage')==-1&&get.tag(card,'damage')&&player.getStorage('yaohu_give').contains(target)) return 'zerotarget'; - }, - }, + 'step 5' + if(result.bool) player.gain(result.cards,target,'giveAuto'); }, }, }, @@ -1793,7 +2369,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(_status.connectMode&&get.position(card)=='h') return true; return get.number(card)>num; },'he')) event._result={bool:false}; - else trigger.player.chooseCard('h',function(card){ + else trigger.player.chooseCard('he',function(card){ return get.number(card)>_status.event.number; },'交给'+get.translation(player)+'一张点数大于'+get.cnNumber(num)+'的牌,或令'+get.translation(trigger.card)+'对其无效').set('number',num).set('',function(card){ if(card.name=='shan'||card.name=='tao'||card.name=='jiu') return false; @@ -1846,7 +2422,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ !event.player.hasSkillTag('noCompareTarget')&&!player.hasSkillTag('noCompareSource')); }, check:function(event,player){ - var target=event.target,source=event.source; + var target=event.target,source=event.player; var eff1=get.effect(target,event.card,source,player); if(eff1>=0) return false; var eff2=get.effect(player,event.card,source,player); @@ -2234,7 +2810,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'chooseToCompareAfter'}, forced:true, filter:function(event,player){ - return event.getParent().name=='rechuhai'&&event.num1<13&&!event.result.bool; + return event.getParent().name=='rechuhai'&&event.num1<7&&!event.result.bool; }, content:function(){ player.awakenSkill('rechuhai'); @@ -9479,13 +10055,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event._result={bool:true,moved:[cards,[]]}; return; } - var next=player.chooseToMove('整经:请分配整理出的经典'); + var next=player.chooseToMove('整经:请分配整理出的经典',true); next.set('list',[ ['置于'+get.translation(target)+'的武将牌上',cards], ['自己获得'], ]); next.set('filterMove',function(from,to,moved){ - if(moved[0].length==1&&from==moved[0][0]) return false; + if(moved[0].length==1&&to==1&&from.link==moved[0][0]) return false; return true; }); next.set('filterOk',function(moved){ @@ -13843,7 +14419,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false; return lib.filter.targetEnabled.apply(this,arguments); }).set('sourcex',trigger.player).set('oncard',function(card){ - card.gnsheque_tag=true; + try{ + card.gnsheque_tag=true; + }catch(e){ + alert('发生了一个导致【射却】无法正常触发无视防具效果的错误。请关闭十周年UI/手杀UI等扩展以解决'); + } }); }, ai:{ @@ -13883,6 +14463,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(player.storage.yizan) return '你可以将一张基本牌当做任意基本牌使用或打出。'; return '你可以将两张牌(其中至少一张为基本牌)当做任意基本牌使用或打出。'; }, + miaojian:function(player){ + return [ + '出牌阶段限一次。你可将一张【杀】当做刺【杀】使用,或将一张锦囊牌当做【无中生有】使用。', + '出牌阶段限一次。你可将一张基本牌当做刺【杀】使用,或将一张非基本牌当做【无中生有】使用。', + '出牌阶段限一次。你可视为使用一张刺【杀】或【无中生有】。', + ][player.countMark('miaojian')]; + }, + shhlianhua:function(player){ + return [ + '当你成为【杀】的目标后,你摸一张牌。', + '当你成为【杀】的目标后,你摸一张牌。然后你进行判定,若结果为黑桃,则此【杀】对你无效。', + '当你成为【杀】的目标后,你摸一张牌。然后此【杀】的使用者选择一项:①弃置一张牌。②令此【杀】对你无效。', + ][player.countMark('shhlianhua')]; + }, }, perfectPair:{ wujing:['sunce','sunben','wuguotai'], @@ -13906,7 +14500,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xinpi:['xinpi','sp_xinpi'], duyu:['duyu','sp_duyu'], zhangwen:['sp_zhangwen','zhangwen'], - bianfuren:['bianfuren','sp_bianfuren'], + ol_bianfuren:['ol_bianfuren','sp_bianfuren'], + wangshuang:['wangshuang','sp_wangshuang'], + huaman:['huaman','sp_huaman'], + gaolan:['gaolan','sp_gaolan'], + cuiyan:['sp_cuiyan','cuiyan'], }, translate:{ liuzan:'手杀留赞', @@ -14150,7 +14748,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dongcheng:'手杀董承', chengzhao:'承诏', chengzhao_info:'一名角色的结束阶段,若你于本回合内获得了两张以上的牌,则你可以与一名其他角色拼点。若你赢,你视为对其使用一张无视防具的【杀】。', - yangyi:'杨仪', + yangyi:'手杀杨仪', duoduan:'度断', duoduan_info:'每回合限一次,当你成为【杀】的目标后,你可以重铸一张牌。若如此做,你选择一项:①令使用者摸两张牌,且此【杀】无效。②令使用弃置一张牌,且你不能响应此【杀】。', gongsun:'共损', @@ -14168,7 +14766,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shuaiyan_info:'弃牌阶段开始时,若你的手牌数大于1,则你可以展示所有手牌,然后你令一名其他角色交给你一张牌。', zhengxuan:'郑玄', zhengjing:'整经', - zhengjing_info:'出牌阶段,你可以整理卡牌。然后,你将整理出的卡牌置于一名角色的武将牌上。该角色的准备阶段获得这些牌,且跳过此回合的判定和摸牌阶段。', + zhengjing_info:'出牌阶段,你可以整理卡牌。然后,你将整理出的卡牌中的至少一张作为“经”置于一名角色的武将牌上,然后获得其余的牌。该角色的准备阶段获得这些牌,且跳过此回合的判定和摸牌阶段。', zhengjing2:'整经', mobile_yijiang:'武将设计征集大赛', @@ -14546,7 +15144,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shuchen:'疏陈', shuchen_info:'锁定技,当有角色进入濒死状态时,若仁库中的牌数大于四,则你获得仁库中的所有牌,然后其回复1点体力。', rechuhai:'除害', - rechuhai_info:'使命技。①出牌阶段限一次,你可以摸一张牌,然后和一名其他角色拼点。若你赢,则你观看其手牌,并从牌堆/弃牌堆中获得其手牌中包含的类型的牌各一张,且当你于此阶段内对其造成伤害后,你将牌堆/弃牌堆中的一张装备牌置于你的一个空置装备栏内。②当你因发动〖除害①〗而展示拼点牌时,你令此牌的点数+X(X=(4-你装备区的牌数))。③使命:当有装备牌进入你的装备区后,若你的装备区内有至少三张牌,则你将体力值回复至上限,失去〖乡害〗并获得〖彰名〗。④失败:当你因发动〖除害①〗发起的拼点没赢时,若你的最终点数不大于Q点,则你触发使命失败分支。', + rechuhai_info:'使命技。①出牌阶段限一次,你可以摸一张牌,然后和一名其他角色拼点。若你赢,则你观看其手牌,并从牌堆/弃牌堆中获得其手牌中包含的类型的牌各一张,且当你于此阶段内对其造成伤害后,你将牌堆/弃牌堆中的一张装备牌置于你的一个空置装备栏内。②当你因发动〖除害①〗而展示拼点牌时,你令此牌的点数+X(X=(4-你装备区的牌数))。③使命:当有装备牌进入你的装备区后,若你的装备区内有至少三张牌,则你将体力值回复至上限,失去〖乡害〗并获得〖彰名〗。④失败:当你因发动〖除害①〗发起的拼点没赢时,若你的最终点数不大于6,则你触发使命失败分支。', zhangming:'彰名', zhangming_info:'锁定技。①你使用的♣牌不能被其他角色响应。②每回合限一次,当你对其他角色造成伤害后,你随机弃置其一张手牌,然后你从牌堆或弃牌堆中获得与其展示牌类型不同类型的牌各一张(若其没有手牌,则你改为从牌堆或弃牌堆中获得所有类型牌各一张),且以此法获得的牌不计入本回合的手牌上限。', xin_sunluban:'手杀孙鲁班', @@ -14581,7 +15179,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jutu:'据土', jutu_info:'锁定技,准备阶段,你获得所有你武将牌上的“生”,然后摸X+1张牌,然后将X张牌置于你的武将牌上,称为“生”(X为你因〖邀虎〗选择势力的角色数量)。', yaohu:'邀虎', - yaohu_info:'每轮限一次,你的回合开始时,你须选择场上一个势力。该势力角色的出牌阶段开始时,其可以获得你的一张“生”,然后其须选择一项:①对你指定的一名其攻击范围内的其他角色使用一张【杀】;②直到本阶段结束时,其使用伤害类牌指定你为目标时,须交给你两张牌,否则取消之。', + yaohu_info:'每轮限一次,你的回合开始时,你须选择场上一个势力。该势力其他角色的出牌阶段开始时,其可以获得你的一张“生”,然后其须选择一项:①对你指定的另一名的其他角色使用一张【杀】(无距离和次数限制);②交给你两张牌。', rehuaibi:'怀璧', rehuaibi_info:'主公技,锁定技,你的手牌上限+X(X为你因〖邀虎〗选择势力的角色数量)。', simafu:'司马孚', @@ -14613,16 +15211,51 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zaoli_info:'锁定技。①你不能于回合内使用你手牌中不为本回合获得的牌。②当你使用或打出手牌时,你获得一个“厉”(至多4个)。③回合开始时,若你有“厉”,则你移去所有“厉”并弃置任意张牌,然后摸X+Y张牌并失去1点体力(X为你移去的标记数,Y为你弃置的牌数)。', sp_gaolan:'手杀高览', spjungong:'峻攻', - spjungong_info:'出牌阶段,你可失去X+1点体力或弃置X+1张牌,视为对一名其他角色使用【杀】(不计入次数和距离限制)。若你因此【杀】造成了伤害,则你令此技能失效直到回合结束。', + spjungong_info:'出牌阶段,你可失去X+1点体力或弃置X+1张牌,视为对一名其他角色使用【杀】(不计入次数和距离限制,X为你本回合内发动过〖等力〗的次数)。若你因此【杀】造成了伤害,则你令此技能失效直到回合结束。', spdengli:'等力', spdengli_info:'当你使用【杀】指定目标后,或成为【杀】的目标后,若使用者和目标的体力值相等,则你摸一张牌。', sp_huaman:'手杀花蔓', spxiangzhen:'象阵', spxiangzhen_info:'锁定技。①【南蛮入侵】对你无效。②当有角色使用的【南蛮入侵】结算结束后,若有角色因此牌受到过伤害,则你和使用者各摸一张牌。', spfangzong:'芳踪', - spfangzong_info:'锁定技。若你于当前回合内未发动过〖嬉战〗选择过选项二,则:①你不能于回合内使用具有伤害标签的牌指定攻击范围内的角色为目标。②攻击范围内包含你的角色不能使用是呀具有伤害标签的牌指定你为目标。③结束阶段,你将手牌摸至X张(X为场上存活人数且至多为8)', + spfangzong_info:'锁定技。若你于当前回合内未发动过〖嬉战〗选择过选项二,则:①你不能于回合内使用具有伤害标签的牌指定攻击范围内的角色为目标。②攻击范围内包含你的角色不能使用具有伤害标签的牌指定你为目标。③结束阶段,你将手牌摸至X张(X为场上存活人数且至多为8)', spxizhan:'嬉战', spxizhan_info:'其他角色的回合开始时,你须选择一项:①失去1点体力。②弃置一张牌。然后若此牌的花色为:♠,其视为使用一张【酒】;♥,你视为使用一张【无中生有】;♣,你视为对其使用【铁索连环】;♦:你视为对其使用火【杀】(无距离限制)。', + sp_cuiyan:'手杀崔琰', + spyajun:'雅俊', + spyajun_info:'①摸牌阶段,你令额定摸牌数+1。②出牌阶段开始时,你可以用一张本回合获得的牌与其他角色拼点。若你赢,则你可将其中一张拼点牌置于牌堆顶。若你没赢,你本回合的手牌上限-1。', + spzundi:'尊嫡', + spzundi_info:'出牌阶段限一次,你可以弃置一张手牌并选择一名角色,然后你进行判定。若结果为:黑色,其摸三张牌;红色,其可以移动场上的一张牌。', + sp_zhangchangpu:'手杀张昌蒲', + spdifei:'抵诽', + spdifei_info:'锁定技。每回合限一次,当你受到伤害后,你摸一张牌或弃置一张牌,然后展示所有手牌。若此伤害的渠道为有花色的牌且你的手牌中没有与此牌花色相同的牌,则你回复1点体力。', + spyanjiao:'严教', + spyanjiao_info:'出牌阶段限一次。你可以将手牌中一种花色的所有牌交给一名其他角色,对其造成1点伤害。然后你于自己的下回合开始时摸等量的牌。', + sp_jiangwan:'蒋琬', + spzhenting:'镇庭', + spzhenting_info:'每回合限一次。当你攻击范围内的角色成为【杀】或延时锦囊的目标时,若你不是此牌的使用者且不是此牌的目标,则你可以将此目标改为自己。然后你选择一项:①弃置使用者的一张手牌。②摸一张牌。', + spjincui:'尽瘁', + spjincui_info:'限定技。出牌阶段,你可以和一名其他角色交换位置,然后失去X点体力(X为你的体力值)。', + sp_jiangqing:'蒋钦', + spjianyi:'俭衣', + spjianyi_info:'锁定技。其他角色的回合结束时,若弃牌堆中有于本回合内因弃置而进入弃牌堆的防具牌,则你获得其中一张。', + spshangyi:'尚义', + spshangyi_info:'出牌阶段限一次。你可以弃置一张牌并选择一名其他角色。其观看你的手牌,然后你观看其手牌并获得其中的一张。', + sunhanhua:'孙寒华', + chongxu:'冲虚', + chongxu_info:'出牌阶段限一次,你可以演奏《鳥の詩》的前奏,并根据完成度来获得相应的分数(至多五分)。然后你可修改〖妙剑〗或〖莲华〗(消耗3分),并使用剩余的分数进行摸牌(每张2分)。', + miaojian:'妙剑', + miaojian_info:'出牌阶段限一次。你可将一张【杀】当做刺【杀】使用,或将一张锦囊牌当做【无中生有】使用。', + miaojian1:'妙剑·改', + miaojian1_info:'出牌阶段限一次。你可将一张基本牌当做刺【杀】使用,或将一张非基本牌当做【无中生有】使用。', + miaojian2:'妙剑·极', + miaojian2_info:'出牌阶段限一次。你可视为使用一张刺【杀】或【无中生有】。', + shhlianhua:'莲华', + shhlianhua_info:'当你成为【杀】的目标后,你摸一张牌。', + shhlianhua1:'莲华·改', + shhlianhua1_info:'当你成为【杀】的目标后,你摸一张牌。然后你进行判定,若结果为黑桃,则此【杀】对你无效。', + shhlianhua2:'莲华·极', + shhlianhua2_info:'当你成为【杀】的目标后,你摸一张牌。然后此【杀】的使用者选择一项:①弃置一张牌。②令此【杀】对你无效。', mobile_standard:'手杀异构·标准包', mobile_shenhua:'手杀异构·神话再临', @@ -14636,6 +15269,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mobile_shijizhi:'始计篇·智', mobile_shijixin:'始计篇·信', mobile_shijiyong:'始计篇·勇', + mobile_shijiyan:'始计篇·严', } }; }); diff --git a/character/offline.js b/character/offline.js index 1fb30a806..057c7bd6b 100644 --- a/character/offline.js +++ b/character/offline.js @@ -8,11 +8,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ offline_star:["sp_xiahoushi","jsp_zhaoyun","huangjinleishi","sp_pangtong","sp_daqiao","sp_ganning","sp_xiahoudun","sp_lvmeng","sp_zhangfei","sp_liubei"], offline_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'], offline_luanwu:["ns_lijue","ns_zhangji","ns_fanchou"], - offline_yongjian:["ns_chendao","yj_caoang"], + offline_yongjian:["ns_chendao","yj_caoang","yj_caocao"], offline_others:["ns_jiaxu","ns_caoanmin","jsp_liubei","longyufei"], }, }, character:{ + yj_caocao:['male','qun',4,['yjxiandao','yjsancai','yjyibing']], longyufei:['female','shu',3,['longyi','zhenjue']], sp_liubei:['male','shu',4,['zhaolie','shichou'],['zhu']], sp_zhangfei:['male','shu',4,['jie','dahe']], @@ -63,6 +64,107 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //群曹操 + yjxiandao:{ + trigger:{player:'_yongjian_zengyuEnd'}, + usable:1, + forced:true, + locked:false, + filter:function(event,player){ + return !event._zengyu_denied&&event.target.isIn(); + }, + logTarget:'target', + content:function(){ + 'step 0' + event.target=trigger.target; + event.card=trigger.cards[0]; + event.target.markAuto('yjxiandao',[get.suit(event.card,false)]) + event.target.addTempSkill('yjxiandao_block'); + 'step 1' + var type=get.type(card,false); + if(type=='trick') player.draw(2); + if(type=='equip'){ + if(target.countGainableCards(player,'he',function(cardx){ + return cardx!=card; + })>0) player.gainPlayerCard(target,'he',true).set('card',card).set('filterButton',function(button){ + return button.link!=_status.event.card; + }); + if(get.subtype(card,false)=='equip1') target.damage(); + } + }, + subSkill:{ + block:{ + charlotte:true, + onremove:true, + mod:{ + cardEnabled:function(card,player){ + if(player.getStorage('yjxiandao_block').contains(get.suit(card))) return false; + }, + cardRespondable:function(card,player){ + if(player.getStorage('yjxiandao_block').contains(get.suit(card))) return false; + }, + cardSavable:function(card,player){ + if(player.getStorage('yjxiandao_block').contains(get.suit(card))) return false; + }, + }, + mark:true, + intro:{content:'不能使用或打出$牌'}, + }, + }, + }, + yjsancai:{ + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.countCards('h')>0; + }, + content:function(){ + 'step 0' + player.showHandcards(); + var hs=player.getCards('h'); + if(hs.length>1){ + var type=get.type2(hs[0],player); + for(var i=1;i0; @@ -149,7 +254,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(event.skill!='longyi_backup') return false; for(var i of event.cards){ var type=get.type2(i,player); - if(type=='basic'||type=='trick') return true; + if(type=='equip'||type=='trick') return true; } return false; }, @@ -2573,6 +2678,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ longyi_info:'你可将所有手牌当做任意基本牌使用或打出。若此牌对应的实体牌中:有锦囊牌,你摸一张牌;有装备牌,此牌不可被响应。', zhenjue:'阵绝', zhenjue_info:'一名角色的结束阶段开始时,若你没有手牌,则你可以令其选择一项:①弃置一张牌。②令你摸一张牌。', + yj_caocao:'SP曹操', + yjxiandao:'献刀', + yjxiandao_info:'每回合限一次。当你对其他角色发动〖赠予〗后,你令其不能使用或打出与本次赠予移动的牌A花色相同的牌直到回合结束。然后若牌A:为锦囊牌,你摸两张牌。为装备牌,你获得其一张不为A的牌。为武器牌,你对其造成1点伤害。', + yjsancai:'散财', + yjsancai_info:'出牌阶段限一次,你可以展示所有手牌。若这些牌的类别均相同,则你可以发动一次〖赠予〗(可以选择任意手牌)。', + yjyibing:'义兵', + yjyibing_info:'当你不因〖赠予〗而于摸牌阶段外获得牌时,你可以将此次获得的所有牌当做【杀】使用(无距离限制且不计入使用次数)。', offline_star:'桌游志·SP', offline_sticker:'桌游志·贴纸', diff --git a/character/rank.js b/character/rank.js index 0fe40b609..d9b376049 100644 --- a/character/rank.js +++ b/character/rank.js @@ -259,6 +259,7 @@ window.noname_character_rank={ 're_nanhualaoxian', 'fuqian', 'liuyong', + 'sunhanhua', 'key_misuzu', 'key_sunohara', 'key_umi', @@ -487,6 +488,7 @@ window.noname_character_rank={ 'ol_huaxin', 'qiaozhou', 're_xunchen', + 'sp_cuiyan', ], bp:[ 'chess_diaochan', @@ -718,6 +720,10 @@ window.noname_character_rank={ 'sp_gaolan', 'simafu', 'mayuanyi', + 'fengfangnv', + 'ol_yangyi', + 'sp_zhangchangpu', + 'sp_jiangwan', ], b:[ 'diy_feishi', @@ -923,6 +929,7 @@ window.noname_character_rank={ 'sp_huaman', 'sp_wangshuang', 'yanpu', + 'sp_jiangqing', ], bm:[ 'diy_xizhenxihong', @@ -1074,6 +1081,7 @@ window.noname_character_rank={ 're_zoushi', 'yuejiu', 'xin_sunluban', + 'ol_bianfuren', ], c:[ 'xiahoudun', @@ -1225,6 +1233,7 @@ window.noname_character_rank={ 'panshu', 're_nanhualaoxian', 'shen_sunce', + 'sunhanhua', 'key_yuri', 'key_yuzuru', 'sp_key_kanade', @@ -1251,6 +1260,7 @@ window.noname_character_rank={ 'shen_taishici', 'shen_xunyu', 'tw_gexuan', + 'fengfangnv', 'key_tomoya', 'key_masato', 'key_shiorimiyuki', @@ -1785,6 +1795,9 @@ window.noname_character_rank={ 'simafu', 'mayuanyi', 'sp_huaman', + 'ol_yangyi', + 'sp_cuiyan', + 'sp_zhangchangpu', ], junk:[ 'sunshao', diff --git a/character/refresh.js b/character/refresh.js index ee8d77214..75f51191d 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -36,7 +36,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xin_lingtong:['male','wu',4,['decadexuanfeng','yongjin']], xin_liubiao:['male','qun',3,['decadezishou','decadezongshi']], re_caoxiu:['male','wei',4,['qianju','reqingxi']], - re_sunxiu:['male','wu',3,['reyanzhu','rexingxue','zhaofu'],['zhu']], + re_sunxiu:['male','wu',3,['reyanzhu','rexingxue','xinzhaofu'],['zhu']], ol_dengai:['male','wei',4,['oltuntian','olzaoxian']], re_gongsunzan:['male','qun',4,['reqiaomeng','reyicong']], re_manchong:['male','wei',3,['rejunxing','yuce']], @@ -86,7 +86,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_huanggai:['male','wu',4,['rekurou','zhaxiang']], re_lvbu:['male','qun',5,['wushuang','new_liyu']], re_huatuo:['male','qun',3,['jijiu','new_reqingnang']], - re_liubei:['male','shu',4,['rerende','jijiang'],['zhu']], + re_liubei:['male','shu',4,['rerende','rejijiang'],['zhu']], re_diaochan:['female','qun',3,['lijian','rebiyue']], re_huangyueying:['female','shu',3,['rejizhi','reqicai']], re_sunquan:['male','wu',4,['rezhiheng','rejiuyuan'],['zhu']], @@ -95,7 +95,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_zhugeliang:['male','shu',3,['reguanxing','kongcheng']], re_huaxiong:["male","qun",6,["reyaowu"]], - re_zhangjiao:['male','qun',3,['xinleiji','xinguidao','huangtian'],['zhu']], + re_zhangjiao:['male','qun',3,['xinleiji','xinguidao','xinhuangtian'],['zhu']], xin_yuji:['male','qun',3,['reguhuo']], re_zuoci:['male','qun',3,['rehuashen','rexinsheng']], @@ -139,6 +139,172 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_xushu:['zhaoyun','sp_zhugeliang'], }, skill:{ + //新主公技 + xinhuangtian:{ + unique:true, + audio:'xinhuangtian2', + audioname:['zhangjiao','re_zhangjiao'], + global:'xinhuangtian2', + zhuSkill:true, + }, + xinhuangtian2:{ + audio:2, + enable:'phaseUse', + discard:false, + lose:false, + delay:false, + line:true, + direct:true, + clearTime:true, + prepare:function(cards,player,targets){ + targets[0].logSkill('xinhuangtian'); + }, + prompt:function(){ + var player=_status.event.player; + var list=game.filterPlayer(function(target){ + return target!=player&&target.hasZhuSkill('xinhuangtian',player); + }); + var str='将一张【闪】或【闪电】交给'+get.translation(list); + if(list.length>1) str+='中的一人'; + return str; + }, + filter:function(event,player){ + if(player.group!='qun') return false; + if(!game.hasPlayer(function(target){ + return target!=player&&target.hasZhuSkill('xinhuangtian',player)&&!target.hasSkill('xinhuangtian3'); + })) return false; + return player.hasCard(function(card){ + return lib.skill.xinhuangtian2.filterCard(card,player); + },'h'); + }, + filterCard:function(card,player){ + return get.name(card,player)=='shan'||get.suit(card,player)=='spade'; + }, + log:false, + visible:true, + filterTarget:function(card,player,target){ + return target!=player&&target.hasZhuSkill('xinhuangtian',player)&&!target.hasSkill('xinhuangtian3'); + }, + //usable:1, + //forceaudio:true, + content:function(){ + target.gain(cards,player,'giveAuto'); + target.addTempSkill('xinhuangtian3','phaseUseEnd'); + }, + ai:{ + expose:0.3, + order:10, + result:{ + target:5 + } + } + }, + xinhuangtian3:{}, + rejijiang:{ + audio:'jijiang1', + audioname:['liushan','re_liubei','re_liushan','ol_liushan'], + unique:true, + group:['rejijiang1','rejijiang3'], + zhuSkill:true, + filter:function(event,player){ + if(!player.hasZhuSkill('rejijiang')||!game.hasPlayer(function(current){ + return current!=player&¤t.group=='shu'; + })) return false; + return !event.jijiang&&(event.type!='phase'||!player.hasSkill('jijiang3')); + }, + enable:['chooseToUse','chooseToRespond'], + viewAs:{name:'sha'}, + filterCard:function(){return false}, + selectCard:-1, + ai:{ + order:function(){ + return get.order({name:'sha'})+0.3; + }, + respondSha:true, + skillTagFilter:function(player){ + if(!player.hasZhuSkill('rejijiang')||!game.hasPlayer(function(current){ + return current!=player&¤t.group=='shu'; + })) return false; + }, + }, + }, + rejijiang1:{ + audio:'jijiang1', + audioname:['liushan','re_liubei','re_liushan','ol_liushan'], + trigger:{player:['useCardBegin','respondBegin']}, + logTarget:'targets', + filter:function(event,player){ + return event.skill=='rejijiang'; + }, + forced:true, + content:function(){ + "step 0" + delete trigger.skill; + trigger.getParent().set('jijiang',true); + "step 1" + if(event.current==undefined) event.current=player.next; + if(event.current==player){ + player.addTempSkill('jijiang3'); + event.finish(); + trigger.cancel(); + trigger.getParent().goto(0); + } + else if(event.current.group=='shu'){ + var next=event.current.chooseToRespond('是否替'+get.translation(player)+'打出一张杀?',{name:'sha'}); + next.set('ai',function(){ + var event=_status.event; + return (get.attitude(event.player,event.source)-2); + }); + next.set('source',player); + next.set('jijiang',true); + next.set('skillwarn','替'+get.translation(player)+'打出一张杀'); + next.noOrdering=true; + next.autochoose=lib.filter.autoRespondSha; + } + else{ + event.current=event.current.next; + event.redo(); + } + "step 2" + if(result.bool){ + event.finish(); + trigger.card=result.card; + trigger.cards=result.cards; + trigger.throw=false; + if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ + event.current.ai.shown+=0.3; + if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; + } + } + else{ + event.current=event.current.next; + event.goto(1); + } + } + }, + rejijiang3:{ + trigger:{global:['useCard','respond']}, + usable:1, + direct:true, + filter:function(event,player){ + return event.card.name=='sha'&&event.player!=player&&event.player.group=='shu'&&event.player.isIn()&& + event.player!=_status.currentPhase&&player.hasZhuSkill('rejijiang'); + }, + content:function(){ + 'step 0' + trigger.player.chooseBool('激将:是否令'+get.translation(player)+'摸一张牌?').set('ai',function(){ + var evt=_status.event; + return get.attitude(evt.player,evt.getParent().player)>0; + }); + 'step 1' + if(result.bool){ + player.logSkill('rejijiang'); + trigger.player.line(player,'fire'); + player.draw(); + } + else player.storage.counttrigger.rejijiang3--; + }, + }, //鲁肃 olhaoshi:{ trigger:{player:'phaseDrawBegin2'}, @@ -3742,6 +3908,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ locked:false, audio:'longdan_sha', audioname:['re_zhaoyun'], + audioname2:{tongyuan:'longdan_tongyuan'}, hiddenCard:function(player,name){ if(name=='tao') return player.countCards('hs','jiu')>0; if(name=='jiu') return player.countCards('hs','tao')>0; @@ -5214,7 +5381,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ juexingji:true, zhuSkill:true, keepSkill:true, - derivation:['jijiang','sishu'], + derivation:['rejijiang','sishu'], trigger:{player:'phaseZhunbeiBegin'}, forced:true, filter:function(event,player){ @@ -5231,13 +5398,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ game.log(player,'获得了技能','#g【思蜀】','和','#g【激将】'); player.addSkill('sishu'); if(player.hasSkill('olruoyu')){ - player.addSkill('jijiang'); + player.addSkill('rejijiang'); } else{ - player.addAdditionalSkill('olruoyu','jijiang'); + player.addAdditionalSkill('olruoyu','rejijiang'); } if(!player.isZhu){ - player.storage.zhuSkill_olruoyu=['jijiang']; + player.storage.zhuSkill_olruoyu=['rejijiang']; } else{ event.trigger('zhuUpdate'); @@ -5366,7 +5533,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var num=game.countPlayer(function(current){ return current.group=='qun'; }) - if(num) player.addMark('olxueyi',num) + if(num) player.addMark('olxueyi',num*2); }, marktext:'裔', intro:{ @@ -5375,17 +5542,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, mod:{ maxHandcard:function(player,num){ - if(player.hasZhuSkill('olxueyi')) return num+2*player.countMark('olxueyi'); + if(player.hasZhuSkill('olxueyi')) return num+player.countMark('olxueyi'); }, }, group:'olxueyi_draw', }, olxueyi_draw:{ audio:'olxueyi', - trigger:{player:'phaseBegin'}, + trigger:{player:'phaseUseBegin'}, prompt2:'弃置一枚「裔」标记,然后摸一张牌', check:function(event,player){ - return !player.hasJudge('lebu')&&player.getUseValue('wanjian')>0; + return player.getUseValue('wanjian')>0||!player.needsToDiscard(); }, filter:function(event,player){ return player.hasZhuSkill('olxueyi')&&player.hasMark('olxueyi'); @@ -7596,40 +7763,29 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, rejiuyuan:{ - global:'rejiuyuan2', audio:2, zhuSkill:true, - }, - rejiuyuan2:{ - audio:'jiuyuan', - forceaudio:true, - trigger:{player:'useCardToPlayer'}, - filter:function(event,player){ - if(event.card.name!='tao') return false; - if(player.group!='wu') return false; - if(event.target!=player) return false; - return game.hasPlayer(function(target){ - return player!=target&&!event.targets.contains(target)&&target.isDamaged()&&target.hp0; + }); 'step 1' if(result.bool){ - var target=result.targets[0]; - target.logSkill('rejiuyuan'); - player.line('rejiuyuan2',target,'green'); - trigger.getParent().targets.remove(player); - trigger.getParent().targets.push(target); - player.draw(); + player.logSkill('rejiuyuan'); + trigger.player.line(player,'green'); + trigger.cancel(); + player.recover(); + trigger.player.draw(); } - } + }, }, rezhiheng:{ audio:2, @@ -9918,7 +10074,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ olluanji_info:'你可以将两张花色相同的手牌当做【万箭齐发】使用。当你使用【万箭齐发】选择目标后,你可以为此牌减少一个目标。', olluanji_remove:'乱击', olxueyi:'血裔', - olxueyi_info:'主公技,锁定技,游戏开始时,你获得X个“裔”标记。回合开始时,你可以移去一个“裔”标记,然后摸一张牌。你每有一个“裔”标记,手牌上限便+2。(X为场上群势力角色的数目)', + olxueyi_info:'主公技,锁定技。①游戏开始时,你获得2X个“裔”标记(X为场上群势力角色的数目)。②出牌阶段开始时,你可以移去一个“裔”标记,然后摸一张牌。③你的手牌上限+Y(Y为“裔”标记数)。', olxueyi_draw:'血裔', olhunzi:'魂姿', olhunzi_info:'觉醒技,准备阶段,若你的体力值为1,你减1点体力上限并回复1点体力,然后获得技能〖英姿〗和〖英魂〗。', @@ -9933,6 +10089,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xinleiji_faq:'不能触发〖雷击〗的判定', xinleiji_faq_info:'
董卓/界董卓〖暴虐〗
黄巾雷使〖助祭〗
羊徽瑜〖弘仪〗
鸣濑白羽〖孤影〗', xinguidao_info:'一名角色的判定牌生效前,你可以打出一张黑色牌作为判定牌并获得原判定牌。若你以此法打出的牌为黑桃2-9,则你摸一张牌。', + xinhuangtian:'黄天', + xinhuangtian2:'黄天', + xinhuangtian_info:'主公技。其他群势力角色的出牌阶段限一次,该角色可以交给一张【闪】或黑桃手牌。', reqiangxi:"强袭", "reqiangxi_info":"出牌阶段对每名其他角色限一次,你可以选择一项:1. 失去一点体力并对你攻击范围内的一名其他角色造成一点伤害;2. 弃置一张武器牌并对你攻击范围内的一名其他角色造成一点伤害。", rehuoji:"火计", @@ -9967,7 +10126,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "new_yajiao":"涯角", "new_yajiao_info":"每当你于回合外使用或打出牌时,你可以亮出牌堆顶的一张牌,并将其交给一名角色。若此牌与你此次使用或打出的牌类别不同,则你弃置一张牌。", "new_liyu":"利驭", - "new_liyu_info":"当你使用【杀】对一名其他角色造成伤害后,你可以获得其一张牌。若此牌不为装备牌,则其摸一张牌。若此牌为装备牌,则视为你对其选择的另一名角色使用一张【决斗】。", + "new_liyu_info":"当你使用【杀】对一名其他角色造成伤害后,你可以获得其区域内的一张牌。若此牌不为装备牌,则其摸一张牌。若此牌为装备牌,则视为你对其选择的另一名角色使用一张【决斗】。", "new_retuxi":"突袭", "new_retuxi_info":"摸牌阶段摸牌时,你可以少摸任意张牌,然后获得等量的角色的各一张手牌。", "new_retuxi_info_guozhan":"摸牌阶段摸牌时,你可以少摸至多两张牌,然后获得等量的角色的各一张手牌。", @@ -10378,6 +10537,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ oldimeng:'缔盟', oldimeng_info:'出牌阶段限一次,你可令两名满足X≤Y的其他角色交换手牌并获得如下效果:出牌阶段结束时,你弃置X张牌(X为这两名角色手牌数之差的绝对值;Y为你的手牌数)。', + rejijiang:'激将', + rejijiang1:'激将', + rejijiang2:'激将', + rejijiang_info:'主公技。①当你需要使用或打出【杀】时,你可以令其他蜀势力角色依次选择是否打出一张【杀】。若有角色响应,则你视为使用或打出了此【杀】。②每回合限一次。当有蜀势力角色于回合外使用或打出【杀】时,其可以令你摸一张牌。', + + refresh_standard:'界限突破·标', refresh_feng:'界限突破·风', refresh_huo:'界限突破·火', diff --git a/character/shenhua.js b/character/shenhua.js index f977d3a59..741d8d34a 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -205,7 +205,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.awakenSkill('hongju'); var cards=player.getStorage('zhengrong'); if(!cards.length||!player.countCards('h')){ - event.finish(); + event.goto(2); return; } var next=player.chooseToMove('征荣:是否交换“荣”和手牌?'); @@ -1011,6 +1011,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "drlt_congjian":{ audio:2, + audioname2:{tongyuan:'ocongjian_tongyuan'}, trigger:{ target:"useCardToTargeted", }, @@ -2309,7 +2310,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, preHidden:true, check:function(event,player){ - return get.attitude(player,target.player)<=0; + return get.attitude(player,event.target)<=0; }, logTarget:'target', content:function(){ @@ -3086,7 +3087,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ juexingji:true, zhuSkill:true, keepSkill:true, - derivation:'jijiang', + derivation:'rejijiang', trigger:{player:'phaseZhunbeiBegin'}, forced:true, filter:function(event,player){ @@ -3101,13 +3102,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 1' player.recover(); if(player.hasSkill('ruoyu')){ - player.addSkill('jijiang'); + player.addSkill('rejijiang'); } else{ - player.addAdditionalSkill('ruoyu','jijiang'); + player.addAdditionalSkill('ruoyu','rejijiang'); } if(!player.isZhu){ - player.storage.zhuSkill_ruoyu=['jijiang']; + player.storage.zhuSkill_ruoyu=['rejijiang']; } else{ event.trigger('zhuUpdate'); diff --git a/character/sp.js b/character/sp.js index 6468aca39..d013cafd8 100755 --- a/character/sp.js +++ b/character/sp.js @@ -5,29 +5,31 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, characterSort:{ sp:{ - sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","ganfuren","bianfuren"], - sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi'], + sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","ganfuren","ol_bianfuren"], + sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi'], sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun"], sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu','ol_xinxianying',"daxiaoqiao"], sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan'], sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng"], sp_liesi:['mizhu'], sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao'], - sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang'], + sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv'], sp_wanglang:['wanglang'], sp_tongque:["sp_fuwan","sp_fuhuanghou","sp_jiben"], sp_zhongdan:["cuiyan","huangfusong"], - sp_guozhan2:["mateng","tianfeng","sp_dongzhuo","jiangfei","jiangqing","liqueguosi","lvfan","cuimao","jiling","zhangren","zongyu"], + sp_guozhan2:["mateng","tianfeng","sp_dongzhuo","jiangfei","liqueguosi","lvfan","cuimao","jiling","zhangren","zongyu"], //sp_single:["niujin"], sp_others:["hanba","caiyang"], }, }, characterFilter:{}, character:{ + fengfangnv:['female','qun',3,['zhuangshu','chuiti']], + ol_yangyi:['male','shu',3,['oljuanxia','oldingcuo']], zuofen:['female','jin',3,['zhaosong','lisi']], ol_wangrong:['female','qun',3,['olfengzi','oljizhan','olfusong']], ol_dengzhi:['male','shu',3,['olxiuhao','olsujian']], - bianfuren:['female','wei',3,['fuwei','yuejian']], + ol_bianfuren:['female','wei',3,['fuwei','yuejian']], duxi:['male','wei',3,['quxi','bixiong']], gaogan:['male','qun',4,['juguan']], huangchengyan:['male','qun',3,['guanxu','yashi']], @@ -129,7 +131,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yuejin:['male','wei',4,['xiaoguo']], sp_dongzhuo:['male','qun',5,['hengzheng']], jiangfei:['male','shu',3,['reshengxi','shoucheng']], - jiangqing:['male','wu',4,['shangyi','zniaoxiang']], + //jiangqing:['male','wu',4,['shangyi','zniaoxiang']], hetaihou:['female','qun',3,['zhendu','qiluan']], //kongrong:['male','qun',3,['lirang','mingshi']], dingfeng:['male','wu',4,['reduanbing','refenxun']], @@ -152,6 +154,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //kaisa:["male","western",4,["zhengfu"]], }, characterIntro:{ + fengfangnv:'冯方之女,司隶人,袁术妻妾。在史书中被记载为天姿国色的美人。钱大昭在《三国志辨疑》中认为冯方当为冯芳误字,冯方女实为是西园八校尉之一的冯芳的女儿。然而,在曹丕《典论》、《九州春秋》等书籍都有提及她,皆作冯方女字样,并无一书写作冯芳女或是明提是冯芳之女。最关键的一点是,冯芳是荆州西陵县人,她女儿不可能是司隶籍,冯芳也没担任过任何与司隶有关的官职。同时期名字为“○女”的并不少见,如施绩女儿施淑女,曹植女儿曹行女,夏侯令女等。', zuofen:'左芬(约253年-300年4月23日),出土墓志作左棻,字兰芝,齐国临淄(今山东临淄)人,西晋诗人。少好学,善属文。为晋武帝贵人。今存诗、赋、颂、赞、诔等20余篇,大都为应诏而作,《离思赋》最著名。原有集,已失传。', duxi:'杜袭(生卒年不详),字子绪,颍川郡定陵县(今河南省襄城县)人。三国时期魏国重臣,东汉末年颍川“四大名士”之一,济阴太守杜根的孙子。建安初年,投奔司空曹操,历任西鄂县令、议郎、丞相军咨祭酒、魏王侍中、丞相长史、驸马都尉。魏文帝时期,出任督军粮御史、尚书,累封武平亭侯。魏明帝时期,担任大将军曹真和司马懿的军师,抵御蜀国进攻,拜太中大夫,受封平阳乡侯。卒于任上,获赠少府,谥号为定。', gaogan:'高干(?~206年),字元才,陈留郡圉县(今河南杞县圉镇)人。东汉末年并州割据将领,蜀郡太守高躬之子、大将军袁绍外甥。出身陈留高氏,才志弘邈,文武秀出。早年联合荀谌游说韩馥让出冀州牧。袁绍平定河北后,以为并州牧。官渡之战时,在西线配合作战。因曹操早有准备,没有实质进展。袁绍死后,袁谭、袁尚与曹操大战于黎阳郡时,联合郭援攻打平阳郡,为马腾为首关中将领所败,郭援为庞德所斩。袁尚败走中山郡后,出降于曹操,仍为并州刺史。建安十年,兴兵反曹,固守壶关,成功抵挡乐进进攻。得知曹操亲征后,留下别将守城,亲往匈奴呼厨泉求救,没有成功。引兵攻略河东郡,屡为钟繇、张既所败。建安十一年,投奔荆州刘表。途经上洛时,为上洛都尉捕斩之。', @@ -209,7 +212,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jiling:'东汉末年袁术帐下将领,勇猛非常,曾奉命率军攻打小沛的刘备,在吕布辕门射戟的调停下撤兵。', zoushi:'军阀张济之妻,张绣之婶。张绣降曹后,邹氏遂被曹操霸占。贾诩献计趁机诛杀曹操,险些得手。曹操在损失爱将典韦、侄子曹安民和长子曹昂后方才逃出生天。', ganfuren:'刘备起兵后,于沛城娶甘氏为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月,刘备病死于白帝城,追谥甘夫人为“昭烈皇后”。', - jiangfei:'蒋琬,蜀四英之一。初随刘备入蜀,诸葛亮卒后封大将军,辅佐刘禅,主持朝政,统兵御魏。采取闭关息民政策,国力大增。官至大司马,安阳亭侯,谥号恭侯。费祎,蜀国著名政治家和武将,官至大将军。在一次回途的筵会中,被降将郭修刺杀而亡,谥号敬侯。', + jiangfei:'请分别查阅【蒋琬】和【费袆】各自的介绍。', mifuren:'刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。', chendong:'陈武,东吴将领,孙策攻打刘繇,陈武前来相助,孙策非常喜爱陈武,拜为校尉,使作先锋。陈武以十数骑兵力杀敌五十余人。后于赤壁等战役屡立功勋。董袭献上严白虎的人头来降孙策。赤壁之战,董袭受周瑜命,分兵去汉阳,合肥会战时接应太史慈,逍遥津支援孙权。濡须口之战时,董袭在船上督战,船覆董袭坚守殉职。', jiangqing:'擅长弓术。与周泰原为活跃于长江一带的江贼,孙策脱离袁术下江东自立门户时,和周泰一起率众投靠。 孙策攻刘繇,并引出城中麾下的陈横、薛礼、张英三名将领,陈横后被蒋钦一箭射杀,后与韩当等将乘舟过江,乱箭射杀敌军。曾在赤壁之战与周泰,还有擅使长枪的韩当率领水军在三江口踏江破敌。', @@ -399,8 +402,349 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } }, + zhuangshu_basic:{ + //fullskin:true, + vanish:true, + derivation:'fengfangnv', + type:'equip', + suit:'spade', + subtype:'equip5', + skills:['zhuangshu_basic'], + forceDie:true, + onLose:function(){ + if((!event.getParent(2)||event.getParent(2).name!='swapEquip')&&(event.getParent().type!='equip'||event.getParent().swapEquip)){ + card.remove(); + card.destroyed=true; + game.log(card,'被销毁了'); + } + }, + equipDelay:false, + loseDelay:false, + }, + zhuangshu_trick:{ + //fullskin:true, + vanish:true, + derivation:'fengfangnv', + type:'equip', + suit:'club', + subtype:'equip5', + forceDie:true, + skills:['zhuangshu_trick'], + onLose:function(){ + if((!event.getParent(2)||event.getParent(2).name!='swapEquip')&&(event.getParent().type!='equip'||event.getParent().swapEquip)){ + card.remove(); + card.destroyed=true; + game.log(card,'被销毁了'); + } + }, + equipDelay:false, + loseDelay:false, + }, + zhuangshu_equip:{ + //fullskin:true, + vanish:true, + derivation:'fengfangnv', + type:'equip', + suit:'heart', + subtype:'equip5', + skills:['zhuangshu_equip'], + forceDie:true, + inherit:'zhuangshu_basic', + onLose:function(){ + if((!event.getParent(2)||event.getParent(2).name!='swapEquip')&&(event.getParent().type!='equip'||event.getParent().swapEquip)){ + card.remove(); + card.destroyed=true; + game.log(card,'被销毁了'); + } + }, + equipDelay:false, + loseDelay:false, + }, }, skill:{ + //冯方女 + zhuangshu:{ + audio:2, + trigger:{global:'phaseBegin'}, + direct:true, + filter:function(event,player){ + return event.player.isIn()&&event.player.isEmpty(5)&&player.hasCard(lib.skill.zhuangshu.filterCard,'he'); + }, + filterCard:function(card){ + if(_status.connectMode) return true; + var type=get.type2(card); + return type=='basic'||type=='trick'||type=='equip'; + }, + content:function(){ + 'step 0' + player.chooseToDiscard('he',get.prompt2('zhuangshu',trigger.player),function(card){ + var type=get.type2(card); + return type=='basic'||type=='trick'||type=='equip'; + }).set('ai',function(card){ + var player=_status.event.player; + if(get.attitude(player,_status.event.getTrigger().player)<4) return 0; + var name='zhuangshu_'+get.type2(card,player); + if(game.hasPlayer(function(current){ + return current.getEquip(name)&&get.attitude(player,current)>0; + })) return 0; + return 7-get.value(card); + }).logSkill=['zhuangshu',trigger.player]; + 'step 1' + if(result.bool){ + var name='zhuangshu_'+get.type2(result.cards[0],result.cards[0].original=='h'?player:false); + if(lib.card[name]&&trigger.player.isIn&&trigger.player.isEmpty(5)){ + var target=game.findPlayer(function(current){ + var equip=current.getEquip(5); + return equip&&equip.name==name; + }); + if(target){ + var card=target.getEquip(5); + target.$give(card,trigger.player,false); + } + else{ + var card=game.createCard(name,lib.card[name].suit,12); + trigger.player.$gain2(card,false); + } + game.delayx(); + trigger.player.equip(card); + } + } + }, + }, + chuiti:{ + audio:2, + usable:1, + trigger:{global:'loseAfter'}, + direct:true, + filter:function(event,player){ + if(event.type!='discard') return false; + if(player!=event.player){ + var card=event.player.getEquip(5); + if(!card||card.name.indexOf('zhuangshu_')!=0) return false; + } + for(var i of event.cards2){ + if(get.position(i,true)=='d'&&player.hasUseTarget(i)) return true; + } + return false; + }, + content:function(){ + 'step 0' + player.chooseButton(['垂涕:是否使用其中的一张牌?',trigger.cards2.filter(function(i){ + return (get.position(i,true)=='d'&&player.hasUseTarget(i)); + })]).set('ai',function(button){ + return _status.event.player.getUseValue(button.link); + }); + 'step 1' + if(result.bool){ + player.$gain2(result.links[0],false); + game.delayx(); + player.chooseUseTarget(true,result.links[0],false).logSkill='chuiti'; + } + else player.storage.counttrigger.chuiti--; + }, + }, + zhuangshu_basic:{ + equipSkill:true, + usable:1, + trigger:{player:'useCard2'}, + direct:true, + filter:function(event,player){ + if(event.targets.length!=1) return false; + if(event.card.name!='sha'&&get.type(event.card)!='trick') return false; + var info=get.info(event.card); + if(info.allowMultiple==false) return false; + if(event.targets&&!info.multitarget){ + var target=event.targets[0],hp=target.hp,hs=target.countCards('h'),card=event.card; + return game.hasPlayer(function(current){ + return current!=target&¤t!=player&&(current.hp==hp||current.countCards('h')==hs)&&lib.filter.targetEnabled2(card,player,current); + }); + } + return false; + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('zhuangshu_basic'),'为'+get.translation(trigger.card)+'增加一个满足条件的额外目标',function(card,player,current){ + var card=_status.event.getTrigger().card,target=_status.event.target,hp=target.hp,hs=target.countCards('h'); + return current!=target&¤t!=player&&(current.hp==hp||current.countCards('h')==hs)&&lib.filter.targetEnabled2(card,player,current); + }).set('target',trigger.targets[0]).set('ai',function(target){ + var card=_status.event.getTrigger().card,player=_status.event.player; + return get.effect(target,card,player,player); + }); + 'step 1' + if(result.bool){ + if(player!=event.player&&!player.isOnline()) game.delayx(); + } + else{ + player.storage.counttrigger.zhuangshu_basic--; + event.finish(); + } + 'step 2' + var targets=result.targets; + player.logSkill('zhuangshu_basic',targets); + trigger.targets.addArray(targets); + trigger.directHit.addArray(targets); + }, + }, + zhuangshu_trick:{ + trigger:{player:['phaseJudgeBefore']}, + equipSkill:true, + direct:true, + content:function(){ + 'step 0' + player.chooseControl('判定阶段','弃牌阶段','cancel2').set('prompt',get.prompt('zhuangshu_trick')).set('prompt2','跳过本回合的判定阶段或弃牌阶段').set('ai',function(){ + var player=_status.event.player; + if(player.hasCard(function(card){ + return get.effect(player,{ + name:card.viewAs||card.name, + cards:[card], + },player,player)<0; + },'j')) return '判定阶段'; + return '弃牌阶段'; + }); + 'step 1' + if(result.control!='cancel2'){ + player.logSkill('zhuangshu_trick'); + if(result.control=='判定阶段'){ + trigger.cancel(); + game.log(player,'跳过了','#y判定阶段'); + } + else{ + player.skip('phaseDiscard'); + game.log(player,'跳过了','#g弃牌阶段'); + } + } + }, + }, + zhuangshu_equip:{ + trigger:{player:'phaseUseEnd'}, + forced:true, + equipSkill:true, + filter:function(event,player){ + return player.countCards('h')0) list.push(eff); + } + list.sort().reverse(); + if(!list.length) return 0; + return list[0]+(list[1]||0); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('oljuanxia',target); + } + else event.finish(); + 'step 2' + var list=[]; + for(var name of lib.inpile){ + var info=lib.card[name]; + if(!info||info.type!='trick'||info.notarget||(info.selectTarget&&info.selectTarget!=1)) continue; + if(!player.canUse(name,target)) continue; + list.push(name); + } + if(!list.length) event.finish(); + else player.chooseButton(['视为对'+get.translation(target)+'使用至多两种牌',[list,'vcard']],[1,2],true).set('ai',function(button){ + var evt=_status.event.getParent(); + return get.effect(evt.target,{name:button.link[2]},evt.player,evt.player); + }); + 'step 3' + if(result.bool){ + target.addTempSkill('oljuanxia_counter',{player:'phaseAfter'}); + if(!target.storage.oljuanxia_counter) target.storage.oljuanxia_counter={}; + if(!target.storage.oljuanxia_counter[player.playerid]) target.storage.oljuanxia_counter[player.playerid]=0; + target.storage.oljuanxia_counter[player.playerid]+=result.links.length; + for(var i of result.links) player.useCard({name:i[2]},target,false); + } + }, + subSkill:{ + counter:{ + trigger:{player:'phaseEnd'}, + forced:true, + charlotte:true, + onremove:true, + filter:function(event,player){ + var map1=(_status.connectMode?lib.playerOL:game.playerMap),map2=player.storage.oljuanxia_counter; + if(!map2) return false; + for(var i in map2){ + if(map1[i]&&map1[i].isIn()&&player.canUse('sha',map1[i],false)) return true; + } + return false; + }, + logTarget:function(event,player){ + var list=[]; + var map1=(_status.connectMode?lib.playerOL:game.playerMap),map2=player.storage.oljuanxia_counter; + if(!map2) return false; + for(var i in map2){ + if(map1[i]&&map1[i].isIn()) list.push(map1[i]); + } + return list; + }, + content:function(){ + 'step 0' + var list=[]; + var map1=(_status.connectMode?lib.playerOL:game.playerMap),map2=player.storage.oljuanxia_counter; + if(!map2) return false; + for(var i in map2){ + if(map1[i]&&map1[i].isIn()) list.push(map1[i]); + } + list.sortBySeat(); + event.num=0; + event.targets=list; + 'step 1' + var target=targets[num]; + event.target=target; + if(target.isIn()&&player.canUse('sha',target,false)) player.chooseBool('狷狭:是否视为对'+get.translation(target)+'依次使用'+get.cnNumber(player.storage.oljuanxia_counter[target.playerid])+'张【杀】?').set('goon',get.effect(target,{name:'sha'},player,player)>0).set('ai',()=>_status.event.goon); + 'step 2' + if(result.bool){ + for(var i=0;i1){ + var color=get.color(result[0],player); + for(var i=1;i0; }, filterTarget:function(card,player,target){ - return target!=player&&target.countCards('he')>0; + return target!=player&&target.countCards('he')>0&&player.inRange(target); }, filterCard:{name:'sha'}, content:function(){ @@ -15300,6 +15645,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ beimihu:'卑弥呼', luzhi:'鲁芝', bianfuren:'卞夫人', + ol_bianfuren:'卞夫人', shamoke:'沙摩柯', lvfan:'吕范', liqueguosi:'李傕郭汜', @@ -15988,6 +16334,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhaosong_info:'一名其他角色的摸牌阶段结束时,若其没有因〖诏颂〗而获得的标记,则你可令其正面向上交给你一张手牌。根据此牌的类型,该角色获得对应的标记和效果:
锦囊牌:“诔”标记。当拥有者进入濒死状态时,其可弃置所有“诔”,减1点体力上限,将体力回复至1点并摸1张牌。
装备牌:“赋”标记。拥有者的出牌阶段开始时,其可弃置所有“赋”,弃置一名角色区域内的一张牌,然后可令其摸一张牌。
基本牌:“颂”标记。当使用者使用仅指定一个目标的【杀】时,其可弃置“颂”,为此【杀】增加至多两个目标。然后若此【杀】造成的伤害小于2,其失去1点体力。', lisi:'离思', lisi_info:'每当你于回合外使用牌的置入弃牌堆时,你可将其交给一名手牌数不大于你的其他角色。', + ol_yangyi:'杨仪', + oljuanxia:'狷狭', + oljuanxia_info:'结束阶段,你可选择一名其他角色,并依次视为对其使用至多两种单目标普通锦囊牌。然后其下回合结束时,可视为对你使用等量的【杀】。', + oldingcuo:'定措', + oldingcuo_info:'每回合限一次。当你受到或造成伤害后,你可摸两张牌。若这两张牌颜色不同,则你弃置一张手牌。', + fengfangnv:'冯方女', + zhuangshu:'妆梳', + zhuangshu_info:'一名角色的回合开始时,若其宝物区为空,则你可以弃置一张牌,并根据此牌的类型,按如下关系将一张宝物牌置入该角色的装备区:{<基本牌,【琼梳】>,<锦囊牌,【犀梳】>,<装备牌,【金梳】>}。', + chuiti:'垂涕', + chuiti_info:'每回合限一次。当你或拥有〖妆梳〗牌角色的牌因弃置而进入弃牌堆后,你可使用其中的一张牌。', + zhuangshu_basic:'琼梳', + zhuangshu_basic_bg:'琼', + zhuangshu_basic_info:'每回合限一次。当你使用【杀】或普通锦囊牌选择唯一目标后,你可为此牌增加一名体力值/手牌数相同的额外目标(无距离限制),且该目标不可响应此牌。当此牌不因交换装备或移动至其他装备区而离开你的装备区后,销毁之。', + zhuangshu_trick:'犀梳', + zhuangshu_trick_bg:'犀', + zhuangshu_trick_info:'判定阶段开始前,你可选择:①跳过此阶段。②跳过本回合的弃牌阶段。当此牌不因交换装备或移动至其他装备区而离开你的装备区后,销毁之。', + zhuangshu_equip:'金梳', + zhuangshu_equip_bg:'金', + zhuangshu_equip_info:'锁定技。出牌阶段结束时,你将手牌摸至手牌上限(至多摸五张)。当此牌不因交换装备或移动至其他装备区而离开你的装备区后,销毁之。', sp_tianji:'天极·皇室宗亲', sp_sibi:'四弼·辅国文曲', diff --git a/character/sp2.js b/character/sp2.js index 1aa5d9062..785b25cf1 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -4,6 +4,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sp2', connect:true, character:{ + hanmeng:['male','qun',4,['jieliang','quanjiu']], + xinping:['male','qun',3,['fuyuan','zhongjie','yongdi']], wanniangongzhu:['female','qun',3,['zhenge','xinghan']], re_xunchen:['male','qun',3,['refenglve','anyong']], zhangning:['female','qun',3,['tianze','difa']], @@ -106,7 +108,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_sbfm:["lisu","xinpi","zhangwen"], sp_shengun:["puyuan","guanlu","gexuan","xushao"], sp_baigei:['re_panfeng','xingdaorong','caoxing','re_chunyuqiong','xiahoujie'], - sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou"], + sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou","xinping","hanmeng"], sp_caizijiaren:['re_dongbai','re_sunluyu','huaxin','luyusheng'], sp_huangjin:['liuhong','zhujun','re_hejin','re_hansui'], sp_qihuan:['liubian','zhaozhong'], @@ -118,6 +120,129 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, skill:{ + //韩猛 + jieliang:{ + trigger:{global:'phaseDrawBegin2'}, + direct:true, + filter:function(event,player){ + return event.player!=player&&!event.numFixed&&event.num>1&&player.countCards('he')>0; + }, + content:function(){ + 'step 0' + event.target=trigger.player; + player.chooseToDiscard(get.prompt2('jieliang',event.target),'he').set('goon',get.attitude(player,trigger.player)<-2).set('ai',function(card){ + if(!_status.event.goon) return 0; + return 7-get.value(card); + }).logSkill=['jieliang',event.target]; + 'step 1' + if(result.bool){ + trigger.num--; + target.addMark('jieliang_less',1,false); + target.addTempSkill('jieliang_less'); + player.addTempSkill('jieliang_gain'); + } + }, + subSkill:{ + less:{ + charlotte:true, + mod:{ + maxHandcard:function(player,num){ + return num-player.countMark('jieliang_less'); + }, + }, + onremove:true, + intro:{content:'手牌上限-#'}, + }, + gain:{ + trigger:{global:'loseAfter'}, + charlotte:true, + direct:true, + filter:function(event,player){ + return event.type=='discard'&&event.player==_status.currentPhase&& + event.getParent(3).name=='phaseDiscard'&&event.cards2.filterInD('d').length>0; + }, + content:function(){ + 'step 0' + player.chooseButton(['截粮:是否获得一张牌?',trigger.cards2.filterInD('d')]).set('ai',function(button){ + return get.value(button.link,_status.event.player); + }); + 'step 1' + if(result.bool){ + player.logSkill('jieliang',trigger.player); + player.gain(result.links,'gain2'); + } + }, + }, + }, + }, + quanjiu:{ + audio:2, + mod:{ + aiOrder:function(player,card,num){ + if((card.name=='jiu'||card.name=='xujiu')&&get.name(card)=='sha') return num+0.5; + }, + cardname:function(card,player,name){ + if(card.name=='jiu'||card.name=='xujiu') return 'sha'; + }, + }, + trigger:{player:'useCard1'}, + forced:true, + filter:function(event,player){ + return event.addCount!==false&&event.card.isCard&&event.card.name=='sha'&& + event.cards.length==1&&(event.cards[0].name=='jiu'||event.cards[0].name=='xujiu'); + }, + content:function(){ + trigger.addCount=false; + player.getStat().card.sha--; + }, + }, + //辛评 + fuyuan:{ + audio:2, + trigger:{player:['useCard','respond']}, + filter:function(event,player){ + var target=_status.currentPhase; + return target&&target!=player&&target.isIn(); + }, + logTarget:function(event,player){ + var target=_status.currentPhase; + return target.countCards('h')0; + }, + prompt:'是否发动【辅袁】?', + prompt2:function(event,player){ + var target=lib.skill.fuyuan.logTarget(event,player); + return '令'+get.translation(target)+(target==player?'(你)':'')+'摸一张牌'; + }, + content:function(){ + lib.skill.fuyuan.logTarget(trigger,player).draw(); + }, + }, + zhongjie:{ + trigger:{player:'die'}, + direct:true, + forceDie:true, + skillAnimation:true, + animationColor:'gray', + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('zhongjie'),lib.filter.notMe).set('ai',function(target){ + return get.attitude(_status.event.player,target); + }); + 'step 1' + if(result.bool){ + player.awakenSkill('zhongjie'); + var target=result.targets[0]; + player.logSkill('zhongjie',target); + target.gainMaxHp(); + target.recover(); + target.draw(); + } + }, + }, //万年公主 zhenge:{ audio:2, @@ -255,12 +380,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.finish(); } else{ - if(!player.countCards('he')) event.finish(); + if(get.position(result.player,true)=='d') target.gain(result.player,'gain2'); + event.finish(); + /*if(!player.countCards('he')) event.finish(); else{ event.giver=player; event.gainner=target; player.chooseCard(true,'he','交给'+get.translation(target)+'一张牌'); - } + }*/ } 'step 2' if(result.bool) event.gainner.gain(result.cards,event.giver,'giveAuto'); @@ -368,7 +495,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ 'step 0' var hs=player.getCards('h'),cards=trigger.cards.filter(function(i){ - return (hs.contains(i)&&get.color(i,player)=='redt'&&lib.filter.cardDiscardable(i,player,'difa')); + return (hs.contains(i)&&get.color(i,player)=='red'&&lib.filter.cardDiscardable(i,player,'difa')); }); if(!cards.length) event.finish(); else{ @@ -398,6 +525,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return (!player.getStat('skill').zhuning||player.hasSkill('zhuning_double')); }, filterCard:true, + position:'he', filterTarget:lib.filter.notMe, selectCard:[1,Infinity], delay:false, @@ -543,7 +671,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(trigger.card){ type=get.type2(trigger.card,false); color=get.color(trigger.card,false); - if(color!='nocolor') str+=';若弃置'+get.translation(color)+'牌则改为摸两张牌'; + if(color!='none') str+=';若弃置'+get.translation(color)+'牌则改为摸两张牌'; if(type) str+=';若弃置类型为'+get.translation(type)+'的牌则伤害+1'; } var next=player.chooseToDiscard('he',get.prompt('chaofeng',trigger.player),str); @@ -555,7 +683,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return val; }); next.logSkill=['chaofeng',trigger.player]; - if(color!='nocolor'){ + if(color!='none'){ event.color=color; next.set('color',color); } @@ -603,8 +731,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, derivation:['ollongdan','drlt_congjian','chuanyun'], }, + longdan_tongyuan:{audio:true}, + ocongjian_tongyuan:{audio:true}, chuanyun:{ - audio:2, + audio:true, trigger:{player:'useCardToPlayered'}, shaRelated:true, filter:function(event,player){ @@ -683,10 +813,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var player=_status.event.player; if(game.countPlayer(function(current){ return get.attitude(player,current)>0; - })>ui.selected.cards.length) return get.position(card)=='e'?2:1; + })>ui.selected.cards.length) return 1; return 0; }, - position:'he', + position:'h', complexCard:true, discard:false, lose:false, @@ -1781,7 +1911,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.cardType=cardType; var num=player.countDisabled(); if(num<5) player.draw(5-num); - player.chooseTarget(true,lib.filter.notMe,'令一名其他角色从牌堆中使用一张'+get.translation(cardType)+'牌').set('ai',function(target){ + player.chooseTarget(lib.filter.notMe,'是否令一名其他角色从牌堆中使用一张'+get.translation(cardType)+'牌?').set('ai',function(target){ var player=_status.event.player,type=_status.event.cardType; var card=get.cardPile2(function(card){ return get.subtype(card)==type&&target.canUse(card,target); @@ -4315,7 +4445,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, ai2:function(target){ if(!target) return 1; - return Math.sqrt(5-Math.max(4,target.countCards('h')))*get.attitude(_status.event.player,target); + return Math.sqrt(5-Math.min(4,target.countCards('h')))*get.attitude(_status.event.player,target); }, forced:true, }); @@ -11195,6 +11325,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ liuyong:'刘永,字公寿,涿郡涿县(今河北涿州)人,三国时期蜀汉昭烈帝刘备之子,蜀汉后主刘禅之弟。章武元年(221年)六月,封鲁王。建兴八年(230年),改封甘陵王。咸熙元年(264年),蜀汉灭亡,刘永被迁往洛阳,被任命为奉车都尉,封乡侯。', zhangning:'张宁,东汉末年大贤良师张角的女儿。自幼学习太平道法,掌握天地法则。', wanniangongzhu:'刘氏(生卒年不详),河南郡雒阳县(今河南省洛阳市)人,汉灵帝刘宏之女,汉少帝刘辩与汉献帝刘协的姐妹,封万年公主。', + xinping:'辛评(?-204年),字仲治,颍川阳翟人,东汉末年人物。曹魏卫尉辛毗之兄。原是韩馥部下,韩馥逃亡后转而辅佐袁绍。袁绍死后,辛评、郭图欲立袁谭为主,与审配等不和。后来曹操破邺,其弟辛毗在城下劝降。审配怒遣手下将辛评全家杀害。', + hanmeng:'韩猛,又名韩若、韩荀、韩泣(上荀下大) ,东汉末年袁绍帐下名将,或与《曹瞒传》所言韩莒子为同一人。公元200年,官渡之战爆发。袁绍派遣韩猛劫掠曹操军的西道,被曹军部将曹仁击破于鸡洛山。袁绍又派韩猛前去运送粮车,因为轻敌被曹军部将徐晃、史涣击退。', }, characterTitle:{ wulan:'#b对决限定武将', @@ -11257,7 +11389,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ lijue:['lijue','ns_lijue'], fanchou:['fanchou','ns_fanchou'], zhangji:['zhangji','ns_zhangji'], - zhangchangpu:['ol_zhangchangpu','zhangchangpu'], + zhangchangpu:['zhangchangpu','sp_zhangchangpu','ol_zhangchangpu'], huangfusong:['huangfusong','old_huangfusong'], wenyang:['wenyang','db_wenyang','diy_wenyang'], dingyuan:['ol_dingyuan','dingyuan'], @@ -11786,12 +11918,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yaner_info:'每回合限一次。当有其他角色于其出牌阶段内失去手牌后,若其没有手牌,则你可以与其各摸两张牌。若其以此法摸得的两张牌类型相同,则其回复1点体力。若你以此法摸得的两张牌类型相同,则你将〖织纴〗中的“你的回合内”改为“一回合内”直至你下回合开始。', caoanmin:'曹安民', xianwei:'险卫', - xianwei_info:'锁定技,准备阶段,你废除一个装备栏并摸X张牌(X为你未废除的装备栏数),然后令一名其他角色对其自己使用一张牌堆中的一张与此装备栏副类别相同的装备牌(没有可使用的牌则改为摸一张牌)。当你废除所有装备栏后,你加2点体力上限,然后你与所有其他角色视为在彼此的攻击范围内。', + xianwei_info:'锁定技,准备阶段,你废除一个装备栏并摸X张牌(X为你未废除的装备栏数),然后你可以令一名其他角色对其自己使用一张牌堆中的一张与此装备栏副类别相同的装备牌(没有可使用的牌则改为摸一张牌)。当你废除所有装备栏后,你加2点体力上限,然后你与所有其他角色视为在彼此的攻击范围内。', zhanghu:'张虎', cuijian:'摧坚', cuijian_info:'出牌阶段限一次,你可以选择一名有手牌的其他角色。若其手牌中有【闪】,则其将所有【闪】和防具牌交给你,然后你交给其等量的牌。', zhtongyuan:'同援', - zhtongyuan_info:'锁定技。①当你使用红色锦囊牌后,你于〖摧坚〗中增加“若其手牌中没有【闪】,则你摸两张牌”;②当你于回合外使用或打出红色基本牌后,你删除〖摧坚〗中的“,然后你交给其等量的牌”。③当你使用红色的普通锦囊牌/基本牌时,若你已发动过〖摧坚①〗和〖摧坚②〗,则此牌不可被响应/可额外增加一个目标。', + zhtongyuan_info:'锁定技。①当你使用红色锦囊牌后,你于〖摧坚〗后增加“若其手牌中没有【闪】,则你摸两张牌”;②当你使用或打出红色基本牌后,你删除〖摧坚〗中的“,然后你交给其等量的牌”。③当你使用红色的普通锦囊牌/基本牌时,若你已发动过〖摧坚①〗和〖摧坚②〗,则此牌不可被响应/可额外增加一个目标。', dufuren:'杜夫人', yise:'异色', yise_info:'其他角色获得你的牌后,若这些牌中:有红色牌,你可令其回复1点体力;有黑色牌,其下次受到【杀】造成的伤害时,此伤害+1。', @@ -11868,6 +12000,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhenge_info:'准备阶段,你可以选择一名角色。该角色本局游戏的攻击范围+1(至多+5)。然后若所有其他角色都在该角色的攻击范围内,则你可以令其视为对另一名角色使用一张【杀】。', xinghan:'兴汉', xinghan_info:'锁定技,每回合的第一张【杀】造成伤害后,若此【杀】的使用者成为过〖枕戈〗的目标,则你摸一张牌。若你的手牌数不是全场唯一最多的,则改为摸X张牌(X为该角色的攻击范围且最多为5)。', + xinping:'辛评', + fuyuan:'辅袁', + fuyuan_info:'当你于回合外使用或打出牌时,若当前回合角色的手牌数:不小于你,你可摸一张牌;小于你,你可令其摸一张牌。', + zhongjie:'忠节', + zhongjie_info:'当你死亡时,你可令一名其他角色加1点体力上限并回复1点体力,然后摸一张牌。', + hanmeng:'韩猛', + jieliang:'截粮', + jieliang_info:'其他角色的摸牌阶段开始时,你可弃置一张牌,令其本阶段的摸牌数和本回合的手牌上限-1。然后当其于本回合的弃牌阶段内因弃置而失去牌后,你可获得其中的一张。', + quanjiu:'劝酒', + quanjiu_info:'锁定技。①你手牌区中的【酒】的牌名视为【杀】。②你使用对应的实体牌为一张【酒】的非转化【杀】不计入次数限制。', sp_whlw:"文和乱武", sp_zlzy:"逐鹿中原", diff --git a/character/standard.js b/character/standard.js index ffdeff464..5ca0acd17 100755 --- a/character/standard.js +++ b/character/standard.js @@ -81,7 +81,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ liubei:['guanyu','zhangfei','ganfuren'], zhaoyun:['liushan'], daqiao:['xiaoqiao'], - zhouyu:['huanggai','xiaoqiao'], + zhouyu:['huanggai','xiaoqiao','zhouyi'], sunquan:['zhoutai'], lvbu:['diaochan'], machao:['madai','mayunlu'], diff --git a/character/tw.js b/character/tw.js index a595de12e..c35451a11 100644 --- a/character/tw.js +++ b/character/tw.js @@ -567,7 +567,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return evt.name=='equan_lose'&&evt.player==player; }, content:function(){ - trigger.player.addTempSkill('fengyin'); + trigger.player.addTempSkill('baiban'); }, }, }, @@ -577,7 +577,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{global:'loseHpAfter'}, forced:true, filter:function(event,player){ - return player.hp>=event.player.hp||player.isDamaged(); + return player!=event.player&&player.hp>=event.player.hp||player.isDamaged(); }, logTarget:'player', content:function(){ @@ -613,7 +613,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ list[0].draw(2); 'step 2' var list=event.list; - if(list[1].isIn()&&list[0].isIn()&&list[1].canUse('sha',list[0],false)) list[1].useCard({name:'sha',isCard:true},list[0],false); + if(list[1].isIn()&&list[0].isIn()&&list[1].canUse('sha',list[0],false)) list[1].useCard({name:'sha',isCard:true},list[0],false,'noai'); }, ai:{ order:5, @@ -1709,7 +1709,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dingfa_info:'弃牌阶段结束时,若本回合你失去的牌数不小于你的体力值,你可以选择一项:1、回复1点体力;2、对一名其他角色造成1点伤害。 ', duosidawang:'朵思大王', equan:'恶泉', - equan_info:'锁定技。①当有角色于你的回合内受到伤害后,其获得X枚“毒”(X为伤害值)。②准备阶段,你令所有拥有“毒”标记的角色移去所有“毒”标记并失去等量的体力。③当有角色因〖恶泉②〗进入濒死状态时,你令其所有非锁定技失效直到回合结束。', + equan_info:'锁定技。①当有角色于你的回合内受到伤害后,其获得X枚“毒”(X为伤害值)。②准备阶段,你令所有拥有“毒”标记的角色移去所有“毒”标记并失去等量的体力。③当有角色因〖恶泉②〗进入濒死状态时,你令其所有技能失效直到回合结束。', manji:'蛮汲', manji_info:'锁定技。其他角色失去体力后,若你的体力值:不大于该角色,你回复1点体力;不小于该角色,你摸一张牌。', wuban:'吴班', diff --git a/character/yijiang.js b/character/yijiang.js index 0d1221c9a..e2a83fb17 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -66,7 +66,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhongyao:['male','wei',3,['huomo','zuoding']], liuchen:['male','shu',4,['zhanjue','qinwang'],['zhu']], zhangyi:['male','shu',4,['wurong','shizhi']], - sunxiu:['male','wu',3,['yanzhu','xingxue','zhaofu'],['zhu']], + sunxiu:['male','wu',3,['yanzhu','xingxue','xinzhaofu'],['zhu']], zhuzhi:['male','wu',4,['xinanguo']], quancong:['male','wu',4,['yaoming']], gongsunyuan:['male','qun',4,['huaiyi']], @@ -194,6 +194,43 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhonghui:['jiangwei'], }, skill:{ + //孙体 + xinzhaofu:{ + audio:'zhaofu', + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.hasZhuSkill('xinzhaofu'); + }, + limited:true, + skillAnimation:true, + animationColor:'wood', + selectTarget:[1,2], + filterTarget:lib.filter.notMe, + contentBefore:function(){ + player.awakenSkill('xinzhaofu'); + }, + content:function(){ + target.addSkill('xinzhaofu_effect'); + target.markAuto('xinzhaofu_effect',[player]); + }, + subSkill:{ + effect:{ + charlotte:true, + mark:true, + intro:{content:'已视为在其他吴势力角色的攻击范围内'}, + mod:{ + inRangeOf:function(from,to){ + if(from.group!='wu') return; + var list=to.getStorage('xinzhaofu_effect'); + for(var i of list){ + if(i!=from) return true; + } + }, + }, + }, + }, + }, xinkuangbi:{ audio:'kuangbi', enable:'phaseUse', @@ -1445,7 +1482,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } player.showCards(cards); 'step 1' - player.choosePlayerCard(target,'h',[1,player.hasSkill('xincaishi_1')?4:3],'请选择要展示的牌').ai=function(){return Math.random()}; + player.choosePlayerCard(target,'h',[1,player.hasSkill('xincaishi_1')?4:3],'请选择要展示的牌',true).ai=function(){return Math.random()}; 'step 2' event.cards2=result.cards.slice(0); target.showCards(event.cards2); @@ -12449,7 +12486,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jigong:'急攻', jigong_info:'出牌阶段开始时,你可以摸两张牌。若如此做,你本回合的手牌上限改为X(X为你此阶段造成的伤害点数之和)。', shifei:'饰非', - shifei_info:'当你需要使用或打出【闪】时,你可以令当前回合角色摸一张牌。然后若其手牌数不为全场最多,则你弃置全场手牌数最多(或之一)角色的一张牌,视为你使用或打出了一张【闪】。', + shifei_info:'当你需要使用或打出【闪】时,你可以令当前回合角色摸一张牌。然后若其手牌数不为全场唯一最多,则你弃置全场手牌数最多(或之一)角色的一张牌,视为你使用或打出了一张【闪】。', huaiyi:'怀异', huaiyi_info:'出牌阶段限一次,你可以展示所有手牌,若这些牌的颜色不全部相同,则你选择一种颜色并弃置该颜色的所有手牌,然后你可以获得至多X名角色的各一张牌(X为你以此法弃置的手牌数)。若你以此法获得的牌不少于两张,则你失去1点体力。', yaoming:'邀名', @@ -12484,7 +12521,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qinwang:'勤王', qinwang1:'勤王', qinwang2:'勤王', - qinwang_info:'主公技,当你需要使用或打出一张【杀】时,你可以弃置一张牌,然后视为你发动了〖激将〗。若有角色响应,则该角色打出【杀】时摸一张牌。', + qinwang_info:'主公技,当你需要使用或打出一张【杀】时,你可以弃置一张牌,然后视为你发动了〖激将①〗。若有角色响应,则该角色打出【杀】时摸一张牌。', huomo:'活墨', huomo_use:'活墨', //huomo_use_backup:'活墨', @@ -12757,6 +12794,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rejingce_info:'当你于一回合内首次使用某种花色的手牌时,你的手牌上限+1。出牌阶段结束时,你可以摸X张牌(X为你本阶段内使用过的牌的类型数)。', xinkuangbi:'匡弼', xinkuangbi_info:'出牌阶段限一次。你可以令一名其他角色交给你至多三张牌(不计入你本回合的手牌上限)。然后其于其的下回合开始时摸等量的牌。', + xinzhaofu:'诏缚', + xinzhaofu_info:'主公技,限定技。出牌阶段,你可选择至多两名其他角色。这两名角色视为在所有其他吴势力角色的攻击范围内。', yijiang_2011:'一将成名2011', yijiang_2012:'一将成名2012', diff --git a/game/game.js b/game/game.js index 4d0103bd0..46884f26e 100644 --- a/game/game.js +++ b/game/game.js @@ -10369,6 +10369,247 @@ emptyEvent:function(){ event.trigger(event.name); }, + chooseToPlayBeatmap:function(){ + 'step 0' + if(game.online) return; + if(_status.connectMode) event.time=lib.configOL.choose_timeout; + event.videoId=lib.status.videoId++; + //给其他角色看的演奏框 + game.broadcastAll(function(player,id,beatmap){ + if(_status.connectMode) lib.configOL.choose_timeout=(Math.ceil((beatmap.timeleap[beatmap.timeleap.length-1]+beatmap.speed*100+(beatmap.current||0))/1000)+5).toString(); + if(player==game.me) return; + var str=get.translation(player)+'正在演奏《'+beatmap.name+'》...
'; + ui.create.dialog(str).videoId=id; + if(ui.backgroundMusic) ui.backgroundMusic.pause(); + if(lib.config.background_audio){ + if(beatmap.filename.indexOf('ext:')==0) game.playAudio('..','extension',beatmap.filename.slice(4),beatmap.name); + else game.playAudio('effect',beatmap.filename); + } + },player,event.videoId,event.beatmap); + 'step 1' + var beatmap=event.beatmap; + if(event.isMine()){ + var timeleap=beatmap.timeleap.slice(0); + var current=beatmap.current; + //获取两个音符的时间间隔 + var getTimeout=function(){ + var time=timeleap.shift(); + var out=time-current; + current=time; + return out; + }; + //初始化一堆变量 + var score=0; + var added=timeleap.length; + var abs=1; + var node_pos=0; + var combo=0; + var max_combo=0; + var nodes=[]; + var roundmenu=false; + //隐藏菜单按钮 + if(ui.roundmenu&&ui.roundmenu.display!='none'){ + roundmenu=true; + ui.roundmenu.style.display='none'; + } + if(ui.backgroundMusic) ui.backgroundMusic.pause(); + var event=_status.event; + event.settleed=false; + //建个框框 + var dialog=ui.create.dialog('forcebutton','hidden'); + event.dialog=dialog; + event.dialog.textPrompt=event.dialog.add('
'+(beatmap.prompt||'在音符滑条和底部判定区重合时点击屏幕!')+'
'); + event.switchToAuto=function(){}; + event.dialog.classList.add('fixed'); + event.dialog.classList.add('scroll1'); + event.dialog.classList.add('scroll2'); + event.dialog.classList.add('fullwidth'); + event.dialog.classList.add('fullheight'); + event.dialog.classList.add('noupdate'); + event.dialog.style.overflow='hidden'; + //结束后操作 + event.settle=function(){ + if(event.settleed) return; + event.settleed=true; + //评分 + var acc=Math.floor(score/(added*5)*100); + var rank; + if(acc==100) rank=['SS','metal']; + else if(acc>=94) rank=['S','orange']; + else if(acc>=87) rank=['A','wood']; + else if(acc>=80) rank=['B','water']; + else if(acc>=65) rank=['C','thunder']; + else rank=['D','fire']; + event.dialog.textPrompt.innerHTML='
演奏结束!
最大连击数:'+max_combo+' 精准度:'+acc+'%
'; + game.me.$fullscreenpop('演奏评级:'+rank[0]+'',null,null,false); + //返回结果并继续游戏 + setTimeout(function(){ + event._result={ + bool:true, + accuracy:acc, + rank:rank, + }; + event.dialog.close(); + game.resume(); + _status.imchoosing=false; + if(roundmenu) ui.roundmenu.style.display=''; + if(ui.backgroundMusic) ui.backgroundMusic.play(); + },1000); + }; + event.dialog.open(); + //操作容差 + var height=event.dialog.offsetHeight; + var width=event.dialog.offsetWidth; + var range1=(beatmap.range1||[90,110]); + var range2=(beatmap.range2||[93,107]); + var range3=(beatmap.range3||[96,104]); + var speed=(beatmap.speed||25); + //初始化底部的条子 + var judger=ui.create.div(''); + judger.style["background-image"]=(beatmap.judgebar_color||'linear-gradient(rgba(240, 235, 3, 1), rgba(230, 225, 5, 1))'); + judger.style["border-radius"]='3px'; + judger.style.position='absolute'; + judger.style.opacity='0.3'; + var heightj=Math.ceil(height*(beatmap.judgebar_height||0.1)); + judger.style.height=heightj+'px'; + judger.style.width=width+'px'; + judger.style.left='0px'; + judger.style.top=(height-heightj)+'px'; + event.dialog.appendChild(judger); + //生成每个音符 + var addNode=function(){ + var node=ui.create.div(''); + nodes.push(node); + node.style["background-image"]=(beatmap.node_color||'linear-gradient(rgba(120, 120, 240, 1), rgba(100, 100, 230, 1))'); + node.style["border-radius"]='3px'; + node.style.position='absolute'; + node.style.height=Math.ceil(height/10)+'px'; + node.style.width=Math.ceil(width/6)-10+'px'; + node._position=get.utc(); + event.dialog.appendChild(node); + + node.style.left=Math.ceil(width*node_pos/6+5)+'px'; + node.style.top='-'+(Math.ceil(height/10))+'px'; + ui.refresh(node); + node.style.transition='all '+speed*110+'ms linear'; + node.style.transform='translateY('+Math.ceil(height*1.1)+'px)'; + node.timeout=setTimeout(function(){ + if(nodes.contains(node)){ + nodes.remove(node); + player.popup('Miss','fire',false); + if(player.damagepopups.length) player.$damagepop(); + combo=0; + } + },speed*110); + + node_pos+=abs; + if(node_pos>5){ + abs=-1; + node_pos=4; + } + else if(node_pos<0){ + abs=1; + node_pos=1; + } + if(timeleap.length){ + setTimeout(function(){ + addNode(); + },getTimeout()); + } + else{ + setTimeout(function(){ + event.settle(); + },speed*110+100) + } + } + //点击时的判断操作 + var click=function(){ + if(!nodes.length) return; + for(var node of nodes){ + //用生成到点击的时间差来判断距离 + var time=get.utc(); + var top=(time-node._position)/speed; + if(top>range1[1]) continue; + else if(top=range3[0]&&top=range2[0]&&top=94) rank=['S','orange']; + else if(acc>=87) rank=['A','green']; + else if(acc>=80) rank=['B','water']; + else if(acc>=65) rank=['C','thunder']; + else rank=['D','fire']; + event._result={ + bool:true, + accuracy:acc, + rank:rank, + }; + if(event.dialog) event.dialog.close(); + if(event.control) event.control.close(); + game.resume(); + },beatmap.timeleap[beatmap.timeleap.length-1]+beatmap.speed*100+1000+(beatmap.current||0)); + } + 'step 2' + game.broadcastAll(function(id,time){ + if(_status.connectMode) lib.configOL.choose_timeout=time; + var dialog=get.idDialog(id); + if(dialog){ + dialog.close(); + } + if(ui.backgroundMusic) ui.backgroundMusic.play(); + },event.videoId,event.time); + var result=event.result||result; + event.result=result; + }, chooseToMove:function(){ 'step 0' if(event.chooseTime&&_status.connectMode&&!game.online){ @@ -12167,8 +12408,6 @@ delete player._noVibrate; game.vibrate(); } - } - if(!ok){ if(typeof event.prompt=='string'){ if(event.openskilldialog){ event.skillDialog=ui.create.dialog(event.openskilldialog); @@ -12378,7 +12617,7 @@ return; } var ok=game.check(); - if(!ok){ + if(!ok||!lib.config.auto_confirm){ game.pause(); if(event.openskilldialog){ event.skillDialog=ui.create.dialog(event.openskilldialog); @@ -14522,7 +14761,7 @@ var sex=player.sex=='female'?'female':'male'; var audioinfo=lib.card[card.name].audio; // if(audioinfo||true){ - if(card.name=='sha'&&(card.nature=='fire'||card.nature=='thunder'||card.nature=='ice')){ + if(card.name=='sha'&&(card.nature=='fire'||card.nature=='thunder'||card.nature=='ice'||card.nature=='stab')){ game.playAudio('card',sex,card.name+'_'+card.nature); } else{ @@ -15192,7 +15431,8 @@ discard:function(){ "step 0" game.log(player,'弃置了',cards); - event.done=player.lose(cards,event.position,'visible').type='discard'; + event.done=player.lose(cards,event.position,'visible'); + event.done.type='discard'; "step 1" event.trigger('discard'); }, @@ -15553,6 +15793,7 @@ } if(!hej.contains(cards[i])){ cards.splice(i--,1); + continue; } else if(cards[i].parentNode){ if(cards[i].parentNode.classList.contains('equips')){ @@ -16700,6 +16941,14 @@ } this.checkConflict(); }, + chooseToPlayBeatmap:function(beatmap){ + var next=game.createEvent('chooseToPlayBeatmap'); + next.player=this; + next.beatmap=beatmap; + next._args=Array.from(arguments); + next.setContent('chooseToPlayBeatmap'); + return next; + }, chooseToMove:function(){ var next=game.createEvent('chooseToMove'); next.player=this; @@ -26439,7 +26688,7 @@ firstDo:true, trigger:{player:['playercontrol','chooseToUseBegin','chooseToRespondBegin','chooseToDiscardBegin','chooseToCompareBegin', 'chooseButtonBegin','chooseCardBegin','chooseTargetBegin','chooseCardTargetBegin','chooseControlBegin', - 'chooseBoolBegin','choosePlayerCardBegin','discardPlayerCardBegin','gainPlayerCardBegin','chooseToMoveBegin']}, + 'chooseBoolBegin','choosePlayerCardBegin','discardPlayerCardBegin','gainPlayerCardBegin','chooseToMoveBegin','chooseToPlayBeatmapBegin']}, forced:true, priority:100, forceDie:true, @@ -32739,7 +32988,7 @@ var firstCheck=false; range=get.select(event.selectCard); if(!event._cardChoice&&typeof event.selectCard!='function'&& - !event.complexCard&&range[1]!=-1&&!lib.config.compatiblemode){ + !event.complexCard&&range[1]>-1&&!lib.config.compatiblemode){ event._cardChoice=[]; firstCheck=true; } diff --git a/game/keyWords.js b/game/keyWords.js index e704528ca..7acfae8e7 100644 --- a/game/keyWords.js +++ b/game/keyWords.js @@ -1,3 +1,3 @@ window.bannedKeyWords=[ -'ghs','直肠','性交','做爱','http','吃奶','骚逼','哈巴狗','美眉','癌','屁眼','艹','傻逼','操你','做鸡','奸','姦','华为','屄','狗子','屎','同性恋','肖战','鸡巴','精液','粪水','挂月亮中','贱骨头','吃屁','傻','奥利给','丁真','蛆','鼠鼠','鼠人','神友', +'ghs','直肠','性交','做爱','http','吃奶','骚逼','哈巴狗','美眉','癌','屁眼','艹','傻逼','操你','做鸡','奸','姦','华为','屄','狗子','屎','同性恋','肖战','鸡巴','精液','粪水','挂月亮中','贱骨头','吃屁','傻','奥利给','丁真','蛆','鼠鼠','鼠人','神友','', ]; \ No newline at end of file diff --git a/image/character/fengfangnv.jpg b/image/character/fengfangnv.jpg new file mode 100644 index 000000000..3534c9abe Binary files /dev/null and b/image/character/fengfangnv.jpg differ diff --git a/image/character/hanmeng.jpg b/image/character/hanmeng.jpg new file mode 100644 index 000000000..d3712c1ae Binary files /dev/null and b/image/character/hanmeng.jpg differ diff --git a/image/character/ol_bianfuren.jpg b/image/character/ol_bianfuren.jpg new file mode 100644 index 000000000..2889eaa3b Binary files /dev/null and b/image/character/ol_bianfuren.jpg differ diff --git a/image/character/ol_yangyi.jpg b/image/character/ol_yangyi.jpg new file mode 100644 index 000000000..187e331e7 Binary files /dev/null and b/image/character/ol_yangyi.jpg differ diff --git a/image/character/sp_cuiyan.jpg b/image/character/sp_cuiyan.jpg new file mode 100644 index 000000000..290b21a02 Binary files /dev/null and b/image/character/sp_cuiyan.jpg differ diff --git a/image/character/sp_jiangqing.jpg b/image/character/sp_jiangqing.jpg new file mode 100644 index 000000000..8352e7e99 Binary files /dev/null and b/image/character/sp_jiangqing.jpg differ diff --git a/image/character/sp_jiangwan.jpg b/image/character/sp_jiangwan.jpg new file mode 100644 index 000000000..65903cddf Binary files /dev/null and b/image/character/sp_jiangwan.jpg differ diff --git a/image/character/sp_zhangchangpu.jpg b/image/character/sp_zhangchangpu.jpg new file mode 100644 index 000000000..8e9d41c2a Binary files /dev/null and b/image/character/sp_zhangchangpu.jpg differ diff --git a/image/character/sunhanhua.jpg b/image/character/sunhanhua.jpg new file mode 100644 index 000000000..27edf6923 Binary files /dev/null and b/image/character/sunhanhua.jpg differ diff --git a/image/character/xinping.jpg b/image/character/xinping.jpg new file mode 100644 index 000000000..eff2e8a50 Binary files /dev/null and b/image/character/xinping.jpg differ diff --git a/image/character/yj_caocao.jpg b/image/character/yj_caocao.jpg new file mode 100644 index 000000000..9b51aa24e Binary files /dev/null and b/image/character/yj_caocao.jpg differ diff --git a/mode/guozhan.js b/mode/guozhan.js index 5ee3a254d..4b5baa0ce 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -773,6 +773,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, //南华老仙 gzgongxiu:{ + audio:'gongxiu', trigger:{player:'phaseDrawBegin2'}, preHidden:true, filter:function(event,player){ @@ -780,7 +781,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, content:function(){ trigger.num--; - player.addTempSkill('gzgongxiu2','phaseUseAfter'); + player.addTempSkill('gzgongxiu2','phaseDrawAfter'); }, }, gzgongxiu2:{ @@ -821,6 +822,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, }, gzjinghe:{ + audio:'jinghe', enable:'phaseUse', filter:function(event,player){ return player.maxHp>0&&player.countCards('h')>0&&!player.hasSkill('gzjinghe_clear'); @@ -1189,7 +1191,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ enable:'phaseUse', usable:1, filterTarget:function(card,player,target){ - return target.countGainableCards(player,'h')>0; + return target!=player&&target.countGainableCards(player,'h')>0; }, content:function(){ 'step 0' @@ -2113,13 +2115,15 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ usable:1, delay:false, filter:function(event,player){ - return player.countCards('h',{color:'red'})&&player.countCards('h',{color:'black'}); + return player.countCards('h')>0; }, content:function(){ 'step 0' player.showHandcards(); 'step 1' - player.chooseControl('红色','黑色').set('ai',function(){ + if(!player.countCards('h',{color:'red'})) event._result={control:'黑色'}; + else if(!player.countCards('h',{color:'black'})) event._result={control:'红色'}; + else player.chooseControl('红色','黑色').set('ai',function(){ var player=_status.event.player,num=player.maxHp-player.getStorage('gzhuaiyi').length; if(player.countCards('h',{color:'red'})<=num&& player.countCards('h',{color:'black'})>num) return '红色'; @@ -2656,11 +2660,15 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }).set('sourcex',trigger.player).setHiddenSkill(event.name); player.addTempSkill('gzzhuhai2'); next.oncard=function(card,player){ - if(trigger.player.getHistory('sourceDamage',function(evt){ - return evt.player.isFriendOf(player); - }).length){ - player.addTempSkill('gzzhuhai2'); - card.gzzhuhai_tag=true; + try{ + if(trigger.player.getHistory('sourceDamage',function(evt){ + return evt.player.isFriendOf(player); + }).length){ + player.addTempSkill('gzzhuhai2'); + card.gzzhuhai_tag=true; + } + }catch(e){ + alert('发生了一个导致【诛害】无法正常触发无视防具效果的错误。请关闭十周年UI/手杀UI等扩展以解决'); } } }, @@ -3958,6 +3966,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, yigui:{ + audio:2, hiddenCard:function(player,name){ var storage=player.storage.yigui; if(name=='shan'||name=='wuxie'||!storage||!storage.character.length||storage.used.contains(name)||!lib.inpile.contains(name)) return false; @@ -4107,7 +4116,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ complexCard:true, check:function(){return 1}, popname:true, - audio:"huashen1", + audio:"yigui", viewAs:{ name:name, nature:nature, @@ -4191,7 +4200,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, }, "yigui_init":{ - audio:"huashen", + audio:"yigui", trigger:{ player:'showCharacterAfter', }, @@ -4251,7 +4260,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ complexCard:true, check:function(){return 1}, popname:true, - audio:"huashen1", + audio:"yigui", viewAs:{ name:'shan', isCard:true, @@ -4313,7 +4322,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ complexCard:true, check:function(){return 1}, popname:true, - audio:"huashen1", + audio:"yigui", viewAs:{ name:'wuxie', isCard:true, @@ -4345,7 +4354,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ player:'damageEnd', global:'dyingAfter', }, - audio:"xinsheng", + audio:2, frequent:true, preHidden:true, filter:function(event,player){ diff --git a/mode/versus.js b/mode/versus.js index f64d46c1e..319d4e5ba 100644 --- a/mode/versus.js +++ b/mode/versus.js @@ -2635,12 +2635,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ _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','re_manchong','re_hanhaoshihuan','chengyu','caoren'].filter(function(name){ + event.falseList=['xunyu','xunyou','re_guojia','re_zhangliao','re_xuhuang','yujin_yujin','caohong','jsp_guanyu','liuye','litong','zangba','re_manchong','re_hanhaoshihuan','chengyu','caoren','zhangxiu','sp_jiaxu'].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','jsp_liubei','yj_jushou','sp_shenpei','tianfeng','yuantanyuanshang','lvkuanglvxiang','xinpi','re_guotufengji','chunyuqiong'].filter(function(name){ + event.trueList=['xunchen','gaolan','sp_zhanghe','sp_xuyou','chenlin','jsp_liubei','yj_jushou','sp_shenpei','tianfeng','yuantanyuanshang','lvkuanglvxiang','xinpi','re_guotufengji','chunyuqiong','hanmeng','xinping'].filter(function(name){ if(!Array.isArray(lib.character[name])) return false; lib.character[name][1]='qun'; return true; @@ -2657,7 +2657,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ var list=[]; game.countPlayer(function(current){ if(current.identity=='zhong'){ - var choice=event[current.side+'List'].randomRemove(3); + var choice=event[current.side+'List'].randomRemove(4); event.map[current.playerid]=choice; list.push([current,['请选择武将',[choice,'character']],true]); } @@ -2711,12 +2711,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ },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','re_manchong','re_hanhaoshihuan','chengyu','caoren'].filter(function(name){ + event.falseList=['xunyu','xunyou','re_guojia','re_zhangliao','re_xuhuang','yujin_yujin','caohong','jsp_guanyu','liuye','litong','zangba','re_manchong','re_hanhaoshihuan','chengyu','caoren','zhangxiu','sp_jiaxu'].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','jsp_liubei','yj_jushou','sp_shenpei','tianfeng','yuantanyuanshang','lvkuanglvxiang','xinpi','re_guotufengji','chunyuqiong'].filter(function(name){ + event.trueList=['xunchen','gaolan','sp_zhanghe','sp_xuyou','chenlin','jsp_liubei','yj_jushou','sp_shenpei','tianfeng','yuantanyuanshang','lvkuanglvxiang','xinpi','re_guotufengji','chunyuqiong','hanmeng','xinping'].filter(function(name){ if(!Array.isArray(lib.character[name])) return false; lib.character[name][1]='qun'; return true; @@ -2724,7 +2724,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ 'step 2' if(game.me.identity!='zhu'){ event.choose_me=true; - game.me.chooseButton(['请选择你的武将牌',[event[game.me.side+'List'].randomRemove(3),'character']],true); + game.me.chooseButton(['请选择你的武将牌',[event[game.me.side+'List'].randomRemove(4),'character']],true); } 'step 3' if(event.choose_me) game.me.init(result.links[0]);